#High_Level_Synthesis
#HLS
#Advanced
✅ سنتز سطح بالا چیست؟
زمان بر بودن پروسه طراحی سخت افزار در سطح رجیستر RTL و همچنین انعطاف پذیری پایین در اصلاح یک مدار از پیش طراحی شده از چالش های بزرگی هستند که طراحان سخت افزار در FPGA همواره با آن روبرو هستند، از این رو شرکت های سازنده تراشه FPGA همواره در صدد ارائه ابزاری جهت برنامه نویسی سطح بالا برای این تراشه ها بوده اند، در سالهای اخیر شرکت XILINX ابزار سنتز سطح بالای خود به نام VIVADO HLS را ارائه داده است و همچنین تلاش های فراوانی جهت توسعه هر چه بیشتر اون انجام داده. این ابزار می تواند الگوریتم های ارائه شده به زبان C و C++ را به مدارات RTL جهت پیاده سازی بر روی تراشه های FPGA تبدیل کند. در حقیقت HLS بعد از زبان های HDL که جایگزین طراحی شماتیک در سطح گیت شدند، گامی مهم دیگری در جهت کاهش پیچیدگی های طراحی و همچنین افزایش بهره وری است.
@Hexalinx
#HLS
#Advanced
✅ سنتز سطح بالا چیست؟
زمان بر بودن پروسه طراحی سخت افزار در سطح رجیستر RTL و همچنین انعطاف پذیری پایین در اصلاح یک مدار از پیش طراحی شده از چالش های بزرگی هستند که طراحان سخت افزار در FPGA همواره با آن روبرو هستند، از این رو شرکت های سازنده تراشه FPGA همواره در صدد ارائه ابزاری جهت برنامه نویسی سطح بالا برای این تراشه ها بوده اند، در سالهای اخیر شرکت XILINX ابزار سنتز سطح بالای خود به نام VIVADO HLS را ارائه داده است و همچنین تلاش های فراوانی جهت توسعه هر چه بیشتر اون انجام داده. این ابزار می تواند الگوریتم های ارائه شده به زبان C و C++ را به مدارات RTL جهت پیاده سازی بر روی تراشه های FPGA تبدیل کند. در حقیقت HLS بعد از زبان های HDL که جایگزین طراحی شماتیک در سطح گیت شدند، گامی مهم دیگری در جهت کاهش پیچیدگی های طراحی و همچنین افزایش بهره وری است.
@Hexalinx
#Advanced
#HLS
وقتی صحبت از بهینه سازی کدهای HLS به میان میآید، موارد و جنبههای زیادی برای بهینه سازی وجود دارد. یکی از این جنبهها کنترل نحوه اجرای حلقه هاست. البته باید توجه داشته باشیم که تنها با باز کردن و یا ترکیب حلقهها ممکن است به نتایج مطلوب نرسیم. پاپلاین کردن محاسبات، پایپلاین کردن نحوه خواندن و نوشتن دادهها درون حافظه و چندین و چند مفهوم دیگر برای رسیدن به بهینه ترین پاسخ باید مد نظر قرار داده شود. در این مقاله قصد داریم به نحوه کار با حلقهها در HLS و روشهای بهینه سازی آنها بپردازیم.
ادامه مطلب ...
@Hexalinx
#HLS
وقتی صحبت از بهینه سازی کدهای HLS به میان میآید، موارد و جنبههای زیادی برای بهینه سازی وجود دارد. یکی از این جنبهها کنترل نحوه اجرای حلقه هاست. البته باید توجه داشته باشیم که تنها با باز کردن و یا ترکیب حلقهها ممکن است به نتایج مطلوب نرسیم. پاپلاین کردن محاسبات، پایپلاین کردن نحوه خواندن و نوشتن دادهها درون حافظه و چندین و چند مفهوم دیگر برای رسیدن به بهینه ترین پاسخ باید مد نظر قرار داده شود. در این مقاله قصد داریم به نحوه کار با حلقهها در HLS و روشهای بهینه سازی آنها بپردازیم.
ادامه مطلب ...
@Hexalinx
#Advanced
#HLS
در مقاله کار با حلقهها در HLS با چگونگی بهینه سازی حلقهها در کدهای HLS آشنا شدیم. روش یکپارچه کردن، ترکیب کردن و باز کردن حلقهها را روی کدهای عملی بررسی کردیم. در این مطلب قصد داریم، چگونگی بهینه سازی به کمک analysis perspective در محیط Vivado-HLS را با هم مرور کنیم. بنابراین در انتهای این مقاله قادر خواهیم بود با تحلیل نتایج پیادهسازی بهترین الگو برای اعمال تغییرات روی ساختار کدها را شناسایی کنیم و در مییابیم که چه شکل از بهینه سازی در افزایش کارایی کدهای HLS تاثیرگذارتر است.
کار با حلقهها در HLS >>
بهینه سازی به کمک Analysis Perspective >>
@Hexalinx
#HLS
در مقاله کار با حلقهها در HLS با چگونگی بهینه سازی حلقهها در کدهای HLS آشنا شدیم. روش یکپارچه کردن، ترکیب کردن و باز کردن حلقهها را روی کدهای عملی بررسی کردیم. در این مطلب قصد داریم، چگونگی بهینه سازی به کمک analysis perspective در محیط Vivado-HLS را با هم مرور کنیم. بنابراین در انتهای این مقاله قادر خواهیم بود با تحلیل نتایج پیادهسازی بهترین الگو برای اعمال تغییرات روی ساختار کدها را شناسایی کنیم و در مییابیم که چه شکل از بهینه سازی در افزایش کارایی کدهای HLS تاثیرگذارتر است.
کار با حلقهها در HLS >>
بهینه سازی به کمک Analysis Perspective >>
@Hexalinx
#Advanced
#HLS, #DDR
فرض کنید قصد داریم یک پروژه در Vivado تولید کنیم که شامل بخشهای زیر است.
✳️ یک Memory Interface Generator
✳️ یک JTAG to AXI IP Core
✳️ یک AXI Interconnect
✳️ یک VIO
✳️ یک ILA
❗️و یک بلوک سفارشی و بسیار جالب به نام ...... ؟
حدس می زنید با این پروژه و بلوک سفارشی که خدمتتان معرفی می کنم قرار است چه کا ر بکنیم؟ اگر کمی تجربه داشته باشید بلافاصله واژه DDR تو ذهنتون جرقه می زنه و با خودتون فکر می کنید، احتمالاً با این پروژه قرار است در حافظه DDR بنویسم و برای ذخیره دیتا ازش استفاده کنیم. نمی خواهم نا امیدتون کنم ولی خب اگر جواب اینقدر سر راست و خلاصه بود لازم نبود این همه مقدمه براتون بنویسم. امیدوارم کمی حس کنجکاویتون رو تحریک کرده باشم.
بهتون پیشنهاد میکنم نگاهی به آخرین مقاله ما در سایت بیاندازید، و با ما همراه شوید.
ادامه مطلب >>
@Hexalinx
#HLS, #DDR
فرض کنید قصد داریم یک پروژه در Vivado تولید کنیم که شامل بخشهای زیر است.
✳️ یک Memory Interface Generator
✳️ یک JTAG to AXI IP Core
✳️ یک AXI Interconnect
✳️ یک VIO
✳️ یک ILA
❗️و یک بلوک سفارشی و بسیار جالب به نام ...... ؟
حدس می زنید با این پروژه و بلوک سفارشی که خدمتتان معرفی می کنم قرار است چه کا ر بکنیم؟ اگر کمی تجربه داشته باشید بلافاصله واژه DDR تو ذهنتون جرقه می زنه و با خودتون فکر می کنید، احتمالاً با این پروژه قرار است در حافظه DDR بنویسم و برای ذخیره دیتا ازش استفاده کنیم. نمی خواهم نا امیدتون کنم ولی خب اگر جواب اینقدر سر راست و خلاصه بود لازم نبود این همه مقدمه براتون بنویسم. امیدوارم کمی حس کنجکاویتون رو تحریک کرده باشم.
بهتون پیشنهاد میکنم نگاهی به آخرین مقاله ما در سایت بیاندازید، و با ما همراه شوید.
ادامه مطلب >>
@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
#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
#HLS, #TRIGGERS
✳️ مدیریت تأخیرها و تریگرها
✅ در Vivado HLS پیاده سازی مداراتی که ذاتاً ماهیت کنترلی دارند میتواند به نوبه خودش یک دردسر به تمام معنا باشد. یک طراح برای کنترل بهینه تأخیرها، تریگرها در HLS نیاز به آشنایی با کتابخانههای اختصاصی Xilinx دارد.
❗️دراین آموزش از پایگاه دانش هگزالینکس قصد داریم نگاهی به این موضوع بیاندازیم که چگونه میتوانیم ساختاری فراتر از الگوریتمهای مرسوم پردازشی در Vivado HLS پیاده سازی کنیم که در آن:
👈 بتوانیم منتظر یک سیگنال ورودی به عنوان تریگر بمانیم.
👈 بتوانیم برای مدت زمان مشخصی همچون چند سیکل کلاک تأخیر ایجاد کنیم و روال اجرای برنامه را متوقف کنیم.
👈 و در نهایت یک سیگنال تریگر خروجی تولید کنیم.
مطالعه متن کامل مقاله »
@Hexalinx
✳️ مدیریت تأخیرها و تریگرها
✅ در Vivado HLS پیاده سازی مداراتی که ذاتاً ماهیت کنترلی دارند میتواند به نوبه خودش یک دردسر به تمام معنا باشد. یک طراح برای کنترل بهینه تأخیرها، تریگرها در HLS نیاز به آشنایی با کتابخانههای اختصاصی Xilinx دارد.
❗️دراین آموزش از پایگاه دانش هگزالینکس قصد داریم نگاهی به این موضوع بیاندازیم که چگونه میتوانیم ساختاری فراتر از الگوریتمهای مرسوم پردازشی در Vivado HLS پیاده سازی کنیم که در آن:
👈 بتوانیم منتظر یک سیگنال ورودی به عنوان تریگر بمانیم.
👈 بتوانیم برای مدت زمان مشخصی همچون چند سیکل کلاک تأخیر ایجاد کنیم و روال اجرای برنامه را متوقف کنیم.
👈 و در نهایت یک سیگنال تریگر خروجی تولید کنیم.
مطالعه متن کامل مقاله »
@Hexalinx
#HLS, #FPGA
✳️ به شکل سنتی معمولا ً از زبانهای HDL برای پیاده سازی طرح در سطح RTL استفاده میشود. با گذشت زمان، طراحی در سطوح انتزاعی بالاتر از سطح RTL و توصیف رفتار مدار به جای پیاده سازی جز به جز عملکرد آن و همینطور استفاده از بلوکهای IP Core که به صورت مدوام و بدون محدودیت قابل بکارگیری در طراحیهای جدید را دارند، باعث سرعت بخشیدن و تسهیل روند طراحی شدهاند.
✅ با پیچیده تر شدن سیستمها و افزایش فشارهای ناشی از محدود شدن زمانهای مجاز برای توسعه و ارائه محصول به بازار، توسعه دهندگان و تولیدکنندگان اصلی تراشههای FPGA را بر آن داشت تا به منظور کاهش زمان توسعه هر چه بیشتر به سمت استاندارد سازی و معرفی یک زنجیره ابزار نرم افزاری تر گام بردارند.
✅ یکی از این تکنیکها سنتز سطح بالا یا HLS نام دارد. سنتز سطح بالا را میتوان به عنوان یک ابزار کارآمد با بهره وری قابل قبول برای طراحی سخت افزار در نظر گرفت. در حالت کلی در سنتز سطح بالا از سورس فایلهای نوشته شده به زبان C و ++C برای تولید کدهای RTL استفاده میشود.
مطالعه متن کامل مقاله »
@Hexalinx
✳️ به شکل سنتی معمولا ً از زبانهای HDL برای پیاده سازی طرح در سطح RTL استفاده میشود. با گذشت زمان، طراحی در سطوح انتزاعی بالاتر از سطح RTL و توصیف رفتار مدار به جای پیاده سازی جز به جز عملکرد آن و همینطور استفاده از بلوکهای IP Core که به صورت مدوام و بدون محدودیت قابل بکارگیری در طراحیهای جدید را دارند، باعث سرعت بخشیدن و تسهیل روند طراحی شدهاند.
✅ با پیچیده تر شدن سیستمها و افزایش فشارهای ناشی از محدود شدن زمانهای مجاز برای توسعه و ارائه محصول به بازار، توسعه دهندگان و تولیدکنندگان اصلی تراشههای FPGA را بر آن داشت تا به منظور کاهش زمان توسعه هر چه بیشتر به سمت استاندارد سازی و معرفی یک زنجیره ابزار نرم افزاری تر گام بردارند.
✅ یکی از این تکنیکها سنتز سطح بالا یا HLS نام دارد. سنتز سطح بالا را میتوان به عنوان یک ابزار کارآمد با بهره وری قابل قبول برای طراحی سخت افزار در نظر گرفت. در حالت کلی در سنتز سطح بالا از سورس فایلهای نوشته شده به زبان C و ++C برای تولید کدهای RTL استفاده میشود.
مطالعه متن کامل مقاله »
@Hexalinx