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

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

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

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

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

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

با توجه به نیازهای هر سیستم، مهندس طراح می تواند حافظه های توزیع شده در تراشه های سری 7 را به چهار صورت پیکره بندی کند که به شرح زیر است.
1️⃣ تک پورت: در این پیکره بندی از یک پورت برای خواندن آسنکرون و نوشتن سنکرون استفاده می شود
2️⃣ دو پورت: در این پیکره بندی یک پورت برای خواندن / نوشتن و یک پورت خواندن آسنکرون در نظر گرفته می شود
3️⃣ دو پورت ساده: در این پیکره بندی یک پورت برای نوشتن و یک پورت نیز برای خواندن آسنکرون در نظر گرفته می شود
4️⃣ چهار پورت: در این پیکره بندی یک پورت برای خواندن / نوشتن و سه پورت نیز برای خواندن آسنکرون در نظر گرفته می شود

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

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

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

حداکثر عرض بیت قابل پشتیبانی در این حافظه ها 72 بیت است. هر پورت می تواند برای پشتیبانی از عرض بیت مستقل پیکره بندی شود، علاوه بر این امکان نوشتن در این حافظه ها به صورت بایت به بایت نیز وجود دارد، یعنی می توان در یک آدرس از حافظه که توانایی ذخیره سازی مثلا 16 بیت را دارد، دو بار در یک کلاک مقادیر 8 بیتی نوشت. این قابلیت، یک مزیت بسیار کلیدی در هنگام استفاده از پردازنده کمکی همچون #Micoblaze فراهم می آورد.

حافظه های بلوکی به صورت های زیر قابل پیکره بندی هستند:
1️⃣ تک پورت: در این پیکره بندی از یک پورت برای خواندن و نوشتن به صورت سنکرون استفاده می شود
2️⃣ دو پورت ساده: در این پیکره بندی از یک پورت برای خواندن و از یک پورت برای نوشتن استفاده می شود، هر کدام از پورت ها دارای کلاک و سیگنال های کنترلی مستقل هستند.
3️⃣ دو پورت کامل: در این پیکره بندی دو پورت کاملا مستقل برای خواندن و نوشتن وجود دارد، کلاک ها و سیگنال های کنترلی هر دو پورت مستقل از هم هستند و حداکثر انعطاف پذیری را برای کنترل فرایند خواندن و نوشتن در اختیار کاربر قرار می دهند.

نوشتن در حافظه های بلوکی نیز می تواند با سه اولویت بندی متفاوت صورت بگیرد، این سه مد اولویت بندی عبارتند از:
1️⃣ مد WRITE_FIRST : داده نوشته شده در DIA روی DOA قرار می گیرد (به شکل مراجعه شود)
2️⃣ مد READ_FIRST : مقدار قبلی نوشته شده در حافظه در ADDRA روی DOA قرار می گیرد
3️⃣ مد NO_CHANGE : برای کاهش توان مصرفی در زمان نوشتن DOA همواره مقدار قبلیش را حفظ می کند

توضیح بییشتر و مقایسه این سه مد که بسیار مهم نیز هستند، در آینده خدمتتان ارائه می گردد. در این مقاله صرفا به معرفی اجمالی آن ها اکتفا می کنیم. ممکن است در نگاه اول فراگیری مطالب فوق کمی سخت به نظر برسد، که البته اینطور نیست و با کمی تکرار کاملا قابل درک است. ضمنا بد نیست به این نکته توجه داشته باشیم که هم حافظه های توزیع شده و هم حافظه های بلوکی با استفاده از IP Core های شرکت Xilinx قابل فراخوانی و سفارشی سازی هستند و طراح به راحتی می تواند با انتخاب پیکره بندی مورد نیازش به سریع ترین و بهینه ترین شکل ممکن حافظه ها را به کار بگیرد، با استفاده از IP Croe ها امکان فراخوانی پیکره بندی های اضافی با ترکیب کردن بلوک های حافظه و منابع منطقی نیز وجود دارد، که بهترین مثال آن پیکره بندی FIFO پرسرعت است.

https://forums.xilinx.com/t5/Embedded-Development-Tools/difference-between-distributed-and-block-ram/td-p/81867

@Hexalinx
#Routeing
#Interconnect
#Essentials

منابع متصل کننده(Interconnect Resources)

