پرش به


محبوب ترین مطالب پسندیده شده


#161 بررسی ارتباط نرم افزار متلب با FPGA

ارسال شده توسط moonice در 20 June 2016 - 05:36 AM

با سلام خدمت دوستان گرامی

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

خب بدون مقدمه چینی میریم سر اصل مطلب:

 

ما در ابتدا میخواهیم دو روش را مورد بحث قرار دهیم:

1-UART

2-AFIFO

ما فرض را بر این منوال گذاشتیم که شما آموزش های گذشته سایت که به توضیح در مورد این پروتکل ها نموده بود مشاهده کرده اید.

از همین رو از بحث در این باره خود داری میکنیم و مستقیم روی استفاده از این روش ها میرویم.

 

UART

 

ارتباط UART  در متلب بسیار ساده میباشد، به طوری که با یک سرچ ساده در help متلب میتوانید از تمام جزئیات آن آگاه شوید.ولی خب از آنجایی که میخواهیم همه چیز گفته شود از ابتدا تا همه دوستان با ما جلو بیایند و مسیر برای تعامل همه فراهم شود به یک مثال ساده میپردازیم:

 

در اولین قدم نیاز میباشد طراحی و پیاده سازی پروتکل UART روی FPGA انجام دهید.

آموزش این قسمت به لطف دوستان خوبمان در یکی از فیلم های آموزشی سایت به طور کامل توضیح داده شد پس از آن میگذریم(برای مشاهده فیلم اینجا کلیک نمایید).

 

فقط دونکته میباشد که نیاز به توجه دارد:

 

1-      در این مثال در حقیقت ما از نرم افزار متلب به عنوان یک ترمینال سری استفاده نمودیم ولی چیزی که مشخصه اینه که میتوانیم ابتدا الگوریتم های مختلف را روی داده های خود با استفاده از توابع متلب پیاده کنیم سپس توسط یوارت به چیپ بفرستیم.

2-      ما معمولا میخوایم داده ها رو به چیپ بفرستیم که باهاش یه کاری کنیم دیگه( J ) از همین رو علاوه بر پیاده سازی سخت افزاری UART روی FPGA الگوریتم مورد نظر خود (مثل انواع فیلتر ها ) را به صورت سخت افزاری روی FPGA پیاده میکنیم.

 

خب ما از پیش یک طراحی سخت افزار برای این قسمت نمودیم که کار شما را راحت کنیم.

در این طرح هر داده ای که به FPGA فرستاده بشود دقیقا همان را بر میگرداند.(میتوان الگوریتم دلخواه را روی داده های فرستاده شده انجام شود سپس باز گردانده شود به متلب)

(برای توضیحات بیشتر در مورد این طرح اینجا کلیک نمایید)

فقط کافیست فایل .bit مربوط به این پروژه را روی FPGA پروگرام نمایید. با این کار، درون FPGA یک لوپ-بک تشکیل میشود و FPGA هر داده‌‌ای که دریافت میکند را ارسال میکند.

 

حال سراغ پیاده سازی مقدمات ارتباط UART سمت نرم افزار متلب میرویم.

با برنامه زیر میتوایند رشته "abcdefghij" را به FPGA فرستاده و طبق طراحی سخت افزاری مشاهده میکنیم که دقیقا همین ها برگردانده و در متغیر Z ذخیره میشود.

im = 'abcdefghij';
s = serial('COM8');
fopen(s)
tic;


fprintf(s,im)
z = fscanf(s);


tt = toc;
fclose(s)
disp(['elapsed time: ', num2str(tt), ' s']);

 

نکات زیر قابل توجه میباشد:

1-      به جای COM8 پروت مورد نظر در سیستم خود راجایگزین نمیاید.

2-      متغیر im را از هر طریق دلخواه میتوانید مقدار دهی کنید و به FPGA  بفرستید (میتوایند یک رشته متنی یا یک تصویر یا یک رشته صوتی یا... باشد.)

3-      به حجم داده ارسالی و زمان ارسال و دریافت توجه نمایید.

 

همانطور مشاهده میکنید بسیاااار ساده بود! 

برای اطلاعات بیشتر دستور زیر را در رابط دستوری متلب وارد نمایید: doc serial

 

