插值查找表對FPGA的DSP功能的實(shí)現(xiàn)
出處:互聯(lián)網(wǎng) 發(fā)布于:2011-09-04 13:57:02
我們是否能夠提供一款其功能可滿足客戶所有獨(dú)特設(shè)計要求的DSP內(nèi)核。有時候內(nèi)核會太大,太小或者不夠快。有時,我們會開發(fā)一款能確切滿足客戶需求的內(nèi)核,并迅速以CORE GeneratorTM商標(biāo)推出。不過即便在這種情況下,客戶仍然想要一套特定的DSP功能,而且刻不容緩。在這些情況下,我常常建議他們使用我們器件中的插值查找表來定制他們的DSP功能。
查找表 (LUT) 實(shí)質(zhì)上是一個存儲元件,能夠根據(jù)任何給定的輸入狀態(tài)組合,“查找”輸出,以確保每個輸入都有確切的輸出。采用LUT來實(shí)現(xiàn) DSP功能具有一些重大優(yōu)勢:
您可用諸如MATLAB?或Simulink?等高抽象層編程語言改變LUT內(nèi)容。
您可以設(shè)計一項DSP功能來運(yùn)行那些采用離散邏輯運(yùn)算將極度困難的數(shù)學(xué)函數(shù),比如l y="log"(x)、y=exp(x)、y=1/x、y=sin(x) 等。
LUT還可輕松執(zhí)行在可配置邏輯塊 (CLB)l 芯片,以及嵌入式乘法單元或DSP48可編程乘法累加 (MAC) 單元方面可能要求過多FPGA資源的復(fù)雜數(shù)學(xué)函數(shù)。
不過,以這種方式使用LUT當(dāng)然也會存在一些弊端。當(dāng)您使用LUT來實(shí)現(xiàn)DSP功能時,您必須使用塊RAM (BRAM) 元件?;蛘吣刑嗟倪\(yùn)算需要執(zhí)行,無法為每個變量省出64個BRAM單元,建議您放棄這種需要如此大量BRAM單元的方法,從系統(tǒng)架構(gòu)的角度來看,這種方法代價太大。
插值LUT方法不僅具有LUT方法在實(shí)現(xiàn)DSP功能時所帶來的各種優(yōu)勢,而且無需使用太多BRAM單元。采用這種方法,您可以使用來自容量較小的 LUT (比如,1000字 LUT)的連續(xù)輸出,線性地對其內(nèi)插,以模擬更大容量的LUT。這樣,您就可以實(shí)現(xiàn)比1000 字 LUT 更高的數(shù)值分辨率。此外,通過這種方法,僅需 1 個 BRAM、1 個嵌入式乘法器(或DSP48),以及少數(shù)幾個CLB芯片便可實(shí)施控制邏輯,因此LUT的使用成本變得更加合理化。而且,從信噪比的角度來看,其數(shù)值也是非常讓人滿意。
當(dāng)然,應(yīng)用插值LUT (ILUT) 方法需要一定的技巧。舉例來說,采用該方法執(zhí)行y=sqrt(x) 函數(shù)時,可以清楚地顯示ILUT在面積占用、時序和數(shù)值方面的性能。我們先大致看一下這個示例,然后我再講解部分實(shí)例,說明如何使用這種方法來滿足客戶截然不同的需求,比如讓傳遞函數(shù)呈非線性的傳感器實(shí)現(xiàn)線性化。
使用System Generator for DSP進(jìn)行設(shè)計
MathWorks 與 Xilinx 合作開發(fā)而成,DSP 設(shè)計人員可使用 MATLAB 和 Simulink 工具在 FPGA 內(nèi)進(jìn)行開發(fā)和仿真來完善 DSP 設(shè)計。System Generator使DSP系統(tǒng)和算法開發(fā)商—不用寫VHDL或Verilog編程—就能夠利用來自MathWorks的MATLAB 及 Simulink 來開發(fā)他們的設(shè)計。
一旦浮點(diǎn)建模完成,設(shè)計工程師采用賽靈思的比特及周期工具箱對其進(jìn)行量化并自動生成HDL/RTL,用于賽靈思FPGA的網(wǎng)表或完整的比特流,包括新的Virtex-5 LX 和 LXT器件。,設(shè)計工程師在Simulink環(huán)境內(nèi)采用高帶寬硬件在環(huán)仿真來驗證并調(diào)試實(shí)際FPGA上的設(shè)計。
隨著FPGA技術(shù)愈加成熟,可以滿足現(xiàn)今信號處理挑戰(zhàn)的多數(shù)苛刻需求,F(xiàn)PGA設(shè)計方法必須使設(shè)計過程變得更加容易。System Generator for DSP已經(jīng)成為的結(jié)構(gòu),用于使用業(yè)界的FPGA開發(fā)和調(diào)試的高性能DSP系統(tǒng)。這一工具提供了高水平的提取,在按動按鈕后可以自動編譯進(jìn)FPGA,在用低級程序語言例如VHDL實(shí)現(xiàn)設(shè)計時也不會損失性能。
System Generator是Xilinx XtremeDSP解決方案的一部分,這一解決方案結(jié)合了的FPGA、設(shè)計工具、IP核和設(shè)計教育服務(wù)。這一強(qiáng)有力的組合,為你提供了設(shè)計、驗證和配置DSP算法以及FPGA中的系統(tǒng)的快工具。關(guān)鍵特性 性能 - 輕松構(gòu)建并生成高性能DSP系統(tǒng) - 利用Virtex-4 FPGA實(shí)現(xiàn)超高性能、復(fù)雜的DSP系統(tǒng)(例如500 MSPS并行過濾器 ) 高帶寬硬件系統(tǒng)仿真用于加速仿真業(yè)界僅有的FPGA硬件回路協(xié)同仿真接口支持Simulink和硬件平臺的脈沖DMA傳輸,提高仿真速度上百倍或上千倍。
嵌入式系統(tǒng)設(shè)計 – 構(gòu)建針對Xilinx MicroBlaze 處理器的DSP協(xié)處理器。通過使用硬件協(xié)同仿真,System Generator MicroBlaze塊為設(shè)計DSP協(xié)處理器提供了接口、編譯固件和Simulink中的系統(tǒng)調(diào)試。
混合語言設(shè)計- 引入HDL模塊并利用ModelSim對它們進(jìn)行協(xié)同仿真。在您的基于Simulink的設(shè)計中直接引入HDL模塊并利用ModelSim對它們進(jìn)行協(xié)同仿真。 以系統(tǒng)速度進(jìn)行在系統(tǒng)調(diào)試從System Generator內(nèi)部插入Chipscope Pro探針來調(diào)試飛快運(yùn)行的系統(tǒng)檢查和修改嵌入式存儲器中的內(nèi)容。
為在賽靈思FPGA上實(shí)施DPS算法,我借助了采用MathWorks Simulink基于模型設(shè)計方法的System Generator for DSP設(shè)計與綜合工具。System Generator得益于賽靈思在Simulink 環(huán)境中的DSP模塊組,可自動調(diào)用CORE Generator為DSP構(gòu)建塊生成高度優(yōu)化的網(wǎng)表。Simulink是一種雙浮點(diǎn)設(shè)計工具,而System Generator則是一款定點(diǎn)運(yùn)算工具。不管怎樣,您只要將這兩種工具協(xié)同使用,就可以定義每個信號的總位數(shù)以及每個信號的二進(jìn)制位置,從而在定點(diǎn)運(yùn)算中巧妙處理分?jǐn)?shù)。仿真結(jié)果周期、位真,因此您可以方便地將它們與MATLAB腳本或Simulink模塊生成的浮點(diǎn)參考值相比較,以檢查量化誤差。
圖1顯示了System Generator中ILUT方案的頂層結(jié)構(gòu)圖。為讓這個方法盡可能一般化,假設(shè)nx=16位中的輸入變量 x 的取值范圍為0≤x<1,因此其格式為“無符號16位加上二進(jìn)制點(diǎn)右邊的16 位”,也稱為Ufix_16_16格式。有效位 (MSB) 和有效位 (LSB) 模塊分別對應(yīng)輸入數(shù)據(jù)nb=10的位和nx-nb=6的位。這些信號被命名為x0和dx。y=sqrt(x) 輸出則以ny=17位二進(jìn)制數(shù)表示,格式為:Ufix_17_17。

