82
ی ز ی ه ر م ا زن ی ل ب ا ه ای ق ی دروار ها ه ی را ا ی ن دا ی مField Programmable Gate Arrays (FPGAs) ! ک" ی ن رو کت ل ه در ا) ز ی و) ث ح ا ی م ی م ل س م ا مدرض ح م ر کت د مدرس:. moslemi@iauzarghan a . c ir

آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

  • Upload
    brick

  • View
    104

  • Download
    0

Embed Size (px)

DESCRIPTION

مباحث ویژه در الکترونیک. آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs). مدرس : دکتر محمدرضا مسلمی [email protected]. مقدمه. ASIC چیست؟. مخفف کلمات Application Specific Integrated IC است. - PowerPoint PPT Presentation

Citation preview

Page 1: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

آرایه های دروازه ای قابل برنامه ریزی میدانی

Field Programmable Gate Arrays (FPGAs)

مباحث ویژه در الکترونیک

محمدرضا دکت#ر مدرس: مسلمی

[email protected]

Page 2: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

مقدمهASICچیست؟ مخفف کلماتApplication Specific Integrated IC .است

.این واژه معموال به مدارهای مجتمعی که صرفا برای کاربردهای خاص ساخته می شوند اطالق می شود

از این نوع مدارهای مجتمع در ساخت انواع میکروپروسسورها، انواع حافظه های( استفاده می شو#د.ROM( و فقط خواندنی )RAMخواندنی-نوشتنی )

مزایدر صورتی که مدارهای با کاربرد خاص به صورت مدار مجتمع در آیند، کاهش قابل توجهی در اندازه مدار خواهیم ا

داشت.با کاهش اندازه مدار

یکپارچگی سیگنال ها در مدار افزایش می یابد.1(سرعت مدار افزایش می یابد.2(

Page 3: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

معایب.معموال از زمان طراحی این مدار تا تولید آن توسط کارخانجات سازنده آی سی زمان نسبتا طوالنی نیاز است

به دلیل آن که تولید توسط کارخانجات تولید آی سی و در یک فرآیند خارج از روالآن انجام می شود، هزینه تمام شده باالیی دارند.

معموال برای تولید انبوه استفاده می شوند و برای تعداد کم مقرون به صرفه نمی باشند.

Page 4: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

FPGA چیست؟ مخفف کلماتField Programmable Gate Array .است

.این واژه معموال به مدارهای مجتمعی که برای پیاده سازی مدارهای دیجیتال قابل برنامه ریزی هستند اطالق می شود

،از این نوع مدارهای مجتمع در ساخت انواع میکروپروسسورها، انواع حافظه هامدارات ورودی-خروجی و پردازش تصویر استفاده می شود.

مزای قرار گیرد، کاهش قابل توجهی در اندازه مدار خواهیم داشت.FPGAدر صورتی که مدارهای دیجیتال در یک ا

با کاهش اندازه مداریکپارچگی سیگنال ها در مدار افزایش می یابد.1(سرعت مدار افزایش می یابد.2(

Page 5: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

.ظرفیت باالی فشرده سازی دارندقیمت تمام شده آنها بسیار پایین می باشد.زمان عرضه این آی سی ها به بازار بسیار کم می باشد.امنیت مدار باال رفته و امکان کپی کردن آن از بین می رود

معایب

سطح سیلیکو#نFPGA.به صورت بهینه مورد استفاده قرار نمی گیرد تاخیر و توان مصرفی آنها نسبت به مداراتASIC.بیشتر است

کاربرداگرچه نمی توان محدوده خاصی برای کاربرد این مدارها تعیین کرد با این وجود برخی از کاربردهای ها

آنها عبارتند از:کارتهای ورودی-خروجی، فیلترهای دیجیتال، میکروکنترلر و میکروپروسسورهای خاص، پردازش

سیگنال و تصویر، سیستم های مخابراتی و ابزار دقیق و سیستم های نظامی

Page 6: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

شرکت های ,Xilinx, Altera, Lattice عباتند از:FPGAمهم ترین شرکت های سازنده سازنده

Actel

FPGAمهم ترین سهم شرکت های سازنده از بازار

تاریخچه آی سی های دو شرکت مهم تولید کننده

Page 7: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

درباره زایلینکس (Xilinx) تاسیس گردید.1984این شرکت در سال

کارمند دارد.2600بیش از مورد نیاز را در دنیا تامین FPGAبیش از نیمی از محصوالت

می کند. مشارکت دارد.Seiko و IBM، UMCبا سازندگان مهمی چ#ون

مهمترین نرم افزارهای شبیه سازی: ISI, Fandation (Alteraدرباره آلترا )

تاسیس گردید.1983این شرکت در سال ( را Look Up Table ساختار جدول جستجو )1992در سال

معرفی نمود. در دنیا است.FPGAدومین شرکت تولید کننده آی سی های

مشارکت دارد.TSMCبا شرکت مهمترین نرم افزارهای شبیه سازی:

Quartus II, Max Plus II

Page 8: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

FPGAساختار داخلی

FPGAچگونه می توان مدارهای دیجیتالی مختلف را درون یک ( رسم نمود.Truth tableهمانطور که می دانیم برای هر مدار دیجیتال با هر تعداد ورودی و خروجی می توان یک جدول درستی )پیاده سازی کرد؟

در جدول درستی تمامی حالت های ممکن ورودی به تصویر درآمده و به ازای هر یک از این حاالت خروجی تعیین می گردد.

خروجی دارد.1 ورودی و 4فرض کنید مدار مورد نظر بیت خروجی داده جایگزین نمود.1 بیت ورودی آدرس و 4 با RAMدر این حالت می توان این مدار را با یک

RAM حالت ورودی جدول درستی است که در هر 16 آدرس مختلف، معادل 16 مورد نظر دارای آدرس خروجی تابع مورد نظر نوشته می شود.

برای پیاده سازی مدارهای بزرگتر می توان از مجموعه ای از این بلوک های حافظه استفاده نمود.

در خروجی ذخیره RAMبسته به این که ورود مدار چه باشد داده ذخیره شده در یکی از خانه های می شود.

Page 9: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

فرار بوده و پس از قطع FPGA، مدار ذخیره شده در RAMدر این مدارها به دلیل استفاده از برق از بین می رود.

FPGA کپی می کنند تا پس از وصل برق، مجددا درون PROMمعموال کل برنامه را درون یک بنابراین پس از قطع برق، پیکربندی مجدد الزم است.بارگذاری شو#د. باعث افزایش انعطاف پذیری می گردد. یعنی هر زمان که بخواهیم می RAMاستفاده از توانیم با پیکر بندی مجدد، مدار داخلی را عوض کنیم.

به عنوان بلوک های پایه مورد استفاده FPGAچهار بلوک زیر می تواند در ساختار داخلی قرار گیرد.

PROM (Anti fuse)

EEPROM

FLASH

RAM

، به کوچکترین واحد تشکیل دهنده FPGAسازندگان دنیای )یعنی هر یک از حافظه های مورد استفاده( اصطالحا

LUT (Look Up Table)می گویند.

Page 10: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

یک مدار منطقی ثابت

مثالی از روش پیاده سازی یک ورودی و یک 3منطق# برنامه پذیر با

خروجی با استفاده از آنتی فیوز

Page 11: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

پیاده FPGAچگونه می توان مدارهای ترتیبی را درون یک پیاده سازی شوند.FPGA( نیز می توانند درون یک Sequentialمدارهای ترتیبی )سازی کرد؟

به صورت مستقیم و همچنین از طریق یک فلیپ فالپ به LUT، خروجی هر FPGAدر یک مالتی پلکسر وارد می شود.

، مدار ترکیبی یا ترتیبی خواهد بود.MUXبسته به ورودی کنترل

FPGAواحد پایه در Xilinx: LC – Logic Cell Altera: LE – Logic Element

Slice( یک Logic Cellاز ترکی#ب دو س#لول منطق#ی )به وجود می آید

Page 12: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

Slice 0

LUT Carry

LUT Carry D QCE

PRE

CLR

DQCE

PRE

CLR

تشکیل LC که از ترکیب دو Sliceیک خروجی می 4 دارای Sliceهر شده است.

باشد. خروجی 2 خروجی حافظه و 2

ترکیبی

یک Slice عدد 2از ترکیب

Configurable Logic Block (CLB)تشکیل می گردد.

CLB در واقع اصلی ترین بخش است که توابع FPGAاز هر

منطقی را پیاده سازی می کند.

Altera خانواده Stratix IIدر سری اصطالحا

ALM (Adaptive Logic Module) نامیده می شود.

مداری برای انتقال رقم Sliceدر نقلی نیز وجود دارد.

Page 13: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

جمع بندیLUT

• Look Up Table ورودی و یک 4 با RAMشامل یک •

خروجی می باشد.

LC• Logic Cell

عدد 2 به همراه LUT عدد 2شامل •F.F.می باشد .

Slice تشکیل می LC عدد 2از ترکیب •شود.

CLB • Configurable Logic Block تشکیل می گردد.Slice عدد 2از ترکیب •

FPGA• Field Programmable Gate Array

ها CLBاز کنار هم قرار گرفتن •تشکیل می شود.

Page 14: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

معمولFPGAساختار داخلی یک

Page 15: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

اغل#ب زیاد FPGAدر تعداد بر برای CLB های جدی#د عالوه نیز دیگ#ر امکانات برخ#ی ،تسهیل در پیاده سازی مدارهای دیجیتال پیچیده تر وجود دارد.

LUT داخل#ی غی#ر از نمون#ه های کوچک موجود در RAMیک#ی از مه#م تری#ن ای#ن امکانات در ص#ورتی ک#ه بخواهی#م مداری ب#ا تعداد زیاد ورودی را پیاده س#ازی نمایی#م، به جای ها است.

از بخشی از همین حافظه داخلی استفاده می کنیم.CLBاستفاده از تعداد زیاد

از شرک#ت زایلینک#س، دارای بلوک های ه#ر کدام با 2ب#ه عنوان مثال، مدل اس#پارتان بیت است.4096ظرفیت

حافظه از اس##تفاده نحوه جدول 2داخلی اسپارتان

Page 16: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

ضرب کننده

های جدی#د شرکت محص#والت بعض#ی وجود Xilix, Alteraدر کننده های ضرب بلوک دارد.

بیتی 18عم#ل ضرب در ای#ن محص#والت را م#ی توان توس#ط ضرب کننده های داخل#ی نیز با سرعت باالتر انجام داد.

این ضرب کننده ها معموال در کارهای پردازش سیگنال کاربرد دارند.میکروپروسسور داخلی

های شرک##ت جدی##د محص##والت بعض##ی مث##ل Xilix, Alteraدر Virtex-II Pro یک میکروپروسسور داخلی وجود دارد.

کامال تخصص#ی است و برای کاربردهای تخصصی استفاده می شود. FPGAاین PowerPC در واق#ع ی#ک میکروپروس#سور داخل#ی اس#ت ک#ه توس#ط شرک#ت IBM داخل

FPGA.قرار داده شده است

Page 17: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

یک مختل#ف س#اخت مراح#ل FPGA طراحی ابتدایی

را • خود نظر مورد مدار بای#د مرحل#ه ای#ن در طراحی نماییم.

مدار • سازی پیاده برای معمول روش برای باال سطح های برنام#ه از اس#تفاده

برنامه ریزی مدار است.البت#ه در بس#یاری از نرم افزارهای شبی#ه ساز، •

امکان ای#ن ک#ه شماتی#ک مدار را رس#م کرد نیز وجود دارد.

ای#ن نرم افزاره#ا قادرن#د خروج#ی متن#ی برنامه •را نیز به زبان های مرسوم تولید کنند.

•HDL Designer (HDS) نرم این از یک###ی افزارهاست.

البت#ه ای#ن امکان معموال نیاز ب#ه دانس#تن یک زبان تر پیچیده کارهای برای را نویس##ی برنام##ه

منتفی نمی کند.

Page 18: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

عبارتند از: FPGAدو زبان اصلی برنامه نویسی VHDL, Verilog

برخالف برنام#ه های مرس#وم ک#ه معموال ب#ه ص#ورت خ#ط ب#ه خ#ط اجرا م#ی شون#د، این ( اجرا م#ی شوند. ب#ه همی#ن دلیل معموال از Cuncurrentبرنام#ه ه#ا بر اس#اس رخداده#ا )

VHDL: Very High Speed Description Languageکلمه ))کد(( به جای ))برنامه(( استفاده می شود.

زبان توصیفی با سرعت خیلی باال

ذخیره می کنند. vhd را در یک فایل با پسوند .VHDLدر این مرحله، معموال کد را بعدا م#ی توان ب#ه ص#ورت پکیج آماده VHDLاز آنجای ک#ه ه#ر طرح پیاده شده ب#ا ک#د

( entityدر س#ایر طرح ه#ا نی#ز اس#تفاده کرد، معموال نام فای#ل را همان موجودیت )مو#رد استفاده در کد قرار می دهیم.

Page 19: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

شبیه سازی

برنام#ه های#ی وجود دارن#د ک#ه ک#د مورد نظ#ر م#ا را گرفت#ه و عملکرد مدار را برای ما شبیه سازی می کنند.

ب#ه ای#ن ترتی#ب ک#ه م#ا شک#ل ورودی های مدار را برای آنه#ا تعیی#ن کرده و این نرم افزارها، خروجی های مختلف را به ما می دهند.

ازای حالت های ب#ه از عملکرد مدار خود توانی#م افزاره#ا م#ی نرم ای#ن ب#ه وس#یله مطمئن شویم.FPGAمختلف ورودی، قبل از پیاده سازی آن بر روی

عبارتند از:Verilog و VHDLدو نرم افزار معروف برای شبیه سازی عملکرد کدهای

•ModelSim از شرکت Model Technology

•LDV از شرکت Cadence

Page 20: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

اص#لی یک برنام#ه از برای شبی#ه س#ازی عملکرد مدار، معموال الزم اس#ت ک#ه غی#ر برنامه دیگر نوشته شود.

( و Verilog )برای برنامه test fixtureای#ن برنام#ه ک#ه ص#رفا برای تس#ت مدار م#ی باش#د، test bench برای برنامه( VHDL.نامیده می شود )

معمو#ال برنام#ه تس#ت ب#ه ای#ن ص#ورت اس#ت ک#ه شک#ل موج های مختل#ف که حاوی تمام حاالت ممکن ورودی می باشد تولید می شود.

، طراح ب#ه بس#یاری از نکات منف#ی و حال#ت هایی test benchمعموال در نوشت#ن برنام#ه که در طراحی مدار اصلی از آن غافل شده است پی می برد.

Page 21: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

سنتز

مه#م تری#ن مرحل#ه در س#اخت آ#ی س#ی منطق#ی ک#ه از زبان تو#ص#یف سخت افزار برای ( است. Synthesisطراحی آن استفاده شده است، مر حله سنتز )

تبدیل به مجموعه ای از گیت های مناسب می شود.HDLدر این مرحله کد

FPGA Express, FPGA Compiler II, Leonardo Spectrum, Simplifyنرم افزارهای از جمله نرم افزارهای تخصصی سنتز می باشند.

پیاده سازی

آخری#ن مرحل#ه انجام ی#ک پروژ#ه مرحل#ه ای اس#ت ک#ه فای#ل س#نتز شده دریافت و مدار پیاده می شود.FPGAمربوط به آن بر روی گام اصلی وجود دارد.4در مرحله پیاده سازی

Page 22: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

Translation تمام اطالعات#ی ک#ه برای مراح#ل بع#د الزم اس#ت در ای#ن مرحله س#اخته می :شود.

Mapping ای#ن ک#ه مدار منطق#ی مو#رد نظ#ر م#ا بای#د چ#ه ترکیب#ی از کوچکتری#ن عناصر :ه#ا بافره#ا، بلوک های رم و ... باش#د در ای#ن مرحل#ه تعیین می LUT یعنی FPGAسازنده

گردد.Placement ای#ن مرحل#ه برای ه#ر کدام از عناص#ر موجود در فای#ل تولید شده در : در

مرحله قبل، یک محل مخصوص در نظر گرفته می شو#د.Routing ای#ن مرحل#ه، عناص#ر روی ب#ا س#یم ها و FPGA: آخری#ن مرحل#ه م#ی باشد. در الزم ب#ه ذک#ر است ک#ه برخی از نرم افزارهای معروف قادرند تمامی مراحل از ورود موجود به هم وصل می شوند.routingمنابع

کد های مورد نظر تا مرحله پیاده سازی را انجام دهند. اشاره نمود.Xilinx ISE Design و Quartus IIاز مهم ترین این نرم افزارها می توان به

Page 23: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

VHDLساختار یک برنامه

دارای سه بخش اصلی زیر می باشد.VHDL هر کد 1( ه#ا کتابخان#ه معرف#ی -Library Decleration:) های کتابخانه تمام#ی بخ#ش ای#ن در

استفاده شده در کد معرفی می گردند.پین ها )پورتهای( ورودی و خروجی مدار را مشخص می کند.(: Entity- موجو#دیت )2نحوه عملکرد مدار را مشخص می کند.(: Architectue- معماری )3

کتابخانه

از بتوان تا کتابخان#ه قرار م#ی دهن#د در را اس#تفاده و معمول پ#ر معموال قطعات استفاده نی#ز برنام#ه در س#ایر آنه#ا گذاری اشتراک و اس#تفاده مجدد قابلی#ت های

کتابخانه نیاز داریم.3( متعلق به Package بسته )3 به حداقل VHDLمعموال در هر کد نمود.

Page 24: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

ieee مربوط به کتابخانه std_logic_1164بسته •

std مربوط به کتابخانه standardبسته •

work متعلق به کتابخانه workبسته •

برای اعالن کتابخانه به دو خط کد نیاز داریم:LIBRARY library_name;

Use library_name.package_name.package_parts;

مثالLIBRARY ieee;

Use ieee.std_logic_1164.all;

LIBRARY std;

Use std.standard.all;

VHDL به حروف بزرگ و کوچک حساس نمی باشد.

Page 25: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

(Entityمو#جودیت )

موجودیت در کد به صورت زیر تعریف می شود.•ENTITY entity_name IS

PORT (

port_name: signal_mode signal_type;

port_name: signal_mode signal_type;

…);

END entity_name;

شامل یکی از مقادیر زیر است.modeپارامتر In, out, inout, buffer

یک از بخواهی#م ک#ه شود م#ی اس#تفاده زمان#ی باف#ر نوع سیگنال خروجی به صورت داخلی استفاده نماییم.

Page 26: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

شامل یکی از مقادیر زیر است.typeپارامتر Bit, integer, std_logic

( Architectureمعماری )

معماری دو بخش دارد. •- بخ#ش اعالن )اختیاری و در ص#ورت لزو#م(: س#یگنال ه#ا و متغیره#ا و ثواب#ت تعریف 1

می شوند.- بخش کد که عملکرد مدار را توصیف می کند.2

ARCHITECTURE architecture_name of entity_name IS

[Decleration]

BEGIN

(code)

END architecture_name;

Page 27: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

ساده NANDمثال: طراحی یک گیت

ENTITY nand_gate IS

PORT (a, b: IN BIT;

x: OUT BIT);

END nand_gate;

ARCHITECTURE my_arch of nand_gate IS

BEGIN

x <= a NAND b;

END my_arch ;

ENTITY nand_gate IS

PORT (a, b: IN BIT; -- inputs

x: OUT BIT); -- outputs

END nand_gate;

ARCHITECTURE my_arch of nand_gate IS

Signal int: std_logic; -- internal signal decleration

BEGIN

int <= a and b;

x <= NOT int;

END my_arch ;

م#ی توان از عملگر intب#ه جای تعری#ف س#یگنال داخل#ی NAND.استفاده کرد

VHDLعملگرهای منطق#ی زی#ر در استاندارد NOT, AND, NAND, OR, NOR, XOR, XNORتعریف شده اند.

Page 28: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

مثال: طراحی یک نیم جمع کننده

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

entity Half_adder_mine is

Port ( X : in STD_LOGIC;

Y : in STD_LOGIC;

S : out STD_LOGIC;

C : out STD_LOGIC);

end Half_adder_mine;

architecture Behavioral of Half_adder_mine is

begin

S <= X xor Y;

C <= X and Y;

end Behavioral;

Page 29: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

library IEEE;use IEEE.STD_LOGIC_1164.ALL;entity Three_input_gates is Port ( IN0, IN1, IN2 : in STD_LOGIC; OUT0, OUT1, OUT2, OUT3, OUT4, OUT5 : out STD_LOGIC);end Three_input_gates;architecture Behavioral of Three_input_gates isbegin OUT0 <= IN0 and IN1 and IN2;

OUT1 <= IN0 or IN1 or IN2; OUT2 <= not (IN0 and IN1 and IN2); OUT3 <= not (IN0 or IN1 or IN2); OUT4 <= IN0 xor IN1 xor IN2; OUT5 <= IN0 xnor IN1 xnor IN2;

end Behavioral;

Page 30: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

انواع دادهتعریف • قب##ل از های داده

شدهشده • تعریف های داده

داده های از قبل تعریف شدهتوسط کاربرBIT, BIT_VERCTOR

STD_LOGIC, STD_LOGIC_VECTOR

STD_ULOGIC, STD_ULOGIC_VECTRO

BOOLEAN

INTEGER

NATURAL

REAL

SIGNED, UNSIGNED

داده های تعریف شده توسط کاربرINTEGER

ENUMERATED

Page 31: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

داده های از قبل تعریف شده و در کتابخانه ها و بسته های زیر تعریف شده اند.IEEE1164 و IEEE1076این داده ها در استانداردهای

انواع داده نام بسته نام کتابخانه

BIT, BOOLEAN, INTEGRE, REAL STANDARD STD

STD_LOGIC, STD_ULOGIC STD_LOGIC_1164 IEEE

SIGNRD, UNSIGNED STD_LOGIC_ARITH IEEE

STD_LOGIC_VECTOR STD_LOGIC_SIGNED IEEE

STD_LOGIC_VECTOR STD_LOGIC_UNSIGNED IEEE

Page 32: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

’ را دارند(1’ و ‘0 )دو سطح منطقی ‘BIT_VECTOR و BITنوع

Page 33: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)
Page 34: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

STD_LOGIC_VECTOR و STD_LOGICانواع

اس#ت که بیشت#ر این مقادیر فقط ieee1164 مقداره متعل#ق ب#ه اس#تاندارد 8یک س#یستم منطق#ی •برای شبیه سازی استفاده می شوند.

’ قابل سنتز هستند.Z’, ‘1’, ‘0فقط مقادیر ‘•حال#ت های »ضعی#ف« و »قوی« ب#ه ای#ن دلی#ل اس#تفاده شده ان#د ک#ه اگ#ر دو س#یگنال از این نوع •

به یک گره متصل باشند مقادیر نوع قوی تعیین کننده نهایی خواهند بود.

Page 35: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

STD_ULOGIC_VECTOR و STD_ULOGICانواع

مقداره است.9یک سیستم منطقی • نیز اضافه شده است.U’ (Unresolved)‘عالوه بر مقادیر قبلی مقدار •در ای#ن حال#ت بر خالف حال#ت قبل#ی نم#ی توان س#یم های ب#ا مقادی#ر مختل#ف را ب#ه ه#م متصل •

نمود. برای نشان دادن خطای مربوطه از این مقدار استفاده می شود.

داده نوع مقدار حداقل مقدار حداکثرBoolean FALSE TRUE

INTEGER -2147483647 2147483647

NATURAL 0 2147483647

REAL -1.0E38 1.0E38

SIGNED

Page 36: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

است.FALSE و TRUEشامل مقادیر : Booleanنوع

است.2147483647- تا 2147483647شامل اعداد صحیح از : INTEGERنوع

است.2147483647 تا 0شامل اعداد صحیح نامنفی از : NATURALنوع

است. )این نوع داده قابل سنتز نیست.1.0E38 تا 1.0E38شامل اعداد حقیقی از -: REALنوع

Page 37: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)
Page 38: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

داده های تعریف شده توسط کاربر: کاربر امکان تعریف دو نوع داده را دارد.

INTEGERنوع

ENUMERATEDنوع

Page 39: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

;TYPE type_name IS ARRAY (specification) OF data_typeنحوه تعریف نوع جدید داده

;SIGNAL signal_name: type_name [:=initial_value]نحوه استفاده

;1D*1DTYPE row IS ARRAY (7 downto 0) OF std_logicمثال: نحوه تعریف یک آرایه -- 1D ArrayTYPE matrix IS ARRAY (0 to 3) OF row; -- 1D * 1DSIGNAL x: matrix;

;2DTYPE matrix2D IS ARRAY (0 to 3, 7 downto 0) of std_logicمثال: نحوه تعریف یک آرایه -- 2D Array

ARCHITECTURE rtl OF exIS& به معنی پیوند دهی بین داده ها است.عالمت پیوند دهی داده ها: SIGNAL a:std_logic_vetor (5 DOWNTO 0);SIGNAL b, c, d : std_logic_vector(2 DOWNTO 0);BEGIN

B <= ‘0’ & c(1) & d(2);END generic_decoder;

If c = “011”, d = “101” ===> B = “011”

دستور این کاربرد از دیگر نمونه IF c & d = “001100” THENیک

Page 40: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

کتابخانه ها

ذخیره می شود. WORKکتابخانه تعریف می شود به صورت اتوماتیک در VHDLوقتی یک عنصر در کابخانه نام یک فولدر در کامپیوتر نیست. بلکه نام اشاره گری است که در هنگام راه اندازی نرم افزار تعیین می شود.

همیشه در دسترس هستند و نیازی به تعریف مجدد آنها نیست.std, workکتابخانه های در صورت استفاده از کتابخانه دیگر باید در ابتدای برنامه تعریف شوند.

در مورد طرح های بزرگ، امکان استفاده از توابع، مقادیر ثابت، انواع داده و ... در بلوک های مختلف وجود دارد.مقدار ثابت به عنوان مثال می تواند پهنای باس داده باشد.

هر موقع درون بسته این عدد ثابت تغییر کند در کلیه زیر بخش های پروژه به صورت همزمان تغییر می کنند.

ها، انواع داده، ثابت ها و نشانگرها باشد.procedure ها، function( می تواند شامل Packageیک بسته )یک بسته از دو بخش زیر تشکیل شده است.

اعالم بسته•بدنه بسته•

(Packageبسته )

Page 41: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

اگر بخواهیم درون موجودیت، از یک داده جدید استفاده کنیم، باید قبل از تعریف موجودیت، آن داده را درون یک بسته تعریف کرده باشیم.

LIBRARY ieee;USE ieee.std_logic_1164.all;----------------------------------------------------------------------------PACKAGE my_data_types IS

TYPE vector_array IS ARRAY (natural range <>) of std_logic_vector (7 downto 0);END my_data_types;----------------------------------------------------------------------------

بعد از ذخیره کردن این بسته در مسیر جاری، به صورت زیر از آن در برنامه اصلی استفاده می کنیم.

LIBRARY ieee;USE ieee.std_logic_1164.all;USE work.my_data_types.all; -- User-defined package---------------------------------------------------------------------------- entity MUX is

port(I:in vector_array (3 downto 0); S vector_array (1 downto 0); Y: out bit);end MUX;

Page 42: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

ها، ثابت های مورد استفاده در آن بسته نیز می باشد.procedureها، functionبخش اعالم بسته شامل عالوه بر معرفی داده ها، شامل

بخش بدنه بسته بیان کننده رفتار زیر برنامه هایی است که در بخش اعالم معرفی شده اند.PACKAGE my_pack ISFUNCTION minimum (a, b: IN std_logic_vector)RETURN std_logic_vector;CONSTANT max_int: integer := 16#FFFF#;TYPE arithmetic_mode_type IS (signed, unsigned)END my_pack;--------------------------------------------------------------------------------PACKAGE BODY my_pack ISFUNCTION minimum (a, b: IN std_logic_vector)RETURN std_logic_vector;BEGIN IF a < b THEN

RETURN a; ELSE

RETURN b; END IF;END minimum;END my_pack;

Page 43: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

عملگرها

تخصیص•منطقی•ریاضی•رابطه ای•شیفت•تجمیع•

برای تخصیص مقادیر به سیگنال ها، متغیرها و توابع استفاده می شود.- عملگر =< برای تخصیص مقدار به سیگنال به کار می رود.1- عملگر =: برای دادن مقدار اولیه به یک ثابت یا متغیر به کار می رود.2 به کار می رود.OTHERS- عملگر >= برای تخصیص مقدار به تک تک المان های یک بردار و همراه 3

Page 44: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

استفاده می شود.STD_ULOGIC و BIT، STD_LOGICبرای انجام عملیات منطقی روی داده های از نوع عملگرهای منطقی•عملگرهای منطقی:

NOT, AND, OR, NAND, NOR, XOR, XNOR

مثال:Y <= NOT a AND b; -- (a’.b)

Y <= NOT(a AND b); -- (a.b)’

Y <= a NAND b; -- (a.b)’

استفاده می شود.REAL و INTEGER، SIGNED، UNSIGNEDبرای انجام عملیات ریاضی روی داده های از نوع عملگرهای ریاضی•عملگرهای منطقی:

,(توان) ** ,(تقسیم) / ,(ضرب) * ,(تفریق) - ,(جمع) +

MOD (خارج قسمت), REM (باقیمانده), ABS (قدرمطلق)

Page 45: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

عملگرهای رابطه ای یا مقایسه ای•

برای انجام مقایسه بین دو مقدار داده استفاده می شود.عملگرهای منطقی:

(بزرگتر یا مساوی) =< ,(کوچکتر یا مساوی) => ,(بزرگتر) < ,(کوچکتر) > ,(مخالف) =/ ,(مساوی) =

عملگرهای شیفت•

برای انجام شیفت استفاده می شود.sll.مکانهای سمت راست با صفر پر می شوند :srl.مکانهای سمت چپ با صفر پر می شوند :

ARCHITECTURE rtl OF ex3 ISمقدار دهی چند گانهBEGIN

BEGINq1 <= ‘0’;q2 <= ‘0’;q3 <= ‘0’;

END rtl;

ARCHITECTURE rtl2 OF ex3 ISBEGIN

BEGINq1 <= “001”;q2 <= “010”;q3 <= “111”;

END rtl;

Page 46: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

ساختارهای متوالی

• If then else• Case statement• Variable declaration• Loop statement• Return statement• Null statement• Wait statement

ساختارهای موازی

• Process• When else• With select• Signal declaration• Block statement

VHDLانواع ساختارها در

Page 47: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

IFعبارت

از IFی#ک دس#تور ب#ه برقراری شروط، یکی ی#ا چن#د عبارت داخل#ی اس#ت ک#ه بس#ته شام#ل ی#ک عبارت ها اجرا می شود.

IF SEL = ‘0’ THENC <= A;

ELSEC <= B;

END IF;

ENTITY ex_if ISPORT (a, b : IN INTEGER; c : OUT BOOLEAN);

END;ARCHITECTURE rtl OF ex_if ISBEGIN

PROCESS (a,b)BEGIN

IF a > b THENc <= TRUE;

ELSEc <= FALSE;

END IF;END PROCESS;

END rtl;

Page 48: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

نی#ز ب#ه ص#ورت موازی اجرا می VHDLمجددا تاکی#د م#ی گردد ک#ه همانن#د ی#ک س#خت افزار ک#ه ذات#ا موازی اس#ت، ک#د شود.

ARCHITECTURE example of ex IS معنی ندارد.VHDLدر نتیجه ترتیب خطوط در BEGIN

a <= b;b <= c;

END my_arch ;

ARCHITECTURE example of ex IS BEGIN

b <= c;a <= b;

END my_arch ;

در س#مت راس#ت قرار دارد به C تغیی#ر م#ی کن#د، تمام خطوط#ی ک#ه cمثال فوق ب#ه ای#ن معن#ا اس#ت ک#ه وقت#ی ک#ه WHENENTITY ex ISعبارت طور همزمان اجرا می شوند.

PORT (a, b, c: IN std_logic; data: IN std_logic_vector (1 downto 0); q: OUT std_logic);

END ex;-----------------------------------ARCHITECTURE rtl OF ex ISBEGIN

q <= a WHEN data = "00" else b WHEN data = "11" else c;

END rtl;

abc q

ex

Data [1 0]

Page 49: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

طراحی یک مدار مقایسه کننده

library IEEE;use IEEE.STD_LOGIC_1164.ALL;entity Compare_mine is Port ( A : in STD_LOGIC_VECTOR (3 downto 0); B : in STD_LOGIC_VECTOR (3 downto 0); Y0 : out STD_LOGIC; Y1 : out STD_LOGIC; Y2 : out STD_LOGIC; Y3 : out STD_LOGIC; Y4 : out STD_LOGIC; Y5 : out STD_LOGIC);end Compare_mine;

architecture Behavioral of Compare_mine isbegin

Y0 <= '1' when A = B else '0';Y1 <= '1' when A /= B else '0';Y2 <= '1' when A < B else '0';Y3 <= '1' when A <= B else '0';Y4 <= '1' when A > B else '0'; Y5 <= '1' when A >= B else '0';

end Behavioral;

Page 50: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

8*3طراحی یک دیکودر

library IEEE;use IEEE.STD_LOGIC_1164.ALL;entity Decoder3_8_mine is Port ( D : in STD_LOGIC_VECTOR (2 downto 0); Y : out STD_LOGIC_VECTOR (7 downto 0));end Decoder3_8_mine;

architecture Behavioral of Decoder3_8_mine isbegin

Y <= "00000001" when D = "000" else"00000010" when D = "001" else"00000100" when D = "010" else"00001000" when D = "011" else"00010000" when D = "100" else"00100000" when D = "101" else "01000000" when D = "110" else "10000000" when D = "111" else"00000000" ;

end Behavioral;

Page 51: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

8*1طراحی یک مالتی پلکسر

library IEEE;use IEEE.STD_LOGIC_1164.ALL;entity MUX81_mine is Port ( D : in STD_LOGIC_VECTOR (7 downto 0); A : in STD_LOGIC_VECTOR (2 downto 0); Y : out STD_LOGIC);end MUX81_mine;

architecture Behavioral of MUX81_mine isbegin

Y <= D(0) when A = "000" elseD(1) when A = "001" elseD(2) when A = "010" elseD(3) when A = "011" elseD(4) when A = "100" elseD(5) when A = "101" elseD(6) when A = "110" else D(7) when A = "111" else'Z' ;

end Behavioral;

Page 52: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

WITHعبارت

پیاداه س#ازی نمایی#م می WHEN ELSEدر ص#ورتی ک#ه در برنام#ه مجبور باشی#م حالتهای زیادی را ب#ا اس#تفاده از استفاده کنیم.WITHتوانیم برای راحتی از

می نویسیم.WITHهمان مثال قبل را این بار با استفاده از دستور ENTITY ex IS

PORT (a, b, c: IN std_logic; data: IN std_logic; q: OUT std_logic);

END ex;-----------------------------------ARCHITECTURE rtl OF ex ISBEGIN

WITH data SELECTq <= a WHEN "00“, b WHEN "11“, c WHEN OTHERS;

END rtl;

Page 53: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

CASEعبارت

استفاده از این دستور در اغلب موارد به درک بهتر برنامه کمک می کند.

ENTITY case_mux ISPORT (a, b, sel : IN BIT; c : OUT BIT);

END;ARCHITECTURE rtl OF case_mux ISBEGIN

case sel ISWHEN ‘0’ => c <= a;WHEN ‘1’ => c <= b;

END case;END rtl;

دارای مقادیر و حالت های caseاگر متغیر بسیاری باشد، معین کردن هر حالت کار

دشواری خواهد بود. در این حالت از کلمه “OTHERS.استفاده می کنیم ”

ENTITY case_ex2 ISPORT (a : IN INTEGER RANGE 0 to 30; c : OUT INTEGER RANGE 0 to 6);

END;ARCHITECTURE rtl OF ex_case2 ISBEGIN

case a ISWHEN 0 => b <= 3;WHEN 1 | 2 => b <= 2;WHEN OTHERS’ => b <= 0;

END case;END rtl;

Page 54: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

FOR LOOP (WHILE LOOP)حلقه

ENTITY ex ISPORT (a, b, c: IN std_logic_vector (4 downto 0); q : OUT std_logic_vector (4 downto 0));

END ex;ARCHITECTURE rtl OF ex ISBEGIN

for I in 0 to 4 LOOP -- (WHILE I <= 4 LOOP) IF a(i) = ‘1’ THEN

q(i) <= b(i); ELSE

q(i) <= c(i); END IF;END LOOP;

END;

بوده و برای تکرار استفاده می شود.For معادل دستور ترتیبیGenerateدستور همزمان

OK: For I In Range 0 to 7 GENERATEخط شامل این دستور باید برچسب داشته باشد.output(i) <= ‘1’ WHEN (a(i) AND b(i))=‘1’ ELSE ‘0’;

END GENERATE;

Page 55: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

جهت آگاهی از خواص داده ها می توان به صورت زیر عمل نمودخاصیت های داده ها:

d‘LOW.مقدار پایینی اندیس ارایه را بر می گرداند :d‘HIGH.مقدار باالیی اندیس ارایه را بر می گرداند :d‘LEFT.سمت چپ ترین اندیس ارایه را بر می گرداند :

d‘RIGHT.سمت راست ترین اندیس ارایه را بر می گرداند :d‘LENGTH.اندازه یا طول بردار را بر می گرداند :d‘RANGE.محدوده بردار را برمی گرداند :

d‘REVERSE_RANGE.محدوده بردار را به صورت معکوس برمی گرداند :

Page 56: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

جهت آگاهی از خواص سیگنال ها می توان به صورت زیر عمل نمود. )فقط دو خاصیت اول قابل سنتز هستند(خاصیت های سیگنال ها:

s‘EVENT هرگاه سیگنال :s‘ می شود.1 تغییر کند )رویدادی داشته باشد( این خاصیت ’s‘STABLE هرگاه سیگنال :s‘ می شود.1 تغییر نکند )رویدادی نداشته باشد( این خاصیت ’s‘ACTIVE هرگاه :s = ‘1.باشد مقدار درست را بر می گرداند ’

s‘LAST_EVENT مقدار زمان سپری شده از آخرین تغییر سیگنال :s.را بر می گرداند s‘LAST_ACTIVE مقدار زمان سپری شده از آخرین دفعه ای که :s = ‘1.بوده را بر می گرداند ’s‘LAST_VALUE آخرین مقدار :s.قبل از آخرین تغییر را برمی گرداند

Page 57: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

یک ب#ه را ک#ه چندی#ن مقدار دارد نی#ز وجود امکان ای#ن سیگنال بدهیم.

)تاخیرها باید به ترتیب صعودی باشند(

C <= ‘1’, ‘0’ AFTER 10 ns, b AFTER 20 ns;

زمان مقدار

0 ‘1’

10 ‘0’

20 b -- b مقدارسیگنال

VHDLانواع تاخیرها در

تاخیر درونی1.

تاخیر انتقالی2.در تاخی#ر درون#ی اگ#ر پ#س از زمان تعیی#ن شده، هنوز س#یگنال وجود داش#ت آ#ن س#یگنال در خروج#ی ظاه#ر می

شود. )برای حذف جهش های نویزی کاربرد دارد(در تاخیر انتقالی، سیگنال مورد نظر پس از تاخیر تعیین شده به خروجی منتقل می شود.

b1 <= a AFTER 10 ns;

b2 < a TRANSPORT AFTER 10 ns;

A B

10 20 30 40 50 60

A

ns

B1

B2

Page 58: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

(Processعبارت فرآیند )

اگر در بدنه یک کد، چندین پروسس تعریف شود همه آنها به صورت همزمان اجرا می شوند.یک پروسس می تواند در حالت اجرا یا انتظار باشد.

Executing

Waiting

بدنه فرآیند WAIT استفاده شود نیازی به لیست حساسیت نبوده و در صورت تحقق شرط WAITدر صورتی که در فرآیند از دستور ’wait until clk = ‘1اجرا می شود. مثال:

پروسس بعد از هر بار اجرا مجددا به حالت انتظار می رود.Sync_process: PROCESSBEGIN

WAIT UNTIL clk = ‘0’;c_out <= NOT (a_in AND b_in);d_out <= NOT b_in AFTER 10 ns;

END PROCESS sync_process;

فرآین#د، ی#ک مجموع#ه دس#تور ب#ا قال#ب مشخص#ی اس#ت ک#ه دارای ی#ک لیس#ت حس#اسیت بوده و دستورات مذکور فقط زمانی اجرا می شود که یکی از سیگنال های موجود در لیست حساسیت تغییر کند.

Page 59: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

دو نوع پروسس وجود دارد.VHDLدر - پروسس ترکیبی1- پروسس ترتیبی )پالسی(2

پروسس ترکیبی

)یعن#ی آنهای#ی ک#ه در س#مت راس#ت عالمت در ی#ک پروس#س ترکیب#ی تمام س#یگنال های ورودی داخ#######ل )) ک#######ه های#######ی س#######یگنال ی#######ا )) =<

باید در لیست حساسیت پروسس وارد شوند. قرار دارند( if/caseعالمت

Sync_process: PROCESS (a_in, b_in)BEGIN

c_out <= NOT (a_in AND b_in);d_out <= NOT b_in AFTER 10 ns;

END PROCESS sync_process;

در داخ#ل پرانت#ز، لیس#ت س#یگنال های#ی ک#ه پروس#س با آنها شروع می شود قرار دارد.

مقدار قبلی c_out از لیس#ت حذف شود، a_inاگ#ر مثال تغیی#ر نکند، b_inخودش را حفظ م#ی کن#د و تا زمانی ک#ه

مقدار جدید به خودش نمی گیرد.

Page 60: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

پروسس ترتیبی )پالسی(

پروس#س های پالس#ی همزمان هس#تند و م#ی توان چن#د ت#ا از ای#ن پروس#س ه#ا را ب#ا ی#ک پالس ساعت یکسان به هم متصل کرد.

example: PROCESSBEGIN

WAIT UNTIL clk = ‘1’;d_out <= d_in;

END PROCESS example;

چنانچ#ه در ی#ک پروس#س پالس#ی مقدار ده#ی ب#ه س#یگنال انجام نشود مقدار قبل#ی خود را حفظ PROCESSمی کند.

BEGINWAIT UNTIL clk = ‘1’;IF en = ‘1’ THEN

q <= d;END IF;

END PROCESS;

Page 61: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

waitعبارت

چهار روش گوناگون برای بیان لیست حساسیت ها در یک فرآیند وجود دارد.1. Process (a,b)

2. Wait until a=1;

3. Wait on a,b;

4. Wait for 10 ns;

در انتهای پروس#س آورده شود، موارد اول و س#وم یک#ی می wait on a,bدر ص#ورتی ک#ه عبارت PROCESS (a)شوند.

BEGINc1 <= NOT a;

END PROCESS;

PROCESSBEGIN

c2 <= NOT a;WAIT ON a;

END PROCESS;

PROCESSBEGIN

WAIT UNTIL a = ‘1’;c4 <= NOT a;

END PROCESS;

PROCESSBEGIN

c5 <= NOT a;WAIT UNTIL a = ‘1’ FOR 10 ns;

END PROCESS;

Page 62: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)
Page 63: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

با ورودی ریست سنکرونDFFمثال: یک

--------------------------------------------LIBRARY ieee;USE ieee.std_logic_1164.all;--------------------------------------------ENTITY dff IS

port(d, clk, rst: IN STD_LOGIC; q: OUT STD_LOGIC);

END dff;--------------------------------------------ARCHITECTURE behavior OF dff ISBEGIN

sve: PROCESS(rst,clk)BEGIN

IF (rst='1') THENq <= '0';

ELSIF (clk'EVENT AND clk='1') THENq <= d;

END IF;END PROCESS sve;

END behavior;--------------------------------------------

Page 64: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

ب#ه همراه گیت DFFمثال: طراح#ی ی#ک NAND

ENTITY example ISPORT (a, b, clk : IN BIT; q: OUT BIT);

END example ;ARCHITECTURE example of example ISSIGNAL temp : BIT;BEGIN

temp <= a nand b;PROCESS (clk)BEGIN

IF (clk ‘EVENT and clk = ‘1’) then q <= temp;END IF;

END PROCESS;END example ;

در مثال های قب#ل، هی#چ گونه تاخیری برای اجزای مدار وجود ندارد.

دستور از خواهی#م م#ی ایجاد AFTERحال برای تاخیر استفاده کنیم.

ARCHITECTURE my_arch of nand_gate IS

BEGIN

x <= a NAND b AFTER 10 ns; -- Component Delay = 10 ns

END my_arch ;

Page 65: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

یک رفتاری مدل از مثال###ی Multiplexer در ص#ورتی ک#ه در برنام#ه مجبور باشی#م حالتهای زیادی را ب#ا اس#تفاده ازWHEN ELSE پیاداه س#ازی نمایی#م می

استفاده کنیم.WITHتوانیم برای راحتی از می نویسیم.WITHهمان مثال قبل را این بار با استفاده از دستور

ENTITY mux2 IS PORT (sel_0, a, b: IN std_logic; q: OUT std_logic);

END mux2;-----------------------------------ARCHITECTURE mux2_with OF mux2 ISBEGIN

WITH sel_0 SELECTc <= a AFTER 10 ns WHEN ‘0’, b AFTER 10 ns WHEN OTHERS;

END mux2_with;(genericپارامترهای عمومی )

ای#ن پارامتره#ا معموال برای تعری#ف پارامترهای#ی ک#ه در بخش های مختلف برنامه استفاده می شود کاربرد دارند.

می تعری#ف ه#ا پورت تعری#ف از قب#ل و موجودی#ت بخ#ش در شوند.

ENTITY nand_gate ISGENERIC (delay: time:=10ns);PORT (a, b: IN BIT; x: OUT BIT);

END nand_gate;ARCHITECTURE my_arch of nand_gate IS BEGIN

x <= a NAND b AFTER delay;END my_arch ;

Page 66: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

LIBRARY ieee;USE ieee.std_logic_1164.all;--------------------------------------------------------ENTITY decoder IS

PORT( ena : IN std_logic; sel : IN std_logic_vector (2 downto 0); x : OUT std_logic_vector (7 downto 0));

END decoder;--------------------------------------------------------ARCHITECTURE generic_decoder OF decoder ISBEGIN

PROCESS (ena, sel)VARIABLE temp1: std_logic_vector (x'HIGH downto 0);VARIABLE temp2: integer RANGE 0 to x'HIGH;BEGIN

temp1 := (OTHERS => '1');temp2 := 0;IF (ena='1') then

FOR i in sel'RANGE LOOP -- sel range is 2 downto 0IF (sel(i)='1') THEN -- bin to integer conversion

temp2 := 2*temp2+1;ELSE

temp2 := 2*temp2;END IF;

END LOOP;temp1(temp2) := '0';

END IF;x <= temp1;

END Process;END generic_decoder;

مثال: طراحی یک دیکودر

ena Sel x

0 00 1111

1 00011011

1110110110110111

Page 67: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

RAMمثال: پیاده سازی یک

LIBRARY ieee;USE ieee.std_logic_1164.all;--------------------------------------------------------GENERIC ( bits : INTEGER := 8;

words : INTEGER := 16);ENTITY ram IS

PORT( wr_ena, clk: IN std_logic; addr: IN INTEGER RANGE 0 to words-1; data_in: IN std_logic_vector (bits-1 downto 0)); data_out: OUT std_logic_vector (bits-1 downto 0));

END ram;--------------------------------------------------------ARCHITECTURE ram OF ram ISTYPE vector_array IS ARRAY (0 TO words-1) OF std_logic_vector (bits-1 downto 0);SIGNAL memory: vector_array;BEGIN

PROCESS (clk, wr_ena)BEGIN

IF (wr_ena='1') thenIF (clk’EVENT AND clk = ‘1’) THEN

memory(addr) <= data_in;END IF;

ELSEIF (wr_ena=‘0') thenIF (clk’EVENT AND clk = ‘1’) THEN

data_out<= memory(addr);END IF;

END IF;END Process;

END ram;

Page 68: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

توصیف ساختاری یک سخت افزار

در روش توصیف ساختاری، ابتدا اجزای آن سیستم لیست شده و سپس اتصاالت بین آنها مشخص می شوند.

این روش معرفی چون به سخت افزار واقعی نزدیک تر است، فهم آن راحت تر می باشد.

برای توصیف این روش از یک مثال استفاده می کنیم.می خواهیم یک مقایسه کننده یک بیتی بسازیم. این مقایسه کننده دو بیت ورودی را با هم

پایه خروجی را یک می کند.3مقایسه کرده و بسته به پایه های کنترل یکی از

AB

>=<

A>B

A=B

A<B

Comparator

Page 69: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)
Page 70: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

ی که در این طرح به کار رفته است را تعریف کنیم.NANDابتدا می خواهیم گیت های

البته این گیتها می توانند داخل طرح ما تعریف شده و یا یکی از قطعات موجود در کتابخانه های پیش فرض باشند.

بعد از تعریف گیتهای مورد نیاز به شیوه ای مشابه همان که ترانزیستورها را در مدارات به هم وصل می کنیم اتصاالت این گیتها را در برنامه برقرار می کنیم.

مدل معکوس کننده

o1i1inv

عناصر مورد استفاده در این مدل

Input port

Entity name

Output port Bidirectionalport

Buffer port

Page 71: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

برای این VHDLکد معکوس کننده

ENTITY inv IS

PORT ( I1 : IN BIT; O1 : OUT BIT);

END inv;

ARCHTECTURE single_delay OF inv IS

BEGIN

o1 <= NOT I1 AFTER 4 ns;

END single_delay;

TIME یک نوع داده از پیش تعریف شده است و ثانیه( می باشد.10-15 فمتو ثانیه )1حداقل آن

دو NANDمدل گیت ورودی

برای این VHDLکد معکوس کننده

o1i1nand2

i2

ENTITY nand2 IS

PORT ( I1, I2 : IN BIT; O1 : OUT BIT);

END inv;

ARCHTECTURE single_delay OF nand2 IS

BEGIN

o1 <= I1 nand I2 AFTER 5 ns;

END single_delay;

Page 72: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

سه NANDمدل گیت ورودی

برای این VHDLکد ENTITY nand3 ISمعکوس کننده

PORT ( I1, I2 : IN BIT; O1 : OUT BIT);

END inv;

ARCHTECTURE single_delay OF nand3 IS

BEGIN

o1 <= NOT (I1 and I2 and I3) AFTER 5 ns;

END single_delay;o1i1

nand3

i2i3

برقراری اتصال میان می توان عملکرد یک مدار را به وسیله اتصال اجزای کوچکتر آن توصیف کرد.VHDLدر گیت ها

ابتدا به معرفی مجدد منطق مداری که می خواهیم طراحی کنیم می پردازیم.

Page 73: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

این مدار دو ورودی اصلی و سه ورودی کنترل دارد. بوده و ورودی کنترل < B مساوی A باشد یا B بزرگتر از A زمانی یک است که یا A>Bخروجی

یک باشد. بوده و ورودی = یک باشد.B مساوی A زمانی یک است که A=Bخروجی تابع جبری برای این مدار به صورت زیر است. عکس حالت اول است.A<Bخروجی

a_gt_b = a.gt + b’.gt + a.b‘

a_eq_b = a.b.eq + a’.b’.eq

a_lt_b = a’.lt + b.lt + a’.b

Page 74: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

از • استفاده ب##ا مدار ای##ن ساخته خود کوچکت#ر اجزای

می شود.اسامی تکراری برای ورودی •

ای#ن مدار به و خروج#ی های کار رفته است.

a_gt_bgt

Bit_comparator

eqlt a_lt_b

a_eq_b

ab

o1i1 nand3

i2i3

o1i1 nand2i2

o1i1inv

o1i1 nand2i2

o1i1 nand2i2

o1i1 nand3

i2i3

o1i1 nand2i2

o1i1 nand2i2

o1i1 nand2i2

o1i1inv

o1i1 nand3

i2i3

o1i1 nand3

i2i3

o1i1 nand2i2

a_gt_b

gt

eq

lt

a_lt_b

a_eq_b

a

b

Page 75: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

ENTITY bit_comparator IS

PORt ( a, b,

gt,

eq,

lt : IN BIT;

a_gt_b,

a_eq_b,

a_lt_b : OUT BIT);

END bit_comparator

ARCHITECTURE gate_level OF bit_comparator IS

COMPONENT n1 PORT (i1 : IN BIT; o1 : OUT BIT); END COMPONENT;

COMPONENT n2 PORT (i1 , i2 : IN BIT; o1 : OUT BIT); END COMPONENT;

COMPONENT n3 PORT (i1 , i2 , i3 : IN BIT; o1 : OUT BIT); END COMPONENT;

FOR ALL: n1 USE ENTITY WORK.inv (single_delay);

FOR ALL: n2 USE ENTITY WORK.nand2 (single_delay);

FOR ALL: n3 USE ENTITY WORK.nand3 (single_delay);

-- Intermediate signals

SIGNAL im1, im2, im3, im4, im5, im6, im7, im8, im9, im10: BIT;

BEGIN

-- a_gt_b output

G0: n1 PORT Map (a, im1);

G1: n1 PORT Map (b, im2);

G2: n2 PORT Map (a, im2, im3);

G3: n2 PORT Map (a, gt, im4);

G4: n2 PORT Map (im2, gt, im5);

G5: n3 PORT Map (im3, im4, im5, a_gt_b);

Page 76: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

قبل صفحه از ادامه-- a_eq_b output

G6: n3 PORT Map (im1, im2, eq, im6);

G7: n3 PORT Map (a, b, eq, im7);

G8: n2 PORT Map (im6, im7, a_eq_b);

-- a_lt_b

G9: n2 PORT Map (im1, b, im8);

G10: n2 PORT Map (im1, lt, im9);

G11: n2 PORT Map (b, lt, im10);

G12: n3 PORT Map (im8, im9, im10, a_lt_b);

END gate_level;

این روش برای طرح های بزرگ و هنگامی که طراحان مختل#ف بر روی یک طرح کار می کنند مناسب تر است.

معرف#ی می را اس#تفاده مورد اجزای ابتدا )معماری س#اختاری قطع#ه(، روش ای#ن در کنیم.

مشخ#ص می VHDLس#پس ب#ا مشخ#ص کردن مرج#ع، در واق#ع مح#ل تعری#ف ای#ن جزء را برای کنیم.

کردن پورت ها به اتصال اجزای مختلف طبق نقشه مدار می پردازیم.MAPدر نهایت با

Page 77: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

Test Bench

معموال الزم اس#ت ت#ا از صحت FPGA و قب#ل از پیاده س#ازی آ#ن بر روی VHDLبع#د از نوشت#ن ی#ک ک#د عملکرد آن در شرایط مختلف ورودی اطمینان حاصل کنیم.

یک#ی از روش های تایی#د درس#تی طرح، نوشت#ن برنام#ه ی#ک مدل آزمایش#ی برای تس#ت و بررسی خروجی های ناشی از کد مورد نظر است.

این کار ب#ه معنای طراح#ی ی#ک محی#ط آزمایش#ی اس#ت که ه#م س#یگنال های ورودی را در اختیار می گذارد و هم سیگنال های خروجی طرح را مورد آزمایش قرار می دهد.

از یکی م#ی شود. انجام افزار شبی#ه س#از نرم ی#ک در ه#ا و خروج#ی ورودی بررس#ی وضعی#ت می باشد. ModelSimمعروفترین نرم افزار های شبیه سازی

مزایای شبیه سازی: بیانگ#ر سیگنال های 1. ک#ه های#ی توس#ط مدل ترکیب#ی اجزای محرک های

حقیقی هستند تولید می شوند.نیازی به تکنولوژی و اجزای جانبی دیگری ندارد.2.سرعت شبیه سازی باالست3.

Page 78: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

معایب شبیه سازی: به هر حال کار اضافی است و زمانبر است.1.چون خود نوشت#ن ای#ن برنام#ه تس#ت ه#م توس#ط خود طراح نوشت#ه م#ی شود ممک#ن است 2.

در حالت کلی، محیط آزمایش از دو بخش تشکیل می شود. اشتباهات مشابهی تکرار شود.بخش تولید سیگنال های ورودی و ارتباط آن به مدار مورد نظر1.چک کردن سیگنال های خارج شده از سیستم2.

: چگونگی تولید سیگنال های ورودی1بخش

In_model <= ‘1’ AFTER 5 ns,

‘0’ AFTER 100 ns,

‘1’ AFTER 200 ns,

‘0’ AFTER 300 ns + 4 ns;

Clk <= NOT clk AFTER 50 ns; نانو ثانیه عکس می شود.50 بعد از هر clkدر این مثال، سیگنال استفاده شود ممکن است مشکلی به صورت زیر std_logicاگر در تعریف این س#یگنال از نوع

کلی#ه س#یگنال ه#ا دارای مقدار اولی#ه پی#ش فرض#ی معادل س#مت چ#پ ترین ارزش در VHDLدر به وجود آید.تعریف نوع داده اند.

’ خواه#د بود. برای حل U مقدار اولی#ه ‘std_logic مقدار اولی#ه ص#فر و ل#ی در حال#ت Bitدر حال#ت ’SIGNAL clk: STD_LOGIC := ‘0این مشکل باید در تعریف سیگنال مقدار اولیه مورد نظر را نیز اعمال کنیم.

Page 79: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

waitچنانچ#ه المان تس#ت شونده ترتیب#ی باش#د، از دستور می اس#تفاده ورودی ب#ه ه#ا س#یگنال دادن نس#بت برای

شود.

PROCESS

BEGIN

in_s1 <= ‘1’;

in_s2 <= ‘0’;

WAIT UNTIL reset = ‘1’;

WAIT UNTIL clk= ‘1’;

in_s1 <= ‘0’;

in_s2 <= ‘1’;

ی#ک روش دیگ#ر برای انتظار لب#ه پال#س س#اعت، تولی#د زمان دوره تناوب آ#ن اس#ت. ب#ا این روش مدل ندارد.Clkرفتاری دیگر نیازی به سیگنال

CONSTANT period : TIME := 50 ns;

WAIT FOR period;

البت#ه امکان انتظار ب#ه اندازه چندی#ن پال#س س#اعت هم وجود دارد.

WAIT FOR 2 * period;

In_vect <= “00” AFTER 5 ns,

“01” AFTER 100 ns,

“10” AFTER 200 ns,

“11” AFTER 300 ns + 4 ns;

Page 80: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

محیط های آزمایش به سه کالس تقسیم بندی می شوند.و م#ی شوند تولی#د تنه#ا س#یگنال های ورودی مدل اس#ت، تری#ن کالس ک#ه س#اده اول در کالس س#یگنال های خروج#ی ب#ه ص#ورت دس#تی و در محی#ط شبی#ه س#از مورد بررس#ی قرار م#ی گیرند. این

روش ساده و در عین حال برای مدارهای ساده بسیار مفید است.البته در مدارهای با تعداد زیاد ورودی و خروجی عمال کاربردی ندارد.

نه تنها س#یگنال های ورودی تولی#د م#ی شوند بلکه درس#تی ارزش س#یگنال های خروجی 2در کالس هم بررسی می شوند.

تحلیل زمانی هم در برنامه صورت می گیرد.3در کالس LIBRARY ieee;USE ieee.std_logic_1164.ALL;ENTITY test_my_comp ISPORT (d_out, en, overflow : OUT std_logic; q: OUT std_logic_vector (2 DOWNTO 0));END;ARCHITECTURE testbench OF test_my_comp ISCOMPONENT my_compPORT (clk, resetn, d_in : IN std_logic;

a, b: IN std_logic_vector (2 DOENTO 0);d_out, en: OUT std_logic;overflow: OUT std_logic;q: OUT std_logic_vector (2 DOWNTO 0);

END component;

D_out

D_in

My_comp

ab

overflowen

clkresetn

q

Test_My_comp

Page 81: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

SIGNAL clk: std_logic:= ‘0’;SIGNAL resetn: std_logic:= ‘0’;SIGNAL d_in: std_logic:= ‘0’;SIGNAL a, b: std_logic_vector (2 DOENTO 0);FOR U1: my_comp USE ENTITY work.my_comp (rtl);BEGIN

U1: my_comp PORT MAP (clk, resetn, d_in, a, b, d_out, en, overflow, q);clk <= NOT clk AFTER 50 ns;resetn <= ‘1’ AFTER 125 ns;

a <= “000”,“010” AFTER 125 ns,“100” AFTER 175 ns;

b <= “000”,“100” AFTER 125 ns,“011” AFTER 175 ns;

PROCESSBEGIN

d_in <= ‘0’;WAIT UNTIL resetn = ‘1’;d_in <= ‘1’;WAIT UNTIL clk = ‘1’;d_in <= ‘0’ AFTER 10 ns;WAIT;

END PROCESS;END;

Page 82: آرایه های دروازه ای قابل برنامه ریزی میدانی Field Programmable Gate Arrays (FPGAs)

بیت#ی بس#ازید. ای#ن جم#ع کننده بای#د دو عدد چهار بیت#ی دودوی#ی را به 4: ی#ک جم#ع کننده 1تمری#ن عنوان ورودی دریافت کرده و حاص جمع آن را در خروجی نمایش دهد.

خروجی دارد. مدار مورد نظر باید تعداد صفرهای داده 3 ورودی و 8: ماژولی بسازید که 2تمرین ورودی را بشمارد و تعداد صفرها را به صورت دودویی در خروجی خود نشان دهد.

بیتی شامل ورودی ریست آسنکرون طراحی کنید.4: یک شیفت رجیستر 3تمرین

پایی#ن رونده کالک طراح#ی کنید. این BCD: ی#ک مدار شمارنده 4تمری#ن لب#ه های باال رونده و ب#ا پایین رونده 4 ورودی کالک و 1مدار، ی#ا باال رونده لب#ه بار ب#ا ه#ر خروج#ی برای شمردن دارد.

کالک، خروجی یک واحد افزایش می یابد.