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

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

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

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

آدرس اینستاگرام:
insatagram.com/hexalinx_go
Download Telegram
🔖 با سلام و عرض ادب خدمت همراهان گرامی که به ما اعتماد کردید و اجازه دادید با مطالب علمی کوتاه در خدمتتون باشیم، ضمن تشکر از شما لازم می دونم جهت بهره برداری هر چه بهتر از مطالب ارائه شده چند نکته رو به اطلاعتون برسونم.

مطالب آموزشی غالبا به صورت پیوسته ارائه نمی شوند و برحسب نیاز منتشر می شوند، اما با توجه به هشتک ها به راحتی میشه بهشون دسترسی پیدا کرد.

تا به امروز مطالب در سه سطح ارائه شده اند

1️⃣ سطح اول که برای بیان مبانی کار و مفاهیم اولیه است #Essentials
2️⃣ سطح دوم که برای افرادی است که مدتی است در دنیای طراحی سخت افزاری حضور دارند و دنبال تکمیل مهارتهاشون هستند. #Intermediate
3️⃣ و سطح سوم که کاملا به طرح موضوعات پیشرفته و روز دنیا می پردازه و برای کسانی است که سالها در این حوزه فعالیت داشتند. #Advanced

بعلاوه اینکه با استفاده از هشتک های مناسب دسته بندی موضوعی روی نکات هم انجام شده، به عنوان مثال مهندسانی که تمایل داشته باشند در جریان کلیه اطلاعات ارائه شده در رابطه با تراشه Zynq قرار بگیرند، می توانند به راحتی با جستجوی #Zynq به نتیجه مطلوب خود برسند.

در آینده با راه اندازی کامل سایت، مقالات کاملا کاربردی و عمیق خدمتتان ارائه می گردد.

پیروز و سلامت باشید.

@Hexalinx
#High_Level_Synthesis
#HLS
#Advanced
سنتز سطح بالا چیست؟

زمان بر بودن پروسه طراحی سخت افزار در سطح رجیستر RTL و همچنین انعطاف پذیری پایین در اصلاح یک مدار از پیش طراحی شده از چالش های بزرگی هستند که طراحان سخت افزار در FPGA همواره با آن روبرو هستند، از این رو شرکت های سازنده تراشه FPGA همواره در صدد ارائه ابزاری جهت برنامه نویسی سطح بالا برای این تراشه ها بوده اند، در سالهای اخیر شرکت XILINX ابزار سنتز سطح بالای خود به نام VIVADO HLS را ارائه داده است و همچنین تلاش های فراوانی جهت توسعه هر چه بیشتر اون انجام داده. این ابزار می تواند الگوریتم های ارائه شده به زبان C و C++ را به مدارات RTL جهت پیاده سازی بر روی تراشه های FPGA تبدیل کند. در حقیقت HLS بعد از زبان های HDL که جایگزین طراحی شماتیک در سطح گیت شدند، گامی مهم دیگری در جهت کاهش پیچیدگی های طراحی و همچنین افزایش بهره وری است.

@Hexalinx
#Place_and_Route, #PAR
#Native_Circuit_Description, #NCD
#Intermediate
منظور از جانمایی و مسیر یابی در FPGA چیست؟

فرایند جانمایی و مسیر یابی یا همان place and route - PR فایل NCD تولید شده در فرایند MAP را تحویل می گیرد و با جانمایی عناصر موجود در طرح و برقراری ارتباطات و اتصالات بین آنها فایل NCD جدیدی تولید می کند که برای تولید بیت فایل خروجی توسط BitGen مورد استفاده قرار می گیرد.
فایل NCD فایلی است که توصیفی محلی از مدار طراحی شده را در خود ذخیره می کند.

@Hexalinx
#PYNQ
#Python
#Advanced
پروژه PYNQ چیست؟


پروژه PYNQ یک پروژه منبع باز یا Open-Source است که برای تسهیل فرایند طراحی سیستم های تعبیه شده (embedded) روی تراشه های ZYNQ توسط Xilinx ارائه شده است. در این پروژه طراحان با بکاگیری زبان برنامه نویسی و کتابخانه های پایتون قادر خواهند بود به بهترین شکل از مزایای بخش برنامه پذیر و پروسسور ARM موجود در تراشه ZYNQ استفاده کنند و سیستم های خود را توسعه دهند، در واقع PYNQ پروژه ای است که برای توسعه دهندگان نرم افزار (و نه سخت افزار) که علاقه مند به بهره گیری از قابلیت های ZYNQ هستند توسعه داده شده است.

