宋定昆,劉桂雄,唐文明
(華南理工大學(xué)機(jī)械與汽車工程學(xué)院,廣東 廣州 510641)
改進(jìn)SF CORDIC算法正余弦函數(shù)求解及其應(yīng)用
宋定昆,劉桂雄,唐文明
(華南理工大學(xué)機(jī)械與汽車工程學(xué)院,廣東 廣州 510641)
為降低無(wú)需擴(kuò)展因子坐標(biāo)旋轉(zhuǎn)數(shù)字算法(scaling-free coordinate rotation digital computer,SF CORDIC)計(jì)算正余弦函數(shù)的迭代次數(shù),該文提出一種改進(jìn)SF CORDIC算法,改變?cè)械嵌刃蛄?、迭代角度選擇方法,加快收斂速度,并將算法應(yīng)用于超聲回波信號(hào)正交解調(diào)器中。仿真實(shí)驗(yàn)表明:改進(jìn)SF CORDIC算法比經(jīng)典SF CORDIC算法減少29%全加器、61%寄存器的消耗量,并且具有較高的計(jì)算精度,具有重要推廣價(jià)值。
無(wú)需擴(kuò)展因子坐標(biāo)旋轉(zhuǎn)數(shù)字算法;正余弦函數(shù);迭代角度;正交解調(diào)
數(shù)字信號(hào)處理技術(shù)作為工業(yè)測(cè)控領(lǐng)域的關(guān)鍵技術(shù),近年來(lái)得到快速發(fā)展。吞吐率、精度是數(shù)字信號(hào)處理系統(tǒng)性能好壞的重要指標(biāo),學(xué)者們提出各種算法來(lái)實(shí)現(xiàn)信號(hào)處理中涉及到的各種復(fù)雜函數(shù)的快速、高精度運(yùn)算,其中坐標(biāo)旋轉(zhuǎn)數(shù)字算法(coordinate rotation digital computer,CORDIC)[1]是解決三角函數(shù)、指數(shù)函數(shù)等運(yùn)算的經(jīng)典算法之一,其特點(diǎn)在于將復(fù)雜運(yùn)算分解成一系列加減、移位運(yùn)算之和,大大加快運(yùn)算速度,適用于高速數(shù)字信號(hào)處理場(chǎng)合。目前CORDIC算法體系已經(jīng)逐步完善,算法性能不斷進(jìn)步,并產(chǎn)生系列改進(jìn)算法,比如高基數(shù)CORDIC算法[2-3]、角度重編碼(angle-recording)算法[4-5]、冗余CORDIC算法[6-7]和SF CORDIC算法[8-9]等。其中,SF CORDIC算法由Maharatna K提出,特點(diǎn)在于免去比例因子的計(jì)算,但迭代角度序列收斂域較小,需重復(fù)旋轉(zhuǎn)初始角度α0才能使算法收斂,大大增加算法對(duì)硬件資源的消耗[6-7]。為此,本文主要研究一種改進(jìn)SF CORDIC算法,通過(guò)改變算法角度迭代序列、迭代角度的選擇方式,加快算法收斂速度,并將其應(yīng)用于超聲相控陣回波信號(hào)正交解調(diào),實(shí)現(xiàn)超聲回波信號(hào)幅相信息的高精度提取。
SF CORDIC算法是一種不需要計(jì)算縮放因子的CORDIC算法,圖1是SF CORDIC傳統(tǒng)算法與改進(jìn)算法原理框圖,圖1(a)為SF CORDIC經(jīng)典算法原理圖,首先將初始輸入角度壓縮到小角度φ∈[0,π/8],再通過(guò)重復(fù)迭代初始旋轉(zhuǎn)角擴(kuò)大算法收斂域,迭代后得到小角度φ正余弦輸出,通過(guò)小角度φ與初始輸入角度映射關(guān)系求出初始角度的正余弦值;圖1(b)為SF CORDIC改進(jìn)算法圖,它對(duì)SF CORDIC經(jīng)典算法中小角度的正余弦求解步驟進(jìn)行優(yōu)化,舍棄經(jīng)典算法中重復(fù)迭代初始旋轉(zhuǎn)角度步驟,采用預(yù)旋轉(zhuǎn)、最優(yōu)旋轉(zhuǎn)角度選擇方式計(jì)算小角度φ正余弦值,修改原角度序列,提高算法收斂速度。
圖1 SF CORDIC傳統(tǒng)算法與改進(jìn)算法原理框圖
1.1 改進(jìn)SF CORDIC算法求解步驟
1)角度區(qū)間壓縮
當(dāng)輸入角度為任意角度θ時(shí),可先通過(guò)三角函數(shù)特性將其映射到第一象限內(nèi),映射后角度θ0∈[0,π/2],再將第一象限均勻劃分成4個(gè)區(qū)域,圖2為角度區(qū)間劃分示意圖,其中:
圖2 第一象限區(qū)域劃分
對(duì)落在不同區(qū)域的初始角度θ0做不同預(yù)處理:
其中φ∈[0,π/8],這就建立任意輸入角度θ與小角度φ的對(duì)應(yīng)關(guān)系。
2)小角度正余弦計(jì)算
根據(jù)經(jīng)典CORDIC算法思想,小角度[sinφ,cosφ]求解問(wèn)題可歸納為將初始輸入向量[1,0]分多次旋轉(zhuǎn)至與x軸夾角為φ角度,每次旋轉(zhuǎn)角度為αi(逆時(shí)針為正),則每次旋轉(zhuǎn)后向量Vi+1[xi+1,yi+1]與旋轉(zhuǎn)之前向量Vi[xi,yi]有如下關(guān)系[1-2]:
用變量z記錄當(dāng)前向量與目標(biāo)向量的角度差,zi+1=zi-αi,初始輸入z0=φ。每次旋轉(zhuǎn)角度αi=tan-12-i,則每次迭代為[1-2]:
式中σi=±1用于控制向量旋轉(zhuǎn)方向。
若干次迭代后,zi+1→0時(shí),旋轉(zhuǎn)向量逼近目標(biāo)向量,得到φ角度正余弦輸出,迭代結(jié)果為
下面采用高基數(shù)CORDIC算法的思想,以4作為迭代角度序列的基數(shù)來(lái)實(shí)現(xiàn)小角度φ的正余弦計(jì)算。
對(duì)于足夠小角度αi,通??勺鲆韵陆朴?jì)算:
其中αi=tan-14-i,則CORDIC算法第i次迭代變?yōu)?/p>
由式(3)、式(4)可以看出,SF CORDIC算法省去經(jīng)典CORDIC算法中比例因子計(jì)算步驟。
在角度區(qū)間壓縮后,先對(duì)小角度進(jìn)行預(yù)旋轉(zhuǎn),為得到最大收斂速度,可設(shè)置一個(gè)判斷是否需要預(yù)旋轉(zhuǎn)邊界角度(如將8.8°作為判斷是否需要預(yù)旋轉(zhuǎn)邊界角度,φ≥8.8°則需要進(jìn)行預(yù)旋轉(zhuǎn),φ<8.8°則跳過(guò)預(yù)旋轉(zhuǎn)步驟),進(jìn)一步壓縮待求角度,每一次迭代開始之前,將當(dāng)前角度與角度序列中每一個(gè)角度作差,比較后選出使收斂速度最快角度,作為此次迭代旋轉(zhuǎn)角。表1給出改進(jìn)SF CORDIC算法旋轉(zhuǎn)角度序列。
表1 算法迭代序列表
3)映射到原角度
近似計(jì)算小角度φ正余弦值xout、yout后,通過(guò)第一步劃分區(qū)域時(shí)列出θ與φ之間關(guān)系可得到θ與φ正余弦輸出值之間關(guān)系,如表2所示。
表2 θ與φ正余弦輸出映射關(guān)系
1.2 改進(jìn)SF CORDIC算法收斂性分析
對(duì)于任意輸入小角度φ、φp為預(yù)旋轉(zhuǎn)之后角度,有φp=|φ-σ·α0|,其中σ=0或1,0°≤φp≤8.8°。
設(shè)第k次旋轉(zhuǎn)中αj(j=1,2,3,4,…)為最優(yōu)旋轉(zhuǎn)角度,則有Δk|φk-αj|,必存在整數(shù)列N使得:
其中i=1,2,…,n。即進(jìn)行第k+∑Ni旋轉(zhuǎn)后,當(dāng)前向量角度和目標(biāo)角度的角度差小于αj+n,則:
這表明對(duì)于任意輸入角度,當(dāng)?shù)螖?shù)足夠多時(shí),算法收斂。
1.3 算法性能
下面僅用原迭代角度序列的前5項(xiàng)作為迭代角度,通過(guò)在0°~22.5°中等間距選取10個(gè)初始輸入角度驗(yàn)證,圖3是改進(jìn)SF CORDIC算法迭代次數(shù)與收斂程度的關(guān)系圖,可以看出經(jīng)過(guò)第1次迭代預(yù)旋轉(zhuǎn)后向量和目標(biāo)向量角度差縮小到10°以內(nèi),最優(yōu)角度選擇使每次迭代都能達(dá)到最快收斂速度。對(duì)于任意輸入角度,經(jīng)過(guò)6次迭代后基本能夠收斂結(jié)束計(jì)算。
圖3 改進(jìn)SF CORDIC算法收斂曲線
圖4為改進(jìn)SF CORDIC算法模型的單級(jí)FPGA流水線結(jié)構(gòu)圖。為提高小角度正余弦的計(jì)算精度、運(yùn)算速度,下面采用16位2進(jìn)制數(shù)表示輸入角度,將浮點(diǎn)數(shù)部分定點(diǎn)化,再通過(guò)加減、移位實(shí)現(xiàn)小角度正余弦值快速精確求解,只需要通過(guò)兩個(gè)乘法器即可實(shí)現(xiàn)由小角度到原角度正余弦值映射求解。
在QuartusII13.0軟件上進(jìn)行仿真,選用Cyclone IV系列的EP4CE15F17A7芯片,測(cè)試時(shí)鐘頻率為100MHz。表3是改進(jìn)算法對(duì)系統(tǒng)資源消耗與傳統(tǒng)SF CORDIC算法對(duì)比表??梢钥闯觯啾扔趥鹘y(tǒng)SF CORDIC算法消耗768個(gè)全加器和533個(gè)邏輯單元[4],改進(jìn)算法減少29%全加器、61%寄存器資源消耗。
圖4 改進(jìn)SF CORDIC算法單級(jí)流水線結(jié)構(gòu)
表3 算法硬件資源消耗情況
在Modelsim10.0c軟件上進(jìn)一步測(cè)試算法精度,在0°~90°內(nèi)等間距取10個(gè)角度作為輸入角度測(cè)試改進(jìn)算法下正余弦輸出值與真值比較,表4是算法計(jì)算正弦值與實(shí)際值的絕對(duì)誤差表。
表4 算法精度測(cè)試表
通過(guò)Matlab軟件對(duì)算法誤差進(jìn)行測(cè)試,在[0,2π]內(nèi)對(duì)改進(jìn)SF CORDIC算法產(chǎn)生正弦曲線均勻采集100個(gè)采樣點(diǎn),與標(biāo)準(zhǔn)正弦曲線比較。圖5是測(cè)試得到算法輸出結(jié)果絕對(duì)誤差圖,可以看出,在一個(gè)完整周期內(nèi)輸出結(jié)果的最大絕對(duì)誤差不超過(guò)8×10-3,可滿足實(shí)際應(yīng)用要求。
圖5 改進(jìn)SF CORDIC算法絕對(duì)誤差
正交解調(diào)是在超聲相控陣檢測(cè)領(lǐng)域中一項(xiàng)重要技術(shù),通過(guò)改進(jìn)SF CORDIC算法產(chǎn)生兩路正交正余弦信號(hào),可實(shí)現(xiàn)對(duì)超聲回波信號(hào)幅值相位信息的高精度提取。
2.1 數(shù)字正交解調(diào)原理
超聲相控陣回波信號(hào)數(shù)學(xué)模型為[6]
式中:A——電路系統(tǒng)中存在的直流分量;
f(t)——被測(cè)信號(hào)幅值;
cosω0t——載波信號(hào),ω0=2πf,f為載波頻率(換能器中心頻點(diǎn));
φ——傳輸過(guò)程中產(chǎn)生的隨機(jī)相位偏差。
圖6 正交解調(diào)原理框圖
圖6是正交解調(diào)原理圖,將經(jīng)過(guò)A/D采樣后信號(hào)s(nTs)與數(shù)控振蕩器NCO產(chǎn)生兩路同頻正交正余弦信號(hào)相乘后得到I、Q兩路正交信號(hào),即:
兩路信號(hào)經(jīng)過(guò)低通濾波器后,可得對(duì)應(yīng)I路低頻分量ILP、Q路低頻分量QLP,有:
再對(duì)IQR經(jīng)過(guò)隔直處理去掉直流量A,得到所需包絡(luò)信號(hào)f(nTs)。
2.2 正交解調(diào)效果仿真
根據(jù)超聲回波物理特性,超聲換能器的脈沖響應(yīng)可模擬成高斯信號(hào)[10]。圖7為超聲回波信號(hào)模擬圖,圖7(a)為通過(guò)Matlab軟件模擬的中心頻率為5 MHz、幅值系數(shù)為0.8、初相位1.8 rad超聲回波高斯信號(hào)模型,橫縱坐標(biāo)分別是信號(hào)到達(dá)時(shí)間、幅值;圖7(b)為全波超聲回波信號(hào)模型,用改進(jìn)SF CORDIC算法產(chǎn)生同頻率正余弦信號(hào)分別與超聲回波信號(hào)相乘得到兩路正交信號(hào),再進(jìn)行低通濾波、求兩路信號(hào)平方和的平方根,得到超聲回波信號(hào)的包絡(luò)圖;圖8為超聲回波正交解調(diào)仿真結(jié)果圖,其中黑線為原始超聲回波全波信號(hào),紅線為經(jīng)過(guò)正交解調(diào)后得到的信號(hào)包絡(luò)線,可以看出信號(hào)包絡(luò)線與原始信號(hào)契合程度較高,改進(jìn)SF CORDIC算法應(yīng)用于超聲回波信號(hào)正交解調(diào)取得較好解調(diào)效果。
圖7 超聲回波信號(hào)模擬圖
圖8 正交解調(diào)仿真結(jié)果圖
1)經(jīng)典SF CORDIC算法雖免去比例因子計(jì)算,但使算法收斂必須重復(fù)迭初始旋轉(zhuǎn)角度,使算法迭代次數(shù)增多,硬件資源消耗嚴(yán)重,本文所提出改進(jìn)SF CORDIC算法,通過(guò)預(yù)旋轉(zhuǎn)、最優(yōu)角度選擇和改變?cè)嵌刃蛄校蟠笤黾铀惴ㄊ諗克俣?,在保持較高精度同時(shí),降低SF CORDIC經(jīng)典算法29%全加器、61%寄存器消耗量。
2)將改進(jìn)SF CORDIC算法應(yīng)用于超聲回波信號(hào)正交解調(diào)器,產(chǎn)生同頻正交正余弦信號(hào),通過(guò)正交檢波法對(duì)超聲回波調(diào)制信號(hào)進(jìn)行幅相信息提取,獲得令人滿意的仿真結(jié)果,表明改進(jìn)SF CORDIC算法具有重要實(shí)際應(yīng)用價(jià)值。
[1]VOLDER J E.The CORDIC trigonometric computing technique[J].Electronic Computers Ire Transactions,1959,8(3):330-334.
[2]LAKSHMI B,DHAR A S.VLSI architecture for parallel radix-4 CORDIC[J].Microprocessors&Microsystems,2013,37(1):79-86.
[3]LIN R B,LIU G X,TANG W M.FPGA implementation of ultrasonic s-scan coordinate conversion based on radix-4 CORDIC algorithm [J].IACSIT International Journal of Engineering and Technology,2015,7(3):87-95.
[4]ABCHE A B,MAALOUF A,AYOUBI R,et al.An FPGA implementation of a high resolution phase shift beamformer[C]∥IEEE International Conference on Signal Processing and Communi-cations,2007:1319-1322.
[5]林若波,劉桂雄,唐文明.應(yīng)用補(bǔ)碼的通項(xiàng)式正余弦CORDIC算法FPGA實(shí)現(xiàn)[J].中國(guó)測(cè)試,2014,40(4):102-106.
[6]DONG C,HE C,XING S,et al.Implementation of singleprecision floating-point trigonometric functions with small area[C]∥International Conference on Control Engineering and Communi-cation Technology.IEEE,2012:589-592.
[7]CHIH J C,CHEN K L,CHEN S G.A CORDIC processor with efficient table-lookup schemes for rotations and on-line scale factor compensations[C]∥International Symposium on Circuits and Systems,2005(4):3315-3318.
[8]陳旭文,劉桂雄,唐文明.擴(kuò)展收斂域任意對(duì)數(shù)CORDIC算法與FPGA實(shí)現(xiàn)[J].中國(guó)測(cè)試,2015,41(7):108-111.
[9]GARRIDO M,K?LLSTR?M P,KUMM M,et al.CORDIC II:A New Improved CORDIC Algorithm[J].Circuits&Systems II Express Briefs IEEE Transactions,2016,63(2):186-190.
[10]劉桂雄,唐文明,譚大基.基于多級(jí)半帶濾波器的超聲相控陣聚焦延時(shí)[J].光學(xué)精密工程,2014(6):1571-1576.
(編輯:劉楊)
Solution for sine-cosine functions based on proposed scale-free CORDIC algorithm and applications
SONG Dingkun,LIU Guixiong,TANG Wenming
(School of Mechanical and Automotive Engineering,South China University of Technology,Guangzhou 510641,China)
In order to reduce the iterations of the conventional SF CORDIC algorithm in computing sine and cosine functions,an improved SF CORDIC algorithm was proposed in this paper.The proposed algorithm changed the original sequence and selection rules of iterating angles to enhanced the convergence rate,and was further applied to the quadrature demodulator of ultrasonic phased array to test the application value of the proposed algorithm.Simulation results show the proposed SF CORDIC algorithm reduced 29%of the full-adders and 61% of the registers consumption compared to the conventional SF CORDIC algorithm and is worth promotion.
SF CORDIC;sine cosine functions;iterating angle;quadrature demodulation
A
:1674-5124(2016)12-0100-05
10.11857/j.issn.1674-5124.2016.12.021
2016-05-22;
:2016-06-11
國(guó)家重大科學(xué)儀器設(shè)備開發(fā)專項(xiàng)(2013YQ230575)廣州市科技計(jì)劃項(xiàng)目(201509010008)
宋定昆(1994-),男,江西吉安市人,碩士研究生,專業(yè)方向?yàn)闊o(wú)損檢測(cè)、信號(hào)處理。