پاسخ : کمک در مورد یادگیری FPGA
حالا فقط یک مورد پیش میاد. در یک میکرو کنترلری مثل AVR اطلاعات برنامه (اینجا مدل) در فلش میکرو ذخیره میشه. در میکرویی مثل 8031 که فلش داخلی نداره؛ ROM خارجی استفاده میشه. ولی در اینجا چطور؟
در اصل FPGA بدون چیزی مثل فلش داخلی هست. اون انواعی که بر اساس eeprom داخلی کار میکنن رو بهش میگیم CPLD. اما وقتی میشه یک CPLD با ایپرام خارجی داشت چه کاریه بریم سراغ FPGA؟
جواب اینجاست که وقتی میزان تعداد یا ظرفیت یک آی سی برای نگهداری یک منطق بسیار بزرگ بالا میره استفاده از نوع EEPROM based از لحاظ قیمتی مقرون به صرفه نیست. بخاطر همین میشه برای منطق های کوچیک از انواع EEPROM ی استفاده کرد ولی برای منطق های بزرگ باید سراغ انواع RAM-based که بهش FPGA میگیم رفت.
اما نوع RAM based چطوری کار میکنه؟ معلومه! اینجا چیزی مثل یک ROM خارجی داریم که مدل ها رو توی اون میریزیم. به محض اینکه سیستم برقدار میشه کل اطلاعات رو از این حافظه خارجی به داخل خودش منتقل میکنه و آماده به کار میشه.
به این ROM خارجی هم اصطلاحا configuration memory میگیم. حالا برای انواع این configuration memory چطوری میشه برنامه ریزی کرد من نمیدونم چون تا بحال فقط با CPLD کار کردم.
حالا فرض میکنیم بردی طراحی کردیم و با استفاده از شماتیک فوق مدل مورد نیازمون رو روی CPLD ریختیم. کار تموم شد؟ نه! ما اینجا مثلا روی یک آی سی مثل 9572 نزدیک به 30 پایه ورودی خروجی داریم. حالا سیگنال a کدوم پایه هست؟
در زمان سنتز مدل یکی از چیزهایی که توسط ابزار مربوطه چک میشه تعداد پایه ها و نحوه اتصال منطقی اونها به یک سیگنالی مثل a در مدل ما هست. ایجاد این ارتباط بین یک سیگنال در برنامه با یکی از پین های ورودی خروجی همینجوری الا بختکی!! توسط برنامه مربوطه انجام میشه. که مثلا a میشه پایه 12 و b میشه پایه 27 و q میشه پایه 4! اما ما که نمیتونیم اینجوری کار کنیم! همه چی باید مشخص باشه. برای اینکه یک سیگنال رو روی یک پایه بخصوص بچسبونیم خود ابزار امکاناتی داره که میشه یک سیگنال رو روی یک پایه اصطلاحا قفل کرد. بهش میگیم pin lock. پس برای پین های مد نظرمون عمل pin lock رو انجام میدیم و برنامه رو مجددا (چون روابط بین پایه ها و مدل تغییر کرده) سنتز (کامپایل) میکنیم. و بعد اطلاعات رو داخل config memory یا CPLD پروگرام میکنیم و ....
حالشو میبریم!
....هنوز ادامه داره....
حالا فقط یک مورد پیش میاد. در یک میکرو کنترلری مثل AVR اطلاعات برنامه (اینجا مدل) در فلش میکرو ذخیره میشه. در میکرویی مثل 8031 که فلش داخلی نداره؛ ROM خارجی استفاده میشه. ولی در اینجا چطور؟
در اصل FPGA بدون چیزی مثل فلش داخلی هست. اون انواعی که بر اساس eeprom داخلی کار میکنن رو بهش میگیم CPLD. اما وقتی میشه یک CPLD با ایپرام خارجی داشت چه کاریه بریم سراغ FPGA؟
جواب اینجاست که وقتی میزان تعداد یا ظرفیت یک آی سی برای نگهداری یک منطق بسیار بزرگ بالا میره استفاده از نوع EEPROM based از لحاظ قیمتی مقرون به صرفه نیست. بخاطر همین میشه برای منطق های کوچیک از انواع EEPROM ی استفاده کرد ولی برای منطق های بزرگ باید سراغ انواع RAM-based که بهش FPGA میگیم رفت.
اما نوع RAM based چطوری کار میکنه؟ معلومه! اینجا چیزی مثل یک ROM خارجی داریم که مدل ها رو توی اون میریزیم. به محض اینکه سیستم برقدار میشه کل اطلاعات رو از این حافظه خارجی به داخل خودش منتقل میکنه و آماده به کار میشه.
به این ROM خارجی هم اصطلاحا configuration memory میگیم. حالا برای انواع این configuration memory چطوری میشه برنامه ریزی کرد من نمیدونم چون تا بحال فقط با CPLD کار کردم.
حالا فرض میکنیم بردی طراحی کردیم و با استفاده از شماتیک فوق مدل مورد نیازمون رو روی CPLD ریختیم. کار تموم شد؟ نه! ما اینجا مثلا روی یک آی سی مثل 9572 نزدیک به 30 پایه ورودی خروجی داریم. حالا سیگنال a کدوم پایه هست؟
در زمان سنتز مدل یکی از چیزهایی که توسط ابزار مربوطه چک میشه تعداد پایه ها و نحوه اتصال منطقی اونها به یک سیگنالی مثل a در مدل ما هست. ایجاد این ارتباط بین یک سیگنال در برنامه با یکی از پین های ورودی خروجی همینجوری الا بختکی!! توسط برنامه مربوطه انجام میشه. که مثلا a میشه پایه 12 و b میشه پایه 27 و q میشه پایه 4! اما ما که نمیتونیم اینجوری کار کنیم! همه چی باید مشخص باشه. برای اینکه یک سیگنال رو روی یک پایه بخصوص بچسبونیم خود ابزار امکاناتی داره که میشه یک سیگنال رو روی یک پایه اصطلاحا قفل کرد. بهش میگیم pin lock. پس برای پین های مد نظرمون عمل pin lock رو انجام میدیم و برنامه رو مجددا (چون روابط بین پایه ها و مدل تغییر کرده) سنتز (کامپایل) میکنیم. و بعد اطلاعات رو داخل config memory یا CPLD پروگرام میکنیم و ....
حالشو میبریم!
....هنوز ادامه داره....
دیدگاه