版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、基于 CORDIC 算法實現(xiàn)直角坐標與極坐標相互轉(zhuǎn)換的 VHDL 函數(shù)的應用李穎弢,劉肅*,傅麗萍 蘭州大學物理科學與技術(shù)學院,甘肅蘭州(730000) E-mail:li_yt06lzu 摘 要:本文依據(jù) CORDIC 算法,用 VHDL 語言程序代碼定義了一個函數(shù)。此 Function 包 括兩種不同模式,分別稱作坐標模式,向量模式。調(diào)用此 Function ,通過對不同模式的選 擇,可以實現(xiàn)任意象限內(nèi)直角坐標與極坐標之間的相互轉(zhuǎn)換。經(jīng)驗證,用本函數(shù)計算仿真 出的結(jié)果與理論值相比誤差小于 10-4。使得設(shè)計出來的 Function 能夠在相關(guān)的運算與代碼 中被直接調(diào)用。在混頻器中,用設(shè)計的
2、 CORDIC 模塊代替本地振蕩器,只需要改變輸入就 可以得到頻率更加穩(wěn)定的所需信號,能夠有效防止振蕩器的實際振蕩頻率偏離標稱頻率。 關(guān)鍵詞:CORDIC;VHDL;Function;坐標模式;向量模式中圖分類號:TN4文獻標識碼: A1. 引言CORDICCoordinate Rotation Digital Computer算法即坐標旋轉(zhuǎn)數(shù)字計算方法,是一 種用于計算一些常用的根本運算函數(shù)和算術(shù)操作的循環(huán)迭代算法,最初由J.E.Volder1于1959年提出。主要用于計算乘除,平方根,三角函數(shù),雙曲線,指數(shù),對數(shù)以及向量旋轉(zhuǎn)。其 根本思想是用一系列與運算基數(shù)相關(guān)的角度的不斷偏轉(zhuǎn)從而逼近所需
3、要旋轉(zhuǎn)的角度。它是 一種數(shù)值性計算逼近的方法,由于具有結(jié)構(gòu)簡單和整個運算只有加法與移位的優(yōu)點,使得 一些復雜的運算在硬件上可以很好地實現(xiàn)。1971 年,J.S.Walter2 將圓周旋轉(zhuǎn)rotation mode、雙曲旋轉(zhuǎn)hyperbolic mode以及線性旋轉(zhuǎn)linear mode統(tǒng)一到一個CORDIC迭 代方程當中,從而提出了一種統(tǒng)一的CORDIC算法形式,可以用統(tǒng)一的結(jié)構(gòu)實現(xiàn)多種根本 運算,更加滿足了硬件模塊化、規(guī)那么化的要求,使得所有能用CORDIC算法實現(xiàn)的運算都 能用同一個硬件功能單元來完成,使之展示出更為廣泛的應用前景。目前CORDIC算法已 經(jīng)被成功的應用于DSP,信號處理,
4、航空航天,機器人技術(shù),醫(yī)療儀器,濾波技術(shù),F(xiàn)FT變 換等領(lǐng)域 3-6。本文中,基于 CORDIC 算法,實現(xiàn)了直角坐標與極坐標相互轉(zhuǎn)換的 VHDL 函數(shù)。通過對 不同模式的選擇,一方面可應用于調(diào)制電路以及鎖相環(huán)組成的調(diào)頻電路中,用 CORDIC 模 塊來產(chǎn)生滿足載荷信息要求的載波信號,另外在混頻器中,為了防止振蕩器的實際振蕩頻 率偏離標稱頻率,用 CORDIC 模塊來代替本地振蕩器,能夠得到頻率更加穩(wěn)定的信號。2. Function 原理以及其 VHDL 代碼 基于 CORDIC 算法的 function 原理2.1.1 坐標模式 坐標模式可以實現(xiàn)極坐標到直角坐標的轉(zhuǎn)換,給定極坐標下向量的大小
5、以及角度 Z,計算向量在直角坐標中所對應的 X,Y 值。依據(jù) CORDIC 算法,首先將 Y0 初始化為 0,Z0初始化為需要旋轉(zhuǎn)的角度值,可以通過旋轉(zhuǎn)一系列根本角度 i,反復迭代,逐漸逼近 Z0 來 完成。每一次的迭代公式如下:Xi+1 = XiYi×di×taniYi+1 = Yi + Xi×di×taniZi+1 = Zi - di×ii =0,1,2,3n-1,n 是迭代次數(shù),也就是旋轉(zhuǎn)的級數(shù);di = -1 if Zi 01 if Zi 02.1.2 向量模式 向量模式可以實現(xiàn)直角坐標向極坐標的轉(zhuǎn)換,通過給定直角坐標中對應的X ,Y,
6、可得到X ,Y在極坐標下對應的向量大小 Xo 以及角度 Z。首先將角度值初始化為 0,經(jīng)過反復的迭代,逐漸逼近 X 軸來完成。每一次的迭代公式如下:Xi+1 = XiYi×di×tani Yi+1 = Yi + Xi×di×tani Zi+1 = Zi - di×ii =0,1,2,3n-1,n 是迭代次數(shù);di = 1 if Yi 0-1 if Yi 0為了方便硬件的實現(xiàn),在任何一種計算模式下我們令 i 滿足:tani = 2-i,即 i = arctan(2-i)。這樣迭代中的乘法運算就可以用更加簡單快速的移位運算代替。在理論的計算過程中
7、X 和 Y 在每次迭代時都應乘上 cosi,這樣在迭代最后就會產(chǎn)生一個模校正因子 K,對于字長 一定的運算,它是一個常數(shù)。在我們設(shè)計的 function 中,X 和 Y 都取 16bit 字長,迭代最后 形成的模校正因子 K0.6072537,8。由于在 function 中的輸入輸出都取 signed 型數(shù)據(jù),為 了防止在運算中增加校正運算,方便硬件的實現(xiàn),在 function 中沒有考慮此常數(shù)。因此, 在調(diào)用 function 計算出來的結(jié)果與理論值相比時應乘上該校正因子 K。 實現(xiàn) function 的 VHDL 代碼在我們的函數(shù)中,為了方便硬件的實現(xiàn)以及運算中迭代本身的限制,在坐標模式
8、下極坐標到直角坐標的轉(zhuǎn)換,最大旋轉(zhuǎn)角度為Zmax99.91104。為了能夠?qū)崿F(xiàn)角度 在-180o到180o之間的運算,需要對輸入的角度進行預處理,使其落在第一或者第四象限 內(nèi),再根據(jù)所處的象限進行符號的判斷。而在向量模式下,為了能夠?qū)崿F(xiàn)任意象限內(nèi)直角坐標到極坐標的轉(zhuǎn)換,同樣需要對輸入的X,Y進行預處理,首先使其落在第一或者第四象限 內(nèi)進行運算,最后根據(jù)所處象限的不同對極坐標下角度進行相應的符號轉(zhuǎn)換。為了得到更 高的精度,我們在用VHDL語言所描述的function中,取迭代次數(shù)為16次,輸入的X,Y采用16bit的signed型數(shù)據(jù),輸入的角度采用22bit的signed型,為了不失真,提高計
9、算的精度, 在運算過程中首先將所有的輸入都擴充為22位的數(shù)。對于輸出的X,Y以及角度都為16bit的signed型數(shù)據(jù),其最高位均代表符號位。對輸入而言,-180o180o范圍內(nèi)的角度,我們用22bit 的signed型的最大正數(shù)代表180o,絕對值最大的負數(shù)代表-180o,即:180o =01_1111_1111_1111_1111_1111 (即十進制數(shù) 2097151)-180o=10_0000_0000_0000_0000_0000 (即十進制數(shù)-2097152)。 而對于輸出的角度而言,那么是用 16bit 的 signed 型的最大正數(shù)來代表 180o,絕對值最大的16bit 的
10、signed 型的負數(shù)來代表-180o,即:0111_1111_1111_1111 = 180o (即十進制數(shù) 32767)1000_0000_0000_0000 =-180o (即十進制數(shù)-32768)3. 結(jié)果與理論值的比擬以及函數(shù)的應用 結(jié)果分析與比擬用 modelsim 仿真工具,以及 specman 驗證工具,對我們設(shè)計的 function 進行了驗 證。以下是在不同模式下從 function 得出的結(jié)果與理論值的比擬結(jié)果。3.1.1 向量模式下結(jié)果的比擬在這種模式下用 specman 工具隨機產(chǎn)生一些 X,Y. Function 計算出來的結(jié)果與理論值的 比擬結(jié)果表 1.所示:表
11、1. 向量模式下 Function 計算結(jié)果與理論值的比擬輸 入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 坐標模式下 (極坐標到直角坐標的轉(zhuǎn)換)結(jié)果的比擬在這種模式下首先取向量值的大小為定值 1000,通過 specman 驗證工具選取不同的角 度值,對結(jié)果進行了驗證。Funct
14、ion 計算出來的結(jié)果與理論值的比擬結(jié)果如表 2. 所示:表 2. 坐標模式下 Function 計算結(jié)果與理論值的比擬輸入角 度 ZFunction 結(jié)果X×0.607253Function結(jié)果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 分別是余弦與正 弦函數(shù)曲線,這與理論情況下極坐標向直角坐標轉(zhuǎn)換的情況完全吻合。 CORDIC 模塊的應用所設(shè)計的函數(shù)主要可以應用的以下方面。第一,可以作為調(diào)制電路中的載波信號。通 過對輸入的控制,可以產(chǎn)生不同工作頻率的正余弦波,因此在信號的調(diào)制與解調(diào)過程中, 可以直接用 CORDIC 模塊來產(chǎn)生滿足載荷信息要求的載波信號。第二,在鎖相環(huán)組成的調(diào) 頻電路中的應用。通過控制 CORDIC 模塊的輸入可以產(chǎn)生任意所需頻率的信號作為載波信號。使得鎖相環(huán)中壓控振蕩器的中心頻率 等于載波信號的 頻率 ,當調(diào)制信號作用于壓控振蕩器時,鎖相環(huán)輸出中心頻率
18、為 的調(diào)頻信號。第三,在混頻器中的應用,圖 3 為一 般混頻器的示意圖,已調(diào)信號調(diào)幅波或調(diào)頻波,即輸入信號,與本地振蕩器的輸出信號 經(jīng)非線性電路處理后,獲得它們的和頻,差頻和各高次諧波信號;再通過低通濾波器濾掉 和頻和各高次諧波局部,從而可以得到差頻信號。實際過程中在接收機中,總是要從許多 不同頻率的信號和干擾中選擇出來要接收的信號,并將其高倍數(shù)放大,這在實現(xiàn)起來是非 常困難的,為了克服上述困難,可以通過調(diào)整本地振蕩器的振蕩頻率,使之保持與不同的 輸入信號具有相同差頻頻率,這樣放大器所放大的就是頻率固定的信號。最后再經(jīng)過解調(diào) 得到希望得到的信號 。由于受到環(huán)境條件的變化,構(gòu)成振蕩器的元器件內(nèi)部
19、噪聲以及機械 震動,晶體管或其它器件的輸入,輸出阻抗的變化,電路元件間分布電容的變化,元件的 電抗性能的穩(wěn)定性,以及電磁干擾等因素的影響,振蕩器的實際振蕩頻率會偏離標稱頻 率。為了更加方便的得到任意頻率穩(wěn)定的信號,可以用 CORDIC 模塊代替本地振蕩器,這 樣只需要改變輸入就可以得到頻率更加穩(wěn)定的所需信號。圖 3 混頻器電路示意圖 誤差分析由 CORDIC 算法的根本原理可知,調(diào)用 function 計算所能到達的精度與所選取的旋轉(zhuǎn) 級數(shù),操作數(shù)的位寬以及數(shù)據(jù)類型有關(guān)。 由 的比擬結(jié)果發(fā)現(xiàn),F(xiàn)unction 結(jié)果與理論值 相比,在不同模式下,相對誤差都小于 10-4。造成這種微小誤差有以下原
20、因。一是角度近 似誤差,這個誤差在迭代逼近的過程中是不可防止的,另一個主要原因是在我們所設(shè)計的 函數(shù)中,輸入操作數(shù)都采用的是 signed 型數(shù)據(jù)有符號整數(shù),因此調(diào)用此函數(shù)計算出來的 結(jié)果只是取了整數(shù)局部,與理論值相比忽略了其小數(shù)位。4. 結(jié)論通過對所設(shè)計的 function 進行分析與驗證,所得結(jié)果與理論值完全匹配。在不同的工作 模式下相對誤差僅有萬分之一,造成這種微小誤差主要是由于操作數(shù)采用的是 16 位的 signed 型數(shù)據(jù),計算出來的結(jié)果忽略了其小數(shù)位。但在實際的應用中,對于一個 16bit 字長 的數(shù)來說,其小數(shù)位相對于整數(shù)位來說完全可以忽略。因此所完成設(shè)計的 function 在
21、實際 的應用與運算過程中可直接調(diào)用。其主要可以應用在鎖相環(huán)組成的調(diào)頻電路中以及混頻器 中。在混頻器中,為了得到頻率穩(wěn)定的信號,防止受其他因素影響而引起的振蕩器的實際振蕩頻率偏離標稱頻率,可以用設(shè)計的 CORDIC 模塊代替本地振蕩器,只需要改變輸入就可以得到頻率更加穩(wěn)定的所需信號。參考文獻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. 系統(tǒng)工程與電子技, 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設(shè)計中的應用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 楊 宇,毛志剛,來逢昌. 字長可重構(gòu)流水線CORDIC設(shè)計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算法的三角函數(shù)發(fā)生器J. 系統(tǒng)工程與電子技術(shù), 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實現(xiàn)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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版房地產(chǎn)尾款支付及產(chǎn)權(quán)過戶協(xié)議3篇
- 二零二五年車輛抵押維修保養(yǎng)合同3篇
- 二零二五版貿(mào)促會棉花期貨交易專區(qū)棉花現(xiàn)貨買賣合同3篇
- 二零二五年度企業(yè)法律風險防控培訓合同3篇
- 主體架構(gòu)工程分包合同(2024年度)一
- 專屬分店管理承包協(xié)議模板版A版
- 二零二五年度多人合伙經(jīng)營酒吧合作協(xié)議范本3篇
- 二零二五年度礦山車輛運輸安全責任合同范本3篇
- 2025年度勞動者工傷賠償協(xié)議標準版4篇
- 專屬會員卡轉(zhuǎn)讓條款合同版B版
- 《健康體檢知識》課件
- 生產(chǎn)計劃主管述職報告
- 名表買賣合同協(xié)議書
- JTG-T-F20-2015公路路面基層施工技術(shù)細則
- 2024年遼寧石化職業(yè)技術(shù)學院單招職業(yè)適應性測試題庫附答案
- 中西方校服文化差異研究
- 《子宮肉瘤》課件
- 《準媽媽衣食住行》課件
- 給男友的道歉信10000字(十二篇)
- 客人在酒店受傷免責承諾書范本
- 練字本方格模板
評論
0/150
提交評論