FPGA環(huán)境下基于cordic運算實現(xiàn)反正切運算(VHDL)_第1頁
FPGA環(huán)境下基于cordic運算實現(xiàn)反正切運算(VHDL)_第2頁
FPGA環(huán)境下基于cordic運算實現(xiàn)反正切運算(VHDL)_第3頁
FPGA環(huán)境下基于cordic運算實現(xiàn)反正切運算(VHDL)_第4頁
FPGA環(huán)境下基于cordic運算實現(xiàn)反正切運算(VHDL)_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、CORDIC算法實現(xiàn)反正切運算算法1. 前言CORDIC算法包括圓周系統(tǒng)、線性系統(tǒng)、雙曲系統(tǒng)三種旋轉(zhuǎn)系統(tǒng),每種系統(tǒng)又分別具有旋轉(zhuǎn)模式和向量模式兩種運算模式。其中,運用最為廣泛的時圓周系統(tǒng)的兩種運算模式,本文也立足與項目應用,僅闡述圓周系統(tǒng),其余系統(tǒng)可參看相關資料。2. 算法分析要充分理解圓周系統(tǒng),我們需先引入其旋轉(zhuǎn)模式的概念,再以旋轉(zhuǎn)模式引申到向量的概念中去。CORDIC算法的旋轉(zhuǎn)模式運算的實質(zhì)就是執(zhí)行一個平面內(nèi)旋轉(zhuǎn),如圖1所示,就是從一個坐標點轉(zhuǎn)換到另一個坐標點的過程.圖1.平面旋轉(zhuǎn)模式運算示意圖如圖1中所示,原向量的坐標表達式為 (1)其中,r為向量的長度,由于本文的目的是討論角度的計算,

2、所以,都假定向量旋轉(zhuǎn)過程中的長度是固定不變的,這樣,我們可以專注于角度的變化。所以,目標向量的坐標表達式為 (2)即 用向量統(tǒng)一表示為 (3)公式1表示由向量到向量的旋轉(zhuǎn)過程,即轉(zhuǎn)過的相角為,可以通過迭代運算分多步執(zhí)行角度旋轉(zhuǎn),每一步完成旋轉(zhuǎn)的一部分.單步表述為: (4)其中表示下一步迭代需要執(zhí)行的運算。根據(jù)公式2,必須確切知道每單步要旋轉(zhuǎn)的角度,具體計算方法闡述如下:為方便表示,并簡化方程中的參量,方程(4)提取COS后變成 (5)規(guī)定每一步所調(diào)整的角度為 (6)即單次調(diào)整最大為當n=0時調(diào)整,其后每次調(diào)整值逐步減小,如此多次調(diào)整后最終調(diào)整角度值即為目標值,向量旋轉(zhuǎn)完畢。即,其中為角度調(diào)整的

3、方向,取值為-1,+1,每次的取值由上次調(diào)整完后的角度剩余量的符號決定,將仍舊需要調(diào)整的角度定義為。 (7)于是 (8)<0表示調(diào)整過度,需要回調(diào),所以=-1,下一步要逆時針旋轉(zhuǎn),反之,=1,繼續(xù)按照逆時針調(diào)整。綜上所述,結(jié)合(5)、(6)式和(7)式以及旋轉(zhuǎn)模式下旋轉(zhuǎn)方向問題,(5)式在工程實現(xiàn)時應為 (9)公式(9)是可以工程實現(xiàn)的迭代公式,試想,通過n次迭代運算后,向量由原來位置經(jīng)過了n次不同角度的旋轉(zhuǎn),形成的新位置為 (10)由上式可以看出,對于給定次數(shù)的向量旋轉(zhuǎn)(n為有限次),所有的cos乘積趨近于固定值,為 (11)于是,令 (12)此K值與具體的迭代次數(shù)有關,對于所有的初始

4、向量(n=0)和旋轉(zhuǎn)角度而言,K時一個常數(shù)。而當?shù)螖?shù)N趨向于無窮大時,K值收斂且K0.67253。通常定義K叫做聚焦常數(shù),其倒數(shù)P1.64676,通常稱作旋轉(zhuǎn)增益,于是旋轉(zhuǎn)向量又寫為 (13)在旋轉(zhuǎn)模式下,經(jīng)N次迭代運算后,已趨近于0,即=1,CORDIC公式的輸出為, (14)公式(14)即為工程實現(xiàn)中的指導公式。在此種模式下,可以根據(jù)上式很方便的計算出一個給定角度的正弦、余弦和正切值。但在數(shù)字計算中,使用向量模式求取一個向量的角度更容易,我們此次的工程中需要求取的就是反正切的角度,這樣使用向量模式非常方便。向量模式的計算方法和旋轉(zhuǎn)模式很相似,區(qū)別在于向量模式的輸入只有一組坐標值,求取此

