预处理主要负责象限转换工作,主要是将输入四象限坐标转换到第一象限的前半象限,即0°~45°。
转换工作十分简单,只需提取输入x和y的坐标绝对值作为输出,即可将坐标转换到第一象限,同时判断x和y的绝对值大小,当y>x时,将x和y调换即可将坐标转换到第一象限的前半象限。
模块需要记录x和y的象限信息,包括半象限信息,以供象限位置还原。
经过预处理后的绝对值输出可以直接送入Cordic处理核进行Cordic运算,Cordic运算,Cordic运算实际上是n次迭代运算的过程。
将单次迭代单元迭代n次即可完成一次cordic运算。
后续处理模块需实现坐标象限还原,很明显,这里的象限指的是角度象限。我们已经在预处理单元中对输入坐标的象限进行了保存,在此模块的基础上需要对象限位置进行恢复。
首先需要明确的一点是,由于处理核需要n个时钟来完成迭代运算,预处理的象限信息需要首先进行缓存n-1个时钟与结果进行对齐。
在象限还原时,采用预处理的逆运算:
(1)还原x与y交换信息。
(2)还原x轴信息。
(3)还原y轴信息。
由几何意义实现上述运算:
(1)x与y交换,转换公式
(2)x<0,说明角度在第二或第三象限,转换公式
(3)y<0,说明角度在第三或第四象限,转换公式
由归一化系数算出π/2,π,2π的归一化系数,一次进行转换即可。