圖 1. System Generator for DSP中插值查找表頂層方框圖
圖2顯示了1000字小容量LUT通過雙端口RAM模塊的部署步驟。由于該模塊系只讀存儲器,布爾常數(shù)模塊We_const強(qiáng)制將寫入歸零。信號 X0和X0+1則用作ROM表上后續(xù)的兩個地址。Data_const模塊的零常數(shù)定義了任何ROM字的大小(即本例中的ny)。

圖2 System Generator for DSP中的小容量LUT圖
下面的公式顯示了以x0為x的有效位的情況下,如何在兩個已知點(diǎn)(x0,y0)和(x1,y1)之間插入坐標(biāo)為(x,y)的點(diǎn):

注意X1和X0是這個小容量LUT的相鄰地址,它們之間只隔了一個有效位。由于這個小容量LUT的地址空間為nb 位,那么該LSB的值為2-nb。
內(nèi)插步驟見圖3?!癛einterpret”模塊在不改變二進(jìn)制表示法的情況下,可改變dx=x-x0信號。其重置了二進(jìn)制小數(shù)點(diǎn)(從 UFix_6_0到UFix_6_6格式),并輸出nx-nb位二進(jìn)制數(shù)的一個分?jǐn)?shù),從而計算出 (x-x0)/2-nb 的值。