✳️ علاوه بر بلوک های قابل برنامه ریزی، حافظه ها، بلوک های ضرب کننده و منابع ورودی و خروجی، تراشه های FPGA دارای منابع بسیار مهم دیگری به نام منابع متصل کننده یا Interconnect Resources هستند. این منابع به صورت یک شبکه قابل برنامه ریزی وظیفه برقراری ارتباط بین ورودی ها، خروجی ها، و به طور کلی تمامی عناصر موجود درون تراشه را بر عهده دارند. این منابع تحت عنوان مسیر یا #routing شناخته می شوند. گام جانمایی و مسیر یابی #Place_and_Route در فرایند پیاده سازی در واقع به برنامه ریزی و بهینه سازی این منابع اختصاص دارد. نکته جالب اینجاست که این منابع به طور متوسط بیش از 60 درصد منابع درون FPGA را اشغال کرده اند. کنترل جزئیات فرایند #routing به شکل کامل در اختیار ابزارهای پیاده سازی است و به نوعی جز پتنت های شرکت سازنده محسوب می شود.

@Hexalinx
#QEMU
#Advanced
معرفی Xilinx QEMU

✳️ واژه #QEMU مخفف عبارت Quick Emulator است و یک امولاتور قدرتمند و متن باز برای مدل سازی رفتار یک ماشین و به طور خاص یک پردازنده است.

✳️ شرکت Xilinx با توجه به منبع باز بودن QEMU یک نسخه سفارشی از آن را به نام Xilinx QEMU توسعه داده است و به همراه پتالینوکس عرضه می کند. مهندسانی که از پلت فرم های هدف مبتنی بر Zynq 7000 و Zynq UltraScalePlus و یا MicroBlaze برای طراحی های خود استفاده می کنند، به راحتی می توانند از مزایای آن بهره مند شوند. این امولاتور قادر است با مدل سازی رفتار سیستم جایگزین سخت افزار شود و مدلی نرم افزاری از آن را برای طراح ایجاد کند. توجه شود که برای استفاده از این امولاتور طراح باید با مفاهیم زیر آشنایی کامل داشته باشد.

1️⃣ معماری پردازنده مورد نظر
2️⃣ گنو دیباگر برای دیباگ ریموت سیستم GDB
3️⃣ تولید اپلیکیشن نرم افزاری با استفاده از پتالینوکس و SDK
4️⃣ و دیوایس تیری Device Trees

https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842060/QEMU

@Hexalinx
#SDSoC
#Advanced
معرفی محیط توسعه SDSoC

✳️ یکی از بزرگترین چالش های پیشروی مهندسان در زمان طراحی شتاب دهنده روی بخش PL در تراشه های Zynq نحوه تبادل ارتباط بین PS و PL است، انتخاب نوع اینترفیس و تنظیمات آن اغلب کابوس طراحان است. از سوی دیگر انتخاب گلوگاه های پردازشی و انتقال توابع نرم افزاری در PS به PL نیازمند صرف زمان و تجربه کافی از سوی مهندس طراح است. شرکت Xilinx برای پاسخ به این دو مشکل در سال 2015 محیط توسعه SDSoC را برای طراحان سیستم و مهندسان نرم افزار معرفی کرد. مجموعه نرم افزاریSDSoC چارچوبی برای توسعه و ساخت برنامه های سخت افزاری شتاب دهی شده با استفاده از زبانهای برنامه نویسی استاندارد C , C++ در محیط بسیار کاربرپسند و محبوب eclipse است.
کامپایلر SDSoC بسیاری از جزئیات طراحی را به صورت اتوماتیک آنالیز می کند و به طراح اجازه می دهد با چند کلیک توابع نرم افزاری PS را به ماژول ها سخت افزاری برای پیاده سازی در PL تبدیل کنند و ارتباطات مورد نیاز برای تبادل داده بین این دو بخش را برقرار کنند.

@Hexalinx
#SDSoC

✳️ آموزش مقدماتی مجموعه نرم افزاری SDSoC
1️⃣ قسمت اول - نصب SDSoC
🔖این مجموعه به صورت رایگان در Udemy تحت عنوان Zynq Development with Xilinx SDSoC ارائه شده است.
https://www.aparat.com/v/8vSdJ

@Hexalinx
#SDSoC

✳️ آموزش مقدماتی مجموعه نرم افزاری SDSoC
2️⃣ قسمت دوم - معرفی ابزار طراحی SDSoC
🔖این مجموعه به صورت رایگان در Udemy تحت عنوان Zynq Development with Xilinx SDSoC ارائه شده است.
https://www.aparat.com/v/Pb0Yi

