تیم طراحی دیجیتال
#1
ارسالی 22 January 2019 - 08:16 PM
#2
ارسالی 22 January 2019 - 08:27 PM
- masoudrajaei این پست را پسندیده است
#4
ارسالی 23 January 2019 - 02:22 PM
با تاکید بر نقش زبان و ابزار در 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
ارسالی 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
ارسالی 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
ارسالی 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 در این زمینه قابل اشاره است.
ارتباط FPGA با این داستان:
همواره در مواردی که عملکردهای time-critical مورد نیاز است، FPGA میتواند بعنوان یک گزینهی قوی مطرح شود. در مورد motion-contoller های حرفه ای مانند (محصولات advantech) نیز بخش تبدیل نقاط میانی به سیگنالهای puls و dir توسط FPGA انجام میشود.
- M.Sadeghi و masoudrajaei این پست را پسندیده است
#8
ارسالی 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 در این زمینه قابل اشاره است.
ارتباط FPGA با این داستان:
همواره در مواردی که عملکردهای time-critical مورد نیاز است، FPGA میتواند بعنوان یک گزینهی قوی مطرح شود. در مورد motion-contoller های حرفه ای مانند (محصولات advantech) نیز بخش تبدیل نقاط میانی به سیگنالهای puls و dir توسط FPGA انجام میشود.
من نمونه Avr که بتواند gcode را تفسیر کند ساخته ام.یعنی جی کد را در حافظه فلش برد ذخیره می کنم و بعد اجرا
برنامه c# هم نوشته ام که دستگاه را توسط همین برد کنترل می کند.
اصفهان ساکن هستم و می توانم در مواقعی از نزدیک با شما باشم.نمونه در یک دستگاه سه محور تست کرده ام. و حتی چند نسخه تجاری اش هم فروش رفته است.
- mahmoud این پست را پسندیده است
#9
ارسالی 26 January 2019 - 05:53 PM
من نمونه Avr که بتواند gcode را تفسیر کند ساخته ام.یعنی جی کد را در حافظه فلش برد ذخیره می کنم و بعد اجرا
برنامه c# هم نوشته ام که دستگاه را توسط همین برد کنترل می کند.
اصفهان ساکن هستم و می توانم در مواقعی از نزدیک با شما باشم.نمونه در یک دستگاه سه محور تست کرده ام. و حتی چند نسخه تجاری اش هم فروش رفته است.
خیلی عالیه!
خیلی به کسی که تجربهی راه اندازی موشن کنترل بصورت میدانی داشته باشه احتیاج داشتیم... حضور شما توی این پروژه باعث افتخارمونه! انشاءالله خیلی باهاتون کار داریم ...
همچنین به طراحی دیجیتال, Digital Design, FPGA, IP Core, آموزش FPGA, HDL, HLS نیز برچسب خورده است
موضوعات عمومی →
آموزش FPGA →
ChipScopeشروع شده توسط Molaei , 15 Feb 2017 FPGA, testability, ChipScope, ISE و 1 ... |
|
|
||
موضوعات عمومی →
آموزش FPGA →
نظرسنجی
نظرسنجی: چه آموزش هایی لازم دارید؟شروع شده توسط mahmoud , 23 Feb 2016 آموزش, FPGA |
|
|
||
پازج یک →
پروژههای نمونه →
ارتباط سریال UART بین FPGA و PCشروع شده توسط mahmoud , 05 Jan 2016 serial, UART, FPGA |
|
|
1 کاربر در حال خواندن این موضوع است
0 کاربر، 1 مهمان و 0 عضو مخفی