Що відбувається, коли FPGA "запрограмована"?


13

З того, що я розумію, процес програмування FPGA складається з двох частин:

  1. Кодуйте опис обладнання в біти, які FPGA може зрозуміти (тобто написати деякі HDL і компілювати його)
  2. Завантажте складений HDL на FPGA.

Моє запитання: "Що FPGA робить зі складеним HDL?". Наразі я вважаю, що FPGA - це «обладнання, яке можна здійснити», де дроти та логічні ворота можна формувати на все, що завгодно. Одне з приємних речей полягає в тому, що формування є постійним: FPGA можна перепрограмувати.

Як FPGA інтерпретують складений HDL? Як досягається перманентна обробка?


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

2
Я думаю, що він означає "формуваність є постійною", тобто, що сама програма не є постійною.
ajs410

Відповіді:


23

Судячи з вашого іншого питання, ви хлопець Xilinx. Тому я настійно пропоную отримати аркуш даних для вашого чіпа Xilinx та перейти до розділу «Функціональний опис». Для чіпа Spartan 3, який я використовую, це 42 сторінки веселого читання. У ньому детально описано, які компоненти знаходяться всередині FPGA - IOB, CLB, фрагменти, LUT, Block RAM, множники, Digital Clock Manager, Clock Network, Interconnect, а також дуже основна інформація про конфігурацію. Вам потрібно зрозуміти цю інформацію, якщо ви хочете знати, як виглядає "складений HDL".

Ознайомившись із архітектурою FPGA, ви зможете зрозуміти цей процес. По-перше, ваш дизайн HDL запускається через механізм синтезу, який перетворює ваш HDL в основному на RTL. Потім Mapper обробляє результати синтезу, "відображаючи" їх на доступні фрагменти архітектури FPGA. Потім маршрутизатор робить місце і маршрут (PAR), який визначає, куди ці деталі йдуть і як їх з'єднати. Нарешті, результати з PAR перетворюються на файл BIT. Зазвичай цей файл BIT потім певним чином трансформується, щоб він міг бути завантажений у мікросхему Flash, так що FPGA може програмуватися автоматично при включенні.

Цей бітовий файл описує всю програму FPGA. Наприклад, CLB в Spartan 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), що дозволяє керувати виходами. Рівно через один тактовий цикл пізніше випускається Global Write Enable (GWE), що дозволяє флопам починати змінювати стан у відповідь на їх введення. Зауважте, що навіть цей остаточний процес конфігурації може бути злегка упорядкований залежно від прапорів, встановлених у файлі BIT.

Редагувати:

Я також повинен додати, що причина програми FPGA не є постійною, тому що логічна тканина складається з летючої пам'яті (наприклад, SRAM). Тож коли FPGA втрачає потужність, програма забувається. Ось чому їм потрібні, наприклад, мікросхеми Flash як енергонезалежне сховище для програми FPGA, щоб вони могли завантажуватися щоразу, коли пристрій увімкнено.


6

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


1
СИНТЕЗ означає три фрази 1. Покоління Netlist 2. Оптимізація рівня воріт 3. Мапа технологій.
Стандартний Сандун

4

Результатом компіляції є бітовий потік (буквально потік бітів), який завантажується після включення живлення. Це переміщується через FPGA, що зберігається в деяких осередках пам'яті (засувки). Ці комірки з'єднані з різними логічними утвореннями, мультиплексорами, таблицями огляду, блоками ОЗУ, матрицями маршрутизації і складають те, що називається "конфігурація". Після завантаження бітового потоку FPGA починає працювати - біти в конфігураційних фіксаторах "повідомляють" кожному маленькому фрагменту FPGA, як діяти.

РЕДАКЦІЯ 24 квітня 2012 року: згадані нами триггери не призначені для таблиць пошуку або конфігурації. Як @ ajs410 сказав, що вони є в оперативній пам'яті, а це ще менше транзисторів. Шльопанці призначені для зберігання даних із LUT, якщо це зберігання включено.


Яка частина схем у типовому FPGA - це фактична логіка та маршрутизація, а скільки - підтримка програмування?
supercat

Технічно "осередки пам'яті" - це шльопанці, а не засувки. Тобто вони спрацьовують край.
Брайан Карлтон

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

1
LUT зазвичай виготовляється з SRAM. Шльопанці прикріплені до виходу SRAM.
ajs410

1
@supercat: Я чув, що 90% FPGA маршрутизується ... решта - це логіка та конфігурація - не можу швидко знайти посилання :(
Martin Thompson,

1

Стандартний термін - це "конфігурація", а не "програмування" для FPGA. Зазвичай FPGA - це пристрій на базі SRAM. SRAM зберігає біти, які вказують, які з'єднання утворюються та розриваються всередині "логічної тканини" пристрою. Коли відбувається конфігурація, потік бітів відправляється в FPGA, який записує в цю SRAM. Коли FPGA на базі SRAM вимкнено, дані SRAM видаляються, а коли FPGA увімкнена, її потрібно буде знову налаштувати.

Тепер знайте це, вони є різними методами "налаштування" та FPGA, і тому існують різні формати файлів, що містять цей "бітовий потік". Зрештою, структура цих файлів та деталі того, наскільки точно налаштовано FPGA, є власником для виготовлення, і ця інформація ніколи не передається. Але загальний принцип залишається однаковим для FPGA.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.