两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

多脈沖最大似然量化濾波方法和裝置的制作方法

文檔序號:7916189閱讀:134來源:國知局
專利名稱:多脈沖最大似然量化濾波方法和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,具體地,涉及多脈沖最大似然量化濾波方 法和裝置。
背景技術(shù)
G.723.1是國際電信聯(lián)盟電信標(biāo)準(zhǔn)化組(ITU-T )于1996年推出的一 種低碼率的語音編碼算法標(biāo)準(zhǔn),其主要用于語音及其它多媒體聲音信號的壓縮。
在G.723.1編碼器中,將輸入的語音信號按每幀240樣本點劃分為幀, 并進一步將每一幀平均分為4個子幀,每個子幀有60個樣本點。并且, G.723.1編碼器可以在5.3kbps和6.3kbps兩種碼率下實現(xiàn)語音編碼。在高 碼率下具有較高的重建語音質(zhì)量,在低碼率下則提供更多的系統(tǒng)設(shè)計靈活
性。G.723.1編碼器在編碼過程中可以在這兩種碼率之間進行切換,切換是 在幀邊界進行的。
上述5.3kbps和6.3kbps兩種碼率編碼的不同在于對激勵信號的量化。 在高碼率下采用多脈沖最大似然量化(Multi-pulse Maximum Likelihood Quantization, MP-MLQ)濾波來進行激勵信號的量化,在低碼率下則采 用算術(shù)碼本激勵線性預(yù)測(Algebraic-Code-Excited Linear-Prediction, ACELP )濾波來進行激勵信號的量化。
ITU-T給出了在G.723.1編碼器中實現(xiàn)的MP-MLQ濾波的參考代碼 段。圖1示出了根據(jù)該參考代碼段的流程圖。
總體來說,MP-MLQ濾波的主要過程是,對于一子幀的輸入信號 咖]("=0,1,......,59),估計出未知參數(shù)G (增益)、{"丄0 (+l或-l,是Dirac函數(shù)的正負(fù)號)和 丄。n (Dirac函數(shù)的位置)。 參照圖1,具體的MP-MLQ濾波過程如下。
在步驟105,根據(jù)下式(24)計算一子幀的輸入信號r["]("-O,l,......,59)
與MP-MLQ濾波器的脈沖響應(yīng)一]("=o,l,......,59 )的互相關(guān)數(shù)組
4/1(_/ = 0,1,……,59):
《"A["—刀,osy^59 ( 24 )
在步驟110,找出互相關(guān)數(shù)組c/L/](y、0,1,......,59)中最大的數(shù),從而找到
輸入信號4"] (" = 0,1,......,59)中最大幅值脈沖所在的位置。
在步驟115,計算出上述最大幅值脈沖的增益G^,并將其量化為5_,
其中
max{| 4_7']|}一0...59
(25)
在步驟120,在輸入信號r["]("-O,l,......,59)中,基于上述最大幅值脈沖
以及量化的增益& ,在預(yù)定范圍[^^-3.2力_+6.4]內(nèi)搜索其他4個(奇數(shù) 子幀的情況)或者5個(偶數(shù)子幀的情況)脈沖,以與上述最大幅值脈沖
一起作為多個候選脈沖。
在步驟125,將上述多個候選脈沖在輸入信號0,1,......,59)中的位
置記錄在結(jié)構(gòu)Temp的數(shù)組Temp.Ploc中,將這些候選脈沖的參數(shù)值G.^ 記錄在數(shù)組Temp.Pamp中。
在步驟130,利用數(shù)組Temp.Ploc和Temp.Pamp,根據(jù)下式(21 )-(23 ),分別計算出上述多個候選脈沖的每一個與輸入信號= o,l,......,59)
的誤差
w["〗二 r[w]-=G^o^/z[w-附a] ( 23 )
,["]("=0,1,......,59)是輸入信號r["]的誤差向量
,w = £ AL/] v[" — /],0 ^ "《59 ( 21 )v["] =GI]a,-m*],0《"59
4=0
其中,G是增益因子;^"]是Dirac函數(shù),其定義是下標(biāo)所指示的位置處的 元素為非0,其他位置的元素為0; RL^一為+1或-1,其是Dirac函數(shù)的 正負(fù)號;卜Jm,,是Dirac函數(shù)的位置;M是候選脈沖數(shù),對于偶數(shù)子幀 來說,其是6,對于奇數(shù)子幀來說,其是5。。
在步驟135,確定上述多個候選脈沖中使誤差^rW的均方差最小的脈 沖,進而其增益因子G、 kLi^kLn,,作為該輸入信號咖]的量化 參數(shù)。
關(guān)于MP-MLQ濾波的詳細(xì)內(nèi)容,請參見ITU-T在1996年3月關(guān)于 G.723.1發(fā)布的"Dual Rate Speech Coder For Multimedia Communications Transmitting At 5.3 And 6.3 kbit/s"中的笫2.15節(jié)"High rate excitation (MP畫MLQ)"。
其中,在圖1的步驟130中,在為上述多個候選脈沖的每一個計算其 與輸入信號^"](" = 0,1,......,59)的誤差w["]時,首先根據(jù)上式(21)和(22)
計算出輸入信號(" = 0,1,......,59 )的誤差向量,["]("=0,1,……,59 ),然后才艮據(jù)該
誤差向量,W、依照式(23)來計算誤差
圖2 ( a )示出了 ITU-T給出的實現(xiàn)MP-MLQ濾波的參考代碼段中計
算誤差向量,[n]("-O,l,......,59)的代碼部分。圖2 (b)是根據(jù)該代碼部分的流程圖。
參照圖2(a)、 (b),計算誤差向量,["]("=0,1,......,59)的過程如下。
在步驟205,將數(shù)組OccPos[SubFrLen中的元素全部清0。其中
SubFrLen=60,表示一個子幀的長度。
在步驟210,獲取結(jié)構(gòu)Temp中記錄有已經(jīng)從輸入信號巾]("=0,1,……,59)
中搜索出的Np個脈沖的位置的數(shù)組Temp.Ploc和記錄有這Np個脈沖的
G.^值的數(shù)組Temp.Pamp。其中,在輸入信號r["]是奇數(shù)子幀的情況下,
Np=5;在偶數(shù)子幀的情況下,Np=6。并且,上述Np個脈沖是前述用于從中確定能夠使誤差mi"]的均方差 最小的脈沖的候選脈沖。
在步驟215,設(shè)置數(shù)組OccPos中的元素的值。
具體地,如圖2(a)所示,利用Np次循環(huán),將數(shù)組Temp.Pamp中所記 錄的Np個值賦予給數(shù)組OccPos中的、由數(shù)組Temp.Ploc所指示的Np個 位置處的元素。
在步驟220,獲取存儲有脈沖響應(yīng)//["](" = 0,1,……,59)的數(shù)組 Imr[SubFrLenI。
在步驟225,循環(huán)求取數(shù)組OccPos中的各元素與數(shù)組Imr中的每一元 素的點積的累計,以形成誤差向量,["]。
具體地,如圖2(a)所示,利用外層循環(huán)變量l從SubFrLen-l到0、內(nèi) 層循環(huán)變量j從0到1的嵌套循環(huán),求取數(shù)組OccPos中的元素OccPos[JI 與數(shù)組Imr中的元素Imr[l-j的點積的累計,并賦值給數(shù)組OccPos中的相 應(yīng)元素OccPos[l。
上述過程包括循環(huán)嵌套的點積運算,大致包含113280次MAC操作, 使得該部分成為MP-MLQ濾波計算的核心部分,占其最主要的計算量。 正是由于該部分,導(dǎo)致MP-MLQ濾波與ACELP濾波相比需要更多的計 算,進而導(dǎo)致G.723.1編碼器中的6.3kbps碼率編碼方式具有比5.3kbps碼 率編碼方式多將近兩倍的額外計算成本,從而阻止了 6.3kbps碼率編碼方 式的更廣范圍的應(yīng)用。
為此,Mikael Olausson和Dake Liu提出了 一種減少上述代碼部分中 的MAC操作的方案,參見其發(fā)表的文章"Instruction and Hardware Acceleration for MP-MLQ in G.723.1" , Signal Processing Systems, 2002.(SIPS,02), IEEE Workshop on , 2002。
在Mikael Olausson和Dake Liu所提出的方案中,考慮這樣的情況 在圖2(a)、 (b)的數(shù)組OccPos與數(shù)組Imr的元素的點積運算中,由于如圖 2(c)所示,數(shù)組OccPos中只有Np=5個(奇數(shù)子幀的情況)或Np=6個(偶 數(shù)子幀的情況)位置的元素(小格所代表的部分)被賦予了Temp.Pamp[jl(j-0…Np-l)中所記錄的不為0的值,而其余大部分位置的元 素均為0,所以這些點積運算中大部分都是與0的點積運算。
因此,如圖3(a)、 (b)所示,在Mikad Olausson和Dake Liu所提出的 方案中,在數(shù)組OccPos與數(shù)組Imr的元素的點積運算中,利用數(shù)組 Temp.Ploc來識別數(shù)組OccPos中不為0的元素的位置,并僅4吏這些元素與 數(shù)組Imr中的相應(yīng)元素進行點積,而將數(shù)組OccPos中為0的元素排除在 點積運算之外。這樣,可以將內(nèi)層循環(huán)次數(shù)始終控制在Np次以內(nèi)。
在Mikael Olausson和Dake Liu的該方案中,為了確保數(shù)組Imr的下 標(biāo)l-Temp.Plocj大于等于0,在內(nèi)層循環(huán)中引入了判斷l(xiāng)-Temp.Plocj]是 否大于等于0的條件分支。但是,該條件分支的引入導(dǎo)致了流水線的拖延, 從而導(dǎo)致極度的性能損失。并且,條件分支的引入也限制了在包括多個處 理單元的向量才幾上基于SIMD來實現(xiàn)MP-MLQ濾波。

發(fā)明內(nèi)容
為了解決上述問題,本發(fā)明提供了一種多脈沖最大似然量化濾波方法
來適應(yīng)點積計算中下標(biāo)的變化范圍,以消除用來限制下標(biāo)值的條件分支, 從而提升MP-MLQ濾波性能。
根據(jù)本發(fā)明的一個方面,提供了 一種多脈沖最大似然量化濾波方法, 在計算輸入信號的誤差向量中包括將存儲脈沖響應(yīng)的第一數(shù)組擴展為具 有兩倍的元素數(shù)的第二數(shù)組,其中,上迷第一數(shù)組中所存儲的各脈沖響應(yīng) 值被設(shè)置到上述第二數(shù)組的后半部分,該第二數(shù)組的前半部分被填充為0; 獲取記錄有預(yù)先從上述輸入信號搜索出的多個候選脈沖的位置的第三數(shù)組 以及記錄有這些候選脈沖的參數(shù)值的第四數(shù)組;以及循環(huán)求取上述第四數(shù) 組中的每一元素與上述第二數(shù)組中的多個元素的點積的累計,以形成上述 輸入信號的誤差向量。
根據(jù)本發(fā)明的另 一個方面,提供了 一種多脈沖最大似然量化濾波裝置, 包括誤差計算單元,該誤差計算單元包括用于計算輸入信號的誤差向量的
10誤差向量計算單元,上述誤差向量計算單元包括數(shù)組擴展單元,用于將 存儲脈沖響應(yīng)的第一數(shù)組擴展為具有兩倍的元素數(shù)的第二數(shù)組,其中,將 上述第 一數(shù)組中所存儲的各脈沖響應(yīng)值設(shè)置到上述第二數(shù)組的后半部分, 將該第二數(shù)組的前半部分填充為0;數(shù)組獲取單元,用于獲取記錄有預(yù)先 從上述輸入信號搜索出的多個候選脈沖的位置的第三數(shù)組以及記錄有這些 候選脈沖的參數(shù)值的第四數(shù)組;以及點積計算單元,用于循環(huán)求取上述第 四數(shù)組中的每一元素與上述第二數(shù)組中的多個元素的點積的累計,以形成 上述輸入信號的誤差向量。


相信通過以下結(jié)合附圖對本發(fā)明具體實施方式
的說明,能夠使人們更 好地了解本發(fā)明上述的特點、優(yōu)點和目的。
圖1示出了根據(jù)ITU-T給出的參考代碼段的MP-MLQ濾波過程的流 程圖2(a)示出了 ITU-T給出的參考代碼段中計算誤差向量的代碼部分;
圖2(b)是根據(jù)圖2(a)的代碼部分的流程圖2(c)是圖2(a)的代碼部分的圖示說明;
圖3(a)示出了 Mikael Olausson和Dake Liu改進的代碼段;
圖3(b)是圖3(a)的代碼段的圖示說明;
圖4(a)是根據(jù)本發(fā)明第一實施例的MP-MLQ濾波方法中計算誤差向 量的過程的流程圖4(b)示出了圖4(a)的過程的一種代碼實現(xiàn); 圖4(c)是圖4(a)的過程的圖示說明;
圖5(a)是根據(jù)本發(fā)明第二實施例的MP-MLQ濾波方法中計算誤差向 量的過程的一種代^碼實現(xiàn);
圖5(b)是圖5(a)的圖示i兌明;
圖6(a)是根據(jù)本發(fā)明第三實施例的MP-MLQ濾波方法中計算誤差向 量的過程的流程圖;圖6(b)示出了圖6(a)的過程的一種代碼實現(xiàn); 圖6(c)是圖6(a)的過程的圖示說明;
圖7是根據(jù)本發(fā)明實施例的MP-MLQ濾波裝置的總體方框圖;以及 圖8是4艮據(jù)本發(fā)明實施例的圖7的MP-MLQ濾波裝置中誤差向量計 算單元的方框圖。
具體實施例方式
下面就結(jié)合附圖對本發(fā)明的各個優(yōu)選實施例進行詳細(xì)說明。 本發(fā)明的MP-MLQ濾波方法的過程與圖1所示出的過程大體相同。 所不同的是步驟130中計算誤差向量,["](n-o,l,......,59)的過程。具體地,為
了降低占MP-MLQ濾波的主要計算量的步驟130中誤差向量 ,["]("=0,1,……,59)的計算成本,本發(fā)明在Mikael Olausson和Dake Liu所提 出的方案的基礎(chǔ)上進一步改進,以使計算成本達到最低。下面結(jié)合附圖來 描述本發(fā)明所提供的誤差向量,["]的計算過程的各改進方案。 第一實施例
圖4(a)示出了才艮據(jù)本發(fā)明第一實施例的MP-MLQ濾波方法中計算誤 差向量,'["]的過程的流程圖,圖4(b)示出了該過程的一種代碼實現(xiàn),圖4(c) 是該過程的圖示說明。
參照圖4(a),首先在步驟405,將數(shù)組OccPos[SubFrLen]中的元素全 部清O。其中SubFrLen=60,表示一個子幀的長度。
在步驟410,獲取結(jié)構(gòu)Temp中記錄有已經(jīng)從輸入信號,]("=0,1,......,59)
中搜索出的Np個脈沖的位置的數(shù)組Temp.Ploc和記錄有這Np個脈沖的
值的數(shù)組Temp.Pamp。
其中,在輸入信號咖]是奇數(shù)子幀的情況下,Np=5;在偶數(shù)子幀的情 況下,Np=6。
并且,上述Np個脈沖是前述用于從中確定能夠使誤差w["]的均方差 最小的脈沖的候選脈沖。
在步驟415,設(shè)置數(shù)組OccPos中的元素的值。具體地,利用Np次循環(huán),將數(shù)組Temp.Pamp甲所記豕的Np個值賦 予給數(shù)組OccPos中的、由數(shù)組Temp.Ploc所指示的Np個位置處的元素。
在步驟"0, 獲取存儲有脈沖響應(yīng)一]("=0,1,,w)的數(shù)組 Imr[SubFrLen]。
在步驟425,如圖4(c)所示,將數(shù)組ImrSubFrLen]擴展為具有兩倍的 元素數(shù)的數(shù)組ExtImrSubFrLen*2]。
其中,將數(shù)組Imr中的元素的值復(fù)制到擴展后的數(shù)組Extlmr的從 SubFrLen到SubFrLen*2-l的位置上,而將數(shù)組Extlmr中的其余0到 SubFrLen-l的位置上的元素設(shè)置為0。
在Mikael Olausson和Dake Liu的方案中,由于數(shù)組Temp.Ploc中所 記錄的是從一子幀的輸入信號*](" = 0,1,......,59)中搜索出的Np個候選脈沖
的位置,所以數(shù)組Temp.Ploc中的各元素Temp.PlocjI(J-0…Np-l)的值應(yīng) 該在0 SubFrLen之間,并且,由于在后面循環(huán)嵌套的點積計算中外層循 環(huán)變量1的值在O-SubFreLen-l之間,所以作為數(shù)組Imr的下標(biāo)的 l-Temp.Ploc[j的值應(yīng)該在-SubFreLen SubFreLen-l之間。但是,由于數(shù) 組Imr僅具有SubFrLen個元素,其下標(biāo)僅能夠在0~ SubFrLen-l的范圍 內(nèi),所以在Mikael Olausson和Dake Liu的方案中,在每次進行數(shù)組OccPos 與Imr中的元素的點積計算時,利用條件分支將數(shù)組Imr的下標(biāo) l-Temp,Ploc[j
的值限制為大于等于0。
而在本發(fā)明中,為了取消該條件分支,將數(shù)組Imr[SubFrLen
擴展為 具有兩倍的元素個數(shù)的數(shù)組ExtImr[SubFrLen*2I ,使下標(biāo)能夠從 SubFreLen的變化范圍擴展為SubFreLen*2的變化范圍,以滿足點積計算 中下標(biāo)1- Temp.Plocj在兩倍的SubFreLen的范圍(SubFreLen ~ SubFreLen-l)內(nèi)變化的需求。
在步驟430,循環(huán)求取數(shù)組Temp.Pamp中的每一元素與數(shù)組Extlmr 中的多個元素的點積的累計,以形成誤差向量,["]。
具體地,在圖4(b)所示出的一種代碼實現(xiàn)中,利用外層循環(huán)變量l從 SubFrLen-1到0、內(nèi)層循環(huán)變量j從0到Np-l的嵌套循環(huán),求取數(shù)組Temp.Pamp 中的元素 Temp.Pampj]與數(shù)組 Extlmr 中的元素 ExtImr[SubFrLen+l- Temp.Ploc[川的點積的累計,并賦值給數(shù)組OccPos 中的相應(yīng)元素OccPos[l
其中,數(shù)組Extlmr的下標(biāo)用SubFrLen +1- Temp.Ploc[j
(j=O...Np-l) 來表示。因為,如前面所述在Mikael Olausson和Dake Liu的方案中作為 數(shù)組Imr的下標(biāo)的l-Temp.Ploc[j]的值在-SubFreLen SubFreLen-l之間變 化,雖然本實施例中擴展后的數(shù)組Extlmr能夠提供SubFreLen*2的下標(biāo) 范圍,但是下標(biāo)的值要求是大于等于0的,所以,在本實施例中,將 l-Temp.Ploc[j變?yōu)镾ubFrLen + 1- Temp.Ploc[j的形式,使其值確保在 0 SubFrLei^2-l之間,從而滿足作為數(shù)組Extlmr的下標(biāo)的要求,能夠定 位數(shù)組Extlmr中0 SubFrLen*2-l的位置上的元素。這樣,便無需像Mikad Olausson和Dake Liu的方案中那樣在每次點積運算時利用條件分支來限 制下標(biāo)1 - Temp.PlocU的值。
以上就是對本實施例的MP-MLQ濾波方法中計算誤差向量,[n]的過 程的詳細(xì)描述。在本實施例中,通過將存儲有脈沖響應(yīng)/z["]("-0,1,......,59)的
數(shù)組 Imr[SubFrLen
擴展為具有兩倍的元素數(shù)的數(shù)組 ExtImr[SubFrLen*21,并利用SubFrLen+1-Temp.Ploc[j(j二0…Np-l)作為 其下標(biāo)表示,能夠滿足在循環(huán)嵌套的點積計算中下標(biāo)的值在 0~SubFrLen*2-l的范圍內(nèi)變化的需求,而無需利用條件分支來限制下標(biāo) 值。這樣,由于消除了條件分支,所以相對于Mikael Olausson和DakeLiu 的方案,流水線的處理速度得到極大提高,從而MP-MLQ濾波的整體性 能能夠極大地提升。
此外,在本實施例中,雖然由于數(shù)組的擴展而在點積計算的個別循環(huán) 中會存在與Mikael Olausson和Dake Liu的方案相比多進行Np次以下的 與0點積的情況,但其成本與流水線的處理速度的提高相比較來說,是微 不足道的。
此外,需要說明的是,在本實施例中,由于在步驟430中是直接利用 數(shù)組Temp.Pamp與數(shù)組Extlmr中的元素進4亍點積計算的,所以也可以不包括利用數(shù)組Temp.Pamp設(shè)置數(shù)組OccPos中的元素值的步驟415。 第二實施例
圖5(a)示出了根據(jù)本發(fā)明第二實施例的MP-MLQ濾波方法中計算誤 差向量,["]的過程的一種代碼實現(xiàn);圖5(b)是其圖示說明。
如圖5(a)、 (b)所示,本實施例與第一實施例的區(qū)別在于,取消了利用 數(shù)組Temp,Pamp設(shè)置數(shù)組OccPos中的元素的值的過程,并且改變了數(shù)組 Temp.Pamp與數(shù)組Extlmr中的元素的循環(huán)點積計算中內(nèi)外層循環(huán)的次 序。
參照圖5(a),由于改變了內(nèi)外層循環(huán)的次序,所以內(nèi)層循環(huán)的循環(huán)變 量成為在SubFrLen-l 0的范圍內(nèi)道減的l。從而,在內(nèi)層循環(huán)的執(zhí)行中, 數(shù)組 Extlmr 的下標(biāo) SubFrLen+l國Temp.Plocj(j-0…Np-l)在 SubFrLen*2-l 0的范圍內(nèi)遞減。也就是^L,在內(nèi)層循環(huán)的執(zhí)4亍中,數(shù)組 Extlmr中的各元素從后向前依次與Temp.Pamp[j]進行點積計算。從而, 在內(nèi)層循環(huán)的執(zhí)行中,對于數(shù)組Extlmr中的元素,是從后向前連續(xù)尋址 的。
以上就是對本實施例的MP-MLQ濾波方法中計算誤差向量r'[n]的過 程的詳細(xì)描述。
第三實施例
圖6(a)示出了根據(jù)本發(fā)明第三實施例的MP-MLQ濾波方法中計算誤 差向量,W的過程的流程圖,圖6(b)示出了該過程的一種代碼實現(xiàn),圖6(c) 是該過程的圖示說明。
如圖6(a)所示,首先在步驟605,將數(shù)組OccPos[SubFrLenl中的元素
全部清0。
在步驟610,獲取結(jié)構(gòu)Temp中記錄有已經(jīng)從輸入信號r["](" = o,l,......,59)
中搜索出的Np個脈沖的位置的數(shù)組Temp.Ploc和記錄有這Np個脈沖的 值的數(shù)組Temp.Pamp 。在步驟61S ,獲取存儲有脈沖響應(yīng)( " = o,i,,59)的數(shù)組 ImrSubFrLenl。
在步驟620,如圖6(c)所示,將數(shù)組ImrSubFrLen擴展為具有兩倍的 元素數(shù)的數(shù)組ExtImr[SubFrLen*2

其中,將數(shù)組Imr中的元素的值復(fù)制到擴展后的數(shù)組Extlmr的從 SubFrLen到SubFrLen*2-l的位置上,而將數(shù)組Extlmr中的其余0到 SubFrLen-l的位置上的元素i殳置為0。
在步驟625,利用SIMD指令循環(huán)求取數(shù)組Temp.Pamp中的每一元 素與數(shù)組Extlmr中的多個元素的點積的累計,以形成誤差向量,["]。
具體地,在圖6(b)所示出的一種代碼實現(xiàn)中,利用外層循環(huán)變量j從O 到Np-l、內(nèi)層循環(huán)變量i從0到SubFrLen-l的嵌套循環(huán),利用SIMD指 令求取數(shù)組Temp.Pamp中的元素Temp.Pampj]與數(shù)組Extlmr中的元素 Extlmr[i+SubFrLen-Temp.Ploc川的點積的累計,并賦值給數(shù)組OccPos 中的相應(yīng)元素OccPos[i]。
也就是說,本實施例與第二實施例的區(qū)別在于,將內(nèi)層循環(huán)變量改為 在 0 SubFrLen-l 的范圍內(nèi)遞增的 i, 并用 i+SubFrLen-Temp.Plocj(j-0…Np-l)作為數(shù)組Extlmr的下標(biāo)表示,并且 利用SIMD指令來進行數(shù)組Temp.Pamp與數(shù)組Extlmr中的元素的點積計 算。
參照圖6(b),由于內(nèi)層循環(huán)變量i在0 SubFrLen-l的范圍內(nèi)遞增,所 以在內(nèi)層循環(huán)的執(zhí)行中,數(shù)組 Extlmr 的下標(biāo) i+SubFrLen-Temp.Plocj(j-0…Np-l)在0 ~ SubFrLen*2 - 1的范圍內(nèi)遞 增。也就是說,在內(nèi)層循環(huán)的執(zhí)行中,數(shù)組Extlmr中的各元素從前向后 依次與Temp.Pamp[j
進行點積計算。從而,在內(nèi)層循環(huán)的執(zhí)行中,對于數(shù) 組Extlmr中的元素,是從前向后連續(xù)尋址的。這樣,就滿足了應(yīng)用SIMD 指令的要求。
SIMD (Single-Instruction Multiple-Data,單指令多數(shù)據(jù))的含義是, 在單個SIMD (乘、加等)指令下,用一個控制器來控制多個重復(fù)設(shè)置的
16處理單元,利用這多個處理單元對一組連續(xù)尋址的數(shù)據(jù)中的各個數(shù)據(jù)同時 執(zhí)行相同的操作(相乘、相加等),以實現(xiàn)空間上的數(shù)據(jù)并行性?,F(xiàn)有的
包括多個處理單元的大多數(shù)高性能處理器(向量機)都支持SIMD體系結(jié)構(gòu)。
在本實施例中,由于在內(nèi)層循環(huán)的執(zhí)行中,數(shù)組Extlmr中的各元素 是從前向后被連續(xù)尋址的,所以能夠利用SIMD乘指令一次同時求取數(shù)組 Extlmr中連續(xù)的多個元素分別與Temp.PampjI的點積。
以SIMD乘指令要求128位的連續(xù)操作數(shù)并且數(shù)組Extlmr中的元素 是32位單精度類型的情況為例,由于128位的連續(xù)操作數(shù)中可以包括4 個相鄰的32位單精度元素,所以,用這樣的一條SIMD乘指令,可以一 次同時求取數(shù)組Extlmr中連續(xù)的4個元素分別與Temp.Pamp[j
的點積。 從而,通過將這4個元素的點積結(jié)果累加在一起,能夠達到相當(dāng)于內(nèi)層循 環(huán)連續(xù)執(zhí)行了4次的效果。這樣,利用SIMD指令能夠大大縮短循環(huán)點積 計算的執(zhí)行時間。
以上就是對本實施例的MP-MLQ濾波方法中計算誤差向量,[ ]的過 程的詳細(xì)描述。在本實施例中,除了能夠獲得與第一實施例相同的技術(shù)效 果之外,還由于改變了內(nèi)外層循環(huán)的次序并將內(nèi)層循環(huán)變量改為升序,使 得參與點積計算的數(shù)組ExtImr中的元素在內(nèi)層循環(huán)的執(zhí)4亍中是從前向后 被連續(xù)尋址的,從而能夠利用SIMD指4^一次同時求取Extlmr中的多個 相鄰元素分別與Temp.PampJl的點積,從而基于SIMD的并行性能力來 實現(xiàn)循環(huán)點積計算的并行性執(zhí)行。這樣,能夠減少MP-MLQ濾波時間、 提升濾波性能。
以上就是對本發(fā)明的MP-MLQ濾波方法的詳細(xì)描述。
需要指出的是,以上描述的本發(fā)明的MP-MLQ濾波方法不僅能夠應(yīng) 用于G.723.1編碼器中的6.3kbps碼率編碼方式,而且對于任何需要 MP-MLQ濾波的情況,都是適用的。
在同一發(fā)明構(gòu)思下,本發(fā)明提供一種MP-MLQ濾波裝置。下面結(jié)合 附圖對其進行描迷。圖7是根據(jù)本發(fā)明實施例的MP-MLQ濾波裝置的方框圖。如圖7所 示,本實施例的MP-MLQ濾波裝置7包括互相關(guān)數(shù)組計算單元71、最 大幅值脈沖確定單元72、增益量化單元73、脈沖搜索單元74、脈沖記錄 單元75、誤差計算單元76和量化參數(shù)確定單元77。
其中,互相關(guān)數(shù)組計算單元71,對于一子幀的輸入信號 咖]("=0,1,......,59),計算其與該MP-MLQ濾波裝置7的脈沖響應(yīng)
( " = 0,1,...…,59 )的互相關(guān)數(shù)組(_/ = 0,1,……,59 )。
最大幅值脈沖確定單元72找出互相關(guān)數(shù)組4_/](7 = 0,1,......,59)中最大的
數(shù),從而找到輸入信號咖](n-O,l>..,...,59)中最大幅值脈沖所在的位置。
增益量化單元73計算出上述最大幅值脈沖的增益G^ ,并將其量化為
"max 。
脈沖搜索單元74基于上述最大幅值脈沖以及量化的增益5_ ,在輸入 信號= 0,1,……,59)中、在預(yù)定范圍lgmax -3.2,5max +6.4]內(nèi)搜索其他4個(奇 數(shù)子幀的情況)或者5個(偶數(shù)子幀的情況)脈沖,以與上述最大幅值脈 沖一起作為多個候選脈沖。
脈沖記錄單元75將上述多個候選脈沖在輸入信號,["]("=0,1,......,59)中
的位置記錄在結(jié)構(gòu)Temp的數(shù)組Temp.Ploc中,將這些候選脈沖的參數(shù)值 G. &記錄在數(shù)組Temp.Pamp中。
誤差計算單元76利用數(shù)組Temp.Ploc和Temp.Pamp,分別計算出上 述多個候選脈沖的每一個與輸入信號(" = o,l,......,59)的誤差。
量化參數(shù)確定單元77確定上述多個候選脈沖中使誤差w["]的均方差 最小的脈沖,進而其增益因子G、 RU,々k}i=。j—,,作為該輸入信號一] 的量化參數(shù)。
如圖7所示,誤差計算單元76進一步包括誤差向量計算單元761,用
于計算輸入信號( " = 0,1,...…,59)的誤差向量,["]("=O,l,……,59 ),以寸吏誤差計 算單元76根據(jù)該誤差向量,["]("=0,1,......,59),對于上迷多個候選脈沖的每一
個,計算出其與輸入信號一]("=0,1,......,59)的誤差
圖8是根據(jù)本發(fā)明實施例的誤差向量計算單元的方框圖。如圖8所示,本實施例的誤差向量計算單元761包括數(shù)組清零單元7611、數(shù)組獲取單 元7612、數(shù)組擴展單元7613以及點積計算單元7614。
其中,數(shù)組清零單元7611將數(shù)組OccPosSubFrLen中的元素全部清 0。其中SubFrLen=60,表示一個子幀的長度。該數(shù)組清零單元7611為一 優(yōu)選單元。
數(shù)組獲取單元7612獲取結(jié)構(gòu)Temp中記錄有已經(jīng)從輸入信號 r["]("-O,l,......,59)中搜索出的Np個脈沖的位置的數(shù)組Temp.Ploc和記錄有
這Np個脈沖的G.A值的數(shù)組Temp.Pamp,以及存儲有脈沖響應(yīng) 〗("=0,1,......,59)的數(shù)組Imr[SubFrLen
。其中,上述Np個脈沖是前述用
于從中確定能夠使誤差e/r["]的均方差最小的脈沖的候選脈沖。
數(shù)組擴展單元7613將數(shù)組Imr[SubFrLen]擴展為具有兩倍的元素數(shù)的 數(shù)組ExtImr[SubFrLen*2I。具體地,數(shù)組擴展單元7613將數(shù)組Imr中的 元素的值設(shè)置到擴展后的數(shù)組Extlmr的從SubFrLen到SubFrLen*2-l的 位置上,而將數(shù)組Extlmr中的其余0到SubFrLen-l的位置上的元素設(shè)置 為0。
點積計算單元7614循環(huán)求取數(shù)組Temp.Pamp中的每一元素與數(shù)組 Extlmr中的多個元素的點積的累計,并賦值給數(shù)組OccPos中的相應(yīng)元素, 以形成誤差向量
在第一實施例中,點積計算單元7614利用外層循環(huán)變量1從 SubFrLen-l到0、內(nèi)層循環(huán)變量j從0到Np-l的嵌套循環(huán),求取數(shù)組 Temp,Pamp 中的元素 Temp,Pamp[j]與數(shù)組Extlmr 中的元素 Extlmr[SubFrLen+I-Temp.Ploc[j
的點積的累計,并賦值給數(shù)組OccPos 中的相應(yīng)元素OccPos[Ij。
在第二實施例中,點積計算單元7614利用外層循環(huán)變量j從0到Np-l、 內(nèi)層循環(huán)變量1從SubFrLen-l到0的嵌套循環(huán),求取數(shù)組Temp.Pamp中 的元素Temp.Pampj與數(shù)組Extlmr中的元素ExtImr[SubFrLen+ 1 -Temp.PIocj的點積的累計,并賦值給數(shù)組OccPos中的相應(yīng)元素 OccPos[lJ。在第三實施例中,點積計算單元7614利用外層循環(huán)變量j從0到Np-l、 內(nèi)層循環(huán)變量i從0到SubFrLen-l的嵌套循環(huán),利用SIMD指令求取數(shù) 組Temp.Pamp中的元素Temp.Pamp[j與數(shù)組Extlmr中的元素 Extlmr[i+SubFrLen-Temp.Ploc[川的點積的累計,并賦值給數(shù)組OccPos 中的相應(yīng)元素OccPos[i。
以上就是對本實施例的MP-MLQ濾波裝置的詳細(xì)描述。其中,該裝 置7及其各個組成部分,可以由專用的電路或芯片構(gòu)成,也可以通過計算 機(處理器)執(zhí)行相應(yīng)的程序來實現(xiàn)。
以上雖然通過一些示例性的實施例對本發(fā)明的MP-MLQ濾波方法和 裝置進行了詳細(xì)的描述,但是以上這些實施例并不是窮舉的,本領(lǐng)域技術(shù) 人員可以在本發(fā)明的精神和范圍內(nèi)實現(xiàn)各種變化和修改。因此,本發(fā)明并 不限于這些實施例,本發(fā)明的范圍僅以所附權(quán)利要求為準(zhǔn)。
權(quán)利要求
1.一種多脈沖最大似然量化濾波方法,在計算輸入信號的誤差向量中包括將存儲脈沖響應(yīng)的第一數(shù)組擴展為具有兩倍的元素數(shù)的第二數(shù)組,其中,上述第一數(shù)組中所存儲的各脈沖響應(yīng)值被設(shè)置到上述第二數(shù)組的后半部分,該第二數(shù)組的前半部分被填充為0;獲取記錄有預(yù)先從上述輸入信號搜索出的多個候選脈沖的位置的第三數(shù)組以及記錄有這些候選脈沖的參數(shù)值的第四數(shù)組;以及循環(huán)求取上述第四數(shù)組中的每一元素與上述第二數(shù)組中的多個元素的點積的累計,以形成上述輸入信號的誤差向量。
2. 根據(jù)權(quán)利要求l的方法,其中循環(huán)求取上述第四數(shù)組中的每一元素 與上述第二數(shù)組中的多個元素的點積的累計的步驟進一步包括利用外層循環(huán)變量從子幀長度-1到0、內(nèi)層循環(huán)變量從0到候選脈沖 數(shù)-1的嵌套循環(huán),求取上述第四數(shù)組中的每一元素與上述第二數(shù)組中的多 個元素的點積的累計,其中在點積計算中利用上述內(nèi)層循環(huán)變量指示上述 第四數(shù)組中的元素位置,利用(子幀長度+外層循環(huán)變量-上述第三數(shù)組中 由上述內(nèi)層循環(huán)變量所指示的位置處的元素值)指示上述第二數(shù)組中的元 素位置。
3. 根據(jù)權(quán)利要求l的方法,其中循環(huán)求取上述第四數(shù)組中的每一元素 與上述第二數(shù)組中的多個元素的點積的累計的步驟進一步包括利用外層循環(huán)變量從0到候選脈沖數(shù)-1、內(nèi)層循環(huán)變量從子幀長度-1 到0的嵌套循環(huán),求取上述第四數(shù)組中的每一元素與上述第二數(shù)組中的多 個元素的點積的累計,其中在點積計算中利用外層循環(huán)變量指示上述第四 數(shù)組中的元素位置,利用(子幀長度+內(nèi)層循環(huán)變量-上述第三數(shù)組中由外 層循環(huán)變量所指示的位置處的元素值)指示上述第二數(shù)組中的元素位置。
4. 根據(jù)權(quán)利要求l的方法,其中循環(huán)求取上述笫四數(shù)組中的每一元素 與上述第二數(shù)組中的多個元素的點積的累計的步驟進一步包括利用外層循環(huán)變量從0到候選脈沖數(shù)-1、內(nèi)層循環(huán)變量從0到子幀長 度-1的嵌套循環(huán),利用SIMD指令求取上迷第四數(shù)組中的每一元素與上述 笫二數(shù)組中的多個元素的點積的累計,其中在點積計算中利用外層循環(huán)變 量指示上迷笫四數(shù)組中的元素位置,利用(內(nèi)層循環(huán)變量+子幀長度-上述 第三數(shù)組中由外層循環(huán)變量所指示的位置處的元素值)指示上述第二數(shù)組 中的元素位置。
5. 根據(jù)權(quán)利要求l的方法,還包括計算上述輸入信號與上述第一數(shù)組中所存儲的脈沖響應(yīng)的互相關(guān)數(shù)組;找出上述互相關(guān)數(shù)組中最大的元素,以確定上述輸入信號中最大幅值 脈沖所在的位置;計算出上述最大幅值脈沖的增益并進行量化;根據(jù)上述最大幅值脈沖及其量化的增益,在上述輸入信號中、在預(yù)定 范圍內(nèi)搜索預(yù)定數(shù)量的多個脈沖,以與上述最大幅值脈沖一起作為上述多 個候選脈沖;以及將上述多個候選脈沖在上述輸入信號中的位置記錄在上述第三數(shù)組 中,并且將上述多個候選脈沖的、與增益有關(guān)的參數(shù)記錄在上迷第四數(shù)組中。
6. 根據(jù)權(quán)利要求l的方法,還包括根據(jù)上述誤差向量,計算上述多個候選脈沖的各個與上述輸入信號的 誤差;在上述多個候選脈沖中,確定與上述輸入信號的誤差的均方差最小的 脈沖;以及確定與上述輸入信號的誤差的均方差最小的脈沖的量化參數(shù),作為上 述輸入信號的量化參數(shù)。
7. —種多脈沖最大似然量化濾波裝置,包括誤差計算單元,該誤差計 算單元包括用于計算輸入信號的誤差向量的誤差向量計算單元,上述誤差向量計算單元包括數(shù)組擴展單元,用于將存儲脈沖響應(yīng)的第 一數(shù)組擴展為具有兩倍的元 素數(shù)的第二數(shù)組,其中,將上述第一數(shù)組中所存儲的各脈沖響應(yīng)值設(shè)置到上述第二數(shù)組的后半部分,將該第二數(shù)組的前半部分填充為0;數(shù)組獲取單元,用于獲取記錄有預(yù)先從上述輸入信號搜索出的多個候 選脈沖的位置的第三數(shù)組以及記錄有這些候選脈沖的參數(shù)值的第四數(shù)組; 以及點積計算單元,用于循環(huán)求取上述第四數(shù)組中的每一元素與上述第二 數(shù)組中的多個元素的點積的累計,以形成上述輸入信號的誤差向量。
8. 才艮據(jù)權(quán)利要求7的裝置,其中上述點積計算單元利用外層循環(huán)變量 從子幀長度-l到0、內(nèi)層循環(huán)變量從O到候選脈沖數(shù)-l的嵌套循環(huán),求取 上述第四數(shù)組中的每一元素與上述第二數(shù)組中的多個元素的點積的累計, 其中在點積計算中利用上述內(nèi)層循環(huán)變量指示上述第四數(shù)組中的元素位 置,利用(子幀長度+外層循環(huán)變量-上述第三數(shù)組中由上述內(nèi)層循環(huán)變量 所指示的位置處的元素值)指示上述第二數(shù)組中的元素位置。
9. 根據(jù)權(quán)利要求7的裝置,其中上迷點積計算單元利用外層循環(huán)變量 從0到候選脈沖數(shù)-l、內(nèi)層循環(huán)變量從子幀長度-1到0的嵌套循環(huán),求取 上述第四數(shù)組中的每一元素與上述第二數(shù)組中的多個元素的點積的累計, 其中在點積計算中利用外層循環(huán)變量指示上述第四數(shù)組中的元素位置,利 用(子幀長度+內(nèi)層循環(huán)變量-上述第三數(shù)組中由外層循環(huán)變量所指示的位 置處的元素值)指示上述第二數(shù)組中的元素位置。
10. 根據(jù)權(quán)利要求7的裝置,其中上述點積計算單元利用外層循環(huán)變 量從0到候選脈沖數(shù)-l、內(nèi)層循環(huán)變量從O到子幀長度-l的嵌套循環(huán),利 用SIMD指令求取上述第四數(shù)組中的每一元素與上述第二數(shù)組中的多個元 素的點積的累計,其中在點積計算中利用外層循環(huán)變量指示上述第四數(shù)組 中的元素位置,利用(內(nèi)層循環(huán)變量+子幀長度-上迷第三數(shù)組中由外層循 環(huán)變量所指示的位置處的元素值)指示上述第二數(shù)組中的元素位置。
11. 根據(jù)權(quán)利要求7的裝置,還包括互相關(guān)數(shù)組計算單元,用于計算上述輸入信號與上述笫 一數(shù)組中所存儲的脈沖響應(yīng)的互相關(guān)數(shù)組;最大幅值脈沖確定單元,用于找出上述互相關(guān)數(shù)組中最大的元素,以 確定上述輸入信號中最大幅值脈沖所在的位置;增益量化單元,用于計算出上述最大幅值脈沖的增益并進^f亍量化;脈沖搜索單元,用于根據(jù)上述最大幅值脈沖及其量化的增益,在上述 輸入信號中、在預(yù)定范圍內(nèi)搜索預(yù)定數(shù)量的多個脈沖,以與上述最大幅值 脈沖一起作為上述多個候選脈沖;以及脈沖記錄單元,用于將上述多個候選脈沖在上述輸入信號中的位置記 錄在上述第三數(shù)組中,并且將上述多個候選脈沖的、與增益有關(guān)的參數(shù)記 錄在上述第四數(shù)組中。
12.根據(jù)權(quán)利要求7的裝置,其中上述誤差計算單元根據(jù)上述誤差向 量,計算上述多個候選脈沖的各個與上述輸入信號的誤差;該裝置還包括量化參數(shù)確定單元,用于在上述多個候選脈沖中確定與上述輸入信號 的誤差的均方差最小的脈沖,進而確定該脈沖的量化參數(shù),作為上述輸入 信號的量化參數(shù)。
全文摘要
本發(fā)明提供了一種MP-MLQ濾波方法和裝置。該方法在計算輸入信號的誤差向量中包括將存儲脈沖響應(yīng)的第一數(shù)組擴展為具有兩倍的元素數(shù)的第二數(shù)組,其中,上述第一數(shù)組中所存儲的各脈沖響應(yīng)值被設(shè)置到上述第二數(shù)組的后半部分,該第二數(shù)組的前半部分被填充為0;獲取記錄有預(yù)先從上述輸入信號搜索出的多個候選脈沖的位置的第三數(shù)組以及記錄有這些候選脈沖的參數(shù)值的第四數(shù)組;以及循環(huán)求取上述第四數(shù)組中的每一元素與上述第二數(shù)組中的多個元素的點積的累計,以形成上述輸入信號的誤差向量。在本發(fā)明中,通過將存儲脈沖響應(yīng)的數(shù)組擴展為具有兩倍的元素數(shù)的數(shù)組,能夠滿足作為下標(biāo)的變量的值范圍,消除條件分支,提升MP-MLQ濾波性能。
文檔編號H04B14/04GK101621339SQ200810127270
公開日2010年1月6日 申請日期2008年6月30日 優(yōu)先權(quán)日2008年6月30日
發(fā)明者江 余, 義 曾, 朱振博, 潘寧河, 王艷琦 申請人:國際商業(yè)機器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
自治县| 沾益县| 玛多县| 靖西县| 东城区| 苏州市| 尚志市| 夏河县| 博爱县| 肥东县| 忻州市| 固阳县| 岑巩县| 镇安县| 新河县| 巴里| 青田县| 旌德县| 马龙县| 岚皋县| 柏乡县| 巫山县| 邻水| 偏关县| 临武县| 楚雄市| 运城市| 桦川县| 永新县| 县级市| 鹿泉市| 汽车| 辛集市| 乌拉特后旗| 揭东县| 辽阳县| 安义县| 景德镇市| 襄城县| 民乐县| 阳信县|