- 相關推薦
基于DSP TMS320LF2407A的浮點數開方算法研究探析
畢業論文
摘 要: 研究DSP TMS320LF2407A浮點數開平方的理論方法,采用改進Newton下山算法為Newton迭代法提供了更為精確的初值,從而使得收斂速度加快,精度更高。在DSP TMS320LF2407A上編寫了1套算法,計算結果與理論分析基本吻合。該算法思路新穎,精度高,速度快,可移植到其它浮點數運算的單片機上。
關鍵詞: 浮點數開平方;改進Newton下山算法;TMS320LF2407A;
A Research of Float Square Root Algorithm Based on DSP TMS320LF2407A
WANG Zhen1, CHENG Wen-feng1, ZHOU Wen-hui2
(1。Electric Power College, South China University of Technology, Guangzhou, 510640,China;
2。 PLA 76321army, Guangzhou, 5110560,China)
Abstract: It presents a new theoretical method of float square root algorithm based on TMS320LF2407A。 Using the advanced Newton descent method, the more precise starting value is given to improve Newton iteration of extracting square root, which would be faster in convergent speed and more accurate。 The arithmetic on TMS320LF2407A was programmed and the result of experiment basically accords with the theory。 The conclusion shows its features of simplicity, high precision and rapid speed。 This method may be used in other float calculation of single chipped-microprocessor。
Keywords: float square root; advanced Newton descent method; TMS320LF2407A
0引言
在較為復雜的單片機、數字信號處理器(DSP)系統中,為擴大取值范圍,實現復雜的計算和控制,1般都要涉及浮點數的運算。而在1般單片機、部分定點數字信號處理器(DSP)中,沒有浮點數運算指令,只能利用多位定點2進制數實現高精度浮點數運算。在單片機、DSP進行開方運算時,實現方法有多種,如牛頓迭代法、查表法、直線逼近法(線性化方法)和減奇數法等。對于查表法,當被開方數變化范圍較大時,提高運算精度和減少內存占用量是相矛盾的。直線逼近法需要存貯各段線性逼近函數的斜率和截距值,當要求的運算精度增加時,線性段的劃分越密,運算處理時間就越長。減奇數法的缺點是運算時間與被開方數的大小有關,被開方數很大時,運算執行時間將很長。牛頓迭代法是1種1致收斂的開平方算法,若初始值選取得合適,則只需很少的次數甚至是1次迭代運算,即可得到滿足給定精度要求的運算結果,其唯1的缺點就是若初始值選取不合適的話,會影響收斂速度,甚至會導致算法發散。針對牛頓迭代法的初始值選取問題,本文用改進Newton下山算法予以解決。該方法充分利用TI公司TMS320LF2407A的強大功能,可以很方便的實現浮點數的開方。TMS320LF2407A具有較強的控制能力,但無浮點數邏輯結構,如果開發出良好的浮點數算法程序,它將能實現更強大的功能。
1。 TMS320LF2407A基本特點概述[1]
TMS320LF2407A是TI公司推出的1款定點DSP控制器,它采用了高性能靜態CMOS技術,使得供電電壓降為3.3V,減小了控制器的功耗。其40MIPS的執行速度使得指令周期縮短到25ns(40MHz),從而提高了控制器的實時控制能力。它集成了32k字的閃存(可加密)、2.5k的RAM和500ns轉換時間的A/D轉換器,片上事件管理器提供了可以滿足各種電機的PWM接口和I/O功能。此外,它還提供了適用于工業控制領域的1些特殊功能,如看門狗電路、SPI、SCI和CAN控制器等,從而可被廣泛應用于工業控制領域。
2。 2進制浮點數表示方法[2]
浮點數由階碼和尾數組成。IEEE的浮點數標準規定了單精度(4 b)、雙精度(8 b)和擴展精度(10 b)三種浮點數的格式。最常用的是單精度浮點數,如圖1所示。但這種格式的階碼不在同1個字節單元內,不易尋址,從而會影響運算速度。通常在DSP上采用的是1種變形格式的浮點數[3],前三個字節表示尾數,后1個字節表示階碼,尾數小數點在高字節左端,且最高位表示符號位,當尾數為正時,最高位為“0”(對規格化數隱含了最高位的“1”),如圖2所示。
圖1 常用單精度浮點數
圖2 變形格式的浮點數
浮點數均按規格化方式存放,即尾數的最高位總是1,這樣,對于尾數為M的規格化浮點數有 。
3。 改進Newton下山算法求解開方問題的算法原理
利用改進Newton下山算法求解平方根問題,如求 。令 ,則 ,得方程: 、
其正根 即 。按改進Newton下山算法公式有:
、
其中 。
由 和⑴式代入⑵式中,得方程:
⑶
當 時,就是1般情況的Newton迭代公式[4]。Newton迭代法已經證明當初始值 時,迭代法公式總能收斂到精確值 ,其證明如下:
由⑵式可得:
⑷
由⑷式配方得:
⑸
⑹
由⑸式得:
故對任意 ,均有 。而由⑷式又有:
所以迭代序列 是下有界的單調遞減序列,從而有極限 。這說明只要 ,⑷式總能收斂于 。
另外,由⑸和⑹式可以確定相對誤差:
⑸和⑹式相比得:
遞推得:
令 ,則
相對誤差為:
因此,由 的取值就可以確定相對誤差的大小。類似的,如果確定了具體的相對誤差精度,也就可以求得 的取值,而初值 的選擇決定了收斂速度的快慢。
正因為當初始值取為正數時,Newton迭代法總是能收斂,所以在微機、單片機等構成的實時控制系統和測量儀器中計算開平方時,1般都簡單地取 。但是如果 很大,或很小時,即 偏離1很遠時,收斂的步數就會很多,收斂所需要的時間就相對比較長。用改進Newton下山算法的優勢在于收斂速度快,雖然只有1階收斂(Newton迭代法有平方收斂),但可以用它來快速收斂到真實值的鄰域內,獲得初值,再用Newton迭代法得出精確解。
在這里由于函數的特殊性,從理論上確定 和c的關系,才是解決問題的關鍵。為了求出這個關系,這里首先確定三個條件:
1) 改進Newton下山算法的初值 ;
2) 約束條件 ,其中 為1個很小的正數;
3) 收斂結果 在 的鄰域內,即: 。
由這三個條件構造出1函數 : ,實驗檢驗,只需要1-2步就可以得到 。最后用Newton迭代法的初值 ,實驗檢驗,只需要2-3步就可以得到精確值。
4。 改進Newton下山算法的軟件實現
本軟件編程是用C語言編寫,其算法流程如下:
1) 輸入初始條件 以及迭代公式;
2) 由構造函數 迭代1次,得到 ;
3) 將 代入約束條件 檢驗,如果符合條件則 ,相反則轉到2)再迭代1次;
4) 初始值 ,代入Newton迭代法公式進行迭代;
5) 判斷約束條件 ,滿足則終止迭代, 即為所求的平方根值,否則轉到4)繼續迭代。
6) 輸出平方根值 。
在編程時,在DSP TMS320LF2407A的RAM數據空間B1塊的1AH-2FH進行,相鄰的兩個字表示1個2進制浮點數,把這個16位數送到32 bit累加器時,最低8位數屏蔽為0,另把階碼送到寄存器保存,不影響計算精度。整個算法每次循環需要進行1次浮點數加法、減法和除法運算,迭代收斂速度越快,計算循環次數越少。從上述算法可以看出,本算法編程思路清晰、簡單。Newton迭代法第1次x0取下山算法的終值,以后進行迭代計算,直到最后兩次近似根的差小于控制精度。
5. 結論 畢業論文 論文網
用DSP TMS320LF2407A 的C語言編寫了以改進Newton下山算法求平方根的程序,并同標準值進行了比較,發現下山算法只需要1-2步。因為有了比較好的初值,所以Newton迭代公式只需要迭代2-3步,收斂速度很快,而且其精度非常高,可達到10e-6以上。隨著數據變大,收斂速度也變快。如果改變控制精度,其精度還可以提高,收斂速度也可隨之改變。
參考文獻
[1] 張芳蘭,TMS320C2xx用戶指南[M]。北京:電子工業出版社,1999,79-200
[2] TI。TMS320F/C24x DSP Controller Reference Guide。
[3] 曹海歐,微機保護開平方計算中牛頓迭代的改進[J]。江蘇電機工程,2006。9
[4] 鄭咸義,計算方法[M]。廣州:華南理工大學出版社,2002。9
【基于DSP TMS320LF2407A的浮點數開方算法研究探析】相關文章:
基于dsp三相變流器滑模變結構控制(c)06-03
基于戰略治理的企業環境風險研究08-28
基于BP網遙感影像分類研究與應用08-10
基于軍網的雷達遠程診斷技術研究08-10
基于web的異地并行設計與制造系統研究06-02
基于知網的翻譯研究方向碩士畢業論文寫作06-25
基于價值網的企業集群式供給鏈治理模式研究04-28