ПЛИС - DIY Программирование


9

Я программирую микроконтроллеры уже несколько лет, и я только что обнаружил ПЛИС после прохождения курса цифрового дизайна. После некоторых исследований различных FPGA, плат разработки и т. Д. Я все еще не решаюсь их покупать, потому что не знаю, как сделать собственную версию конечного «продукта». Я поставил PIC, SAM, AVR и т. Д. На обычную плату без каких-либо проблем, поэтому я не беспокоюсь об этом - моя главная задача - программировать FPGA без платы производителя.

Мой конкретный вопрос: будет ли работать FPGA, если я возьму растровый файл, сгенерированный Quartus, Vivado, iCEcube и т. Д., Запишу его в микросхему флэш-памяти SPI, начиная с адреса 0 (скажем, через FT2232H), и подключу флэш-память к контакты SPI ПЛИС (при правильной настройке MODE)?

Я прошу прощения за частичное гипотетическое; Я вполне уверен, что это все, что делает Diamond Programmer от Lattice, но мне было интересно, подойдет ли этот подход для FPGA разных производителей, или, скажем, Quartus добавил дополнительные «витрины» или заголовки в память при записи.

Дайте мне знать, если я могу что-то сделать, чтобы улучшить / прояснить вопрос, или я упускаю важный момент в процессе программирования на ПЛИС. Спасибо!


Под «битовой картой» вы подразумеваете битовый поток?
Евгений Ш.

Этот вопрос задавался в другом воплощении раньше
напряжения

1
На вашей первой конструкции платы FPGA я бы предложил 2 способа программирования устройства (плюс заголовок JTAG производителя). Расположите перемычки, чтобы вы могли менять контакты MODE по мере необходимости. Это очень легко испортить и хорошо иметь резервные планы. Также убедитесь, что вы предоставили контрольные точки для INIT и DONE (или того, что Lattice использует для индикации состояния программирования).
Фотон

2
Управление процессом, требуемое для монтажа BGA, особенно с большим количеством выводов, более жесткое, чем что-то вроде QFP. Тот факт, что шаров больше, означает, что вероятность соединения или плохих соединений выше, и, поскольку они скрыты, вы не сможете обнаружить проблемы (если у вас нет рентгеновского снимка), прежде чем запустить устройство, чтобы проверить, есть ли у вас любые вопросы. И если вы перемонтируете компонент, то вам придется его перебросить, что требует больше оборудования. ПЛИС также являются дорогостоящими чипами, которые вы не хотите портить. Большие BGA - это то, где такие вещи, как подогреватели печатных плат становятся необходимыми.
DKNguyen

1
Раньше я работал в месте, где технические специалисты занимались только переделкой весь день, и у них были станции с горячим воздухом (более жесткий контроль температуры и более надежный, чем тепловая пушка), и они не могли надежно паять BGA. Я не думаю, что у них был предварительный нагреватель, поэтому, если вы собираетесь попробовать его, приобретите предварительный нагреватель и используйте дешевую микросхему (может быть, даже пакет BGA с фиктивной цепочкой, чтобы вы могли проверить свои соединения электрически, пока вы не прибили его, прежде чем делать настоящая вещь).
DKNguyen

Ответы:


12

Да, это будет работать просто отлично.

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


1
А некоторые, например, Lattice Mach X02, имеют встроенную вспышку, поэтому для подключения к модулю программирования Lattice вам понадобятся всего несколько резисторов и разъем 5x2.
Спехро Пефхани

Я знал, что вы можете запрограммировать флэш-память напрямую через JTAG с помощью таких инструментов, как Vivado / Quartus, и я надеялся, что у вас получится сделать это без необходимости покупать кабель конкретного производителя - просто используйте FT2232H и запишите поток битов (не растровое изображение?) сам. Я не думаю, что этот чип поддерживается Quartus и не поддерживается открыто Vivado (даже если они используют его на платах Nexys и Basys).
Блейк Лукас

1
Да, вы можете запрограммировать флэш-память с помощью битового файла другими способами. Один из ваших программистов для ваших MCU, вероятно, может это сделать. Я знаю, что моя Segger J-ссылка, безусловно, может.
DKNguyen

@Toor: Действительно, это не кабель конкретного производителя, но он все еще имеет жестко закодированную поддержку в инструментах поставщика, а Segger немного дороже, чем FT2232H.
Бен Фойгт

2
Практически все крупные поставщики предоставляют техническую документацию, позволяющую загружать определенные потоки битов в свои части (как FPGA, так и настраиваемые флэш-файлы конфигурации) с помощью пользовательских инструментов, поскольку это иногда желательно в интегрированных системах или на испытательных стендах. Возможно, проще всего использовать механизм, поддерживаемый вендором (особенно вначале), но я реализовывал альтернативы для конкретных проектов несколько раз за эти годы. Более сложной частью оригинального проекта платы FPGA может быть вся поддержка, необходимая FPGA на плате - множество пар питания для маршрутизации и обхода, часто для нескольких различных напряжений.
Крис Страттон

3

Когда вы говорите «файл [sic] bitmap [sic], сгенерированный», ответ «Да», если вы выбрали правильный - вы допустили небольшую ошибку, используя определенную статью, так как не был создан только один файл ,

Например, Quartus может создавать файлы SOF, POF и JIC. Последнее, что вы используете для косвенного программирования через FPGA JTAG. Не было бы полезно записать это на флэш-память SPI. SOF предназначен для загрузки через JTAG для временного запуска вашего проекта в FPGA. POF - это то, что вам нужно загрузить во флеш-чип.

Посмотрите FPGA: Bitstream vs. SRAM Object File, чтобы получить много полезной информации о том, что означают разные файлы от каждого из разных поставщиков.


1

Будет ли работать ПЛИС, если я ... подключу флэш-память к выводам SPI ПЛИС (при правильной настройке MODE)?

Если я правильно понимаю ваш вопрос, вы хотите записать конфигурацию FPGA (например, вашу скомпилированную модель HDL) в SPI EEPROM или SPI Flash, и вы хотите, чтобы FPGA программировала сама себя, используя данные на ИС SPI.

(Если я правильно понимаю ответ Дэйва Твида, он понял ваш вопрос по-другому.)

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

Эта форма волны не одинакова для всех устройств флэш-памяти. Даже если смотреть только на карты памяти SD (которые также можно использовать в качестве флэш-памяти SPI), мы находим два варианта, требующих отправку на карту другой формы сигнала, прежде чем карта считывает данные.

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

Я знаю, что Altera производит специальные микросхемы Flash или EEPROM, которые совместимы с их FPGA.


Очевидно, что SD-карта не будет работать, поскольку ни одна FPGA (насколько мне известно) не поддерживает SD / MMC в качестве протокола конфигурации. Большинство ПЛИС придерживаются AT24 / AT26 / AT45.
Дмитрий Григорьев

1

Если вы хотите записать поток битов FPGA на флэш-память без официальных инструментов программирования FPGA, вам, скорее всего, потребуется конвертировать этот файл потока битов в открытый двоичный формат, который вы можете легко прочитать, например, в двоичный формат, Intel HEX или Motorola SREC ( пример ). Это исключит любые проприетарные заголовки, которые может содержать поток битов FPGA.

Таким образом, вы сможете запрограммировать флэш-память, используя инструменты производителя флэш-памяти (или ваши собственные инструменты), или даже заказать микросхемы флэш-памяти, предварительно запрограммированные с помощью потока битов ПЛИС.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.