تبلیغات
باران الکترونیک - چگونه FPGA یاد بگیریم؟
چهارشنبه 29 مهر 1394  12:21 ق.ظ
نوع مطلب: (FPGA ،Xilinx ،Altera ،VHDL ،) توسط: امیرحسین رستمی

هدف

در این مقاله سعی شده است نحوه یاد گرفتن FPGA قدم به قدم توضیح داده شود. نظراتی که در این مقاله آمده است شخصی بوده و ممکن است شخص دیگری نظری پی رادیان مخالف داشته باشد (که نشان دهده سواد کم­تر او می­ باشد پس نگران نباشد و ادامه به خواندن این مطلب دهید.)

مغز


Xilinx در مقابل Altera

دو شرکت بزرگ در زمینه FPGA وجود دارند. در این­جا Xilinx اسم در کرده است و بیش­تر شرکت ­ها (اگه نگوییم همه) با FPGA های Xilinx کار می­کنند. اگر چه ممکن است Altera از خیلی نظرها به­تر باشد. به هر حال شما قرار است که با انسان­ هایی کار کنید که فقط چند اسم شنیده­ اند مثل Virtex-6 (اوه چقدر خفن). بنابراین توصیه می ­شود با FPGA های Xilinx کار کنید.

برد

برای شبیه­ سازی، سنتز، پیاده سازی و دیباگ FPGA های سری 6 به پایین Xilinx از نرم ­افزار ISE استفاده کنید و دنبال نرم ­افزار دیگری نروید که وقت تلف کردن است. ISE تمام نیازهای شما را برای کار با FPGA های سری 6 به پایین Xilinx بر طرف می ­کند. می ­توانید از مطالب بسیار بسیار عالی موجود در همین وبلاگ استفاده کنید که هیچ جایی پیدا نمی ­شود (زود بجنبید تا تموم نشده). همچنین می­ توانید از کتاب ISE In-Depth Tutorial شرکت Xilinx استفاده کنید (بد نیستش).

ISE

برای FPGAهای سری 7 به بالا و ZYNQ باید از نرم­افزار Vivado استفاده کنید. به جز این فرق دیگری که  Vivado با ISE‏ ‏ دارد این است که این نرم­افزار از قابلیت چند هسته­ای پردازنده استفاده می­کند و سرعت سنتز آن تا 70 درصد (مطمئن نیستم) از ISE بیش­تر می­باشد. همچنین Vivado به صورت یک نرم­افزار یکپارچه در آمده است.

زبان برنامه نویسی

برای کار با FPGA دو زبان برنامه نویسی VHDL و Verilog موجود می­باشد. در ایران بیش­تر با زبان VHDL کار می­شود و شاید شرکتی باشد که با زبان Verilog کار کند ولی من به شخصه شرکتی ندیدم که با زبان Verilog کار کند. این دو زبان تفاوتی با یک­دیگر ندارند. در Verilog سعی شده است که دستورات برنامه، شبیه زبان C باشد. به نظر من VHDL زبان قشنگ­تری نسبت به Verilog است و کد زدن به زبان VHDL بیش­تر حال می­دهد. پیشنهاد می­ شود که به زبان VHDL مسلط شوید و با زبان Verilog نیز آشنا باشید. چون ممکن است کدهای آماده­ای در نت پیدا کنید که به زبان Verilog می­باشند و نیاز به فهمیدن و تغییر جزیی این کدها داشته باشید تا برای کار شما مناسب شوند. در هر پروژه FPGA می ­توانید از ترکیب این دو زبان به اضافه شماتیک استفاده کنید. انتخاب یک زبان توصیف سخت افزار یا HDL مانند VHDL و Verilog نه به شرکت سازنده بستگی دارد نه به نرم­افزاری که با آن کار می­کنید. فقط به محیط کاری بستگی دارد.

VHDL

برای یاد گیری VHDL منبع خوب و خلاصه­ای که وجود دارد ویدیوی آموزشی مقدماتی VHDL از Altera می ­باشد که با نام زیر در سایت شرکت موجود می­ باشد:

VHDL Basics (OHDL1110): 92 Minutes Online Course

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

