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
#Basic
#CLB, #SLICE
معرفی Slice و CLB بخش اول

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

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

📋 در شکل بالا نحوه اتصال دو CLB به یک سوییچ ماتریس نشان داده شده است. اسلایس ها از طریق این سوییچ ماتریس ها به شبکه سرتاسری مسیرها در FPGA دسترسی پیدا می کنند. در این مسیرهای سرتاسری، مسیرهای مجزا برای داده و کلاک در نظر گرفته شده که در شکل نیز با نام Clk و Data نشان داده شده اند. در حالت کلی کاربر روی نحوه استفاده از سوییچ ها و مسیریابی بین عناصر موجود در تراشه دخالت نمی کند و این کار به صورت اتوماتیک توسط ابزار و در مرحله post place & route انجام می شود.
.
@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
#Basic

معرفی اجمالی جریان طراحی روی FPGA

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

@Hexalinx
#Basic

✳️ در حالت اول کاربر با اتصال یک پروگرامر بین کامپیوتر و تراشه FPGA با استفاده از پورت JTAG ، تراشه FPGA را پیکره بندی می کند. برای این کار تنها نیاز است طراح فایل bit خروجی را توسط ابزارهای طراحی تولید کند و باقی کارها تنها با چند کلیک انجام می شود. این روش پیرکره بندی در پروسه طراحی و زمانی که هنوز پروژه نهایی نشده است انجام می شود.

✳️ در حالت دوم نیاز به استفاده از پروگرامر برای پیکره بندی FPGA نیست و از پروگرامر برای پیکره بندی حافظه فلش استفاده می شود و ممکن است یکی از دو اتفاق زیر بیافتد.

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

در روش اول تراشه FPGA در اصطلاح master است و مسئولیت صفر تا صد کار را برعهده می گیرد. در این روش طراح نیاز دارد علاوه بر ساخت فایل bit خروجی، فایل مناسب برای پیکره بندی حافظه فلش را نیز تولید کند. با توجه به نوع حافظه این فایل ممکن است پسوند mcs یا bin یا داشته باشد. در روش دوم که در آن FPGA در اصطلاح slave است. طراح علاوه بر ساخت فایل مورد نیاز حافظه فلش باید پروتکل مورد نیاز برای برنامه ریزی تراشه FPGA را نیز برای پردازنده کمکی پیاده سازی کند.

@Hexalinx
#Basic
#2’s_Complement
الفبای محاسبات علامت دار در FPGA

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

@Hexalinx
#Basic
#ISIM
مشکل استفاده از ISIM برای شبیه سازی مدارت در windows 10

✳️ در صورتی که از windows 10 استفاده می کنید و برای اجرای نرم افزار ISIM‌ و شبیه سازی طراحی مشکل دارید. زیاد نگران نباشید چون راه حل آن چندان پیچیده نیست.
شما ممکن است در زمان اجرا با این خطا روبرو شوید.
ERROR:Simulator:861 - Failed to link the design

❗️برای برطرف کردن مشکل تنها کافی است به پوشه زیر مراجعه کنید و فایل “collect2.exe” رو حذف کنید.
installation directory \ Xilinx \ 14.x \ ISE_DS \ ISE \ gnu \ MinGW \ 5.0.0 \ nt \ libexec \ gcc \ mingw32 \ 3.4.2 \ collect2.exe

@Hexalinx
#Basic
#MUX

مالتی‌پلکسرها در FPGA

❗️مالتی پلکسرها غالبا با استفاده از عبارت شرطی IF یا CASE در زبان HDL تولید می‌شوند.
❗️استفاده عبارت IF/THEN/ELSE منجر به تولید یک انکدر اولویت‌دار می‌شود.
❗️استفاده از عبارت CASE منجربه تولید یک کدکننده پیچیده می شود. بدون اینکه اولویتی داشته باشند.

در طراحی مالتی‌پلکسرها چند نکته باید در نظر گرفته بشود.

