رفتن به مطلب

آموزش مقدماتی: طراحی مدارات دیجیتال با fpga و زبان توصیف سخت افزار vhdl


ارسال های توصیه شده

سلام

در این تاپیک سعی داریم با مقدمات طراحی دیجیتال و شبیه سازی مدارات در نرم افزار های Quartus II و ISE و پروگرم کردن FPGA آشنا بشیم. هدف کلی پیدا کردن دید سخت افزاری و تسلط به زبان VHDL (زبان توصیف سخت افزار هست) که با اون بتونیم برنامه های سخت افزاری خودمون رو بنویسیم و تحلیل و شبیه سازی و تست کنیم.

برای جلوگیری از پراکندگی مطالب و منظم بودن تاپیک سرفصلی ارائه میدم و طبق اون پله پله با هم جلو میریم سعی میکنم کاربردی باشه و تا اونجا که میشه با مثال بیان کنم که راحت تر درک بشه و تاپیک خشک و خسته کننده نباشه.در واقع برای درک بهتر مدارات دیجیتال باید یه بیت بشیم و در گیت ها و کل مدار حرکت کنیم تا ببینیم قضیه چیه به این میگن رسیدن به مرحله عرفان در دیجیتال:whistle:

 

1-آشنایی با مدارات ترکیبی (گیت های ابتدایی و مالتی پلکسر ها و دی مالتی پلکسر ها و دیکودر و انکودر و ...)

 

2-مدارات ترتیبی( فلیپ فلاپ ها – شمارنده ها و ....)

 

3-ادغام مدارات ترکیبی و ترتیبی

 

4-نحوه ساخت component و استفاده آن در مدارات مختلف

 

5-کار با نرم افزار Quartus II و شبیه سازی با آن

 

