CORDIC算法芯片的制作方法

文档序号:37127236发布日期:2024-02-22 21:41阅读:34来源:国知局
CORDIC算法芯片的制作方法

本技术涉及芯片,特别是涉及一种cordic算法芯片。


背景技术:

1、在如今的数字通信领域中,cordic算法(coordinate rotation digitalcomputer,坐标旋转数字算法)有着广泛应用。dds(direct digital synthesizer,直接数字频率合成器)、fft(fast fourier transform,快速傅里叶变换)、复乘计算等都可将cordic算法电路作为基本组件。

2、cordic算法的基本原理是将输入向量通过多次迭代,逐次逼近所需旋转角度,得到最终的向量。免缩放cordic算法对cordic算法的公式进行了进一步简化,省略了cordic算法最后与缩放因子做乘法的步骤,使得电路更加简化。

3、但是,由于免缩放cordic算法在较大的角度值上精确度较差,故而在目标角度值较大时需要使用较小的角度逐渐旋转逼近目标角度值。在最差的情况下需要旋转32次,也即进行32次迭代才能逼近目标角度值,导致电路消耗加法器资源较多。


技术实现思路

1、基于此,有必要针对上述技术问题,提供一种cordic算法芯片。

2、第一方面,本技术提供了一种cordic算法芯片,包括第一迭代模块及第二迭代模块,其中:

3、所述第一迭代模块,包括至少一个迭代单元,所述第一迭代模块用于接收目标向量及待旋转角度向量,根据所述待旋转角度向量在各目标位数上的取值,确定各所述目标位数对应的弧度值,并根据所述弧度值以及各所述迭代单元对应的目标弧度值,从各所述迭代单元中确定目标迭代单元,通过各所述目标迭代单元对所述目标向量进行旋转处理,得到中间向量,其中,所述目标位数的个数与所述待旋转角度向量的长度正相关;

4、所述第二迭代模块,用于对所述中间向量进行旋转处理,得到所述目标向量的输出向量。

5、在其中一个实施例中,所述迭代单元包括第一加法单元及目标数量个移位单元,所述第一加法单元分别与各所述移位单元连接,

6、所述移位单元,用于对输入所述移位单元的数据进行移位处理,并输出进行所述移位处理后的数据;

7、第一加法单元,用于对各所述移位单元输出的数据进行加法处理和/或减法处理,并输出进行所述加法处理和/或所述减法处理后的数据;

8、其中,所述目标数量是根据所述迭代单元对应的所述目标弧度值及输入所述移位单元的数据的总位数确定的。

9、在其中一个实施例中,一个所述移位单元对应三角函数的泰勒展开形式中的一个展开项,且针对任一所述移位单元,所述移位单元的移位值是根据所述移位单元所在的迭代单元对应的所述目标弧度值、及所述移位单元对应的所述展开项确定的。

10、在其中一个实施例中,所述迭代单元还包括补偿单元,一个所述补偿单元对应一个所述移位单元,所述第一加法单元分别与各所述移位单元及各所述补偿单元连接,

11、所述补偿单元,用于对输入所述补偿单元的数据进行移位处理,并输出进行所述移位处理后的数据;

12、第一加法单元,用于对各所述移位单元输出的数据及各所述补偿单元输出的数据进行加法处理和/或减法处理,并输出进行所述加法处理和/或所述减法处理后的数据;

13、其中,所述补偿单元的移位值是根据所述补偿单元对应的目标移位单元的移位值,与所述目标移位单元对应的所述展开项确定的。

14、在其中一个实施例中,所述待旋转角度向量的各位数分别具有对应的位数弧度值,所述第一迭代模块包括所述目标位数的个数个迭代层,一个所述迭代层对应一个所述目标位数,所述迭代层包括多个迭代单元,所述迭代单元对应的所述目标弧度值,是所述迭代单元所在的所述迭代层对应的所述目标位数的位数弧度值;

