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
#Clock_Skew
#Intermediate
کجی کلاک چیست و چه عملکردی روی سیستم دارد؟

✳️ واژه کجی کلاک معادل فارسی عبارت Clock Skew است که گاها کجی زمانبندی نیز نامیده می شود. پدیده ای در مدارات دیجیتال سنکرون است که در آن دو بلوک که از یک منبع کلاک تغذیه می شوند به دلیل وجود تاخیر در مسیر کلاک متصل به آن دو عنصر در دو زمان متفاوت یا با یک تاخیر کوتاه نسبت به هم به لحاظ زمانی کلاک را دریافت می کنند.
برای تحلیل کجی کلاک و از بین بردن تاثیر منفی آن در عملکرد سیستم دو آنالیز setup time و hold time انجام می شود. برای محاسبه پارامترهای setup time و hold time لازم است، اختلاف زمانی بین تاخیر سیگنال کلاک تا عنصر سنکرون مقصد نسبت به تاخیر کلاک تا عنصر سنکرون مبدا در مسیر انتقال داده محاسبه شود (به شکل مراجعه شود)

@Hexalinx
#Intermediate

✳️ براساس توصیه Xilinx برای ساخت یک کپی از کلاک روی پین‌های تراشه و استفاده از آن خارج از FPGA بهتر است از یک الگوی خاص و استاندارد استفاده شود. این الگو Clock Forwarding نام دارد.

✳️ برای این کار باید از بلوک ODDR در داخل IOB های تراشه های سری ۷ یا بلوک ODDR2 در تراشه های Spartan 6 استفاده کرد.

✳️ برای تراشه های سری ۷ کافیست پایه D1 در ورودی ODDR به مقدار منطقی ‘1’ و پایه D2 باید به مقدار منطقی ‘0’ متصل بشود و کلاکی که باید خروجی شود به پایه C متصل شود. به این ترتیب یک کپی از کلاک روی پین تراشه قرار داده می‌شود. در این بلوک پایه‌های ست و ریست (S/R) به صورت همزمان پشتیبانی نمی‌شوند.

✳️ استفاده از ODDR2 در تراشه‌های Spartan 6 تا حدودی متفاوت است، برای خروجی کردن یک کلاک روی پایه‌های تراشه‌ها باید از DCM نیز کمک بگیریم و یک کلاک با اختلاف فاز ۱۸۰ درجه تولید کنیم. کلاک اصلی به پایه C0 و کلاک تولیدی با اختلاف فاز ۱۸۰ درجه به پایه C1 متصل می‌شود. پایه های D0 و D1 مشابه پایه‌های D1 و D2 در سری 7 هستند. استفاده همزمان از ست و ریست هم توصیه نمی‌شود و ممکن است به خطا منتهی شود.

❗️عملکرد پورت فعال ساز کلاک در هر دو primitive یکسان است و می‌تواند به فراخور نیاز بکارگرفته شوند.

@Hexalinx
#Digital_Filter
#Intermediate

پیاده‌سازی فیلتر میانگین‌گیر متحرک

✳️ فیلتر میانگین‌گیر متحرک یا فیلتر moving average یکی از ساده‌ترین انواع فیلترهای دیجیتال است. این فیلتر برای مواردی همچون حذف نویز یا هموار کردن سیگنال‌ها در حوزه زمان بکار گرفته می‌شود. مشخصات فیلتر میانگین‌گیر با توجه به کاربرد مد نظر متفاوت است.

اگر علاقه دارید با نحوه پیاده سازی این فیلتر آشنا شوید. آموزش زیر را در سایت هگزالینکس مطالعه بفرمایید. 👇

http://hexalinx.com/programming/moving-average-filter/

@Hexalinx
#Intermediate
#Clock_Gating

گیت کردن کلاک یا Clock Gating چیست؟ آیا مجبوریم برای کنترل کلاک از مفهوم Clock Gating استفاده کنیم؟

✳️ مواردی وجود دارد که در یک طرح مجبوریم بین دو یا چند کلاک سوئیچ کنیم و یا برای کنترل توان مصرفی تراشه کلاک آن را در برخی زمان‌ها غیرفعال کنیم.
❗️محتمل‌ترین پاسخی که در ابتدا ممکن به است به ذهن طراحان کم تجربه‌تر برسد، فعال یا غیرفعال کردن کلاک بوسیله یک مدار کنترلی کمکی با دستورات شرطی است. این کار در اصطلاح پیاده‌سازی، تحت عنوان گیت کردن کلاک یا clock gating شناخته می‌شود؟
تا اینجا برای سوال خودمان یک راه حل ارائه دادیم و به نظر مشکل حل شد. اما کمی صبر کنید!!! از قبل می‌دانیم که کلاک‌ها درون تراشه‌های قابل‌ پیکره‌بندی یکسری مسیرهای اختصاصی دارند. این مسیرها کاملا مستقل از منابع #interconnect روی تراشه هستند. خروج کلاک از مسیرهای اختصاصی خودش ممکن است باعث بروز تاخیر و کجی کلاک شود و این یعنی تحت تاثیر قرار گرفتن عملکرد مدار و بروز مشکل زمان‌بندی در طراحی. خب حالا با این توضیحات clock gating خوب است یا بد؟ برای دریافت پاسخ کامل خود ادامه مطلب را مطالعه بفرمایید. 👇

@Hexalinx
#Intermediate
#BUFGCE, #BUFHCE

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


