Судячи з вашого іншого питання, ви хлопець 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, щоб вони могли завантажуватися щоразу, коли пристрій увімкнено.