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

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

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

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

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

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

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

7、值作為相角值,如果沒(méi)有,則將第8次迭代結(jié)果作為最終結(jié)果輸出。輸出時(shí)產(chǎn)生一個(gè)數(shù)據(jù)輸出使能,一個(gè)時(shí)鐘周期寬度,告知上層調(diào)用模塊,可以讀取本模塊計(jì)算結(jié)果。在迭代運(yùn)算過(guò)程中,為方便計(jì)算,規(guī)定I/O口及模塊內(nèi)部的16bit數(shù)據(jù)在表征相角時(shí)涵蓋范圍是-180°+180°,用16bit中的低15bit表示0°180°,最高位表示符號(hào)位。這樣,可以得出相應(yīng)的一些關(guān)鍵角度所對(duì)應(yīng)的數(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ù)值對(duì)應(yīng)實(shí)際計(jì)算時(shí)即按照表1中的角度進(jìn)行調(diào)制,此外,因?yàn)閍rctan函數(shù)本身定義域在-/2/2,為方便計(jì)算,可將二、三象限的向量分別映射到一、四象限進(jìn)行計(jì)算,具體方法是檢測(cè)輸入的實(shí)部、虛部值的符號(hào)來(lái)判斷象限,若在一、四象限,則可直接賦值計(jì)算,若在二象限,則將坐標(biāo)軸順時(shí)針轉(zhuǎn)換/2,即將二象限角轉(zhuǎn)換至一象限,同樣道理,可轉(zhuǎn)換三象限角至四象限。如圖3所示。圖3.坐標(biāo)軸轉(zhuǎn)換圖3所示為由原坐標(biāo)順時(shí)針旋轉(zhuǎn)/2后的情形,此時(shí),原來(lái)要求的減小了/2,現(xiàn)在只需求,將加/2即是所要求的。在程序中,不需要像敘述的這樣操作,只需計(jì)算的值,只是設(shè)置初始相角即可,如此,最終所得的角度值即為的準(zhǔn)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論