HEXALINX
526 subscribers
147 photos
4 files
74 links
این آغاز ماجراجویی شماست...
آموزش رایگان برنامه نویسی FPGA و ZYNQ و ابزارهای طراحی XILINX

پرسش و پاسخ:
@ask_linx

آدرس سایت:
hexalinx.com

آدرس کانال آپارات:
aparat.com/hexalinx

آدرس اینستاگرام:
insatagram.com/hexalinx_go
Download Telegram
#FPGA_FLOW
🔖 بخش اول

❗️ گام اول، طراحی دیجیتال عملکرد مورد انتظار سیستم توسط مهندس طراح است، برای طراحی مناسب دو دسته اطلاعات نیاز داریم، 1- دانش های آکادمیک طراحی دیجیتال و 2- شناخت کافی از معماری و قابلیت های تراشه هدف. علاوه بر این الزامات پروژه و محدودیت های آن نیز باید در نظر گرفته شود، در عمل این گام مهمترین گام طراحی است در حالی کمتر به آن توجه می شود.


❗️ گام دوم کد نویسی به زبان VHDL و یا Verilog است، در این گام طراح علاوه بر تسلط به زبان توصیف سخت افزاری باید با اصول استفاده از IP Core ها، نحوه به اشتراک گذاری منابع، نحوه فراخوانی عناصر پایه موجود در تراشه نظیر بلوک های ضرب کننده و بافرهای کلاک و غیره آشنا باشد، وجه تمایز یک برنامه نویس خوب با برنامه نویس معمولی دقیقا در این گام نمایان می شود. این گام عملا دومین گام مهم در طراحی است.


❗️ گام سوم به کدنویسی و طراحی testbench اختصاص دارد. در طراحی های دیجیتال پیچیده، طراحی testbench به اندازه طراحی خود سیستم پرچالش و حائز اهمیت است، به صورت پیش فرض به محض اینکه حرف از تست مدار به میان می آید، فکر می کنیم وظیفه ما اثبات عملکرد صحیح مدار است، در حالی که این باور کاملا اشتباه است، در حقیقت ما با نوشتن testbench و انجام شبیه سازی های سخت گیرانه به دنبال پیدا کردن خطاهای احتمالی سیستم هستیم و تنها زمانی می توانیم از صحت کارکرد سیستم اطمینان حاصل کنیم که هیچ خطایی پیدا نکنیم. فراموش نکنیم توانمندی در نوشتن testbench خوب یک هنر است. این قضیه به حدی مهم است که زبان هایی همچون System Verilog و System C به طور اختصاصی برای این منظور توسعه داده شده اند.

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

❗️ گام پنجم بازهم به شبیه سازی کارکرد مدار اختصاص دارد ولی تقریبا هیچ گاه توسط مهندسان طراح در یک پروژه عملی اجرا نمی شود، این گام تنها در پروژه های آکادمیک و دانشگاهی جهت شبیه سازی عملکرد سیستم بعد از سنتز اجرا می شود. به صورت کلی بعد از سنتز با اعمال تاخیر ذاتی گیت ها و ریست اولیه به سیستم رفتار طرح تا حدودی دستخوش تغییر می شود.

در بخش دوم مقاله که فردا منتشر می شود گام های بعدی توضیح داده می شود، از همراهی شما سپاسگزاریم

@Hexalinx
#FPGA_FLOW
🔖 بخش دوم

❗️گام ششم، پیاده سازی طرح توسط ابزارهای پیاده سازی است، ابزارهای پیاده سازی منحصرا توسط شرکت های سازنده تراشه های FPGA تولید می شوند. این ابزارها با توجه به تکنولوژی ساخت تراشه و یکسری الگوریتم هوشمند اقدام به پیاده سازی مدارات دیجتال روی تراشه هدف می کنند. فرایند پیاده سازی در سه فاز انجام می شود، در فاز اول نت لیست های تولید شده در گام چهارم در غالب یک نت لیست واحد با هم ترکیب می شوند، سپس در فاز دوم عمل نگاشت این نت لیست به منابع داخل تراشه انجام می شود و در فاز سوم جانمایی مناسب منابع روی تراشه و مسیریابی بین آن ها انجام می شود. تعیین موقعیت پورت های سیستم روی پین های تراشه نیز در همین گام انجام می شود. همچون مرحله سنتز هر سه فاز پیاده سازی به صورت اتوماتیک توسط ابزار پیاده سازی اجرا می شود، اما یک تفاوت بسیار مهم وجود دارد. پیاده سازی مدارات روی تراشه با توجه به یکسری استراتژی صورت می پذیرد، که جزئیات این استراتژی ها توسط طراح قابل کنترل است. در اکثر موارد پیاده سازی با تنظیمات پیش فرض با موفقیت همراه است، اما در صورتی که نتایج مطلوب حاصل نشود، کار کمی سخت می شود. طراحان حرفه ای در گام پیاده سازی با تعریف یکسری قیود ابزار پیاده سازی را به صورت سفارشی راهنمایی می کنند، تا در نهایت بهترین جانمایی و مسیریابی ممکن حاصل شود. دو پارامتر مهم برای سنجش موفقیت یا عدم موفقیت در گام پیاده سازی وجود دارد، که اولی دستیابی به فرکانس کاری مطلوب و دومی به حداقل رساندن منابع مصرفی روی تراشه است. به طور کلی گستره وسیعی از تنطیمات باید در این گام انجام شود، و طراح باید با دقت عملکرد و کارایی مورد نظرش را برای ابزار توصیف کند تا خروجی کار مطلوب باشد، این گام سومین گام مهم در طراحی است.

