基于DSP的基本函數(shù)快速計算

在DSP或一般單片機中最常見的運算指令是"加"和"乘",而在數(shù)據(jù)處理中,不但有加、減、乘、除等運算,還要有一些基本函數(shù)的計算,如利用正交雙通道零中頻算法測量信號相位差或分析信號倒頻譜時,需要計算三角函數(shù)、平方根函數(shù)、對數(shù)函數(shù)等。在DSP上實現(xiàn)函數(shù)計算一般可以從數(shù)值精度、時間效率和空間效率等角度來衡量各種算法的優(yōu)劣。利用高級語言庫函數(shù)求這些基本函數(shù)的運算速度比較慢,在許多數(shù)字信號處理中,一般都有實時性的要求,在滿足計算精度條件下,函數(shù)的運算速度尤為重要。對于空間效率來講,本文中給出一個查表電路,其最大特點是不占用DSP的存儲器空間,而只占用他的一個I/O端口,利用此電路提高了空間利用率,查表時使用的指令很少,從而提高了函數(shù)值的運算速度。

1函數(shù)表電路

函數(shù)表電路如圖1所示,如果系統(tǒng)時鐘比較快,應選擇高速器件。這里以16位定點DSP為例,即數(shù)據(jù)線有16條,則用2片E2PROM 27512分別存儲函數(shù)表的高8位和低8位數(shù)據(jù),若每個函數(shù)表的容量是4 kB,則此電路可以存儲16個函數(shù)表,每個函數(shù)表的空間大小也可以根據(jù)需要來定。設函數(shù)表示為:y=f(x) (1)

其中:x是自變量,y是函數(shù)值,x和y都是16位定點數(shù)。查表時x作為查找存儲在27512存儲單元中函數(shù)值y的地址,經(jīng)兩片74HC574輸出連接到27512的16條地址線上,然后,DSP從兩片74LS244中讀取函數(shù)值y。若查表端口為PA,則查表時只用兩條指令即可完成,即:

2函數(shù)表的制定

由于使用的是16位定點DSP,因此,各函數(shù)表的函數(shù)值采用16位定點方式,最高位為符號位,低15位為有效數(shù)字位,即Q15方式。所有的數(shù)都采用小數(shù)形式,即小數(shù)點位于最高位后。每個函數(shù)表容量為4 096 B,下面分別給出三角函數(shù)表(正弦函數(shù)表和余弦函數(shù)表)、以e為底的自然對數(shù)表、平方根函數(shù)表的制作方法。

2.1 三角函數(shù)表的制作

將正、余弦函數(shù)1/4周期內(nèi)等間隔取4 096個值,歸一化后進行量化并編碼,分別制成正、余弦函數(shù)表。

在式(2)和式(3)中,n為自然數(shù),取值范圍為0~4 095,函數(shù)int[ ]表示對括號中的數(shù)取整數(shù),式中函數(shù)值乘32 768是將小數(shù)變?yōu)檎麛?shù)后再變成Q15方式二進制數(shù)。

2.2 自然對數(shù)表的制作

對于任意一個正實數(shù)x,求其自然對數(shù)y=ln(x)。若x的浮點數(shù)形式為:

對于浮點數(shù)a*2b,b為指數(shù),a為正的Q15方式小數(shù),取值范圍為:0.5≤a<1,則1≤2a<2。由于指數(shù)可以在運算中求得,從式(5)中得知,求x的自然對數(shù),只要計算出2的自然對數(shù)即可。因為0≤ln(2a)<1,所以自然對數(shù)表就是將1~2之間等間隔取4 096個數(shù),再求其自然對數(shù)。

  自然對數(shù)表值:

式(6)中,n為自然數(shù),取值范圍為0~4 095。

2.3平方根函數(shù)表的制作

平方根函數(shù)表是將0~1等間隔取4 096個數(shù),再求平方根,即平方根函數(shù)表值為:

式(7)中,n為自然數(shù),取值范圍為0~4 095。

以上是幾個基本函數(shù)表值的計算,最后要將函數(shù)表值變?yōu)槎M制數(shù),用程序?qū)懭肫鲗懭藘善?7512中,每個函數(shù)表分配4 k地址,地址線高4位作為每個函數(shù)表的段地址,地址線低12位作為函數(shù)查表地址。

3函數(shù)的計算

3.1正、余弦函數(shù)值的計算

假設正、余弦信號頻率為f,求一個周期內(nèi)某一時刻點k的函數(shù)值,其中,k取值范圍為0~N-1,則在計算cos(2πfk/N)和sin(2πfk/N)時,需要進行查表求函數(shù)值,由于在制表過程中,已將圓周率π考慮進去,所以,在計算角度時只計算2fk/N。

假設λ=2fk/N=2n+φ,其中,n為自然數(shù),φ<2。下面給出cos(λ)和sin(λ)的求解過程。首先去掉λ中的2n項,得到小于2的Q15方式的小數(shù),這里最高位不是符號位,而代表數(shù)值1或0。實際上,cos(λ)=cos(φ),sin(λ)=sin(φ)。計算cos(λ)和sin(λ)的流程圖如圖2所示。

3.2平方根值的計算

對于任意一個正實數(shù)x,求其平方根值。將x表示成浮點數(shù)形式:

從以上3種情況看,每種情況下只有對正實小數(shù)進行開方運算,所以在計算時,將Q15方式的小數(shù)向右移4位,其高4位為換上開方表段地址,即可查表求得

4結(jié) 語

  在DSP上實現(xiàn)基本函數(shù)的計算方法有多種,這里介紹的方法可以快速計算函數(shù)值,其實現(xiàn)電路簡單,函數(shù)表的空間擴展方便,不受DSP存儲空間限制的,我們在為海軍裝備修理部研制"DSP-1型聲納電功率測量儀"中得到應用,取得良好效果。

作者:李澤光(大連大學 信息工程學院 116622) 來源:《現(xiàn)代電子技術(shù)》


微信掃描分享本文到朋友圈
掃碼關注5G通信官方公眾號,免費領取以下5G精品資料

本周熱點本月熱點

 

  最熱通信招聘

業(yè)界最新資訊


  最新招聘信息