ImageVerifierCode 换一换
格式:DOC , 页数:31 ,大小:1.40MB ,
资源ID:3045013      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/3045013.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     索取发票    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【可****】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【可****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(学位论文-—基于fpga的复指数转换模块设计.doc)为本站上传会员【可****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

学位论文-—基于fpga的复指数转换模块设计.doc

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算法的基本数学思想。如图1所示,将向量旋转角,得到一个新的向

3、量,那么有: (1)式中R为圆周的半径,为旋转角度。写成矩阵形式: (2)如果假设是由n个角度叠加而成的,那么根据式(2)得出每一步的叠加操作需要按照式(3)操作。 (3)利用式子(3)经过n步叠加可以表示由向量旋转到向量,如下表示: (4)由于计算机进行计算采用二进制形式,所以我们选取,这样选取方便了的计算,即,式(4)前面的可以去累积乘的极限即: 如果我们在设计的系统中提前计算K,那么当抛开K不算时,式(3)就可以表示成式(5): (5)至此,我们可以得出结论,由向量,在先计算K的情况下,我们可以由式(5)逐步的计算旋转角度后得出向量。计算的精度由n的大小决定,式(5)中的由每一步的具体情

4、况而定。3 CORDIC算法的复数计算应用Y复指数可以表示为,由欧拉恒等式知,只要知道角度,就可以计算正余弦的值来表示这个复数。已知角度,如何求:、。这个问题我们可以转换为利用CORDIC这种向量旋转的思想进行解析,建模如下(见图2):OX 图2 向量旋转坐标图起始向量为,终止向量为,由经过n步旋转到,即可得到、。设:Zn表示经过n步旋转后,得到的结果与的差值,即:,通过这样的假设,就可以得到: (6)将(5)和(6)式结合,就可以得到它的逻辑表述:计算所得的、即为所求的、。4 复指数转换模块的FPGA实现4.1 关键问题分析(1) 复数,其中。由下列变换关系 计算、时采用将转换成锐角计算,然

5、后在根据是第几象限来确定、的正负。关系如表1: 表1第一象限()第二象限()第三象限()第四象限()-(2) 采用锐角的形式后,有,在fpga的实现中,角度我们采用比例缩放变换成。我们用16位二进制数表示这个角度,最高两位表示象限,其余14位表示相位值。0100100110000000第几象限(2bit) 相位值(14bit)我们知道,用二进制表示的小数点后第1为0,所以我们表示相位值时从小数点第2位开始表示,这样可以提高表示精度。(3) 由前面规定我们选取,那么。Fpga实现中,我们采用13级迭代,我们可以得表2: 表2n实际角度相位值十六进制表示145deg16h2000226.565de

6、g16h12E4314.036deg16h09FB47.125deg16h051153.576deg16h051161.789deg16h014570.895deg16h00A280.447deg16h005190.223deg16h0028100.112deg16h0014110.056deg16h000A120.028deg16h0005130.014deg16h00024.2 复数转换模块框图图3 复数转换模块框图4.3 端口定义说明端口类型描述clkinput时钟信号rst_ninput复位信号,低电平有效enainput使能信号phase_ininput输入相位,高两位表示在第几象限

7、,低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文件中编辑激励信号。仿真一:当输入相位角为30时,即,系数为1/6=0.0010101010101010,那么输入的16位相位角phase_in = 0001_0101_010

8、1_0101。仿真结果得:sin_out = 0011_1111_1111_1110,cos_out = 0110_1110_1101_1100仿真结果如下图 图5 仿真结果图 表3 仿真结果分析理论值(第1位表示正负)仿真结果误差0100_0000_0000_0000(1/2=0.50)0011_1111_1111_1110(0.4999)-0.00010110_1110_1101_1001()0110_1110_1101_1100(0.86608)0.00003仿真二:当输入相位角为135时,即,变换成第一象限角为,系数为1/4=0.0100000000000,那么输入的16位相位角pha

9、se_in = 0110_0000_0000_0000。仿真结果得:sin_out = 0101_1010_0000_0100,cos_out = 1010_0101_1111_1111仿真结果如下图 图6 仿真结果图 表4 仿真结果分析理论值(第1位表示正负)仿真结果误差0101_1010_1000_0010() 0101_1010_0000_0100(0.7032)-0.00391010_0101_0111_1101()1010_0101_1111_1111(-0.7031)-0.0040由上实验结果可知:仿真结果与理论结果基本一致,误差还是比较小的;如果想进一步缩小误差,可以增加迭代次数

