Verilog HDL-3
Verilog HDL-3
[FONT="]با سلام و خسته نباشيد[/FONT][FONT="] .
[/FONT][FONT="]قسمت سوم : ساختار كلّي[/FONT][FONT="] FPGA [/FONT][FONT="]و مقدمه اي بر[/FONT][FONT="] Verilog HDL
[/FONT][FONT="]منبع (جزوه ي دكتر محسن صانعي ، مدرس درس مدار منطقي پيشرفته، دانشگاه شهيد باهنر كرمان[/FONT][FONT="])
در نگاه اول (ظاهري) FPGA مانند ساير تراشه هاي ASIC مثل ميكروكنترلرها به نظر مي آيد كه تعداد پايه هاي ورودي و خروجي بيشتري دارد، اين سخن تا حدي درست است ! زيرا FPGAهاي جديد در واقع هم FPGA هستند و هم ASIC ، به اين معني كه فقط از گيت ها و سوئيچ ها و wireها تشكيل نشده اند بلكه بلوك هاي استاندارد آماده اي نيز در آنها تعبيه شده است ، مثلاً Virtexها از اين جمله هستند ، بعضي از اين بلوك ها از اين قرارند : بلوك هاي مديريت كلاك ، بلوك هاي RAM (حافظه) ، بلوك هاي آماده ي DSP (براي پردازش سيگنال ، شامل ضرب كننده ها و متوسط گيرها و ...) و . . .
در اينجا فعلاً كاري با بلوك هاي اضافه نداريم ، و توجهمان را روي چگونگي كار با گيت ها و ساختار كلّي اين قسمت متمركز مي كنيم ، چنانچه در اين عكس :
http://www.fpgacentral.com/files/u1/fpga.jpg
نيز معلوم است ، FPGA از بلوك هاي منطقي قابل برنامه ريزي يا Programable Logic Block (كه در اين تصوير مشكي رنگ هستند) و يك سري سيم هاي افقي و عمودي كه رابط بين اين بلوك هاي منطقي هستند تشكيل شده است و خروجي را از طريق پايه هاي IO در اختيارتان مي گذارد ، البته فقط اين نيست ، كل كاري كه شما انجام مي دهيد تا FPGA را برنامه ريزي كنيد ، مشخص كردن چگونگي سيم كشي بين بلوك هاي منطقي است ، چنانچه شكل زير نشان مي دهد :
http://www.ir-micro.com/pict/fpga_002.gif
اين وظيفه بر عهده ي بلوك هاي اتصال يا Connection Blocks (كه در شكل يا حرف C نشان داده شده اند و رابط بين بلوك هاي منطقي هستند) و سوئيچ ها (كه در شكل با حرف S مشخص شده اند و رابط بين بلوك هاي اتصال مي باشند) است.
[/FONT][FONT="]Connection Block[/FONT] و Switchها نيز از تعدادي ترانزيستور ساخته شده اند كه كه وقتي به گيت آنها ولتاژي اعمال مي شود ، درين و سورس را به هم متصل مي كنند و به اين ترتيب يك مسير مي سازند ، پروگرام كردن نيز در واقع صفر و يك دادن به گيت همين ترانزيستورهاست.
بلوك هاي قابل برنامه ريزي نيز خود از چندين قسمت ديگر به نام Slice تشكيل شده اند كه هر اسلايس نيز از چندين مالتي پلكسر ، فليپ فلاپ ، LUT و ... تشكيل شده است ،
اگر نگاهي به عكس آواتار فعلي بنده بيندازيد (البته اگر زماني كه شما اين جمله را مي خوانيد عوضش نكرده باشم !) بالاي عكس تفنگ ، محتويات يك اسلايس را نشان مي دهد ، كه البته اين مربوط به FPGA هاي شركت Xilinx است.
در صورت علاقه جزئيات بيشتر در اين زمينه را مي توانيد با يك جستجو پيدا كنيد ، براي طراحي و تست يك برنامه دانستن همين مقدار از جزئيات كافي است.
******************
مقدمه اي بر Verilog HDL
اين زبان در سال 1983 بر اساس زبان C ولي سخت افزاري ، مطرح شد و از آن به بعد استانداردهاي جديدتر آن نيز به بازار آمده اند ، مثلاً استاندار 1998 و 2001 ،
به گفته ي استاد ارجمندم دكتر صانعي ، يكي از استانداردنويس هاي اين زبان آقاي پروفسور زين العابدين نوابي ، مولف كتاب Verilog Digital System Design است.
قالب كلّي اين زبان چنين است :
module modulename (input var, output var)1
2 دستورات
endmodule3
يعني اصلي ترين جزء اين زبان ماژول ها هستند كه با كلمه ي module (حروف كوچك) شروع مي شود و به كمه ي endmodule ختم مي شود .
ورودي و خروجي هاي هر ماژول بعد از كلمه ي module تعريف مي شوند و با حرف كاما از يكديگر متمايز مي گردند.
براي تعريف ورودي از كمه ي input و براي تعريف خروجي از كلمه ي output استفاده مي شود. بعد از اين دو كلمه با يك فاصله نام متغير ورودي يا خروجي نوشته مي شود.
(نام ماژول ها و نام متغر ها دلخواه است و از قواعد ساير زبان C پيروي مي كند يعني مثلاً نام متغير با ! شروع نشود.)
توجه كنيد در اين زبان بزرگ و كوچك بودن حروف اهميت دارد ، آخر هر دستور نيز علامت سمي كالن مي آيد ، حتي تعريف ماژول ،
براي تعريف تعداد بيت ها از كروشه استفاده مي شود . sها را براي اينكه ترتيب حروف به هم نخورد گذاشتم ، يعني الكي هستند .
مثال :
ssssssssssssss input [7:0] a,b ; ssssssssssssssssssss
كه در اين مثال دو متغير a و b هشت بيتي و بعنوان ورودي تعريف شده اند.
فعلاً همين قدر بسه ، خسته شدم ، . . .
موفق و پيروز باشيد
آنچه در قسمت بعد خواهد آمد : جزئيات بيشتر و نوشتن چند برنامه ساده به زبان Verilog

سعادت در دو چيز است : تشخيص وظيفه ، انجام وظيفه