🔖 اگر با منابع کلاک درون تراشه‌های سری ۷ آشنا باشید حتما بافرهای کلاک را می‌شناسید و نام‌هایی مثل BUFGCE و ‌BUFHCE را شنیده‌اید. تقریبا در تمامی طراحی‌ها تعداد زیادی بافر از نوع BUFGCE و ‌BUFHCE وجود دارد که بدون استفاده رها می‌شوند. در حالت کلی هر BUFGCE می‌تواند کلاک مورد نیاز برای چندین ناحیه کلاک مختلف در تراشه را تامین کند و در نقطه مقابل هر ‌BUFHCE تنها قادر به تامین کلاک برای یک ناحیه کلاک است.
برای درک بهتر مساله اجازه بدهید مثالی از نحوه فعال یا غیرفعال کردن کلاک بزنیم. توجه شود که در اینجا مفهوم غیرفعال کردن کلاک برای یک یا چند فلیپ‌فلاپ بکار نمی‌رود و مساله کنترل کلاک بخشی از مدار پیاده‌سازی شده است. اگر تمامی مداراتی که نیاز است به طور دائم فعال باشند به شکل مناسبی با تعریف قیود مکانی در یک یا چند ناحیه کلاک محصور شده باشند، آنگاه یک BUFGCE می‌تواند برای تامین کلاک این نواحی به کار گرفته بشود. از سوی دیگر اگر اینترفیس خاصی به صورت کامل درون یک ناحیه کلاک محصور شده باشد و تنها نیاز باشد در بازه‌های زمانی کوتاه فعال باشد، می‌توان با BUFHCE کلاک ورودی به این ناحیه را گیت کرد.


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


❗️اما هنوز یک نکته باقی مانده است. اگر به دلایل مختلف مجبور هستیم clock gating انجام دهیم. چگونه اینکار را انجام دهیم تا کمترین تاثیر منفی را روی طرح بگذارد؟ بهترین نقطه برای آغاز یا پایان فرایند clock gaiting دقیقا وسط بخش میانی کلاک است. دقیقا زمانی که مقدار آن صفر است. این کار معمولا با گیت and انجام می‌شود و هدف ممانعت از ایجاد #glitch در خروجی است. با رعایت این مساله در زمان روشن شدن گیت یا خاموش شدن آن در کلاک تولیدی خروجی هیچ شرایط پیش بینی نشده‌ای به وجود نمی‌آید و همینطور عرض پالس نیز کوتاه نمی‌شود.

@Hexalinx
#Intermediate
#Clock

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

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

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

@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
#Intermediate
#AXI, #ZYNQ

این روزها، تقریباً تمام IP های Xilinx از اینترفیس AXI استفاده می‌کنند. تراشه‌های ZYNQ و ZYNQ MP و حتی پردازنده‌های نرم افزاری میکروبلیز و پردازنده‌های قدرتمند و جدید Versal همگی از اینترفیس های AXI استفاده می‌کنند. پر واضح است که اینترفیس‌های AXI بخشی جدایی ناپذیر از هر طراحی جدید در تراشه‌های شرکت Xilinx هستند. درک صحیح مبانی AXI کمک فراوانی به افزایش بهره وری طراح در زمان طراحی و حتی خطایابی سیستم می‌کند.

در این آموزش از پایگاه دانش هگزالینکس که اولین آموزش از سری‌ آموزش‌های AXI است، مبانی و مفاهیم اینترفیس‌های AXI3/AXI4 را در تراشه‌های Xilinx خدمتتان ارائه می‌کنیم. در اولین گام محبوریم از بخش‌های کمی خسته کننده، نه چندان جذاب و البته بسیار مهم شروع کنیم. بسیاری از بخش‌های مهمتر، در قسمت‌های بعدی این سری آموزشی پوشش داده می‌شود، ولی در صورتی که به این توضیحات اولیه تسلط پیدا نکنید، در درک آن‌ها با مشکل روبرو می‌شوید.


ادامه مطلب >>

@Hexalinx
#Intermediate
#ChipScope

ابزار ChipScope Pro یک پکیج کامل از قابلیت‌های دیباگ و خطایابی را در قالب چند ابزار کمکی همچون Core Inserter و ChipScope Pro Analyzer و همینطور چند هسته نرم افزاری نظیر ILA ، ICON‌ و VIO در محیط‌های گرافیکی کاربرپسند در اختیار طراح قرار می‌دهد. در حالت کلی استفاده از آن به دو گام نیاز دارد.

❗️در گام اول نوع عملیات دیباگ و سیگنال‌هایی که باید مانیتور شوند مشخص می‌شوند.
❗️در گام دوم با استفاده از ChipScope Pro Analyzer نمایش و آنالیز سیگنال‌ها انجام می‌شود.


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

@Hexalinx
#Intermediate
#CDC, #Clock_Domain_Crossing

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

ادامه مطلب >>

@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
#Intermediate, #CORDIC

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

✳️ واژه CORDIC مخفف عبارت COordinate Rotation DIgital Computer است و از نقطه نظر پیاده سازی یک الگوریتم کاملاً بهینه یا اصطلاحاً Hardware-efficient است که با استفاده از یک متد تکرار شونده مبتنی بر چرخش و دَوَران ، برای پیاده سازی سخت افزاری رنج وسیعی از توابع پایه‌ای ریاضی بکار برده می‌شود.

❗️در این مقاله از سری آموزش‌های پایگاه دانش هگزالینکس باهم مروری برالگوریتم CORDIC و جایگاه آن در پیاده سازی توابع ریاضی پایه در FPGA خواهیم داشت.

مطالعه ادامه مطلب »
@Hexalinx
#Intermediate
#Microblaze, #LMB

✳️ به طور کلی سه ساختار یا پیکربندی برای طراحی معماری حافظه مایکروبلیز وجود دارد که عبارتند از:

1️⃣ استفاده از حافظه‌های محلی
2️⃣ استفاده از حافظه‌های داخلی
3️⃣ استفاده از حافظه‌های خارجی

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

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

@Hexalinx