توسط احمد ثقفی 

7 فروردین, 1395

پیاده‌سازی مدار دیجیتال با FPGA

بعد از اینکه یک طرح دیجیتالی را که در ذهن شما است به کمک یکی از زبان‌های توصیف سخت‌افزاری مثل VHDL یا Verilog توصیف کردید، مراحلی وجود دارد تا مدار مورد نظر شما در FPGA پیاده‌سازی شود.

در این برنامه ویدئویی، این مراحل هفت‌گانه را به شما توضیح خواهم داد تا یک دید کلی نسبت به کل فرآیند پیاده‌سازی مدار دیجیتال با FPGA به دست آورید.

More...

اولین مرحله پیاده‌سازی مدار دیجیتال با FPGA اصطلاحا ورود طرح یا design entry نام دارد که در واقع همان توصیف مدار به کمک یک زبان HDL و وارد کردن این توصیف در نرم‌افزار پیاده‌سازی مثل ISE یا ویوادو است.

برای آشنایی بیشتر با زبان VHDL، این برنامه ویدئویی را ببینید...

مراحل هفت‌گانه پیاده‌سازی مدار دیجیتال با FPGA به صورت زیر است:

  1. 1
    ورود طرح - Design Entry
  2. 2
    شبیه‌سازی طرح - Design Simulation
  3. 3
    سنتز طرح - Design Synthesis
  4. 4
    جانمایی طرح - Design Placement
  5. 5
    مسیریابی طرح - Design Routing
  6. 6
    ایجاد فایل پیکره‌بندی - Configuration File Creation
  7. 7
    پیکره‌بندی FPGA یا FPGA Configuration

در این برنامه، این هفت مرحله را که معمولا توسط نرم‌افزار پیاده‌سازی انجام می‌شود به علاوه وظایف اصلی شما به عنوان پیاده‌ساز مدار دیجیتال در FPGA توضیح می‌دهم.

ویدئو یا متن؟

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

برای دانلود نسخه با کیفیت این ویدئو، روی دکمه زیر کلیک کنید:

در این برنامه می­‌خواهم درباره مراحل پیاده­‌ساز­ی مدار دیجیتال با FPGA صحبت کنم­.

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

به عبارت دیگر، با پیکره‌­بند­ی یا Configure کرد­ن محتوا­ی LUT­ها و شبکه‌­ی سوییچ­‌ها می‌توانیم هر نوع مدار­ی را طراحی کنیم­.

از طرف دیگر به یاد دارید که به کمک زبان HDL می‌توانیم طرح دیجیتالی‌ای که در ذهن دار­یم، را در یک نرم‌­افزار برای FPGA توصیف کنیم­.

اما سوالی که وجود دارد، این است که طرحی را که به عنوان یک زبان توصیف سخت‌­افزار­ی یا HDL توصیف کردیم، چطور و با انجام چه مراحلی به مرحله­‌ی پیکره­‌بند­ی LUT­ها در FPGA برسانیم­.

مراحل پیکره‌بندی FPGA

برای این­ کار هفت مرحله باید انجام شود که آن‌ها را مرحله به مرحله برای شما توضیح خواهم داد.

۱ - ورود طرح

اولین مرحله برای پیاده­‌ساز­ی یک طرح دیجیتال ورود طرح است­.

ورود طرح یعنی اینکه طرح دیجیتالی مورد نظر،­ به کمک یکی از زبان­‌ها­ی توصیف سخت­‌افزار­ی VHDL یا Verilog، در یک Editor متن نوشته شود­.

این مرحله یعنی مرحله­‌ی ورود طرح، در عمل طولانی‌­ترین مرحله­‌ی پیاده­‌ساز­ی است.

در این مرحله هر چه شما به زبان VHDL یا Verilog مسلط‌­تر باشید و هر چه با ساختار FPGA بیشتر آشنا باشید و بهتر بتوانید منابع درون آن را به کار بگیرید، می‌توانید نتیجه‌­ی بهتر­ی به دست بیاورید.

از طرف دیگر هر چه دانش عمومی شما در طراحی دیجیتال بیشتر باشد، می‌توانید مدار­ات بهینه­‌تر­ی را طراحی کنید­.

۲ - شبیه‌سازی

مرحله‌­ی دو­م شبیه­‌ساز­ی طرح است­.

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

این­کار را می‌توانید به کمک شبیه­‌ساز­ی انجام دهید­.

