T27.AI

Блог

Арифметика и DSP на FPGA: 27 уроков, и в каждом виджет, который исполняет спеку t27

2026-10-11 · 4 мин чтения

[каждый виджет исполняет тела функций спеки t27, собранные в wasm; задержки в уроках 1 и 26 — входные данные читателя, а не тайминг устройства] Курс 9 учит той арифметике, на которую FPGA тратит площадь, от цепи переноса до фильтра: сумматоры, умножители Бута и слайс DSP48E1, фиксированная точка, CORDIC, дискретизация, фильтры FIR и CIC, БПФ и итоговый фильтр, посчитанный бит в бит. Пять новых спек в gHashTag/t27 несут логику 26 виджетов, с 43 тестами и 33 отрицательными контролями; 27-й исполняет коррелятор существующей спеки модема.

Титульная карточка статьи, иллюстрации пока нет: Арифметика и DSP на FPGA: 27 уроков, и в каждом виджет, который исполняет спеку t27
Открыть титульную карточку в исходном размере
#t27#FPGA#DSP

Вышел курс 9 на t27.ai: арифметика и DSP на FPGA, от цепи переноса до фильтра. В нём 27 уроков в 9 модулях, и каждый урок открывает виджет, с которым можно играть: нажимать на биты суммы, тянуть вектор, двигать тон между бинами ДПФ, урезать биты коэффициентов фильтра. Ни один из 27 виджетов ничего не считает сам. Каждое значение на экране приходит из спеки t27, тела функций которой собраны в WebAssembly, — те же тела, что прогоняют тесты самой спеки.

Девять модулей, девять лабораторий

МодульВиджетыСпека
Сложениеcarry-chain, prefix-adder, csa-treespecs/fpga/dsp/adders.t27
Умножениеshift-add, booth-radix4, dsp-fitspecs/fpga/dsp/multipliers.t27
Фиксированная точкаq-format, round-sat, sqnrfixed_point.t27, signals.t27
Функции в железеcordic, cordic-vector, sine-tablespecs/fpga/dsp/cordic.t27
Сигналы и дискретизацияalias-fold, nco, dft-binspecs/fpga/dsp/signals.t27
Фильтры FIRfir-response, fir-design, fir-costspecs/fpga/dsp/signals.t27
Многоскоростная обработкаdecimator, cic-growth, polyphasespecs/fpga/dsp/signals.t27
БПФfft-butterfly, bit-reverse, fft-scalingspecs/fpga/dsp/signals.t27
На стендеbarker-corr, fir-fit, fir-on-boardbpsk.t27, signals.t27

Три виджета каждого модуля предлагаются под каждым его уроком, так что урок открывается на своём виде, а вся лаборатория — в одном нажатии. Цвета и элементы управления общие; арифметику виджеты не делят ни с чем, кроме спеки.

Что считают спеки

Для курса в gHashTag/t27 написано пять спек (t27#8990): adders, multipliers, fixed_point, cordic и signals, с 43 тестами, и каждый вектор сначала пересчитан в Python. Немного из того, что в них есть: 127 + 1 гонит перенос через 7 бит; 16-битной сети Kogge-Stone нужно 4 уровня и 49 ячеек, Brent-Kung — 7 уровней и 26; перекодирование Бута по основанию 4 превращает множитель 6 в цифры -2, +2, 0, 0, и спека сверяет его с a x b для всех 65536 пар 8-битных чисел; у 0,7 нет точного слова Q1.15, ближайшее — 22938; CORDIC после 16 шагов даёт cos 30 градусов как 0,866018; 4-звенный CIC с децимацией в 8 раз вырастает на 12 бит. Урок 25 исполняет коррелятор существующей спеки модема bpsk.t27, а не пишет второй.

0-20-40-60-80-10000,10,20,30,40,5- - с плавающей точкой: -62,6 dB— 16-битные коэффициенты: -62,5 dB— 8-битные коэффициенты: -32,8 dBполоса задерживания от 0,2частота, циклов на отсчёт
Характеристика 31-отводного ФНЧ с окном Хэмминга и срезом 0,1, посчитанная собранной signals.t27, которую исполняет виджет fir-design: полоса задерживания от 0,2 держится на -62,6 дБ с коэффициентами с плавающей точкой и -62,5 дБ с 16-битными и поднимается обратно до -32,8 дБ с 8-битными.

Почему спеки проверены против себя

Спека, тесты которой проходят при любом теле, ничего не доказывает, поэтому каждую ломали нарочно: 33 отрицательных контроля, от переноса, посчитанного как OR, до показателя поворачивающего множителя без шага, и каждый окрасил тест в красный. Два из них при прогоне сначала не сработали — направление CORDIC при нулевом угле и округление против усечения в итоговом фильтре; оба получили граничный вектор. Синус и децибел написаны один раз, в signals.t27, потому что они нужны каждой теме от шума квантования до БПФ; t27c dupes --bodies не находит копий.

Чего это не показывает

Попробовать

Чего это не решает

Пруфы

Поработаем вместе

Нужно довести FPGA/RTL-задачу до замеров на железе?

Работаю по контракту и part-time с hardware-AI, FPGA/RTL и ML-системами — от спецификации и открытого тулчейна до воспроизводимых измерений.