10、。附件:模块名:cos_sin_value.v 模块代码:timescale 1ns / 100ps/ Company: / Engineer: / Create Date:17/01/2013 / Design Name: / Module Name: / Project Name: / Target Devices: / Tool versions: / Description: / Dependencies: / Revision: / Revision 0.01 - File Created/ Additional Comments: /module cos_sin_value(clk

11、,rst_n,ena,phase_in,sin_out,cos_out, eps,puc_zc_cordic_flag);parameter DATA_WIDTH=16;/定义数据位宽为16parameter PIPELINE=16;/流水线级数为16input clk;input 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次旋转后

12、剩余未旋转的角度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_cordic_flag;reg DATA_WIDTH-1:0 phase_in_reg;/输入相位缓存/这里的相位表示是这样的:最高位和次高位这两位表示象限/(如00代表的第一象限,01代表的第二象限,10代表的第三象限,11代表的第四象限)/,剩下的低十四位代表相位值(这里一个单位代表的度数是90/16384=0.005493)/ 矩

13、阵相乘中间寄存器变量,用于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;reg DATA_WIDTH-1:0 x5,y5,z5;reg DATA_WIDTH-1:0 x6,y6,z6;reg DATA_WIDTH-1:0 x7,y7,z7;reg DATA_WIDTH-1:0 x8,y8,z8;reg DATA_WIDTH-1:0 x9,y9,z9;

14、reg DATA_WIDTH-1:0 x10,y10,z10;reg DATA_WIDTH-1:0 x11,y11,z11;reg DATA_WIDTH-1:0 x12,y12,z12;reg DATA_WIDTH-1:0 x13,y13,z13;reg 1:0 quadrantPIPELINE:0;/定义象限定义变量reg 3:0 count;/时钟计数integer i;/整型变量always (posedge clk or negedge rst_n)/正余弦值输出标志控制(在使能信号拉高的第16个时钟后)begin if(!rst_n) begincount=4b0000;puc_zc

15、_cordic_flag=1b0; end else if(ena=1b1)beginif(count=4b1111)beginpuc_zc_cordic_flag=1b1;/正余弦值输出标志置1endelse beginpuc_zc_cordic_flag=1b0;count=count+1b1; endend else beginpuc_zc_cordic_flag=1bz;endendalways (posedge clk or negedge rst_n)begin if(!rst_n) phase_in_reg=16h0000; else if(ena=1b1) begincase(

16、phase_in15:14) 2b00:phase_in_reg=phase_in;/当前输入为第一象限的相位角 2b01:phase_in_reg=phase_in - 16h4000; /-pi/2(当前输入为第二象限的相位角,故要减去pi/2) 2b10:phase_in_reg=phase_in - 16h8000; /-pi(当前输入为第三象限的相位角,故要减去pi) 2b11:phase_in_reg=phase_in - 16hC000; /-3pi/2(当前输入为第四象限的相位角,故要减去3pi/2) default:;endcase endelsebeginphase_in_

17、reg=16h0000;endendalways (posedge clk or negedge rst_n)begin if(!rst_n) begin x0=16h0000; y0=16h0000; z0=16h0000; end else if(ena=1b1)begin/m=1,旋转模式(这种模式可以用来计算一个输入角的正弦值和余弦值)/x0=k,模校正因子的值/y0=0/z0=phase_inx0 = 16h4DBA;/define aggregate constant Xi=1/P=1/1.6467=0.60725(Xi=27*P=16h4DBA)y0 = 16h0000; z0

18、= phase_in_reg; end else beginx0=16hzzzz;y0=16hzzzz;z0=16hzzzz;endend/level_1(第一级迭代)always (posedge clk or negedge rst_n)begin if(!rst_n) begin x1=16h0000; y1=16h0000; z1=16h0000; end elseif(ena=1b1)begin if(z015=1b0)/当前的相位值是正的begin x1 = x0 - y0; y1 = y0 + x0; z1 = z0 - 16h2000; /45degend else/当前的相位

