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

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

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

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

آدرس اینستاگرام:
insatagram.com/hexalinx_go
Download Telegram
#Advanced
#device_tree

بدون شک device tree یک شاه کلید در دنیای لینوکس نهفته است و به شکلی فراگیر در این سیستم‌ها مورد استفاده قرار می‌گیرد. اما باید قبول کرد که درک مفهوم آن کمی سخت است.

کاربرد اصلی device tree در طراحی سیستم‌های نهفته است و بسیاری از ادمین‌های سرور لینوکس حتی نام آن را نشنیده‌اند. حتی بعضی از مدرسین دوره‌های پیشرفته لینوکس هم آن را نمی‌شناسند. خب داستان جالب شد. به نظر می‌رسد که با یک مفهوم لینوکسی ولی خاص منظوره روبرو هستیم. حقیقت این است که دنیای توسعه دهندگان سیستم‌‌های نهفته مبتنی بر لینوکس با دنیای ادمین‌های سرور کمی متفاوت است. پس نباید از این جهت خرده‌ای به آن‌ها گرفت.

ادامه این مقاله را در لینک زیر مطالعه بفرمایید

http://hexalinx.com/linux/device-tree/
@Hexalinx
#Intermediate
#Clock

تاخیر، جیتر، کجی و عدم قطعیت کلاک

✳️ اهمیت و عملکرد کلاک در یک سیستم دیجیتال را می‌توان مشابه نقش خون در بدن موجودات زنده در نظر گرفت. برای سالم و توامند بودن نیاز داریم دستگاه گردش خون در بدن کاملا سالم باشد. هر چند این شرط کافی نیست، اما شرط لازم است. خون در بخش‌های مختلف بدن جریان پیدا می‌کند و متابولسیم بدن را تنظیم می‌کند. مشابهاً کلاک هم در بخش‌های مختلف یک سیستم دیجیتال سنکرون جریان پیدا می‌کند و رویدادهای دیجیتال درون سیستم را کنترل می‌کند. عملکرد کلاک درون تراشه FPGA و کلیه تراشه‌های SoC نیز دقیقا به همین صورت است.

مطالعه ادامه مطلب

@Hexalinx
#Advanced
#Platform_Board_Flow

مفهوم Platform Board Flow

✳️ مجموعه نرم افزاری Vivado به طراح اجازه می‌دهد تا عملیات ساخت یک پروژه جدید را با استفاده از یک بورد از پیش طراحی شده آغاز کند، این کار باعث بالا رفتن قابلیت اطمینان و سرعت طراحی می‌شود، به عبارت دیگر Xilinx پیشنهاد می‌کند به جای انتخاب یک تراشه در جریان طراحی، از یک بورد یا در اصطلاح دقیق تر از یک پلت فرم استفاده شود. این شکل از طراحی تحت عنوان Platform Board Flow شناخته می‌شود. برای پشتیبانی از این شیوه طراحی، اطلاعات و ساختار پلت فرم هدف باید در اختیار Vivado قرار داده شود، این اطلاعات درون یکسری فایل قرار می‌گیرند به عنوان عناصر طراحی در Vivado فراخوانی می‌شوند. در این روش هر بورد فیزیکی در یک فرمت خاص درون یک فایل تعریف می‌شود و به سادگی قابلیت اضافه شدن به مخزن بوردهای Xilinx را دارد. وقتی برای ساخت پروژه بورد خاصی از لیست پیشنهادی Vivado انتخاب می‌شود، مجموعه‌ای از قابلیت های تکمیلی برای کمک به طراح به عنوان بخشی از فرایند سفارشی سازی IP ها در IP Integrator در اختیار کاربر قرار می‌گیرد.

@Hexalinx
#Advanced
#Vivado, #Board_File_Interface

بورد فایل اینترفیس

✳️ وقتی که کار ساخت یک پروژه جدید در مجموعه نرم افزاری Vivado را آغاز می‌شود در اولین گام از طراح خواسته می‌شود که تراشه یا بورد ارزیابی که قرار است طراحی روی آن صورت بپذیرد را انتخاب کند. در لیست بوردها نام بوردهای ارزیاب تولیدی Xilinx و یا شرکای تجاریش وجود دارد اما معمولا این بوردها در اختیار همه طراحان نیست. علاوه بر این، در بسیاری از موارد نیاز است کار طراحی روی سخت افزارهای سفارشی که برای اهداف خاص ساخته شده‌اند، اجرا شود. از این رو در اکثر موارد مهندس طراح با انتخاب (تراشه هدف) به جای (پلت فرم هدف )کار طراحی خودش را آغاز می‌کند.

