首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

用CORDIC IP产生SINE波形--参加年度达人活动

用CORDIC IP产生SINE波形--参加年度达人活动

前面我们介绍了XILINX S3ESK开发板DAC的使用,下面我们介绍下怎么用该DAC器件来产生一个正弦波形。如果是简单的实现一个正弦波形,我可以用一个ROM表来存储波形系数,然后根据相位直接查表得到幅值后送到DAC器件输出就可以了,这种方法的主要缺点是资源占用大,灵活性和精度不高。而采用CORDIC算法实现正弦相位幅度转换,具有节省资源,精度高等优点。该算法在现代信号处理中应用很广泛,所以XILINX ISE软件自带有CORDIC算法IP供用户使用,本文在XILINX SPARTAN-3E STARTER KIT开发板上应用CORDIC算法IP来产生正弦波形。
一、CORDIC算法介绍
CORDIC(coordinate rotation digital computer)算法是一种基于向量旋转的数值计算方法。该算法通过迭代操作来逼近三角函数、双曲函数以及其他一些函数。算法仅仅通过移位和加法操作,易于用硬件实现。近年来,CORDIC算法已经运用到一些性能要求苛刻的处理中,
如:数字信号处理(DSP),图像处理,视频技术(例如FFT),离散的Hartley变换(DHT),离散的正余弦变换(DCT,DST),Hough变换(HT),制图应用,以及运动矢量估值等,以CORDIC算法为核心的FPGA应用也越来越受到重视。CORDIC算法的基本原理如下:
假设在直角坐标系中初始向量 ( x1,y1 )旋转一个角度后为向量 ( x2,y2),如下图示:
>

可见上式中只有加法和减法以及移位操作了。将初始坐标设为(K,0),初始z值置为所需要得到幅度值的角度值,在n级迭代后使zn 一> 0时就可以得到所对应的幅度值xn=cosz0,yn=sinz0。
---待续---
记录学习中的点点滴滴,让每一天过的更加有意义!
返回列表