雷达 · 通信 · 电子战 / 基础精学 147
复数乘法可用三次实乘与若干加减实现,但减少乘法器的同时会扩大预加与重组中间量的动态范围。
输入为 与
,先讨论精确实数算术,再讨论整数位宽。
p1,p2,p3:三个实乘结果(乘积单位)
a,b,c,d:复数分量(输入幅度)
u,v:结果实虚部(输出幅度)
W:输入位宽(bit)
由复数代数
直接形式需要ac、bd、ad、bc四次实乘。
定义
展开第三项 p3=ac+ad+bc+bd,所以
该恒等式在不截断的整数算术中同样精确。
若四分量绝对值不超过A,则 |a+b|,|c+d|≤2A,因此
预加需要W+1位,第三乘积的保守位宽为2W+2;过早缩窄会破坏原本精确的代数等价。
令两个复数为
、
三乘法结构使用 p=ac、q=bd、r=(a+b)(c+d),输出为
若四个分量的绝对值均不超过 A,则
虽然最终结果范围与传统四乘法相同,第三个乘积需要更宽的输入预加器与内部乘积。
若只按最终范围分配中间位宽,代数相消发生之前可能已经溢出。减少乘法器也会增加加减法和组合路径,因此资源优势取决于目标器件的乘法块尺寸及流水分割。
第三乘法把两个交叉乘积打包到一个展开式,再减去已知对角乘积。节省资源是否值得取决于加法器、乘法器和时序结构。
使用固定种子的有符号整数四元组和边界点,比较三乘与四乘复数结果,并记录预加与第三乘积峰值。
| 量 | 数值 |
|---|---|
| 向量数 | 4096 |
| max complex error | 0 |
| preadd peak | 65536 |
| third product peak | 4294967296 |
| real output peak | 1700106960 |
| imag output peak | 2147483648 |
| real multiplications | 3 |
图 1 三乘法复数乘法的理论关系与固定参数验证
表中数值和图中曲线由 MATLAB 实际运行得到,随机种子为 20261066;运行版本与完整结果另存为独立文件。
RTL实现完整三乘法复乘,a、b、c、d为16位整数分量,先扩展到64位再预加及相乘,输出完整实部与虚部。 RTL 采用同步有效信号和异步低有效复位;
空拍保持状态且输出无效。除另有说明外,输入为16位有符号整数,结果为64位有符号整数,测试范围内不截断或饱和。输出在采样时钟上升沿更新。自检覆盖连续样本、空拍和复位;
未进行器件布局布线、时序收敛或功耗验证。
独立自检程序已在 Icarus Verilog 13.0 中实际运行并通过。该结果不包含器件综合、静态时序分析或板级测试。
三乘法复乘用于复数混频、旋转因子乘法和复FIR乘加单元。是否比四乘结构更适合目标器件,取决于乘法器端口宽度、预加器资源和流水时序。位宽评估必须包含第三乘积的较大中间范围。
预加器成为额外组合路径,可能影响最高时钟。
不同舍入位置使浮点和定点误差不同。
乘法器资源利用率取决于目标器件,不以算术计数代替综合结果。
复数乘法可用三次实乘与若干加减实现,但减少乘法器的同时会扩大预加与重组中间量的动态范围。
内容依据:每日精学第 147 课《三乘法复数乘法》。图表沿用原课固定参数数值结果,属于数值验证,不代表设备实测。