پرش به


تصویر

تیم طراحی دیجیتال

طراحی دیجیتال Digital Design FPGA IP Core آموزش FPGA HDL HLS

  • موضوع قفل شده این موضوع قفل شده است
8 پاسخ برای این موضوع

#1 manili

manili

    newbie

  • مدیریت انجمن
  • 6 ارسال

ارسالی 22 January 2019 - 08:16 PM

خبر خوب ... خبر خوب ...! بیایید یک کار تیمی انجام دهیم! 
 
بدین وسیله از تمامی علاقه مندان و فعالان عرصه ی طراحی دیجیتال دعوت می شود تا با شرکت در طرحی که در ادامه به آن اشاره خواهد شد زمینه ی فعالیت ها و همکاری های گسترده تر در آینده را فراهم سازند.
 
اما جریان چیست؟
 
ما در این طرح قرار است با Port کردن یک سری IP Core های آماده یا پیاده سازی IP Core های جدید اما ساده (که در قالب نظر سنجی در مورد آن تصمیم گیری خواهد شد)، به شکل پروژه ای با یک دیگر همکاری نماییم. این یک فرصت طلایی برای همه ی کسانی است که دوست دارند آستین ها را بالا زده و طراحی دیجیتال را بطور عملی تمرین کنند. 
هدف نهایی و غایت ما از این همکاری شناسایی اعضای فعال و دارای پتانسیل برای همکاری بلند مدت به منظور ساخت و طراحی IP Core های کاملا کاربردی می باشد. اما در حال حاضر و در این مرحله هدف کسب مهارت و تمرین عملی بحث معماری کامپیوتر یا پیاده سازی الگوریتم ها (مانند الگوریتم های پردازش تصویر) بر بستر FPGA است که در قالب یک یا چند پروژه انجام خواهد شد. البته در حین انجام این پروژه ها کار با بسیاری ابزار دیگر مانند Control Version، Slack، Make، ISE، Vivado و ... به فراخور نوع پروژه و ویژگی های آن تمرین می شود.
 

 

دوستان می توانند پیشنهادات خود را تا ساعت ۲۴ روز جمعه در ادامه ی همین تاپیک قرار دهند تا ما از بامداد روز شنبه به مدت ۳ روز بین پیشنهاد های ارایه شده یک نظر سنجی برگزار کنیم و بر اساس نظرات دوستان بین گزینه های موجود اولویت بندی نماییم. بعد از ایجاد اولویت بندی مرحله عضو گیری به مدت ۴ روز آغاز خواهد شد که بر اساس تعداد افراد علاقه مند به شرکت در این طرح ممکن است یک یا چند پروژه بر مبنای نتایج نظر سنجی انتخاب شوند.
از شما عزیزانی که تمایل به ارایه ی پیشنهاد پروژه دارید، خواهشمندیم که ساختار "شماره- عنوان:توضیحات" را حتما رعایت فرمایید تا ما در ایجاد نظر سنجی دچار مشکل نشویم (شماره ها باید در ادامه ی شماره ی پیشنهاد های قبلی باشند.). علاوه بر این لازم است مفاد پیشنهاد پروژه واضح و دقیق باشد نه یک مطلب کلی مثلا "کار بر روی پردازنده های RISC-V". در صورتی که چنین مواردی مشاهده شود ما ناچاریم پس از تذکر چنین مواردی را حذف کنیم مگر آن که ارایه کننده ی محترم، پیشنهاد خود را اصلاح نموده و واضح تر نماید. لازم به ذکر است که نقد و بررسی پیشنهاد ها در طول هفته و تا قبل از برگزاری نظر سنجی بلامانع است اما هیچ پیشنهادی از نظر سنجی حذف نمی شود مگر این که پیشنهاد دهنده از ما چنین درخواستی نماید.
 
