雷达 · 通信 · 电子战 / 基础精学 110
DDS 由相位生成正余弦,而接收机还经常需要从同相正交样本反求幅相。CORDIC 为这两类转换提供统一硬件结构。
CORDIC 向量模式用一系列角度逐次减半的微旋转把输入向量转到横轴,只需移位 加减和小型角度表即可同时得到幅度与相位。
xi,yi:第 i 次迭代向量(定点)
zi:累计相位(rad)
di:旋转方向(正负一)
KI:迭代尺度因子(无量纲)
I:迭代级数(次)
向量模式取
并更新
相位更新
迭代后 yI 接近零,zI 接近输入角度。
横轴结果被固定因子
放大,幅度需乘其倒数或在后级吸收该增益。
每次微旋转选择一个方向让纵坐标绝对值减小。旋转角的正切是二的负整数次幂,所以乘法变成算术移位。
MATLAB 对多个象限内的向量执行十二次向量模式迭代,比较幅度与相位真值、迭代误差和尺度因子收敛。
| 量 | 数值 |
|---|---|
| 向量数 | 500 |
| 迭代次数 | 12 |
| CORDIC 增益 | 1.64676019268 |
| rms magnitude error | 6.17871891294e-08 |
| maximum magnitude error | 2.23845417091e-07 |
| rms angle error rad | 0.000277171405155 |
| maximum angle error rad | 0.000484835293161 |
| final residual y rms | 0.000540935216713 |

图 1 CORDIC 迭代轨迹 幅度相位误差与尺度因子
数值结果由配套 MATLAB 脚本在固定参数和固定随机种子下实际执行。脚本包含针对闭式关系 边界条件或估计误差的断言,并把 MATLAB 版本与关键数值写入独立结果文件。
RTL 实现单级参数化 CORDIC 微旋转,流水级联后每拍可接收一个向量;象限预处理保证全圆范围。
配套 RTL 只实现本课中可明确量化的定点核函数或数据通路。浮点矩阵分解 概率统计和图形生成保留在 MATLAB 参考程序中。
CORDIC 用于幅相估计、数字下变频旋转和极坐标转换。级数决定精度与延迟,定点位宽决定量化噪声。
未做象限预处理时收敛范围有限。
每级截位会积累偏差。
尺度因子必须统一处理。
极小幅度时相位对噪声敏感。
CORDIC 向量模式用移位加法逐步消除纵坐标,并输出累积角度。迭代级数与定点位宽共同决定幅相误差。
内容依据:每日精学第 110 课《CORDIC 向量模式幅相计算》。图表沿用原课固定参数数值结果,属于数值验证,不代表设备实测。