版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 何宾 2009.09 本章介绍了CORDIC算法的原理,着重介绍了的三个坐标系及其两种模式下的CORDIC的实现原理,以及迭代的算法的实现方法。 在此基础上,详细介绍了CORDIC算法在FPGA上的实现方法及实现过程,并对其性能进行了详细的讨论。 坐标旋转数字计算机(Coordinate Rotation Digital Computer,CORDIC)算法可以追溯到1957年由J.Volder发表的一篇文章。 在上个世纪五十年代,在大型实际的计算机中的实行移位相加受到了当时技术上的限制,所以使用CORDIC变得非常必要。到了七十年代,惠普公司和其他公司生产了手持计算器,许多计算器使用一个内
2、部CORDIC单元来计算所有的三角函数(那时求一个角度的正切值需要延迟大约1秒中)。 二十世纪八十年代,随着高速度乘法器与带有大存储量的通用处理器的出现,CORDIC算法变得无关紧要了。 然而在二十一世纪的今天,对于FPGA来说,CORDIC一定是在数字信号处理应用中(比如:多输入多输出(MIMO),波束形成以及其他自适应系统)计算三角函数的备选技术。 如图4.1,在xy坐标平面内将点(x1,y1)旋转角度到点(x2,y2)。其关系用下式表示: (4.1) 这被称为是平面旋转、向量旋转或者线性(矩阵)代数中的Givens旋转。上面的方程组同样可写成矩阵向量形式: cossinsincos112
3、112yxyyxx 图图4.1 圆坐标系旋转圆坐标系旋转上面的方程组同样可写成矩阵向量形式:1122cossinsincosyxyx例如一个90o相移为:111122-0110 xyyxyx通过提出因数cos,式4.1可写成下面的形式:)tan(coscossin)tan(cossincos1111211112xyyxyyxyxx 如果去除项cos,得到伪旋转方程式: (4.5) 如图4.2所示,即旋转的角度是正确的,但是x 与y 的值增加倍cos(由于cos1,所以模值变大)。tantan112112xyyyxx图图4.2 伪旋转描述伪旋转描述 并不能通过适当的数学方法去除cos项 ,然而随
4、后发现去除cos项可以简化坐标平面旋转的计算操作。 CORDIC方法的核心是伪旋转角度,其中tan=2-i。故方程可表示为: (4.6) 表4.1给出用CORDIC算法中每个迭代(i)的旋转角度(精确到9位小数)iixyxyyyxyxx-11112-111122tan2tan表4.1用CORDIC算法中每个迭代(i)的旋转角度 在这里,把变换改成了迭代算法。将各种可能的旋转角度加以限制,使得对任意角度的旋转能够通过一系列连续小角度的旋转迭代i来完成。旋转角度遵循法则: ,遵循这样的法则,乘以正切项变成了移位操作。 前几次迭代的形式为:第1次迭代旋转45o,第2次迭代旋转26.6o,第3次迭代旋
5、转14o等。i 2tani)2()2()()()1()()(1(iiiiiiiiiixdyyydxx))()(1(iiiidzz ) 伸缩因子是伪旋转的副产物。当简化算法以允许伪旋转时,cos项被忽略。这样,输出x(n),y(n)被伸缩Kn 倍,其中: (4.9) 如果迭代次数n可知,则可以预先计算伸缩因子Kn 。同样,1/ Kn也可被预先计算以得到x(n )和y(n)的真值。 (4.10) 为了简化Givens旋转,我们去除了cos项以执行伪旋转。然而,该简化引发了负面效应。输出值x(n)和y(n)被乘以一个因子Kn ,该因子被称为伸缩因子。nininK)2()(21)/(cos10.607
6、31.6476,1/,nnKKn当 CORDIC方法有两种操作模式:旋转模式和向量模式。工作模式决定了控制算子di的条件。在旋转模式中选择:di=sign(z(i)=z(i)0。n 次迭代后得到: (4.11) 通过设置x(0)=1/Kn和y(0)=0可以计算cosz(0)和 sinz(0)。旋转模式中,判决算子di满足下面条件: (4.12) 因此,输入x(0)和z(0)(y(0)=0),然后通过迭代使z(0)取值趋近于0。0)sincos()sincos()()0()0()0()0()()0()0()0()0()(nnnnnzzxzykyzyzxkx)(d)(iizsign 在向量模式中选
7、择:di =-sign(x(i)y(i)=y(i)0。经过n 次迭代后,用下式表示: 通过设定x(0)=1和z(0)=0来计算tan-1y(0)。向量模式中,判决算子di 满足下面条件: 因此 我们输入x(0)和y(0)(z(0)=0),并通过迭代使y(0)取值趋近于0。)0()0(1)0()()(2)0(2)0()(tan0)x(xyzzyykxnnnn()()()(iiiyxsignd CORDIC算法的向量模式可以得到输入向量的幅度。当使用向量模式旋转后向量就与x轴对齐(重合)。因此,向量的幅度就是旋转向量的x值。幅度结果由Kn增益标定。 如图4.3,在线性坐标系下迭代的过程可以用下式表
8、示:)2()2()2(0)()1()()()1()()()(1(iiiiiiiiiiiiiiidzzxdyyxydxx) 图4.3 线性坐标旋转y1y2x1xyx 在旋转模式中选择:di=sign(z(i)=z(i)0。n 次迭代后得到: (4.16) 该等式类似于实现一个移位相加的乘法器。)0()0()0()()0(zxyyxxnn) 在向量模式中选择:di =-sign(x(i)y(i)=y(i)0。经过n 次迭代后,用下式表示: (4.17) 这个迭代式可以用于比例运算。在线性坐标系中,增益是固定值,所以不需要进行标定。)0()0()0()()()0(/0 xyzzyxxnnn) 如图4
9、.4,双曲坐标系下的迭代过程可以用下式表示:)2(tanh)2()2(01)()1()()()1()()()(1(iiiiiiiiiiiiiiidzzxdyyxydxx)图4.4 双曲线坐标系旋转 在旋转模式中选择:di=sign(z(i)=z(i)0。n 次 迭代后得到: (4.19) 在双曲坐标系下旋转时,伸缩因子K与圆周旋转的因子有所不同。双曲伸缩因子K*可用下式表示: (4.20) 且:0sinh0coshsinh0cosh)()0()0()0()()0()0()0()(nnnnnzzyzxAyzyzxAxninK2*2120750. 1/182816. 0,*nnKKn, 在旋转模式
10、中选择:di=-sign(x(i)y(i)=y(i)0。经过n 次迭代后,用下式表示: (4.21) 在双曲坐标系下的坐标变换不一定收敛。当迭代系数为4,13,40,k,3k+1,时,该系统是收敛的。 根据三角函数之间的关系,下面的函数可以通过CORDIC算法的计算得到。 )/(tanh0)()() 0() 0(1) 0()()(2) 0(2) 0()(xyzzyyxKxnnnn 根据三角函数之间的关系,下面的函数可以通过CORDIC算法的计算得到。cos/sintan cosh/sinhtanh coshsinhexp)1/() 1(tanh21Ln2/1222/1) 4/ 1() 4/ 1
11、( 从上面可以看出,CORDIC在圆周坐标系、线性坐标系和双曲线坐标系中,其表达式是非常相似的。可以给出一个通用的表达式,然后通过选择模式变量就可以得到CORDIC算法的一般描述。其通用描述式如下所示: 式中:e(i)是用于给定旋转坐标系内,迭代i次所给出的旋转的初角。)()()1()()(1()()()1(22iiiiiiiiiiiiiedzzdxyydiyxx) 对于圆坐标系: ; 对于线性坐标系: ; 对于双曲线坐标系: 。 通过该式,就可以用通用的方法来实现CORDIC算法了。 在三角函数中,k 位的精度要求k 次迭代。使用-99.7z99.7范围内角度,圆周和线性CORDIC一定收敛
12、。1),2(tan1)(iie0,2)(iie1),2(tanh)1()(iie 理想CORDIC架构取决于具体应用中速率与面积的权衡。可以将CORDIC方程直接翻译成迭代型的位并行设计,然而位并行变量移位器不能很好地映射到FPGA中;需要若干个FPGA单元,导致设计规模变大而设计时间变长。 一次单独的CORDIC迭代所需要的硬件是足够简单的。然而,为了获得所希望的精确度,需要确定以下两个问题:需要迭代的次数和需要数据路径的宽度。 Yu Hen Hu设计了一种算法,该算法可以解决CORDIC迭代中基于总量化误差(Output Quantization Eroor,OQE)的问题。一旦确定了OQ
13、E,即可计算有效小数位的数目。 Yu Hen Hu提出OQE由两种误差组成: 1近似误差,即CORDIC旋转角度存在有限个基本角度量化所带来的量化误差。 2舍入误差,即取决于实际实现中使用的有限精确度的代数运算。 可根据下面的参数来定义上述两种误差:迭代次数(n);数据路径中的小数位的位数(b);最大向量的模值(|v(0)|)。OQE是上述误差的总和。 使用向量模式时,目标就是通过迭代使向量趋近x轴。如图4.5,有限次的旋转通常导致余下一个小角度,从而引起近似误差。旋转旋转CORIC 向量向量 近似误差近似误差除去伸缩因子前除去伸缩因子前CORDIC幅度幅度除去伸缩因子后除去伸缩因子后CORD
14、IC幅度幅度图图4.5 近似误差近似误差 图图4.6 一次迭代的误差一次迭代的误差 图4.6,说明了只执行1次迭代的例子。模值为1的向量在开始时的初始角度60。第一次迭代将向量旋转45,从而导致了=15o的角度量化误差。 对于一次迭代,其伸缩因子K等于: (4.24) 因此,旋转向量的幅度现为 。x方程给出的值为 。用这个值除以伸缩因子K,得到了真正的量化幅度cos15o。 221) 1 (00)-2(iiK2o15cos2oooiiiiiydxx15cos260sin60cos)2()()()1(上图对应的x方程的输出如下所示。 为了计算近似误差的上界,必须现找出的上界。Yu Hen Hu
15、提出的上界为: (4.26) 其中a( 1)为最终的旋转角度。观察图4.7,显然近似误差为: (4.27) )2tan() 1(1nana)2tan(cos(| )0(| )0(|1navv误差 图图4.7 近似误差的表示近似误差的表示1)(),(5 . 0-2nKnGb误差 111)(1),(njnjiiknG10)2(1021)()(niiniikiK 为了计算有效位的个数deff,必须首先计算OQE。前面已经提到了OQE的计算方法: OQE =近似误差+舍入误差 因此有效位的个数为: deff =(log2OQE) (4.31)这种方法求得的deff值依赖于所选择的b和n的值。然而,希望
16、先指定deff ,然后求出b和n的值。 因此,Yu Hen Hu采用的方法是通过取不同组的b和n,将计算出的deff值编制成表。通过查表找到所需的deff ,其对应的b和n即为可知。 使用下面的等式可求得有效小数位的个数: deff = (log2OQE)。 并不是所有计算器都允许计算以2为底的对数运算。因此,可使用下面的运算来代替:2logloglog10102OQEOQE 图图4.8 循环方式实现迭代循环方式实现迭代图图4.9 4位桶型移位器的结构位桶型移位器的结构 如图4.10,该设计包括3个位串行加法器/减法器、3个移位寄存器以及一个串行ROM(存放旋转角度)。同时需要2个复用器以实现
17、可变位移器。本设计中每个移位寄存器必须具有与字宽相等的长度。因此每次迭代都需要将该逻辑电路运行w次(其中w =字宽度)。 图图4.10 迭代位迭代位-串行设计的实现结构串行设计的实现结构 首先通过将初值x(0),y(0)和z(0)装入相关的移位寄存器中来运行。因此,数据通过加法器/减法器右移并被返回到移位寄存器的左端。变量移位器通过2个复用器来实现。在每个迭代的初始阶段,两个复用器均被设置为从移位寄存器中读取合适的抽头数据。来自每个复用器的数据被传送到了合适的加法器/减法器。在每次迭代的开始,x ,y和z寄存器的符号被读出以便将加法器加法器设置到正确的操作模式。在最后一次迭代过程中,结果可直接
18、从加法器/减法器中读取。 图4.11给出了使用移位寄存器和复用器实现可变移位器的过程。图中所示对储存在移位寄存器中的数据执行2-3的移位操作。 显然需要在每个迭代的初始就设定好多路复用器的选择线,这将能够控制需要移位的次数。 非循环的方式,即使用一个阵列单元,每一个迭代使用一个单元。图4.10给出了这种实现方式的结构。图4.11给出了这种实现方式单次迭代的system generator实现。图图4.11 非循环方式实现迭代非循环方式实现迭代图图4.11 非循环方式的单次迭代的硬件实现非循环方式的单次迭代的硬件实现yxYyxXyxorx332,2, 0yxYyxXyxorx332,2, 0 图
19、4.11中,i=3,因此: 1 (4.33) 2 (4.34) 非循环的流水线方式,即使用重定时来提高效率。图4.11给出了这种实现方式的结构。如果在每个单元cell之间插入流水线寄存器,则可以大大降低关键路径的数量。图中,在六个cell之间插入流水线寄存器,则关键路径减少为1。这样大大降低了延迟,并且提高了系统的工作速度。图图4.11重定时实现迭代重定时实现迭代流水线流水线 CORDIC阵列阵列非流水线非流水线 CORDIC阵列阵列关键路径关键路径=6 Cell关键路径关键路径=1 Cell 表4.7给出了基于Xilinx Virtex-4芯片,16位小数位,10次迭代运算的不同实现模式性能
20、比较。表4.7不同实现模式的性能比较并行(非循环) 流水并行(非循环) 串行(循环) LUT 571 580 277 触发器 94 396 126 Slice 343 335 277 最大时钟频率 21.333MHz 117.730MHz 46.273MHz 饭卡打开巴士风格反对广泛的的非官是大苏打 发的发非官方共和国符合国家和国际撒的方大哥 给飞得更高是个搜狗是归属感是搞后呵呵敢死队敢死队敢死队好地方 个地方豆腐花 哈哈动画的发挥和家具风格就 国防军广泛几个房间房管局房管局法国加工费交付给交付给交付给警方根据高房价法国警方交付给地方官梵蒂冈地方官方的说法暗室逢灯啊的非官是大苏打 发发射机的骄
21、傲给大家仨个地方大师傅艰苦绝对是九回复肯定是解放后肯定是国防部换个风格大富大贵士大夫但是发交付给地方大师傅大大规划风格化地方士大夫时的感到十分的官方电话奖和国家的骄傲还是看见好看的顺丰单号健康博客程序客户贷款空间很大防空识别的看不舒服的看不到看见对方看世界杯的咖啡酒吧的设备发的空降兵反抗波斯的反抗波斯的包括舍不得放开白色的反馈博客大巴是否看不上大夫开博客大巴发发的高科技恢复的很快就北方港口宾馆饭店免费感受到覅好的伤口缝合第三部分难道是扩大解放和开始变得反抗集散地和反抗精神美女部门你先吃吧每年从小便考多少分可接受的反抗集散地和付款计划的司法环境快递费还是给客服电话给客服电话高考加分梵蒂冈回复后可见风华高科点击返回高科技辅导功课变得疯狂进攻的伤口缝合可视电话的生命发表的但是发布的科级干部科技发达韩国可接受的和都是方面你身边的负面报道随便翻开基本上都李开复倒过来看发动了攻击附加山东南面分别明尼苏达白发魔女十点半分工合理分担和管理费的后果都是免费表面蛋白和风格和规范我却哦网球饿哦我去哦欸开始的方便快捷反对蒙蔽动漫被父母电脑设备方面你的身边每年颁发的身份决定胜负看得十分愧疚和第三方没办法每个部门的妇女不敢面对疯牛病而微软微软微软为法国空军东方科技很发达客户给开发经费的士大夫大师傅似的犯得上广泛的和广泛化工艰苦户籍科户籍科饭卡打开巴
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 铁路线路维修工程招标合同三篇
- 庆典合同范本
- 外贸内销合同范本
- 奶牛购买合同范本
- 定做制作合同范本
- 应收分保合同范本
- oem简易合同范本
- 定制化会议服务合同模板
- 2024至2030年绝缘套管编织机项目投资价值分析报告
- 2024至2030年咳喘康项目投资价值分析报告
- 网易公司战略分析报告书
- 2023年中国通用技术(集团)控股有限责任公司招聘笔试题库及答案解析
- GB/T 7409.1-2008同步电机励磁系统定义
- GB/T 34279-2017笼式足球场围网设施安全通用要求
- 四川省工伤保险待遇申请表
- 《火力发电工程建设预算编制与计算标准》使用指南
- 2023年注册物业管理师考试真题
- 运用PDCA提高患者身份识别正确率课件
- 生而为赢-新东方英语背诵美文30篇
- 居住外地离退休人员联系服务工作制度(试行)
- 培养学生自主学习能力(精编课件)
评论
0/150
提交评论