在数字信号处理领域,有限脉冲响应(FIR)滤波器因其稳定的线性相位特性,成为通信系统、音频处理和图像处理等应用的核心组件。传统基于二进制补码(Two's Complement Arithmetic, TCA)的实现方式随着处理精度要求的提升,面临着速度与芯片面积的双重瓶颈。余数系统(Residue Number System, RNS)作为一种非加权数值表示方法,通过并行模运算通道为这一困境提供了突破性的解决方案。
RNS的本质是将一个大整数分解为多个小整数的余数集合。例如,选择互质的模数集合{3,5,7},则数字17可以表示为(2,2,3),因为17 mod 3=2,17 mod 5=2,17 mod 7=3。这种表示方法的最大优势在于:加法和乘法运算可以在各个模数通道内完全独立并行执行,无需考虑跨通道的进位传播,这为提升运算速度创造了先天优势。
然而,传统RNS设计存在两个主要痛点:一是模数还原阶段的中国剩余定理(CRT)实现复杂,会抵消部分并行计算带来的速度优势;二是常规RNS采用小质数作为模数,导致硬件实现时各通道位宽不统一,增加了电路设计的复杂度。本文提出的混合RNS-二进制架构,通过精心选择模数形式和优化加法树结构,成功解决了这些技术难题。
传统RNS设计通常选择一组最小的质数作为模数,如{3,5,7,11}等。这种选择虽然能最大化动态范围利用率,但会导致各模数通道的位宽差异较大(如模3需要2位,模11需要4位),不利于硬件实现的规整性。更严重的是,质数模数的模运算电路复杂度较高,特别是当需要执行模约简(modular reduction)时,会显著增加关键路径延迟。
本设计创新性地采用形式为2^n±1的特殊模数,如{3,7,15,31,63}等(分别对应2^2-1, 2^3-1, 2^4-1, 2^5-1, 2^6-1)。这类模数具有三个关键优势:
硬件友好性:模2^n运算本质上就是截断高位,仅保留低n位,无需任何额外电路;模2^n-1和模2^n+1也可以通过特定的位循环和补码技术高效实现,远比通用质数模数的运算简单。
规整的位宽:所有模数通道都采用相同或相近的位宽,便于模块化设计。例如,选择{15,16,17}这一模数组合时,三个通道分别需要4位、4位和5位表示,硬件实现非常规整。
优化的CRT实现:对于这类特殊形式的模数,存在高效的CRT算法,可以将复杂的模数还原操作转化为一系列移位和加法,显著降低转换开销。
本架构采用"前段RNS并行计算+后端二进制聚合"的混合模式,完整信号处理流程如下:
输入转换:将二进制输入的信号样本x[n]通过模数转换器分解为RNS表示。例如,对于模数集{m1,m2,m3},计算x_i[n] = x[n] mod mi(i=1,2,3)。
并行滤波:在每个模数通道内独立执行FIR滤波运算。第i个通道的输出为:
code复制y_i[n] = Σ (a_i[k] * x_i[n-k]) mod mi
其中a_i[k]是滤波器系数在模mi下的表示。
结果重构:使用改进的CRT算法将各通道结果{y1,y2,y3}合并为最终的二进制输出y[n]。
这种混合架构的巧妙之处在于:将计算密集型的乘累加操作放在RNS域并行执行,充分利用无进位传播的优势;而只在最终输出时进行一次CRT转换,最小化转换开销。
传统阵列乘法器虽然结构规整,但存在较长的关键路径延迟。本设计采用基于进位保留加法器(Carry-Save Adder, CSA)的树形结构来加速模数通道内的乘累加运算。以模15(2^4-1)乘法器为例,其创新性体现在:
位循环约简:对于模2^n-1乘法,最高位的进位可以直接循环加到最低位,即满足x mod (2^n-1) = (x>>n) + (x & (2^n-1))。这一特性允许我们在加法树中实时进行模约简,避免最后阶段的集中计算。
动态压缩策略:每个CSA层级不仅压缩部分积,还同步处理来自前一级的进位保留结果和模约简的反馈位。通过精心设计的压缩算法,确保所有输入位被均匀压缩,避免某些列过早完成计算而其他列仍有大量位待加的情况。
延迟平衡技术:根据信号到达时间的差异,动态调整CSA的连接顺序,使快速信号通过更多逻辑级,慢速信号通过较少逻辑级,最终实现所有路径的延迟均衡。这种技术可以将关键路径延迟降低30%以上。
表1对比了不同模数下传统阵列乘法器与本设计的性能差异:
| 模数类型 | 模数值 | 传统设计延迟(FO4) | 本设计延迟(FO4) | 面积减少 |
|---|---|---|---|---|
| 2^n-1 | 15 | 24 | 16 | 18% |
| 2^n-1 | 63 | 36 | 22 | 25% |
| 2^n+1 | 17 | 26 | 18 | 15% |
| 2^n+1 | 65 | 38 | 24 | 22% |
为特定应用选择最优模数组合是一个多维优化问题,需要平衡动态范围、运算速度和硬件成本。我们开发了一套自动模数选择算法,其核心步骤包括:
需求分析:根据应用场景确定所需的动态范围DR。对于N位系数的FIR滤波器,通常需要DR ≥ 2N+4以保证精确计算。
候选生成:生成所有满足2^k-1, 2^k, 2^k+1形式的模数,并按大小排序。
组合筛选:寻找包含3-6个模数的最小组和,使其乘积M满足M ≥ DR,同时各模数的位宽尽可能接近。
成本评估:对每个候选组合,估算其总硬件成本(门数)和关键路径延迟,选择Pareto最优解。
例如,对于16抽头、12位系数的FIR滤波器,算法推荐的模数组合为{15,16,17,31},其动态范围15×16×17×31=126480,满足12×16+4=196的最小要求,同时在0.7μm CMOS工艺下实现仅需0.76mm²核心面积。
在0.7μm CMOS工艺下的物理实现验证了本架构的优越性。测试选取了典型的16抽头低通FIR滤波器,比较传统二进制补码实现与本RNS方案的性能指标:
| 指标 | TCA实现 | RNS实现(本设计) | 改进幅度 |
|---|---|---|---|
| 关键路径延迟(ns) | 15.43 | 10.98 | -28.8% |
| 核心面积(mm²) | 1.17 | 0.96 | -17.9% |
| 功耗(mW@100MHz) | 84.2 | 72.5 | -13.9% |
| 吞吐量(MSPS) | 64.8 | 91.1 | +40.6% |
特别值得注意的是,随着滤波器阶数的增加,RNS方案的优势更加明显。当抽头数增至32时,RNS实现的速度优势扩大到35%,面积优势达到25%。这主要得益于RNS天然的并行特性——增加抽头数只需并行扩展更多模数通道,而TCA方案则需要延长进位链。
在将本架构应用于实际项目时,我们总结了以下宝贵经验:
通道平衡设计:各模数通道应具有相近的计算延迟。如果某个通道明显慢于其他通道,会成为整个系统的瓶颈。可以通过插入流水线寄存器来平衡各路径延迟。
CRT优化实现:对于{2^n-1, 2^n, 2^n+1}这类特殊模数,CRT可以简化为:
code复制y = (a*(M/m1)*inv(M/m1 mod m1) + ... ) mod M
其中预计算的逆元inv(M/mi mod mi)对于2^n±1模数有规律形式,可用简单组合电路实现。
测试验证策略:由于RNS的并行特性,传统的逐位扫描测试方法效率低下。建议采用:
功耗管理技巧:
一个典型的应用场景是5G通信中的数字中频处理。在100MHz系统时钟下,本设计可以实时处理带宽达40MHz的中频信号,而功耗仅为72.5mW,非常适合基站的大规模天线阵列处理。