МАРСОХОД

Open Source Hardware Project

Сериалфлэшлоадер.

M2 and SFL

В некоторых случаях нужно, чтобы проект в FPGA стартовал сразу после включения устройства. Это можно реализовать при помощи специального конфигурационного ПЗУ. Хотя конфигурационное ПЗУ на плате Марсоход2 не предусмотрено, оно разведено, и может быть установлено на шилдах.

Сейчас существует два шилда, на которых может быть установлена флэш память для загрузки: шилд разъемов и шилд Ethernet.

Для того, чтобы в это ПЗУ зашить нужный вам проект, существует два способа...

Способы прошивки послежовательной флэш памяти для старта FPGA Altera
Первый способ - непосредственно программатором (на картинке вверху).
Для этого на плате должен быть разведен специальный разъем для подключения программатора, а сам программатор должен поддерживать  режим "Active Serial".

Второй способ - через "JTAG" и проект в самой  FPGA, в который должна быть встроена специальная мегафункция - "altserial_flash_loader"  (на картинке внизу).

Использование этой мегафункции "altserial_flash_loader" описано в AN370.PDF: 

Далее мой очень краткий и вольный перевод.
Итак, в проект, через который будет происходить программирование, должна быть встроена мегафункция "altserial_flash_loader".

Если у вас топлевел проекта Quartus II в графике, то нужно установить в любом месте компонент "ALTSERIAL_FLASH_LOADER"

sfl in sch

Никакие сигналы никуда подключать не надо.

Если у вас топлевел на верилоге, то в него нужно вставить фрагмент кода:


 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..

ConvProgFile

и делаем следующие установки:

  • 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.

SelectDev

После того, как все установки сделаны, жмем  кнопку "Generate".
Теперь  запускаем  программатор, через "Add File" открываем наш ".jic" файл и нажимаем "Start".

Programmer

Если все прошло успешно, то после выключения/включения питания нашего девайса, должен сразу заработать зашитый нами проект.

 

Комментарии  

