K7DJ

硬核探讨:FPGA 预修正能救活分立 R2R 的线性度吗?兼谈 NOS/OS 模式下的方波之争

2 0 数字音频极客

最近和几个做解码器的哥们儿深聊了关于分立电阻 R2R 架构的修正问题。大家知道,R2R 最大的痛点就在于电阻精度。即便你用上万分之一精度的电阻,在 24bit 面前依然是不够看的。这时候,FPGA 算法介入做预修正(Correction)就成了现在的“显学”。

今天咱们不聊玄学,只聊逻辑和实测反馈。

1. FPGA 预修正算法的“天花板”在哪里?

FPGA 修正 R2R 线性度的本质,通常是基于每组电阻的实际测量值建立一个偏置查找表(LUT)。在信号输出前,FPGA 会根据当前的码字,计算出由于电阻不匹配导致的电平偏差,并在数字域进行补偿。

提升上限:

  • DC 静态线性度的质变: 这种算法对 INL(积分非线性)和 DNL(差分非线性)的改善非常明显。尤其是在 MSB(最高有效位)切换点的跳变,通过算法平滑后,THD+N 指标能从 0.01% 级别轻松拉升到 0.001% 甚至更好。
  • 物理瓶颈: 算法救不了物理损伤。温漂是最大的敌人。如果你在 25℃ 下测得的修正数据,到了机器运行半小时后电阻升温,其阻值偏移量会非线性变化。目前的算法很难实时跟踪每一个电阻的实时阻值。
  • 毛刺(Glitch)抑制: 修正算法能改电平,但改不了 R2R 切换瞬间的电流毛刺。这更多依赖于 FPGA 的 Latched 锁存逻辑和外围模拟电路的消噪。

2. NOS vs OS:方波表现下的“尊严之战”

在分立 R2R 系统中,NOS(非超采样)和 OS(超采样)的选择不仅是听感问题,更是数学问题。

NOS(Non-OverSampling)模式

  • 方波表现: 在示波器下,你会看到完美的直角方波,没有预铃振(Pre-ringing)和后铃振(Post-ringing)。
  • 代价: 阶梯感明显,高频镜像干扰(Aliasing)严重。如果你不加很强的模拟滤波器(但这又会破坏相位),高频滚降会非常快。
  • 算法接入: 在 NOS 模式下,FPGA 修正主要负责“修准电平”。因为它保留了最原始的时域特性,所以很多烧友觉得 NOS 更有“模拟味”,其实是保留了方波的瞬态完整性。

OS(OverSampling)模式

  • 方波表现: 这里就是 Gibbs 现象的重灾区。由于经过了数字插值和陡峭的低通滤波,方波的边缘会出现明显的振铃。
  • 优势: 把噪声推向了高频,降低了带内底噪,THD 指标极其漂亮。FPGA 在这里不仅做线性度修正,还要承担复杂的多阶 FIR 滤波。
  • R2R 的尴尬: 分立 R2R 切换频率太高会导致毛刺累加。如果 OS 倍率过高(比如 16x 甚至更高),电阻切换时的电荷注入效应会抵消算法带来的失真优化。

3. 实测结论与避坑建议

如果你正在折腾 R2R 的 FPGA 编写,以下几点建议参考:

  1. 别迷信全量修正: 重点修正前 6-8 位 MSB 即可。后面的 LSB 精度受限于底噪,算法修正的边际效应极低。
  2. 关注时钟对齐: 所有的修正算法都建立在“同步切换”的基础上。如果 FPGA 内部时钟抖动(Jitter)控制不好,修正后的信号在过零点会有严重的失真加剧。
  3. 方波选 NOS,听感看 OS? 并不尽然。个人建议在 FPGA 逻辑里预留两种模式切换。对于分立 R2R 而言,4x 或 8x 的轻度 OS 往往是平衡线性度提升与方波失真的黄金点。

说白了,FPGA 修正只是在“螺蛳壳里做道场”。分立 R2R 玩的不是极致的参数,而是在这种残缺的精度中,利用 FPGA 尽力去还原那一份时域上的连贯性。

各位是怎么看 R2R 修正后的“数码味”问题的?评论区可以聊聊。

评论