高精度正余弦函数的FPGA实现

上传人:汽*** 文档编号:545271203 上传时间:2023-04-07 格式:DOC 页数:28 大小:877.32KB
返回 下载 相关 举报
高精度正余弦函数的FPGA实现_第1页
第1页 / 共28页
高精度正余弦函数的FPGA实现_第2页
第2页 / 共28页
高精度正余弦函数的FPGA实现_第3页
第3页 / 共28页
高精度正余弦函数的FPGA实现_第4页
第4页 / 共28页
高精度正余弦函数的FPGA实现_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《高精度正余弦函数的FPGA实现》由会员分享,可在线阅读,更多相关《高精度正余弦函数的FPGA实现(28页珍藏版)》请在金锄头文库上搜索。

1、高精度正余弦函数的FPGA实现陈海波(巢湖学院 物理与电子科学系,安徽 巢湖 238000)摘 要:近年来,由于电力电子的发展,电力电子方面大功率可控整流、变频调速设备的广范应用使得电力系统的稳定运行存在严重的隐患,使得谐波的检测和补偿抑制受到关注,其中任意次谐波的准确检测在于如何准确的设立正余弦函数的频率。因此如何利用最少的ROM资源在最短的时延之内产生高精度的正余弦函数成为了需要解决的首要问题。随着研究的深入,不断的产生了多种算法如:cordic算法、查找表法、插值法。查找表法是根据精度要求产生函数值存储器,构成正弦表;cordic(坐标旋转数字计算机算法)算法是由J.Volder于195

2、9年提出的应用计算三角函数等方法通过迭代满足精度的串行实现方法;线性插值法是选择合适的基点值,在基点上进行线性插值。本文就上面三种方法进行比较,用硬件描述语言Verilog HDL描述三种算法的正余弦函数实现,其次利用VCS仿真软件,得到其仿真后输出的时序波形结果并对其作出说明,得出线性插值法实现正余弦函数的优点,最后把仿真成功的程序下载到现场可编程门阵列(FPGA)中进行实现。关键词:函数;FPGA;算法;时延;面积Implementation of High Accuracy Sine and Cosine Function Based on FPGAChen Haibo(Departme

3、nt of Physics and Electronic Science, Chaohu College, Chaohu Anhui 238000)Abstract: In resent years, Because the development of Power Electronic, the electric power electronics big power can control to commutate, velometer and transducer be used in widely, so many severity hidden questions in electr

4、ic system, Make harmonic examination and repair repress to be subjected to concern, Among them arbitrarily the time harmonic accurate examination lie in how to accurately establish the frequency of positive cosine function. Consequently how make use of the minimal ROM resources at the shortest of po

5、stpone inside produced the positive cosine function of high accuracy to become the initial problem that needs to be solved. Along with research of thorough, continuously produced various calculate ways for example: cordic algorithm, linera interpolation algorithm, lookup-table algorithm. lookup-tabl

6、e method requests to produce a function value saving machine according to the accuracy, constitute sine value table; The cordic algorithm is the application calculation that is put forward in 1959 by J.Volder triangle function etc. method to carry out a method through the Die generation string line

7、that satisfies accuracy; The linear interpolation algorithm is choose the suitable referrence point and carry on line to interpolation values over the reference point. This text above three kinds of methodses carry on a comparison, describes three kinds of algorithm of sine and cosine function how t

8、o realization by Verilog HDL language, secondly make use of VCS simulation software get the output waveform file by function and timing simulation and then make elucidation, get the advantage of realizing sine and cosine functions by linear interpolation algorithm, finally download the code and real

9、ization it in the field programmable logical array(FPGA) and carry on it.Keywords: functional; FPGA; algorithm; timing delay; area1 引言当21世纪这个信息化高速发展的时代的大门开启之后,随着科技的发展,我们仔细审视这个飞速前进的世界,你会发现电子通讯、光子通讯越来越快的发展,显然随着大规模集成电路的迅速发展,FPGA已成为电子工程设计的主要器件,但在采用FPGA器件构建数字信号处理系统时却存在着一些困难,原因在于:一方面,基于FPGA的DSP设计工具还不够完善,不