در پایان لازم است یک نکته ی بسیار مهم را گوش زد نماییم تا عزیزان و دوستان گرامی در هنگام ارایه ی پیشنهاد پروژه یا نظر درباره ی طرح حتما مورد توجه قرار دهند:
ما قرار نیست در حال حاضر کار جدیدی انجام دهیم، مثلا پردازنده ی جدیدی را توسعه داده و در واقع یک کار بنیادی بکنیم! ایده ی اولیه ی این طرح تشکیل یک تیم کوچک بود تا در قدم اول یک همکاری با هدف یادگیری و کسب مهارت انجام شود. نظیر کارهایی که در کل دنیا با عنوان پروژه های هابیستی صورت می گیرند و هیچ هدف مادی یا نوآوری خاصی در آن ها نیست (حداقل در ابتدای امر). اینکه در ادامه این کار به کجا برسد و یا اینکه اصلا صورت مسئله بعد از انجام این فعالیت هابیستی چه چیزی تعریف شود، فعلا مشخص نیست. البته در ذهن ما به عنوان پیشنهاد دهندگان این طرح، ایده هایی برای ادامه ی کار (و فاز های بعد) وجود دارد اما این ایده ها در حال حاضر صرفا در ذهن ما هستند و لا غیر.
نتیجه این که در فاز اول ما می خواهیم یک فعالیت آموزشی در حوزه ی طراحی دیجیتال انجام دهیم، از این طریق با افراد فعال و دارای پتانسیل همکاری آشنا شویم و نهایتا بازخورد ها را بررسی و ارزیابی نماییم. فاز های بعدی این طرح فقط و فقط در حد ایده های خام هستند که تصمیم داریم در صورتی که فاز اول با موفقیت انجام شد در آینده با مشورت سایر دوستان (به خصوص عزیزان فعال در فاز اول) و گرفتن بازخورد از آن ها، کم کم آن را بپذیم!
 
پذیرای نظرات، انتقادات و پیشنهاد های گرم شما عزیزان در مورد پروژه و فاز اول طرح هستیم.
 
موفق باشید.


#2 manili

manili

    newbie

  • مدیریت انجمن
  • 6 ارسال

ارسالی 22 January 2019 - 08:27 PM

پیشنهاد شماره 1:
پیاده سازی پردازنده ی 6502 با استفاده از Chisel
 
پردازنده ی 6502 یک پردازنده ی معروف و قدیمی مربوط به دهه ی هفتاد میلادی و محصول شرکت MOS Technology است. قدیمی تر های این جمع احتمالا این پردازنده را در کامپیوتر های Commodore 64 یا کنسول های بازی Atari 2600 خود داشته اند.
اما Chisel که محصول دانشگاه برکلی است، یک روش (زبان) جدید برای پیاده سازی سخت افزار می باشد. روشی که اصطلاحا به آن HCL یا Hardware Construction Language می گویند. در این روش شما به جای ماژول ها با Generator ها مواجه هستید که به شما هم در بحث Verification کمک می کنند و هم این قابلیت را در اختیارتان قرار می دهند که یک کد با قابلیت پیکربندی داشته باشید. برای کسب اطلاعات بیشتر در گوگل واژه های Chisel UC Berkeley را جستجو کنید.
 
پیشنهاد شماره 2:
تبدیل کردن FPGArduino برای پازج
 
پروژه ی معروفی است به نام FPGArduino که اگر در فروم های سایت پازج جستجو بفرمایید می توانید آن را پیدا کنید. تقریبا مراحل اولیه ی Port کردن توضیح داده شده اما بسیار جای کار دارد. بنابراین می توان این مورد را نیز به عنوان یکی از گزینه ها قرار داد. لازم به ذکر است که این پروژه توسط یکی از دانشگاه های اروپای شرقی در حال توسعه است و برای Port کردن آن استقبال و کمک فراوانی می کنند.

 


  • masoudrajaei این پست را پسندیده است

#3 Sajjad

Sajjad

    newbie

  • کاربر عادی
  • ستاره
  • 2 ارسال

ارسالی 23 January 2019 - 05:03 AM

سلام به همه دوستان.امیدوارم که به اهدافمون برسیم.....

#4 R.Mahmoodi

R.Mahmoodi

    newbie

  • کاربر عادی
  • ستاره
  • 4 ارسال

ارسالی 23 January 2019 - 02:22 PM

پیشنهاد ۳ : SystemC Synthesis Tool
با تاکید بر نقش زبان و ابزار در ESL

