预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共31页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

毕业设计论文基于FPGA的复指数转换模块设计摘要:复指数运算会运用在许多通信数字处理领域中,例如ofdm系统的调制、加扰等。CORDIC算法是在许多角度计算方面有着广泛应用的经典算法,本文通过考虑FPGA的结构、精度局限和速度要求,采用流水线技术(pipeline),在FPGA上用CORDIC算法实现对复数处理。关键词:坐标旋转数字计算;FPGA;复指数1引言FPGA以其灵活性和使用方便在现今的数字领域已经得到了广泛的应用。但FPGA实现数字系统也有其自身的局限性,其一是器件资源的门阵列规模的限制,其二是单元延迟限制。所以,这就需要设计者充分考虑器件的实际工作能力。复数的计算在数字领域尤其是数字通信领域是一种应用非常广泛的计算,如果用传统的除法器、乘法器等计算方法,需要占用大量的FPGA资源,这样就不能满足设计者的要求,需要设计者考虑其他的算法实现这种类型的计算。CORDIC算法在硬件电路的实现上只用到了加法器和移位器,这样就大大节约了FPGA的资源,从而可以满足设计者的要求。2CORDIC算法简介CORDIC(CoordinateRotationDigitalComputer),又名:坐标旋转数字计算,是J.Voider等人于1959年在设计美国航空导航控制系统的过程中提出来的一种算法。下面就简要地介绍一下CORDIC算法的基本数学思想。如图1所示,将向量旋转角,得到一个新的向量,那么有:(1)式中R为圆周的半径,为旋转角度。写成矩阵形式:(2)如果假设是由n个角度叠加而成的,那么根据式(2)得出每一步的叠加操作需要按照式(3)操作。(3)利用式子(3)经过n步叠加可以表示由向量旋转到向量,如下表示:(4)由于计算机进行计算采用二进制形式,所以我们选取,这样选取方便了的计算,即,式(4)前面的可以去累积乘的极限即:如果我们在设计的系统中提前计算K,那么当抛开K不算时,式(3)就可以表示成式(5):(5)至此,我们可以得出结论,由向量,在先计算K的情况下,我们可以由式(5)逐步的计算旋转角度后得出向量。计算的精度由n的大小决定,式(5)中的由每一步的具体情况而定。3CORDIC算法的复数计算应用Y复指数可以表示为,由欧拉恒等式知,只要知道角度,就可以计算正余弦的值来表示这个复数。已知角度,如何求:、。这个问题我们可以转换为利用CORDIC这种向量旋转的思想进行解析,建模如下(见图2):OX图2向量旋转坐标图起始向量为,终止向量为,由经过n步旋转到,即可得到、。设:Zn表示经过n步旋转后,得到的结果与的差值,即:,通过这样的假设,就可以得到:(6)将(5)和(6)式结合,就可以得到它的逻辑表述:计算所得的、即为所求的、。4复指数转换模块的FPGA实现4.1关键问题分析复数,其中。由下列变换关系计算、时采用将转换成锐角计算,然后在根据是第几象限来确定、的正负。关系如表1:表1第一象限()第二象限()第三象限()第四象限()----(2)采用锐角的形式后,有,在fpga的实现中,角度我们采用比例缩放变换成。我们用16位二进制数表示这个角度,最高两位表示象限,其余14位表示相位值。0100100110000000第几象限(2bit)相位值(14bit)我们知道,用二进制表示的小数点后第1为0,所以我们表示相位值时从小数点第2位开始表示,这样可以提高表示精度。由前面规定我们选取,那么。Fpga实现中,我们采用13级迭代,我们可以得表2:表2n实际角度相位值十六进制表示145deg16'h2000226.565deg16'h12E4314.036deg16'h09FB47.125deg16'h051153.576deg16'h051161.789deg16'h014570.895deg16'h00A280.447deg16'h005190.223deg16'h0028100.112deg16'h0014110.056deg16'h000A120.028deg16'h0005130.014deg16'h00024.2复数转换模块框图图3复数转换模块框图4.3端口定义说明端口类型描述clkinput时钟信号rst_ninput复位信号,低电平有效enainput使能信号phase_ininput输入相位,高两位表示在第几象限,低14位表示相位角中pi的系数的第二位小数开始的数。sin_outoutput输出正弦值cos_outoutput输出余弦值epsoutput表示第i次旋转后剩余未旋转的角度p_flagoutput正余弦值输出标志4.4模块详细流程图5仿真验证根据以上分析编写cos_sin_value.v模块代码,见附件。然后建立向量波形文件cos_sin_value.vwf(见工程),根据要求在cos_sin_value.vwf文件中