摘 要:在許多數字信號處理中,一般都會有實時性的要求,在滿足計算精度條件下,函數的運算速度非常重要。在DSP上實現基本函數的計算方法有多種,通過設計一個簡單的查表電路,可以用查表法快速計算函數值,此電路也使函數表的空間擴展不受DSP存儲器空間限制。另外,還給出了三角函數、自然對數和平方根函數表的制作方法以及用查表法求基本函數值的過程。
關鍵詞:函數運算;三角函數;對數;查表法
中圖分類號:TN29 文獻標識碼:B
文章編號:1004373X(2008)0514002
Rapid Computation of Basic Function on DSP
LI Zeguang
(Information Engineering College,Dalian University,Dalian,116622,China)
Abstract:In many digital signal processing, in generally,real-time must be asked for. The operation speed of function is very important under meeting the condition of operation precision.There are many ways to realize operation of basic function on DSP,with designing a simple look-table circuit,the function value can be calculated speedily by look-table algorithm,this circuit also makes the space expanding of the function table is not handicaped by memory space of DSP.Besides,the making ways of trigonometric function table,natural logarithm function table and square root function table are given,the course to calculate basic function value is also given by look-table algorithm.
Keywords:function operation;trigonometric function;logarithm;look-table algorithm
在DSP或一般單片機中最常見的運算指令是“加”和“乘”,而在數據處理中,不但有加、減、乘、除等運算,還要有一些基本函數的計算,如利用正交雙通道零中頻算法測量信號相位差[1]或分析信號倒頻譜時,需要計算三角函數、平方根函數、對數函數等。在DSP上實現函數計算一般可以從數值精度、時間效率和空間效率等角度來衡量各種算法的優劣[2]。利用高級語言庫函數求這些基本函數的運算速度比較慢,在許多數字信號處理中,一般都有實時性的要求,在滿足計算精度條件下,函數的運算速度尤為重要。對于空間效率來講,本文中給出一個查表電路,其最大特點是不占用DSP的存儲器空間,而只占用他的一個I/O端口,利用此電路提高了空間利用率,查表時使用的指令很少,從而提高了函數值的運算速度。
1 函數表電路
函數表電路如圖1所示,如果系統時鐘比較快,應選擇高速器件。這里以16位定點DSP為例,即數據線有16條,則用2片E2PROM 27512分別存儲函數表的高8位和低8位數據,若每個函數表的容量是4 kB,則此電路可以存儲16個函數表,每個函數表的空間大小也可以根據需要來定。設函數表示為:
其中:x是自變量,y是函數值,x和y都是16位定點數。查表時x作為查找存儲在27512存儲單元中函數值y的地址,經兩片74HC574輸出連接到27512的16條地址線上,然后,DSP從兩片74LS244中讀取函數值y。若查表端口為PA,則查表時只用兩條指令即可完成,即:
2 函數表的制定
由于使用的是16位定點DSP,因此,各函數表的函數值采用16位定點方式,最高位為符號位,低15位為有效數字位,即Q15方式。所有的數都采用小數形式,即小數點位于最高位后。每個函數表容量為4 096 B,下面分別給出三角函數表(正弦函數表和余弦函數表)、以e為底的自然對數表、平方根函數表的制作方法。
2.1 三角函數表的制作
將正、余弦函數1/4周期內等間隔取4 096個值,歸一化后進行量化并編碼,分別制成正、余弦函數表。
正弦函數表值:
在式(2)和式(3)中,n為自然數,取值范圍為0~4 095,函數int[ ]表示對括號中的數取整數,式中函數值乘32 768是將小數變為整數后再變成Q15方式二進制數。
對于浮點數a*2b,b為指數,a為正的Q15方式小數,取值范圍為:0-5≤a<1,則1≤2a<2。由于指數可以在運算中求得,從式(5)中得知,求x的自然對數,只要計算出2的自然對數即可。因為0≤ln(2a)<1,所以自然對數表就是將1~2之間等間隔取4 096個數,再求其自然對數。
自然對數表值:
2.3 平方根函數表的制作
平方根函數表是將0~1等間隔取4 096個數,再求平方根,即平方根函數表值為:
式(7)中,n為自然數,取值范圍為0~4 095。
以上是幾個基本函數表值的計算,最后要將函數表值變為二進制數,用程序寫入器寫入兩片27512中,每個函數表分配4 k地址,地址線高4位作為每個函數表的段地址,地址線低12位作為函數查表地址。
3 函數的計算
3.1 正、余弦函數值的計算
假設正、余弦信號頻率為f,求一個周期內某一時刻點k的函數值,其中,k取值范圍為0~N-1,則在計算cos(2πfk/N)和sin(2πfk/N)時,需要進行查表求函數值,由于在制表過程中,已將圓周率π考慮進去,所以,在計算角度時只計算2fk/N。
假設λ=2fk/N=2n+φ,其中,n為自然數,φ<2。下面給出cos(λ)和sin(λ)的求解過程。首先去掉λ中的2n項,得到小于2的Q15方式的小數,這里最高位不是符號位,而代表數值1或0。實際上,cos(λ)=cos(φ),sin(λ)=sin(φ)。計算cos(λ)和sin(λ)的流程圖如圖2所示。
從以上3種情況看,每種情況下只有對正實小數進行開方運算,所以在計算時,將Q15方式的小數向右移4位,其高4位為換上開方表段地址,即可查表求得a。
4 結 語
在DSP上實現基本函數的計算方法有多種[2,3],這里介紹的方法可以快速計算函數值,其實現電路簡單,函數表的空間擴展方便,不受DSP存儲空間限制的,我們在為海軍裝備修理部研制“HSP-1型聲納電功率測量儀”中得到應用,取得良好效果。
參考文獻
[1]李澤光.基于正交雙通道算法的相位差測量[J].電測與儀表,2004,41(2):20-21,29.
[2]馬士超,王貞松.基于DSP的三角函數快速計算[J].計算機工程,2005,31(22):12-14.
[3]方彥軍,孫健.智能儀器技術及其應用[M].北京:化學工業出版社,2004.
[4]李澤光,宋伯濤.噪聲中正(余)弦信號相位差的檢測[J].電測與儀表,2006,43(11):10-11.
作者簡介 李澤光 男,1963年出生,畢業于西安電子科技大學,碩士,大連大學副教授。主要研究方向為信息與信號處理,現從事電子信息工程專業教學和科研工作。
注:“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。”