پرش به


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


#127 راه اندازی دوربین OV7670 با بورد پازج

ارسال شده توسط mahdichi در 04 April 2016 - 04:12 PM

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

در این پروژه تصویر دوربین OV7670 با استفاده از بال VGA روی مانیتور نمایش داده می شود.

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

 

ov7670.jpg

 

-         واحد vga_pll برای تولید کلاک 50MHz و کلاک 25MHz را برعهده دارد. کلاک 25MHz برای واحد VGA و کلاک 50MHz برای سایر واحد ها استفاده میشه. اطلاعات تصویر از سنسور هم با همین کلاک 50MHz دریافت می شود.

 

-         واحد ov7670_controller وظیفه مدیریت پایه های کنترلی سنسور ov7670 را برعهده دارد. همچنین کلاک و ریست این سنسور را تولید می کند و برای تنظیم رجیسترهای سنسور کاربرد دارد.

 

-         واحد ov7670_capture دریافت داده های سنسور را انجام می دهد. داده های سنسور از یک پورت 8 بیتی دریافت می شود ولی اطلاعات یک پیکسل شامل 12 بیت است که این داده ها در طول 2 ارسال از سنسور انجام می شود. این واحد وظیفه دارد در ابتدا اولین پیکسل تصویر را پیدا کرده و بعد از آن با تولید آدرس اطلاعات پیکسل های دریافتی را در یک حافظه رم دو پورت ذخیره می کند.

 

-         واحد Address_Generator وظیفه دارد آدرس مناسب برای خواندن از حافظه رم دو پورت را تولید کند و به واحد RGB ارسال کند.

 

-         واحد RGB در کنار واحد VGA وظیفه تولید سیگنال های تصویر خروجی روی پورت VGA را برعهده دارند.

 

 

پروژه کامل قابل اجرا روی بورد پازج1 را می تونید از این لینک دانلود کنید.

ویدیو دمو تست سنسور دوربین ov7670 را هم می تونید از این لینک تماشا کنید.


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


#50 معرفی و اشتراک ویدئوهای مفید

ارسال شده توسط M.Sadeghi در 06 February 2016 - 06:13 AM

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

امیدوارم حال همگی خوب باشه و تو لبه بالارونده زندگیتون باشید :)

این تاپبیک رو ایجاد کردم واسه معرفی ویدئوهایی که داریم و ممکنه دسترسی به این ویدئو ها با محدودیت هایی همراه باشه ;)

فایل های ویدئویی خودتونو که فکر میکنید ممکنه واسه بقیه مفید باشه آپلود کنید و تو این بخش به بقیه معرفی کنید.

اولین بخشو من آپلود کردم , ببینم شماها چه میکنید ها :)

 

فایل های ویدئویی شرکت زایلینکس که به معرفی منابع کلاک و ویژگی های اون تو خانواده اسپارتان6 اختصاص داره:

http://s6.picofile.c..._Ch_1_.mp4.html

http://s7.picofile.c..._Ch_2_.mp4.html

http://s7.picofile.c..._Ch_3_.mp4.html

http://s7.picofile.c..._Ch_4_.mp4.html

http://s7.picofile.c..._Ch_5_.mp4.html

 

 

پسورد دسترسی به فایلها : www.posedge.ir

 

دوستدار شما : محسن صادقی مقدم


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


#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 فرد دیگر این پست را پسندیده اند


#83 استفاده از IP Core آماده در پروژه ها

ارسال شده توسط mahmoud در 09 March 2016 - 12:38 PM

سلام

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

هر کوری یک اینترفیس ارتباطی داره که از طریق اون شما باهاش حرف میزنید. مثلا کورهایی که در قسمت IP Catalog نرم افزار Xilinx Platform Studio (XPS) هستند، اینترفیس ارتباطیشون یکی از استاندارهای PLB یا AXI هست (بسته به اینکه در هنگام ایجاد سیستم چه باسی را انتخاب کرده باشید). 

به همین شکل کورهایی که توسط اشخاص و یا کمپانی های ثالث (third party) تولید میشوند نیز همواره از یک اینترفیس ارتباطی استاندارد استفاده میکنند. این کار علاوه بر راحتی استفاده، باعث میشه کورهایی که توسط اشخاص مختلف تولید شده را نیز بتوان تحت یک ساختار منظم به یکدیگر متصل نمود.

 

