收藏 分享(赏)

基于fpga的复指数转换模块设计_毕业设计(论文).doc

上传人:无敌 文档编号:631920 上传时间:2018-04-15 格式:DOC 页数:31 大小:513.50KB
下载 相关 举报
基于fpga的复指数转换模块设计_毕业设计(论文).doc_第1页
第1页 / 共31页
基于fpga的复指数转换模块设计_毕业设计(论文).doc_第2页
第2页 / 共31页
基于fpga的复指数转换模块设计_毕业设计(论文).doc_第3页
第3页 / 共31页
基于fpga的复指数转换模块设计_毕业设计(论文).doc_第4页
第4页 / 共31页
基于fpga的复指数转换模块设计_毕业设计(论文).doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

1、毕业设计论文基于 FPGA 的复指数转换模块设计摘要:复指数运算会运用在许多通信数字处理领域中,例如 ofdm 系统的调制、加扰等。CORDIC 算法是在许多角度计算方面有着广泛应用的经典算法,本文通过考虑 FPGA 的结构、精度局限和速度要求,采用流水线技术(pipeline),在FPGA 上用 CORDIC 算法实现对复数处理。关键词: 坐标旋转数字计算; FPGA; 复指数1 引言FPGA 以其灵活性和使用方便在现今的数字领域已经得到了广泛的应用。但FPGA 实现数字系统也有其自身的局限性,其一是器件资源的门阵列规模的限制,其二是单元延迟限制。所以,这就需要设计者充分考虑器件的实际工作能

2、力。复数的计算在数字领域尤其是数字通信领域是一种应用非常广泛的计算,如果用传统的除法器、乘法器等计算方法,需要占用大量的 FPGA 资源,这样就不能满足设计者的要求,需要设计者考虑其他的算法实现这种类型的计算。CORDIC 算法在硬件电路的实现上只用到了加法器和移位器,这样就大大节约了 FPGA 的资源,从而可以满足设计者的要求。2 CORDIC 算法简介CORDIC(CoordinateRotationDigital Computer),又名:坐标旋转数字计算,是 J. Voider 等人于 1959 年在设计美国航空导航控制系统的过程中提出来的一种算法。下面就简要地介绍一下 CORDIC