✳️ اما تمامی طراحانی که تجربه کار با ابزار Vivado IP Integrator را دارند از مزایای طراحی با بوردهای آماده همچون قابلیت Designer Assistance در این محیط آگاهی دارند، (بله همان نوار سبز رنگی به هنگام ساخت یک Block Design ظاهر می‌شود و با اضافه کردن هر IP فعال می‌شود)، بعلاوه اینکه در برگه Board لیستی از بخش‌های مختلف بورد انتخابی نمایش داده می‌شود که به سادگی تنها با چند کلیک می‌توان آنها را فعال و فراخوانی کرد. اما افسوس که این قابلیت تنها زمانی فعال می شود که از بوردهای ارزیاب Xilinx برای طراحی استفاده شود.

✳️ شاید شما هم به این مساله فکر کرده باشید که چه خوب می شد اگر می‌توانستیم بوردهای سفارشی خودمان را نیز مانند بوردهای Xilinx درون مجموعه نرم افزاری Vivado اضافه کنیم و از آن‌ها به راحتی استفاده کنیم و به جای اینکه هر بار به دنبال تنظیم فایل xdc و تعیین موقعیت پایه‌ها و پورت‌ها باشیم با چند کلیک ساده همه کارها انجام شود. یا به جای اینکه هر بار برای پیکره‌بندی ارتباط با DDR به دنبال تنظیمات اختصاصی MIG برویم با چند کلیک ساده همه IP Core های مورد نیاز برای برقراری ارتباط و تنظیمات آن‌ها به صورت اتوماتیک انجام شود.

❗️خبر خوب این است که این کار امکان پذیر است. اما چگونه؟

🔖 تمامی اطلاعات مورد نیاز برای ایجاد چنین قابلیتی در یکسری فایل های xml ذخیره می‌شود که مهمترین آن‌ها فایل بورد اینترفیس است. فایل بورد اینترفیس (board interface file) اسکریپتی با فرمت xml است که برای توصیف بوردهایی که تراشه‌های FPGA یا SoC شرکت Xilinx در آن‌ها به کار گرفته شده است، طراحی و استفاده می شود.

🔖 اطلاعاتی که در فایل بورد اینترفیس قرار داده می‌شود توسط مجموعه نرم افزاری Vivado و به شکل اختصاصی توسط ابزار Vivado IP Integrator در زمان ساخت یک Block Design فراخوانده می‌شود. از این اطلاعات برای تسهیل فرایند برقراری ارتباط بین تراشه Xilinx و سایر قطعات روی یک بورد بکار استفاده می شود.

@Hexalinx
#Advanced
#U_BOOT, #SSBL

مفهوم U-Boot

✳️ مکروپروسسورها و پردازنده‌ها تنها قادرند کدهایی را که درون حافظه داخلی آن‌ها قرار دارد، فراخوانی و اجرا کنند. در حالی که سیستم عامل ها غالبا داخل منابع ذخیره سازی پرظرفیت‌تر نظیر هارد دیسک، حافظه‌های فلش و یا سایر قطعات جانبی ذخیره ساز دائمی قرار می‌گیرند. وقتی که یک پردازنده روشن می‌شود، در درون حافظه داخلیش هیچ سیستم عاملی وجود ندارد، بنابر این نیاز به نوع خاصی از نرم افزار داریم تا سیستم عامل را از جایی مثل حافظه فلش به درون حافطه پردازنده منتقل کند، این نرم افزار معمولا یک قطعه کد کوچک است که بوت لودر (bootloader) نامیده می‌شود.
در واقع U-boot یک اسکریپت کوتاه open-source است که به عنوان bootloader در جوامع لینوکسی به شکلی فراگیر مورد استفاده قرار می‌گیرد. این بوت لودر توسط Xilinx برای پردازنده‌های Microblaze و Zynq-7000 APSoC مورد استفاده قرار می‌گیرد.
در حقیقت bootloader بخشی از سخت افزار را به صورت اولیه راه اندازی می‌کند، در حالی که کرنل لینوکس هنوز لزوما راه اندازی نشده است

@Hexalinx
#Essentials
#Pipelining

مفهوم پایپلاینینگ

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

@Hexalinx
#Essentials
#wire_bonding

مفهوم wire bonding

✳️ تراشه‌های FPGA در پکیج‌های متفاوتی به بازار عرضه می‌شوند. این پکیج‌ها از نظر ابعاد و تعداد پایه‌های IO با هم متفاوت هستند. با این وجود ممکن است دارای منابع سخت‌افزاری مشابه هم باشند. بعنی فضای منطقی، حافظه و ضرب کننده‌های یکسانی را در اختیار طراح قرار می‌دهند.

