Что происходит, когда FPGA «запрограммирован»?


13

Из того, что я понимаю, процесс программирования FPGA состоит из двух частей:

  1. Закодируйте описание оборудования в биты, которые может понять ПЛИС (т.е. напишите немного HDL и скомпилируйте его)
  2. Загрузите скомпилированный HDL на FPGA.

Мой вопрос: «Что делает ПЛИС с скомпилированным HDL?». На данный момент я думаю о FPGA как о «гибком оборудовании», где провода и логические элементы могут быть сформованы в соответствии с вашими предпочтениями. Одна из приятных вещей заключается в том, что формуемость является постоянной: FPGA можно перепрограммировать.

Как ПЛИС интерпретируют скомпилированный HDL? Как достигается постоянная формуемость?


4
Это на самом деле не является постоянным - битовый поток FPGA должен быть перезагружен из EEPROM каждый раз, когда подается питание. CPLD не имеют этой проблемы, и некоторые FPGA имеют встроенную EEPROM, которая загружает их поток битов при каждом включении питания.
AngryEE

2
Я думаю, что он имеет в виду «формуемость постоянна», то есть сама программа не является постоянной.
ajs410

Ответы:


23

Судя по твоему другому вопросу, ты парень из Xilinx. Поэтому я настоятельно рекомендую получить спецификацию вашего чипа Xilinx и перейти к главе «Описание функций». Для чипа Spartan 3, который я использую, это 42 страницы забавного чтения. Он подробно описывает, какие компоненты находятся внутри FPGA - IOB, CLB, срезы, LUT, блочное ОЗУ, множители, диспетчер цифровых часов, сеть синхронизации, межсоединение, а также некоторую базовую информацию о конфигурации. Вы должны понимать эту информацию, если хотите знать, как выглядит «скомпилированный HDL».

Когда вы ознакомитесь с архитектурой вашей FPGA, вы сможете понять этот процесс. Во-первых, ваш дизайн HDL проходит через механизм синтеза, который превращает ваш HDL в RTL. Затем Mapper обрабатывает результаты Synthesis, «сопоставляя» их с доступными частями архитектуры FPGA. Затем Маршрутизатор делает Place And Route (PAR), который выясняет, куда эти части идут и как их соединить. Наконец, результаты из PAR превращаются в BIT-файл. Обычно этот BIT-файл затем каким-то образом преобразуется, чтобы его можно было загрузить в микросхему Flash, чтобы FPGA можно было запрограммировать автоматически при включении.

Этот битовый файл описывает всю программу FPGA. Например, CLB в Спартанце 3 состоят из секций, которые состоят из LUT, которые являются просто 16-адресными 1-битными SRAM. Итак, одна вещь, которую будет содержать BIT-файл, - это то, какие именно данные поступают в каждый адрес SRAM. Другая вещь, которую содержит файл BIT, - это то, как каждый вход LUT подключен к матрице соединений. Файл BIT также будет содержать начальные значения, которые находятся внутри оперативной памяти блока. Он опишет, что связано с установкой и сбросом контактов каждого триггера в каждом слайсе. Он опишет, как соединена цепь переноса. Он будет описывать логический интерфейс для каждого IOB (LVTTL, LVCMOS, LVDS и т. Д.). Он будет описывать любые встроенные подтягивающие или понижающие резисторы. В основном все.

Для Xilinx память FPGA очищается при запуске конфигурации (т. Е. Утверждается PROG_B). Как только память очистится, INIT_B поднимется до высокого уровня, чтобы указать, что фаза завершена. BIT-файл затем загружается либо через JTAG, либо через интерфейс Flash-чипа. Как только программа загружена, происходит глобальная установка / сброс (GSR), сбрасывая все триггеры в исходное состояние. Вывод DONE затем становится высоким, чтобы показать, что конфигурация завершена. Ровно через один тактовый цикл высвобождается глобальный сигнал трех состояний (GTS), позволяющий управлять выходами. Ровно через один тактовый цикл освобождается глобальное разрешение записи (GWE), позволяя триггерам начать изменение состояния в ответ на их входные данные. Обратите внимание, что даже этот окончательный процесс конфигурации может быть слегка переупорядочен в зависимости от флагов, установленных в файле BIT.

РЕДАКТИРОВАТЬ:

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


6

Компиляция HDL приводит к битовой комбинации, которая указывает, какие соединения внутри FPGA должны быть активированы. FPGA больше не нужно интерпретировать HDL. Битовый шаблон запрограммирован в последовательный загрузчик Flash / EEPROM, и после загрузки этот шаблон перемещается в FPGA, делая необходимые подключения.


1
СИНТЕЗ означает три фразы: 1. Составление списка соединений 2. Оптимизация уровня шлюза 3. Отображение технологий.
Стандартный Сандун

4

Результатом компиляции является поток битов (буквально поток битов), который загружается после включения питания. Это смещает FPGA, хранящуюся в некоторых ячейках памяти (защелках). Эти ячейки связаны с различными логическими объектами, мультиплексорами, справочными таблицами, блоками RAM, матрицами маршрутизации и образуют то, что называется «конфигурацией». Как только поток битов загружен, FPGA начинает работать - биты в защелках конфигурации "говорят" каждому маленькому фрагменту FPGA, как работать.

РЕДАКТИРОВАТЬ 24 апреля 2012 г .: Шлепанцы, о которых я упоминал, не предназначены для справочных таблиц или их конфигурации. Как сказал @ ajs410, они находятся в ОЗУ, а это еще меньше транзисторов. Триггеры предназначены для хранения данных из LUT, если это хранилище включено.


Какая часть схемы в типичной ПЛИС является реальной логикой и маршрутизацией, а какая поддержка программирования?
суперкат

Технически «ячейки памяти» - это триггеры, а не защелки. Т.е. они срабатывают по фронту.
Брайан Карлтон

@BrianCarlton: действительно ли используются вьетнамки для всех ячеек хранения программ? Насколько я понимаю, триггерам нужно что-то порядка 12-16 MOSFET на бит; напротив, другие полностью статичные методы для фиксации данных требуют только 5-8.
суперкат

1
LUT обычно состоит из SRAM. Триггеры прикреплены к выходу SRAM.
ajs410

1
@supercat: Я слышал, что 90% FPGA - это маршрутизация ... остальное - логика и конфигурация - хотя не могу быстро найти ссылку :(
Мартин Томпсон

1

Стандартный термин «конфигурация», а не «программирование» для ПЛИС. FPGA обычно является устройством на основе SRAM. SRAM хранит биты, которые указывают, какие соединения сформированы и разорваны внутри «логической матрицы» устройства. Когда происходит конфигурация, поток битов отправляется в FPGA, которая записывает в эту SRAM. Когда FPGA на основе SRAM переключается, отключенные данные SRAM стираются, и когда FPGA включается, ее необходимо снова настроить.

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

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