3、算法的基本数学思想。如图 1 所示,将向量 旋转 角,得到一个新的向量 ,那么有:),Y(Xi),Y(Xj(1)(RYiij cossnsinco式中 R 为圆周的半径, 为旋转角度。写成矩阵形式:(2) iij YXYXX1tantcscosini如果假设 是由 n 个 角度叠加而成的,那么根据式(2)得出每一步的叠加操作需要按照式(3)操作。(3) nnn YXYX1tatcos1利用式子(3)经过 n 步叠加可以表示由向量 旋转到向量 ,如下表示:),(i ),Y(j(4) innnj X.Y 1tat1tatcoscos0010由于计算机进行计算采用二进制形式,所以我们选取 ,这样n2

4、rcta选取 方便了 的计算,即 ,式(4)前面的 可以去累积nntannS2taos乘的极限即: 0n0n 607253.)1arct(ocsKns如果我们在设计的系统中提前计算 K,那么当抛开 K 不算时,式(3)就可以表示成式(5): nnn YXSYX121(5)0,iii至此,我们可以得出结论,由向量 ,在先计算 K 的情况下,我们可),(Xi以由式(5)逐步的计算旋转角度后得出向量 。计算的精度由 n 的大小,Yj决定,式(5)中的 由每一步的具体情况而定。nS3 CORDIC 算法的复数计算应用复指数可以表示为 ,由欧拉恒等式 知,只要知道角度je cossinejj,就可以计算

5、正余弦的值来表示这个复数。已知角度,如何求:、 。这个问题我们可以转换为利用 CORDIC 这种向量旋转的思想进sinco行解析,建模如下(见图 2):),A(01图 2 向量旋转坐标图起始向量 为 ,终止向量 为 ,O,iiYXOB,sinco,jjYX由 经过 n 步旋转到 ,即可得到 、 。ABsinco设:Zn 表示经过 n 步旋转后,得到的结果与 的差值,即:,通过这样的假设,就可以得到:niZ0n(6)0n1ZS将(5)和(6)式结合,就可以得到它的逻辑表述: )(Z(n)(X*YX()IFn2arct10)(Z(n)(*YELSn2arct1计算所得的 、 即为所求的 、 。X1

6、sinco),B(sincoXYO4 复指数转换模块的 FPGA 实现4.1 关键问题分析(1) 复数 ,其中 。由下列变换关系cossinejj20)()(sincoscoini计算 、 时采用将 转换成锐角 计算,然后在根据 是第几象限来确sinco定 、 的正负。关系如表 1:表 1第一象限( )第二象限( )第三象限( )第四象限( )sinsinsin- sin- sincoco- co- coco(2) 采用锐角的形式后,有 ,在 fpga 的实现中,角度 我们采用比例20缩放变换成 。我们用 16 位二进制数表示这个角度,最高两位表示象210限,其余 14 位表示相位值。0 1

7、0 0 1 0 0 1 1 0 0 0 0 0 0 0第几象限(2bit) 相位值(14bit)我们知道,用二进制表示 的小数点后第 1 为 0,所以我们表示相位210值时从小数点第 2 位开始表示,这样可以提高表示精度。(3) 由前面规定我们选取 ,那么 。Fpga 实现中,我nnarct nnS2ta们采用 13 级迭代,我们可以得表 2:表 2n 实际角度 nn相位值十六进制表示1 45deg 2116h20002 26.565deg 4116h12E43 14.036deg 816h09FB4 7.125deg 1616h05115 3.576deg 3216h05116 1.789d

8、eg 416h01457 0.895deg 1816h00A28 0.447deg 25616h00519 0.223deg 16h002810 0.112deg 10416h001411 0.056deg 2816h000A12 0.028deg 9616h000513 0.014deg 116h00024.2 复数转换模块框图复数符号转换模块R s t _ n 1 5 : 0 p h a s e _ i np _ f l a gC l ke n a 1 5 : 0 c o s _ o u t 1 5 : 0 s i n _ o u t图 3 复数转换模块框图4.3 端口定义说明端口 类型

9、描述clk input 时钟信号rst_n input 复位信号,低电平有效ena input 使能信号phase_in input输入相位,高两位表示在第几象限,低 14位表示相位角中 pi 的系数的第二位小数开始的数。sin_out output 输出正弦值cos_out output 输出余弦值eps output 表示第 i 次旋转后剩余未旋转的角度p_flag output 正余弦值输出标志4.4 模块详细流程图5 仿真验证根据以上分析编写 cos_sin_value.v 模块代码,见附件。然后建立向量波形文件 cos_sin_value.vwf(见工程) ,根据要求在 cos_si

10、n_value.vwf 文件中编辑激励信号。仿真一:当输入相位角为 30时,即 ,系数为 1/6=0.0010101010101010,那么输6入的 16 位相位角 phase_in = 0001_0101_0101_0101。仿真结果得:sin_out = 0011_1111_1111_1110,cos_out = 0110_1110_1101_1100仿真结果如下图图 5 仿真结果图表 3 仿真结果分析6理论值( 第 1 位表示正负) 仿真结果 误差ins0100_0000_0000_0000(1/2=0.50)0011_1111_1111_1110(0.4999) -0.0001co01

11、10_1110_1101_1001( )0.865230110_1110_1101_1100(0.86608) 0.00003仿真二:当输入相位角为 135时,即 ,变换成第一象限角为 ,系数为4341/4=0.0100000000000,那么输入的 16 位相位角 phase_in = 0110_0000_0000_0000。仿真结果得:sin_out = 0101_1010_0000_0100,cos_out = 1010_0101_1111_1111仿真结果如下图图 6 仿真结果图表 4 仿真结果分析43理论值( 第 1 位表示正负) 仿真结果 误差ins0101_1010_1000_0

12、010( )0.720101_1010_0000_0100(0.7032) -0.0039cos1010_0101_0111_1101( ).11010_0101_1111_1111(-0.7031) -0.0040由上实验结果可知:仿真结果与理论结果基本一致,误差还是比较小的;如果想进一步缩小误差,可以增加迭代次数。附件:模块名:cos_sin_value.v 模块代码:timescale 1ns / 100ps/ Company: / Engineer: / Create Date: 17/01/2013 / Design Name: / Module Name: / Project Na

13、me: / Target Devices: / Tool versions: / Description: / Dependencies: / Revision: / Revision 0.01 - File Created/ Additional Comments: /module cos_sin_value(clk,rst_n,ena,phase_in,sin_out,cos_out,eps,puc_zc_cordic_flag);parameter DATA_WIDTH=16; /定义数据位宽为 16parameter PIPELINE=16; /流水线级数为 16input clk;i

14、nput rst_n;input ena;input DATA_WIDTH-1:0 phase_in; /输入相位output DATA_WIDTH-1:0 sin_out; /输出正弦值output DATA_WIDTH-1:0 cos_out; /输出余弦值output DATA_WIDTH-1:0 eps; /表示第 i 次旋转后剩余未旋转的角度output puc_zc_cordic_flag; /正余弦值输出标志reg DATA_WIDTH-1:0 sin_out;reg DATA_WIDTH-1:0 cos_out;reg DATA_WIDTH-1:0 eps;reg puc_zc

15、_cordic_flag;reg DATA_WIDTH-1:0 phase_in_reg; /输入相位缓存/这里的相位表示是这样的:最高位和次高位这两位表示象限/(如 00 代表的第一象限,01 代表的第二象限,10 代表的第三象限,11 代表的第四象限)/,剩下的低十四位代表相位值(这里一个单位代表的度数是90/16384=0.005493)/ 矩阵相乘中间寄存器变量,用于 13 次迭代计算reg DATA_WIDTH-1:0 x0,y0,z0;reg DATA_WIDTH-1:0 x1,y1,z1;reg DATA_WIDTH-1:0 x2,y2,z2;reg DATA_WIDTH-1:0 x3,y3,z3;reg DATA_WIDTH-1:0 x4,y4,z4;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 学术论文 > 管理论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报