در شبیه­‌ساز­ی معمولا به مدار­ یک سری ورود­ی­‌ها­ی مشخص را اعمال می‌­کنیم و انتظار داریم که خروجی­‌ها­ی مشخص داشته باشیم­.

با مقایسه­‌ی خروجی­‌ها­ی مدار­ی که طراحی کرد­ه‌اید، و خروجی­‌ها­ی مطلوب می‌توانید متوجه شوید که مدار مورد نظر را به صورت صحیح پیاده­‌ساز­ی کرده‌ا­ید یا خیر.

۳ - سنتز

مرحله­‌ی سو­م یکی از مهم­‌ترین مراحل در پیاده‌­ساز­ی یک مدار دیجیتال با FPGA است­.

این مرحله سنتز طرح نام دارد­

 به طور کلی سنتز در پیاده‌­ساز­ی­، تبدیل از یک توصیف سخت‌­افزار­ی سطح بالا به توصیف سطح پایین‌­تر است.

 اکنون با مثالی که در تصویر زیر می­‌بینید، این موضوع را بیشتر توضیح هم داد:
سنتز تمام جمع‌کننده از توصیف سطح بالا به توصیف سطح پایین

سنتز تمام جمع‌کننده از توصیف سطح بالا به توصیف سطح پایین

در برنامه­‌ها­ی قبلی­، راجع به تمام­ جمع‌کنند­ه صحبت کردیم که تمام ­جمع­‌کنند­ه دارا­ی سه ورود­ی A، B و Carry ورود­ی ا­ست و دو خروجی Sum و Carry خروجی را دارد­.

در سمت چپ این تصویر توصیف جمع­‌کنند­ه‌­ی کامل را به کمک دو عبارت منطقی می‌توانید ببینید­.

این یک سطح از توصیف است­.

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

این هم یک توصیف از جمع­‌کنند­ه است، که توصیف سطح پایین‌­تر­ی نسبت به توصیف با عبارات منطقی است.

شما می­‌دانید که هر گیت منطقی را در عمل در IC­ها به کمک مدار­ات ترانزیستور­ی پیاده­‌ساز­ی می­‌کنند­.

بنابراین اگر به ازای هر کدام از گیت‌­ها­ی منطقی این تمام ­جمع­‌کنند­ه، مدار معادل مدل ترانزیستور­ی‌اش را قرار بدهیم، می‌توانیم به مدار ترانزیستور­ی که در سمت راست تصویر می­بینید، برسیم­.

این مدار هم در واقع بیان کننده‌­ی یک جمع‌کنند­ه است­.

این مدار ترانزیستوری هم یک توصیف سطح پایین‌­تر از همان جمع کنند­ه­‌ی اول است که به کمک توابع دیجیتالی نشان داد­ه شد­.

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

ابتدا سنتز از نمایش جمع‌­کنند­ه‌­ی ­کامل با توابع منطقی به نمایش با گیت‌­ها­ی منطقی­ انجام شد.

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

 حال مفهوم سنتز در FPGA­ها به چه معنا است­؟

سنتز در FPGA­ها، پیاده‌­ساز­ی مدار توصیف شد­ه به زبان، HDL به کمک منابع دیجیتالی موجود در FPGA­ است.

اجازه بدهید این موضوع را  با مثال جمع‌­کنند­ه‌­ی ­کامل توضیح بدهم­.

جمع­‌کنند­ه­‌ی ­کامل را می‌توانیم به کمک زبان VHDL، همانطور که در برنامه‌­ی قبلی دید­یم، توصیف کنیم. اگر به یاد داشته باشید در بخش Architecture از علامت ارجاع (=>) برای توصیف جمع‌­کنند­ه استفاده می‌کردیم­.

 دو تابعی که در شکل زیر مشاهده می‌کنید دو عبارت هستند که به کمک گیت‌­ها­ی منطقی XOR،OR و ANDجمع‌­کنند­ه‌­ی کامل را پیاده­‌ساز­ی می­‌کنند­.
پیاده‌سازی توابع منطقی در FPGA به کمک LUT

پیاده‌سازی توابع منطقی در FPGA به کمک LUT

اما وقتی که این جمع­‌کنند­ه بخواهد درFPGA پیاده‌­ساز­ی شود، باید به کمک منابع دیجیتالی که در FPGA وجود دارند، پیاده­‌ساز­ی شود­.

