FPGA实验二报告完整版.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
信息与通信工程学院 信息与信号处理综合实验报告 (FPGA部分) 题目: CORDIC 算法 班级: 专业: 信息工程 姓名: 学号: 实验目的 掌握FPGA设计中的流水线技术; 掌握Cordic算法的基本原理及其实现方法; 了解通过在片内生成ROM的方式进行在板模块测试的方法。 实验内容 按实验指导书所给出的步骤,在FPGA上实现Cordic算法用于计算sin(x)。 修改程序使其能够用于计算x2 算法原理解释 实验要求的两部分功能:cordic算法求算sin(x)和x2+y2 旋转模式 Figure SEQ Figure \* ARABIC 1. 圆周系统平面坐标旋转 由图知: 如果使用迭代的方法,旋转的角度可以在多步之内完成,每一步旋转完成其中一小部分,多步之后将会完成一个平面旋转。 为计算更加方便,令,其中表示下一次旋转的旋转方向。为了能确定下一次的旋转方向,我们引入,如果大于0,即为还没有转到目标角度,下一次为逆时针旋转,即,若小于0,说明向量已经旋转超过了目标角度,需要往回转,即顺时针旋转,则。 依此机制迭代多次,多个(i=0…n)相乘会出现增益K。K取决于迭代次数,对于所有初始向量和所有旋转角度而言,K为一个常数(按实验指导书中,此处K=0.6073) 旋转模式中,Z为输入,是需要旋转的角,当Z旋转变为0时,程序结束,即为已知目标角度,经过旋转将一向量从0度旋转到目标角度。 经N次迭代后,上述方程转化为: 所以如果设,那么N次迭代后Cordic算法输出变为: ,这里我们要计算sinx所以只要输出y即可。 向量模式 向量模式中,XY为输入,当Y=0时结束,大致算法思想变为已知某向量位置,经过旋转,最终使向量转到x轴上结束。 迭代过程大致与旋转模式相同,但在旋转方向判断上,改用代替,如果大于0,即为向量还在x轴上方,下一次为顺时针旋转,即,若小于0,说明向量已经旋转到x下方,需要往回转,即逆时针旋转,则。 向量模式下最终的结果为: 算法的FPGA实现 由于实验中的text文件中代码相对简单,均是给输入变量赋初值并不断累加的过程,此处就不在赘述,只相对详细的介绍主函数的部分,另外,chipscope部分实验指导书中也已经细致的阐述,此处只简单介绍需要改动的部分。 六次迭代计算sin(X) 主要输入及输出变量释义: DATA_WIDTH=8; //数据长度,主要由迭代次数决定,随迭代次数增多, 的值会越来越小,需要表示精度就越来越高,当迭代6次时,=1.7899°,即20h’00145d,所以用8位恰好可以表示。 PIPELINE=8; //流水线长度,关于流水线的部分将在后面详细阐述。 phase_in; //输入的角度值 phase_in_reg; //将输入角度经过变换后,实际参与运算的值 sin_out; //输出sin的值 eps; //转过的角度值 x0~7,y0~7,z0~7; //中间变量,分别储存第i次迭代后的函数值 程序流程图: 由于代码较长,所以这里只用流程图代替说明。 程序说明 关于角度值与函数值: 由于输入时,参与运算的都是旋转的角度值,范围是0~2π,而输出时为sinx值,是函数值,有正负,范围为-1~+1。 于是这里规定: 在输入中,将0000_0000~1111_1111表示0~2π的角度值,0000_0001表示360/256。 在输出时,采用补码表示,第一位为符号位,0000_0000~0111_1111表示0~+1,1000_0000~1111_1111表示-1~-1256。最低位表示 关于X的初值: 前面算法说明的时候已经说过,这里取k,即0.60725,但由于是用16进制表示,先转换成二进制。因为是有符号位8位二进制数,恰好k第一位也是0,所以只要直接乘以27,左移7位再转化即可。 关于象限和Z正负的判断: 由于坐标系总是将所有数从大到小分成四部分(即四个象限),所以前两位即为象限信息,[00]为第一象限,[01]为第二象限,[10]为第三象限,[10]为第四象限。 Z的首位即为符号位,0为正,1为负。 象限调整的必要性: 不管是旋转模式还是向量模式,最大旋转角度大约在-99.88°~99.88°,也就是说旋转覆盖角度只能为第一四象限,所以要进行象限调整。 X、Y计算中2- 相当于对上一次的X、Y值除2,采用向右移位,空位补0的方法实现 流水线的采用原因及长度选取: 如果某个设计的处理流程分为若干步骤,且整个数据处理是单流向的,没有反馈或迭代运算,前一个步骤的输出是下个步骤的输入,可以采用流水线结

文档评论(0)

+ 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档