کورهای موجود در سایت opencores نیز از یک استاندارد ارتباطی مشخص بنام Wishbone استفاده میکنند که کاملا اپن سورس است و در جامعه ی متن باز جایگاه ویژه ای داره.

برای استفاده از این core ها در قدم اول لازمه تا با نحوه ی خواندن و نوشتن روی باس wishbone آشنا بشیم. برای این کار کافیه نگاهی به فصل-3 این استاندارد (باعنوان Chapter 3. WISHBONE Classic Bus Cycles)که در لینک زیر قابل دسترسی است بیندازید:

 

cdn.opencores.org/downloads/wbspec_b4.pdf

 

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

 

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

 

محمود.


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


#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 فرد دیگر این پست را پسندیده اند


#40 سوالات مربوط به فیلم های آموزشی

ارسال شده توسط M.Sadeghi در 01 February 2016 - 03:04 PM

در مورد دستور ror که سوال کردید نحوه عملکردش چجوریه :

به زبون ساده فکر کنید سرو ته یه رجیستر مثلا 8 بیتی رو به هم وصل کردید و دارید شیفت میدین به سمت راست یا چپ

چه اتقاقی میقته ؟ فرض کنید دارید به سمت چپ شیفت میدین , خب اخرین بیت سمت چپ اگه شیفت پبدا کنه به سمت چپ میره کجا ؟؟

میره میشینه سر جای بیت اول (یعنی اولین بیت سمت راست)

150px_Rotate_left_svg.png

 

 

دستورات شیفت و rotate به صورت کامل تو جدول زیر آورده شده:

ror.jpg


  • mahmoud, moonice, sarbaz13 و 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 فرد دیگر این پست را پسندیده اند


#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 فرد دیگر این پست را پسندیده اند


#13 معرفی منابع یادگیری زبانهای توصیف سخت افزار

ارسال شده توسط sigma_mx در 21 November 2015 - 02:32 PM

اینم یسری دیگه :

http://ati.ttu.ee/~a...AL_Ashenden.pdf

http://esd.cs.ucr.edu/labs/tutorial/

http://www.ece.tufts...hdlTutorial.ppt

http://www.montana.e...05_overview.pdf

http://www.gmvhdl.com/VHDL.html

http://www.asic-worl...l/tutorial.html

https://courses.cit....ial/VHDLTut.htm

http://users.ece.gat...starters-guide/

https://www.doulos.c...esigners_guide/


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


#12 معرفی منابع یادگیری زبانهای توصیف سخت افزار

ارسال شده توسط sigma_mx در 21 November 2015 - 02:23 PM

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

 

 

مثل :

 

http://vol.verilog.com/VOL/main.htm

http://www.asic-worl...og/veritut.html

http://numato.com/le...-1-introduction

http://www.ece.eng.w...og tutorial.pdf

http://acm.sjtu.edu....logtutorial.pdf

https://www.ece.umd....og_tutorial.pdf

http://www.ee.ic.ac....g HDL Basic.pdf

https://www.doulos.c...rilog/tutorial/

http://www.reference.../verilog_01.php

http://www.fpga4fun.... tutorials.html

 


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


#76 FPGArduino - پیوندی دیگر با آردوینو!

ارسال شده توسط mahmoud در 28 February 2016 - 07:03 PM

پازجی ها سلام!

 

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

این بار قصد داریم با کمک یکدیگر، "پازج-یک" را به FPGArduinoتجهیز کنیم! FPGArduino نام پروژه ای است که میکوشد تا محیط ساده و پرطرفدار Arduino را برای برنامه ریزی بوردهای FPGA به کار گیرد. درست همانند آنچه در پروژه ی "آردوینو روی میکروبلیز" داشتیم، در اینجا نیز از یک میکروکنترلر پیاده سازی شده درون FPGA جهت اجرای کدهای آردوینو بهره خواهیم برد، با این تفاوت که به جای "میکروبلیز"، این بار از هسته ی پردازشی f32c CPU core استفاده میکنیم که یک هسته ی پردازشی 32 بیتی با قابلیت های بالا است. در حال حاضر f32c بر اساس دو معماری مختلف (MIPS و RISC-V) پیاده سازی شده است که بسته به سلیقه تان از هر یک از آنها میتوانید استفاده کنید.

 

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

 

 


  • moonice, M.Sadeghi و sarbaz13 این پست را پسندیده است


#56 سوالات مربوط به فیلم های آموزشی