یکی از مهم­‌ترین منابع، همانطور که در برنامه‌­ی "FPGA چیست؟" در مورد آن صحبت کرد­یم، LUT­ها  هستند.

بنابراین­، ما می‌توانیم به کمک یک LUT­، خروجی Sum جمع­‌کنند­ه و به کمک LUT دیگر،­ خروجی Carry Out جمع‌­کنند­ه را مطابق شکل بالا پیاده­‌ساز­ی بکنیم.

۴ - جانما­یی یا Placement

مرحله‌­ی چهار­م مرحله‌­ی جانما­یی یا Placement است­.

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

مثلا در مورد مثال قبل، ما برای پیاده‌­ساز­ی جمع‌­کنند­ه‌­ی­کامل از دو LUT استفاده کرد­یم­.

فرض کنیم در FPGA­ی که استفاده می‌­کنیم ۴۰۰۰ LUT برای پیاده‌­ساز­ی مدار قرار داد­ه شد­ه است.

در مرحله­‌ی جانما­یی مشخص می‌شود که از میان این ۴۰۰۰ LUT، کدام دو LUT برای پیاده­‌ساز­ی جمع‌کنند­ه استفاده می‌شود­.

در مثال قبل من دو LUT که دور­ آن را با کادر قرمز مشخص کرد­ه‌ام، برای پیاده‌­ساز­ی این جمع­‌کنند­ه استفاده شده است.

پیاده‌سازی خروجی Sum و خروجی Carry Out با استفاده از LUT

پیاده‌سازی خروجی Sum و خروجی Carry Out با استفاده از LUT

۵ - مسیریابی یا Routing

مرحله­‌ی پنجم مرحله‌­ی مسیریابی طرح یا Routing است­.

همانطور که می‌­دانید در FPGA­ها تعداد زیادی سیم وجود دارد که شما می‌توانید با اتصال مناسب این سیم‌ها به LUT­ها یا به یکدیگر، مدار موردنظرتان را تکمیل کنید­.

همانطور که در زیر شکل می‌­بینید دو LUT­ که برای پیاده‌­ساز­ی جمع‌­کنند­ه استفاده شد­ه است را به کمک مسیر سبز رنگ، از طریق سیم‌­ها­یی که از قبل در FPGA طراحی شد­ه، به هم متصل کرد­یم­.

Routing با استفاده از سیم‌های درون FPGA

Routing با استفاده از سیم‌های درون FPGA

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

اما این­که دقیقا از چه مسیر­ی این LUT­ها را به هم متصل کنیم به الگوریتم‌­ها­ی Routing و مسیریابی موجود در نرم­‌افزار­ها­ی پیاده‌­ساز و معیار­ها­یی که برای این مسئله وجود دارد، مربوط می‌شود.

یکی از این معیار­ها­، انتخاب کوتاه‌­ترین مسیر بین منابع دیجیتالی است­.

در این مورد در برنامه­‌ها­ی بعد­ی بیشتر صحبت خواهیم کرد­.

۶ - ایجاد فایل پیکره­‌بند­ی

مرحله­‌ی ششم ایجاد فایل پیکره­‌بند­ی یا File Configuration است­.

ما درمراحل قبلی، عمل سنتز، جانما­یی و مسیریابی را انجام داد­یم­.

اما این مراحل باید به نحو­ی به FPGA منتقل شوند­.

برای این ­کار نتایج حاصل از مراحل سنتز­، جانما­یی و مسیریابی درون یک فایل بیتی قرار داد­ه می‌شود و این فایل بیتی بعد از اینکه به FPGA منتقل شد، باعث پیکره­‌بند­ی آن می‌شود­.

اگر بخواهید بدانید که محتوا­ی این فایل بیتی چیست، باید بگویم که محتوا­ی این فایل بیتی در واقع تعیین‌کنند­ه­‌ی محتوا­ی LUT­ها و سوییچ‌­ها­ی مسیرها است­.

به طور­ی که بعد از اینکه فایل بیتی به FPGA منتقل شد، FPGA به آن مدار­ی که ما با کمک زبان HDL توصیف کردیم، تبدیل می‌شود­.

۷ - پیکره‌­بند­ی FPGA

آخر­ین مرحله از مراحل پیاده­‌ساز­ی مدار به کمک FPGA، پیکره‌­بند­ی FPGA است­.

همانطور که گفتم، حاصل تمام مراحل قبلی درون یک فایل بیتی که File Configuration  نام دارد قرار می‌گیرد و سپس باید این فایل به FPGA منتقل شود­.

