✅ یکی از مهمترین ویژگی های تراشه های قابل پیکره بندی انعطاف پذیری بالای آن ها در پیاده سازی توابع ریاضی است. توابع ریاضی عناصر اصلی الگوریتم های پردازش سیگنال هستند. از این رو درک مفاهیم و تکنیک های پیاده سازی عملیات ریاضی بسیار حائز اهمیت است. ما مهندسان الکترونیک عموما ترجیح می دهیم از سیستم نمایش ممیز ثابت برای پیاده سازی و طراحی استفاده کنیم تا به این شکل از پیچیدگی های سیستم ممیز شناور رها شویم.
✅ از سوی دیگر، کار با سیستم ممیز ثابت نیز نیازمند آشنایی کافی طراح با مفاهیم و شیوه نمایش اعداد است.
✳️ از شما دعوت می کنیم برای درک مفاهیم و شیوه نمایش اعداد ممیز ثابت مقاله دو قسمتی زیر را در سایت مطالعه بفرمایید.
❗️قسمت دوم این مقاله طی روزهای آتی منتشر می گردد. و اطلاع رسانی می شود.
❗️در صورت نیاز به هرگونه توضیحات تکمیلی لطفا سوالات خود را در بخش نظرات همین پست مطرح بفرمایید.
http://hexalinx.com/?p=4959
✅ از سوی دیگر، کار با سیستم ممیز ثابت نیز نیازمند آشنایی کافی طراح با مفاهیم و شیوه نمایش اعداد است.
✳️ از شما دعوت می کنیم برای درک مفاهیم و شیوه نمایش اعداد ممیز ثابت مقاله دو قسمتی زیر را در سایت مطالعه بفرمایید.
❗️قسمت دوم این مقاله طی روزهای آتی منتشر می گردد. و اطلاع رسانی می شود.
❗️در صورت نیاز به هرگونه توضیحات تکمیلی لطفا سوالات خود را در بخش نظرات همین پست مطرح بفرمایید.
http://hexalinx.com/?p=4959
هگزالینکس
مبانی محاسبات ریاضی در FPGA (قسمت اول) - هگزالینکس
یکی از مهمترین مزایای طراحیهای مبتنی بر تراشههای قابل پیکرهبندی توانایی آنها در پیادهسازی الگوریتمها ریاضی به بهترین شکل ممکن است.
✅ آیا هگزالینکس گروه تلگرامی دارد یا نه!
هگزالینکس گروه تلگرامی عمومی ندارد، اما اصلا جای نگرانی نیست چون چندین گروه خوب تلگرامی به زبان فارسی در حوزه سیستمهای دیجیتال و تراشههای قابل پیکرهبندی FPGA فعال هستند و شما به راحتی می تونید از مطالبشون استفاده کنید. اگر تمایل داشتید میتونم بهتون معرفی کنم. فقط لازمه پیام بدید. اما یک نکته !!!
این کاملا طبیعیه که وقتی شما سوالی مطرح میکنید، دوست دارید در کوتاهترین زمان پاسختون رو دریافت کنید. با توجه به محبوبیت شبکههای اجتماعی و در دسترس بودن موبایل به نظر میرسه عضویت در یک گروه تلگرامی بهترین را حل باشه.
البته منم با نظر شما موافقم اما اجازه بدید از یک زاویه دیگه هم به این مساله نگاه کنیم. آیا راه سریعتری برای بدست آوردن پاسخ وجود نداره؟
جواب خیلی ساده هست. در صورتی که سوال شما قبلا پاسخ داده شده باشه، شما به راحتی می تونید با یک جستجوی ساده راه حل رو پیدا کنید. وجود یک تالار گفتگو یا انجمن تخصصی بهترین راهکار برای تحقق این هدفه چون:
• امکان جستجو داره
• امکان دسته بندی داره
• امکان به اشتراک گذاری کد و شماتیک داره
• امکان برچسب گذاری داره
• امکان استفاده از خرد جمعی برای یافتن راه حل داره
• و از همه مهمتر مرجعی فارسی برای گفتگو در مورد سیستمهای دیجیتال شکل میگیره
اما چرا گزینه آخر از همه مهمتره؟
✳️ پس از سالها فعالیت سایتهای چینی در به اشتراک گذاری مطالب تخصصی در حوزه طراحی مدارات دیجیتال و به ویژه تراشههای قابل پیکرهبندی در نهایت شرکت Xilinx متقاعد شد تا به صورت رسمی بخشی چینی در تالارهای گفتگوی خودش ایجاد کنه و به زبان چینی پاسخگوی نیاز طراحان در این حوزه باشه. شاید اضافه شدن زبان فارسی به تالارهای گفتگوی Xilinx کمی زیادی خوشبینانه باشه. ولی خب داشتن بک انجمن تخصصی در داخل کشور اینقدرها هم سخت نیست.
❗️ از شما دعوت میکنیم تا در کنار عضویت در گروههای تلگرامی و پرسش و پاسخ در آنها نگاهی بلند مدت به تالار گفتگوی هگزالینکس داشته باشید و با مطرح کردن سوالات خودتون و دریافت پاسخ مطلوب به گسترش دانش تخصصی FPGA کمک کنید. مطالب آموزشی فارسی تو این بخش خیلی کم داریم، پس به ما اعتماد کنید.
❗️لینک تالارهای گفتگوی تخصصی هگزالینکس 👇
❗️شما اولین سوال را بپرسید ...
http://hexalinx.com/community-forums/
@Hexalinx
هگزالینکس گروه تلگرامی عمومی ندارد، اما اصلا جای نگرانی نیست چون چندین گروه خوب تلگرامی به زبان فارسی در حوزه سیستمهای دیجیتال و تراشههای قابل پیکرهبندی FPGA فعال هستند و شما به راحتی می تونید از مطالبشون استفاده کنید. اگر تمایل داشتید میتونم بهتون معرفی کنم. فقط لازمه پیام بدید. اما یک نکته !!!
این کاملا طبیعیه که وقتی شما سوالی مطرح میکنید، دوست دارید در کوتاهترین زمان پاسختون رو دریافت کنید. با توجه به محبوبیت شبکههای اجتماعی و در دسترس بودن موبایل به نظر میرسه عضویت در یک گروه تلگرامی بهترین را حل باشه.
البته منم با نظر شما موافقم اما اجازه بدید از یک زاویه دیگه هم به این مساله نگاه کنیم. آیا راه سریعتری برای بدست آوردن پاسخ وجود نداره؟
جواب خیلی ساده هست. در صورتی که سوال شما قبلا پاسخ داده شده باشه، شما به راحتی می تونید با یک جستجوی ساده راه حل رو پیدا کنید. وجود یک تالار گفتگو یا انجمن تخصصی بهترین راهکار برای تحقق این هدفه چون:
• امکان جستجو داره
• امکان دسته بندی داره
• امکان به اشتراک گذاری کد و شماتیک داره
• امکان برچسب گذاری داره
• امکان استفاده از خرد جمعی برای یافتن راه حل داره
• و از همه مهمتر مرجعی فارسی برای گفتگو در مورد سیستمهای دیجیتال شکل میگیره
اما چرا گزینه آخر از همه مهمتره؟
✳️ پس از سالها فعالیت سایتهای چینی در به اشتراک گذاری مطالب تخصصی در حوزه طراحی مدارات دیجیتال و به ویژه تراشههای قابل پیکرهبندی در نهایت شرکت Xilinx متقاعد شد تا به صورت رسمی بخشی چینی در تالارهای گفتگوی خودش ایجاد کنه و به زبان چینی پاسخگوی نیاز طراحان در این حوزه باشه. شاید اضافه شدن زبان فارسی به تالارهای گفتگوی Xilinx کمی زیادی خوشبینانه باشه. ولی خب داشتن بک انجمن تخصصی در داخل کشور اینقدرها هم سخت نیست.
❗️ از شما دعوت میکنیم تا در کنار عضویت در گروههای تلگرامی و پرسش و پاسخ در آنها نگاهی بلند مدت به تالار گفتگوی هگزالینکس داشته باشید و با مطرح کردن سوالات خودتون و دریافت پاسخ مطلوب به گسترش دانش تخصصی FPGA کمک کنید. مطالب آموزشی فارسی تو این بخش خیلی کم داریم، پس به ما اعتماد کنید.
❗️لینک تالارهای گفتگوی تخصصی هگزالینکس 👇
❗️شما اولین سوال را بپرسید ...
http://hexalinx.com/community-forums/
@Hexalinx
هگزالینکس
تالارهای گفتگو - هگزالینکس
#Advanced
#device_tree
✅ بدون شک device tree یک شاه کلید در دنیای لینوکس نهفته است و به شکلی فراگیر در این سیستمها مورد استفاده قرار میگیرد. اما باید قبول کرد که درک مفهوم آن کمی سخت است.
✅کاربرد اصلی device tree در طراحی سیستمهای نهفته است و بسیاری از ادمینهای سرور لینوکس حتی نام آن را نشنیدهاند. حتی بعضی از مدرسین دورههای پیشرفته لینوکس هم آن را نمیشناسند. خب داستان جالب شد. به نظر میرسد که با یک مفهوم لینوکسی ولی خاص منظوره روبرو هستیم. حقیقت این است که دنیای توسعه دهندگان سیستمهای نهفته مبتنی بر لینوکس با دنیای ادمینهای سرور کمی متفاوت است. پس نباید از این جهت خردهای به آنها گرفت.
ادامه این مقاله را در لینک زیر مطالعه بفرمایید
http://hexalinx.com/linux/device-tree/
@Hexalinx
#device_tree
✅ بدون شک device tree یک شاه کلید در دنیای لینوکس نهفته است و به شکلی فراگیر در این سیستمها مورد استفاده قرار میگیرد. اما باید قبول کرد که درک مفهوم آن کمی سخت است.
✅کاربرد اصلی device tree در طراحی سیستمهای نهفته است و بسیاری از ادمینهای سرور لینوکس حتی نام آن را نشنیدهاند. حتی بعضی از مدرسین دورههای پیشرفته لینوکس هم آن را نمیشناسند. خب داستان جالب شد. به نظر میرسد که با یک مفهوم لینوکسی ولی خاص منظوره روبرو هستیم. حقیقت این است که دنیای توسعه دهندگان سیستمهای نهفته مبتنی بر لینوکس با دنیای ادمینهای سرور کمی متفاوت است. پس نباید از این جهت خردهای به آنها گرفت.
ادامه این مقاله را در لینک زیر مطالعه بفرمایید
http://hexalinx.com/linux/device-tree/
@Hexalinx
#Intermediate
#Clock
✅ تاخیر، جیتر، کجی و عدم قطعیت کلاک
✳️ اهمیت و عملکرد کلاک در یک سیستم دیجیتال را میتوان مشابه نقش خون در بدن موجودات زنده در نظر گرفت. برای سالم و توامند بودن نیاز داریم دستگاه گردش خون در بدن کاملا سالم باشد. هر چند این شرط کافی نیست، اما شرط لازم است. خون در بخشهای مختلف بدن جریان پیدا میکند و متابولسیم بدن را تنظیم میکند. مشابهاً کلاک هم در بخشهای مختلف یک سیستم دیجیتال سنکرون جریان پیدا میکند و رویدادهای دیجیتال درون سیستم را کنترل میکند. عملکرد کلاک درون تراشه FPGA و کلیه تراشههای SoC نیز دقیقا به همین صورت است.
مطالعه ادامه مطلب
@Hexalinx
#Clock
✅ تاخیر، جیتر، کجی و عدم قطعیت کلاک
✳️ اهمیت و عملکرد کلاک در یک سیستم دیجیتال را میتوان مشابه نقش خون در بدن موجودات زنده در نظر گرفت. برای سالم و توامند بودن نیاز داریم دستگاه گردش خون در بدن کاملا سالم باشد. هر چند این شرط کافی نیست، اما شرط لازم است. خون در بخشهای مختلف بدن جریان پیدا میکند و متابولسیم بدن را تنظیم میکند. مشابهاً کلاک هم در بخشهای مختلف یک سیستم دیجیتال سنکرون جریان پیدا میکند و رویدادهای دیجیتال درون سیستم را کنترل میکند. عملکرد کلاک درون تراشه FPGA و کلیه تراشههای SoC نیز دقیقا به همین صورت است.
مطالعه ادامه مطلب
@Hexalinx
#Advanced
#Platform_Board_Flow
✅ مفهوم Platform Board Flow
✳️ مجموعه نرم افزاری Vivado به طراح اجازه میدهد تا عملیات ساخت یک پروژه جدید را با استفاده از یک بورد از پیش طراحی شده آغاز کند، این کار باعث بالا رفتن قابلیت اطمینان و سرعت طراحی میشود، به عبارت دیگر Xilinx پیشنهاد میکند به جای انتخاب یک تراشه در جریان طراحی، از یک بورد یا در اصطلاح دقیق تر از یک پلت فرم استفاده شود. این شکل از طراحی تحت عنوان Platform Board Flow شناخته میشود. برای پشتیبانی از این شیوه طراحی، اطلاعات و ساختار پلت فرم هدف باید در اختیار Vivado قرار داده شود، این اطلاعات درون یکسری فایل قرار میگیرند به عنوان عناصر طراحی در Vivado فراخوانی میشوند. در این روش هر بورد فیزیکی در یک فرمت خاص درون یک فایل تعریف میشود و به سادگی قابلیت اضافه شدن به مخزن بوردهای Xilinx را دارد. وقتی برای ساخت پروژه بورد خاصی از لیست پیشنهادی Vivado انتخاب میشود، مجموعهای از قابلیت های تکمیلی برای کمک به طراح به عنوان بخشی از فرایند سفارشی سازی IP ها در IP Integrator در اختیار کاربر قرار میگیرد.
@Hexalinx
#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
#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
#U_BOOT, #SSBL
✅ مفهوم U-Boot
✳️ مکروپروسسورها و پردازندهها تنها قادرند کدهایی را که درون حافظه داخلی آنها قرار دارد، فراخوانی و اجرا کنند. در حالی که سیستم عامل ها غالبا داخل منابع ذخیره سازی پرظرفیتتر نظیر هارد دیسک، حافظههای فلش و یا سایر قطعات جانبی ذخیره ساز دائمی قرار میگیرند. وقتی که یک پردازنده روشن میشود، در درون حافظه داخلیش هیچ سیستم عاملی وجود ندارد، بنابر این نیاز به نوع خاصی از نرم افزار داریم تا سیستم عامل را از جایی مثل حافظه فلش به درون حافطه پردازنده منتقل کند، این نرم افزار معمولا یک قطعه کد کوچک است که بوت لودر (bootloader) نامیده میشود.
در واقع U-boot یک اسکریپت کوتاه open-source است که به عنوان bootloader در جوامع لینوکسی به شکلی فراگیر مورد استفاده قرار میگیرد. این بوت لودر توسط Xilinx برای پردازندههای Microblaze و Zynq-7000 APSoC مورد استفاده قرار میگیرد.
در حقیقت bootloader بخشی از سخت افزار را به صورت اولیه راه اندازی میکند، در حالی که کرنل لینوکس هنوز لزوما راه اندازی نشده است
@Hexalinx
#Essentials
#Pipelining
✅ مفهوم پایپلاینینگ
✳️ پایپلاینینگ فرایندی است که اجرای موازی دستورات را در یک برنامه محاسباتی امکان پذیر میکند. این مفهوم اولین بار برای پردازندهها معرفی شد ولی جایگاه ویژهای در پیادهسازی الگوریتمهای پردازشی در FPGA دارد.
پایپلاینینگ در FPGA، با شکل دادن یک چیدمان خاص از بلوکهای ضرب کننده و پروسسهای محاسباتی در یک ماژول یا فانکشن انجام میشود. برای این کار ابتدا باید بخشی از مدار را که به دنبال پایپلاین کردن آن هستیم به بخشهای کوچکتر تقسیم کنیم. سپس این بخشها را با استفاده از رجیستر از هم جدا کنیم. تاخیر ایجاد شده در تمامی مسیرها باید باهم برابر باشد.
🔖 علاوه بر افزایش ظرفیت پردازشی پایپلاینینگ باعث بهبود سرعت سیستم نیز میشود.
@Hexalinx
#Pipelining
✅ مفهوم پایپلاینینگ
✳️ پایپلاینینگ فرایندی است که اجرای موازی دستورات را در یک برنامه محاسباتی امکان پذیر میکند. این مفهوم اولین بار برای پردازندهها معرفی شد ولی جایگاه ویژهای در پیادهسازی الگوریتمهای پردازشی در FPGA دارد.
پایپلاینینگ در FPGA، با شکل دادن یک چیدمان خاص از بلوکهای ضرب کننده و پروسسهای محاسباتی در یک ماژول یا فانکشن انجام میشود. برای این کار ابتدا باید بخشی از مدار را که به دنبال پایپلاین کردن آن هستیم به بخشهای کوچکتر تقسیم کنیم. سپس این بخشها را با استفاده از رجیستر از هم جدا کنیم. تاخیر ایجاد شده در تمامی مسیرها باید باهم برابر باشد.
🔖 علاوه بر افزایش ظرفیت پردازشی پایپلاینینگ باعث بهبود سرعت سیستم نیز میشود.
@Hexalinx
#Essentials
#wire_bonding
✅ مفهوم wire bonding
✳️ تراشههای FPGA در پکیجهای متفاوتی به بازار عرضه میشوند. این پکیجها از نظر ابعاد و تعداد پایههای IO با هم متفاوت هستند. با این وجود ممکن است دارای منابع سختافزاری مشابه هم باشند. بعنی فضای منطقی، حافظه و ضرب کنندههای یکسانی را در اختیار طراح قرار میدهند.
از آنجایی که تولید تراشه یکسان با ابعاد مختلف و تعداد IO های مختلف بسیار پرهزینه است، شرکتهای تولید کننده تراشه همچون Xilinx از یک متد خاص برای برقرار کردن ارتباط بین بلوکهای IO و پایههای فیزیکی تراشه استفاده میکنند.
🔖 به بیان ساده فرایندی که بر اساس آن اتصال بین پایههای فیزیکی یک تراشه همچون FPGA و مدارات پیادهسازی شده روی سیلیکون برقرار میشود، اصطلاحاً wire bonding نامیده میشود.
❗️پس همواره بیاد داشته باشیم تراشههایی که با یک کد نام گذاری میشوند و تنها تعداد IO های آنها با هم متفاوت در عمل هیچ فرقی باهم ندارند و فقط wire bonding آن ها با هم متفاوت است.
@Hexalinx
#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
✅پلتفرم نرم افزاری 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
✅ منابع ورودی / خروجی در FPGA
✳️ منابع ورودی و خروجی در هر FPGA، منابعی هستند که بین پینهای تراشه و منابع منطقی درون تراشه قرار گرفته اند. این منابع به لحاظ ساختاری از دو بخش تشکیل شدهاند:
1️⃣ بخش الکتریکی: وظیفه این بخش کنترل ولتاژ و استاندارد کاری IO هاست. تک سیمه یا تفاضلی بودن یک IO و همچنین فعال یا غیرفعال بودن امپدانس داخلی هر IO در این بخش تعیین میشود.
2️⃣ بخش منطقی: وظیفه این بخش که خود متشکل از چند بلوک است، اعمال کنترلهای منطقی روی سیگنالهای ورودی خروجی است. پیکره بندی پورت از لحاظ SDR و یا DDR بودن و همینطور ورودی، خروجی و یا ۳ حالته بودن پورت در این بخش تعیین میشود.
@Hexalinx
#Essentials
✅ پارامترهای #slew_rate و #drive_strength به چه معنا هستند و به چه منظور مورد استفاده قرار میگیرند؟
✳️ وقتی یک IO در FPGA به صورت خروجی تعریف میشود به صورت پیش فرض دو پارامتر slew rate و drive strength برای آن مقدار دهی میشود. طراح میتواند مقدار پیش فرض این دو پارامترها را با استفاده از ابزارهای Xilinx تغییر دهد.
ساده ترین تعریف برای این دو پارامتر به این صورت است.
پارامتر slew rate کمک میکند تا سرعت تغییر وضعیت یک خروجی تنظیم شود. یعنی شیب لبه بالا رونده یا پایین رونده را برای دستیابی به سرعت مطلوب کنترل میکند.
پارامتر drive strength برای کمک به تامین جریان مورد نیاز مصرف کننده متصل به FPGA تنظیم میشود.
در حالت کلاسیک slew rate به صورت حداکثر نرخ تغییرات ولتاژ خروجی بر واحد زمان تعریف میشود و میتواند مقادیر SLOW و FAST به آن نسبت داده شود.
از سوی دیگر drive strength رابطه مستقیم با جریان دارد و واحد آن میلی آمپر است. پایین بودن آن باعث ایجاد مشکلات زمان بندی و بالا بودن آن باعث نویزی شدن سیستم و کاهش مقاوت سیستم در مقابل خطا می شود.
@Hexalinx
✅ پارامترهای #slew_rate و #drive_strength به چه معنا هستند و به چه منظور مورد استفاده قرار میگیرند؟
✳️ وقتی یک IO در FPGA به صورت خروجی تعریف میشود به صورت پیش فرض دو پارامتر slew rate و drive strength برای آن مقدار دهی میشود. طراح میتواند مقدار پیش فرض این دو پارامترها را با استفاده از ابزارهای Xilinx تغییر دهد.
ساده ترین تعریف برای این دو پارامتر به این صورت است.
پارامتر slew rate کمک میکند تا سرعت تغییر وضعیت یک خروجی تنظیم شود. یعنی شیب لبه بالا رونده یا پایین رونده را برای دستیابی به سرعت مطلوب کنترل میکند.
پارامتر drive strength برای کمک به تامین جریان مورد نیاز مصرف کننده متصل به FPGA تنظیم میشود.
در حالت کلاسیک slew rate به صورت حداکثر نرخ تغییرات ولتاژ خروجی بر واحد زمان تعریف میشود و میتواند مقادیر SLOW و FAST به آن نسبت داده شود.
از سوی دیگر drive strength رابطه مستقیم با جریان دارد و واحد آن میلی آمپر است. پایین بودن آن باعث ایجاد مشکلات زمان بندی و بالا بودن آن باعث نویزی شدن سیستم و کاهش مقاوت سیستم در مقابل خطا می شود.
@Hexalinx
#Advanced
#DCI
✅ امپدانس قابل کنترل دیجیتال
✳️ خاتمه دادن یک خط انتقال با استفاده از یک مقاومت برای مدل کردن خصوصیات مصرف کننده در انتهای خط اصطلاحا تِرمینیشن (Termination) نامیده میشود. به بیان دقیقتر ترمینیشن روشی برای کاهش یا از بین بردن انعکاسهای ناخواسته در یک خط انتقال است. این انعکاسها باعث ایجاد اثرات ناخواسته و نویز در سیستم میشود. از نقطه نظر سختافزاری استفاده از ترمینیشن مناسب یک ملاحظه مهم در طراحی محسوب میشود. با بزرگتر شدن تراشههای FPGA و بالاتر رفتن سرعت کلاک سیستم، ساخت بوردهای مدارهای چاپی روز به روز سخت تر میشود. طراحان سخت افزار میدانند که کنترل تمامیت یک سیگنال در زمان انتشار یا همان Signal Integrity بخش مهمی است و حتما باید مورد توجه قرار بگیرد. مفهوم امپدانس قابل کنترل دیجیتال یا DCI دقیقا برای پاسخ گویی به چنین نیازی طراحی شده است. به بیان سادهتر DCI جایگزینی برای مقاومتهای ترمینیشن خارجی است که معمولا در اتصال اینترفیسهای تفاضلی به FPGA مورد نیاز است. مسئولیت بکارگیری این ویژگی برعهده مهندس طراح نرم افزار است.
@Hexalinx
#DCI
✅ امپدانس قابل کنترل دیجیتال
✳️ خاتمه دادن یک خط انتقال با استفاده از یک مقاومت برای مدل کردن خصوصیات مصرف کننده در انتهای خط اصطلاحا تِرمینیشن (Termination) نامیده میشود. به بیان دقیقتر ترمینیشن روشی برای کاهش یا از بین بردن انعکاسهای ناخواسته در یک خط انتقال است. این انعکاسها باعث ایجاد اثرات ناخواسته و نویز در سیستم میشود. از نقطه نظر سختافزاری استفاده از ترمینیشن مناسب یک ملاحظه مهم در طراحی محسوب میشود. با بزرگتر شدن تراشههای FPGA و بالاتر رفتن سرعت کلاک سیستم، ساخت بوردهای مدارهای چاپی روز به روز سخت تر میشود. طراحان سخت افزار میدانند که کنترل تمامیت یک سیگنال در زمان انتشار یا همان Signal Integrity بخش مهمی است و حتما باید مورد توجه قرار بگیرد. مفهوم امپدانس قابل کنترل دیجیتال یا DCI دقیقا برای پاسخ گویی به چنین نیازی طراحی شده است. به بیان سادهتر DCI جایگزینی برای مقاومتهای ترمینیشن خارجی است که معمولا در اتصال اینترفیسهای تفاضلی به FPGA مورد نیاز است. مسئولیت بکارگیری این ویژگی برعهده مهندس طراح نرم افزار است.
@Hexalinx
#Essentials
#IOB
✅ آشنایی با بخشهای مختلف بلوکهای ورودی و خروجی در FPGA
✳️ دسته بندی IO ها درون FPGA در قالب بانکهای IO انجام میشود. تعداد این بانکها کاملا به نوع تراشه و پکیج آن وابسته است. در حالت کلی خواص الکتریکی IO با توجه به قیودی که برای هر بانک تعریف میشود محدود میشوند.
با توجه به متفاوت بودن تعداد بانکهای بسادگی میتوان حدس زد که تعداد IO های درون تراشه نیز با توجه به نوع پکیج و منابع درون تراشه متفاوت است. این IO ها با استفاده از ابزارهای گرافیگی Xilinx به سادگی قابل پیکرهبندی هستند و با بسیاری از استانداردهای الکتریکی سازگار هستند. توجه شود که تمامی پینهای فیزیکی روی تراشه به صورت IO قابل استفاده نیستد. با این وجود تعداد قابل توجهی از آنها به عنوان ورودی خروجیهای همه منظوره در دسترس هستند. در هر پکیج بجز تعداد محدودی از پایهها که به تامین تغدیه مورد نیاز تراشه و پیکرهبندی تراشه اختصاص دارند، سایر پایهها تقریباً مشابه هم هستند و قابلیتهای یکسانی دارند.
❗️مطالعه ادامه این مقاله
@Hexalinx
#IOB
✅ آشنایی با بخشهای مختلف بلوکهای ورودی و خروجی در FPGA
✳️ دسته بندی IO ها درون FPGA در قالب بانکهای IO انجام میشود. تعداد این بانکها کاملا به نوع تراشه و پکیج آن وابسته است. در حالت کلی خواص الکتریکی IO با توجه به قیودی که برای هر بانک تعریف میشود محدود میشوند.
با توجه به متفاوت بودن تعداد بانکهای بسادگی میتوان حدس زد که تعداد IO های درون تراشه نیز با توجه به نوع پکیج و منابع درون تراشه متفاوت است. این IO ها با استفاده از ابزارهای گرافیگی Xilinx به سادگی قابل پیکرهبندی هستند و با بسیاری از استانداردهای الکتریکی سازگار هستند. توجه شود که تمامی پینهای فیزیکی روی تراشه به صورت IO قابل استفاده نیستد. با این وجود تعداد قابل توجهی از آنها به عنوان ورودی خروجیهای همه منظوره در دسترس هستند. در هر پکیج بجز تعداد محدودی از پایهها که به تامین تغدیه مورد نیاز تراشه و پیکرهبندی تراشه اختصاص دارند، سایر پایهها تقریباً مشابه هم هستند و قابلیتهای یکسانی دارند.
❗️مطالعه ادامه این مقاله
@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
✅ سیگنال آنالوگ در FPGA
✳️در کنار منابع دیجیتالی مرسوم موجود در تراشههای FPGA شرکت Xilinx همچون بلوکهای منطقی قابل پیکره بندی #CLB، بلوکهای ضرب کننده #DSP_BLOCK و بلوکهای حافظه #BLOCK_RAM، یک بلوک کاملا آنالوگ نیز درون این تراشهها وجود دارد. این بلوک برای کاربردهایی که نیاز به پردازش ترکیبی سیگنالهای آنالوگ و دیجیتال دارند بکار گرفته میشود. این بلوک آنالوگ در تراشههای نسل قبل همچون Vitex 5 و Virtex 6 تحت عنوان System Monitor و در تراشههای سری ۷ به بعد تحت عنوان #XADC شناخته میشود.
بلوک XADC متشکل از یک ADC دو کاناله ۱۲ بیتی با حداکثر نرخ نمونه برداری 1 مگا سمپل بر ثانیه (MSPS) به همراه تعدادی سنسور و مدارات کنترلی است. در واقع XADC به عنوان یک ورودی آنالوگ همه منظوره برای FPGA در نظر گرفته میشود و کاربردهای فراوانی را میتوان برای آن برشمرد.
@Hexalinx
#News
✅ بالاخره بعد از حدود یک ماه نسخه رسمی پلتفرم نرم افزاری Vitis معرفی شد، نسخه 2019.2 .
✳️ چندتا نکته جالب وجود داره. اول اینکه حدود 30GB سایز دانلودی شماست و به بیش از 80GB فضا برای نصبش نیاز دارید.
✳️ این نسخه تنها نسخهای که برای ویندوز 7 عرضه شده و نسخههای بعدی تنها برای ویندوز 10 عرضه خواهد شد. همینطور این نسخه آخرین نسخهای که از 32-bit HW server tools پشتیبانی میکنه !!!
✳️ برخلاف چیزی که به نظر میرسید، open source نیست و به لایسنس نیاز داره.
این پلتفرم شامل تمامی ابزارهای توسعه Xilinx میشه. در واقع به نظر میرسه دو محیط توسعه SDAccel و SDSoC به صورت یکپارچه کنار هم قرار گرفتن. پکیج دانلودی شامل موارد زیر است.
•SDSoC
•SDAccel
•Vivado-HL
•Vivado-HLS
•Model Composer
•System Generator
•SDK
❗️نکته جالب اینجاست که تا پیش از این SDAccel نسخه ویندوز نداشت!!!
❗️البته پتالینوکس همچنان باید به صورت جداگانه دانلود و نصب بشه. و روی لینوکس نصب بشه.
@Hexalinx
✅ بالاخره بعد از حدود یک ماه نسخه رسمی پلتفرم نرم افزاری Vitis معرفی شد، نسخه 2019.2 .
✳️ چندتا نکته جالب وجود داره. اول اینکه حدود 30GB سایز دانلودی شماست و به بیش از 80GB فضا برای نصبش نیاز دارید.
✳️ این نسخه تنها نسخهای که برای ویندوز 7 عرضه شده و نسخههای بعدی تنها برای ویندوز 10 عرضه خواهد شد. همینطور این نسخه آخرین نسخهای که از 32-bit HW server tools پشتیبانی میکنه !!!
✳️ برخلاف چیزی که به نظر میرسید، open source نیست و به لایسنس نیاز داره.
این پلتفرم شامل تمامی ابزارهای توسعه Xilinx میشه. در واقع به نظر میرسه دو محیط توسعه SDAccel و SDSoC به صورت یکپارچه کنار هم قرار گرفتن. پکیج دانلودی شامل موارد زیر است.
•SDSoC
•SDAccel
•Vivado-HL
•Vivado-HLS
•Model Composer
•System Generator
•SDK
❗️نکته جالب اینجاست که تا پیش از این SDAccel نسخه ویندوز نداشت!!!
❗️البته پتالینوکس همچنان باید به صورت جداگانه دانلود و نصب بشه. و روی لینوکس نصب بشه.
@Hexalinx
#Essentials
#Barrel_Shifter
✅ احتمالا شما هم هنگام پیادهسازی یک الگوریتم روی FPGA به مداری که نیاز به انجام شیفت متغیر داشته باشد، برخورد کردهاید. مدار Barrel Shifter یک مدار ترکیبی است که قابلیت انجام شیفت متغیر چند بیتی را به تعداد دلخواه در یک کلاک فراهم میآورد و در معماری آن، به جای استفاده از فلیپ فلاپ یا سایر المانهای حافظه از مالتیپلکسر استفاده میشود.
❗️اگر به این موضوع علاقمند هستید ادامه این مطلب را در سایت هگزالینکس مطالعه بفرمایید.
ادامه مطلب ...
@Hexalinx
#Barrel_Shifter
✅ احتمالا شما هم هنگام پیادهسازی یک الگوریتم روی FPGA به مداری که نیاز به انجام شیفت متغیر داشته باشد، برخورد کردهاید. مدار Barrel Shifter یک مدار ترکیبی است که قابلیت انجام شیفت متغیر چند بیتی را به تعداد دلخواه در یک کلاک فراهم میآورد و در معماری آن، به جای استفاده از فلیپ فلاپ یا سایر المانهای حافظه از مالتیپلکسر استفاده میشود.
❗️اگر به این موضوع علاقمند هستید ادامه این مطلب را در سایت هگزالینکس مطالعه بفرمایید.
ادامه مطلب ...
@Hexalinx
#Advanced
#Vitis
وقتی که کار با Vitis را آغاز میکنیم، اولین چیزی که توجه ما را جلب میکند، جایگزین شدن SDSoC ، SDAccel و حتی SDK با مجموعه نرم افزاری Vitis است. به عنوان یک ابزار یکپارچه، در واقع قرار است Vitis برای توسعه یک سیستم نهفته دقیقاً مشابه SDK و یا شتاب دهی یک اپلیکیشن کاملا مشابه SDSoC و SDAccel بکارگرفته شود.
ادامه مطلب ...
@Hexalinx
#Vitis
وقتی که کار با Vitis را آغاز میکنیم، اولین چیزی که توجه ما را جلب میکند، جایگزین شدن SDSoC ، SDAccel و حتی SDK با مجموعه نرم افزاری Vitis است. به عنوان یک ابزار یکپارچه، در واقع قرار است Vitis برای توسعه یک سیستم نهفته دقیقاً مشابه SDK و یا شتاب دهی یک اپلیکیشن کاملا مشابه SDSoC و SDAccel بکارگرفته شود.
ادامه مطلب ...
@Hexalinx
#Advanced
#clock_monitoring
حتی بعد از دستیابی به زمانبندی مطلوب و برآورده شدن الزامات طراحی و همینطور حصول اطمینان از انتقال مناسب کلاک بین نواحی مختلف کلاک، بازهم برای به آرامش رسیدن کمی زود است. در برخی از کاربردهای خاص که به لحاظ نوع ماموریت نیاز به قابلیت اطمینان و کنترل پذیری بسیار بالا دارند، لازم است از صحت عملکرد کلاک در زمان اجرا نیز اطمینان حاصل شود. یعنی برای جلوگیری از بروز هرگونه نقصان در عملکرد سیستم مجبوریم نوعی فرایند تست و بازبینی دائمی روی طرح در نظر بگیریم.
ادامه مطلب ...
@Hexalinx
#clock_monitoring
حتی بعد از دستیابی به زمانبندی مطلوب و برآورده شدن الزامات طراحی و همینطور حصول اطمینان از انتقال مناسب کلاک بین نواحی مختلف کلاک، بازهم برای به آرامش رسیدن کمی زود است. در برخی از کاربردهای خاص که به لحاظ نوع ماموریت نیاز به قابلیت اطمینان و کنترل پذیری بسیار بالا دارند، لازم است از صحت عملکرد کلاک در زمان اجرا نیز اطمینان حاصل شود. یعنی برای جلوگیری از بروز هرگونه نقصان در عملکرد سیستم مجبوریم نوعی فرایند تست و بازبینی دائمی روی طرح در نظر بگیریم.
ادامه مطلب ...
@Hexalinx
#Advanced
#HLS
وقتی صحبت از بهینه سازی کدهای HLS به میان میآید، موارد و جنبههای زیادی برای بهینه سازی وجود دارد. یکی از این جنبهها کنترل نحوه اجرای حلقه هاست. البته باید توجه داشته باشیم که تنها با باز کردن و یا ترکیب حلقهها ممکن است به نتایج مطلوب نرسیم. پاپلاین کردن محاسبات، پایپلاین کردن نحوه خواندن و نوشتن دادهها درون حافظه و چندین و چند مفهوم دیگر برای رسیدن به بهینه ترین پاسخ باید مد نظر قرار داده شود. در این مقاله قصد داریم به نحوه کار با حلقهها در HLS و روشهای بهینه سازی آنها بپردازیم.
ادامه مطلب ...
@Hexalinx
#HLS
وقتی صحبت از بهینه سازی کدهای HLS به میان میآید، موارد و جنبههای زیادی برای بهینه سازی وجود دارد. یکی از این جنبهها کنترل نحوه اجرای حلقه هاست. البته باید توجه داشته باشیم که تنها با باز کردن و یا ترکیب حلقهها ممکن است به نتایج مطلوب نرسیم. پاپلاین کردن محاسبات، پایپلاین کردن نحوه خواندن و نوشتن دادهها درون حافظه و چندین و چند مفهوم دیگر برای رسیدن به بهینه ترین پاسخ باید مد نظر قرار داده شود. در این مقاله قصد داریم به نحوه کار با حلقهها در HLS و روشهای بهینه سازی آنها بپردازیم.
ادامه مطلب ...
@Hexalinx