ارسال شده توسط M.Sadeghi در 12 February 2016 - 06:51 PM

سلامت باشید دوست عزیز

خدمتتون عرض کنم که توی این مثال که با هدف آموزش ارائه شده خدمتتون نیاز به محاسبه خیلی دقیق نبوده,حتی با آزمایش و خطا میتونید به عددی که خواسته شمارو ارضا کنه برسید و مشکلی هم واستون پیش نمیاد. با یه تناسب ساده (نه خیلی دقیق) این عدد انتخاب شده (توی یک ثانیه 24 میلیون کلاک بخوره با 25000 کلاک چه میزانی از ثانیه سپری میشه....>>>>در همین حد :) )

و تا جایی که یادمه چشم انسان تقریبا تا 30 تا رفرش در ثانیه (دقیق ترش 24 تا)رو تشخیص میده حالا این اعداد و ارقام دستمونه و ما انتطار زیادی از این پروژه نداریم فقط میخوایم یه عددو درست ببینیم حالا این مقدار یخورده اینور یا اونور تر کارمونو خراب نمیکنه

اما توی کارای دقیق تر (مثل پردازش سیگنال که من تجربه ندارم تو این زمینه و ایشالا در آینده ای نه چندان دور از آموزش شما استفاده خواهیم کرد) که محاسبه باید دقیق تر باشه حتی واسه ساخت فرکانس های دقیق تر از Core هایی که نرم افزار واسمون زحمتشو میکشه میتونیم استفاده کنیم

اگه به داکیومنت Ip core ها مخصوصا clock wizard سری زده باشین میبینید که ویزارد تولید کلاک امکانات مختلفی داره که به شما اجازه میده کلاک دقیق تری تولید کنید(خطای فرکانس تولیدی رو هم بهتون میده و...)

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

واسه فرکانسهای بیشتر و دقیق تر هم پیشنهاد میکنم به داکیومنت clock wizard یه نگاهی بندازید

----------------------------------------------------------------------------------------------------------------------------------------------

در مورد پردازش سیگنال هم اساتید با تجربه تر اگه جواب بدن ممنونشون میشم :)


  • mahmoud, moonice و sarbaz13 این پست را پسندیده است


#45 سوالان پیش آمده هنگام مطالعه user manual ها

ارسال شده توسط mahmoud در 02 February 2016 - 04:07 PM

سلام

اولا جهت استحضار سایر دوستان بایستی عرض کنم که مواردی که محسن جان مطرح کردن اکثرا در داکیومنت (UG380 - Spartan-6 FPGA Configuration) مورد اشاره قرار گرفته است.

 

و اما در مورد سوال محسن جان:

حالا مختصرا میخواستم بدونم این NOR فلش یعنی چی ؟؟ ممظورش حافظه فلشیه که گیتای داخلش NOR هستن ؟؟ یعنی حافظه فلش روی برد پازج ازین نوعه؟

 

حافظه‌ی موجود روی پازج از نوع SPI NOR FLash هست. SPI معرف نوع اینترفیس ارتباطی هست. و NOR هم (همونطوری که اشاره کردین) معرف تکنولوژی ساخت این Flash هست که از اتصال بلوک های NOR ساخته شده. نوع دیگری حافظه Flash هم داریم به اسم NAND Flash که از اتصال بلوک های NAND ساخته شده. فلش های نوع NOR در مقایسه با نوع NAND از قیمت پایین تری برخوردار هستند، در عوض فلش های نوع NAND در حجم های بالاتری موجود هستند.

 

الان FPGA برد پازج یه سری پین داره مخصوص حافظه فلش جانبی, درسته ؟

و وقتی تراشه روشن میشه, اول یه بگیر و بستونی با فلش داره که بدونه از کجا کانفیگاشو برداره
قضیه از این قراره ؟

 

دقیقا. اگه به شماتیک بورد توجه کنید میبینید که دو تا پین به اسمهای M0 و M1 که یکی Pull-Up شده و دیگری Pull-Down. این ترکیب به FPGA میگه که موقع روشن شدن برو سراغ SPI Flash و از اونجا خودتو Config کن.

 

یه ویژگی دیگه این خانواده که ازش نام برده شده در مورد امنیت کانفیگ روی تراشه است , آیا امکان کپی کردنش هست و چجوری یه کد تجاری رو غیر قابل کپی میکنن؟

 