برای انتقال این فایل به FPGA، از پروگرامر مخصوصی استفاده می‌شود­.

در شکل زیر می‌توانید شکل پروگرامر مخصوص شرکت XILINX را ببینید­.

پروگرامر مخصوص شرکت XILINX

پروگرامر مخصوص شرکت XILINX

این پروگرامر از یک سمت به کمک ارتباط USB به کامپیوتر متصل  است و از طرف دیگر به کمک پروتکل JTag به FPGA متصل می‌شود­.

فایل بیتی از طریق ارتباط USB به پروگرامر ارسال می‌شود و پروگرامر آن را از طریق پروتکل JTag به FPGA منتقل می‌­کند.

در این مرحله FPGA تبدیل به مدار­ی می‌شود که ما  آن را به کمک کد توصیف سخت‌­افزار­ی طراحی کرد­ه بود­یم­.

خوشبختانه تمام مراحل ذکر شده را می‌توانید از طریق نرم‌­افزارهای مخصوصی که برای این­ کار طراحی شد­ه انجام دهید­.

هر شرکتی که FPGA تولید می‌کند، نرم‌­افزار مخصوصی هم برای انجام تمام این مراحل ساخته است.

مثلا­ در مورد شرکت XILINX نرم­‌افزار­ی که تمام مراحل را انجام می‌دهد، نرم‌­افزار ISE است، که شما به کمک این نرم‌افزار و بدون نیاز به هیچ نرم‌­افزار دیگر­ی می‌توانید تمام این مراحل هفت­ گانه را انجام دهید­.

وظایف طراح دیجیتال

اما سوالی که پیش می‌آید این است که با توجه به این­که تمام این مراحل توسط نرم‌­افزار انجام می‌شود، پس وظیفه­‌ی طراح دیجیتال چیست­؟

 شما برای طراحی دیجیتال چهار وظیفه­‌ی اصلی دار­ید­:

۱ - نوشتن کد توصیف سخت‌­افزار­ی

اولین وظیفه نوشتن کد توصیف سخت‌­افزار­ی است که به کمک یکی از زبان‌­ها­ی VHDL یا Verilog این کار را انجام می‌دهید­.

۲ - بررسی نتایج حاصل از سنتز­، جانما­یی و مسیریابی

مرحله‌­ی دو­م این است که نتایج حاصل از مراحل مهم سنتز­، جانما­یی و مسیریابی را بررسی کنید­.

چون نرم‌­افزار بعد­ از انجام هر کدام از این مراحل به شما گزارش‌های مفصلی را ارائه می‌دهد و شما با بررسی این  گزارش‌­ها می‌توانید متوجه شوید که این مراحل به درستی انجام شده است یا خیر.

۳ - شبیه‌سازی

مرحله­‌ی بعد­ی مرحله‌­ی شبیه‌­ساز­ی است­.

همانطور که گفتم شما بعد از انجام هر کدام از مراحل ورود طرح­، سنتز­، جانما­یی و مسیریابی برای اینکه مطمئن باشید طرحتان درست کار می‌کند، باید شبیه‌­ساز­ی انجام دهید­.

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

۴ - تست سیستم بعد از پیکره­‌بند­ی FPGA

آخر­ین کار­ی که برای پیاده‌­ساز­ی دیجیتال باید انجام دهید، تست سیستم بعد از پیکره­‌بند­ی FPGA است­.

 بعد از اینکه FPGA را پروگرام کرد­ید و آن را تبدیل به مدار مورد نظر­تان کرد­ید، باید به کمک ابزار­ها­یی که نرم‌­افزار ISE در اختیار­تان قرار می‌دهد طرحتان را بر رو­ی FPGA تست کنید تا از صحت عملکرد  آن  در حین کار هم مطمئن شوید.

آیا برنامه ویدئویی مراحل پیاده‌سازی مدار دیجیتال با FPGA برای شما مفید بود؟

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

کانال تلگرام آموزش FPGA از صفر

برای عضویت در کانال تلگرام و دسترسی به آموزش‌های بیشتر و اطلاع سریع از زمان انتشار آموزش‌ها و تخفیف‌های ویژه، روی دکمه زیر کلیک کنید:

شاید به این موضوعات نیز علاقه داشته باشید:

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}

۷ تکنیک پیشرفته کدنویسی برای FPGA

>