ارتباط AFIFO (آسنکرون فیفو)

 

همانند روش قبل در مرحله اول نیاز طراحی و پیاده سازی سخت افزاری روی FPGA دارد.

اینکه این روش چی هست یا نه کاری با آن نداریم زیرا در آموزش های قبلی توضیح داده شد(برای اطلاعات بیشتر اینجا کلیک نمایید)

 

فقط دونکته میباشد که نیاز به توجه دارد:

1-      در این مثال در حقیقت ما از نرم افزار متلب به عنوان یک ترمینال استفاده نمودیم ولی چیزی که مشخصه اینه که میتوانیم ابتدا الگوریتم های مختلف را روی داده های خود با استفاده از توابع متلب پیاده کنیم سپس به چیپ بفرستیم.

2-      ما معمولا میخوایم داده ها رو به چیپ بفرستیم که باهاش یه کاری کنیم دیگه( J ) از همین رو علاوه بر پیاده سازی سخت افزاری AFIFO روی FPGA الگوریتم مورد نظر خود (مثل انواع فیلتر ها ) را به صورت سخت افزاری روی FPGA پیاده میکنیم.

 

همانند بخش قبل ما یک پروژه طراحی سخت افزاری AFIFO رو برای شما آماده کردیم.در این طراحی هر داده ای که به FPGA ارسال شود NOT میشود و به متلب برگشت داده میشود که نتیجه‌ی آن تبدیل تصویر به صورت نگاتیو است. فقط کافی است فایل .bit موجود در آرشیو پیوست را دانلود نمایید و بر روی بورد پروگرام کنید.

 

بعد از پیاده سازی قسمت سخت افزاری سمت برنامه متلب میرویم. در سمت متلب برای برقراری ارتباط آسنکرون، نیاز به یک API برای برقراری ارتباط آسنکرون فیفو داریم. این API بصورت یک mex file توسط گروه پازج آماده شده است که از آرشیو پیوست قابل دریافت است. با قرار دادن این فایل در کنار mfile خود میتوانید از آن استفاده کنید.

 

اکنون با استفاده از کد m-file زیر، یک تصویر دلخواه با نام im1.tif و اندازه‌ی 480*640 را با ارتباط آسنکرون فیفو به برد ارسال میکنیم و داده‌ی برگشتی از برد را در متغیر b1 ریخته و نمایش میدهیم.