این ویژگی فقط روی یک سری Device های رده بالای این خانواده وجود داره. لازمه ش هم اینه که Secret Key توسط یک باتری بکاپ همیشه حفظ بشه.

قابلیت phase shifting بخش مدیریت کلاک رو هم درک نمیکنم ! یعنی شیفت دادن و تغییر فاز کلاک چه موقع کاربرد داره , اونم تو بحث دیجیتال

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


  • moonice, M.Sadeghi و sarbaz13 این پست را پسندیده است


#41 سوالات مربوط به فیلم های آموزشی

ارسال شده توسط M.Sadeghi در 01 February 2016 - 03:33 PM

در مورد سوال دومتون که فرمودین چجوری سرعت کلاک رو تنظیم کردیم

فرض کنید کلاک مدار ما 10 هرتزه ؛ این یعنی چی ؟ یعنی ما یه کلاک داریم که تو هر ثانیه 10 با نوسان میکنه (10 بار دوره اش تکرار میشه)

و ما قصد داریم یه سیگنال کلاک دیگه بسازیم که فرکانسش 1 هرتز باشه یعنی یه بار بار در ثانیه تکرار بشه

تو برناممون میگیم بعد شمردن 5 لبه بالا رونده سیگنال مارو NOT کن

(روی یه کاغذ پالس ها رو بکشید متوجه میشید)

به تصویر زیر دقت کنید , اولین شکل موج پالس های کلاک ما هستن

lM5Ij.png

 

QA : تو لبه های بالا رونده کلاک ما این سیگنال NOT میشه

QB : بعد هر دو لبه بالا رونده سیگنال NOT میشه

QC : بعد هر 4 لبه بالارونده سیگنال NOT  شده

مثلا اگه قرار باشه تو همین مثال سیگنال QC رو تولید کنیم ,کدمون اینجوری میشه :

Process (clockPulses)
	Variable counter :integer
Begin
	If (clockPulses’event and clockPulses = ‘1’) then
		Counter := counter +1 ;
		If (counter >3) then
			QC <= Not QC;
			Counter :=0;
		End if;
	End if;
En process;

به این صورت با تغییر عدد 3 تو کد بالا و با توجه به کلاک بردتون میتونید سرعت دلخواه خودتونو تولید کنید.

فکر کنم متوجه این قسمت شدید . در کل بازم اگه سوالی بود بپرسید تا جایی که بلد باشم راهنمایی میکنم.


  • mahmoud, moonice و sarbaz13 این پست را پسندیده است


#37 miniSProg - جایگزینی مناسب برای Impact جهت پروگرام کردن "پازج-یک"

ارسال شده توسط mahmoud در 30 January 2016 - 07:24 PM

سلام

 

miniSProg برنامه ای سبک و ساده جهت پروگرام کردن FPGA و SPI Flash بورد پازج-یک می باشد. این برنامه علیرغم ظاهر ساده ای که دارد، عملکرد بسیار خوبی داشته و FPGA موجود روی بورد را ظرف 0.5 ثانیه و حافظه Flash را تقریبا در عرض 30 ثانیه بطور کامل برنامه ریزی مینماید و لذا میتواند به عنوان جایگزین مناسبی برای ابزار Impact مورد استفاده قرار گیرد.

 

دانلود:

برنامه ی miniSProg (نسخه 1.0) - دانلود


  • M.Sadeghi, sarbaz13 و fermerivan این پست را پسندیده است


#17 انتخاب برد fpga

ارسال شده توسط moslem kh در 29 December 2015 - 12:34 PM

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

بنده میخواستم یه الگوریتم پردازش تصویر رو روی fpga پیاد سازی کنم. واسه این کار روی برد یه پورت سریال میخوام که به نرم افزار متلب وصل کنم و داده های تصویر رو برا برد بفرستم. همچنین یه حافظه جانبی هم برا تصویر ورودی و تصویر پردازش شده لازم دارم. SRAM پازح 512 کیلو بایت هست.یعنی چیزی حدود 2 تا عکس 500*500 رو میتونه تو خودش ذخیره کنه که مناسبه!!

و یه سوال که هنوز خوب متوجهش نشدم.ایا میشه پیکسل ها رو از SRAM  فراخونی کرد و ماتریس تصویر ورودی رو بازیابی کرد؟مثلا با همون ابعاد 500*500؟؟؟ چون کار روی تصویر وقتی 2 بعدی باشه راحتره، مثل تو متلب! چون خیلی بهم گفتن باید پردازشت به صورت 1 بعدی باشه. و نمیتونی با یه تصویر با ابعاد بالا کار کنی و fpga جوابگو نیست. با این وجود کد نویسی کمی پیچیده تر میشه. ولی نه خیلی!!