圖3 System Generator for DSP的線性內(nèi)插圖
從硬件角度來看,這些模塊什么都不占用??偟膩碚f(且根據(jù)我們通過ILUT方法應(yīng)用的函數(shù)類型),如果y1=0且y0=0,我們可以強(qiáng)制y1- y0=1,這樣我們就可以得到1/2-nb而不是0。我們采用Mux、Rational、Constant和Constant1模塊來執(zhí)行這項工作。
假定我們以Spartan-3E 1200(fg320-4)為目標(biāo)器件,現(xiàn)使用ISE設(shè)計套件和System Generator for DSP 10.1 SP3版工具對其進(jìn)行布局和布線,結(jié)果其所占用的FPGA資源的總體情況如下:

該設(shè)計完全流水線作業(yè),可以在任何一個時鐘周期提供新的輸出。時延為10個時鐘周期,數(shù)據(jù)速率達(dá)194.70MSPS(每秒百萬采樣數(shù))。從數(shù)值來說,對1000或2000字ILUT而言,參考浮點(diǎn)結(jié)果與System Generator for DSP定點(diǎn)輸出的量化誤差之間的比值,即信噪比分別為 71.94dB或77.95dB。
線性化非線性傳感器
傳感器是一種將被測的非電量轉(zhuǎn)換成電量的裝置,比如測溫度用的熱電阻、熱電偶溫度傳感器、測重量(質(zhì)量)用的荷重傳感器、測加速度用的加速度計以及測角速率的陀螺等等。
?。?)傳感器有兩個重要指標(biāo)
傳感器有兩個重要指標(biāo),一個是量程即使用的范圍值,另一個則是線性度。前一個指標(biāo)好理解,比如陀螺它的測量轉(zhuǎn)速范圍是0±300°/s,則它的量程為±300°/s;而傳感器的線性度的定義是:傳感器的實(shí)際特性曲線與擬合直線之間的偏差和滿量程的百分比。直觀地理解則是傳感器的輸入/輸出特性曲線如果是一條直線的話,則它的線性度就高,反之則差。
一般講,傳感器在它的整個量程范圍內(nèi),我們可以劃分出線性區(qū)段和非線性區(qū)段,就是說,一般情況下,我們使用它的線性區(qū)段就可以了,比如荷重傳感器,它的線性區(qū)段在10~90%之間,其他區(qū)段線性度較差,我們稱它們?yōu)榉蔷€性區(qū)段,使用時盡量避免使用。但有些情況下,我們用不上傳感器的線性區(qū)段,而只能使用它的非線性區(qū)段,比如用于測量地球自轉(zhuǎn)速率的光纖陀螺,我們就只能用它的非線性區(qū)段(0~15°/h)。
?。?)線性化處理的理論基礎(chǔ)
一段曲線總可以用一段或幾段直線來近似替代,用的直線段數(shù)越多,其替代就越高,用的直線段數(shù)趨于無,替代的直線段組合趨于被替代曲線。
(3)非線性段的線性化處理
根據(jù)要求,將非線性段均勻劃成n段(≥1)
在非線性段標(biāo)定傳感器
設(shè)第i(1~n)段傳感器的標(biāo)稱值X(輸入)和標(biāo)定值Y(輸出)分別為(Xi-1,Yi-1),(Xi,Yi)
n段非線性段的線性化處理
用端點(diǎn)為(Xi-1,Yi-1),(Xi,Yi)的線段替代該區(qū)段的傳感器輸出曲線段
目前許多企業(yè)在工業(yè)控制系統(tǒng)中使用“智能傳感器”,以滿足低占用面積、低功耗、高性能、成本以及短開發(fā)時間等要求。通用智能傳感器可視為一個由傳感器及其信號控制線路、模數(shù)轉(zhuǎn)換器 (ADC) 、帶或不帶嵌入式處理器的相關(guān)DSP子系統(tǒng)組成的功能組件,所有這些功能塊都集成在的同一器件上,如圖4所示。

