基于DSP實(shí)現的插值查找表的簡(jiǎn)便方法
線(xiàn)性化非線(xiàn)性傳感器
目前許多企業(yè)在工業(yè)控制系統中使用“智能傳感器”,以滿(mǎn)足低占用空間、低功耗、高性能、最低成本以及最短開(kāi)發(fā)時(shí)間等要求。通用智能傳感器可視為一個(gè)由傳感器及其信號控制線(xiàn)路、模數轉換器(ADC)、帶或不帶嵌入式處理器的相關(guān)DSP子系統組成的功能組件,所有這些功能塊都集成在的同一器件上,如圖4所示。
智能傳感器的目的是將物理量(如電機中的電流)轉化為數字電路能夠處理的數字信號。構建這類(lèi)傳感器所采用的技術(shù)及組件的某些特性通常會(huì )導致諸如失調、增益和非線(xiàn)性等誤差,進(jìn)而導致總體傳遞函數呈非線(xiàn)性。
一般來(lái)說(shuō),客戶(hù)會(huì )校正他們產(chǎn)品中運行的DSP子系統所出現的上述誤差。如果y=f(x)是來(lái)自傳感器和ADC級聯(lián)的數字輸出信號,那么DSP必須執行其反函數 g(y)=f-1(y)來(lái)補償非線(xiàn)性函數,這樣總體輸出z即為:
這是直線(xiàn)方程,其斜率為m,縱截距為b。
最簡(jiǎn)單的線(xiàn)性化方法是LUT法,采用存儲在ROM中的傳感器校準點(diǎn)。不過(guò),對16位的ADC來(lái)說(shuō),ROM顯得過(guò)大了,且需要64個(gè)BRAM單元。而內插LUT則不然,是一個(gè)良好的解決方案。
舉例來(lái)說(shuō),我們假定非線(xiàn)性傳遞函數是一條拋物線(xiàn)。下一MATLAB分段碼說(shuō)明了如何生成最終直線(xiàn)的m和b參數,以及如何計算g(y)(即 f(x)的反函數)。圖5用三種顏色顯示了三條不同曲線(xiàn)。請注意在計算f(x)的反函數g(y)過(guò)程中會(huì )丟失一些值。這是因為有幾個(gè)y值相同的點(diǎn)對應著(zhù)不同的x點(diǎn)。因此,需要對g(y)進(jìn)行平滑化,填補所有缺失的點(diǎn)。為精確起見(jiàn),我沒(méi)有把這部分運算包括在MATLAB分段碼中,見(jiàn)代碼清單。
我采用非常類(lèi)似于圖3的設計,在SystemGeneratorforDSP中運行基于定點(diǎn)周期的仿真,在非線(xiàn)性傳感器的總體輸出范圍內得到了92.48dB的信噪比。
斑點(diǎn)噪聲消除
跟蹤高速運動(dòng)系統的目標物體(比如導彈)是一項極富挑戰性的工作,需要非常復雜的DSP算法以及諸如合成孔徑雷達(SAR)等各種不同類(lèi)型的探測介質(zhì)。作為典型的相干電磁源(如激光),SAR成像器件也受斑點(diǎn)噪聲的影響。因此,任何基于SAR的DSP鏈的第一級都是二維(2D)自適應FIR濾波器,用以降低這種噪聲(但不可能完全消除)。
斑點(diǎn)噪聲是一種倍增噪聲,呈指數分布,完全由其方差值σ決定。因此,廣泛使用的抗斑點(diǎn)噪聲的方法就是Frost濾波器(由發(fā)明者 V.S.Frost的名字命名而來(lái))。在一個(gè)3x3的矩陣中,可以用下列公式進(jìn)行建模:
其中xij和yij分別代表Frost濾波器的輸入和輸出采樣。K是控制濾波強度的增益系數(為方便起見(jiàn),下面假定K=1),m1和s分別是 2D內核的平均值和方差值,Tij是中心輸出像素(系數ij=22)及所有周邊像素的距離矩陣。下面的等式說(shuō)明實(shí)施這個(gè)濾波器的關(guān)鍵因素是R1,即3×3 矩陣中的一階m1和二階m2之間的比值:
R1的取值范圍在0和1之間。根據實(shí)驗發(fā)現要取得良好的數值精度,R1可以使用16位至20位二進(jìn)制數來(lái)表示。
我在system Generator for DSP中設計R1計算步驟后,我決定通過(guò)內插LUT來(lái)實(shí)施濾波系數的歸一化。LUT的內容以下列MATLAB代碼表示:
圖6顯示的是歸一化后的系數沿R1輸入信號分布的曲線(xiàn)。這里只有三條曲線(xiàn),因為T(mén)ij矩陣在系數ij=22的中心像素周?chē)蕦ΨQ(chēng)分布。根據曲線(xiàn),與純浮點(diǎn)參考模型相比,數值結果顯示信噪比介于81.28至83.38dB之間。
簡(jiǎn)言之,這些例子說(shuō)明插值查找表是實(shí)施賽靈思FPGA的DSP功能的簡(jiǎn)便而強大的方法。插值查找表可幫助您在保持空間占用相對較低的情況下實(shí)現極高數值精度(SNR)和高數據速率。
評論