Имеется
И мы видим его вновь и вновь после перезагрузки, несмотря на то, что заливали написанную свою конфигурацию. Для того, чтобы при подаче питания грузилась написанная нами конфигурация, нужно проделать пару действий в Quartus:
- Убедиться, что в поле Configuration scheme выбрано Active Serial. (Assigments -> Device -> Device and pin options -> Configuration)
- Скомпилировать проект
- Сгенерировать jiс файл: File -> Convert Programming Files -> Output programming file type -> .jiс
В том же окне выбрать тип флеш. Смотрим на схему платы, видим что у нас M25C16. Именно такой вариант Quartus не предлагает, но подойдёт вариант EPCS16.
В том же окне ниже Input files to convert -> Flash Loader -> Add device -> Cyclone IV E -> EP4CE6
SOF Data -> указать файл, полученный на этапе компиляции (тот, который мы хотим видеть при загрузке)
Жмём Generate. - Зальём полученный jiс файл
Теперь после перезагрузки мы увидим созданную нами конфигурацию, которая будет автоматически настраивать ПЛИС при подаче питания.
Комментарии (12)
VBKesha
12.01.2019 10:43Ну вот если бы было написано «FPGA не сохраняет конфигурацию после перезагрузки» ну хоть как то бы сошло, а тут вроде как кричащий заголовок, а дальше описание того что было в даташите.
DanilinS
12.01.2019 11:38Этот факт вводит в ступор начинающего разработчика, имевшего ранее дело с микроконтроллерами.
Не вводит. Если разработчик хотя-бы бегло глянул в документацию — такие вопросы не возникают. Программирование FPGA — настолько типовая, везде описанная операция, что ситуация «вводит в ступор» — это у разработчиков уровня «блондинка с последней стадией Альцгеймера».
С нетерпением ждем статей типа «Разработчик был в шоке, когда узнал что для работы чипа нужно питание.»
GennPen
12.01.2019 14:04+1Автор открыл для себя, что если конфигурацию грузить не напрямую в FPGA, а в SPI Flash(на плате маленькая 8-ногая макросхема рядом с FPGA), то она не будет сбрасываться после перезагрузки.
По-моему это в самом начале обучения рассказывают, когда пишешь первую программу с морганием светодиода.
proton17
12.01.2019 14:14+1Заголовок конечно хмм… ну да ладно. Скажу немного в защиту автора поста, тут проблема в том, что эта типичная плата с Ali, иногда веселые китайцы не отправляют к ней никакой документации, или только схему, иногда на китайском) Если такая плата попадет в руки начинающему разработчику/студенту/школьнику это может ввести в некоторое заблуждение. Очень часто на фирменных отладочных платах и соответственно примерах в сети рассмотрен вариант когда используется специальное загрузочное ПЗУ и оно включено в JTAG цепочку. Китайцы же любят сэкономить (это нормально) и ставят более дешевые SPI флэшки с которыми процесс загрузки чуть более нетривиальный. Так что надо просто заменить заголовок на «Как программировать ПЗУ на плате с Cyclone с Ali»
Inanity
12.01.2019 16:11Да дело не в отладочной плате. Достаточно прочитать маркировку ПЛИС и исходя из документации понять, что имеем дело со SRAM-based FPGA, конфигурация которой энергозависима. Автору рекомендую спрятать или отредактировать статью, чтобы не вводить людей в ступор. Продолжайте изучать ПЛИС и через некоторое время вам самому данная статья покажется смешной.
… рассмотрен вариант когда используется специальное загрузочное ПЗУ и оно включено в JTAG цепочку
Если вы о ПЗУ с встроенным JTAG интерфейсом, то оно лет 10-15 назад ещё кое-как в ходу было, сейчас это уже практически экзотика.proton17
12.01.2019 16:32Продолжайте изучать ПЛИС и через некоторое время вам самому данная статья покажется смешной.
Спасибо конечно за совет, но ПЛИС-ами и ASIC я занимаюсь профессионально года с 2005, в том числе для космической аппаратуры. И статья мне смешной не кажется. Она не очень правильно преподнесена, но не более того. Я видел, в том числе и в институте, много начинающих, которых и более простые вопросы по ПЛИСам ставили в тупик. ПЛИС это не ардуина и не stm32, порог вхождения все же немного выше, не только в плане цены, но и в плане доступной информации. Так что не стоит быть столь категоричным.Inanity
12.01.2019 17:40Извините, я крайне неудачно составил комментарий, последняя пара предложений первого абзаца была обращена к автору статьи.
mmmmmike
12.01.2019 21:01Побалуйтесь отладкой проекта с несколькими линиями тактирования в signaltap — очень пользительно.
old_bear
А что, уже появились микроконтроллеры, которым не требуется внешняя или внутренняя постоянная память, чтобы с неё загрузиться? И x86 процессоры нигде не хранят микрокод?