im1 = imread('im1.tif');
subplot(1,2,1)
imshow(im1)
im1_vec = double(im1(:)');
tic;
b = afifo3(im1_vec);
tt = toc;
disp(['elapsed time: ', num2str(tt), ' s']);
b1 = uint8(reshape(b, [480, 640]));
subplot(1,2,2)
imshow(b1) 

نکات زیر قابل توجه میباشد:

1- متغیر im1 را از هر طریق دلخواه میتوانید مقدار دهی کنید و به FPGA  بفرستید(میتوایند خروجی یک رشته متنی یا یک تصویر یا یک رشته صوتی یا... باشد.)

2- به حجم داده ارسالی و زمان ارسال و دریافت توجه نمایید.

3- حتما توجه کنید که مود چیپ FT2232 روی AFIFO باشد.(برای اطلاعات بیشتر اینجا کلیک نمایید)

 

نتیجه اجرای پروژه را در تصویر زیر ملاحظه مینمایید:

matlab-afifo-imginv.jpg

 

توجه: برای اجرای این کد لازم است درایورهای D2XX شرکت FTDI روی سیستم شما نصب باشد. (لینک دانلود)

نتیجه گیری :

به وضوح مشخص است که سرعت ارسال داده در AFIFO بسیار بالاتر از UART میباشد.ارسال و دریافت یک عکس 300 کیلو بایتی با استفاده از ارتباط UART و باودریت 9600 حدود 2 دقیقه طول می‌کشد ولی با استفاده از ارتباط AFIFO  در کمتر 0.1 ثانیه ارسال و دریافت میشود.سرعت AFIFO چیزی حدود  8MB/s (معادل 64Mbps) میباشد، که تقریبا معادل 7000 برابر ارتباط UART @9600 می‌باشد!

 

خب حال بستر ارتباط متلب FPGA فراهم شد و شما میتوانید در این زمینه پژوهش های خود را شروع نمایید و دست آورد های خود را به اشتراک گذارید که تعامل را تکمیل نماییم.

 

همچنین مباحث فوق به صورت کمی مفصل تر و مقدمه ای راجب اینکه FPGA چیست بنده به چندی از بچه های دانشجو دکترا الکترونیک قدرت توضیح دادم که در این لینک زیر می توانید فیلم آن را مشاهده نمایید.

برای دانلود فایل پیوست مربوط به مثال های این آموزش را از این لینک می توانید استفاده نمایید.

 

با تشکر

سعیدی


  • mahmoud, mahdichi, M.Sadeghi و 2 فرد دیگر این پست را پسندیده اند


#71 Gameduino - بیایید FPGA را به بازی بگیریم!

ارسال شده توسط mahdichi در 25 February 2016 - 08:13 PM

با سلام خدمت دوستان عزیز

 

سورس های مربوط به پروژه gameduino را می تونید از لینک زیر دانلود کنید.

 

http://s8.picofile.c...o_demo.rar.html

 

پروژه مربوط به بورد پازج را می تونید بدون تغییر روی برد پروگرام کنید و با استفاده از بال VGA12 خروجی تصویر بگیرید. 

 

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

 

فعلا بیشتر توضیح نمی دم. بنظرم اول دوستان یک نگاهی به برنامه بندازند و اگر سوالی، ایده ای یا نظری دارند مطرح کنند تا بحث را شروع کنیم.


  • mahmoud, moonice, sigma_mx و 1 فرد دیگر این پست را پسندیده اند


#35 بال پردازش صوت

ارسال شده توسط mahmoud در 21 January 2016 - 09:45 PM

مگاوینگ RetroCade پاپیلیو میتونه الگوی خوبی برای شروع باشه:

http://retrocade.gad...troCadeMegaWing

 

ویژگی‌ها:

- دو عدد DAC با دقت 18 بیت جهت خروجی صدا

- پورت MIDI (جهت اتصال ابزارهای موسیقی)

- حافظه MicroSD (جهت ذخیره فایلهای صوتی و اطلاعات پیکره بندی بال)

- LCD کاراکتری

- جوی استیک (جهت چرخش در بین منوهای نرم افزار مربوطه)

- 16 پورت ورودی آنالوگ 

- 16 پورت دیجیتال جهت اتصال به کلید و سوییچ

rcade1.jpg


  • mahdichi, M.Sadeghi, sarbaz13 و 1 فرد دیگر این پست را پسندیده اند


#16 ارتباط USB بین FPGA و کامپیوتر با سرعت 8 MB/s با استفاده از FT2232H در حالت A...

ارسال شده توسط mahmoud در 14 December 2015 - 10:42 PM

در این پروژه یک ارتباط USB با نرخ 8MB/s بین FPGA و PC ایجاد شده و توسط تست loopback، میزان performance آن مورد ارزیابی قرار داده میشود.

 

توضیحات کامل این پروژه را در این پست مطالعه فرمایید.

 

فایل های پیوست:

دانلود (شامل نرم‌افزار ftdi_change_mode + پروژه‌ی ISE (به همراه فایل .bit آماده) + پروژه‌ی Visual Studio 2012 نرم‌افزار سمت PC)

 

به روزرسانی (96.03.16):

دانلود سورس پروژه HLS


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


#144 بال Ethernet

ارسال شده توسط mahmoud در 16 April 2016 - 08:05 AM

رفقای پازجی سلام!

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

این بال از تراشه ی ENC424J600 بهره میبرد که یک مبدل اترنت به باس  SPI است. با استفاده از این بال قادر خواهید بود تا ارتباط اترنت با سرعت حداکثر 14 مگابیت بر ثانیه را داشته باشید.

 

سورس کامل پروژه (شماتیک + PCB):
دانلود 

 

 

تصاویر:

c9dl_pcb.png

701s_3d.png


  • mahdichi, sigma_mx, M.Sadeghi و 1 فرد دیگر این پست را پسندیده اند