توضیح مختصر : طراحی ابزار و کامپایلری که کد سطح سیستم SystemC بگیره و کد Verilog یا VHDL سنتز پذیر بده و روی fpga های موجود در بازار هم قابل پیاده سازی باشه بطوری که بشه از همه امکانات FPGA مثلن بلاک رم هاPLL ، DSP48و ... استفاده کرد و هدف نهایی اینه که بشه از ترکیب FPGA و DSP و میکرو یا از SoC ها به نحو مطلوب در پروژه های بزرگ با روش Electronic System Level Design بهره جست.

اهداف و انگیزه ها و توضیح بیشتر:

یک. آشنایی با SystemC که زبانی برای توصیف سطح سیستم است و با زبان C++ برای توصیف، و پالایش و بهینه سازی طرح در سطوح بالاتر از RTL و پارتیشنینگ Hw Sw استفاده شود و به طور کلی با نگاهی به ترندهای طراحی، این زبان آینده دار است.
رفرنس یک دات یک : systemc.org
رفرنس یک دات دو : سرچ language adoption trends در
Blogs.Mentor.com


دو. SystemC زبان توصیف سطح سیستم است ولی با وجود اینکه ابزارهای شبیه سازی در دسترس هستند، مثلن هر کامپایلر cpp ، یا مثلن ویژوال استودیو ، امّا هنوز ابزارهای سنتز کامل و مناسبی برای systemC ارائه نشده است، اما کارهای متنوعی مثل ابزاری برای سنتز یک sub set از systemC استارت خورده و این گَپ بین توصیف و سنتز بزودی پوشانده میشود و چنانچه ما هم در قالب پروژه ای مشترک شروع کنیم همگام با کارهای روز دنیا میتوانیم علاوه بر فهم و یادگیری فرآیند سنتز خودکار، ابزار مناسبی نیز برای سنتز مخصوص خودمان داشته باشیم که بر آن مسلط باشیم.
برای شروع میتوان از ابزارهای lex , yacc جهت ساخت کامپایلری که برنامه SystemC بگیره و Verilog سنتز پذیر تحویل بده شروع کرد. لینک رفرنس "دو دات دو" نمونه اوپن سورس چنین کاری هست امّا با توجه به آخرین ریلیزش مسلمه که جای کار داره ...
رفرنس دو دات یک :
https://accellera.or...stemc-synthesis
رفرنس دو دات دو :
https://github.com/freecores/sc2v

سه . آشنایی با روش طراحی در سطح سیستم : سیستم های امروزی متناسب با نیازها آنچنان پیچیده و بزرگ شده اند که بجز طراحی و پالایش طرح در سطح سیستم و سپس سنتز گام به گام طرح به سطوح پایین تر(بعبارتی همان ESL) چاره ای نیست. این روش هزینه-زمان پروژه ها را کاهش داده و کارایی را افزایش میدهد. با سرچ کلماتی مانند
Electronic System Level Design, Co-Design, Virtual prototyping, HLS, VModel, Design Space Exploration, ...
می توانید به اهمیت این قضیه پی ببرید.
رفرنس سه :
https://en.m.wikiped...nd_verification
و خبر نوید بخش اینکه در صورت تشکیل گروه فعالی که بتوانند بلوک های مختلف یک سیستم را در یک محیط و بصورت دورکاری طراحی (آنالیز، شبیه سازی، سنتر و بهینه سازی) کند، میتوان پروژه های بزرگ، از سیستم های کنترل هواپیما و نیروگاه ها گرفته تا سیستم مخابراتی و رادار را، با این روش بصورت تیمی از ایده تا عمل پشتیبانی کرد و به مقادیر زیادی $ رسید.

چهار. حداقل انتظارات برآورد می شود، ته این قضیه اگر هم گروه از هم بپاشه و نتیجه ای نگیره، حداقل نتیجه مفید لازم که انگیزه خوبیه "آموزش، یادگیری و ارتقای سطح اندیشه" است : آشنایی بیشتر با زبان های systemC, cpp, Verilog, VHDL و آشنایی با فرآیند شبیه سازی و سنتز و تست و دیباگ و وریفیکیشن، آشنایی با کامپایلر ها و زبان ها(زبان برای توصیف، کامپایل، سنتز و ...)، ابزارها، معماری ها و فرآیند کار افراد مختلف در نظام های مختلف(آنالوگ، دیجیتال، نرم افزار، سخت افزار و ...) با زبان های مختلف در یک محیط و ...