@Hexalinx
HEXALINX pinned «لطفا به ما بگویید علاقه مند به کدامیک از موضوعات زیر هستید، با توجه به متفاوت بدون سطوح مهارتی اعضای کانال، به ما کمک کنید تا مطالبی متناسب با نیازهای شما ارائه بدهیم.»
🌐 سوالات کاربران

آیا برای FFT دو بعدی هم IP Core داریم؟
اگر نداریم چجوری باید پیاده سازی بشه، چون در FFT دو بعدی داده ها دو بار باید ترانهاده بشوند. نحوه ترانهاده کردن داده ها به چه صورته؟ در صورتی که داده های ما به صورت یک بعدی وارد FFT می شوند.

✳️ متاسفانه پاسخ به این سوال خیر است و برای FFT دوبعدی IP Core وجود نداره.
اما باید توجه داشت که ترانهاده کردن یک ماتریس در FPGA عملا هیچ عملیات اضافی نداره، در ماتریس ترانهاده فقط جای عناصر ماتریس با هم عوض میشه، چون در FPGA ماتریس ها همانند بردارها به صورت پشت سرهم ذخیره می شوند، عملا فقط با کنترل آدرس یک حافظه میشه یک ماتریس رو به صورت ساده یا به صورت ترانهاده از داخل یک حافظه بازخوانی کرد.

@ask_linx
@Hexalinx
#Basic
#CLB, #SLICE
معرفی Slice و CLB بخش اول

کلیه تراشه های شرکت Xilinx که بعد از Virtex-6 به بازار عرضه شدند تقریبا دارای منابع منطقی یکسانی هستند. برای آشنایی بیشتر با این منابع ادامه مطلب را در پست زیر مطالعه بفرمایید. 👇

@Hexalinx
📋ابتدایی ترین و اصلی ترین منابع برای طراحی روی تراشه های FPGA شرکت Xilinx بلوک های منطقی قابل برنامه ریزی (CLBs) هستند. هر CLB متشکل از دو اسلایس (Slice) است. این اسلایس ها همانطور که در شکل نشان داده شده است، به ماتریسی از سوییچ ها متصل هستند و از آن برای برقراری ارتباط با سایر اسلایس ها و یا سایر منایع موجود در تراشه استفاده می کنند.

📋 اسلایس ها از رجیستر ها و LUT ها ساخته شده اند. جداول درستی یا LUT ها دقیقا همان عناصری هستند که برای ساخت مدارات ترکیبی مورد استفاده قرار می گیرند. هر کدام دارای رجیستر اختصاصی هستند و از ترکیب این LUT ها و رجیسترهای متناطرشون به همراه یکسری عناصر دیگر اسلایس ها شکل می گیرند.

