第二章,CORDIC算法的基本原理。主要只针对CORDIC算法的圆周系统进行研究,它的两种工作模式:旋转工作模式和向量工作模式。在这里我们对两种模式都做了介绍,但基于我们研究的目的和两者的特点,我们在进行研究时,只采用旋转模式。首先详细介绍了在旋转工作模式下如何计算输入角度的正弦值和余弦值,其中还对CORDIC算法只能接受范围为[-99。88°,99。88°]的角度进行预处理,使CORDIC算法能处理[0°,360°]的角度[16]。论文网
第三章 CORDIC算法的FPGA设计。本章是本文的重点部分之一,篇幅较长,所含的知识点也较多。首先介绍了FPGA设计的主要原理,包括FPGA的简介和基本特点以及FPGA的设计基本流程,然后是CORDIC算法的流水线结构的介绍,还详细讨论了CORDIC算法的Verilog-HDL语言描述,也就是代码的编写,我们还附上了对CORDIC算法的预旋转模块、迭代运算模块、和后置处理单元模块部分的Verilog代码截图。
第四章CORDIC算法的FPGA仿真。本章同样也是重点之一,首先对仿真要使用的QuartusII软件进行了相关介绍。简单介绍了QuartusII仿真软件在业内的地位以及QuartusII仿真软件的特点,然后讨论了CORDIC算法在QuartusII上的仿真结果,我们对结果进行相关整理和归纳,判断仿真结果正确与否,最后验证了采用FPGA实现的CORDIC算法的有效性。
第五章,总结与展望。对本文的研究工作做了一些总结,针对我们最后的研究结果,提出了一些不足之处和还需要改进的地方;除此之外,还展望了本课题在FPGA实现较复杂函数计算方面的前景。
2 CORDIC算法基本原理及工作模式
在CORDIC算法中,有三种旋转系统:圆周系统、线性系统、双曲系统[17],它们分为两种工作模式:旋转模式和向量模式。本章首先介绍CORDIC算法的基本原理,以及一些推导公式;然后针对圆周系统进行详细的展开介绍,以及在该系统下的两种工作模式:旋转模式和向量模式,但基于题目的要求,本文只对旋转模式做了相关研究,介绍其工作过程,并且讨论了旋转角所覆盖的范围。
2。1 CORDIC算法基本原理
设在直角坐标系中的,一个点的初始位置为A,旋转角θ后得新的坐标位置B,如图2-1所示,根据坐标变换规则,可以得到如下关系式:
图2-1 直角坐标系下的向量旋转
然后通过连续的旋转,我们可以得到这样一个关系式:
公式(2-1)
公式(2-2)
公式(2-1)和公式(2-2)就是坐标旋转公式,而坐标旋转公式在CORDIC算法的实现中,是至关重要的一个过程。但要想使得算法变得更加简便灵巧,我们需要对这个坐标旋转公式进行一些转换,从而来实现CORDIC算法。因为CORDIC算法就是通过多次连续的旋转来完成的,首先,我们可以把公式(2-1-1),(2-1-2)写成矩阵形式,从而得到公式(2-3):
公式(2-3)
在公式(2-1-3)中,我们可以明显看到每次循环都要进行4次浮点数的乘法运算,而在硬件里面,乘法器是非常占用资源的,所以它的运算量还是太大了。我们还需需要将算法做进一步的改善。不妨将坐标旋转公式变个形,先把cos(θ)因子从矩阵运算中提取出来得到一个关于正切的关系公式(2-4):
公式(2-4)
如果我们把公式(2-4)中的 cos(θ)省略掉,可以得到得到如下的公式(2-5):