版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于 CORDIC 算法实现直角坐标与极坐标相互转换的 VHDL 函数的应用李颖弢,刘肃*,傅丽萍 兰州大学物理科学与技术学院,甘肃兰州(730000) E-mail:li_yt06lzu 摘 要:本文依据 CORDIC 算法,用 VHDL 语言程序代码定义了一个函数。此 Function 包 括两种不同模式,分别称作坐标模式,向量模式。调用此 Function ,通过对不同模式的选 择,可以实现任意象限内直角坐标与极坐标之间的相互转换。经验证,用本函数计算仿真 出的结果与理论值相比误差小于 10-4。使得设计出来的 Function 能够在相关的运算与代码 中被直接调用。在混频器中,用设计的
2、 CORDIC 模块代替本地振荡器,只需要改变输入就 可以得到频率更加稳定的所需信号,能够有效防止振荡器的实际振荡频率偏离标称频率。 关键词:CORDIC;VHDL;Function;坐标模式;向量模式中图分类号:TN4文献标识码: A1. 引言CORDICCoordinate Rotation Digital Computer算法即坐标旋转数字计算方法,是一 种用于计算一些常用的根本运算函数和算术操作的循环迭代算法,最初由J.E.Volder1于1959年提出。主要用于计算乘除,平方根,三角函数,双曲线,指数,对数以及向量旋转。其 根本思想是用一系列与运算基数相关的角度的不断偏转从而逼近所需
3、要旋转的角度。它是 一种数值性计算逼近的方法,由于具有结构简单和整个运算只有加法与移位的优点,使得 一些复杂的运算在硬件上可以很好地实现。1971 年,J.S.Walter2 将圆周旋转rotation mode、双曲旋转hyperbolic mode以及线性旋转linear mode统一到一个CORDIC迭 代方程当中,从而提出了一种统一的CORDIC算法形式,可以用统一的结构实现多种根本 运算,更加满足了硬件模块化、规那么化的要求,使得所有能用CORDIC算法实现的运算都 能用同一个硬件功能单元来完成,使之展示出更为广泛的应用前景。目前CORDIC算法已 经被成功的应用于DSP,信号处理,
4、航空航天,机器人技术,医疗仪器,滤波技术,FFT变 换等领域 3-6。本文中,基于 CORDIC 算法,实现了直角坐标与极坐标相互转换的 VHDL 函数。通过对 不同模式的选择,一方面可应用于调制电路以及锁相环组成的调频电路中,用 CORDIC 模 块来产生满足载荷信息要求的载波信号,另外在混频器中,为了防止振荡器的实际振荡频 率偏离标称频率,用 CORDIC 模块来代替本地振荡器,能够得到频率更加稳定的信号。2. Function 原理以及其 VHDL 代码 基于 CORDIC 算法的 function 原理2.1.1 坐标模式 坐标模式可以实现极坐标到直角坐标的转换,给定极坐标下向量的大小
5、以及角度 Z,计算向量在直角坐标中所对应的 X,Y 值。依据 CORDIC 算法,首先将 Y0 初始化为 0,Z0初始化为需要旋转的角度值,可以通过旋转一系列根本角度 i,反复迭代,逐渐逼近 Z0 来 完成。每一次的迭代公式如下:Xi+1 = XiYi×di×taniYi+1 = Yi + Xi×di×taniZi+1 = Zi - di×ii =0,1,2,3n-1,n 是迭代次数,也就是旋转的级数;di = -1 if Zi 01 if Zi 02.1.2 向量模式 向量模式可以实现直角坐标向极坐标的转换,通过给定直角坐标中对应的X ,Y,
6、可得到X ,Y在极坐标下对应的向量大小 Xo 以及角度 Z。首先将角度值初始化为 0,经过反复的迭代,逐渐逼近 X 轴来完成。每一次的迭代公式如下:Xi+1 = XiYi×di×tani Yi+1 = Yi + Xi×di×tani Zi+1 = Zi - di×ii =0,1,2,3n-1,n 是迭代次数;di = 1 if Yi 0-1 if Yi 0为了方便硬件的实现,在任何一种计算模式下我们令 i 满足:tani = 2-i,即 i = arctan(2-i)。这样迭代中的乘法运算就可以用更加简单快速的移位运算代替。在理论的计算过程中
7、X 和 Y 在每次迭代时都应乘上 cosi,这样在迭代最后就会产生一个模校正因子 K,对于字长 一定的运算,它是一个常数。在我们设计的 function 中,X 和 Y 都取 16bit 字长,迭代最后 形成的模校正因子 K0.6072537,8。由于在 function 中的输入输出都取 signed 型数据,为 了防止在运算中增加校正运算,方便硬件的实现,在 function 中没有考虑此常数。因此, 在调用 function 计算出来的结果与理论值相比时应乘上该校正因子 K。 实现 function 的 VHDL 代码在我们的函数中,为了方便硬件的实现以及运算中迭代本身的限制,在坐标模式
8、下极坐标到直角坐标的转换,最大旋转角度为Zmax99.91104。为了能够实现角度 在-180o到180o之间的运算,需要对输入的角度进行预处理,使其落在第一或者第四象限 内,再根据所处的象限进行符号的判断。而在向量模式下,为了能够实现任意象限内直角坐标到极坐标的转换,同样需要对输入的X,Y进行预处理,首先使其落在第一或者第四象限 内进行运算,最后根据所处象限的不同对极坐标下角度进行相应的符号转换。为了得到更 高的精度,我们在用VHDL语言所描述的function中,取迭代次数为16次,输入的X,Y采用16bit的signed型数据,输入的角度采用22bit的signed型,为了不失真,提高计
9、算的精度, 在运算过程中首先将所有的输入都扩充为22位的数。对于输出的X,Y以及角度都为16bit的signed型数据,其最高位均代表符号位。对输入而言,-180o180o范围内的角度,我们用22bit 的signed型的最大正数代表180o,绝对值最大的负数代表-180o,即:180o =01_1111_1111_1111_1111_1111 (即十进制数 2097151)-180o=10_0000_0000_0000_0000_0000 (即十进制数-2097152)。 而对于输出的角度而言,那么是用 16bit 的 signed 型的最大正数来代表 180o,绝对值最大的16bit 的
10、signed 型的负数来代表-180o,即:0111_1111_1111_1111 = 180o (即十进制数 32767)1000_0000_0000_0000 =-180o (即十进制数-32768)3. 结果与理论值的比拟以及函数的应用 结果分析与比拟用 modelsim 仿真工具,以及 specman 验证工具,对我们设计的 function 进行了验 证。以下是在不同模式下从 function 得出的结果与理论值的比拟结果。3.1.1 向量模式下结果的比拟在这种模式下用 specman 工具随机产生一些 X,Y. Function 计算出来的结果与理论值的 比拟结果表 1.所示:表
11、1. 向量模式下 Function 计算结果与理论值的比拟输 入X输入 YFunction 得出的向量X×0.607253Function 得出的角度 Z理论向量值 X理论角度 Z向量 X相对误差角度相对误差6319-63608964.8760-45.18138965.4538-45.18536.445E-58.852E-5360960637055.672659.23467055.838059.23682.344E-53.714E-5-1575-69557130.9720-102.75517131.1044-102.75971.857E-51.492E-4-25369286932.4
12、00292.09026932.618092.09143.142E-51.303E-55308-69668757.8028-52.69048757.8548-52.69315.938E-55.124E-5-383143555799.8734131.34015800.2229131.33746.026E-52.056E-5712-34103483.2032-78.20073483.5390-78.20629.640E-57.033E-5100010001413.685044.99591414.213645.00003.738E-59.111E-5322942755357.186052.933753
13、57.430952.93554.571E-53.400E-5300017323463.771129.99913464.076229.99938.808E-56.667E-61000-17321999.6841-59.99631999.9560-59.99931.360E-45.000E-5-3000-17323463.7711-149.99633464.0762-150.00078.808E-52.933E-53.1.2 坐标模式下 (极坐标到直角坐标的转换)结果的比拟在这种模式下首先取向量值的大小为定值 1000,通过 specman 验证工具选取不同的角 度值,对结果进行了验证。Funct
14、ion 计算出来的结果与理论值的比拟结果如表 2. 所示:表 2. 坐标模式下 Function 计算结果与理论值的比拟输入角 度 ZFunction 结果X×0.607253Function结果Y×0.607253理论值 X理论值 YX 相对 误差Y 相对误差349525865.9428499.7692866.0254500.00009.538E-54.616E-4699050499.7692865.9428500.0000866.02544.616E-49.538E-510485750.0000999.53840.00001000.0000-4.616E-4139810
15、0-499.7692865.9428-500.0000866.02544.616E-49.538E-51572863-706.8425706.8425-707.1068707.10683.738E-43.738E-42097151-999.53840.0000-1000.00000.00004.616E-4-524288706.8425-706.8425707.1068-707.10683.738E-43.738E-4-699050499.7692-865.9428500.0000-866.02544.616E-49.538E-5-1747626-865.9428-499.7692-866.0
16、254-500.00009.538E-54.616E-4235641938.2059345.5270938.3411345.71091.441E-45.320E-4-180696963.1033-267.1913963.5871-267.39485.021E-47.610E-4-1646304-780.3201-624.8633-780.4675-625.19631.889E-45.326E-41506500-633.3649773.6403-633.4349773.79601.105E-42.012E-4图 1. Function 的仿真波形图 2. Function 的正余弦仿真波形从仿真
17、波形中可以清晰地看出,在角度不停变化时,输出的 X,Y 分别是余弦与正 弦函数曲线,这与理论情况下极坐标向直角坐标转换的情况完全吻合。 CORDIC 模块的应用所设计的函数主要可以应用的以下方面。第一,可以作为调制电路中的载波信号。通 过对输入的控制,可以产生不同工作频率的正余弦波,因此在信号的调制与解调过程中, 可以直接用 CORDIC 模块来产生满足载荷信息要求的载波信号。第二,在锁相环组成的调 频电路中的应用。通过控制 CORDIC 模块的输入可以产生任意所需频率的信号作为载波信号。使得锁相环中压控振荡器的中心频率 等于载波信号的 频率 ,当调制信号作用于压控振荡器时,锁相环输出中心频率
18、为 的调频信号。第三,在混频器中的应用,图 3 为一 般混频器的示意图,已调信号调幅波或调频波,即输入信号,与本地振荡器的输出信号 经非线性电路处理后,获得它们的和频,差频和各高次谐波信号;再通过低通滤波器滤掉 和频和各高次谐波局部,从而可以得到差频信号。实际过程中在接收机中,总是要从许多 不同频率的信号和干扰中选择出来要接收的信号,并将其高倍数放大,这在实现起来是非 常困难的,为了克服上述困难,可以通过调整本地振荡器的振荡频率,使之保持与不同的 输入信号具有相同差频频率,这样放大器所放大的就是频率固定的信号。最后再经过解调 得到希望得到的信号 。由于受到环境条件的变化,构成振荡器的元器件内部
19、噪声以及机械 震动,晶体管或其它器件的输入,输出阻抗的变化,电路元件间分布电容的变化,元件的 电抗性能的稳定性,以及电磁干扰等因素的影响,振荡器的实际振荡频率会偏离标称频 率。为了更加方便的得到任意频率稳定的信号,可以用 CORDIC 模块代替本地振荡器,这 样只需要改变输入就可以得到频率更加稳定的所需信号。图 3 混频器电路示意图 误差分析由 CORDIC 算法的根本原理可知,调用 function 计算所能到达的精度与所选取的旋转 级数,操作数的位宽以及数据类型有关。 由 的比拟结果发现,Function 结果与理论值 相比,在不同模式下,相对误差都小于 10-4。造成这种微小误差有以下原
20、因。一是角度近 似误差,这个误差在迭代逼近的过程中是不可防止的,另一个主要原因是在我们所设计的 函数中,输入操作数都采用的是 signed 型数据有符号整数,因此调用此函数计算出来的 结果只是取了整数局部,与理论值相比忽略了其小数位。4. 结论通过对所设计的 function 进行分析与验证,所得结果与理论值完全匹配。在不同的工作 模式下相对误差仅有万分之一,造成这种微小误差主要是由于操作数采用的是 16 位的 signed 型数据,计算出来的结果忽略了其小数位。但在实际的应用中,对于一个 16bit 字长 的数来说,其小数位相对于整数位来说完全可以忽略。因此所完成设计的 function 在
21、实际 的应用与运算过程中可直接调用。其主要可以应用在锁相环组成的调频电路中以及混频器 中。在混频器中,为了得到频率稳定的信号,防止受其他因素影响而引起的振荡器的实际振荡频率偏离标称频率,可以用设计的 CORDIC 模块代替本地振荡器,只需要改变输入就可以得到频率更加稳定的所需信号。参考文献1 Volder J E. The CORDIC trigonometric computing technique J. IRE Trans. Electronic Computer, 1959, 8 (3):330 - 334.2 Walther J S. A unied algorithm for el
22、ementary functions J. AFIPS Spring Joint Computer Conference, 1971,38: 379 - 385.3 张 炜, 杨 虎, 张尔扬. 一种改良的混合预测冗余CORDIC算法J. 系统工程与电子技, 2006,28(5): 779782.ZHANG Wei,YANG Hu,ZHANG Er-yang. Improved redundant CORDIC algorithm based on hybrid predictionJ. Systems Engineering and Electronics 2006,28(5): 77978
23、2.4 韩 芳, 初建朋, 赖宗声. 一种CORDIC算法的精度分析及其在FFT设计中的应用J.微电子学与计算机,2004,21(7): 1416.HAN Fang, CHU Jian-peng, LAI Zong-sheng. Numerical Accuracy of a CORDIC Algorithm and itsApplication J. Microelectronics & Computer, 2004,21(7): 1416.5 谈宜育,卞文兵, 李 元, 等. 一种基于CORDIC算法的R-变换ASICJ. 微电子学, 2000, 30(3): 166167.TAN
24、 Yi-yu, BIAN Wen-bin, LI Yuan, et al. An R-Transform ASIC Based on CORDIC AlgorithmJ. Microelectronics, 2000, 30(3): 166167.6 杨 宇,毛志刚,来逢昌. 字长可重构流水线CORDIC设计J.固体电子学研究与进展,2005,25(3):361364.YANG Yu, MAO Zhi-gang, LAI Feng-chang. Design of Word-width Reconfigurable Pipelined CORDIC J. RESEARCH & PROG
25、RESS OF SSE, 2005,25(3):361364.7 李 滔, 韩月秋. 基于流水线CORDIC算法的三角函数发生器J. 系统工程与电子技术, 2000, 22(4): 8586.Li Tao, Han Yue-qiu. Trigonometric Function Generator Based on Pipelined CORDICJ. Systems Engineering and Electronics, 2000, 22(4): 8586.8 周兆勇,李铁才,高桥敏男,基于矢量控制的高性能交流电机速度伺服控制器的FPGA实现J. 中国电 机工程学报,2004,24(5):
26、 169170.ZHOU Zhao-yong, LI Tie-cai, Toshio Takahashi, FPGA IMPLEMENTATION OF THE HIGH-PERFORMANCE VECTOR-CONTROLIED SPEED SERVO CONTROLLER FOR ACDRIVESJ.Proceedings of the CSEE,2004,24(5): 169170.The application of a VHDL function used for implementing coordinate conversion based on the CORDIC algorithmLi Yingtao, Liu Su*, Fu LipingSchool of physical scien
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 课题申报参考:精神生活共同富裕视域下红色文化旅游深度融合的响应机制与路径研究
- 课题申报参考:教育治理现代化背景下现代产业学院内部治理结构的优化研究
- 2025年c语言实习心得体会模版(4篇)
- 2025版房地产尾款支付及产权过户协议3篇
- 二零二五年车辆抵押维修保养合同3篇
- 二零二五版贸促会棉花期货交易专区棉花现货买卖合同3篇
- 二零二五年度企业法律风险防控培训合同3篇
- 主体架构工程分包合同(2024年度)一
- 专属分店管理承包协议模板版A版
- 二零二五年度多人合伙经营酒吧合作协议范本3篇
- 《健康体检知识》课件
- 生产计划主管述职报告
- 名表买卖合同协议书
- JTG-T-F20-2015公路路面基层施工技术细则
- 2024年辽宁石化职业技术学院单招职业适应性测试题库附答案
- 中西方校服文化差异研究
- 《子宫肉瘤》课件
- 《准妈妈衣食住行》课件
- 给男友的道歉信10000字(十二篇)
- 客人在酒店受伤免责承诺书范本
- 练字本方格模板
评论
0/150
提交评论