6-کار با نرم افزار (ISE(Xilinx Project Navigator و پروگرم کردن FPGA

 

مثال ها:

 

 

  • مبدل باینری به گری
  • شمارنده تعداد یک های موجود در یک بایت بدون نیاز به کلاک
  • مقسم فرکانس
  • راه اندازی نمایشگر 7 segment چهارتایی مالتی پلکس شده
  • PWM
  • صفحه کلید ماتریسی
  • رمز نگار LFSR
  • ارتباط سریال استاندارد( مجهز به Start_bit و Stop _bit و Parity)

لینک به دیدگاه

اول میریم سراغ یه مقدمه ای از FPGA

 

فرق fpga با avr

 

البته که مقابسه کردن این دو تراشه با هم اصلا کار درستی نیست ولی برای آشنایی باید بگم fpga مثل یه IC خالیه با یه ظرفیت گیت که این ما هستیم که داخلش رو میچینیم که چطور باشه جتی اینکه کدوم یکی از پایه ها خروجی باشه رو هم ما تعیین میکنیم نه مثل avr که همه چیزش از قبل تعیین شده است و کاربر با توجه به نیازش راه انذازی میکنه

به عنوان مثال تو خانواده Spartan III از بیرون با فرکانس های 5 یا 16 یا 50 Mhz و از داخل با PLL تا 280 Mhz هم بالا میاد.چیزی که تو avr نداریم.

دوتا شرکت سازنده fpga که تو ایران استفاده میشن Altera و Xilinx هستن .Altera خیلی کاربرد نداره ولی کارکردن باهاش خیلی ساده تره به نسبت .ولی Xilinx کاربردی تره .

ما اول با شماتیک مدار تو Quartus II کار میکنیم یه مقدار با شماتیک مدار ها و پایه ی دیجیتال آشنا میشیم بعد میریم سراغ ISE که با VHDL کد نویسی انجام بدیم و تقریبا محیط خشکی داره.من فکر میکنم اگه مستقیما با ISE کار نکنیم خیلی بهتره چون ممکنه برای کاربر خسته کننده باشه و بذاره کنار.

سعی میکنم از همه ی مراحل Screenshot بگیرم که روند راحتی برای خواننده داشته باشه.:a030:

رفرنس:

مدار منطقی موریس مانو

طراحی مدار با fpga تالیف Dr.Pedroni

 

نرم افزار های مورد استفاده

Quartus II ورژن 9.1

ISE ورژن 13.2

 

رفرنس ها همشون تو نت هستند و میتونید راحت دانلود کنید( بعدا لینکشونو هم میذارم)

لینک به دیدگاه

اجزای یک سیستم الکترونیک دیجیتال

 

- حافظه

-میکرو پروسسور

-عناصر منطقی

 

******عناصر منطقی برحسب نوع منطق به دو خانواده بزرگ تقسیم میشود

 

  • منصق ثابت(Fixed Logic)
  • منطق برنامه پذیر ( Programmable Logic)

 

 

مدارهای منطقی برنامه پذیر دارای انواع مختلفی مثل PLA , PAL , SPLD, CPLD , MPGA, FPGA هستند که هر کدام دارای ظرفیت و سرعت و ویژگی هایی میباشند که به دلیل وجود منابع متعدد در این زمینه فقط به مقایسه FPGA و CPLD میپردازیم.

 

CPLD

 

 

یک CPLD ممکن است مدارای دارای چندین PAL داشته باشد که توسط برخی اتصالات برنامه پذیر به یکدیگر متصل باشند درحالیکه مرتبه ی پیچیدگی یک PAL در حد چند صد گیت منطقی است و مرتبه ی پیجیدگی یک CPLD حدود چند ده ها هزار گیت میباشد.

 

CPLD را میتوان به کمک پروگرامر PAL برنامه ریزی کردو اگر روی یک برد لحیم شده باشند میتوان از طریق خط داده سریال PC هم برنامه ریزی کرد.

 

 

اجزای اصلی یک CPLD:

  • چندین SPLD
  • ماتریس اتصالات قابل برنامه ریزی
  • بلوک کنترل I/O

 

 

wklabllxo4d78ipjdjdt.png1cbrpyy26athftzzgl7y.png

 

هر بلوک منطقی ( LB) معادل یک PLD بوده و دارای اتصالات قابل برنامه ریزی میباشد. در این معماری از یکی ماتریس سوئیچ قابل برنامه ریزی برای اتصال بین بلوک های منطقی استفاده شده است.

توسط ماتریس اتصالات:

  • ورودی یا خروجی هریک از بلوک های منطقی قابل متصل شدن به هر بلوک منطقی دیگر است
  • پينهاي ورودي و خروجي مستقيما قابل اتصال به ماتريس اتصالات و نيز بلوكهای منطقی هستند.
  • هر بلوك منطقي خود شامل چندين واحد منطقي كوچكتر به نام ماكروسل می باشد.

 

 

a1hfdkb2dsp903wupf6u.png

 

 

  • هرماكروسل معمولا شامل مجموعه اي از مينترمها (يا همان جملات حاصلضرب) – كه قابل برنامه ريزي ميشوند- و فيدبك كردن يك منطق AND توسط زيرمجموعه اي از آرايه خروجي قابل پيكره بندي ميباشد.

 

  • اين منطق خروجي معمولا شامل يك گيت XOR و يك گيت OR و يك فليپ فلاپ ميباشد وروديهاي گیت OR ميتوانند شامل تعدادي يا تمام مينترمهاي توليد شده داخل ماكروسل و نيز گاها مينترمهاي توليد شده توسط ديگر ماكروسل ها باشند.

 

wfrxcqth8blcbotby28s.png

 

 

کاربرد های CPLD در پست بعدی...

لینک به دیدگاه
  • 2 هفته بعد...

خب من تو این پست در مورد کاربرد CPLD میگم و بعدش میریم سراغ FPGA و بعد از اون دیگه بحث خشک آشنایی با تراشه ها رو میذاریم کنار و میریم رو مبحث شیرین شبیه سازی :w16:

 

 

کاربرد های CPLD:

 

كاربردهاي منطق متصل ( Glue Logic)

 

پیاده سازی طراجی های کنترلی و حساس و مهم مثل

- کنترلر های گرافیکی

- کنترل کش ( cache control) و UART ها و کنترلر های LAN

 

تلفن های همراه

 

همیار های دیجیتالی

 

کاربرد های خاصی که نیاز به گیت های AND و OR است و نه فلیپ فلاپ ها

 

کاربرد هایی که نیاز به تغییر سریع طراحی و حتی تغییر در پیکره بندی سیستم دارند مثلا در پروتکل های ارتباطی سیستم های مخابراتی

 

 

 

آشنایی با FPGA -آرایه گیت های قابل برنامه ریزی در زمان استفاده

 

 

میزان پیچیدگی CPLD ها از حدی بیشتر قابل افزایش نیست برای افزایش ظرفیت گیا های منطقی امروزه از FPGA ها و یا MPGA ها استفاده میشود.تفاوت اصلی FPGA و CPLD ها در معماری داخلی آنهاست.

 

CPLD ها دارای تعداد بلوک های منطقی کمتر از FPGA ولی پیچیده تر از آنها میباشند.

 

دو ویژگی بارز FPGA ها اتصالات قابل برنامه ریزی آنها و بلوک های منطقی نسبتا ساده آنهاست.-در حد یک ماکروسل-

 

FPGA های امروزی بعضا شامل برخی توابع سطح بالا ، حافظه های درونی ،میکروپروسسور و حتی تمام ادوات لازم در یک SOPC- system on a programmable chip راشامل میباشند . مانند FPGA های Virttex-II Pro و یا Virtex 4 که شامل یک یا چند میکرو پروسسور Power PC میباشد.

 

یک FPGA شامل آرایه ای از بلوک های منطقی می باشد که توسط کاربر قابل سازماندهی میباشد.سه بخش اصلی معماری داخلی آن شامل:

 

  • آرایه ای از بلوک های منطقی
  • اتصالات داخلی قابل برنامه ریزی
  • بلوک های I/O

 

 

بلوک های منطقی معمولا شامل تعدادی از گیت های منطقی و یا یک جدول جستجو ( lookup table) هستند که متصل به یک فلیپ فلاپ هستند.

 

 

rhrwtx4iysove8swf3h.pngz430f7n087hrao29y2kq.png

 

 

 

بلوک های I/O تعیین میکنن که پایه های همه منظوره FPGA به صورت ورودی یا خروجی یا دو جهته ( Bidirectional ) مورد استفاده قرار گیرند.

 

اتصالات داخلی قابل برنامه ریزی اتصالات -دوطرفه- بین بلوک های منطقی و بلوک های I/O را برقرار میکنند.به منظور افزایش تنوع گیت های منطقی بلوک های منطقی ممکن است شامل بیش از یک LUT یا فلیپ فلاپ مانند FPGA سری XC4000 از شرکت Xilinx باشند.

 

مطابق شکل زیر:

 

 

n79a2jtgapxvmwxr67e.png

 

 

 

برخی از کاربرد های FPGA :

 

 

  • پردازش سیگنالهای دیجیتال
  • پردازش و ذخیره سیگنال ها
  • رادیوی تعریف شده با نرم افزار( software defined radio)
  • نمونه سازی برای ASIC
  • باز شناسی گفتار ( Speech Recognition )
  • بینایی کامپیوتر ( computer Vision )
  • رمزنگاری ( Cryptigraphy )
  • تصویر برداری پزشکی ( Medical Imaging )
  • سیستم های دفاعی (Defense Systems )
  • نمونه سازی سخت افزاری کامپیوتر
  • محاسبه با قابلیت پیکره بندی مجدد

لینک به دیدگاه

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...