文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2011)02-0046-03
在多路實(shí)時(shí)語(yǔ)音處理系統(tǒng)中,基于高斯混合概率模型[1,,2]的系統(tǒng)后端運(yùn)算量非常大,,采用log-add算法單元可以簡(jiǎn)化運(yùn)算,提高運(yùn)算效率,。其函數(shù)形式為[3]:
查表法可以認(rèn)為是多項(xiàng)式次數(shù)為0的情況,,隨著精度要求的增加,查找表會(huì)變得很大[5],。函數(shù)逼近可以采用多項(xiàng)式擬合,,首先根據(jù)所需要的精度確定多項(xiàng)式次數(shù)和分段的大小,然后計(jì)算每一段的多項(xiàng)式系數(shù),。
設(shè)分段的大小為d(d=2-k,,k=0,1,,2…),,計(jì)算各段系數(shù)時(shí),各段函數(shù)平移到區(qū)間[0,,d),,如圖2所示,。用Matlab進(jìn)行多項(xiàng)式擬合依次得到各段系數(shù)。由此可以得出各段的擬合多項(xiàng)式為:
這樣實(shí)現(xiàn)時(shí)可以把二進(jìn)制的定點(diǎn)數(shù)x分為MSBs和LSBs兩段,。MSBs對(duì)應(yīng)段標(biāo)號(hào)i,,由段標(biāo)號(hào)取出系數(shù)ci0,ci1,,ci2…,;LSBs對(duì)應(yīng)浮點(diǎn)數(shù)xl,代表段內(nèi)偏移值,。由圖3可以計(jì)算出f(x),。
MSBs和LSBs應(yīng)該這樣選取,例如定標(biāo)為Q32.f,,選擇d=1/2,,則MSBs為高32-(f-1)位,LSBs為低f-1位,;選擇d=1/4, 則MSBs為高32-(f-2)位,,LSBs為低f-2位……;如果MSBs為32或31,,則變成了查表法。
2 多項(xiàng)式擬合的實(shí)現(xiàn)方案
2.1 多項(xiàng)式次數(shù)與分段大小,、精度的關(guān)系
用Matlab進(jìn)行仿真,,表1列出了各種精度要求下各次多項(xiàng)式所需的分段大小(d),其中?啄為精度要求,,?茁為多項(xiàng)式的次數(shù),。
由表1可以看出,相同次數(shù)的情況下,,精度要求越高,,分段大小d越小,;而相同精度的情況下,,次數(shù)越高,分段大小d越大,。另外,,次數(shù)越低,精度越高,,分段大小d下降的數(shù)量級(jí)越快,。
表2列出各次多項(xiàng)式在不同精度要求下,所需要系數(shù)個(gè)數(shù)(n)的分布情況,。
由表2可以看出,,其結(jié)果與表1趨于一致,。相同次數(shù)下,精度要求越高,,所需要的系數(shù)個(gè)數(shù)n越多,;而相同精度下,次數(shù)越高,,所需要系數(shù)個(gè)數(shù)n越少,。n隨著次數(shù)的降低和精度的提高迅速增大。
與n相反,,多項(xiàng)式的計(jì)算量隨著多項(xiàng)式次數(shù)的增加而增加,。根據(jù)horner算法[3]多項(xiàng)式的表達(dá)式如下:
式(6)表明,多項(xiàng)式次數(shù)增加1次,,計(jì)算多項(xiàng)式的函數(shù)值增加1次乘法和1次加法,。多項(xiàng)式系數(shù)存儲(chǔ)量與多項(xiàng)式的計(jì)算量是其FPGA實(shí)現(xiàn)時(shí)互相制約的兩個(gè)因素。
3 仿真結(jié)果
為了取得面積與速度的平衡,,根據(jù)測(cè)試結(jié)果及實(shí)際系統(tǒng)的要求,,選擇δ=10-4、β=1來(lái)實(shí)現(xiàn),。本文采用Xilinx ISE Design Suite 10.1進(jìn)行仿真測(cè)試,。定標(biāo)取Q32.23,其硬件實(shí)現(xiàn)計(jì)算流程如圖4,,輸入為定點(diǎn)數(shù)x,,由MSBs和LBSs取得系數(shù)和xl,經(jīng)過(guò)reg系數(shù)寄存器及1次乘法和1次加法,,輸出y,。
時(shí)序仿真結(jié)果結(jié)果如圖5。輸入x是32 bit的無(wú)符號(hào)定點(diǎn)數(shù),,輸出為y,;clk是時(shí)鐘;reset為復(fù)位信號(hào),;MSBs是x的高位,,用于得到多項(xiàng)式系數(shù);LSBs是x的低位即自變量,;temp是用于緩存中間結(jié)果,,coef[...]是多項(xiàng)式系數(shù)。輸出延遲3個(gè)時(shí)鐘周期,,流水線(xiàn)填滿(mǎn)后,,每個(gè)時(shí)鐘周期輸出一個(gè)結(jié)果。
例如輸入32’h00333333(浮點(diǎn)數(shù)0.4),,從圖中可以看出其輸出y為24’h41aba5,,與實(shí)際函數(shù)值24’h41aa7c存在誤差,。其實(shí)現(xiàn)結(jié)果與浮點(diǎn)結(jié)果比較誤差如圖6??梢钥闯龆c(diǎn)數(shù)誤差在800以?xún)?nèi),,也就是浮點(diǎn)數(shù)約10-4以?xún)?nèi),誤差范圍與表1相一致,。
使用ISE軟件的XST工具綜合,,選擇設(shè)備為Xilinx公司Virtex5系列的XC5VFX100T(speed-2)。其資源占用情況如表3,,其中Xilinx公司的乘加硬件設(shè)備DSP48E用于算法中的乘法運(yùn)算及加法運(yùn)算[6],。
可以對(duì)比δ=10-4,β=0,,1,,2,3四種實(shí)現(xiàn)方式的硬件開(kāi)銷(xiāo),,如表4,。
由表4可以看出,雖然多項(xiàng)式次數(shù)為0時(shí)使用寄存器(Registers)和查找表(LUTs)最少,,且乘法和加法次數(shù)(DSP48Es)為0,,但由于其使用了24×40 960 ROM,占用存儲(chǔ)面積較大,;而一次多項(xiàng)式擬合雖然所占用查找表(LUTs)一項(xiàng)相對(duì)較多,,但綜合考慮,其他資源占用都比較均衡,。其整體的資源開(kāi)銷(xiāo)要好于其他方案。
log-add算法單元作為高斯混合概率模型FPGA實(shí)現(xiàn)的基本算法單元,,能夠簡(jiǎn)化運(yùn)算,、提高運(yùn)算效率。在系統(tǒng)精度要求10-4的情況下,,采用一次多項(xiàng)式擬合能夠有效地節(jié)省硬件開(kāi)銷(xiāo),,實(shí)現(xiàn)簡(jiǎn)單快速log-add算法單元,為大規(guī)模實(shí)時(shí)處理多路語(yǔ)音數(shù)據(jù)提供了重要保證,。
參考文獻(xiàn)
[1] Douglas A.Reynolds,,THOMAS E.Quatieri,Robert B.Dunn. Speaker verification using adapted gaussian mixture models[J].Digital Signal Processing,,2000(10).
[2] Kazuo Miura,,Hiroki Noguchi,Hiroshi Kawaguchi,,et al.A low memory bandwidth gaussian mixture model(GMM) processor for 20,,000-word real-time speech recognition FPGA system[J].ICECE Technology,,2008.FPT.2008.
[3] MELNIKOFF S J,F(xiàn)QUIGLEY S.Implementing the Log-add Algorithm in Hardware[J].Electronics Letters,,2003.
[4] LEE B R,,BURGESS N.A pallrallel Look-up logarithmic number system addition subtraction scheme for FPGA[J]. Proc.FPT,2003.
[5] 李煒,,沈緒榜.對(duì)數(shù)數(shù)值系統(tǒng)的研究[J].微電子學(xué)與計(jì)算機(jī),,2004.
[6] 胡彬.Xilinx ISE Design Suite 10.x FPGA開(kāi)發(fā)指南—邏輯設(shè)計(jì)篇[M].北京:人民郵電出版社,2008.