基于坐标旋转数字计算方法的三维坐标变换

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于坐标旋转数字计算方法的三维坐标变

第33卷第2期
2011年4月
探测与控制
JournalofDetection&Control
V o1.33No.2
Apr.2011
基于坐标旋转数字计算方法的三维坐标变换
张伟,张安堂,肖宇
(空军工程大学导弹学院.陕西三原713800)
摘要:针对软件实现坐标变换速度慢而传统算法的硬件实现又非常复杂的缺点,根据CORDIC算法只需简
单的移位加减运算就能实现许多复杂运算的优点,提出了运用CORDIC算法的不同模式进行三维坐标变换,
并在FPGA上实现.仿真结果表明:利用该算法实现三维坐标变换在节省硬件资源的同时能兼顾工作速度和
精度的需要,具有一定的工程实际意义和应用前景.
关键词:坐标旋转数字计算方法;坐标变换;模校正因子;现场可编程门阵列
中图分类号:TN713文献标志码:A文章编号:1008-1194(2011)02-0073-04 CoRDICBasedThree-dimensionalCoordinateTransform
ZHANGWei,ZHANGAntang,XIAOYu
(TheMissileInstitute,AirforceEngineeringUniversity,Sanyuan713800,China) Abstract:Aimingattheshortcomingsofslowspeedofsoftwarecoordinatetransformationan dthecomplexity
ofhardwareoftraditionalalgorithm,differentmodesofCORDIC(CoordinateRotationalDi gitalComputer)algo—
rithmwasusedtorealizecoordinatetransfo?rmationaccordingtOtheadvantageofCORDIC algorithmthatonly
simpleadditionandsubtractionneeded.AndtheCORDICalgorithmwasrealizedinFPGA.T hesimulationre—suitsshowedthatthisalgorithmcouldmeetthedemandsofhigh-speedandprecision,andsave hardwarere—
sources.
Keywords:CORDICalgorithm;coordinatetransform;modcorrectionfactor;FPGA
0引言
在雷达信息处理中,需要进行直角坐标与球面
坐标的转换,目前大多是通过软件的方式来实现
的[1],但是随着雷达数据率的不断提升,用软件的方
法越来越不能满足雷达信号处理的实时性与高速性
要求了,所以有必要用硬件来实时计算.但三维坐
标变换涉及复杂的数学运算,若硬件用一般的算法
(如查找表,泰勒展开法)来实现不仅资源消耗大,而
且影响运算速度.
为此,本文根据CORDIC(坐标旋转数字计算方
法)算法的不同实现形式(如圆周模式,双曲线模式,
线性模式等)通过简单的移位和加减运算就能计算
包括乘,除,平方根,正弦,余弦,反正切,向量旋转
(即复数乘法)以及指数运算等[2]优点,将CORDIC
算法引入雷达信息处理中的三维坐标变换,可使得
三维坐标变换避免复杂的数学运算,便于硬件实现.
1CORDIC算法原理
CORDIC算法有圆周,线性和双曲线三种模式.
圆周模式可以实现向量旋转,正余弦,模,幅角等运
算;线性模式可以进行乘,除运算;双曲线模式可进
行双曲正弦,双曲余弦和双曲正切运算.其圆周模
式有两种工作模式:旋转模式和向量模式.
1.1CORDIC旋转模式
向量A(,)经过0角度旋转得到向量
B(,y6)可表式为:
:COS0[1嘲㈩
*收稿日期:2010-12-15修回日期:2011-02-21
作者简介:张伟(1987一),男,湖北宜都人,硕士,研究方向:军用微电子电路及可靠性研究.E-mail:zhangweikonggong
*************.cn.
74探测与控制
在CORDIC旋转中,其基本思想是把向量的一
次旋转转化为,z次固定,与运算基数有关的角度旋
转.其中第i次旋转角度为—arctans2~,i一0,1,
2,3,…,则第i次旋转的表达式为:
[一一[](2)
这里S一{一1;+1),当S一+1时向量是逆时针旋
转,当S一一1时向量是顺时针旋转.式(2)相比式
(1)缺少了增益因子COSOi,这是由于COS===
COS(Sarctan(2))随着旋转次数的增加,该式之积
收敛为一个常数K一ⅡCOS(5arctan(2))≈
0.60725,所以每次旋转不考虑增益因子COS.在旋
转模式下,总旋转角度要等于给定的角度,所以第i
+1次的旋转方向由—Zo一∑决定(∑代表
前i次总旋转角度),若<0时,5一一1;若>0
时,S一+1.这样当CORDIC迭代次(一..)得到
的最终结果为:
I一1?(cos一sin)
1一1?(ydc.sO+Xosin
Z一Zo一0
对一组特殊初始值Xd—K,一0,Zo一0得
到结果为:
f一cos
—sin0(4)
【乙一.
以上就是旋转模式的CORDIC算法计算角度的正余弦值原理[.
1.2CORDIC向量模式
向量模式CORDIC算法能计算一个向量的模
和幅角,其实现原理为:在向量模式下,把向量旋转到与X轴正半轴重合,得到的新向量的横坐标就是原向量的模,所旋转过的角度和就是原向量的幅角. 由于向量最终要与X轴正半轴重合,所以每次的旋转方向由决定.当yf≤0时,S一1,当yl>0时,
S一一1,并且每次旋转角Z都累加存储起来.这样当CORDIC迭代次(—Cx.)得到的最终结果为:
lx===?,//x+

0(5)
【一ctan()
由于每次旋转没有考虑COSOi,最终得到的模放
大了l/K倍,所以最后再乘K进行模校正,从而得
到的结果为:一~/+,一0,一
/V,
arctan(),即得到一个向量的模和幅角[3].\A口/
在以上不同模式的C0RDIC算法中,由于把与
tan0的乘转换为与2的乘,所以用CORDIC算法
实现一些复杂的运算只需移位与加减运算,能避免复杂的数学运算,便于硬件实现.
2CORDIC算法实现三维坐标变换
三维坐标系如图1所示,(z,Y,)为点A在直
角坐标系中的坐标值,(a,,R)为点A在球面坐标
中的坐标值.
图1三维坐标图
Fig.1Thediagramofthreedimensionalcoordinate
2.1直角坐标到球面坐标变换
若用传统的方法来进行三维直角坐标到球面坐
标的变化,则:
f,z,I一盯∞∞IJ
I.
arctan
()


实现此种变换要进行平方根,反余弦,反正切,
乘法,除法运算,这些运算若用硬件来实现,其计算
量,资源消耗会很大,影响工作速度甚至无法实现.
若采用CORDIC算法来实现,则会把复杂的数
学运算变为简单的移位加减运算,便于硬件实现.
首先把XOY平面的向量OA进行向量模式的CORDIC旋转,则可以得到向量OA(,.),)的模和
幅角,即r和a.然后把AOA平面的向量OA(,.,)
再进行向量模式的CORDIC旋转,则可以得到向量
OA(r,z)在AOA平面的模和幅角,即R和.这样
张伟等:基于坐标旋转数字计算方法的三维坐标变换75 经过两组CORDIC旋转就能得到点A在球面坐标系
中的坐标(口,p,尺).图2所示为用C0RDIC算法进行
直角坐标到球面坐标变换的原理,因为CORDIC旋
转时没考虑增益因子,在基本的C0RDIC旋转后模会扩大1/K倍,所以还应乘以模校正因子K进行模校正,从而得到完整的旋转.
图2直角坐标到球面坐标变换原理图.
Fig.2Theprinciplediagramofrectangularcoordinate tosphericalcoordinatetransfoFin
另外,为节省乘法器资源和加快流水线C()RCIIC
算法的数据吞吐率,可把模校正因子K分解为K≈1
去(1+2_)(1—2_)(1+)(1—2-)≈0.60725.
这样分解后,与K的乘转化为简单的移位加减运算,从而可以解决乘法器一级速度变慢会降低整个流水线的吞吐率问题[4].其硬件实现结构如图3所示,这种结构进一步降低了硬件复杂度,使整体结构更加规则统一,有利于VLSI实现.
图3模校正单元结构图
Fig.3Thestructurediagramofroodcorrectionunit
2.2球面坐标到直角坐标变换
若用传统的方法来进行球面坐标到直角坐标的
变化,则:
z—Rcososa;y—Rcosin.;—Rsin卢
(7)
实现此种变换要进行正余弦,乘法运算,其计算
量,资源消耗也会很大,特别是采用传统的查找表法求角度正余弦值会消耗大量的ROM资源.若用CORDIC算法的旋转模式计算角度的正余弦值,用CORDIC算法线性模式进行乘法运算则可避免复杂的数学运算,节省乘法器,ROM资源.其实现原理
如图4所示:首先输入的角度a,进行旋转模式的
CORDIC算法,得到角度a,卢的正余弦值,然后根据公式(7)的运算得到输出的直角坐标值z,Y,.
图4球面坐标到直角坐标变换原理图
Fig.4Theprinciplediagramofsphericalcoordinate torectangularcoordinatetransform
2.3三维坐标变换的FPGA实现
本文在Altera公司的Quartus117.2软件环境
下使用VHDI进行了三维坐标变换的FPGA实现, 并在Cyclone11EP2C35F672C6芯片上进行验证. 设计中,角度均用20位有符号数表示,所以每1.用十六进制表示为(2加一1)/360~B61(hex),角度分
辨率为360./(2∞一1)≈0.0003433.,则CORDIC
迭代中的第19次固定旋转角度无法分辨出来,所以对于20bit位宽角度,CORDIC只要进行18次迭
代引.
CORDIC算法的核心是每次迭代运算,旋转模
式CORDIC算法的第次迭代运算的VHDL关键
描述语句如下:
IF(AI—AX>一0)THEN
Xo<一X—YIW_EI(Y,j);
YO<2=Y+YIWEI(X,j);
AO<=::AX+A;
ELSE
XO<===X+YIWEI(Y,j);
YO<=Y--YIWEI(X,j);
A0<===AX~A:
ENDIF;
这段VHDL中,(AI—AX>一O)代表旋转方向
判断,YIWEI(Y,j)为有符号数的右移运算,是自定
义的函数,实现迭代运算中y?2的运算.AO<一
AX+A为旋转角度存储,以便下一次旋转方向的判
76探测与控制
定.对于向量模式CORDIC算法的迭代运算,只需把
旋转方向判定改为(≥O),即纵坐标是否大于0
来判断旋转方向即可.
3仿真结果与理论验证
3.1直角坐标到球面坐标变换仿真验证
表1所示为Quartus1I7.2自带的仿真工具对
直角坐标到球面坐标变换的仿真值和理论值对比结
果.输出球面坐标的角度仿真结果是用2O位有符
号二进制数表示的,所以要乘以角度分辨率360./
(2∞一1)来进行转换.从理论值和仿真结果的对比
中可以看出,本文所运用的坐标变换算法精度较高,
完全能满足实际工程需要.另外,从Quartus1I7.2
的编译报告中显示实现此三维坐标变换没有用乘法
器,整个逻辑单元消耗也只有3740个,占总逻辑单
元的ll9/6,最高工作速度能达到135MHz.而若用
式(6)所示的坐标变换算法,则需进行三次乘法,两
次除法,三次平方根,一次反正切,一次反余弦运算,
不仅算法复杂,而且速度也不会太高,所以采用
CORDIC算法的坐标变换在保证精度的同时,相比
传统算法,还具有资源消耗少,工作速度高的优点.
表1直角坐标到球面坐标变换的理论值和仿真结果
Tab.1TheoreticalandsimulationresultsofrectangulartosphericalcoordinateTransformati on
3.2球面坐标到直角坐标变换仿真验证
表2所示为球面坐标到直角坐标变换理论值与
仿真值对比结果.仿真输出直角坐标值分别除以
(2一1).,(2一1).,(2一1),这是因为在运算中
与角度正余弦值相乘时,实际范围为一1~1的角度
正余弦值是用16位数据表示的,所以把量化的数据
转化为实际数据才能便于对比.从仿真结果和理论
值可以看出,运用CORDIC算法进行球面坐标到直
角坐标变换同样能满足精度需要.另外,从
QuartusII7.2的编译报告中显示实现此坐标变换消
耗逻辑单元7638个,占总逻辑单元的23,最高工
作速度130MHz,而若用传统的查找表法来计算角
度正余弦值,则需较大的ROM来存储角度的正余
弦值,并且坐标变换时还要消耗12个9-bit乘法器,
所以采用C0RDIC算法进行坐标变化在保证变换
精度的同时,相比传统算法,还能保证资源消耗少,
工作速度高.
表2球面坐标到直角坐标变换的理论值与仿真结果
Tab.2TheoreticalandsimulationresultsofsphericaltorectangularcoordinateTransformati on
以上仿真验证结果表明:CORDIC算法在节省
资源,提高工作速度的同时还能兼顾精度的需要,相
比传统算法,避免了三维坐标变换的复杂数学运算,
7
7
便于硬件的实现.此种算法对三维坐标变换的硬件
实时计算有着重要的意义.
(下转第80页)
80探测与控制
由表1可见,经阻尼最小二乘法优化计算后的
角速度精度明显高于直接解算的;再经四元数法解
得的姿态角误差很小,更接近理论值;而直接解算得
到的姿态角误差发散,误差很大.
4结论
影响无陀螺惯性测量系统精度的因素有许多,
本文考虑了安装误差的影响,确定高自旋弹丸在十
二加速度计配置方案下角速度的精确数学模型,针
对存在安装误差时角速度直接解算的误差非常大的
问题,本文提出了基于非线性最小二乘法中的阻尼
最小二乘法对角速度和姿态角解算的优化算法.该
算法针对包含加速度计安装误差的输出比力方程,
运用最小二乘法由一组初始值出发开始在每一点处
进行线性替代的迭代计算,搜索出满足极值点必要
条件的最优角速度,从而实现对姿态角的优化解算.
实验表明:基于非线性最小二乘的优化算法对于求
解存在安装误差的弹丸运动姿态是可行的,并且姿
态角的误差小于0.1%.
参考文献:
[1]屈新芬,谭惠民,商顺昌.捷联惯导测量单元配置方案及比较EJ].探测与控制,2005,27(3):59—64.
QUXinfen,TANHuimin,SHANGShunchang.Studyof
strap-downinertialmeasurementunitconfigurationsl-J]. JournalofDetection&Control,2005,27(3):59—64.
E2]AlfredRSchuler.MeasuringRotationalMotionwithLin—earAccelerometers[J].IEEETransonAES1967,3(3): 465—472.
[33陈哲.捷联惯导系统原理EM].北京:宇航出版社,1986. E43程国采.四元数法及其应用[M].长沙:国防科技大学出版社,1991.
[5]以光衢.惯性导航原理[M].北京:航空工业出版社,
】987.
(上接第76页)
4结论
本文针对软件实现坐标变换速度慢而传统算法
的硬件实现又非常复杂的缺点,提出了运用
CORDIC算法的不同模式进行三维坐标变换,并进
行了仿真验证和硬件FPGA实现.仿真结果表明:
利用该算法实现三维坐标变换在节省硬件资源的同
时能兼顾工作速度和精度的需要,另外,利用
VHDL语言,使得本设计灵活,可移植性强,通用性
好,只需作少量改动(如增加位宽,增加迭代次数),
便可满足精度上的更高要求,具有一定的工程实际
意义和应用前景.
参考文献:
E1]刘翠海,王文清,袁满.一种支持雷达P显仿真的实时坐标变换策略EJ].系统仿真,2002,14(9):17—20. LIUCuihai,W ANGWenqing,YUANMamAkindofCO—ordinateconversionstrategyforPPIradarindicatorsimu—lation[J].JournalofSystemSimulation,2002,14(9):17—
2O.
E2JAndrakaRAsurveyofCORDICalgorithmsforFPGA basedcomputers[c]//Proceedingsofthe6thIntema—A:Monterey,1998: 191—200.
[3]VankkaJ.Methodsofmappingfromphasetosineampli—tudeindirectdigitalsynthesis[c]//Procofthe1996 A: IEEE,1996:942-950.
[43李滔.流水线CL)RDIC算法及其应用研究[D].北京:北京理工大学,1999.
E5]HuYH.ThequantizationeffectsoftheCORDICalgo—rithm[J].IEEETransonSignalProcessing,1992,(4O): 834—844.。

相关文档
最新文档