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
#Digital_Filter
#Intermediate

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

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

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

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

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

https://www.aparat.com/v/5xOcL
#Basic
#Fanout

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

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

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

@Hexalinx
#Basic
#Reset

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

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

@Hexalinx
#Reset
#POR

به طور کلی زمانی که FPGA پیکره‌بندی می‌شود نیازی به اعمال سیگنال ریست نداریم. تمامی سلول‌های درون تراشه بلافاصله بعد از پیکره‌بندی مقدار دهی می‌شوند. این اتفاق چیزی فراتر از اعمال یک ریست ساده به فلیپ فلاپ‌ها است و تمامی بخش‌های تراشه را در بر می‌گیرد. به عبارت دیگر پیکره‌بندی FPGA منجربه به اعمال یک ریست سرتاسری می‌شود. این ریست سرتاسری تمام سیگنال‌ها و حتی فضای درون حافظه‌ها را تحت تاثیر قرار می‌دهد. لازم است توجه شود که با اعمال این ریست سرتاسری، مقدار سلول‌ها لزوما صفر نمی‌شوند و می‌توانند هر مقداری که طراح به آن اختصاص می‌دهد را داشته باشند. مقدار دهی اولیه به سیگنال‌ها با استفاده عملگر "=:” صورت می‌پذیرد. پس به شما پیشنهاد می‌کنم حتما اگر مقدار اولیه خاصی برای برخی از سیگنال‌هایی که داخل برنامه خود تعریف می‌کنید مد نظر دارید، به جای استفاده از روتین‌های ست یا ریست در برنامه، برای آن‌ها مقدار اولیه تعیین کنید. در صورت عدم تعیین این مقدار اولیه، به صورت پیش فرض مقدار صفر به سلول‌های درون تراشه نسبت داده می‌شود. با توجه به توضیحات فوق واضح است که تراشه FPGA به سیگنال کنترلی به نام por نیاز ندارد.

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

@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
Channel photo updated
Channel photo updated
یکی از مهمترین ویژگی های تراشه های قابل پیکره بندی انعطاف پذیری بالای آن ها در پیاده سازی توابع ریاضی است. توابع ریاضی عناصر اصلی الگوریتم های پردازش سیگنال هستند. از این رو درک مفاهیم و تکنیک های پیاده سازی عملیات ریاضی بسیار حائز اهمیت است. ما مهندسان الکترونیک عموما ترجیح می دهیم از سیستم نمایش ممیز ثابت برای پیاده سازی و طراحی استفاده کنیم تا به این شکل از پیچیدگی های سیستم ممیز شناور رها شویم.

از سوی دیگر، کار با سیستم ممیز ثابت نیز نیازمند آشنایی کافی طراح با مفاهیم و شیوه نمایش اعداد است.

✳️ از شما دعوت می کنیم برای درک مفاهیم و شیوه نمایش اعداد ممیز ثابت مقاله دو قسمتی زیر را در سایت مطالعه بفرمایید.

❗️قسمت دوم این مقاله طی روزهای آتی منتشر می گردد. و اطلاع رسانی می شود.

❗️در صورت نیاز به هرگونه توضیحات تکمیلی لطفا سوالات خود را در بخش نظرات همین پست مطرح بفرمایید.


http://hexalinx.com/?p=4959
آیا هگزالینکس گروه تلگرامی دارد یا نه!

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

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

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

❗️ از شما دعوت می‌کنیم تا در کنار عضویت در گروه‌های تلگرامی و پرسش و پاسخ در آن‌ها نگاهی بلند مدت به تالار گفتگوی هگزالینکس داشته باشید و با مطرح کردن سوالات خودتون و دریافت پاسخ مطلوب به گسترش دانش تخصصی FPGA‌ کمک کنید. مطالب آموزشی فارسی تو این بخش خیلی کم داریم، پس به ما اعتماد کنید.

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

http://hexalinx.com/community-forums/
@Hexalinx
#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