@Hexalinx
#SDSoC

✳️ آموزش مقدماتی مجموعه نرم افزاری SDSoC
3️⃣ قسمت سوم - معرفی ابزار طراحی SDSoC بخش دوم
🔖این مجموعه به صورت رایگان در Udemy تحت عنوان Zynq Development with Xilinx SDSoC ارائه شده است.

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

@Hexalinx
#SDSoC

✳️ آموزش مقدماتی مجموعه نرم افزاری SDSoC
4️⃣ قسمت چهارم - ساخت یک پروژه جدید در ابزار طراحی SDSoC
🔖این مجموعه به صورت رایگان در Udemy تحت عنوان Zynq Development with Xilinx SDSoC ارائه شده است.

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

@Hexalinx
#Digital_Clock_Manager, #DCM
#Clock_Managment_Tile, #CMT
#Essentials

معرفی منابع کلاک روی تراشه Spartan 6

✳️ تراشه Spartan 6 دارای دو شبکه کلاک کاملا متفاوت است.

1️⃣ شبکه اول Global Clock Network نام دارد و برای تامین کلاک واحدهای مختلف درون تراشه نظیر CLB ها و بلوک های حافظه بکار گرفته می شود. این شبکه می تواند حداکثر 16 کلاک متفاوت را پشتیبانی کند. حداکثر کلاک قابل پذیرش در این شبکه حدود 400 مگاهرتز است.

2️⃣ شبکه دوم IO Clock Network نام دارد و وظیفه آن تامین کلاک مورد نیاز برای بلوک های ورودی خروجی تراشه است. این شبکه قادر به پشتیبانی از قابلیت SerDes با حداکثر فرکانس کلاک 1 گیگاهرتز است که در ارتباطات پرسرعت مورد استفاده قرار می گیرند. اگر FPGA را به 4 قسمت تقسیم کنیم هر بخش دارای 8 بلوک کلاک IO است که در مجموع 32 بلوک کلاک IO می شود.
تراشه های Spartan 6 درای دو بلوک مدیریت کلاک به نام DCM و یک بلوک حلقه قفل فاز PLL در هر CMT هستند. در هر تراشه Spartan 6 بین یک تا شش CMT وجود دارد

@Hexalinx
#Codding_Guide
تکنیک های کدنویسی در FPGA
✳️ چندین بار در این کانال به این مورد اشاره کردیم که آشنایی با منابع درون تراشه از اهمیت بالایی در طراحی برخوردار است و دستیابی به حداکثر کارایی تنها به وابسته شناخت دقیق این منابع امکان پذیر است، اما سوال اینجاست که آیا می توان همه این منابع را با کد نویسی HDL فراخوانی کرد یا خیر؟ آیا محدودیتی وجود دارد؟ 👇👇

@Hexalinx
#Essentials

🔖پاسخ سوال فوق بله است. تمامی منابع و عناصر اصلی درون FPGA با کدنویسی قابل استنتاج نیستند. از نقطه نظر نحوه استنتاج منابع روی تراشه های FPGA به سه دسته تقسیم می شوند.

1️⃣ دسته اول منابعی هستند که توسط تمامی ابزارهای سنتز قابل استنتاج هستند. مثل شیفیت رجیسترها #SRLs ، مالتی پلکسرهای عریض #F7 و #F8 ، زنجیره بیت نقلی #Carry_Chain ، بلوک های ضرب کننده #DSP_Blocks ، بافرهای سرتاسری کلاک #BUFG ، بافرهای ورودی خروجی ساده #IOBUF و بافرهای ورودی DDR یا #IDDR .

2️⃣ دسته دوم منابعی هستند که تنها توسط برخی از ابزارهای سنتز قابل فراخوانی هستند. مهمترین عناصر در این دسته،
بلوک های حافظه #Block_RAMs ، بافرهای سرتاسری خاص منظوره کلاک
همچون #BUFGCE هستن. علاوه بر این برخی از فانکشنالیتی های خاص در بلوک های ضرب کننده نیز ممکن است توسط ابزارهای سنتز قابل استنتاج باشد.

