前面提到CORDIC算法可以用于计算向量v的幅度,即
当计算 时,CORDIC算法的精度是重要的考虑因素。因此,需要选择合适的参数用于提供一个期望的精度,包括迭代的次数n,以及数据路径上比特位的个数b。这些因素影响硬件的成本和性能。很明显,精度越高,则实现成本也就越高。
CORDIC向量幅度计算的一个重要应用是QR算法,它在自适应算法中用得越来越多。QR算法的硬件实现是一个三角形阵列,要求输入的向量进行吉文斯旋转,即
该旋转通过QR阵列内的一个子单元(内部单元/吉文斯旋转器)执行,如图5.14所示。
图5.14中:
(1)圆形●表示吉文斯生成器,计算cosθ和sinθ的值,并将其通过行向右传递,这样使得后面的吉文斯旋转器将输入向量旋转相同的角度θ。
图5.14 QR阵列
(2)方框■表示吉文斯旋转器。通过与cosθ和sinθ相乘,使得输入向量旋转角度θ。
(3)x[n]、d[n]和e[n]分别对应输入信号、干扰信号和误差信号。
从图5.14中可知,首先根据cosθ和sinθ通过边界单元(吉文斯生成器)计算旋转的角度。边界单元使用CORDIC处理器产生cosθ和sinθ,即
通过上面的介绍可知,通过圆坐标系内的向量模式可以计算得到一个向量的幅度,如图5.15所示。
图5.15 圆坐标系的向量模式
当计算向量幅度时,y输出期望达到0,且对它不再要求。此外,也不再需要z数据路径。输出中的K n 为标定因子,通过乘以1/K n 可以去掉该项。
K n 的值取决于迭代的次数,可以预先知道,根据下式计算:
式(5.22)给出了CORDIC的通用公式,对于计算向量幅度而言,不需要角度路径z计算公式(因为可以从x和y中得到d i ),只需要下面的式子:
对于计算一个向量幅度而言,用于实现单次迭代的硬件结构如图5.16所示。
图5.16 实现单次迭代的硬件结构
在该例子中,i=3,因此存在下面的关系,即
(1)如果(x与y异或)>0,则X=x-2 -3 y,Y=y+2 -3 x
(2)如果(x与y异或)<0,则X=x+2 -3 y,Y=y-2 -3 x
从图5.16中可知,在一个单元内,影响硬件成本的唯一因素是数据信号的宽度,并且在非循环结构中,已经知道固定移位的移位寄存器不消耗资源。因此,加法器是读者所感兴趣的。
在数据通路中,比特位的个数b对实现一个CORDIC单元的成本的影响,以及其消耗的LUT和切片(Slice)的个数与b的关系如表5.7所示。
表5.7 数据宽度与消耗资源的关系