
В некоторых случаях нужно, чтобы проект в FPGA стартовал сразу после включения устройства. Это можно реализовать при помощи специального конфигурационного ПЗУ. Хотя конфигурационное ПЗУ на плате Марсоход2 не предусмотрено, оно разведено, и может быть установлено на шилдах.
Сейчас существует два шилда, на которых может быть установлена флэш память для загрузки: шилд разъемов и шилд Ethernet.
Для того, чтобы в это ПЗУ зашить нужный вам проект, существует два способа...
Первый способ - непосредственно программатором (на картинке вверху).
Для этого на плате должен быть разведен специальный разъем для подключения программатора, а сам программатор должен поддерживать режим "Active Serial".
Второй способ - через "JTAG" и проект в самой FPGA, в который должна быть встроена специальная мегафункция - "altserial_flash_loader" (на картинке внизу).
Использование этой мегафункции "altserial_flash_loader" описано в AN370.PDF:
Далее мой очень краткий и вольный перевод.
Итак, в проект, через который будет происходить программирование, должна быть встроена мегафункция "altserial_flash_loader".
Если у вас топлевел проекта Quartus II в графике, то нужно установить в любом месте компонент "ALTSERIAL_FLASH_LOADER"
Никакие сигналы никуда подключать не надо.
Если у вас топлевел на верилоге, то в него нужно вставить фрагмент кода:
module cyclone3 (KEY0,KEY1,LED);
input KEY0,KEY1;
output [3:2]LED;
assign LED[3] = KEY1;
assign LED[2] = KEY0;
altserial_flash_loader altserial_flash_loader_component (
.noe (),
.asmi_access_granted (),
.asmi_access_request (),
.data0out (),
.data_in (),
.data_oe (),
.data_out (),
.dclkin (),
.scein (),
.sdoin ()
);
endmodule
Далее проект нужно откомпилировать и загрузить в FPGA .
Проект, который нужно зашить в ПЗУ, сначала нужно конвертировать. Для этого заходим в меню Altera Quartus II File => Convert Programming Files..
и делаем следующие установки:
- Programming file type : JTAG Indirect Configuration File(.jic)
- Configurration device: EPCS4 (ну, или какая там у вас)
- Mode : Active Serial
- File name: C3_sfl.jic (это, собственно, имя выходного файла)
После этого в окне "File/Data area" должны появиться две строки - "Flash Loader" и "SOF Data".
Для начала жмем на строку "SOF Data" , кнопку "Add File" и находим тот ".sof" файл, который нам нужно конвертировать.
Затем жмем на строку "Flash Loader" , кнопку "Add Device" и ставим галочку на EP3C10.
После того, как все установки сделаны, жмем кнопку "Generate".
Теперь запускаем программатор, через "Add File" открываем наш ".jic" файл и нажимаем "Start".
Если все прошло успешно, то после выключения/включения питания нашего девайса, должен сразу заработать зашитый нами проект.

Спасибо большое за инструкцию и наводку на документацию. У меня китайская отладочная плата на чипе Cyclone IV EP4CE6E22 и на плате уже есть микросхема памяти EPCS4. Все прошивается, все работает, но беспокоит следующее: при каждой подаче питания во время прошивки ПЛИС на все ноги ПЛИС кратковременно (в районе 180 мс) приходит напряжение в около 2,8 В, после чего все начинает работать уже как надо. Есть ли какой-нибудь способ с этим бороться? Спасибо!
Не подскажите, есть возможность инициализироват ь процесс загрузки прошивки из конф.памяти в ПЛИС без выкл/вкл питания? Т.е. есть какой-нибудь глобальынй Reset, который сбрасывает блок загрузки прошивки в ПЛИС? Пытался разобраться по даташиту и в хэндбуку на циклон3, но не получается, опыта видимо маловато((
Вот так:
electronix.ru/.../
Но очень хочется использовать программатор от Quartus'а. Есть какой-нибудь способ загружать файлы в конфигурационно е ПЗУ через JTAG, но не в *.pof формате а, в идеале, в каком-нибудь Intel HEX или ASCII HEX?
Программа flashrom (flashrom.org) позволяет
программировать SPI-флешки, в том числе и конфигурационны е ПЗУ для ПЛИС с SPI-интерфейсом.
flashrom поддерживает USB Blaster.
Вот схема включения: github.com/.../....
достигать 40 МГЦ. Для МК удобнее использовать режим "Passive Serial", где клок генерируется конфигуратором,
в вашем случае МК, и данные можно передавать с той скоростью, которая данному МК подсилу.
Если не секрет почему? Места под нее много не надо, и программировать через JTAG самого циклона удобнее, чем отдельно.
Но на последнем шаге поведение другое.
Почему то рисовало другую схему (две EP3C10 и EP3C10*** к первой подсоединён EPCS4).