当前位置:首页 > 工业控制 > 电子设计自动化

摘 要: 采用CORDIC算法实时计算正弦值的方法,替代传统DDS中的正弦查找表,显著节省了硬件资源,极大提高了转换速度以及DDS的频率和相位分辨率。将基于改进的并行流水结构的CORDIC算法作为IP应用于高端DDS芯片中,同时利用Matlab的M语言进行仿真与调试,可以直观地看到该改进算法的输出波形。
关键词: 直接数字频率合成;CORDIC算法;Matlab

传统DDS是由美国学者Tierney 等提出,采用查找表结构实现,很难满足数字信号处理领域中高精度、高分辨率、实时运算的要求。而采用基于CORDIC算法的DDS结构可以很容易地满足这些要求,且易于采用流水线技术,因此这一技术越来越多的用于雷达等电子系统中[1]。本文提出了一种基于CORDIC算法的16位流水线并行结构的DDS,取代传统ROM查找表,实现了高速度和资源占用率低的要求。利用Matlab工具进行仿真分析,不仅能直观地看出输出波形,而且加快了设计进程。
1 DDS的基本结构
DDS的基本结构如图1所示,主要包括:参考频率源、相位累加器、ROM正弦查找表、D/A转换器及低通滤波器。频率控制字K决定了相位累加器的步进大小。每一个时钟周期,相位寄存器中的数值就累加一个步长K,与初始相位相加后送入正弦查找表,正弦查找表一般是一个可编程存储器,存有相应的正弦波数据。存储器将输入的相位信息转换为地址信息,再将地址映射为正弦幅度值,经过D/A转换器生成阶梯波形,然后经过低通滤波器得到频率的连续波形。


这种结构的缺点是ROM的容量与相位码的位数成指数关系,而大容量的ROM意味着系统高功耗、高成本、低稳定性。因此人们寻求直接计算正余弦值来代替ROM查找表。相位幅度转换主要有查表法、多项式展开法以及CORDIC算法[2]。CORDIC算法在硬件实现上只需移位和加减运算即可得到正余弦值,容易在VLSI芯片上实现。
2 CORDIC算法的原理及改进
  CORDIC(The Co-ordinate Rotation Digital Computer)算法由J.Volder[3]1959年在美国航空控制系统设计中提出,是一种用于计算运算函数的循环迭代算法。CORDIC算法的基本概念是将目标旋转角分解为一组预定单元旋转角的加权和,用这组预先规定的基本角度的线性组合逼近。该算法的巧妙之处在于基本角的选取恰好使每次矢量以基本角度旋转后,新矢量坐标值的计算仅需要简单的移位和加减法就能完成[4]。

其中p称为CORDIC算法的旋转增益。实际的算法中不可能做无穷迭代,因此实际的增益与迭代次数有关,当迭代次数逐渐增大时,p就不断逼近1.647。由于n不可能无穷大,因此会引入误差。在迭代的过程中可以忽略cosθn项,迭代的最后再将其乘入。这样就得到:

从公式(7)而来的是CORDIC算法的迭代结构,在传统的迭代结构中随着迭代次数的增加,其查找表的地址也随之增加,查找表中存放旋转的角度集。必须有一个状态机来跟踪迭代过程,这将导致运行速度降低,不适合高速高精度的要求[6]。
采用流水线结构,能够在执行进程的同时输入数据,从而极大提高程序的运行效率。迭代性流水线结构如图2所示。


3 Matlab软件实现CORDIC算法仿真
Matlab是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括Matlab和Simulink两大部分。Matlab的应用范围非常广,包括信号和图像处理、通信、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。本文利用Matlab的M语言进行CORDIC算法的仿真,其优势在于仿真结果易于观察,充分利用可以有效的加快设计进程。
本程序遵照上述CORDIC算法编写, 采用文件的方式编写,下面是部分源程序。仿真输出波形如图3所示。

function[x,y]=get_sincos(Angle,precision)%Initial Angle and
precision
InitialAngle=Angle*pi/180;%Coneversion to radian
K=1.0;
for i=1:precision
cordic_table{i}.k=K;
cordic_table{i}.phase_rads=atan(K);
K=0.5*K;
end;
x=0.60725293510314;y=0;%Initial Value when computing
sin/cos
acc_phase_rads=InitialAngle;