圖4. 智能傳感器的方框圖
一般來說,客戶會校正他們產(chǎn)品中運(yùn)行的DSP子系統(tǒng)所出現(xiàn)的上述誤差。如果 y="f"(x) 是來自傳感器和ADC級聯(lián)的數(shù)字輸出信號,那么DSP必須執(zhí)行其反函數(shù)g(y)=f-1(y) 來補(bǔ)償非線性函數(shù),這樣總體輸出z即為:

這是直線方程,其斜率為m,縱截距為b。
舉例來說,我們假定非線性傳遞函數(shù)是一條拋物線。下一 MATLAB分段碼說明了如何生成終直線的m和b參數(shù),以及如何計算 g(y)(即 f(x) 的反函數(shù))。圖5用三種顏色顯示了三條不同曲線。請注意在計算 f(x) 的反函數(shù) g(y) 過程中會丟失一些值。這是因為有幾個y值相同的點(diǎn)對應(yīng)著不同的x點(diǎn)。因此,需要對 g(y) 進(jìn)行平滑化,填補(bǔ)所有缺失的點(diǎn)。(為起見,我沒有把這部分運(yùn)算包括在MATLAB分段碼中)



圖5.黑色拋物線表示非線性傳感器傳遞函數(shù)f(x) 的曲線;綠色直線表示線性化DSP子系統(tǒng)獲得的終線性傳感器傳遞函數(shù)曲線;藍(lán)色拋物線則表示反函數(shù)g(y) 的曲線。
我采用非常類似于圖1-3的設(shè)計,在System Generator for DSP中運(yùn)行基于定點(diǎn)周期的仿真,在非線性傳感器的總體輸出范圍內(nèi)得到了92.48dB的信噪比。斑點(diǎn)噪聲消除
跟蹤高速運(yùn)動系統(tǒng)的目標(biāo)物體(比如導(dǎo)彈)是一項極富挑戰(zhàn)性的工作,需要非常復(fù)雜的DSP算法以及諸如合成孔徑雷達(dá) (SAR) 等各種不同類型的探測介質(zhì)。該噪音對左邊圖像的畫質(zhì)造成了綜合性的不良影響。右邊的圖像是2D FIR濾波器黃金模型的輸出結(jié)果。