http://wl.altera.com/customertraining/webex/VHDL/presentation.html

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

http://www.altera.com/customertraining/webex/VHDL/VHDL.zip

ویدیوی آلترا

منبع دیگری که وجود دارد و خوب به نظر می­رسد سایت reference designerمی ­باشد که در لینک زیر قابل دست­رسی می­ باشد:

http://www.referencedesigner.com/tutorials/vhdl/vhdl_01.php

کتاب­ های خوبی که در این زمینه وجود دارند عبارتند از:

(Prototyping by VHDL Examples Xilinx Spartan-3- Pong P. Chu - Wiley (2008

Rapid Prototyping Of Digital Systems SOPC Edition-James O. Hamblen (2008

The Low-Carb VHDL Tutorial- Bryan Mealy (2004

بعد از یادگرفتن FPGA خواندن کتاب Xilinx HDL Coding Hints توصیه می­شود.

همچنین در مورد منابع فارسی کتاب­های موجود در بازار فقط برای یاد گرفتن دستور زبان VHDL مناسب می­باشد. 50 صفحه اول این کتاب­ ها را بخوانید تا با VHDL آشنا شوید. توی نت هم تنها مطلبی که ارزش وقت گذاشتن دارد را می­ توانید در لینک زیر پیدا کنید:

http://dl.elecdl.com/Upload%20center/89.6/8/vhdl(www.elecdl.com).zip

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

چند مثال خوب برای راه افتادن VHDL عبارتند از:

  •  ساختن D-Flip Flop
  • نوشتن برنامه شمارنده
  • نوشتن برنامه تقسیم کننده فرکانس
  •  راه اندازی 7-segment
  •   ساختن موج PWM و راه اندازی موتور DC
  •   راه ­اندازی کی پد
  •  راه اندازی موتور پله­ای
  •   نوشتن برنامه ارتباط سریال RS232 (UART) با کامپیوتر
  • اتصال موس و کیبرد با استفاد از PS2 به FPGA
  • راه­اندازی LCD کاراکتری 16 x 2
  •  راه ­اندازی مبدل آنالوگ به دیجیال ADC و مبدل دیجیتال به آنالوگ DAC
  •  اتصال کدک صوتی به FPGA
  •  اتصال مانتیوتر به FPGA
  •  اتصال دوربین CMOS موازی به FPGA

و چند پروژه پیشنهادی:

  •  ساختن ماشین حساب ساده با استفاده از کی پد و LCD
  •  ساختن چراغ راه­نمایی رانندگی با استفاده از LED و 7-segment
  •   اتصال کی­برد به کامپیوتر و فرستادن اطلاعات با استفاده از پورت سریال به PC
  •  ساختن ولت­ متر با استفاده از ADC و LCD
  •  ساخت تولید کننده سیگنال با استفاده از DAC
  •  فیلتر کردن صدای ورودی و پخش آن در بلندگو (با استفاده از IP Core فیلتر)
  •  ساختن نت­های ارگ با استفاده از 7 کلید و خروجی کدک صوتی (دو ره می فا سو لا سی)
  • ساختن یک بازی با استفاده از کلید و مانتیور VGA مانند Pong، breakout، Tetris، pinball
  • پیدا کردن صورت در تصویر با استفاده از دوربین و نمایش در مانیتور

بازی با FPGA
















قدم بعدی

بعد از سوار شدن روی VHDL و شبیه سازی و پیاده سازی برنامه ­های متنوع، سراغ استفاده کردن از IP Coreهای Xilinx است که جزو نرم­افزار ISE می­باشند. IP Core در واقع مانند جعبه سیاه می­باشد که شما از ساختار داخلی آن اطلاعی ندارید و از کارکرد آن با خبرید. برای مثال برای نوشتن تبدیل فوریه FFT به دو ماه زمان نیاز دارید. شرکت Xilinx برای این که کار شما را جلو بیاندازد الگوریتم FFT را به صورت بهینه برای شما نوشته است و آن را در غالب یک IP Core در اختیار کاربر قرار داده است.

 این IP Core ها از الگوریتم ­های پردازش سیگنال و تصویر گرفته، راه­ اندازی پروتکل ­های ارتباطی پیچیده مانند ETHERNET، PIC و USB تا راه­اندازی حافظه ­های پیچیده مانند DDR و منابع سخت­ افزاری خود پردازنده مانند RAM داخلی را شامل می­شوند.

در این مرحله استفاده کردن از این IP Core ها را یاد بگیرید. برای مثال استفاده از FIFO، BRAM، ساختن کلاک­های مختلف با استفاده از PLL را یاد بگیرید.

ابزار ‏Xilinx‏ در متلب ‏System Generator‏ نام دارد که برای پیاده سازی الگوریتم های پیچیده به کار می رود. ‏نحوه کار به این صورت است که با سیمیولینک تابع مورد نظر طراحی می شود و بلوک ‏FPGA‏ آن در اختیار ‏شما قرار می گیرد که می توانید در برنامه ‏ISE‏ از آن استفاده کنید. این بلوک نسبت به برنامه ای که به زبان ‏سخت  افزار نوشته شده است بهینه نمی باشد ولی چون شما را از نظر زمان چندین ماه جلو می اندازد بسیار ‏مفید می باشد. در حالت کلی هم باید از یک ‏FPGA‏ قوی تر برای پیاده سازی الگوریتم مورد نظر استفاده کنید ‏که در این جا یک کار عادی است. به بیان دیگر هرچه ‏FPGA‏ شما خفن تر باشد کار شما قوی تر است. خیلی ‏از مواقع کاری که ‏Virtex-6‎‏ انجام می دهد می توان با یک ‏FPGA‏ ارزان قیمت ‏Spartan-3‎‏ هم انجام داد اما ‏کلاس کار باید حفظ شود... .‏

بردهای آماده ارزان قیمت ‏FPGA

اگر قصد کار با نرم افزار ‏Vivado‏ را دارید برد ‏Arty‏ که دارای ‏FPGA‏ زایلینکس ‏Artix-7‎‏ است توصیه ‏می شود. قیمت این برد 100‏‎ ‎دلار می باشد و در لینک زیر می توانید اطلاعات بیش تری از آن به دست آورید:‏

http://www.xilinx.com/products/boards-and-kits/arty.html#overview

برد ARTY
توصیه این است که ‏FPGA‏ را با بردهای ارزان قیمت ‏Spartan-3‎‏ یا ‏Spartan-6‎‏ و نر م افزار ‏ISE‏ شروع ‏کنید ولی الزامی نیست. تا این لحظه، در ایران تا جایی که من خبر دارد هنوز شرکت ها به ‏Vivado‏ سوئیچ ‏نکردند. چرا شما پیش قدم نباشید؟!؟! به قول برادر ماکس پلانک "یک حقیقت علمی جدید با قانع کردن ‏دشمنانش و نشان دادن حقیقت به آن ها پیروز نمی‌شود بلکه به این دلیل پیروز می‌شود که ‏دشمنانش در نهایت از بین رفته و نسل جدیدی به وجود می‌آید که با قانون آشنا هستند ‏".‏
برای پیدا کردن بردهای ‏Xilinx‏ توی نت یا بازار جست و جو کنید. من برد خاصی رو سراغ ندارم که ‏معرفی کنم. همچنین می توانید از دو نماینده ‏Xilinx‏ به نام ‏Avnet‏ و ‏Digilent‏ نیز برای پیدا کردن برد مورد ‏نظر و خرید خارج هم استفاده کنید.‏


در ادامه تعدادی برد ارزان قیمت آورده شده است:‏

  • برد  ‏XuLA2-LX9‎


  • برد ‏Xilinx Spartan-6 FPGA LX9 MicroBoard‎

تصویر برد:‏

  • برد ‏Basys™2 Spartan-3E FPGA Board‎

عکس برد:‏



  • برد ‏Cmod S6‎

عکس برد:‏



نظرات()   
   
علی
سه شنبه 24 اسفند 1395 09:08 ق.ظ
سلام
ممنون خیلی مفید بود!
 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر
آخرین پست ها