1️⃣ تاخیر و سایز مالتی پلکسرها به تعداد ورودی‌ها و تعداد عبارت IF/THEN یا CASE که تو در تو تعریف شده‌اند، بستگی دارد.
2️⃣ لچ‌های ناخواسته یا فعال سازهای کلاک زمانی که عبارات شرطی تمام حالات را در برنگیرند تولید می‌شود. برای پیدا کردن چنین مواردی در کدها باید به دقت گزارش های سنتز را مطالعه و بررسی کرد.
3️⃣ اگر نیاز به استفاده تو در تو از عبارت شرطی IF بود مهمترین شرط را در بایددر ابتدا قرار دهیم و تا خروجی آن کمترین مسیر بحرانی را داشته باشد. عبارت که در ELSE آخر قرار می گیرد به لحاظ اهمیت کمترین ارزش را دارد و خروجی حاصل از آن می‌تواند مسیر طولانی‌تری را طی کند.

@Hexalinx
#Basic
#Fanout

مفهوم fanout در مدرات دیجیتال

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

❗️بالا بودن بیش از حد fanout یک سیگنال در طراحی علاوه بر مصرف حجم زیادی از منابع #routing ممکن است باعث بروز مشکلات زمان‌بندی در طرح بشود و عملکرد آن را مختل کند.

@Hexalinx
#Basic
#Reset

آیا لازم است بعد از پیکره‌بندی FPGA، آن را ریست کنیم؟ آیا لازم است یک ریست اولیه قبل از شروع به کار ماژول یا سیستم پیاده‌سازی شده، اعمال شود و تمام مقادیر رجیسترهای میانی را مقدرا دهی کند؟ چگونه باید برای پیاده‌سازی های خودمان روتیم por یا power on reset ایجاد کنیم؟

ممکن است در زمان اجرای پروژه با سوالاتی مشابه سوالات بالا روبرو شده باشید و آن‌ها را بدون پاسخ رها کرده باشید. در این پست کوتاه سعی می کنیم به صورت مختصر به چند مورد از این سوالات پاسخ بدهیم. 👇

@Hexalinx
#FIR, #FILTER, #SYSGEN
#Basic

✳️ فرض کنیم به تازگی مشغول کار در شرکتی شده‌اید که کار اصلی آن پیاده سازی الگوریتم‌های پردازش سیگنال است. شرکت در حال کار روی فیلترهای دیجیتال است و تصمیم دارد در محصول جدیدش فیلترهای آنالوگ قدیمی را با فیلترهای دیجیتال جدید جایگزین کند. هدف از این جایگزینی هم بهبود عملکرد سیستم و کاهش هزینه تمام شده محصول است. این جایگزینی مزایای رقابتی قابل ملاحظه‌ای نیز به همراه دارد و احتمالاً باعث محبوبیت مضاعف این محصول جدید در بازار می‌شود.

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

❗️حالا سؤال اینجاست اگر شما واقعاً در چنین موقعیتی قرار بگیرید، از کجا شروع می‌کنید؟

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

@Hexalinx
#FIR, #FILTER, #VIVADO
#Basic, #Intermediate

✳️ دروازه ورود به دنیای پردازش سیگنال در FPGA از طریق فراگیری الفبای پیاده سازی یک فیلتر FIR در Vivado به صورت کاملاً ممیز ثابت و شبیه سازی آن با تست بنچ‌ HDL در یک قدمی شماست...
👈 چند هفته پیش بود که آموزشی در رابطه با طراحی یک فیلتر FIR با ابزار System Generator for DSP منتشر کردیم. این هفته در یک مقاله بسیار مفصل با آموزش پیاده سازی یک فیلتر میان گذر، تک کانال و تک نرخ با استفاده از FIR Compiler IP Core در Vivado به نزد شما بازگشتیم.

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

@Hexalinx
همراهان عزیز هگزالینکس:
برای جستجو در مطالب منتشر در کانال می‌توانید از کلید واژه‌ها یا هشتگ های زیر استفاده کنید. امیدوارم آموزش‌های تخصصی هگزالینکس در این مدت انتظارات شما را برآورده کرده باشد.
دسته بندی بر اساس سطح و پیچیدگی مطالب:
#Basic
#Essentials
#Intermediate
#Advanced

دسته بندی براساس ابزارهای طراحی
#VIVADO_HLS
#SYSGEN
#VITIS
#VIVADO
#ISE
#ISIM
#SDSoC