3️⃣ دسته سوم منابعی هستند که به هیچ وجه به صورت اتوماتیک توسط ابزارهای سنتز قابل استنتاج نیستند و تنها راه استفاده از آن ها استفاده از primitive های آماده داخل کتابخانه های شرکت سازنده و یا استفاده از IP Core ها است. از آن جمله می توان به اینترفیس های تفاضلی روی IO ها ، بافرهای خروجی DDR یا #ODDR ، بلوک های مدیریت کلاک #DCM و #PLL و بافرهای محلی کلاک همچون #BUFR و #BUFIO اشاره کرد.

❗️استفاده از primitive ها در برنامه نویسی HDL یک تکنیک بسیار مناسب برای فراخوانی منابع است و به شدت توسط سازندگانی تراشه های قابل برنامه ریزی توصیه شده است. در واقع primitive ها به صورت قطعه کدهای آماده و در قالب یک کامپوننت توسط طراح بین سایر کدهای HDL قرار داده می شوند و یک بخش خاص از تراشه را فراخوانی می کنند. به طور کلی به عمل فراخوانی و قرار دادن کامپوننت ها درون کدها instantiation گفته می شود.

@Hexalinx
#Jitter
#Essentials
به طور کلی سیگنال کلاک غالبا با دو پارامتر فرکانس یا پریود و دوره تناوب (Duty Cycle) معرفی می شود. اما این دو پارامتر تنها مشخصه های کلاسیک یک سیگنال کلاک هستند. مفهوم کلاک جیتر #jitter یکی دیگر از مشخصه هایی است که در توصیف میزان دقت یک سیگنال کلاک یا منبع تولید کننده کلاک ارائه می شود. کلاک جیتر بیانگر میزان انحراف لبه های کلاک از موقعیت ایده آل خودشان است، به عبارت ساده تر کم یا زیاد شدن یک پریود کلاک به دلیل جابجایی مثبت یا منفی لبه های بالا و پایین رونده کلاک.
❗️این پدیده غالبا به دلیل نویز موجود در منبع تولید کننده کلاک، نویز مدارات تغذیه و یا اختلالات ناشی از مدارهای جانبی در یک سیستم رخ می دهد. در طراحی FPGA جیتر غالبا به صورت یک پارامتر و تحت عنوان جیتر ورودی برای ابزار پیاده سازی تعریف می شود، و تعیین دقیق آن نقش مهمی در دستیابی به زمانبندی مناسب در یک طراحی ایفا می کند.

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

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

@Hexalinx
number_representation.pdf
425.3 KB
🎯 الفبای پیاده سازی محاسبات علامت دار در FPGA

@Hexalinx
#Static_Timing_Paths
#Intermediate
تعریف مسیرهای زمانبندی ایستا (Static Timing Paths)
مسیر زمانبندی ایستا، مسیری است که
1️⃣ از یک عنصر کلاک دار شروع می شود
2️⃣ در طول تعدادی عنصر ترکیبی و نت های متصل کننده آنها منتشر می شود و
3️⃣ به یک عنصر کلاک دار ختم می شود.
عناصر کلاک دار شامل فلیپ فلاپ ها، بلوک های ضرب کننده، حافظه ها و ... هستند.
عناصر ترتیبی شامل LUT ها، مالتی پلکسرها و ... هستند.
🔖 در عمل آنالیز زمان بندی ایستا تنها برای بخشهایی از مدار که بین دو عنصر سنکرون قرار دارند صورت می پذیرد و مسیرهای فاقد عنصر سنکرون نادیده گرفته می شوند، به بیان ساده تر آنالیز زمان بندی برای مدارات ترکیبی کاملا بی معنی است.

@Hexalinx
#Clock_Skew
#Intermediate
کجی کلاک چیست و چه عملکردی روی سیستم دارد؟

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

@Hexalinx
Channel photo updated
🔔
سخت افزارها، سرعت و ظرفیت پردازش سیستم‌ها را بالا می‌برند و نرم‌افزارها، سرعت پردازشی ماشین‌ها را به چالش می‌کشند. برای رسیدن به حداکثر ظرفیت پردازشی چاره‌ای جز بهینه سازی توام سخت افزار و نرم‌ افزار نداریم. دنیای FPGA و Zynq مصداق بارز این حقیقت فراموش شده است.

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

🔖 امروز شما دعوت هستید به افتتاحیه سایت هگزالینکس مورخ ۲۹ مرداد ۹۸ مصادف با عید غدیر به نشانی www.hexalinx.com

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

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

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

@Hexalinx