面向几乎每条无线与卫星链路前端的卷积码的软判决维特比译码器:Wi-Fi、DVB、3GPP/LTE、WiMAX 以及 CCSDS 深空通信。由 Python 算法生成,再交给 AI 做 FPGA 资源优化:用折叠把逻辑缩小以塞进小芯片, 再靠对的微架构守住时钟。最终得到一整条资源对时钟的工作点,从满速到逻辑只占四分之一, 每一个都逐比特验证,零 DSP。
旗舰配置是约束长度 7、1/2 码率的软判决译码器(即 802.11a / CCSDS / IEEE 标准码)。它在 Zynq UltraScale+ RFSoC 器件上完成布局布线;以下数据全部来自 Vivado 时序总结与布线后资源利用率报告。
同一个生成的核分别在高性能 UltraScale+ 器件 和低成本 Zynq-7010(即 ADALM-Pluto SDR 所用器件)上实现。两者我们都公布,包括低成本 器件实际达到的主频:
| 结果 | 数值 | 来源 |
|---|---|---|
| K=7 收敛主频,Zynq UltraScale+(xczu28dr-2) | 527 MHz | Vivado 布局布线诚实上限(布局扫描中位数) 实测 |
| K=7 收敛主频,低成本 Zynq-7010(-1) | 162 MHz | Vivado 布局布线诚实上限,超过 160 MHz 实测 |
| K=7 资源占用,Zynq-7010 | 1,918 LUT / 740 FF / 2 BRAM / 0 DSP | 布线后资源利用率 实测 |
| 半硬件布局(fold 2),Zynq-7010 | 1,367 LUT @ 160 MHz | 在满速主频下较速度布局省 29% 逻辑 实测 |
| K=9 256 状态译码器,UltraScale+ | 405 MHz / 11,326 LUT / 8 BRAM | Vivado 布局布线诚实上限,更强编码增益 实测 |
开放 vs 加密:常见商用维特比核以加密 RTL 交付,而我们的译码器以 可读、可综合的源码交付,并与参考实现(ka9q/libfec,即 gr-ieee802-11 背后的译码器) 逐比特对齐验证,每一个门你都能审计、移植、信任。
单个折叠参数把加比选(ACS)引擎在 F 个时钟上做时分复用, 为无需满线速的信道压缩蝶形逻辑。256 状态的 K=9 核,在 UltraScale+ 上:
| K=9 配置 | LUT | 主频 | 吞吐 |
|---|---|---|---|
| fold 1,满速(每时钟一比特) | 10,885 | 405 MHz | 405 Mbps 实测 |
| fold 2,旋转读(主频优先) | 9,113 | 351 MHz | 175 Mbps 实测 |
| fold 4 | 5,116 | 323 MHz | 81 Mbps 实测 |
| fold 8,最小面积 | 2,627 | 322 MHz | 40 Mbps 实测 |
两种折叠引擎,按折叠数择优:fold 2 用旋转读引擎(度量读取无选择 MUX), 在半数蝶形硬件下保持接近满速的主频:351 MHz;fold 4/8 用面积最优引擎以提升密度, fold 8 时 256 状态核缩小 76%(10,885 → 2,627 LUT),可在单片器件上容纳多个低速率信道。K=7 (64 状态)核同理折叠:Zynq-7010 上 2,301 → 737 LUT(fold 1 → 8),UltraScale+ 上 527 → 347 MHz。 每个折叠点都与参考译码器逐比特验证。主频为布局指令扫描的中位数;LUT 与主频均为布局布线后数值。
折叠不再牺牲主频。在低成本 Zynq-7010 上,半硬件布局 (fold 2)现已收敛到 160 MHz,与未折叠的 1/2 码译码器同样的满速主频,因此折叠后的信道在 仅占用一半加-比-选逻辑(1,367 LUT / 1,073 FF)的同时,保持每时钟满吞吐。一种流式读取方式 (在旋转的度量存储上以固定读窗访问)消除了过去把折叠主频压低约 13 MHz 的逐拍选择逻辑。与参考 译码器逐比特一致,并已在完整 Wi-Fi 接收机中跨所有调制与编码速率验证,连续多包之间无需复位。 实测 阅读案例。
译码器覆盖卷积码前向纠错的全码率范围。更低的码率以更多 冗余换取更大的编码增益(更大的自由距离);同一架构以近乎恒定的主频服务所有码率。更高码率 (2/3、3/4)通过对 1/2 基码打孔实现,因而原样复用 1/2 核。
| 码率 | 自由距离 | 主频,Zynq-7010 | 主频,UltraScale+ |
|---|---|---|---|
| 1/2(基码) | 10 | 160 MHz 实测 | 527 MHz 实测 |
| 1/3 | 15 | 167 MHz 实测 | 449 MHz 实测 |
| 1/4 | 20 | 162 MHz 实测 | 449 MHz 实测 |
| 1/5 | 24 | 163 MHz 实测 | 433 MHz 实测 |
| 1/6 | 30 | 164 MHz 实测 | 454 MHz 实测 |
| 1/7 | 33 | 163 MHz 实测 | 442 MHz 实测 |
自由距离越大,纠错越强:在相同信号电平下,1/3 码大致将 1/2 码的残余误码减半, 更低码率进一步降低。每个码率都与参考译码器逐比特验证,零 DSP、两块 RAM。一级分支度量流水线让 深码率(1/4 及以下)在低成本器件上保持满主频。Zynq-7010 深码率主频为可部署的流水线配置; UltraScale+ 数值为单次布局布线(1/2 的 527 MHz 为布局扫描天花板)。
约束长度 7、64 状态的软判决译码器。更高码率(2/3、3/4)由解打孔前端支持, 因此核本身与码率无关。每时钟译出一比特,连续流式处理。
约束长度 9、256 状态的码,面向需要再多约 1 dB 编码增益的链路。由同一架构生成: 状态数只是一个参数,端到端逐比特验证。
幸存路径存储提供三种形态:低时延的寄存器交换布局、等时延的窗口布局(2 块 RAM)、 以及半块 RAM 布局,覆盖最小时延、最小面积与折中三档。
一次冷启动之后,译码器即可连续处理数据包流,帧与帧之间无需复位。它依靠每帧的 归零尾比特自行重新锚定状态。包与包之间的空闲间隔同样可容忍,暂停后无损恢复。 集成更简单:无需逐帧的初始化握手。
更长的约束长度赋予 K=9 码更大的自由距离,因此其误码率 瀑布更陡:信号越好,K=9 译码器相对 K=7 的优势越大。在等量数据上实测,1/2 码率 BPSK、AWGN 信道、4 比特软判决:
| Eb/N0 | K=7 误比特率 | K=9 误比特率 | K=9 优势 |
|---|---|---|---|
| 2.0 dB | 1.1×10-2 | 6.2×10-3 | 误码少 1.8× 实测 |
| 2.5 dB | 3.1×10-3 | 1.2×10-3 | 误码少 2.7× 实测 |
两种码都已大幅优于未编码传输:典型的 1/2 码率瀑布曲线。 K=9 在 2 dB 处再将 K=7 的残余误码大致减半,信号越好优势越明显:这正是其约束长度本应带来的 额外编码增益,并已逐比特验证。需要不同的约束长度、生成多项式、软比特宽度或回溯深度? 查看 IP 定制。
每一个译出的比特,在进入硬件之前都先与参考模型和周期精确模型逐比特核对。这里的 主频与资源数据是在所列器件上的 Vivado 布线后结果,不是估算。完整的 RTL 微架构与实测权衡空间, 见技术报告(英文)。