دسته بندی موضوعی
#FIR
#FILTER
#PETALINUX
#LINUX
#AXI
#AXIVIP
#AXI_Lite
#CDC
#Clock_Domain_Crossing
#FIXED_POINT
#CHIPSCOPE
#TCL
#DDR
#ZYNQ
#IOB
#Barrel_Shifter
#wire_bonding
#Pipelining
#device_tree
#Clock_Gating
#Clock
#Reset
#Fanout
#Digital_Filter
#Static_Timing_Paths
#Clock_skew
#U_BOOT
#SSBL
#BUFGCE
#BUFHCE
#MUX
#DCM
#CMT
#QEMU
#BARE_METAL
#CLB
#LUT
#DISTRIBUTED_RAM
#PYNQ
#HLS
#ILA
#VIO
#STA
@Hexalinx
#Basic
✳️ تاکنون مقاله‌های متعددی در رابطه با مفاهیم پایه‌ایی و مقدماتی الگوریتم‌های fixed point در هگزالینکس منتشر شده است. طراحی و پیاده سازی فیلتر FIR روی FPGA یکی از اولین چالش‌های است که هر مهندس فعال در این حوزه با آن دست و پنجه نرم می‌کند. ما در هگزالینکس شما را تنها نگذاشته‌ایم به صورت مفصل به این موضوع پرداختیم.

❗️اگر در ابتدای راه فراگیری هستید و قصد یادگیری اصول پیاده سازی ممیز ثابت الگوریتم‌های پردازش سیگنال را دارید.
❗️اگر در نوشتن تست بنچ مشکل دارید و به دنبال این هستید تا یک تست بنچ مناسب برای طراحی‌های خود تهیه کنید.
❗️اگر درک ماهیت دستورات fixed point در Matlab برای شما دشوار است.
❗️اگر علاقمند به استفاده حداکثری از IP Integrator و System Generator برای طراحی های خودتان هستید و اگر بسیاری از سوألات این‌چنینی ذهن شما را مشغول کرده است. با ما همراه شوید.

🔖 در دو مقاله اخیر منتشر شده در سایت به شکل مفصل به این موضوع پرداخته‌‌ایم و دو راه حل کاملاً متفاوت برای نیل به یک هدف واحد را به تصویر کشیدیم.

طراحی فیلتر FIR با ابزار System Generator for DSP
پیاده سازی فیلتر FIR در Vivado

@Hexalinx
#Basic, #DSP48

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

✳️ ما مدت‌هاست در #هگزالینکس به دنبال انتشار مقاله‌ای در رابطه با معرفی انواع متفاوت بلوک‌های DSP48 و مقایسه قابلیت‌های آن‌ها در نسل‌های مختلف تراشه‌های تولیدی شرکت Xilinx هستیم. اکنون فرصتی دست داده است تا به رسالت خودمان عمل کنیم و به شکل ویژه‌ای به این موضوع بپردازیم. پس بدون فوت وقت به سال ۲۰۰۴ بر می‌گردیم، زمانی که برای اولین بار تراشه‌های Virtex-4 با اتکا به یک واحد سخت افزاری اختصاصی برای پردازش سیگنال به نام XtremeDSP DSP48 Slice معرفی شدند.

مطالعه متن کامل مقاله »

@Hexalinx
#Basic
#CMT, #DCM, #PLL, #MMCM

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

بلوک‌های مدیرت کلاک در نسل‌های مختلف تراشه‌های Xilinx با عناوین متفاوت و البته کاربردهای بعضاً مشابهی معرفی شده اند. آشنایی با واژه هایی مثل DCM و MMC و PLL و مفاهیمی همچون Clock Region و CMT می‌تواند به درک صحیح تفاوت‌ها و شباهت‌های عناصر تاثیر گذار در ساختار درخت کلاک کمک کند.

🔖 در این مقاله نگاهی متفاوت به تاریخچه‌ و سیر تکاملی بلوک‌های مدیریت کلاک در نسل‌های مختلف تراشه‌های FPGA شرکت Xilinx خواهیم داشت، و مسیری را که برای دستیابی به بلوغ فعلی طی شده است، مرور خواهیم کرد.

مطالعه متن کامل مقاله »

@Hexalinx