Блок 5 — HDL/FPGA workflow¶
Блок 5 — HDL/FPGA workflow¶
Этот блок переводит fixed-point DSP из блока 4 в аппаратную архитектуру: потоковые интерфейсы, тестбенчи, RTL-структуру, оценку ресурсов и интеграцию в Vivado.
Главная инженерная цепочка¶
flowchart LR
FIXED[Fixed-point model] --> SPEC[HDL block specification]
SPEC --> RTL[RTL / HDL implementation]
RTL --> TB[Testbench and vectors]
TB --> SIM[Functional simulation]
SIM --> SYNTH[Synthesis / resource estimate]
SYNTH --> BD[Vivado block design]
BD --> PS[PS control / registers]
PS --> HW[Hardware debug]
Что является входом в блок 5¶
| Артефакт из блока 4 | Как используется в блоке 5 |
|---|---|
| Q-форматы входов/выходов | определяют ширину портов RTL |
| Коэффициенты FIR/NCO | попадают в ROM, параметры или регистры |
| Test vectors float/fixed | становятся входом для Verilog testbench |
| Допустимая ошибка | используется как критерий pass/fail |
| Latency estimate | проверяется в симуляции и документации |
| Saturation/rounding strategy | реализуется явно в RTL |
HDL-friendly правила¶
| Правило | Почему важно |
|---|---|
| Фиксированные размеры массивов | синтезатору нужна статическая структура |
| Нет динамической памяти | FPGA не исполняет malloc/new как CPU |
| Нет бесконечных циклов без счётчиков | цикл должен разворачиваться или иметь понятное управление |
| Явные задержки pipeline | latency должна быть измерима |
| Разделение data path и control path | упрощает тестирование и интеграцию |
| valid/ready или valid-only протокол | нужен для потоковой обработки |
| Синхронный reset | проще для FPGA timing closure |
Базовый streaming-интерфейс¶
Для первых лабораторий достаточно valid-only потока:
clk
rst
in_valid
in_i[15:0]
in_q[15:0]
out_valid
out_i[15:0]
out_q[15:0]
Позже интерфейс расширяется до AXI-Stream:
tvalid
tready
tdata
tlast
Минимальная структура RTL-блока¶
flowchart LR
IN[Input registers] --> DSP[DSP datapath]
DSP --> ROUND[Round / scale]
ROUND --> SAT[Saturation]
SAT --> OUT[Output registers]
CTRL[Valid pipeline] --> OUT
Тестбенч как основной критерий качества¶
Тестбенч должен проверять не только наличие сигнала, но и совпадение с reference vector.
Минимальные проверки:
- reset behaviour;
- latency;
- output valid alignment;
- sample-by-sample comparison;
- saturation cases;
- impulse response for FIR;
- frequency shift for mixer;
- fixed-point error tolerance.
Таблица оценки ресурсов¶
| Блок | LUT | FF | DSP | BRAM | Latency | Fmax | Комментарий |
|---|---|---|---|---|---|---|---|
| FIR 129 taps parallel | many multipliers | ||||||
| FIR time-multiplexed | lower resources | ||||||
| NCO + mixer | LUT/CORDIC trade-off | ||||||
| Decimator | FIR + rate change |
Vivado integration checklist¶
- [ ] RTL module has clean clock/reset.
- [ ] Ports are documented.
- [ ] Testbench passes.
- [ ] Latency is measured.
- [ ] Resource estimate is recorded.
- [ ] Timing target is stated.
- [ ] IP wrapper or block design connection is described.
- [ ] Register map is documented if PS control is used.
- [ ] Debug signals are selected for ILA if needed.
Связь с Zynq SoC¶
flowchart TB
PS[Processing System / ARM] --> AXIL[AXI-Lite registers]
AXIL --> CTRL[Control registers]
DMA[AXI DMA or stream source] --> DSP[FPGA DSP block]
CTRL --> DSP
DSP --> OUT[AXI-Stream output / RF path]
Что должно получиться после блока¶
После блока студент должен уметь:
- превратить fixed-point модель в RTL specification;
- описать потоковый интерфейс DSP-блока;
- написать testbench с reference vectors;
- оценить latency и ресурсы;
- объяснить, как блок попадёт в Vivado block design;
- подготовить минимальный отчёт по HDL/FPGA маршруту.