15、所述第一迭代模块,还用于针对任一所述目标位数,在所述目标位数的取值为1的情况下,将所述目标位数对应的所述迭代层作为目标迭代层,并通过各所述目标迭代层中的各所述迭代单元,对所述目标向量进行旋转处理,得到中间向量。

16、在其中一个实施例中,各所述迭代层串行排列;

17、所述目标迭代层,用于接收在所述芯片上排列在所述目标迭代层之前的模块发送的第一输入向量,通过所述目标迭代层中的各所述迭代单元,对所述第一输入向量进行旋转处理,得到第一输出向量,并将所述第一输出向量发送至在所述芯片上排列在所述目标迭代层之后的模块。

18、在其中一个实施例中,所述第一输入向量及所述第一输出向量由第一分向量和第二分向量组成,所述迭代层由第一分向量迭代单元及第二分向量迭代单元组成,分向量迭代单元由多个所述迭代单元组成;

19、所述第一分向量迭代单元,用于通过所述第一分向量迭代单元的各所述迭代单元,对所述第一输入向量进行旋转处理,得到所述第一输出向量的第一分向量;

20、所述第二分向量迭代单元,用于通过所述第二分向量迭代单元的各所述迭代单元,对所述第一输入向量进行旋转处理,得到所述第一输出向量的第二分向量。

21、在其中一个实施例中,所述迭代单元为正弦迭代单元或余弦迭代单元,所述分向量迭代单元还包括第二加法单元;

22、所述第一分向量迭代单元,还用于基于余弦迭代单元对所述第一输入向量的第一分向量进行旋转处理,得到第二输出向量,基于正弦迭代单元对所述第一输入向量的第二分向量进行旋转处理,得到第三输出向量,并通过第二加法单元对所述第二输出向量及所述第三输出向量进行相减处理,得到所述第一输出向量的第一分向量;

23、所述第二分向量迭代单元,还用于基于正弦迭代单元对所述第一输入向量的第一分向量进行旋转处理,得到第四输出向量,基于余弦迭代单元对所述第一输入向量的第二分向量进行旋转处理,得到第五输出向量,并通过第二加法单元对所述第四输出向量及所述第五输出向量进行相加处理,得到所述第一输出向量的第二分向量。

24、在其中一个实施例中,所述芯片还包括预旋转模块,

25、所述预旋转模块,用于将待旋转角度映射至预设角度范围内,得到所述待旋转角度向量。

26、在其中一个实施例中,所述第二迭代模块包括单步迭代模块及双步迭代模块,

27、所述单步迭代模块,包括至少一个单步迭代层,所述单步迭代模块用于根据所述待旋转角度向量在各第一目标位数上的取值,从各所述单步迭代层中确定目标单步迭代层,并通过各所述目标单步迭代层对所述中间向量进行旋转处理,得到第一中间向量;

28、所述双步迭代模块,包括至少一个双步迭代层,所述双步迭代模块用于根据所述待旋转角度向量在各第二目标位数上的取值,从各所述双步迭代层中确定目标双步迭代层,并通过各所述目标双步迭代层对所述第一中间向量进行旋转处理,得到所述目标向量的输出向量;

29、其中,所述第一目标位数的个数与所述待旋转角度向量的长度正相关,所述第二目标位数是所述待旋转角度向量的各位数中,除所述目标位数及所述第一目标位数外的位数。

30、上述cordic算法芯片,使得第一迭代模块包括至少一个迭代单元,每一个迭代单元对应一个可以较大的目标弧度值,进而根据待旋转角度向量各目标位数对应的弧度值和各迭代单元对应的目标弧度值,确定需要使用的目标迭代单元,因此可以直接通过各目标迭代单元较大的目标弧度值对弧度值进行近似,无需使用sf cordic算法中较小的角度进行多次旋转来近似该弧度值。在第一迭代模块对目标向量进行旋转处理后,再将处理得到的中间向量输入至用于处理小角度旋转的第二迭代模块中即可得到目标向量。可以大大简化cordic算法芯片的电路结构。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1