圖 6. 斑點(diǎn)噪聲對左邊圖像畫質(zhì)造成了影響,右邊的是濾波后的圖像
斑點(diǎn)噪聲是一種倍增噪聲,呈指數(shù)分布,完全由其方差值σ決定。因此,廣泛使用的抗斑點(diǎn)噪聲的方法就是Frost濾波器(由發(fā)明者 V.S.Frost的名字命名而來)。V.S.Frost 在1981年發(fā)表的論文對這個現(xiàn)象進(jìn)行了探討。在一個3x3的矩陣中,可以用下列公式進(jìn)行建模:

其中xij和yij分別代表Frost濾波器的輸入和輸出采樣。K 是控制濾波強(qiáng)度的增益系數(shù)(為方便起見,我在下面假定K=1),μ1和σ分別是2D內(nèi)核的平均值和方差值,Tij是中心輸出像素(系數(shù)ij=22)及所有周邊像素的距離矩陣。下面的等式說明實(shí)施這個濾波器的關(guān)鍵因素是R1,

R1的取值范圍在0和1之間。根據(jù)實(shí)驗發(fā)現(xiàn)要取得良好的數(shù)值,R1可以使用16位至20位二進(jìn)制數(shù)來表示。
我在system Generator for DSP中設(shè)計R1計算步驟后,我決定通過內(nèi)插LUT來實(shí)施濾波系數(shù)的歸一化。LUT的內(nèi)容以下列MATLAB代碼表示:

圖7顯示的是歸一化后的系數(shù)沿R1輸入信號分布的曲線。這里只有三條曲線,因為 Tij矩陣在系數(shù) ij="22的中心像素周圍呈對稱分布"。根據(jù)曲線,與純浮點(diǎn)參考模型相比,數(shù)值結(jié)果顯示信噪比介于81.28至83.38dB之間。對有興趣的讀者,下面的 MATLAB分段碼說明了2D濾波器的處理過程(為簡便起見,沒有包括ILUT函數(shù))。

圖7 沿斑點(diǎn)噪聲降噪濾波參數(shù)R1分布的歸一化系數(shù)
簡言之,這些例子說明插值查找表是實(shí)施賽靈思FPGA的DSP功能的簡便而強(qiáng)大的方法。插值查找表可幫助您在保持面積占用相對較低的情況下實(shí)現(xiàn)極高數(shù)值 (SNR) 和高數(shù)據(jù)速率。

版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- ARM技術(shù)架構(gòu)與應(yīng)用開發(fā)實(shí)踐指南2026/1/6 10:40:19
- 嵌入式實(shí)時操作系統(tǒng)(RTOS)選型與移植技術(shù)指南2025/12/31 10:42:31
- 工業(yè)嵌入式系統(tǒng):通信接口技術(shù)選型與抗干擾設(shè)計實(shí)踐2025/12/15 14:36:53
- 深入解析嵌入式 OPENAMP 框架:開啟異核通信新時代2025/7/22 16:27:29
- 一文快速了解OPENWRT基礎(chǔ)知識2025/7/14 16:59:04
- 高速PCB信號完整性(SI)設(shè)計核心實(shí)操規(guī)范
- 鎖相環(huán)(PLL)中的環(huán)路濾波器:參數(shù)計算與穩(wěn)定性分析
- MOSFET反向恢復(fù)特性對系統(tǒng)的影響
- 電源IC在惡劣環(huán)境中的防護(hù)設(shè)計
- 連接器耐腐蝕性能測試方法
- PCB電磁兼容(EMC)設(shè)計與干擾抑制核心實(shí)操規(guī)范
- 用于相位噪聲測量的低通濾波器設(shè)計與本振凈化技術(shù)
- MOSFET在高頻開關(guān)中的EMI問題
- 電源IC在便攜式設(shè)備中的設(shè)計要點(diǎn)
- 連接器結(jié)構(gòu)設(shè)計常見問題分析









