مقاله بررسی FPGA & CPLD زمان برنامه نويسي VHDL
دسته بندي :
فنی و مهندسی »
کامپیوتر و IT
مقاله بررسي FPGA & CPLD زمان برنامه نويسي VHDL در 30 صفحه ورد قابل ويرايش
مقدمه اي درباره FPGA & CPLD
براي آنكه بتوان بخش بزرگي از يك طرح را داخل يك تراشه منتقل نمود و از زمان و هزينه مونتاژ و راهاندازي و نگهداري طرح كاست، ساخت تراشههاي قابل برنامه ريزي مطرح شد از جمله مزاياي استفاده از تراشههاي قابل برنامه ريزي در طراحي پروژهها عبارتند از :
- كاهش ابعاد و حجم
- كاهش زمان و هزينه طرح
- افزايش اطمينان از سيستم
- حفاظت از طرح
- حفاظت در برابر نويز و اغتشاش
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 باشد.
-تأخير انتقالي (transport)
سيگنالها از سيمها همانند ادوات سوئيچينگ با يك آهنگ معين عبور ميكنند و با تأخيري متناسب با طول مسير مواجه ميشوند. اما سيمها بر خلاف ادوات سوئيچينگ نسبتاً اينرسي كمتري دارند. در نتيجه سيمها، سيگنالهاي با عرض پالس بسيار كوچك را انتشار ميدهند و ما ميتوانيم سيمها را به عنوان محيط انتشار تغييرات در مقدار سيگنال مستقل از عرض پالس مدل كنيم. در فنآوريهاي جديد با رشد كاهش ابعاد، تأخيرهاي سيم نيز مطرح ميشوند، از اين رو بايد در پي راههايي براي كاهش طول سيمها بود، زيرا در اين مدارات تأخير سيمها قابل اغماض نخواهد بود.
اپراتورهاي VHDL
1-شيءهاي داده 2- نوعهاي داده 3-عملگرها
- شيءهاي داده در VHDL:
در VHDL سه كلاس براي شيءها وجود دارد: سيگنال، متغير، ثابت
سيگنالها:
سيگنال شياي است كه مقدار فعلي و آتي يك شيء را نگه ميدارد. از اين منظر كه VHDL يك زبان توصيف سخت افزار است، سيگنالها نقش سيم را ايفا ميكنند. سيگنالها در توصيف درگاه به عنوان ورودي و خروجي، در توصيف ساختاري به عنوان سيگنال و در معماري به عنوان سيگنال ظاهر ميشوند. معرفي سيگنال بصورت زير انجام ميشود:
Signal signal_ name : signal_ type: = initial_ value ;
متغيرها:
تفاوت سيگنالها با متغيرها در اين است كه سيگنالها را در شبيه سازي ميتوان طوري زمان بندي كرد كه در يك زمان معين،مقداري را بپذيرند، در حاليكه به متغيرها در هنگام اجراي عبارت نسبت دهي مقدار داده ميشود. در هر زمان ميتوان چندين مقدار را براي زمانهاي آتي سيگنال زمان بندي كرد. در مقابل در هر زمان تنها ميتوان يك مقدار به متغير نسبت داد. به همين جهت پياده سازي شيء سيگنال با سابقهاي از مقادير آن همراه است ودر نتيجه نسبت به متغيرها به حافظه بيشتري نياز دارد و زمان اجراي بالاتري دارد.
متغيرها به طور كامل با آنچه در زبانهاي برنامه نويسي متداول به كار ميروند معادل هستند و براي محاسبات درون روالها، توابع، پروسسها بكار مي روند. معرفي متغير به صورت زير انجام ميشود:
variable variable_ name : signal_ type: = initial_ value ;
ثابتها:
ثابتها بايد در ابتداي شبيه سازي معرفي شوند و مقدارشان مشخص شود و نميتوانند در طول شبيهسازي تغيير كنند. ثابتها ميتوانند از هر نوع مجاز VHDL باشند. معرفي ثابتها بصورت زير انجام ميشود:
Constant Constant_ name : Constant_ type: = initial_ value ;
نوعهاي داده در VHDL
1-نوعهاي داده استاندارد:
تعريف نوعهاي استاندارد در بسته standard قرار دارند. بسته استاندارد را كليه عرضه كنندگان ارا ئه ميكنند. اين بسته حاوي تعاريف نوعها و توابع از پيش تعريف شده زبان VHDL ميباشد.