Загрузчик FPGA и CPLD - PullRequest
       5

Загрузчик FPGA и CPLD

0 голосов
/ 29 апреля 2018

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

Как это сделать с FPGA и CPLD.

Для ПЛИС:

Поскольку прошивка хранится во внешней флэш-памяти, изображение ПЛИС записывается на внешнюю флэш-память и затем перезагружается? Но что произойдет, если новый файл поврежден или соединение будет удалено во время обновления? Есть ли способ сделать резервную копию по умолчанию? В микроконтроллерах загрузчик никогда не перезаписывается, поэтому приложение может испортиться в любое время, и загрузчик все равно будет работать.

Существует ли отдельная выделенная часть энергонезависимой памяти, которая не переконфигурируется при включении питания, в которую вы можете загрузить загрузчик?

Для CPLD:

Так как изображение хранится внутри, есть ли у них способ настроить себя? Как сделать загрузчик для CPLD?

Другие мысли:

Может быть, вы можете установить какой-либо чип FTDI с GPIO, которым вы можете управлять из приложения для ПК через USB. Таким образом, вы можете побить SPI, чтобы загрузить новый образ на внешней флэш-памяти? Кто-нибудь делает это? Таким образом, изображение FPGA может быть повреждено или отсутствует, и все равно сможет загрузить новое изображение.

Обратите внимание, что я предполагаю, что FPGA или CPLD одни на плате. Это означает, что на плате нет MCU, чтобы делать все это.

Любое понимание того, как отрасль достигает этой задачи, было бы замечательно.

Ответы [ 3 ]

0 голосов
/ 01 мая 2018

ПВМ

Нет единого общего ответа на этот вопрос. Он различен для разных ПЛИС и для разных типов приложений.

Некоторые ПЛИС имеют возможность иметь два битовых потока во внешней флэш-памяти, поэтому, если один битовый поток поврежден, он откатится ко второму битовому потоку. Вы должны проверить таблицу данных для вашей точной FPGA, чтобы выяснить, есть ли у нее такая функция восстановления и как именно она работает.

Другой распространенный способ сделать это - установить MCU рядом с FPGA и позволить MCU управлять обновлением битового потока FPGA. Возложите на MCU ответственность за обеспечение допустимого потока битов во внешней флэш-памяти. Или вы можете полностью пропустить внешнюю флэш-память и заставить MCU отправлять поток битов в FPGA при каждом запуске.

Некоторые ПЛИС, такие как Xilinx ZYNQ, имеют встроенный жесткий процессор. Этот процессор может загружаться независимо от FPGA, поэтому вы пишете обычный загрузчик для этого процессора и возлагаете на процессоров ответственность за обновление потока битов FPGA.

Если ваше приложение представляет собой периферийное устройство USB, то одним из приятных способов справиться с этим является пропуск флэш-памяти и заставление драйвера USB на ПК загружать поток битов в FPGA при каждом запуске. Битбэнг через FTDIchip GPIO не рекомендуется, так как это займет очень много времени FTDIchip и другие производители имеют аппаратную поддержку для SPI и JTAG. С их помощью вы можете делать это быстро при каждом запуске, без ударов битами.

CPLDs

Обычно нет встроенного механизма восстановления. (Могут быть исключения)

CPLD являются очень простыми устройствами. Если вам нужна возможность обновления битового потока, то это обычно должно выполняться внешним MCU. Обычно вы не реализуете функцию обновления битового потока для CPLD. Вместо этого вы делаете свой дизайн без ошибок с самого начала.

0 голосов
/ 16 января 2019

В случае, если FPGA не поддерживает двойную конфигурацию, и вы программируете FPGA напрямую (не через микроконтроллер), и каким-то образом новый битовый файл или соединение портятся, вам придется программировать его заново с нуля. Однако в Spartan 6 есть два способа загрузить программу непосредственно в FPGA: 1. Это относительно быстро и происходит в течение нескольких минут. Но если установка испортилась, вы должны начать с нуля. Этот метод в основном используется, когда вы выполняете незначительные изменения (особенно точную настройку времени), поскольку загрузка битового файла не занимает много времени. 2. Есть внешняя память, в которую вы загружаете программу. Загруженный в эту память битовый файл остается, если вы не решите явно переписать его. Загрузка битового файла в эту память занимает больше времени (в зависимости от сложности кода), но он остается там, и вы можете загрузить этот код в ПЛИС.

0 голосов
/ 30 апреля 2018

Есть ли способ сделать резервную копию по умолчанию?

Существует семейство микропроцессоров Intel MAX 10 с встроенной флэш-памятью и поддержкой двойной конфигурации. Если что-то не так с одним конфигом, другой все еще там и будет использоваться в качестве резервного образа.

Но это, вероятно, исключение, а не типичный случай в мире FPGA.

...