10、能根据实际需求灵活构建相应的结构;另一方面大多数设计者缺乏硬件实现高精度运算的实际设计经验,因此一些运算密集型的应用不易完成FPGA设计。正余弦函数作为基本三角函数广泛应用于数值分析、概率统计、图像处理、通信等各个领域。其计算过程复杂,运算速度明显低于其他的运算,特别是硬件不容易实现,为此人们一直在寻找一种易于硬件实现的算法来提高三角函数的运算速度和精度,目前比较流行的几种算法有:线性插值法、cordic算法、查找表法等。然而一种算法的硬件实现目前主要依赖于复杂可编程逻辑器件和现场可编程门阵列(CPLD/FPGA, Complex Programmable Logic Device/Field

11、 Programmable Gate Array),其中运算速度和占用芯片的面积是衡量一种算法优劣的主要技术指标,当然在FPGA的应用中占用资源量大和时延大的问题在实际中也是普遍存在的,本文就这一问题进行研究,寻找一种满足硬件面积和计算时延、运算精度要求的三角函数实现方法。综合比较cordic算法、查找表法和线性插值法,cordic算法由于运算过于复杂使得时延太大影响运算速度;查找表法由于所需的ROM空间过大占用了过多的芯片面积;线性插值法中和了以上两者的不足在减少ROM的同时提升了运算速度,同时利用三角函数的对称性将三角函数的波形从四分之一周期扩展到一个完整的周期。这种三角函数的实现方法为实

12、际应用解决了很大的难题,实现了高速高精度的正余弦函数。2 算法描述和原理分析2.1 查找表法基本概念及原理查表法的工作原理是:先把一个周期内的正余弦函数根据精度的要求分为若干个间隔的点,求出相应点的函数值,规格化后用二进制写入高速只读存储器中,构成一个正余弦函数表,产生频率为f时,数字频率控制字在相位累加器中的累加,因为累加器的位数有限,当累计到最大的数时累加器清零,从而实现了线性变化的离散相位,离散的相位作为地址从ROM中读出相应的周期性离散相位幅度码,从而产生相应的频率幅度码。查表法的FPGA实现方法是将0,2)范围内以步长选取个,对应正弦值量化为n位二进制数存于表中,得到的正弦表(即为存

13、储深度,n为存储的宽度)。给定输入相位所对应的地址就可以查表得到对应的正弦值。易知,在满足下式: (2-1)的条件下,相位分辨率,由此可见其性能取决于n。当构造一个深度为,宽度为n的表时需要(bits)的资源。如果我们要使相位分辨率提高一倍,那么存储资源需要增加(bits);要使正余弦值精度提高一倍,存储资源需要增加(bits)。7总之,查找表法求函数值是一种最有效、最简单、直接的方法,适用于任何函数的计算。这种方法的优点是可以实时的输出,但是会消耗大量的存储单元,尤其是当对相位和频率分辨率以及输出地精度要求很高的时候。虽然具体实现的时候可以只存储一个象限的正余弦函数值来减少存储量,但是总的来

14、说,存储资源的消耗仍经常超出FPGA的承受能力。所以,在实质上这种方法只适用于较小精度的函数值求解,很多双精度数无法用这种方法实现。2.2 cordic算法的基本概念及原理图1 迭代原理图针对以上查找表法的不足我们介绍一种基于迭代的逐次逼近求解的方法-cordic算法,cordic算法包含圆周系统,线性系统,双曲系统三种旋转系统。在这里我们选择圆周系统,完成平面坐标旋转进行说明。单次迭代原理如下图1。13cordic算法是由J.Volder于1959年提出的基于坐标旋转通过迭代满足精度的计算三角函数方法,作为一种高效的硬件算法,在理论上已经被证明可以用于实现三角函数运算。图中、 分别为初始向量

15、的横坐标、纵坐标和幅角,、分别为未知向量的横坐标、纵坐标和幅角,两向量为单位向量,则 (2-2)可知 得: (2-3)同理 (2-4)假设,那么 (2-5) (2-6)经过N步的迭代之后有 (2-7) (2-8)其中为第次迭代的角度差。在实现运算的过程中为了省掉除法器以便于FPGA实现和的计算,我们需要依次取tan为1、.,表1中列出了的和的值。表1 不同n的对应值tan(度)cos1/145.0000000.7071071/226.5650510.8944271/414.0362430.9701431/87.1250160.9922781/163.5763340.9980531/321.7899110.9995121/640.8951740.9998781/1280.4476140.999969通过上表我们可以得到的近似值为0.607253,所以我们可以把它看做常数项,易知这种算法适用的角度范围为:然而,在FPGA实现的过程中一般用于,无法覆盖整个正余弦函数周期,对于大角度,我

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号