1. Архитектура ПЛИС и ASIC
Архитектура ПЛИС и ASIC
Когда программист пишет код на Python или C++, он создает набор инструкций. Процессор читает эти инструкции одну за другой и выполняет их. Это последовательный процесс. Но когда мы говорим о разработке аппаратуры с использованием языков Verilog или VHDL, парадигма полностью меняется. Мы не пишем инструкции для процессора. Мы описываем физическую электрическую схему.
Чтобы понять, как строки кода превращаются в реальные логические вентили и триггеры, необходимо разобраться в том, на чем именно эти схемы реализуются. В мире цифровой микроэлектроники существуют два главных подхода к созданию чипов: ASIC и ПЛИС.
ASIC: Монолитный фундамент микроэлектроники
ASIC (Application-Specific Integrated Circuit, или интегральная схема специального назначения) — это микросхема, созданная для выполнения одной конкретной задачи.
Представьте, что вы строите дом из монолитного железобетона. Вы заранее чертите план, возводите опалубку, заливаете бетон. Когда бетон застынет, дом станет невероятно прочным, надежным и будет идеально выполнять свою функцию. Но если вы вдруг решите перенести кухню в другую часть дома или добавить еще одно окно — вам придется сносить стену. Изменить конструкцию после завершения строительства практически невозможно.
Именно так работает ASIC. Инженеры проектируют схему, состоящую из миллионов или миллиардов транзисторов, которые на заводе физически вытравливаются на кремниевой пластине.
Преимущества ASIC:
Главный недостаток ASIC — колоссальная стоимость и сложность разработки. Ошибка в коде, обнаруженная после выпуска чипа, означает, что всю партию придется выбросить, а процесс проектирования и производства (который может занимать месяцы и стоить миллионы долларов) начинать заново.
ПЛИС (FPGA): Аппаратный конструктор
Чтобы решить проблему высокой стоимости ошибок и долгого цикла разработки, была создана ПЛИС — программируемая логическая интегральная схема. В английской терминологии чаще используется аббревиатура FPGA (Field-Programmable Gate Array).
Если ASIC — это монолитный бетонный дом, то ПЛИС — это огромный набор деталей конструктора Lego. У вас есть универсальная платформа с тысячами базовых блоков и миллионами связей между ними. Загружая специальный файл конфигурации, вы указываете, как именно эти блоки должны соединиться друг с другом.
Сегодня вы можете «собрать» из этого конструктора контроллер дисплея, завтра — стереть конфигурацию и превратить этот же чип в процессор для обработки звука, а послезавтра — в модуль управления двигателем дрона.
> ПЛИС — это аппаратная заготовка. После загрузки конфигурационный файл определяет, как будут соединены тысячи логических ячеек внутри кристалла. Мы мысленно можем представить это как создание схемы из стандартных программируемых блоков и проводников. > > Как проектируют на ПЛИС: что нужно знать новичку
Сравнение технологий
| Характеристика | ASIC | ПЛИС (FPGA) | | :--- | :--- | :--- | | Гибкость | Нулевая (нельзя изменить после выпуска) | Максимальная (перепрограммируется за секунды) | | Скорость работы | Очень высокая | Средняя / Высокая | | Энергопотребление | Низкое | Относительно высокое | | Стоимость разработки | Миллионы долларов | Стоимость самой платы (от десятков долларов) | | Время выхода на рынок | Месяцы и годы | Дни и недели |
Для новичка, изучающего Verilog или VHDL, ПЛИС — это идеальная песочница. Вы можете написать код, загрузить его в плату и сразу увидеть, как мигают светодиоды или работают моторы, не тратя миллионы на заводское производство.
Анатомия ПЛИС: Как это работает на физическом уровне
Чтобы понять, как код транслируется в «железо», нужно заглянуть внутрь кристалла ПЛИС. Архитектура большинства современных FPGA состоит из трех главных элементов.
Когда вы пишете код на Verilog, компилятор не создает новые транзисторы. Он вычисляет, какие логические блоки нужно задействовать и как настроить переключатели в сетке связей, чтобы электрический сигнал прошел нужный путь.
Секрет логического блока: LUT (Look-Up Table)
Самый важный вопрос: как универсальный логический блок может превращаться то в вентиль «И» (AND), то в вентиль «ИЛИ» (OR)? Секрет кроется в компоненте под названием LUT (Look-Up Table, или таблица истинности).
LUT — это, по сути, крошечная ячейка памяти (SRAM). Вместо того чтобы физически собирать логический вентиль из транзисторов, ПЛИС использует память для хранения готовых ответов.
Допустим, у нас есть LUT с двумя входами. Количество возможных комбинаций нулей и единиц на входе вычисляется по формуле , где — количество входов. Для двух входов это комбинации (00, 01, 10, 11).
Если вы напишете на Verilog код логического «И» (Y = A & B), программа-синтезатор запишет в память этого LUT следующие значения:
0001Когда на физические входы A и B поступают электрические сигналы, LUT просто смотрит на них как на адрес в памяти и выдает наружу то значение, которое там сохранено.
Если вы измените свой код на логическое «ИЛИ» (Y = A | B), физическая структура чипа не изменится. Изменятся лишь нули и единицы, записанные в ячейки памяти этого LUT. Именно так достигается аппаратная гибкость ПЛИС.
Кроме LUT, в каждом логическом блоке обязательно есть триггер (Flip-Flop). Если LUT выполняет комбинационную логику (принимает решение здесь и сейчас), то триггер нужен для запоминания результата до следующего такта генератора частоты. Без триггеров было бы невозможно создать счетчики, таймеры или процессоры.
От кода к кремнию: Этапы трансляции
Теперь, когда мы понимаем архитектуру, давайте проследим путь вашего будущего кода на Verilog или VHDL до реального железа. Этот процесс называется маршрутом проектирования (Design Flow) и состоит из нескольких шагов:
Понимание того, что ваш код в итоге превращается в физические провода и таблицы памяти, — это главный шаг к успешному освоению Verilog и VHDL. В отличие от программирования ПО, здесь вы должны думать о том, сколько времени потребуется электрическому сигналу, чтобы добежать от одного логического блока до другого.