PCB پروگرمر FPGA هم کارش تمومه فقط چندتا ریزه کاریش مونده
راستی اون بوردی که طریق سریال فلش رو پروگرم میکرد و فلش هم با SPI به FPGA وصل بود رو خودمون میتونیم بزنیم ؟؟؟
هر فلشی که SPI باشه رو میشه با همون شماتیک به FPGA وصل کرد دیگه ؟؟؟ درسته ؟؟؟
PCB پروگرمر FPGA هم کارش تمومه فقط چندتا ریزه کاریش مونده
راستی اون بوردی که طریق سریال فلش رو پروگرم میکرد و فلش هم با SPI به FPGA وصل بود رو خودمون میتونیم بزنیم ؟؟؟
هر فلشی که SPI باشه رو میشه با همون شماتیک به FPGA وصل کرد دیگه ؟؟؟ درسته ؟؟؟
*** اللّهم عجّل لولیک الفرج ***
پروژه های مهم من در ایران میکرو:
" انتقال اطلاعات با SIM900 " ، " آموزش پورت USB " ، " راه اندازی MFRC522 " ، " راه اندازی SLE4442 " ، ""
سلام
آقایان من این PCB رو دادم برای چاپ میتونید از این لینک دریافت کنید ...
تصویرش رو هم ضمیمه کردم ...
تو همین پست PCB قبلی یه مشکل کوچیک داشت که اصلاح و جایگزین قبلی شد
ویرایش توسط Doloop : 11-09-2013 در ساعت 14:30
*** اللّهم عجّل لولیک الفرج ***
دوستان در این مورد نظر خاصی ندارید ؟؟؟همونطور که گفتم روی برد یک فلش خارجی موجود هست. این فایل .bin هم میتونه داخل فلش ریخته بشه و هم داخل خود FPGA فرقشون رو هم خودتون بهتر از من میدونید دیگه که اگر روی FPGA ریخته بشه با قطع برق برنامه هم پاک میشه ولی روی فلش برنامه باقی میمونه. طبق عکس زیر میتونین فلش خارجی یا FPGA رو پروگرام کنید:
This image has been resized. Click this bar to view the full image. The original image is sized 632x453.
سرعت پروگرام کردن FPGA به نسبت فلش خیلی بهتره. در مقایسه با Xilinx Cable من خیلی تفاوتی ندیدم . ولی خوب حجم این برنامه خیلی کم بود و برای مقایسه اصلا مناسب نیست.
بد جور رفته تو مخ من !!
مثلا هر فلشی که ارتباط سریال ساپورت میکنه جواب میده ؟!!!
مثلا AT45DB642D جواب میده ؟؟؟
حجم فلش محدود باشه مشکلی داره مثلا در حد 256 کیلو بایت باشه ؟؟؟
منظورم اینه که فلش سریال حجمش کم باشه بعدا" میشه یه پارالل اضافه کرد و ازش خوند ؟؟؟
بعد آقای عسکری اون کانکتور سریال روی بوردتون برای ارتباط سریال FPGA هست یا برای پروگرم کردن فلش ؟؟؟
روی بوردتون تنها یک حافظه خارجی وجود داره ؟؟؟
و روی بورد اصلی گوشه بالا سمت چپ اون آیسی که پکیجش QFP چیه ؟؟؟
*** اللّهم عجّل لولیک الفرج ***
خوب من یک توضیح نسبتا کامل در مورد پروگرام کردن آماده کردم:
اول از همه همونطور که گفتم خوندن (ug332 که یک App note از طرف Xilinx برای پروگرام کردن Spartan3 هست) تقریبا واجبه ! تمام نکاتی که در این پست میگم همه از این PDF هستند.
پیکربندی FPGA از 2 طریق انجام میشه. یا اینکه خود FPGA پیکربندی خودش رو انجام میده (حالت MASTER)و یا اینکه یک وسیله خارجی(مثل یک پروسسور دیگه) این پیکربندی رو برای FPGA انجام میده (حالت SLAVE). برای اینکه FPGA توی هر کدوم از این مد ها قرار بگیره یک سری پایه خارجی وجود دار(دقیقا مثل Boot کردن میکرو) در ادامه توضیح میدم که کدوم پایه ها برای این کار استفاده میشن.
فعلا با حالت Slave کاری نداشته باشیم. برای اینکه این مدها رو تنظیم کنیم چند تا پایه مشخص برای FPGA در نظر گرفته شده که اونها رو من در ادامه توضیح میدم.
در حالت Master دیتا رو به دو صورت میشه به FPGA انتقال داد:
1- Byte-wide
2- Serial
در شکل زیر حالت های متفاوت هر کدوم از این مد ها رو میتونید ببینید:
در ادامه برای اینکه بهتر بتونم توضیح بدم از نقشه برد Papilio استفاده میکنیم.( میتونید نقشه برد رو ازاین لینک دریافت کنید: Papilio One Hardware )
همونطور که در نقشه برد میبینید، از یک فلش خارجی در برد استفاده شده. ولی این به این معنا نیست که برای پیکربندی FPGA باید فلش خارجی استفاده بشه. همونطور که در شکل بالا میبینید، خود FPGA میتونه پیکربندی خودش رو نگه داره. ولی این حافظه داخلی به صورت Volatile هست به این معنا که اطلاعات بعد از خاموش شدن FPGA از دست میره. برای همین هست که هنگام پروگرام کردن بردهای آموزشی FPGA چه از iMpact استفاده بشه و چه از یک نرم افزار دیگه همیشه 2 تا option هنگام پیکربندی وجود داره(البته اگر فلش خارجی روی برد باشه) یکی پروگرام کردن خود FPGA هست و یکی هم پروگرام کردن فلش خارجی هست.
برای استفاده از فلش خارجی گزینه های خیلی زیادی وجود داره. با توجه به جدول1-1 ug332 برای پیکربندی در حالت Master چهار گزینه برای انتخاب حافظه خارجی وجود داره:
توی مثال ما(برد Papilio) از حالت چهارم استفاده شده. یعنی از یک فلش سریال خارجی به عنوان حافظه استفاده شده. حالا از کجا میشه فهمید که توی کدوم حالت هست؟ اگر فصل 4 فایل ug332 رو بخونید به شکل زیر میرسید:
همونطور که میبینید، برای قرار گرفتن در این مد، باید پایه های M0,M1,M2 و VS0,VS1,VS2 به صورت بالا تنظیم شوند. از طرفی اگر به شماتیک برد Papilio نگاه کنید، همین تنظیمات برای برد در نظر گرفته شده:
پس اگر یک جمع بندی تا اینجا بکنم:
1- برد Papilio رو دوجور میشه پیکربندی کرد. یا کدهای پیکربندی داخل فلش داخلی FPGA قرار میگیرند و یا داخل یک حافظه خارجی قرار دارند.
2- هر دوحالت بالا جز مد Master قرار دارند.
برای ادامه بحث من چندتا سوال جواب قرار دادم که فکر کنم جواب سوال خیلی ها باشه:
آیا از هر فلش خارجی با هر مقدار حافظه میشه استفاده کرد؟
جواب این سوال داخل فایل ug332 داده شده.
همونطور که میدونید،یکی از وظایف نرم افزار iMPACT این هست که پیکربندی FPGA رو انجام بده. ولی طبق فایل ug332 این نرم افزار فقط تعداد معدودی فلش خارجی رو ساپورت میکنه:
تا جایی که یادم میاد برای خانواده Spart3E به توصیه خود Xilinx، حداقل 512KB حافظه خارجی احتیاج هست. توی جدول صفحه 105 هم حداقل همین مقدار ذکر شده. در برد papilio از هیچ کدوم از فلش های بالا استفاده نشده و از یک فلش 4MB محصول SST استفاده شده. این به این معناست که احتمالا iMPACT نمیتونه این فلش رو شناسایی کنه. ولی من امتحان نکردم.
2- اگر FPGA خودش میتونه ارتباط SPI با حافظه خارجی برقرار کنه، پس چرا Core برای ارتباط SPI وجود داره؟ آیا اصلا ارتباط SPI از قبل داخل FPGA طراحی شده؟
من خودم فکر میکردم که این طور هست، ولی هنگامی که توی Forum سایت Papilio میگشتم، به یک بحث جالب رسید که خود سازنده برد در این مورد توضیح داده بود. ایشون گفته بود که برای انتقال پیکربندی به فلش خارجی، نرم افزار Papilio Loader ابتدا یک کد برای ارتباط SPI داخل FPGA قرار میده. سپس کد های پیکربندی FPGA رو از طریق همین ارتباط SPI ایجاد شده به داخل فلش خارجی انتقال میده. حالا هنگام روشن شدن FPGA چون به حالت Master SPI قرارا داده شده، خودش کدها رو از حافظه میخونه و پیکربندی رو انجام میده.
برا من این کار خیلی عجیب هست و خودمم در این مورد سوال دارم که اگر به جواب رسیدم اینجا قرار میدم.
3- این کد ارتباط SPI چه جوری داخل FPGA بارگذاری میشه؟
کلید اصلی این برد آیسی FT2232 هست. طبق گفته دیتاشیت، این آیسی میتونه یک پورت ارتباط JTAG مخصوص پروگرام کردن ایجاد کنه. اگر به شماتیک برد یک نگاه کنید میبینید که پایه های TDI و TDO این آیسی به FPGA وصل شدن که صحت حرف بالا رو میرسونه
4- ایا میشه از این فلش خارجی به عنوان یک حافظه خارجی استفاده کرد؟
بله.
جواب این سوال داخل فروم Papilio داده شده. برای اینکار شما احتیاج دارید که کد ارتباط SPI رو هم بنویسید که خیلی ساده هست.
مطمنا هنوز خیلی نکته برای ساخت برد وجود داره من هرچی به ذهنم رسید اینجا قرار دادم.
یک نکته پایانی هم بگم، هسته اصلی این نرم افزار Papilio Loader براساس یک پروژه دیگه به اسم XC3SPROG نوشته شده که برای توضیحات بیشتر به سایت زیر مراجعه کنید:
xc3sprog
ویرایش توسط hossein1387 : 06-09-2013 در ساعت 10:53
یک نکته ای که یادم رفت درمورد برد بگم این هست که مثل اینکه قبلا همراه برد یک کابل usb داده میشد ولی خیلی ها با این کابل ها مشکل پیدا کرده بودند. حالا اگر قرار شد آقای زارعی برد رو وارد کنند حواسشون به کابل ها باشه!
ویرایش توسط hossein1387 : 06-09-2013 در ساعت 10:45
نمیشه ما مستقیما با یک پروگرمر حافظه ی فلش spi ، این حافظه رو پروگرم کنیم و بعد این حافظه رو بر روی بورد خودمون که دارای spartan3 هست و در مود master spi پیکربندی شده قرار بدیم.
با این کار فقط بحث پروگرمر spi میاد وسط و پروگرمر fpga حذف میشه و حتی برای تولید انبوه هم خیلی بهتره. ما فقط حافظه رو پروگرم میکنیم و با خود بورد کاری نداریم.
لطفا نظر بدین و درباره ی مشکلات و مزایای این ایده صحبت کنیم
پروژه های مهم من در ایران میکرو:
" انتقال اطلاعات با SIM900 " ، " آموزش پورت USB " ، " راه اندازی MFRC522 " ، " راه اندازی SLE4442 " ، ""
ممنون ، توضیحات خوبی بود ...
راستش منم فکر میکردم همینطوری باشه یعنی در واقع fpga برای بوت از مموری خارجی از یه بوت لودر استفاده میکنه ولی فقط با اینجاش مشکل دارم که خود حافظه fpga که فرار volatile هست پس چطور این بوت لودر توش ذخیره میشه و برای دفعه بعد دوباره لود میشه !!!!
بنظر من شدنیه و مهمتر از اون اینه که ... میتونیم بخش jtag رو یعنی ft2232 رو بصورت یه پروگرامر جدا طراحی کنیم و رو برد ها نباشه !نمیشه ما مستقیما با یک پروگرمر حافظه ی فلش spi ، این حافظه رو پروگرم کنیم و بعد این حافظه رو بر روی بورد خودمون که دارای spartan3 هست و در مود master spi پیکربندی شده قرار بدیم.
با این کار فقط بحث پروگرمر spi میاد وسط و پروگرمر fpga حذف میشه و حتی برای تولید انبوه هم خیلی بهتره. ما فقط حافظه رو پروگرم میکنیم و با خود بورد کاری نداریم.
لطفا نظر بدین و درباره ی مشکلات و مزایای این ایده صحبت کنیم
طبق گفته ی دوستمون، ببینید پروگرمر ابتدا لودر رو روی fpga پروگرم میکنه و بعد از طریق اون لودر اطلاعات روی فلش ریخته میشن. وگرنه که fpga پاک میشه.
یعنی برای پروگرم کردن فلش باید یکبار خود fpga پروگرم بشه و بعد حافظه
در کل به نظرم بهتره روی اون بحث که مستقیما خود حافظه ی spi رو پروگرم کنیم یکم نظر بدیم
ویرایش توسط esisafa : 06-09-2013 در ساعت 13:47
پروژه های مهم من در ایران میکرو:
" انتقال اطلاعات با SIM900 " ، " آموزش پورت USB " ، " راه اندازی MFRC522 " ، " راه اندازی SLE4442 " ، ""
اینو متوجه شدم . منظورم با توجه به مطلب زیر ...
سوال من در مورد لحظه پروگرام کردن نیست بلکه در مورد دفعه بعدی هست که fpga بدون پروگرامر قراره لود بشه و کار کنه ...2- اگر FPGA خودش میتونه ارتباط SPI با حافظه خارجی برقرار کنه، پس چرا Core برای ارتباط SPI وجود داره؟ آیا اصلا ارتباط SPI از قبل داخل FPGA طراحی شده؟
من خودم فکر میکردم که این طور هست، ولی هنگامی که توی Forum سایت Papilio میگشتم، به یک بحث جالب رسید که خود سازنده برد در این مورد توضیح داده بود. ایشون گفته بود که برای انتقال پیکربندی به فلش خارجی، نرم افزار Papilio Loader ابتدا یک کد برای ارتباط SPI داخل FPGA قرار میده. سپس کد های پیکربندی FPGA رو از طریق همین ارتباط SPI ایجاد شده به داخل فلش خارجی انتقال میده. حالا هنگام روشن شدن FPGA چون به حالت Master SPI قرارا داده شده، خودش کدها رو از حافظه میخونه و پیکربندی رو انجام میده.
برا من این کار خیلی عجیب هست و خودمم در این مورد سوال دارم که اگر به جواب رسیدم اینجا قرار میدم.
یقینا با توجه به اینکه کد تو fpga ذخیره نمیشه ( بصورت دائم ) الان کد ما توی حافظه اکسترنال ریخته شده . پس الان fpga باید از طریق پروتکل spi کد رو تو رم خودش لود کنه و اجرا کنه ...
حالا برای ارتباط با spi باید fpga یه core داشته باشه !!! یا بصورت سخت افزاری توانایی اینو داره که با مموری spi ارتباط برقرار کنه !
اینکه گفته شده فقط چند نوع مموری پشتیبانی میشن به همین معنیه که fpga بصورت سخت افزاری از این مموری ها اطلاعات رو میخونه ؟
امیدوارم منظور مطلب رو رسونده باشم .
جواب سوالمو خودم فهمیدم .البته آقای عسکری هم اشاره بهش کردن ولی من یه شکل دیگرش رو میگم ...
جواب سوال همون پین های کانفیگ هست که قبلا هم اشاره شد بهش .
توسط پینهای M0 الی M2 که بنام (Mode Select) هستند حالت کانفیگ مشخص میشه طبق عکس زیر :
و توسط پین های VS0 الی VS2 که بنام (Variant Select) هستند نوع مموری مورد استفاده مشخص میشه . مثلا برای spi داریم :
مشخص کردن سری و مدل مموری spi برای این مهمه چون مموری ها از لحاظ بعضی کامندها مثل کامند Read و ... و همچنین سرعت کلاک و ... با هم فرق میکنند ولی چون برای بوت fpga فقط به کامند Read احتیاج هست این مهمه بین کامند ها ...
با این تنظیمات نوع کد کامند Read انتخاب میشه و قانونا هر مموری دیگه ای که تو دیتاشیتش از این کد کامند استفاده کرده باشه معمولا باید با این روش کار کنه ...
کد های Read هم اون 3 موردی هست که تو جدول بالا مشخص شده . همچنین :
و در مورد مموری های دیگه که آقای عسکری هم اشاره کردن که تو بردPapilio از SST استفاده شده . خود شرکت گفته هر مموری که از این کامند ها پشتیبانی کنند (طبق دیتاشیت ) قابل استفاده هست و جدول زیر رو ارائه داده و گفته که اینا تست نشدند و فقط از روی دیتاشیتشون اونا رو تائید کرده ( که SST هم جزو اوناست ) :
در مورد مموری فکر کنم مموری AT45DB161 گزینه خوبی باشه . با توجه به موجود بودن و قیمت و همچنین ساپورت توسط iMPACT طبق جدول ..
یا حق
در مورد ایده حذف پروگرامر هم اصلا احتیاجی به jtag نیست فکر کنم ..
یه میکرو فقط باید محتوای فایل bit رو تو مموری مثلا AT45DB161 بریزه
یا حتی خنده دارترش هم بکنیم ... اصلا به میکرو هم احتیاجی نیست ! با چند پین پورت سریال هم میشه 4 تا سیگنال spi رو در آورد !!
بله درست میفرمایید. فقط بهتره برای پروگرم کردن به هر روشی تنها از usb استفاده بشه. به نظر من همین سورس usbasp برای کار میتونه خوب باشه. البته باید پروگرمر اپن سورس حافظه ی فلش spi پیدا بشه
پروژه های مهم من در ایران میکرو:
" انتقال اطلاعات با SIM900 " ، " آموزش پورت USB " ، " راه اندازی MFRC522 " ، " راه اندازی SLE4442 " ، ""
من اون زمانی که avr کار میکردم یادم هست
که از طریق پورت spi پروگرام میشد
مثلا این لینک ها رو ببینید
Embedded Computers
http://www.biosdiy.cn/wzcp/usbspibiosenglish.htm
bios | Uwe Hermann
FT2232SPI Programmer - flashrom
در کل خیلی نمونه وجود داره
پروژه های مهم من در ایران میکرو:
" انتقال اطلاعات با SIM900 " ، " آموزش پورت USB " ، " راه اندازی MFRC522 " ، " راه اندازی SLE4442 " ، ""
سلام
بچه ها این بردهای پاپیلیو چی شد؟
خبری نیست میاد نمیاد؟
سلام
آقای عسکری این eeprom با شماره 93c46b برای چی هست ؟
نکنه نکته استفاده از این شیوه پروگرم کردن توی این باشه ؟!!!
*** اللّهم عجّل لولیک الفرج ***
سلام
آقای شریفیان درست میگن، توی همه سری های FT یک EEPROM توی شماتیک پیشنهادی وجود داره.
آقا هیچ خبری از برد نشد؟ من تا قبل از شروع ترم چند تا پروژه ساده آماده کرده بودم که توضیح بدم، ولی هیچ کس راغب نیست! یعنی فکر کنم همه منتظر برد هستن تا مثال ها رو روی برد هم پیاده کنند. من خودم واقعا وقت ندارم که روی ساختن برد پاپیلیو وقت بزارم ولی چند تا مثال اولیه آماده کردم به شرح زیر:
1- بلوک تاخیر Configurable بدون استفاده از DCM. در حقیقت یک کانتر خیلی خیلی سادست که برای ایجاد تاخیر به کار میره. توی پروژه های بعد ازش استفاده کردم.
2- مدار نمایش اعداد روی Sevensegment. ورودی این مدار 4 عدد BCD هست. رفرش seven segment ها قابل برنامه ریزی هست. در این مدار از بلوک تاخیر هم استفاده کردم
3- مدار فرستنده UART. این مدار 1 کد اسکی رو میتونه بفرسته. Baudrate و دیگر تنظیمات پورت UART هم قابل برنامه ریزی هست. در این مدار از بلوک تاخیر استفاده شده و از هیچ Core استفاده نکردم.
4- بلوک فرستنده UART. این مدار همون مدار قبل هست با این تفاوت که یک رشته رو میفرسته.
در این 4 تا پروژه، با وجود ساده بودن، خیلی از مسایل VHDL رو میشه یاد گرفت. من از هیچ Core آماده ای استفاده نکردم و کد ها رو برای برد Papilio نوشتم. البته با تغییر فایل ucf روی هر برد دیگه ای قابل استفاده هست.