از آنجایی که تولید تراشه یکسان با ابعاد مختلف و تعداد IO های مختلف بسیار پرهزینه است، شرکت‌های تولید کننده تراشه همچون Xilinx از یک متد خاص برای برقرار کردن ارتباط بین بلوک‌های IO و پایه‌های فیزیکی تراشه استفاده می‌کنند.

🔖 به بیان ساده فرایندی که بر اساس آن اتصال بین پایه‌های فیزیکی یک تراشه همچون FPGA و مدارات پیاده‌سازی شده روی سیلیکون برقرار می‌شود، اصطلاحاً wire bonding نامیده می‌شود.

❗️پس همواره بیاد داشته باشیم تراشه‌هایی که با یک کد نام گذاری می‌شوند و تنها تعداد IO های آن‌ها با هم متفاوت در عمل هیچ فرقی با‌هم ندارند و فقط wire bonding آن ها با هم متفاوت است.

@Hexalinx
#Advanced,#Vitis

پلتفرم نرم افزاری Vitis

از Verilog و VHDL متنفرید، شما تنها نیستید. بالاخره بعد از درخواست‌های فراوان توسعه دهندگان، شرکت Xilinx یک پلتفرم برنامه‌نویسی رایگان برای پیکره‌بندی تراشه‌های FPGA‌ معرفی کرد.
شرکت Xilinx در جریان کنفرانس سالیانه توسعه دهندگان XDF2019 از پلتفرم جدید نرم افزاری خودش تحت عنوان Vitis رو نمایی کرد. پلتفرمی که پنج سال برای توسعه‌ آن زمان صرف شده و به طراحان اجازه می‌دهد به صورت مستقیم با استفاده از ابزارها و زبان‌های توسعه مرسوم همچون پایتون و ++C روی معماری‌ سخت افزاری تراشه‌های FPGA طراحی کنند. هدف Vitis تسریع فرایند طراحی و بهینه سازی الگوریتم‌ها شتاب دهی در طیف وسیعی از کاربردها همچون هوش مصنوعی وپردازش تصویردر خودروهای بدون سرنشین است.
اگر تا کنون برای شتاب دهی الگوریتم‌ها از ASIC استفاده می‌کردید وقت آن رسیده که یک تغییر نگرش در نحوه توسعه سیستم‌هایتان ایجاد کنید، با هر بار اعمال تغییرات روی الگوریتم باید یک ASIC جدید سفارش داده شود. این در حالیست که به راحتی می‌توانید برای منظور خود یک FPGA را با استفاده از زبان‌های سطح بالا توسعه و پیکره‌بندی کنید.

@Hexalinx
#Essentials, #IO

منابع ورودی / خروجی در FPGA

✳️ منابع ورودی و خروجی در هر FPGA، منابعی هستند که بین پین‌های تراشه و منابع منطقی درون تراشه قرار گرفته اند. این منابع به لحاظ ساختاری از دو بخش تشکیل شده‌اند:

1️⃣ بخش الکتریکی: وظیفه این بخش کنترل ولتاژ و استاندارد کاری IO هاست. تک سیمه یا تفاضلی بودن یک IO‌ و همچنین فعال یا غیرفعال بودن امپدانس داخلی هر IO در این بخش تعیین می‌شود.
2️⃣ بخش منطقی: وظیفه این بخش که خود متشکل از چند بلوک است، اعمال کنترل‌های منطقی روی سیگنال‌های ورودی خروجی است. پیکره بندی پورت از لحاظ SDR و یا DDR بودن و همینطور ورودی، خروجی و یا ۳ حالته بودن پورت در این بخش تعیین می‌شود.

@Hexalinx
#Essentials

پارامترهای #slew_rate و #drive_strength به چه معنا هستند و به چه منظور مورد استفاده قرار می‌گیرند؟

✳️ وقتی یک IO در FPGA به صورت خروجی تعریف می‌شود به صورت پیش فرض دو پارامتر slew rate و drive strength برای آن مقدار دهی می‌شود. طراح می‌تواند مقدار پیش فرض این دو پارامترها را با استفاده از ابزارهای Xilinx تغییر دهد.
ساده ترین تعریف برای این دو پارامتر به این صورت است.
پارامتر slew rate کمک می‌کند تا سرعت تغییر وضعیت یک خروجی تنظیم شود. یعنی شیب لبه بالا رونده یا پایین رونده را برای دستیابی به سرعت مطلوب کنترل می‌کند.
پارامتر drive strength برای کمک به تامین جریان مورد نیاز مصرف کننده متصل به FPGA تنظیم می‌شود.