5、向量的角度,只需要將此向量旋轉(zhuǎn),使向量的Y坐標趨近于0,即,使向量旋轉(zhuǎn)到與實軸重合,所轉(zhuǎn)過的角度即為此向量的角度。如圖2所示圖2.向量模式下旋轉(zhuǎn)求角度示意圖并且,在計算過程中,的取值需取決于調(diào)整過程中的符號,因為在向量模式下要調(diào)整的目標位置為,故可根據(jù)的正負符號判斷向量轉(zhuǎn)動的角度是否已經(jīng)超過目標值。當?shù)\算N次后,=1,實現(xiàn)指導公式變?yōu)椋?, (15)注意,此時的取值與旋轉(zhuǎn)模式下的區(qū)別。其原則仍是+1表示要正向(逆時針)調(diào)整,-1表示要逆向(順時針)調(diào)整。將Z值初始化為,經(jīng)迭代運算,當運算持續(xù)到Y(jié)=0時,此時 (16),此即為我們需要的向量的反正切值,即為向量的角度。3. 代碼實現(xiàn)基于以上算

6、法原理,可實現(xiàn)計算的精確值,按照式(15),將Z賦初始值,由上一層模塊產(chǎn)生此反正切計算模塊的數(shù)據(jù)錄入使能load_dat_en,使能信號一個時鐘周期寬度,在此使能下錄入向量的坐標值,在芯片化項目中,即,把IK、QK分別看做平面坐標下向量的實部與虛部,進而計算此坐標的相角。IK、QK值與load_dat_en一起有效,并隨之產(chǎn)生本模塊內(nèi)部的運算時序計數(shù)器,根據(jù)運算精度要求,目前需要8次迭代運算即可逼近目標值,而不是一定要計算到,所以此時序計數(shù)器安排為110循環(huán),在相應位置執(zhí)行相應操作,每個時鐘周期都計算當前X、Y、Z的值,并在8此迭代都計算完畢后檢測所有步驟的Y值是否為0,有為0的即輸出對應的Z

7、值作為相角值,如果沒有,則將第8次迭代結(jié)果作為最終結(jié)果輸出。輸出時產(chǎn)生一個數(shù)據(jù)輸出使能,一個時鐘周期寬度,告知上層調(diào)用模塊,可以讀取本模塊計算結(jié)果。在迭代運算過程中,為方便計算,規(guī)定I/O口及模塊內(nèi)部的16bit數(shù)據(jù)在表征相角時涵蓋范圍是-180°+180°,用16bit中的低15bit表示0°180°,最高位表示符號位。這樣,可以得出相應的一些關鍵角度所對應的數(shù)值。角度數(shù)值90°X”4000”-90°X”C000”45°X”2000”26.565°X”12E4”14.036°X”09FB”7.125&#

8、176;X”0511”3.576°X”028B”1.79°X”0146”0.895°X”00A3”0.4476°X”0051”表1.角度與數(shù)值對應實際計算時即按照表1中的角度進行調(diào)制,此外,因為arctan函數(shù)本身定義域在-/2/2,為方便計算,可將二、三象限的向量分別映射到一、四象限進行計算,具體方法是檢測輸入的實部、虛部值的符號來判斷象限,若在一、四象限,則可直接賦值計算,若在二象限,則將坐標軸順時針轉(zhuǎn)換/2,即將二象限角轉(zhuǎn)換至一象限,同樣道理,可轉(zhuǎn)換三象限角至四象限。如圖3所示。圖3.坐標軸轉(zhuǎn)換圖3所示為由原坐標順時針旋轉(zhuǎn)/2后的情形,此時,原來要求的減小了/2,現(xiàn)在只需求,將加/2即是所要求的。在程序中,不需要像敘述的這樣操作,只需計算的值,只是設置初始相角即可,如此,最終所得的角度值即為的準

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論