#5 mahmoud

mahmoud

    Administrator

  • مدیریت انجمن
  • 100 ارسال

ارسالی 23 January 2019 - 06:34 PM

پیشنهاد شماره 4:
راه اندازی پروتکل ارتباطی CAN روی FPGA (برد پازج)

 

در EDK، کوری به اسم Axi CAN وجود دارد که با قرار دادن آن در کنار میکروبلیز، امکان پیاده سازی لایه ی MAC این پروتکل وجود دارد (که البته خودم هنوز آن را تست نکرده ام). در این حالت با اتصال یک PHY خارجی (مثل ماژول TJA1040 یا TJA1050 که در بازار یافت می‌شود)، امکان ارسال و دریافت داده‌های CAN را خواهید داشت!

سناریوی تست هم به این شکل خواهد بود که با استفاده از یک نود CAN مورد اعتماد (که میتواند یک میکروکنترلر دارای CAN و یا یکی از مبدلهای تجاری CAN مثل i-7565 باشد) اقدام به ارسال و دریافت داده نمود.

سطح فنی پروژه (از 1 تا 10 (1 ساده، 10 سخت)): 4
زمان تخمینی برای انجام این پروژه حداکثر یک هفته است.

مهارتهایی که در این پروژه کسب میکنید: میکروبلیز، دیباگ کد میکروبلیز، آشنایی مقدماتی با پروتکل CAN


  • M.Sadeghi این پست را پسندیده است

#6 mahmoud

mahmoud

    Administrator

  • مدیریت انجمن
  • 100 ارسال

ارسالی 23 January 2019 - 06:57 PM

پیشنهاد شماره 5:
راه اندازی شبکه 10/100 Ethernet (مرسوم با نام LAN) روی FPGA (برد پازج)

از جمله core های جالب دیگری که در مجموعه‌ی EDK ISE وجود دارد، Core های Axi Ethernet Mac Lite (به اختصار axi_emaclite) و نسخه‌ی حرفه ای تر آن یعنی axi ethernet MAC هستند که پیشنهاد میکنم در فاز اول با کور ساده تر axi_emaclite شروع کنیم. این کورها لایه ی MAC پروتکل اترنت را پیاده سازی میکنند و در خارج FPGA تنها کافیست یک تراشه‌ی PHY که مد RMII را پشتیبانی کند (مانند ماژول LAN8720 که در بازار داخل نیز یافت می‌شود) قرار داده شود. در این حالت با استفاده از کتابخانه‌ی lwip (که اتفاقا برای میکروبلیز نیز پورت شده است و نسخه‌ی پورت شده ی آن در SDK وجود دارد) امکان راه اندازی و تست شبکه ی IP از لایه های پایین (Data Link Layer) تا بالای آن (application layer) وجود دارد. بعنوان نمونه مثالهایی برای راه اندازی یک اکو سرور (echo-server) یا حتی یک http-server ساده نیز بصورت آماده وجود دارد که میتواند جهت تسریع عملیات تست استفاده شود.

 

در فاز دوم این پروژه میتوان به سراغ کور axi ethernet رفت که قابلیتهای بسیار بیشتری نسبت به نسخه‌ی lite داشته (از جمله پشتیبانی از مود 1000 (1 گیگابیت) و قابلیت DMA) که در نوع خود میتواند تجارب و مهارتهای بسیار زیادی را به همراه داشته باشد. البته اینکه این Core روی تراشه‌ی lx9 جا بشود یا خیر را نمیدانم.


  • M.Sadeghi این پست را پسندیده است

#7 mahmoud

mahmoud

    Administrator

  • مدیریت انجمن
  • 100 ارسال

ارسالی 25 January 2019 - 07:51 PM

پیشنهاد شماره 6:

عنوان: ساخت یک موشن کنترلر (motion controller) مبتنی بر FPGA

 

ابتدا یک مقدمه کوتاه در مورد کارتهای motion contoller:

 