در حالت کلاسیک slew rate به صورت حداکثر نرخ تغییرات ولتاژ خروجی بر واحد زمان تعریف می‌شود و می‌تواند مقادیر SLOW و FAST به آن نسبت داده شود.

از سوی دیگر drive strength رابطه مستقیم با جریان دارد و واحد آن میلی آمپر است. پایین بودن آن باعث ایجاد مشکلات زمان بندی و بالا بودن آن باعث نویزی شدن سیستم و کاهش مقاوت سیستم در مقابل خطا می شود.

@Hexalinx
#Advanced
#DCI
امپدانس قابل کنترل دیجیتال

✳️ خاتمه دادن یک خط انتقال با استفاده از یک مقاومت برای مدل کردن خصوصیات مصرف کننده در انتهای خط اصطلاحا تِرمینیشن (Termination) نامیده می‌شود. به بیان دقیق‌تر ترمینیشن روشی برای کاهش یا از بین بردن انعکاس‌های ناخواسته در یک خط انتقال است. این انعکاس‌ها باعث ایجاد اثرات ناخواسته و نویز در سیستم می‌شود. از نقطه نظر سخت‌افزاری استفاده از ترمینیشن مناسب یک ملاحظه مهم در طراحی محسوب می‌شود. با بزرگتر شدن تراشه‌های FPGA‌ و بالاتر رفتن سرعت کلاک سیستم، ساخت بوردهای مدارهای چاپی روز به روز سخت تر می‌شود. طراحان سخت افزار می‌دانند که کنترل تمامیت یک سیگنال در زمان انتشار یا همان Signal Integrity بخش مهمی است و حتما باید مورد توجه قرار بگیرد. مفهوم امپدانس قابل کنترل دیجیتال یا DCI دقیقا برای پاسخ گویی به چنین نیازی طراحی شده است. به بیان ساده‌تر DCI جایگزینی برای مقاومت‌های ترمینیشن خارجی است که معمولا در اتصال اینترفیس‌های تفاضلی به FPGA مورد نیاز است. مسئولیت بکارگیری این ویژگی برعهده مهندس طراح نرم افزار است.

@Hexalinx
#Essentials
#IOB

آشنایی با بخش‌های مختلف بلوک‌های ورودی و خروجی در FPGA

✳️ دسته بندی IO ها درون FPGA در قالب بانک‌های IO انجام می‌شود. تعداد این بانک‌ها کاملا به نوع تراشه و پکیج آن وابسته است. در حالت کلی خواص الکتریکی IO با توجه به قیودی که برای هر بانک تعریف می‌شود محدود می‌شوند.

با توجه به متفاوت بودن تعداد بانک‌های بسادگی می‌توان حدس زد که تعداد IO های درون تراشه نیز با توجه به نوع پکیج و منابع درون تراشه متفاوت است. این IO‌ ها با استفاده از ابزارهای گرافیگی Xilinx به سادگی قابل پیکره‌بندی هستند و با بسیاری از استانداردهای الکتریکی سازگار هستند. توجه شود که تمامی پین‌های فیزیکی روی تراشه به صورت IO قابل استفاده نیستد. با این وجود تعداد قابل توجهی از آن‌ها به عنوان ورودی‌ خروجی‌های همه منظوره در دسترس هستند. در هر پکیج بجز تعداد محدودی از پایه‌ها که به تامین تغدیه مورد نیاز تراشه و پیکره‌بندی تراشه اختصاص دارند، سایر پایه‌ها تقریباً مشابه هم هستند و قابلیت‌های یکسانی دارند.

❗️مطالعه ادامه این مقاله

@Hexalinx
#XADC
#Intermediate

سیگنال آنالوگ در FPGA

✳️در کنار منابع دیجیتالی مرسوم موجود در تراشه‌های FPGA شرکت Xilinx همچون بلوک‌های منطقی قابل پیکره بندی #CLB، بلوک‌های ضرب کننده #DSP_BLOCK و بلوک‌های حافظه #BLOCK_RAM، یک بلوک کاملا آنالوگ نیز درون این تراشه‌ها وجود دارد. این بلوک برای کاربردهایی که نیاز به پردازش ترکیبی سیگنال‌های آنالوگ و دیجیتال دارند بکار گرفته می‌شود. این بلوک آنالوگ در تراشه‌های نسل قبل همچون Vitex 5 و Virtex 6 تحت عنوان System Monitor و در تراشه‌های سری ۷ به بعد تحت عنوان #XADC شناخته می‌شود.