19、值是负的begin x1 = x0 + y0; y1 = y0 - x0; z1 = z0 + 16h2000; /45degend end else beginx1=16hzzzz;y1=16hzzzz;z1=16hzzzz;endend/level_2(第二级迭代)always (posedge clk or negedge rst_n)begin if(!rst_n) begin x2=16h0000; y2=16h0000; z2=16h0000; end elseif(ena=1b1)begin if(z115=1b0)/当前的相位值是正的begin x2 = x1 - y1DATA

20、_WIDTH-1,y1DATA_WIDTH-2:1;/y1向右移一位且最高位不变 y2 = y1 + x1DATA_WIDTH-1,x1DATA_WIDTH-2:1;/x1向右移一位且最高位不变 z2 = z1 - 16h12E4; /26.565degend else/当前的相位值是负的begin x2 = x1 + y1DATA_WIDTH-1,y1DATA_WIDTH-2:1; y2 = y1 - x1DATA_WIDTH-1,x1DATA_WIDTH-2:1; z2 = z1 + 16h12E4; /26.565degendend else beginx2=16hzzzz;y2=16h

21、zzzz;z2=16hzzzz;endend/level_3(第三级迭代)always (posedge clk or negedge rst_n)begin if(!rst_n) begin x3=16h0000; y3=16h0000; z3=16h0000; end elseif(ena=1b1)begin if(z215=1b0)begin x3 = x2 - 2y2DATA_WIDTH-1,y2DATA_WIDTH-2:2; y3 = y2 + 2x2DATA_WIDTH-1,x2DATA_WIDTH-2:2; z3 = z2 - 16h09FB; /14.036degend els

22、ebegin x3 = x2 + 2y2DATA_WIDTH-1,y2DATA_WIDTH-2:2; y3 = y2 - 2x2DATA_WIDTH-1,x2DATA_WIDTH-2:2; z3 = z2 + 16h09FB; /14.036degend endelse beginx3=16hzzzz;y3=16hzzzz;z3=16hzzzz;endend /level_4(第四级迭代)always (posedge clk or negedge rst_n)begin if(!rst_n) begin x4=16h0000; y4=16h0000; z4=16h0000; end else

23、if(ena=1b1)begin if(z315=1b0)begin x4 = x3 - 3y3DATA_WIDTH-1,y3DATA_WIDTH-2:3; y4 = y3 + 3x3DATA_WIDTH-1,x3DATA_WIDTH-2:3; z4 = z3 - 16h0511; /7.125degend elsebegin x4 = x3 + 3y3DATA_WIDTH-1,y3DATA_WIDTH-2:3; y4 = y3 - 3x3DATA_WIDTH-1,x3DATA_WIDTH-2:3; z4 = z3 + 16h0511; /7.125degendendelse beginx4=

24、16hzzzz;y4=16hzzzz;z4=16hzzzz;endend /level_5(第五级迭代)always (posedge clk or negedge rst_n)begin if(!rst_n) begin x5=16h0000; y5=16h0000; z5=16h0000; end elseif(ena=1b1)begin if(z415=1b0)begin x5 = x4 - 4y4DATA_WIDTH-1,y4DATA_WIDTH-2:4; y5 = y4 + 4x4DATA_WIDTH-1,x4DATA_WIDTH-2:4; z5 = z4 - 16h028B; /3

25、.576degend elsebegin x5 = x4 + 4y4DATA_WIDTH-1,y4DATA_WIDTH-2:4; y5 = y4 - 4x4DATA_WIDTH-1,x4DATA_WIDTH-2:4; z5 = z4 + 16h028B; /3.576degend end else beginx5=16hzzzz;y5=16hzzzz;z5=16hzzzz;endend /level_6(第六级迭代)always (posedge clk or negedge rst_n)begin if(!rst_n) begin x6=16h0000; y6=16h0000; z6=16h

26、0000; end elseif(ena=1b1)begin if(z515=1b0)begin x6 = x5 - 5y5DATA_WIDTH-1,y5DATA_WIDTH-2:5; y6 = y5 + 5x5DATA_WIDTH-1,x5DATA_WIDTH-2:5; z6 = z5 - 16h0145; /1.789degend elsebegin x6 = x5 + 5y5DATA_WIDTH-1,y5DATA_WIDTH-2:5; y6 = y5 - 5x5DATA_WIDTH-1,x5DATA_WIDTH-2:5; z6 = z5 + 16h0145; /1.789degend e