+1 #19 Ильяч 25.07.2016 15:48
Не подскажите, есть ли у Xilinx подобный способ загрузки прошивки в микросхему. конф. памяти?
+1 #18 arkadiy 20.06.2016 11:32
"Если все прошло успешно, то после выключения/вклю чения питания нашего девайса, должен сразу заработать зашитый нами проект"
Не подскажите, есть возможность инициализироват ь процесс загрузки прошивки из конф.памяти в ПЛИС без выкл/вкл питания? Т.е. есть какой-нибудь глобальынй Reset, который сбрасывает блок загрузки прошивки в ПЛИС? Пытался разобраться по даташиту и в хэндбуку на циклон3, но не получается, опыта видимо маловато((
+1 #17 ВасилийЗ 28.04.2016 05:34
Спасибо за ссылку, kox. Очень полезная. Также интересно как обновлять прошивку ПЛИС - MAX10 во время работы, не через JTAG, а по другому интерфейсу - Ethernet, RS232. Т.е. есть изделие, нужно обновить программу, или данные новые, JTAG наружу не выведен. Зато есть Ethernet. В Nios есть компонент EPCS flash controller. Как его (или другие средства) использовать чтобы изменить прошивку и данные в ПЛИС. Есть ли у кого-то опыт и примеры.
+3 #16 kox 24.04.2016 19:25
Цитирую ВасилийЗ:
Подскажите, как записать информацию (отсчёты звука) в конфигурационное ПЗУ, а затем считать в программе на ПЛИС для воспроизведения?

Вот так:
http://electronix.ru/forum?act=attach&type=post&id=3294
+1 #15 ВасилийЗ 21.04.2016 09:56
Подскажите, как записать информацию (отсчёты звука) в конфигурационно е ПЗУ, а затем считать в программе на ПЛИС для воспроизведения ?
+1 #14 Илья_994 28.10.2015 16:03
Или может быть есть у Альтеры какой-нибудь инструмент, чтобы можно было intel-hex перевести в формат, который quartus_program mer понимает?
+1 #13 Илья_994 28.10.2015 15:40
Спасибо за Flashrom. Попробую с ней разобраться.

Но очень хочется использовать программатор от Quartus'а. Есть какой-нибудь способ загружать файлы в конфигурационно е ПЗУ через JTAG, но не в *.pof формате а, в идеале, в каком-нибудь Intel HEX или ASCII HEX?
+2 #12 frantony 11.09.2015 05:38
Цитирую Илья_994:
Не подскажите, можно ли как-нибудь через USB-Blaster залить произвольный файл в конфигурационную микросхему.


Программа flashrom (http://flashrom.org) позволяет
программировать SPI-флешки, в том числе и конфигурационны е ПЗУ для ПЛИС с SPI-интерфейсом.

flashrom поддерживает USB Blaster.
Вот схема включения: https://github.com/stefanct/flashrom/blob/master/usbblaster_spi.c#L20.
+1 #11 Илья_994 10.09.2015 11:47
Не подскажите, можно ли как-нибудь через USB-Blaster залить произвольный файл в конфигурационну ю микросхему.
+3 #10 Chaosorg 16.05.2015 06:41
Подтверждаю, что проект можно прошить без добавления ALTSERIAL_FLASH _LOADER
+2 #9 Ю р и й 30.07.2014 04:23
Режим конфигурировани я "Active Serial" не очень удобен для МК, поскольку клок генерируется в ПЛИС и может
достигать 40 МГЦ. Для МК удобнее использовать режим "Passive Serial", где клок генерируется конфигуратором,
в вашем случае МК, и данные можно передавать с той скоростью, которая данному МК подсилу.
+3 #8 Alucard 29.07.2014 17:03
А возможно ли конфигурировани е FPGA через МК? То есть программа берется не из EPC, а из памяти МК.
+2 #7 wowa 18.04.2014 10:23
Это значит что не влезает.. А какая у вас именно память?? Попробуйте EPCS16. Проверте на розмер прошивки тут http://www.altera.com/literature/hb/cfg/cyc_c51014.pdf
+2 #6 YuVin 18.04.2014 05:36
При конвертации sof-файла в jic, quartus выдает ошибку "size of file(s) in EPCS4 exceeds memory capasity". ПЛИС - EP3C25, flash - epcs4. Подскажите, почему не хватает памяти? Проект тривиальный.
+2 #5 Алексей1989 02.04.2014 11:57
Спасибо большое. подключил по вашей статье память m25p16 . все работает еще раз спосибо
+2 #4 andreyka 26.11.2013 21:11
Все хорошо, но.. ALTSERILA_FLASH _LOADER вроде нужен только если планируем перешивать EPCS "на ходу" без остановки проекта в циклоне. А со всеми ножками - вообще только если планируется доступ к EPCS из проекта после загрузки. Если нужно просто прошить проект для запуска при загрузке, то он в составе проекта не нужен. Достаточно того что програматор заливает его в циклон перед прошивкой.
+3 #3 Meteor 19.11.2013 16:36
"...конфигураци онное ПЗУ на плате Марсоход2 не предусмотрено..."
Если не секрет почему? Места под нее много не надо, и программировать через JTAG самого циклона удобнее, чем отдельно. :-?
+2 #2 wowa 19.11.2013 14:51
Это потому что вы выбрали добавить фаил "Add file" :) а надо было выбрать чип мышкой и нажать изменить фаил "Change File" .
+1 #1 M_PRO 18.11.2013 16:44
Работает :)
Но на последнем шаге поведение другое.
Почему то рисовало другую схему (две EP3C10 и EP3C10*** к первой подсоединён EPCS4).

Добавить комментарий


Защитный код
Обновить


GitHub YouTube Twitter
Вы здесь: Начало Статьи о разном Сериалфлэшлоадер.