شبیه سازی سختافزار به کمک HDLها
به کمک زبانهای توصیف
سختافزار علاوه بر طراحی میتوانیم یک سختافزار را شبیه سازی کرده تا قابلیتها و
عملکرد آن را قبل از پیادهسازی آزمایش کنیم. در دنیای واقعی تست کردن یک
سختافزار، خود نیازمند یک سختافزار دیگر است که مجموعهای از ورودیهای مجاز را
برای سختافزار زیر تست تولید کرده و خروجی حاصله را با مقدار مورد انتظار مقایسه
کند. در فضای مجازی که کامپیوتر در اختیار ما قرار داده است نیز میتوانیم قبل از
پیاده سازی و ساختن سختافزار، عملکرد آنرا با طراحی یک سختافزار جانبی جهت تست،
سختافزار اصلی را ارزیابی کنیم، به این ترتیب که به کمک زبان توصیف سختافزار،
برنامهای نوشته میشود تا زنجیرهای از ورودیها را به سختافزار مورد آزمایش داده
و خروجی آن را با مقادیر مورد انتظار طراح مقایسه نماید، به این برنامه که جهت
آزمایش عملکرد سختافزار نوشته میشود، Testbench گفته میشود.
زبانهای
توصیفسختافزار Verilog و VHDL در میان سایر HDLها محبوبیت بیشتری پیدا کردهاند
که در ادامه مقاله به بررسی و مقایسهآنها خواهیم پرداخت.
زبان توصیف سختافزار VHDL
زبان VHDL سر نام Very High Speed
Integrated CircuitHardwareDescriptionLanguage از جمله HDLهای پرطرفداری است که
امروزه در طراحی تراشههای با کاربرد خاص و تراشه FPGA به کار گرفته میشود.
این
زبان در ابتدا به سفارش وزارت دفاع آمریکا جهت مستندسازی اطلاعات مدارات دیجیتال و
تراشههای به کار گرفته شده در ادوات نظامی، طراحی شد. اطلاعات بسیار زیاد و پیچیده
مدارات دیجیتال به کار گرفته شده در ادوات نظامی، مانع از توسعه سریع آنها میشد و
اطلاعات طراحی را فقط برای طراح قابل خواندن و پیگیری میساخت به طوری که توسعه
همان طرح توسط شخصدیگر دشوار بود، به همین خاطر در سال 1980 زبانی طراحی شد که
توصیف یک مدار در سطوح مختلف انتزاع در آن میسر باشد. پس از آن ابزارهایی جهت
شبیهسازی مدارات طراحی شده با این زبان ایجاد شد، سپس ابزارهای کامپیوتری جهت
سنتز کردن کدهای VHDL عرضه شدند که به کمک این ابزار، توصیف سختافزاری یک مدار را
میتوان به راحتی به معادل فیزیکی آن جهت پیاده سازی و ساخت مرتبط کرد.
در
طراحی زبان توصیف سختافزاری VHDL از مفاهیم زبان برنامهنویسی Ada بهره برده شده
به همین خاطر این زبان در syntax بسیار مشابه Ada میباشد. این زبان به گونهای
طراحی شده که مسائل همزمانی و موازیسازی سختافزار را به خوبی پوشش دهد.
در
سال 1983 دوشرکت بزرگ IBM و Texas Instrument به همراه شرکت Intermetrics قراردادی
را جهت توسعه این زبان برای کاربردهای طراحی مدارات دیجیتال امضا کردند و چهار سال
بعد این زبان به توسط IEEE استاندارد سازی شد پس از آن وزارت دفاع آمریکا شرکتهای
تابع خود را مقید ساخت تا تمامی مدارات دیجیتال خود را به این زبان توصیف کنند.
جگنده F-22 یکی از اولین پروژههایی بود که تمامی مدارات و مستندات الکترونیکی
آن به زبان VHDL نگاشته شده بود، موفقیت این پروژه موجب شد تا زبان VHDL بیش از پیش
توسعه یافته و مورد استفاده قرار گیرد.
در سال 1993 استاندارد IEEE-1076 ویرایش
شد و در آن تمهیداتی جهت پوشش دادن به سیگنالهایی که در آن واحد چند مقدار به آنها
داده میشود، اندیشیده شد. در سال 1996 ابزارهای شبیه سازی و سنتز مدارات دیجیتال
توصیف شده توسط VHDL به صورت تجاری عرضه شدند تا مراحل طراحی تا پیادهسازی
کامپیوتری یک سختافزار به کمک VHDL تکمیل شود.
در سال 2006 کمیته فنی VHDL
مستقر در کنسرسیوم Accellera که توسط IEEE جهت به روزرسانی استاندارد VHDL ایجاد
شده است، نسخه سوم از پیش نویس استاندارد VHDL-2006 را ارائه کرد.
یک نمونه از
برنامه VHDL که به توصیف یک گیت AND ساده بدون ملاحظات زمانی پرداخته است در زیر
آورده شده است :
std_logic from the IEEE library
library IEEE;
use
IEEE.std_logic_1164.all; -- this is the entity
entity name_of_entity
is
port (
IN1 : in std_logic;
IN2 : in std_logic;
OUT1: out
std_logic);
end entity name_of_entity; -- here comes the
architecture
architecture name_of_architecture of name_of_entity is --
Internal signals and components would be defined here
begin
OUT1 <= IN1
and IN2;
end architecture name_of_architecture;
زبان توصیف سختافزار Verilog
زبان توصیف سختافزاری Verilog
سرنام VerifyingLogic جهت مدلسازی سیستمهای الکترونیکی ابداع شده است که کلیه
مراحل طراحی، ارزیابی و پیاده سازی یک مدار آنالوگ یا دیجیتال یا یک مدار ترکیبی را
در چند سطح انتزاع پوشش میدهد.
Syntax این زبان بسیار مشابه به زبان C میباشد
و در توسعه آن از ویژگیهای زبان C الگو گرفته شده است. این زبان در سال 1981 توسط
Phil Moorby در شرکت Gateway DesignAutomation ابداع شد و در سال 1985 نرمافزار
شبیهساز این زبان به نام Verilog-XL عرضه شد در سال 1989 این شرکت به همراه حقوق
معنوی این زبان توسط شرکت Cadance خریداری و سپس مستندات آنرا برای استفاده عمومی،
به صورت رایگان در اختیار مردم قرار گرفت.
در سال 1993 این زبان توسط IEEE
بازنگری و استانداردسازی شد در همین سال بر اساس آمار EETimes حدود 85 درصد از
طراحیهای مدارات مجتمعی که به کارخانههای تولیدکننده ادوات نیمههادی سفارش داده
شدند، به زبان Verilog توصیف شده بودند.
یک نمونه از برنامه Verilog که به توصیف
یک فلیپفلاپ پرداخته است در زیر آورده شده است :
module toplevel(clock,reset);
input clock;
input
reset;
reg flop1;
reg flop2; always @ (posedge reset or posedge
clock)
if (reset)
begin
flop1 <= 0;
flop2 <=
1;
end
else
begin
flop1 <= flop2;
flop2 <=
flop1;
end
endmodule
از جمله امکانات زبان Verilog محیط PLI آن سر
نام Program LanguageInterface میباشد که به کمک آن میتوان کنترل برنامه را از
زبان Verilog بر عهده تابعی که به زبان Cنوشته شده است قرار داد، این قابلیت موجب
شده تا زبان Verilog انعطاف پذیر گشته و توسعه برنامه در آن توسط زبان C نیز امکان
پذیر باشد.
Verilogدر برابر VHDL
توصیف ساختاری یک سختافزار با زبان
Verilog هیچ گونه برتری یا کاستی نسبت به توصیف آن با زبان VHDL ندارد و تفاوت میان
این دو زبان بیشتر در توصیفهای رفتاری یک سختافزار خود را نشان میدهند. شکل زیر
نشاندهنده میزان مقیاس پذیری این دو زبان در سطوح مختلف انتزاع در توصیف رفتاری
میباشد:
همانطور که مشاهده میکنید، زبان Verilog توانایی مدلسازی سختافزار
تا پایینترین سطح انتزاع یعنی سطح ترانزیستور و سوییچ را دارا میباشد در حالی که
زبان VHDL توانایی مدلسازی سختافزار در بالاترین سطوح انتزاع (تا سطح سیستم) را
دارد. علارقم اینکه به کمک قابلیت PLI زبان Verilog تا حدودی میتوان به توصیف
سیستمی یک سختافزار پرداخت، اما اصولا بهرهگیری از HDL ها جهت توصیف یک سیستم
ناکارآمد است و برای این منظور زبانهای کارآمد دیگری مانند SystemC و System
Verilog طراحی شده که به کمک آنها میتوان سختافزار را از بالاترین سطح انتزاع
توصیف نمود. لذا قابلیتهای توصیف سیستمی VHDL را به سختی میتوان در زمره
برتریهای آن نسبت به Verilog قلمداد کرد.
انواع داده در زبان Verilog نسبت به
VHDL ساده تر و استفاده از آنها آسانتر میباشد، ضمن اینکه این انواع داده در
Verilog به مدلسازی ساختاری نزدیکتر هستند، در این زبان برخلاف VHDL انواع داده
مشخصی تعریف شده است و کاربر نمیتواند انواع داده جدید به آن اضافه کند. به دلیل
سادگی استفاده از انواع دادهها زبان Verilog نسبت به VHDL ارجحیت دارد.
برای
فردی که پیشزمینهای در مورد زبانهای برنامه نویسی ندارد، یادگیری زبان
Verilogسادهتر از VHDL است، چرا که نوشتن کدهای VHDL کمی پیچیده تر از
Verilogمیباشد و برای تسلط بر خط کد این VHDL، زمان بیشتری نیاز است، علاوه بر
اینکه در زبان VHDL روشهای متعددی برای مدل کردن یک مدار وجود دارد که در
ساختارهای بزرگ میتواند موجب سردرگمی افراد تازه کار شود.
انتخاب یک زبان توصیف سختافزار
برای انتخاب یک زبان جهت توصیف
مدار دیجیتال، عوامل متعددی را باید علاوه بر برتریهای ذاتی یک زبان خاص مدنظر
قرار داد. برخی از این عوامل عبارتند از:
سلیقه شخصی :
اصولا چون اکثر مهندسین و طراحان مدارات دیجیتال
به زبان
C مسلط هستند، زبان Verilog را که خط کد مشابه C دارند ترجیح میدهند،
ضمن اینکه خوانایی کدهای این زبان بهتر از VHDL است.
موجودیت ابزارهای
شبیهسازی و سنتز : در حال حاضر ابزارهای شبیهساز رایگان متعددی برای زبان
Verilog وجود دارند که از میانآنها میتوان به کامپایلر Icarus Verilog اشاره کرد،
در حالی که ابزارهای شبیهساز متنباز اندکی برای VHDL موجود هستند و اقلب
ابزارهای شبیهسازی این زبان، به صورت تجاری به فروش میرسند.
عوامل تجاری و
بازاریابی : بر اساس آمارهای منتشر شده در سال 1998بازار ابزارهای شبیهسازی زبان
Verilog حدود 150 میلیون دلار اعتبار داشت به طوری که اعتبار این بازار نسبت به سال
1994 دو برابر شده بود، در سال 2003 نیز شرکت Synopses یکی از بزرگترین شرکتهای
این بازار چند صد میلیون دلاری، اعلام کرد که تیم توسعه و تحقیقات این شرکت تنها بر
روی Verilog متمرکز شده اند و در ابزارهای شبیهسازی این شرکت از VHDLپشتیبانی
نخواهد شد.
زبان توصیف سختافزاری Verilog مورد استقبال صنایع بزرگ قرار گرفته
است به طوری که امروزه این زبان به عنوان یک زبان پرکاربرد در صنعت طراحی و تولید
مدارات دیجیتال شناخته شده است. در مقابل زبان VHDL از سوی جامعه آکادمیک مورد
استقبال قرار گرفته و بیشتر در پروژههای دانشگاهی از آن بهره گرفته میشود.
تمرکز وبسایت تخصصی سختافزار ایران نیز با توجه به برتریهای ذکر شده بر روی
زبان توصیف سختافزاری Verilog میباشد. به همین منظور جهت فراگیری این زبان
خودآموز زیر را به خوانندگان گرامی اهدا میکنیم.
خودآموز زبان Verilog نگاشته
جناب آقای دکتر صفری استادیار دانشگاه تهران در گروه مهندسی کامپیوتر-سختافزار:
جهت فراگیری زبان توصیف سختافزاری VHDL نیز مراجع و کتبهای متعددی وجود دارد
که بر اساس مشورتهای صورت گرفته Tutorial منتشر شده توسط سایت cic.org.tw به
خوانندگان محترم پیشنهاد داده میشود،نسخهPDF این خودآموز را میتوانید از این آدرس
دانلود کنید.
منابع: WayneWolf,
"ModernVLSIDesign" 3rd Edition, Prentice-Hall
SamirPalnitkar, "Verilog®HDL: A
Guide to Digital Design and Synthesis", Second Edition,
Prentice-Hall
DouglasJ.Smith, "HDLChip Design", Doone publications