به کمک زبانهای توصیف سختافزار علاوه بر طراحی میتوانیم یک سختافزار را شبیه سازی کرده تا قابلیتها و عملکرد آن را قبل از پیادهسازی آزمایش کنیم. در دنیای واقعی تست کردن یک سختافزار، خود نیازمند یک سختافزار دیگر است که مجموعهای از ورودیهای مجاز را برای سختافزار زیر تست تولید کرده و خروجی حاصله را با مقدار مورد انتظار مقایسه کند. در فضای مجازی که کامپیوتر در اختیار ما قرار داده است نیز میتوانیم قبل از پیاده سازی و ساختن سختافزار، عملکرد آنرا با طراحی یک سختافزار جانبی جهت تست، سختافزار اصلی را ارزیابی کنیم، به این ترتیب که به کمک زبان توصیف سختافزار، برنامهای نوشته میشود تا زنجیرهای از ورودیها را به سختافزار مورد آزمایش داده و خروجی آن را با مقادیر مورد انتظار طراح مقایسه نماید، به این برنامه که جهت آزمایش عملکرد سختافزار نوشته میشود، Testbench گفته میشود.
زبانهای توصیفسختافزار Verilog و VHDL در میان سایر HDLها محبوبیت بیشتری پیدا کردهاند که در ادامه مقاله به بررسی و مقایسهآنها خواهیم پرداخت.
زبان توصیف سختافزار VHDL
زبان VHDL سر نام Very High Speed Integrated CircuitHardwareDeionLanguage از جمله 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