Предположим, мы построили в Engee модель регулятора или фильтра, подали тестовые сигналы и убедились, что алгоритм работает. Теперь нужно перенести эти вычисления в программируемую логическую интегральную схему — ПЛИС (FPGA). Это необходимо, когда требуется параллельно обрабатывать поток данных и выдавать результаты в заданном темпе. Однако работающая модель ещё не определяет всех деталей будущей аппаратной реализации. Нужно выбрать, как представлять числа, какие операции выполнять одновременно и где хранить результаты предыдущих шагов. Пройдём этот путь на примерах Engee: выберем форматы с фиксированной точкой, получим Verilog-код, проверим его поведение и разберём, что необходимо для реализации в ПЛИС.
Сначала разберёмся, что именно мы переносим в ПЛИС. Программа для процессора задаёт последовательность команд. Описание ПЛИС задаёт цифровую схему: вычислительные узлы, связи между ними и регистры для хранения данных. Независимые узлы такой схемы могут работать одновременно. Чтобы описать их работу, используют языки описания аппаратуры, например Verilog и VHDL. По этому описанию можно сначала проверить поведение устройства в симуляции, а затем построить схему средствами проектирования. В статье будем использовать Verilog и разбирать его конструкции по мере появления в примерах.
Чтобы перейти от вычислений к схеме, нужно явно определить, где хранятся данные и когда они изменяются. Такое описание называют RTL — уровнем регистровых передач (Register Transfer Level). Например,…
Нетл…