و بعد این پردازش روی دو بعدی انجام شد ، اون رو 1 بعدی کنیم و بفرستیم تو حافظه جانبی...

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

راستی پازج-1 نمونه کد برا راه اندازی SRAM و VGA یا پورت سریالش داره ایا؟؟؟

با تشکر مجدد


  • abolfazl, M.Sadeghi و Hamzeh این پست را پسندیده است


#133 FPGArduino - پیوندی دیگر با آردوینو!

ارسال شده توسط mistery در 08 April 2016 - 07:46 AM

I see that your board is similar to numatoV2 so you should be able to get working all things that work on numato board, I have tested VGA, HDMI, FM, RDS, I2C, SD CARD,boulder game sample on VGA and HDMI, problem is that only EMARD can help you to support SDRAM on your board


  • mahmoud, sigma_mx و SajjadNouri این پست را پسندیده است


#109 FPGArduino - پیوندی دیگر با آردوینو!

ارسال شده توسط mahmoud در 26 March 2016 - 12:53 PM

یکی از کورهای جالب موجود در پکیج FPGArduino، کور Xark VGA است که قابلیت نمایش متن و تصاویر bitmap روی خروجی VGA را دارد. کار کردن با این کور بسیار ساده بوده و چند نمونه پروژه نمونه آن در مسیر file > Examples > f32c_Vga_textconsole قابل ملاحظه است.

در ادامه تصاویری از نتیجه اجرای برخی از این مثالها قرار گرفته است:

 

uqk_untitled.jpg

 

hvq4_photo_2016-03-26_17-13-49.jpg

 

fenx_photo_2016-03-26_17-13-45.jpg

 

fv5j_photo_2016-03-26_17-13-42.jpg


  • mahdichi, moonice و M.Sadeghi این پست را پسندیده است


#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 این پست را پسندیده است


#105 FPGArduino - پیوندی دیگر با آردوینو!

ارسال شده توسط mahmoud در 25 March 2016 - 08:37 AM

سلام خدمت مهندسین گرام!

اولا از اینکه دوستان نسبت به این پروژه علاقه نشون میدهند و پیگیری میکنند خیلی خوشحال هستم. جای امیدواری است که این همکاری ها به کارهای بزرگتر و جالبتر ختم شود. و اما بعد...

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

 

قبل از هر چیزی مروری داشته باشیم بر وضعیت فعلی کار تا بدانیم کجای کار هستیم:

 

هدف:

ما داریم میکوشیم تا بورد پازج را Arduino-Compatible کنیم. با این کار میتوانیم محیط توسعه ی ساده و فراگیر آردوینو را روی یک پلتفرم قوی تر و با امکانات بسیار وسیعتر نسبت به یک بورد آردوینوی میکرویی اجرا کنیم؛ امکاناتی مثل خروجی تصویر VGA و HDMI، شتابدهنده گرافیکی، فرستنده FM، کنترل کننده ی PID با دقت بسیار بالا، انواع اینترفیس های ارتباطی و ... که همه ی اینها را یک هسته ی سافت-کور 32 بیتی به اسم f32c میچرخاند!

 

کجای کاریم؟

این پروژه مشتمل بر دو بخش است:

بخش اول: آماده سازی محیط Arduino-IDE و تعریف مشخصات سخت افزار مورد نظر (پازج-یک) برای آن است. اگر Arduino-IDE را روی سیستم خود نصب کرده باشید، فایلی به اسم boards.txt در مسیر

{ARDUINO}/hardware/arduino/boards.txt

(که {ARDUINO} نمایانگر مسیر نصب نرم افزار Arduino است) را ملاحظه خواهید کرد که حاوی تعاریف بوردهای ساخته شده توسط خود Arduino (مثل Uno، DUE، Leonardo و ...) می باشد. این فایل علاوه بر تعریف پارامترهای سخت افزاری بورد، مواردی مثل مسیر کامپایلر، linker-script، نحوه ی کامپایل کد، پروگرامر و ... (که همه ی اینها تحت عنوان Toolchain پلتفرم مورد نظر شناخته میشوند) را شامل میشود.