27、nd else beginx6=16hzzzz;y6=16hzzzz;z6=16hzzzz;end end /level_7(第七级迭代)always (posedge clk or negedge rst_n)begin if(!rst_n) begin x7=16h0000; y7=16h0000; z7=16h0000; end elseif(ena=1b1)begin if(z615=1b0)begin x7 = x6 - 6y6DATA_WIDTH-1,y6DATA_WIDTH-2:6; y7 = y6 + 6x6DATA_WIDTH-1,x6DATA_WIDTH-2:6; z7 =

28、 z6 - 16h00A2; /0.895degend elsebegin x7 = x6 + 6y6DATA_WIDTH-1,y6DATA_WIDTH-2:6; y7 = y6 - 6x6DATA_WIDTH-1,x6DATA_WIDTH-2:6; z7 = z6 + 16h00A2; /0.895degend end else beginx7=16hzzzz;y7=16hzzzz;z7=16hzzzz;endend /level_8(第八级迭代)always (posedge clk or negedge rst_n)begin if(!rst_n) begin x8=16h0000; y

29、8=16h0000; z8=16h0000; end elseif(ena=1b1)begin if(z715=1b0)begin x8 = x7 - 7y7DATA_WIDTH-1,y7DATA_WIDTH-2:7; y8 = y7 + 7x7DATA_WIDTH-1,x7DATA_WIDTH-2:7; z8 = z7 - 16h0051; /0.447degend elsebegin x8 = x7 + 7y7DATA_WIDTH-1,y7DATA_WIDTH-2:7; y8 = y7 - 7x7DATA_WIDTH-1,x7DATA_WIDTH-2:7; z8 = z7 + 16h005

30、1; /0.447degend end else beginx8=16hzzzz;y8=16hzzzz;z8=16hzzzz;endend /level_9(第九级迭代)always (posedge clk or negedge rst_n)begin if(!rst_n) begin x9=16h0000; y9=16h0000; z9=16h0000; end elseif(ena=1b1)begin if(z815=1b0)begin x9 = x8 - 8y8DATA_WIDTH-1,y8DATA_WIDTH-2:8; y9 = y8 + 8x8DATA_WIDTH-1,x8DATA

31、_WIDTH-2:8; z9 = z8 - 16h0028; /0.223degend elsebegin x9 = x8 + 8y8DATA_WIDTH-1,y8DATA_WIDTH-2:8; y9 = y8 - 8x8DATA_WIDTH-1,x8DATA_WIDTH-2:8; z9 = z8 + 16h0028; /0.223degend end else beginx9=16hzzzz;y9=16hzzzz;z9=16hzzzz;endend /level_10(第十级迭代)always (posedge clk or negedge rst_n)begin if(!rst_n) be

32、gin x10=16h0000; y10=16h0000; z10=16h0000; end elseif(ena=1b1)begin if(z915=1b0)begin x10 = x9 - 9y9DATA_WIDTH-1,y9DATA_WIDTH-2:9; y10 = y9 + 9x9DATA_WIDTH-1,x9DATA_WIDTH-2:9; z10 = z9 - 16h0014; /0.112degend elsebegin x10 = x9 + 9y9DATA_WIDTH-1,y9DATA_WIDTH-2:9; y10 = y9 - 9x9DATA_WIDTH-1,x9DATA_WI

33、DTH-2:9; z10 = z9 + 16h0014; /0.112degendend else beginx10=16hzzzz;y10=16hzzzz;z10=16hzzzz;endend /level_11(第十一级迭代)always (posedge clk or negedge rst_n)begin if(!rst_n) begin x11=16h0000; y11=16h0000; z11=16h0000; end elseif(ena=1b1)begin if(z1015=1b0)begin x11 = x10 - 10y10DATA_WIDTH-1,y10DATA_WIDT

34、H-2:10; y11 = y10 + 10x10DATA_WIDTH-1,x10DATA_WIDTH-2:10; z11 = z10 - 16h000A; /0.056degend elsebegin x11 = x10 + 10y10DATA_WIDTH-1,y10DATA_WIDTH-2:10; y11 = y10 - 10x10DATA_WIDTH-1,x10DATA_WIDTH-2:10; z11 = z10 + 16h000A; /0.056degendend else beginx11=16hzzzz;y11=16hzzzz;z11=16hzzzz;endend /level_12(第十二级迭代)always (posedge clk or

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服