بطور خلاصه بردهای motion controller ادواتی هستند که در دستگاههای CNC و بازوهای رباتیک، جهت کنترل موتور/موتورها به کار میروند. این ادوات، دستورات حرکتی (که معمولا در قالب استاندارد G-code هستند) را از کاربر یا نرم افزارهای CAD دریافت کرده و آنرا به پالسهای لازم جهت کنترل حرکت موتورها تبدیل میکنند. 

 

در یک دسته بندی کلی، میتوان motion controller ها را به سه دسته تقسیم کرد:

 

1- PC-based: که تمام محاسبات تبدیل G-code به پالسهای حرکتی و نیز تولید پالسها در PC انجام میشود. پالسها از طریق خروجی پورت موازی (پورت پرینتر) که در کیسهای قدیمی وجود داشت به طور مستقیم و یا احتمالا با یک مرحله بافر به موتور متصل میشود. حسن این روش سادگی توسعه‌ی کد و قیمت پایین آن به دلیل عدم استفاده از سخت افزار خارجی خاص و عیب آن کیفیت و سرعت پایین پالس خروجی (به دلیل داشتن jitter و ماهیت غیر real-time سیستم عامل موجود روی PC) است که عملا استفاده از آن را در بسیاری از کاربردهای حرفه ای با مشکل مواجه میکند. 

نرم افزار mach3 (ماخ-تری) یکی از محبوبترین و معروفترین نرم افزارهایی است که در این زمینه مورد استفاده قرار میگیرد.

 

2- semi PC-bases: در این مدل از motion-contoller ها، عملیات تفسیر G-code در PC انجام میشود و نتایج آن که عبارت از نقاط منحنی حرکت است، به یک سخت افزار خارجی تحویل داده میشود. سخت افزار مذکور وظیفه‌ی تبدیل نقاط مذکور به پالس‌های لازم جهت کنترل موتور را برعهده دارد. مزیت این روش نسبت به روش قبل، سرعت و تمیزی بیشتر پالس خروجی نسبت به حالت قبلی است. برخی از این بردها نرم افزارهای اختصاصی خود را دارند (مانند برد ایرانی radonix) و برخی دیگر با استفاده از یک پلاگین با نرم افزار mach3 کار میکنند).

 

3- dedicated یا Standalone: این مدل از کارتهای motion-contoller، کلیه‌ی عملیات تفسیر g-code و تولید پالس کنترل موتور توسط کارت motion control انجام میشود. مزیت این مدل از کارتها سرعت و کیفیت بالاتر پالس خروجی نسبت به مدلهای قبلی است. محصولات شرکت adlink و advantech در این زمینه قابل اشاره است.

PCIe-8158_ProductImage_en_20170103_v4.jp

 

ارتباط FPGA با این داستان:

همواره در مواردی که عملکردهای time-critical مورد نیاز است، FPGA میتواند بعنوان یک گزینه‌ی قوی مطرح شود. در مورد motion-contoller های حرفه ای مانند (محصولات advantech) نیز بخش تبدیل نقاط میانی به سیگنالهای puls و dir توسط FPGA انجام میشود. 


  • M.Sadeghi و masoudrajaei این پست را پسندیده است

#8 masoudrajaei

masoudrajaei

    newbie

  • کاربر عادی
  • ستاره
  • 1 ارسال

ارسالی 26 January 2019 - 02:33 PM

پیشنهاد شماره 6:

عنوان: ساخت یک موشن کنترلر (motion controller) مبتنی بر FPGA

 

ابتدا یک مقدمه کوتاه در مورد کارتهای motion contoller:

 

بطور خلاصه بردهای motion controller ادواتی هستند که در دستگاههای CNC و بازوهای رباتیک، جهت کنترل موتور/موتورها به کار میروند. این ادوات، دستورات حرکتی (که معمولا در قالب استاندارد G-code هستند) را از کاربر یا نرم افزارهای CAD دریافت کرده و آنرا به پالسهای لازم جهت کنترل حرکت موتورها تبدیل میکنند. 

 

در یک دسته بندی کلی، میتوان motion controller ها را به سه دسته تقسیم کرد:

 