بلوک XADC متشکل از یک ADC دو کاناله ۱۲ بیتی با حداکثر نرخ نمونه برداری 1 مگا سمپل بر ثانیه (MSPS) به همراه تعدادی سنسور و مدارات کنترلی است. در واقع XADC به عنوان یک ورودی آنالوگ همه منظوره برای FPGA‌ در نظر گرفته می‌شود و کاربردهای فراوانی را می‌توان برای آن برشمرد.

@Hexalinx
#News

بالاخره بعد از حدود یک ماه نسخه رسمی پلتفرم نرم افزاری Vitis معرفی شد، نسخه 2019.2 .
✳️ چندتا نکته جالب وجود داره. اول اینکه حدود 30GB سایز دانلودی شماست و به بیش از 80GB فضا برای نصبش نیاز دارید.
✳️ این نسخه تنها نسخه‌ای که برای ویندوز 7 عرضه شده و نسخه‌های بعدی تنها برای ویندوز 10 عرضه خواهد شد. همینطور این نسخه آخرین نسخه‌ای که از 32-bit HW server tools پشتیبانی میکنه !!!
✳️ برخلاف چیزی که به نظر می‌رسید، open source نیست و به لایسنس نیاز داره.
این پلتفرم شامل تمامی ابزارهای توسعه Xilinx میشه. در واقع به نظر میرسه دو محیط توسعه SDAccel و SDSoC به صورت یکپارچه کنار هم قرار گرفتن. پکیج دانلودی شامل موارد زیر است.
•SDSoC
•SDAccel
•Vivado-HL
•Vivado-HLS
•Model Composer
•System Generator
•SDK
❗️نکته جالب اینجاست که تا پیش از این SDAccel نسخه ویندوز نداشت!!!
❗️البته پتالینوکس همچنان باید به صورت جداگانه دانلود و نصب بشه. و روی لینوکس نصب بشه.

@Hexalinx
#Essentials
#Barrel_Shifter

احتمالا شما هم هنگام پیاده‌سازی یک الگوریتم روی FPGA به مداری که نیاز به انجام شیفت متغیر داشته باشد، برخورد کرده‌اید. مدار Barrel Shifter یک مدار ترکیبی است که قابلیت انجام شیفت متغیر چند بیتی را به تعداد دلخواه در یک کلاک فراهم می‌آورد و در معماری آن، به جای استفاده از فلیپ فلاپ یا سایر المان‌های حافظه از مالتی‌پلکسر استفاده می‌شود.

❗️اگر به این موضوع علاقمند هستید ادامه این مطلب را در سایت هگزالینکس مطالعه بفرمایید.

ادامه مطلب ...

@Hexalinx
#Advanced
#Vitis

وقتی که کار با Vitis را آغاز می‌کنیم، اولین چیزی که توجه‌ ما را جلب می‌کند، جایگزین شدن SDSoC ، SDAccel و حتی SDK با مجموعه نرم افزاری Vitis است. به عنوان یک ابزار یکپارچه، در واقع قرار است Vitis برای توسعه یک سیستم نهفته دقیقاً مشابه SDK و یا شتاب دهی یک اپلیکیشن کاملا مشابه SDSoC و SDAccel بکارگرفته شود.

ادامه مطلب ...

@Hexalinx
#Advanced
#clock_monitoring

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

ادامه مطلب ...

@Hexalinx
#Advanced
#HLS

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

ادامه مطلب ...

@Hexalinx
#Advanced
#HLS

در مقاله کار با حلقه‌ها در HLS با چگونگی بهینه سازی حلقه‌ها در کدهای HLS آشنا شدیم. روش یکپارچه کردن، ترکیب کردن و باز کردن حلقه‌ها را روی کدهای عملی بررسی کردیم. در این مطلب قصد داریم، چگونگی بهینه سازی به کمک analysis perspective در محیط Vivado-HLS را با هم مرور کنیم. بنابراین در انتهای این مقاله قادر خواهیم بود با تحلیل نتایج پیاده‌سازی بهترین الگو برای اعمال تغییرات روی ساختار کدها را شناسایی کنیم و در می‌یابیم که چه شکل از بهینه سازی در افزایش کارایی کدهای HLS تاثیرگذارتر است.

کار با حلقه‌ها در HLS >>
بهینه سازی به کمک Analysis Perspective >>

@Hexalinx
#Advanced
#Retiming, #Vivado, #STA

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

تکنیک retiming در ابزار سنتز Vivado >>

@Hexalinx