改进的并行CORDIC算法研究及其FPGA实现
- 格式:pdf
- 大小:185.46 KB
- 文档页数:2
基于FPGA实现改进CORDIC算法研究胡煜【摘要】传统的CORDIC算法虽然能提高相位分辨率,但是硬件资源的消耗量很大,为了解决这个问题,对传统的CORDIC算法进行了改进,主要增加了内部相位累加器的位数,同时使用两位的方向控制因子改进下级流水操作的加减,在同等硬件资源的消耗量的情况下实现了更高相位分辨率的正余弦信号的产生。
通过QuartusⅡ和MATLAB验证了系统的可行性。
%Traditional CORDIC algorithm can improve the phase resolution, but consume considerable hardware resources. To solve this problem,the conventional CORDIC algorithm,in the great majority of cases,increases the medians in the internal phase accumulator,at the same time using the two-direction control factor to the lower pipeline addition and subtraction operations, and in the case of the same hardware resources consumption to achieves a higher phase resolution of the sine and cosine signal generation. The feasibility of the system is verified by QuartusⅡand M ATLAB.【期刊名称】《电子器件》【年(卷),期】2014(000)002【总页数】3页(P358-360)【关键词】CORDIC算法;控制因子;MATLAB;FPGA【作者】胡煜【作者单位】桂林电子科技大学信息与通信学院,广西桂林541004【正文语种】中文【中图分类】TN702;TP301.5CORDIC算法也叫坐标旋转数字计算机算法,在基本运算领域应用非常的广泛。
改进型CORDIC算法的研究与实现陈婧【摘要】CORDIC的运算速度问题是研究的热点.为了解决CORDIC运算速度慢的问题,采用跳过零点思想,跳过输入相位值中为0的位,有效的减少了迭代次数.利用ISE仿真技术多次仿真综合.验证出改进型的CORDIC算法,在保证算法的运算精度基础上,明显地改善了CORDIC的运算速度,尤其针对于一些特殊的旋转角度,利用极少的旋转就达到结果.最终利用FPGA实现改进后CORDIC算法.%With the rapid development of VLSI technology. CORDIC algorithm is widely used. A method of jumping over "0" in the input phase values is adopted to reduce the iterations effectively in this paper. The modified CORDIC algorithm was simulated with ISE simulation technology for several times. The results show that the operational speed of the modified CORDIC algorithm is obviously improved on the premise of ensuring the operational accuracy of the algorithm. The CORDIC algorithm was implemented with FPGA.【期刊名称】《现代电子技术》【年(卷),期】2011(034)024【总页数】3页(P165-167)【关键词】CORDIC算法;Zero-skipping;ISE;旋转角度【作者】陈婧【作者单位】福建工程学院,福建福州 350108【正文语种】中文【中图分类】TN911-340 引言CORDIC算法是一种逐渐逼近的数学方法,利用不断偏摆来逼近所需要的旋转角度。
《基于CORDIC算法的正切余切函数的设计及FPGA实现》篇一一、引言随着数字信号处理技术的快速发展,FPGA(现场可编程门阵列)在各种应用中得到了广泛的应用。
正切和余切函数作为数学计算中的基本函数,在信号处理、图像处理、控制系统等领域中具有重要的作用。
本文将介绍基于CORDIC算法的正切余切函数的设计,并详细阐述其在FPGA上的实现。
二、CORDIC算法概述CORDIC(COordinate Rotation DIgital Computer)算法是一种通过一系列简单的角度旋转来计算三角函数、双曲函数等基本数学函数的方法。
其基本思想是利用一组预先计算的常量(通常是正弦或余弦函数的值),通过一系列的旋转和加减运算,实现对任意角度的三角函数值的计算。
CORDIC算法具有计算精度高、速度快、易于硬件实现等优点,因此在数字信号处理领域得到了广泛的应用。
三、正切余切函数的设计基于CORDIC算法,我们可以设计出正切和余切函数的计算方法。
首先,我们需要根据CORDIC算法的基本原理,推导出正切和余切函数的计算公式。
然后,根据FPGA的硬件特性和计算需求,对公式进行优化和简化,以提高计算速度和降低硬件资源消耗。
在正切函数的设计中,我们采用迭代的方式逐步逼近目标值。
具体地,我们可以利用一系列的角度旋转和加减运算,逐步逼近正切函数的值。
在每个迭代步骤中,我们可以利用预先计算的常量(如正弦或余弦函数的值)和当前的迭代值来计算下一个迭代值。
通过多次迭代,我们可以得到较高的计算精度。
对于余切函数的设计,我们可以利用正切函数的值来计算余切函数的值。
由于余切函数和正切函数之间存在一定的关系(即cot(x) = 1/tan(x)),因此我们可以通过对正切函数值的倒数来得到余切函数的值。
四、FPGA实现在FPGA上实现基于CORDIC算法的正切余切函数,需要考虑到FPGA的硬件特性和计算需求。
首先,我们需要根据FPGA 的硬件资源(如查找表、乘法器、加法器等)来设计电路结构,以实现高效的计算。
基于改进的cordic算法的fft复乘及其fpga实现本文首先介绍了基于改进的CORDIC算法的FFT复乘,包括FFT实现原理、CORDIC算法及其改进,随后给出了FPGA实现的硬件设计,最后给出的实验结果表明,基于改进的CORDIC算法的FFT复乘比传统的FFT复乘具有更高的时间效率及API设计的可靠性。
FFT(快速傅立叶变换)是数字信号处理的重要技术之一,通过其可实现频域的高效分析和归一化处理。
由于FFT的实现涉及到复乘,故若传统的乘法循环结构存在计算量大、时钟周期较长等问题,就将很大限制了整个病毒研究的效率。
CORDIC(乘算除等式微动计算)算法是基于矢量图模型的计算算法,可通过移位和加减实现因数变换,且计算量少、操作步骤少等优点,可有效地减少FFT复乘操作所需要的时钟周期。
本文通过对CORDIC算法的改进,克服了传统的CORDIC算法存在的精度偏差、收敛速度等问题,研究出基于改进的CORDIC算法的FFT复乘算法,其能有效地实现快速的数字滤波等复杂数字信号处理应用。
硬件设计方面,本文采用FPGA实现基于改进的CORDIC算法的FFT复乘。
首先,我们设计了硬件结构,有助于加快FFT复乘的效率;其次,采用了宽带非线性校正单元,以抑制图像复杂性;最后,运用了流水线技术,解决了数据处理上的弊端。
通过实验结果表明,本文提出的基于改进的CORDIC算法的FFT复乘的设计要比传统的FFT复乘的设计具有更高的时间效率及FPGA设计的可靠性。
总之,本文发表了基于改进的CORDIC算法的FFT复乘及其FPGA实现,经过实验,能有效地简化设计过程,提高系统复杂度低、节省空间,提高时间效率。
基于改进的CORDIC算法的FFT复乘及其FPGA实现FFT(快速傅里叶变换)在无线通信、语音识别、图像处理和频谱分析等领域有着广泛应用。
在FFT 运算中,核心操作是蝶形运算,而蝶形运算的主要操作是向量旋转,实现向量旋转可用复数乘法运算来实现,但复数乘耗费了FFT 运算中大量的乘法器资源。
CORDIC 算法只需简单的移位与加减运算就能实现向量旋转,具有使用资源少、硬件规模小等优势。
因此在FFT 蝶形运算中用其代替传统FFT 运算中的复数乘法器,可以获得更好的性能。
但传统CORDIC 算法中每次CORDIC 迭代方向需由剩余角度的计算来确定,影响了工作速度。
为此,本文根据定点FFT 复乘中旋转因子的旋转方向可预先确定的特点,对CORDIC 算法做了一些改进,在节省资源的同时保证了工作速度。
1 CORDIC 算法原理假设直角坐标系中有一向量A(Xa,Ya),逆时针旋转?兹角度后得到另一个向量B(Xb,Yb),这个过程可用如下矩阵表示:针对这一特点,可在CORDIC 算法上做一点改进,把旋转因子所对应的CORDIC 旋转系数预先存在ROM 中(人工计算旋转系数比较麻烦,可用MATLAB 编一段程序来计算,并把旋转系数存为.mif 文件以便ROM 初始化),而不是把旋转因子角度预先存在ROM 中。
这样,在进行CORDIC 运算时,直接从ROM 中取出旋转系数,从而减少计算Zi 来确定下一步旋转方向的步骤,减少CORDIC 模块设计的复杂性,提高了运算速度,并且旋转系数不比旋转因子角度占用的ROM 资源多。
另外由于旋转因子需要进行0°、-90°或+90°三种预旋转,所以预旋转还要分配两位二进制数,这样存储旋转系数的ROM 就为18 位的ROM。
改进的CORDIC 算法结构如图1 所示,所有旋转因子所对应的CORDIC 旋转系数都存储在ROM 中,通过地址产生器的控制实现序列与相应的旋转因子的复乘运算。
CORDIC算法的FPGA实现忙了⼏天的毕业设计,做了256~16M点FFT窗函数的设计。
今晚终于可以写下博客了,嘻嘻。
在这次的设计中⽤到了CORDIC算法,接下来开始举⼀个简单的例⼦来说明该算法的FPGA实现。
根据上⼀篇博客的CORDIC算法理论基础,本次设计以圆周系统的旋转模式为依据和迭代法为实现⽅案。
为了⽅便说明该设计,相位输⼊位宽为8,迭代次数为8。
(1)由上⼀篇博客可知,为了让复杂的三⾓函数转换成简单的移位相加,得对θi进⾏⼀定的限制,使tanθi=2-i,即θi=tan-12-i(i=0,1,2...)。
这样,我们可以算出每次迭代所对应的旋转⾓度了。
为了快速算出这些旋转⾓度,我们得寻找⼀种⽅便易⽤、计算能⼒强⼤的软件来完成,C、C++等随你选。
这⾥以MATLAB为例:fid = fopen('rot.txt','w');for i=0:7x = atan(2^(-i))*2^8/(2*pi);rot_angle = atan(2^(-i))*180/pi;y = dec2bin(x,8);fprintf(fid,'parameter Rot%d = 8''b',i+1);fwrite(fid,y);fprintf(fid,';\t//%8.5fdeg\r\n',rot_angle);endfclose(fid)运⾏后,产⽣rot.txt⽂件,打开后会发现该⽂件已经包含了本设计中需要的旋转⾓度:(2)由于每次旋转都会使向量模长增⼤1/cosθi倍,n次旋转后模长将增⼤1/cosθ0*1/cosθ1*...*1/cosθn-1。
为了纠正向量模长,最后得乘以因⼦cosθ0*cosθ1*...*cosθn-1。
该值的计算也交给MATLAB了。
Init_1 = 1;fid = fopen('Init.txt','w');for i = 0:7cos_data = cos(atan(2^(-i)));Init_1 = Init_1*cos_data;endInit_expand = Init_1*2^7;Init_data = dec2bin(Init_expand,8);fprintf(fid,'parameter Init = 8''b');fwrite(fid,Init_data);fprintf(fid,'; //%7.5f*2^%d 8次迭代:%7.5f',Init_1,i,Init_1);fclose(fid)运⾏后,产⽣Init.txt⽂件,内容如下:(3)有了上⾯的参数,以及下⾯的迭代公式和初始值就可以开始设计我们的代码了。
基于改进型CORDIC算法和FPGA的DDS实现
聂伟;饶金玲
【期刊名称】《电子技术应用》
【年(卷),期】2013(39)12
【摘要】在FPGA平台上实现了一种基于改进型CORDIC算法的新型DDS.采用三级旋转结构来提高旋转方向的并行计算速度,改进旋转结构中每一级数据处理位数并采用并行流水线方式以降低算法运行所需时间,使用进位保存算法完成基本迭代单元计算,并在实现上采用4-2压缩器,减少基本电路时延.通过ModelSim仿真和Matlab性能分析,所设计的DDS具有分辨率高、速度快和频谱杂散小等优点.【总页数】4页(P45-48)
【作者】聂伟;饶金玲
【作者单位】北京化工大学计算机系统与通信实验中心,北京100029;北京化工大学计算机系统与通信实验中心,北京100029
【正文语种】中文
【中图分类】TN74
【相关文献】
1.基于改进CORDIC算法的QDDS的FPGA实现及精度分析 [J], 鞠建波;别庆;杜爱国
2.基于改进型Cordic算法数字下变频FPGA实现 [J], 余捷;杜栓义;何纬
3.基于System Generator的CORDIC算法DDS的FPGA实现 [J], 夏少峰;黄世震
4.基于CORDIC算法的QDDS设计及其FPGA实现 [J], 金学哲;金明吉;岂飞涛;秦世才
5.一种基于CORDIC算法的改进型DDS设计 [J], 黄玮;崔乔冬;王堂胜;周彭宇;谢帅;杜滨媛
因版权原因,仅展示原文概要,查看原文内容请购买。