1- PC-based: که تمام محاسبات تبدیل G-code به پالسهای حرکتی و نیز تولید پالسها در PC انجام میشود. پالسها از طریق خروجی پورت موازی (پورت پرینتر) که در کیسهای قدیمی وجود داشت به طور مستقیم و یا احتمالا با یک مرحله بافر به موتور متصل میشود. حسن این روش سادگی توسعه‌ی کد و قیمت پایین آن به دلیل عدم استفاده از سخت افزار خارجی خاص و عیب آن کیفیت و سرعت پایین پالس خروجی (به دلیل داشتن jitter و ماهیت غیر real-time سیستم عامل موجود روی PC) است که عملا استفاده از آن را در بسیاری از کاربردهای حرفه ای با مشکل مواجه میکند. 

نرم افزار mach3 (ماخ-تری) یکی از محبوبترین و معروفترین نرم افزارهایی است که در این زمینه مورد استفاده قرار میگیرد.

 

2- semi PC-bases: در این مدل از motion-contoller ها، عملیات تفسیر G-code در PC انجام میشود و نتایج آن که عبارت از نقاط منحنی حرکت است، به یک سخت افزار خارجی تحویل داده میشود. سخت افزار مذکور وظیفه‌ی تبدیل نقاط مذکور به پالس‌های لازم جهت کنترل موتور را برعهده دارد. مزیت این روش نسبت به روش قبل، سرعت و تمیزی بیشتر پالس خروجی نسبت به حالت قبلی است. برخی از این بردها نرم افزارهای اختصاصی خود را دارند (مانند برد ایرانی radonix) و برخی دیگر با استفاده از یک پلاگین با نرم افزار mach3 کار میکنند).

 

3- dedicated یا Standalone: این مدل از کارتهای motion-contoller، کلیه‌ی عملیات تفسیر g-code و تولید پالس کنترل موتور توسط کارت motion control انجام میشود. مزیت این مدل از کارتها سرعت و کیفیت بالاتر پالس خروجی نسبت به مدلهای قبلی است. محصولات شرکت adlink و advantech در این زمینه قابل اشاره است.

PCIe-8158_ProductImage_en_20170103_v4.jp

 

ارتباط FPGA با این داستان:

همواره در مواردی که عملکردهای time-critical مورد نیاز است، FPGA میتواند بعنوان یک گزینه‌ی قوی مطرح شود. در مورد motion-contoller های حرفه ای مانند (محصولات advantech) نیز بخش تبدیل نقاط میانی به سیگنالهای puls و dir توسط FPGA انجام میشود. 

من نمونه Avr که بتواند gcode را تفسیر کند ساخته ام.یعنی جی کد را در حافظه فلش برد ذخیره می کنم و بعد اجرا 

برنامه c# هم نوشته ام که دستگاه را توسط همین برد کنترل می کند.

اصفهان ساکن هستم و می توانم در مواقعی از نزدیک با شما باشم.نمونه در یک دستگاه سه محور تست کرده ام. و حتی چند نسخه تجاری اش هم فروش رفته است.


  • mahmoud این پست را پسندیده است

#9 mahmoud

mahmoud

    Administrator

  • مدیریت انجمن
  • 100 ارسال

ارسالی 26 January 2019 - 05:53 PM

من نمونه Avr که بتواند gcode را تفسیر کند ساخته ام.یعنی جی کد را در حافظه فلش برد ذخیره می کنم و بعد اجرا 

برنامه c# هم نوشته ام که دستگاه را توسط همین برد کنترل می کند.

اصفهان ساکن هستم و می توانم در مواقعی از نزدیک با شما باشم.نمونه در یک دستگاه سه محور تست کرده ام. و حتی چند نسخه تجاری اش هم فروش رفته است.

خیلی عالیه! 

خیلی به کسی که تجربه‌ی راه اندازی موشن کنترل بصورت میدانی داشته باشه احتیاج داشتیم... حضور شما توی این پروژه باعث افتخارمونه! انشاءالله خیلی باهاتون کار داریم ...  :)







همچنین به طراحی دیجیتال, Digital Design, FPGA, IP Core, آموزش FPGA, HDL, HLS نیز برچسب خورده است

0 کاربر در حال خواندن این موضوع است

0 کاربر، 0 مهمان و 0 عضو مخفی