📋 در کنار LUT ها و رجیستر ها، زنجیره بیت نقلی (Carry Chain) که در محاسبات ریاضی بسیار پرکاربرد هست و باعث افزایش چشمگیر سرعت انجام محاسبات می شود نیز در درون اسلایس ها وجود دارد. (در شکل با عبارت CIN و COUT نشان داده شده است.

@Hexalinx
#Basic
#CLB, #SLICE, #PAR
معرفی Slice و CLB بخش دوم

📋 در شکل بالا نحوه اتصال دو CLB به یک سوییچ ماتریس نشان داده شده است. اسلایس ها از طریق این سوییچ ماتریس ها به شبکه سرتاسری مسیرها در FPGA دسترسی پیدا می کنند. در این مسیرهای سرتاسری، مسیرهای مجزا برای داده و کلاک در نظر گرفته شده که در شکل نیز با نام Clk و Data نشان داده شده اند. در حالت کلی کاربر روی نحوه استفاده از سوییچ ها و مسیریابی بین عناصر موجود در تراشه دخالت نمی کند و این کار به صورت اتوماتیک توسط ابزار و در مرحله post place & route انجام می شود.
.
@Hexalinx
#PYNQ
#ZYNQ
#Advanced
معرفی بورد PYNQ-Z1 برای پروژه PYNQ

بورد PYNQ-Z1 برای اجرای پروژه منبع باز PYNQ یک روی تراشه های ZYNQ توسط شرکت Digilent طراحی و ارائه شده است. مهمترین امکانات این بورد به شرح زیر است.
❗️تراشه XC7Z020-1CLG400C
❗️حافظه 16 بیتی DDR3 با ظرفیت 512MB
❗️فلش QSPI با ظرفیت 16MB
❗️تغذیه مستقل از USB یا آداپتور کمکی
❗️پشتیبانی از Micro SD
❗️پشتیبانی از USB Host
❗️پشتیابنی از USB-UART
❗️پشتیبانی از USB-JTAG
❗️پشتیبانی از Ethernet PHY
❗️میکروفن
❗️پورت HDMI
❗️کلید فشاری، سوییچ و LED
❗️کانکتور Arduino

🔖 با وجود اینکه بورد PYNQ-Z1 به طور اختصاصی برای پروژه PYNQ به کار گرفته می شود، اما این بورد یک نمونه کاملا ارزان قیمت و آکادمیک است و به تراشه Zynq مجهز شده است و به راحتی می تواند برای کلیه آموزش های پایه ای و البته حرفه ای مورد استفاده قرار بگیرد.

@Hexalinx
🔖 با توجه به نتایج نظر سنجی و علاقه شما عزیزان به مطالب پایه ای VHDL و FPGA از این هفته به بعد، به صورت مداوم آموزش های کوتاهی در قالب ویدیو و متن های کوتاه با کمله کلیدی #Basic ارائه می شود که امیدوارم به بهترین شکل پاسخگوی نیاز شما باشد.

🔖 علاوه بر این به پاس اعتماد شما، یک سرفصل کاملا جدید با عنوان پردازش سیگنال روی FPGA برای شما تدارک خواهیم دید و در قالب ویدیو و مقالات کاربردی خدمتتان ارائه خواهیم کرد. نکات آموزشی در رابطه با محاسبات ممیز ثابت، فیلترهای دیجیتال، IP Core های پرکاربرد، تکنیک های به اشتراک گذاری منابع و ... از جمله مواردی هستند که در این سلسله آموزش ها پوشش داده می شوند و در غالب کمله کلیدی #DSP بیان می گردند.

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

این آغاز ماجراجویی شماست، با ما همراه باشید ...

@Hexalinx
#Basic
#SLICE
اسلایس ها از چه چیزهایی تشکیل شده اند؟

1️⃣ چهار جدول درستی 6 ورودی (6x-Input-LUT)
2️⃣ مالتی پلکسر های عریض (Wide Multiplexers)
3️⃣زنجیره نقلی (Carry chain)
4️⃣ شیفت رجیسترها (SRLs)
5️⃣ چهار فلیپ فلاپ/ لچ (flip-flops/latches) بعلاوه چهار فلیپ فلاپ اضافی

@Hexalinx
#Basic
#SLICE, #SLICER, #SLICEM

انواع اسلایس در FPGA های سری 7

🔖 کلیه منابع موجود درون اسلایس ها برای محاسبات منطقی، محاسبات ریاضی و ذخیره سازی به عنوان ROM قابل استفاده هستند. در معماری تراشه های سری 7 دو نوع Slice و دو نوع CLB وجود دارد.

1️⃣ اسلایس منطقی و محاسباتی (SLICER)
این اسلایس ها با بکارگیری منابع درونی خود به عنوان منابع منطقی، محاسباتی و ROM مورد استفاده قرار می گیرند.

2️⃣ اسلایس کامل (SLICEM)
این اسلایس ها علاوه بر انجام محاسبات منطقی، ریاضی و ROM از دو عملکرد اضافی نیز پشتیبانی می کنند و می توانند به عنوان حافظه (RAM) و یا شیفت رجیستر (Memory/SRL) مورد استفاده قرار بگیرند.

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

@Hexalinx
#FLY_BY
#DDR3
#Intermediate
تفاوت توپولوژی Fly_by و T در اتصال حافظه های DDR3/4.

✳️ در اتصال حافظه های DDR3/4 به پردازنده و FPGAها، مسیرهای کلاک، آدرس و کنترل می‌توانند به دو صورت Fly_by یا T متصل شوند.

افزایش فرکانس کاری، کاهش مقدار و طول stub های مسیر و درنتیجه بهبود SI و زمانبندی سیگنال‌های حافظه، از مزایای توپولوژی Fly_by است. بعلاوه این توپولوژی به علت انحراف بسیار اندک زمانبندی بین سیگنال‌های گروه آدرس و گروه داده باعث کاهش نویز سوئیچینگ همزمان (SSN) می‌شود.

توپولوژی T در هنگام مسیریابی و طراحی PCB بسیار پر چالش است اما با این حال این توپولوژی نیز کاربردهای خودش را دارد.

طراحی و مسیریابی Fly_by ساده‌تر از T است. اما این توپولوژی برای فعالیت‌های با ظرفیت بالا و قطعاتی مانند LPDDR3 DDP(Double die package) یا QDP خوب کار نمی‌کند. هرچند در قطعات SDP توپولوژی Fly_by راه کم دردسرتری است.
#Hexalinx
#Adaptive_Compute_Acceleration_Platform
#ACAP
#Advanced
معرفی ACAP

شرکت Xilinx پلتفرم شتاب دهی محاسباتی تطبیقی خود یا همان ACAP را با هدف کمک به مراکز داده برای پاسخ به سونامی تقاضای محاسبات مورد نیاز هوش مصنوعی توسعه داده است. در واقع ACAP یک معماری محاسباتی چند هسته ای قابل برنامه ریزی و ناهمگن است که می تواند در طول عملیات به صورت پویا ظرف چند میلی ثانیه ویرایش شود تا پاسخگوی تغییرات بوجود آمده در حجم محاسبات باشد. شرکت Xilinx ادعا می کند که تراشه های 7 نانومتری جدیدش بسیار قدرتمندتر از ترکیب CPU و GPU هستند و راندمان کاری بالاتری به ازای هر وات توان مصرفی ارائه می دهند.

@Hexalinx
#ZYNQ

استفاده از تراشه های Zynq 7000 و Zynq ultrascale plus به عنوان کنترلر اصلی در ماشین های استخراج بیت کوین شرکت Bitman.

بر اساس ادعای شرکت سازنده با استفاده از تراشه zynq با توان مصرفی کمتری می توان به حداکثر راندمان دست یافت. علاوه بر این BOM و فضای مصرفی روی بورد نیز کاهش پیدا می کند.

البته توجه داشت باشید که خود تراشه zynq برای استخراج مورد استفاده قرار نمی گیره و این کار غالبا با تراشه های ASIC انجام می شه.

https://www.aparat.com/v/QMKG1

@Hexalinx
#Essentials

آیا تا به حال به اهمیت رعایت مساله زمانبندی در طراحی های FPGA فکر کردید؟ آیا با مفاهیم ساده و اولیه سنجش کارایی یک پیاده سازی آشنایی دارید؟ تا به حال به این فکر کردید که چرا برخی از پیاده سازی ها با وجود اینکه نتایج شبیه سازی آن ها کاملا درست است، اما نتایج سخت افزاری کاملا اشتباه و نامعتبر دارند؟
به طور کلی انجام مجاسبات ریاضی و پردازش سیگنال در FPGA نیازمند رعایت اصول پیاده سازی خاص در این مدارهاست، سوال اینجاست که اگر این اصول رعایت نشود، چه مشکلی پیش می آید؟

قبل از پاسخ به این سوال اجازه بدهید در پست زیر یکسری مفاهیم مقدماتی را به زبان ساده توصیف کنیم. هر طراح FPGA باید با مفاهیمی همچون #Race_Condition و #Glitch آشنایی داشته باشد تا بتواند دلیل رعایت یکسری از اصول را در برنامه نویسی متوجه شود، و برای آن ها راه حل مناسب پیدا کند. این آغاز ماجراجویی شماست، با ما همراه باشید ...

@Hexalinx
#Race_Condition
#Metastabilty
#Glitch

✳️ رخداد #Race_Condition نتیجه و حاصل یک طراحی نامناسب برای یک لچ یا فلیپ فلاپ در FPGA است. در واقع نشان دهنده وضعیتی است که در آن داده و کلاک ورودی به یک فلیپ فلاپ در یک زمان تغییر می کنند و نتیجه خروجی بستگی به این دارد که کدام یک از این دو در اصطلاح برنده شود.

✳️ در موارد نادر، ممکن است در زمان تغییر وضعیت کلاک، داده دقیقا برابر 0 و یا 1 باشد ، ولی در اکثر موارد داده مقداری بین 0 و یا 1 دارد، یعنی در بازه زمانی گذر از حالت low به حالت high قرار دارد. در این چنین شرایطی خروجی برای یک لحظه بین 0 و 1 باقی می ماند، (برای مثال در یک سیستم با ولتاژ 5V ، خروجی ممکن است برای مدت زمان خیلی کوتاهی مثلا چند نانو ثانیه حدود 2.5V باشد. هنگامی که این اتفاق می افتد در اطلاح گفته می شود خروجی ناپایدار یا #Metastable است. ناپایدار بودن باعث ایجاد اثرات جدی و منفی بر روی عملکرد سیستم می شود از همه بدتر اینکه، تقریبا تکرار پذیری این حالت ناپایدار تقریبا غیرممکن است و بنابراین پیدا کردن منشا خطا و برطرف کردن آن بسیار سخت است.

✳️ مسئله ناپداری در خروجی فقط مختص به فلیپ فلاپ ها نیست و ممکنه به دلیل تاخیر وضعیت نامتناسب در ورودی های گیت های منطقی نیز وجود داشته باشد و باعث ایجاد مشکلات ناخواسته بشود، این رخداد نیز در اصطلاح #Glitch نامیده می شود.

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

@Hexalinx