for i=-90:1:90
[x,y]=get_sincos_fxp(i,22);
xx(j)=x;
yy(j)=y;
j=j+1;
end;
figure(1)
plot(xx,′r′)
hold on
plot(yy,′b′)
hold off
在传统DDS设计的基础上,用CORDIC算法取代传统的查找表,提升了转换速度和精度,同时基于改进的并行流水线型的CORDIC,进一步提升了转换速度,在大部分转换角度固定的情况下,对初始值进行优化可以节省1/3的硬件资源。该设计已经作为IP应用于高端DDS芯片中。
参考文献
[1] 郭金淮,汤汉屏.DDS技术浅析[J].数据通信,2002(3).
[2] FATIMA S,WOOLDRIDGE M.An agent2based framework for multi2issue negotiation[J].Artificial Intelligence,2004,52(1):1245.
[3] 张明友.数字阵列雷达和软件化雷达[M].北京:机械工业出版社,2008.
[4] VOLDER E.The CORDIC Trigonometric computation teclrnique[J].IRE Trans.Electronic Comp-Utters,1959,EC 8:330-334.
[5] 周柱.基于CORDIC算法的直接频率合成技术的研究和应用[D].国防科学技术大学,2005.
[6] MAHARATNA K,VALLS J.50 Years of CORDIC:Algorithms,Architectures,and Applications[J].IEEE Circuits and Systems Society 1549-8328 2009:1893-1907.
[7] CONSIDINE V.CORDIC trigonometric function generate for DSP,CH2673-2/0000-2381/1.00[J].IEEE,1989.

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在工业控制系统中,Modbus RTU协议的CRC校验如同通信网络的"免疫系统",某石化厂DCS系统曾因CRC计算错误导致0.3%的数据包丢失,引发连锁控制故障。本文将深入解析CRC-16/MODBUS算法原理,对比软件...

关键字: Modbus RTU CRC 算法

加密算法分对称加密和非对称算法,其中对称加密算法的加密与解密密钥相同,非对称加密算法的加密密钥与解密密钥不同,此外,还有一类不需要密钥的散列算法。

关键字: 算法 嵌入式

在现代数字系统设计中,将算法高效地转化为 RTL(寄存器传输级)实现是 FPGA 工程师的核心任务之一。这一过程不仅需要对算法有深入理解,还需掌握 FPGA 的硬件特性和设计技巧。本文将详细介绍从算法到 RTL 实现的关...

关键字: 算法 寄存器传输级 数字系统

从本质上讲,算法是一种有条不紊、分步骤解决问题或完成任务的方法。无论是简单的数字相加公式,还是复杂的机器学习协议,算法都是软件应用的基础,确保任务能够高效有效地执行。

关键字: 算法 嵌入式

在自动驾驶技术的发展历程中,激光雷达(LiDAR)宛如一颗备受瞩目的新星,其独特的技术特性使其成为追求高安全性、高可靠性自动驾驶方案的首选。然而,这颗新星并非毫无争议,“价格昂贵、结构复杂、算法难度高” 等标签,也让一些...

关键字: 自动驾驶 激光雷达 算法

4月2日消息,近日,有关智能驾驶而引发的交通事故在网络上引起了大家的热烈讨论,对此,央视网评指出,“智能驾驶”,也请握紧方向盘。

关键字: 算法 智能驾驶

所谓排序算法,即通过特定的算法因式将一组或多组数据按照既定模式进行重新排序。这种新序列遵循着一定的规则,体现出一定的规律,因此,经处理后的数据便于筛选和计算,大大提高了计算效率。对于排序,我们首先要求其具有一定的稳定性,...

关键字: 排序算法 算法

快速排序通过一趟排序将待排序列分割成独立的两部分,其中一部分序列的关键字均比另一部分序列的关键字小,则可分别对这两部分序列继续进行排序,以达到整个序列有序的目的。

关键字: 快速排序 算法

算法,作为解决问题的精确描述,是描述策略机制的系统方法。让我们在周末轻松探讨五个具有深远影响的算法:Metropolis-Hastings算法、单纯形法、快速傅立叶变换、快速排序算法,以及计算特征值的QR算法。这些算法在...

关键字: 算法 快速排序算法

服务需要保护自己,以免被太多的请求淹没(无论是恶意或无意的),从而保持可用性。举个生活中的例子,某个景区,平时可能根本没什么人前往,但是一旦到了国庆假日就人满为患,这时景区管理人员就会实施一系列的限流举措,来限制进入的人...

关键字: 限流 算法
关闭