گام اول برای شناساندن سخت افزار به آردوینو ساختن فایلی با فرمت مشابه این برای بورد پازج است. خوشبختانه قسمت عمده ی این کار انجام شده و طی رایزنی هایی که با تیم FPGArduino به عمل آمد، هم اکنون بورد پازج-یک بطور رسمی توسط این پلتفرم پشتیبانی میشود. در حال حاضر با نصب پکیج FPGArduino توسط Board manager موجود در آردوینو (مطابق توضیحات مندرج در این پست) بورد پازج-یک (posedge-one) بعنوان یکی از بوردهای این پلتفرم برای محیط آردوینو قابل شناسایی و انتخاب است. برای مشاهده ی تعاریف بورد پازج و سایر بوردهای موجود در FPGArduino پس از نصب این پکیج میتوانید فایل موجود در مسیر زیر را مشاهده کنید:

C:\Users\{USER}\AppData\Local\Arduino15\packages\FPGArduino\hardware\f32c\1.0.0\tools\boards-manager

که {USER} نام کاربری شما در سیستم عامل ویندوز است. چنانچه ایده ای برای بهبود این قسمت از کار دارید میتوانید با ارسال یک pullRequest در صفحه ی مربوط به این پروژه در سایت Github این کار را انجام دهید.

 

قسمت دوم این پروژه مربوط به آماده سازی بستر سخت افزاری روی FPGA است که در ادبیات آردوینویی به آن Bootloader گفته میشود. Bootloader از دیدگاه ما FPGA ی ها، فایل .bit خروجی پروژه ای است که شامل هسته ی f32c و peripheral های دلخواهی است که به آن وصل کرده ایم. این فایل بایستی در پوشه ی 

C:\Users\{USER}\AppData\Local\Arduino15\packages\FPGArduino\tools\bootloaders\1.0.0\posedge1

قرار داده شود تا با انتخاب گزینه ی Tools -> Burn Bootloader در آردوینو روی FPGA پروگرام شود. پس از پروگرام شدن (burn شدن) فایل بوت لودر روی FPGA، کاربر میتواند کد آردوینوی خود را روی پازج آپلود کند و از آن بعنوان یک بورد آردوینویی استفاده کند.

در حال حاضر بخش های اولیه ی این قسمت از پروژه راه اندازی شده است. مواردی مثل

- UART

- GPIO 

- SRAM

- FM/RDS

- VGA Textmode

در حال حاضر توسط بوت لودر پشتیبانی میشوند که البته هنوز بطور کامل و صددرصد تست نشده اند و قطعا شامل ایراداتی هستند که نیاز به شناسایی و رفع دارند. لذا هر گونه همکاری در این قسمت شدیدا با آغوش باز مورد استقبال قرار خواهد گرفت! عزیزانی که تمایل به همراهی در این مسیر را دارند میتوانند با دانلود آخرین آپدیت این پروژه از این آدرس (و یا در صورتی که با سازوکار Git آشنایی دارند مستقیما با fetch کردن) نسبت به توسعه و رفع اشکالات آن اقدام کنند

پروژه ی ISE مروبط به بورد پازج در مسیر 

/rtl/proj/xilinx/posedge_one_bram

و

/rtl/proj/xilinx/posedge_one_bram_logix1

قرار گرفته است که اولی مخصوص بورد پازج (بدون هیچگونه بال اضافی) و دومی مخصوص بورد پازج در حالتی است که مگاوینگ logix1 روی آن قرار گرفته باشد (هر دو پروژه یکسان بوده و تنها تفاوت مختصری در Pinout آن ها وجود دارد.)

 

چنانچه تغییری در پروژه ی بوت لودر ایجاد کردید و مایل به تست آن بودید میتوانید فایل .bit آنرا مستقیما روی FPGA پروگرام کنید (از طریق Impact یا MiniSProg) و سپس در محیط آردوینو با انتخاب بورد پازج کد آردوینویی خود را روی آن آپلود کنید و نتیجه را مشاهده کنید. توجه داشته باشید که در این حالت نیازی به اجرای Burn Bootloader ندارید چرا که بوت لودر را بصورت دستی روی بورد ریخته اید.

 

مشتاقانه منتظر فیدبکها و اصلاحات پیشنهادی شما در این رابطه هستم. لطفا چنانچه هر گونه سوال و یا ابهامی در این رابطه داشتید در ادامه ی همین تاپیک مطرح فرمایید.

 


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