پایان نامه FPGA & CPLD زمان برنامه نويسي VHDL
فهرست محتوا
مقدمه:
براي آنكه بتوان بخش بزرگي از يك طرح را داخل يك تراشه منتقل نمود و از زمان و هزينه مونتاژ و راهاندازي و نگهداري طرح كاست، ساخت تراشههاي قابل برنامه ريزي مطرح شد از جمله مزاياي استفاده از تراشههاي قابل برنامه ريزي در طراحي پروژهها عبارتند از :
- كاهش ابعاد و حجم
- كاهش زمان و هزينه طرح
- افزايش اطمينان از سيستم
- حفاظت از طرح
- حفاظت در برابر نويز و اغتشاش
FPGA ها ابزار سخت افزاري قابل برنامه ريزي ارزان قيمت را جايگزين كاربردهاي فعلي كنترلرهاي داخلي (Embedded Controllers) نمودهاند. به همين دليل بازار آنها رشد گستردهاي داشته است. علاوه بر اين به جهت ارائه راه حلهاي مناسب براي IC هاي سفارشي با عملكرد بالا موفقيت زيادي به دست آوردهاند. در واقع به نظر ميرسد كه FPGAها با توجه به ارزان بودن، نسل فعلي تراشههاي ASIC را از رده خارج كنند. همين مزيت هزينه و عملكرد توجه زيادي را درحوزه تحقيقات به خود معطوف كرده است.
ويژگي استفاده از قطعات منطقي قابل برنامه ريزي (PLD) و FPGA، ارزان بودن قيمت و سرعت ورود آنها به بازار است.
قطعات ASIC، هزينههاي توسعه مهندسي غير قابل برگشت بالاتري دارند و در نتيجه اغلب، قيمت اين محصولات بالاتر است، اما اساساً كارايي بالاتري دارند. اين شيوههاي مختلف طراحي محيطهايي را با مجموعهاي از متدولوژي و ابزاهاي مختلف CAD پديد ميآورند.
در طول يك دهه گذشته، انواع مختلفي از سخت افزارهاي قابل برنامه ريزي به سرعت پيشرفت كردهاند. اين قطعات نامهاي مختلفي دارند مثل سخت افزار قابل آرايش مجدد، سخت افزار قابل آرايش، سخت افزار قابل برنامه ريزي مجدد.
ايده اصلي و زير بنايي معماري FPGA و CPLD بسيار ساده است. به طوري كلي ميتوان مدارهاي تركيبي و ترتيبي را مستقيماً روي بستر سيليكون ايجاد كرد. تراشههاي ASIC با اينكه كارايي بالايي دارند اما تنها ميتوانند يك نوع عمليات را انجام دهند.
از آنجايي كه امكان توزيع هزينه توسعه بين چند كاربر وجود ندارد، قيمت ASIC ها معمولاً بيش از سيستمهاي مبتني بر ريز پردازنده معمولي ميشود.
تكنولوژي تراشههاي قابل برنامهريزي
قابليت برنامه ريزي شدن مدارات مختلف و اتصالات متفاوت بر روي PLD به دليل سوئيچهاي قابل برنامه ريزي است كه در اين تراشه وجود دارد، اين سوئيچها ميبايست علاوه بر اشغال فضاي بسيار كم داراي كمترين تأخير زماني باشند بطور كلي سوئيچهاي قابل برنامه ريزي در PLD با استفاده از سه نوع تكنولوژي قابل پياده سازي است.
1-استفاده از Anti – Fuse
2-استفاده از سلولهاي حافظه موقت Sram
3-استفاده از گيتهاي شناور EEPROM يا EPROM
Anti – Fuse
خصوصيت اصلي Anti – Fuseها تنها يك بار قابليت برنامهريزي بودن، اشغال فضاي كم و بالا بودن فركانس كاري، به دليل پايين بودن اثر مقاومتي و ظرفيت خازني آنها است.
عيب اصلي اين روش نداشتن قابليت برنامه ريزي مجدد است و زماني كه يك بار برنامهريزي گردد ديگر به حالت اوليه برنميگردد و مزيت اصلي آن فركانس كاري بالا و اشغال فضاي كم آن است اين نوع PLDها نسبت به انواع ديگر PLDها نسبتاً گرانتر هستند.
SRAM
در روش SRAM از سلولهاي حافظه به دو طريق استفاده ميشود، در روش اول از يك سلول حافظه براي كنترل روشن يا خاموش شدن يك ترانزيستور استفاده ميگردد كه در اين حالت خروجي سلول حافظه به بيس ترانزيستور يا گيت فت متصل مي شود، با روشن يا خاموش شدن ترانزيستور يك مسير وصل يا قطع ميشود. در روش دوم سلول حافظه به وروديهاي انتخاب مالتي پلكسر وصل ميشود. در اين حالت با صفر يا يك شدن سلول حافظه مسير خطوط عوض ميشود، مهمترين عيب اين روش پاك شدن برنامه ريزي با قطع تغذيه ميباشد، تراشههايي كه با اين روش برنامه ريزي ميگردند، ميبايست با استفاده از يك سيستم جانبي با هر بار وصل شدن تغذيه تراشه برنامه ريزي گردد، اين روش نسبت به روش Anti – Fuse فضاي بيشتري اشغال ميكند و تأخير زماني نيز بيشتر است.
روش برنامه ريزي EEPROM يا EPROM
مهمترين مزيت اين روش پاك نشدن برنامه ريزي با قطع برق مهمترين عيب آن اشغال فضاي زياد اين نوع ساختار سوئيچ ميباشد.
تقسيم بندي PLDها
PLDها شامل قطعات كم ظرفيت و پرظرفيت ميباشند. PLDهاي كم ظرفيت (ساده ) معمولاً كمتر از 600 گيت قابل استفاده دارند و شامل محصولاتي چون PALها و GALها ميشوند.
PLDهاي ساده شامل سوئيچهاي EEPROM يا EPROM و Anti – Fuse ميباشند.
(High – Capacity – PLD) HCPLD بيشتر از 600 گيت قابل استفاده دارند و شامل CPLD و FPGA ميشوند.
FPGAها ساختمان اتصالات داخلي گسسته دارند، در حاليكه CPLDها داراي اتصالات داخلي پيوسته ميباشند.
در ساخت HCPLD ها از تكنولوژي EEPROM , EPROM , Sram و Anti – Fuse استفاده شده است.
انواع تراشه هاي برنامه ريزي
(Programable read only memoey) PRom
اولين تراشههاي قابل برنامهريزي كه به بازار عرضه شد حافظه فقط خواندني PRom بود، در اين تراشه خطوط آدرس بعنوان ورودي و خطوط ديتا به عنوان خروجي تلقي ميشوند.
PRom شامل دستهاي از گيتهاي and غير قابل برنامه ريزي و يك آرايه OR قابل برنامه ريزي است. PRom در حد يك حافظه است و قابليت برنامهريزي يك مدار منطقي را ندارد.
(Programable logic array) PLA
اولين تراشه قابل برنامه ريزي كه براي پياده سازي مدار منطقي آرايه برنامه پذير and و يك آرايه برنامه پذير OR ميباشد. دو اشكال عمده، هزينه گران ساخت و سرعت پايين آن است .
(Programable array logic) PAL
تراشه Pal داراي يك آرايه and قابل برنامه ريزي و يك آرايه OR تثبيت شده است.
GAL
تراشه GAL داراي يك آرايه and قابل برنامه ريزي و يك آرايه OR تثبيت شده است. تراشه GAL داراي سرعت بيشتر نسبت به تراشه PAL ميباشد.
بعد از تراشههاي فوق MPGAها و FPGAها به بازار آمدند.
MPGA: Mask programable gate array
FPGA: Field programable gate array
ساختار FPGA
بطور كلي تا كنون سه نوع معماري براي FPGA ها توسط كارخانههاي مختلف سازنده ارائه شده است كه عبارتند از:
1-آرايه دو بعدي متقارن Symetric matrix
2-آرايههاي سطري row based
3-دريايي از گيتها sea of gates
بلوكهاي FPGA
1-بلوكهاي منطقي (Logic array Block) LAB
2-بلوكهاي كنترل كننده I/o
3-اتصالات قابل برنامهريزي PIA
(Programable Interconnect array)
بلوكهاي منطقي
بلوكهاي منطقي شركتهاي سازنده FPGA از نظر اندازه ومنطق به كار رفته در آنها با هم تفاوتهاي بسياري دارند.
اين بلوكها در FPGAها و CPLDهاي Altera به نام LAB شناخته ميشوند.
هر LAB ميتواند شامل سه زير بلوك Macrocell و Interconnect local و term logic باشد.
بلوك term logic
در LAB براي برقراري ارتباط يك Macrocell با Macrocellهاي ديگر ونيز فيدبك به ورودي Macrocell از بلوك term logic استفاده ميشود.
يك بلوك term logic از دو نوع آرايش بسط دهنده موازي (parallel Expanders) وبسط دهنده عمومي (common Expanders) براي برقراي ارتباط استفاده ميكند.
بلوكهاي كنترل كننده I/o
اين بلوكها نوعي مدارات منطقي ميباشند كه وظيفه برنامهريزي نوع پورت خروجي و نيز برقراري فيدبك از پينها به درون PIA را دارد.
بلوك (Programable Interconnect array) PIA
اين بلوك براي برقراري ارتباط بين بلوكهاي منطقي و بلوكهاي كنترل كننده ورودي و خروجي استفاده ميشود.
شركتهاي سازنده FPGA
Technology | Logic Block | Architecture | Company |
Sram
Anti – fuse Sram Anti – fuse |
Look up table
MultiplexerNandMultiplexer |
Symetric matrix
Row based Sea of gates Symetric matrix |
Xilinx
Actel Plessey Quick logic |
شركت Altera و Xilinx از ساختار آرايهي دو بعدي متقارن استفاده ميكنند كه با استفاده از Sram برنامه ريزي ميشوند و بلوكهاي منطقي نيز بر پايه look up table طراحي شدهاند.
شرك Altera با استفاده از آرايه سطري تراشههاي خود را طراحي نموده است، FPGAهاي اين شركت با استفاده از Anti – Fuse برنامه ريزي ميگردند و بلوكهاي منطقي آنها بر اساس Multiplexer طراحي شدهاند.
روش برنامهريزي Jtag
اينترفيسي كه براي اين منظور استفاده ميشود Byte Blaster نام دارد و كاربر را قادر ميسازد تا با استفاده از كامپيوتر و اتصال Byte Blaster به پورت پارالل كامپيوتر برنامهريزي را انجام دهد .
اين اينترفيس با استفاده از نرم افزار maxplus 2 براي برنامه ريزي بصورت Jtag مورد استفاده قرار ميگيرد. و هردو نوع ولتاژ 3/3 و 5 ولت را پشتيباني ميكند.
دراستاندارد JTAG براي برنامه ريزي از 4 پين استفاده ميگردد.
پين ورودي TDI براي اعمال ديتا به صورت سريال به IC بكار ميرود. ديتاي قرار گرفته بر روي پين با لبه بالا رونده كلاك به داخل IC شيفت داده ميشود.
پين خروجي TDO براي خواندن ديتاي برنامه ريزي شده استفاده ميگردد و با لبه پايين رونده كلاك ديتا به خارج شيفت داده ميشود. پين ورودي TMS : نوع مود تست را مشخص ميكند و براي ريست نيز استفاده ميشود.
پين ورودي TCK كلاك ورودي به IC است و پينهاي TDO و TDI نيز با استفاده از اين كلاك كار ميكنند.
Byte Blaster NV 25 – pin Header pin – outs
Jtag mode
Sinal Name |
pin |
TCK |
2 |
TMS |
3 |
TDI |
8 |
TDO |
11 |
VCC |
15 |
GND |
25 to 18 |
اين جدول پينهاي استاندار Jtag را نشان ميدهد.
طول كابل Byte Blaster به هيچ عنوان نبايد بيش از 1 متر در نظر گرفته شود.
تراشههاي قابل برنامه ريزي Altera
تراشههاي قابل برنامه ريزي شركت Altera مطابق تقسيم بندي خود شركت شامل 4 دسته است.
* High – Density FPGA1
Stratix
Stratix Gx
APEX II
APEX 20K
اهم خصوصيت اين دسته از FPGA ها سرعت و ظرفيت بسيار بالاي آن است.
* High – voloume FPGA2
* Mid – Density FPGA3
* Mature device 4
VHDL چيست؟
VHSIC از حروف اول VHSIC Hardware Description Language به معني زبان توصيف سخت افزاري VHSIC گرفته شده است.
VHDL نيز خود از حروف اول Very High Speed Intergrated circuits تشكيل شده است و به پروژه VHSIC توسط وزارت دفاع آمريكا (DOD) با هدف توسعه نسل جديدي از مدارهاي مجتمع با سرعت بالا حمايت ميشد. همزمان با اجراي اين طرح و پيشرفتهاي پياپي كه در زمينه فناوري نيمه هاديها و بستهبندي (packaging) به وجود آمده بود، امكان پيچيدهتر شدن روز افزون سيستمهاي الكترونيكي، دفاعي و فضايي را ازخود به جاي گذاشت.
بيشترين سهم در هزينه طول عمر اين سيستمها، مربوط به هزينه تعمير ونگهداري بود.
توسعه اين زبان به گروهي از پيمانكاران DOD واگذار شده و اولين نسخه آن در سال 1985 عرضه گرديد. پس از آن در مراحل بعدي توسعه، استاندارد سازي زبان با همكاري نمايندگاني از صنعت، دولت و دانشگاه به IEEE واگذار شد. درنهايت اين زبان در سال 1987 تأييد شده و به صورت استاندارد 1987- 1076 IEEE معرفي گرديد. پنج سال بعد طي نظر خواهي مجدد ويژگيهاي جديدي به آن اضافه شد و به صورت نسخه 1993- 1076 ارائه شد.
از زماني كه VHDL به صورت استاندارد IEEE در آمده است، كاربرد فراواني در بين جامعه طراحان سيستمهاي الكترونيكي با CAD (طراحي با كمك كامپيوتر) پيدا كرده است. DOD نيازمند اين بود كه توصيفهاي VHDL براي كليه مدارهاي مجتمع با كاربرد خاص (ASICs) مورد استفاده قرار گيرد. با ايجاد بسته استاندارد 1164 IEEE قابليت كاربرد مدلهاي ايجاد شده در محيطهاي مختلف VHDL كه توسط عرضه كنندگان مختلف ارائه شده بود، افزايش پيدا كرد. به همين صورت امكان پشتيباني سنتز با تشكيل نسخه سنتز بسته 1164 IEEE فراهم شد. در عمل اكثر عرضه كنندگان اصلي CAD ،VHDL را پشتيباني ميكنند.
VHDL زباني است براي توصيف سيستمهاي ديجيتالي. شبيهسازها ميتوانند بدون اينكه سيستم به طور واقعي ساخته شود، از اين توصيف براي شبيه سازي رفتار سيستم استفاده كنند، همچنين كامپايلرهاي سنتز ميتوانند از اين توصيف براي ايجاد توصيفي از سخت افراز ديجيتالي به منظور پياده سازي سيستم استفاده كنند.
برنامههاي VHDL با برنامههاي پاسكال، C و فرترن تفاوت دارند. منطق فكري در برنامههاي متداول بر اساس الگوريتمي از محاسبات ترتيبي بنا شده كه پردازش روي دادهها را براي يك عمليات محاسباتي مشخص انجام ميدهد. روند نوشتن چنين برنامهاي اساساً ترتيبي است كه در واقع از مدل محاسبات ترتيبي تبعيت ميكند، كه اساس كار اكثر كامپيوترهاي مدرن را تشكيل ميدهد. نوشتن برنامههاي VHDL بسيار متفاوت است. در VHDL به نحوه محاسبه يك تابع كمتر توجه ميشود و در مقابل به رفتار سيستمهاي فيزيكي مانند يك مدار ديجيتال توجه بيشتري ميشود. اين توصيف رفتاري حداقل دو هدف را در بردارد كه هرد دو را بررسي ميكنيم. هدف اول شبيه سازي مدارهاي ديجيتالي است. شبيه سازها از توصيف VHDL براي انجام شبيه سازي استفاده ميكنند تا رفتاري كاملاً مشابه به رفتار سيستم فيزيكي را به وجود آورند. كاربرد اين شبيه سازي، ارزيابي و تأييد رفتار مدار ديجيتالي، قبل از صرف هزينهاي سنگين براي ساخت آن است.
هدف دوم سنتز مدارهاي ديجيتالي است. پس از آناليز توصيف VHDL توسط ابزارهاي طراحي، يك مدار ديجيتالي حاصل ميشود كه همان رفتار مربوط به توصيف VHDL را دارد.
اين توصيفهاي مداري، به سرعت قابل پردازش و تبديل به سخت افزارهاي سفارشي هستند. همچنين ميتوان آنها را روي واحدهاي سخت افزاري قابل برنامه ريزي پياده نمود.
نقد و بررسیها
هنوز بررسیای ثبت نشده است.