❗️در گام هفتم طراح برای سنجش صحت عملکرد سیستم بعد از اتمام فاز جانمایی و مسیریابی، اقدام به شبیه سازی زمانی سیستم می کند، در این شبیه سازی رفتار واقعی سیستم روی تراشه در محیط نرم افزاری بررسی می شود، مثال های متعددی وجود دارد که در آن با وجود عملکرد صحیح مدار در گام سوم، در این گام پاسخ مطلوب حاصل نمی شود، دلیل آن نیز غالبا زیاد بودن تاخیرهای موجود در سیستم است. بخش قابل ملاحظه ای از این تاخیرها به دلیل جانمایی نامناسب و طولانی بودن مسیرهای ارتباطی بین عناصر است. در صورت بروز چنین مشکلی عملا کل طرح زیر سوال می رود و لازم است یک بازنگری کامل روی مسیرهای بحرانی و گلوگاه های طراحی صورت بپذیرد. البته لازم به ذکر است که این مرحله اغلب توسط طراحان با تجربه که تا حدود زیادی به صحت عملکرد سیستم اطمینان دارند، اجرا نمی شود، دلیل اصلی آن نیز کند بودن بیش از حد پروسه شبیه سازی زمانی است، برای مدارهای با پیچیدگی متوسط ممکن است این شبیه سازی یک روز کامل زمان نیاز داشته باشد.

❗️گام هشتم به تولید بیت فایل خروجی و پیکره بندی تراشه FPGA اختصاص دارد، تنظیماتی که طراح در این بخش انجام می دهد نسبتا محدود است و غالبا در ارتباط با فرمت فایل پیکره بندی خروجی است، در این گام کاربر با توجه به تراشه FPGA خود فرمت فایل خروجی را انتخاب و به صورت اتوماتیک با چند کلیک فایل را روی تراشه پیکره بندی یا در اصطلاح دانلود می کند، از آنجایی که تراشه های FPGA دارای حافطه دائمی نیستند معمولا از یک حافظه جانبی برای ذخیزه سازی فایل پیکره بندی و انتقال آن به FPGA استفاده می شود، از این رو انتظار می رود مهندس طراح فایل مناسب برای حافظه های فلش جانبی را نیز تولید کند.

❗️اگر خوش شانس باشیم و همه فرضیات طراحی را درست اجرا کرده باشیم، نیازی به اجرای گام نهم نداریم، در پروژه های کوچک که تعداد فانکشن های سیستم محدود است و یک عملکرد نه چندان پیچیده مورد نیاز است، می توانیم به خوش شانسی خودمان امیدورام باشیم، اما اگر فقط کمی تعداد ورودی خروجی ها و سیگنال های کنترلی سیستم افزایش پیدا کند، بروز خطا کاملا اجتناب ناپذیر می شود، به این ترتیب برای پیدا کردن منشا خطا چاره ای به جز اجرای گام نهم نداریم، در گام نهم طراح با توجه به شناخت خودش از سیستم اقدام به خطایابی سخت افزاری می کند، یعنی با بررسی و مانیتور کردن مدارات پیاده سازی شده روی FPGA به دنبال دلیل بروز خطا می گردد، موفقیت در این مرحله به معنای اتمام کامل کار طراحی و پیاده سازی یک پروژه است. دو IP Core معروف ILA و VIO به عنوان مهمترین ابزارهای خطایابی Xilinx به شکل گسترده ای در این گام مورد استفاده قرار می گیرند.

@Hexalinx