本發(fā)明屬于數(shù)字電路設(shè)計(jì)領(lǐng)域,具體涉及一種支持語音實(shí)時(shí)分解/合成的伽馬通濾波器組芯片系統(tǒng)。
背景技術(shù):
在聽覺研究領(lǐng)域,聽覺濾波器通常被用來模擬人耳尤其是基底膜的感知過程,伽馬通濾波器(Gammatone Filter,GTF)因?yàn)楸容^符合基底膜的濾波特性而被廣泛采用。人耳對(duì)語音的處理過程可以用一組伽馬通濾波器來模擬,這些濾波器可以模仿人耳的處理過程,將語音分解到不同的子帶上。
在應(yīng)用中,伽馬通濾波器組(Gammatone Filterbank,GTFB)遇到的一大瓶頸就是計(jì)算復(fù)雜度高,雖然隨著處理器的計(jì)算能力日益提升,這一問題在不久的將來可能會(huì)得到解決,但是在手機(jī)、助聽器等移動(dòng)設(shè)備上,還面臨著功耗的限制,這一瓶頸在短期內(nèi)仍無法解決,因此仍然需要專門針對(duì)通濾波器組的芯片?,F(xiàn)今伽馬通濾波器組的研究大多停留在軟件仿真階段,也有少部分通過模擬電路實(shí)現(xiàn),但是模擬電路實(shí)現(xiàn)的伽馬通濾波器組因可靠性較差而無法被廣泛應(yīng)用?;跀?shù)字電路的伽馬通濾波器有很多種,但是能夠支持語音實(shí)時(shí)分解/合成的伽馬通濾波器組卻很少。
現(xiàn)有的一種使用數(shù)字電路實(shí)現(xiàn)的GTFB芯片系統(tǒng)如圖1所示,該系統(tǒng)的工作主頻為100MHz,可以根據(jù)不同需要設(shè)置在不同模式下,分別實(shí)時(shí)地將語音信號(hào)分解到16、32、64以及128個(gè)頻率子帶上。該系統(tǒng)包括存儲(chǔ)運(yùn)算模塊、控制模塊、輸入延時(shí)模塊、接口模塊和由分頻器、ARM、輸出控制器、模式選擇器及總線組成的其他配置模塊。圖中clk_dom為主時(shí)鐘,主要用于控制狀態(tài)機(jī)的工作,經(jīng)過分頻器生成時(shí)鐘clk_run。we_n為輸入數(shù)據(jù)時(shí)使用的時(shí)鐘,oe_n為輸出數(shù)據(jù)時(shí)使用的時(shí)鐘。各模塊具體組成如下:
存儲(chǔ)運(yùn)算模塊由核心的運(yùn)算單元以及中間數(shù)據(jù)存儲(chǔ)器和系數(shù)存儲(chǔ)器組成。運(yùn)算單元完成系統(tǒng)核心的計(jì)算任務(wù),各通道數(shù)據(jù)逐點(diǎn)計(jì)算。系數(shù)存儲(chǔ)器是一個(gè)只讀存儲(chǔ)器(Read-Only Memory,ROM),存儲(chǔ)著四種不同模式下各個(gè)通道的濾波器系數(shù)。系數(shù)存儲(chǔ)器在控制總線的作用下在特定的時(shí)刻根據(jù)系統(tǒng)地址向運(yùn)算單元提供濾波器系數(shù)。運(yùn)算單元在不同的濾波器系數(shù)下具有了不同的濾波特性。在計(jì)算過程中產(chǎn)生的中間數(shù)據(jù)存儲(chǔ)到中間數(shù)據(jù)存儲(chǔ)器上以保證運(yùn)算單元計(jì)算不同通道的數(shù)據(jù)的連續(xù)性。中間數(shù)據(jù)寄存器由隨機(jī)存儲(chǔ)器(Random Access Memory,RAM)構(gòu)成,能快速的存取數(shù)據(jù)。
控制模塊由主狀態(tài)機(jī)和系統(tǒng)地址產(chǎn)生單元組成。主狀態(tài)機(jī)控制產(chǎn)生系統(tǒng)核心的五個(gè)狀態(tài),其中四個(gè)為計(jì)算過程的主要狀態(tài),作為控制總線輸出從而控制系統(tǒng)的運(yùn)行。此外主狀態(tài)機(jī)還負(fù)責(zé)將總線上的輸入信號(hào)讀入系統(tǒng)內(nèi)部。系統(tǒng)地址產(chǎn)生單元在控制總線的作用下依次產(chǎn)生系統(tǒng)所需的地址。系統(tǒng)地址即為當(dāng)前需要計(jì)算的通道序號(hào)。當(dāng)系統(tǒng)產(chǎn)生單元產(chǎn)生的地址到最大值后使能信號(hào)無效,主狀態(tài)機(jī)復(fù)位,主狀態(tài)機(jī)重新開始工作。每計(jì)算一個(gè)通道需要7個(gè)子狀態(tài)周期。
輸入延時(shí)模塊由輸入延時(shí)移位寄存器和延時(shí)地址產(chǎn)生單元兩部分組成。此模塊的主要作用是根據(jù)當(dāng)前需要計(jì)算的通道序號(hào)調(diào)節(jié)輸入的延時(shí),不同的通道輸入的延時(shí)不同。等效對(duì)不同的通道的輸出做相應(yīng)的延時(shí)。目的是進(jìn)行延時(shí)補(bǔ)償,從而實(shí)現(xiàn)實(shí)時(shí)的對(duì)伽馬通濾波器組的輸出進(jìn)行綜合。
接口模塊和由分頻器及總線組成的其他配置模塊主要用來輔助控制模塊工作。在讀狀態(tài)下,系統(tǒng)根據(jù)控制信號(hào)的地址總線和控制總線讀取數(shù)據(jù),提供計(jì)算所需的參數(shù)和輸入輸出相關(guān)語音數(shù)據(jù);在寫狀態(tài)下,系統(tǒng)根據(jù)控制信號(hào)的地址總線和控制總線保存中間計(jì)算數(shù)據(jù),同時(shí)將輸出存入輸出模塊的RAM中。狀態(tài)機(jī)進(jìn)入工作狀態(tài)后,按照產(chǎn)生的地址總線,不停的在讀寫狀態(tài)之間跳轉(zhuǎn),每完成一個(gè)通道的讀寫地址加1,直到完成所有通道的讀寫。
上述系統(tǒng)的不足是:
1.上述系統(tǒng)每計(jì)算一個(gè)通道需要4個(gè)狀態(tài),每個(gè)狀態(tài)包含7個(gè)時(shí)鐘周期,這樣,當(dāng)輸入語音采樣率fs為16KHz時(shí),通道數(shù)M為128時(shí),主頻頻率高達(dá)57.3M,考慮到其它開銷,實(shí)際應(yīng)用中需要時(shí)鐘為80MHz以上,導(dǎo)致功耗過大,不符合移動(dòng)設(shè)備中功耗低的要求,也無法處理采樣率更高、品質(zhì)更好的語音。
2.上述系統(tǒng)的參數(shù)被存儲(chǔ)在ROM中,一旦設(shè)定參數(shù),系統(tǒng)就無法更改,大大限制了芯片的靈活性和可重復(fù)性。
3.上述系統(tǒng)計(jì)算過程中依次計(jì)算每個(gè)點(diǎn)的各通道數(shù)據(jù),由于每個(gè)通道用到的參數(shù)、中間計(jì)算結(jié)果等各不相同,因此每計(jì)算一個(gè)通道的數(shù)據(jù),都需要從RAM中讀取和存儲(chǔ)大量數(shù)據(jù),造成頻繁地訪問RAM,增加了功耗,同時(shí)也為芯片實(shí)現(xiàn)中的布局布線帶來了困難。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是為了克服已有技術(shù)的不足之處,提供了一種支持語音實(shí)時(shí)分解/合成的伽馬通濾波器組芯片系統(tǒng)。本發(fā)明提出的系統(tǒng)減少了計(jì)算各通道時(shí)消耗的時(shí)鐘數(shù)目,每計(jì)算一個(gè)通道只需要兩個(gè)時(shí)鐘周期,降低了工作主頻,節(jié)省了功耗;同時(shí)系統(tǒng)按幀處理語音,每幀的語音長度為L,處理過程使用了流水線技術(shù),將RAM的接口總數(shù)也降低到原來的1/L,減小了延時(shí)和功耗;此外,本發(fā)明的系統(tǒng)還實(shí)現(xiàn)了參數(shù)可配置功能,可以根據(jù)需要靈活調(diào)整伽馬通濾波器組中的通道數(shù)目、增益、濾波器抽頭系數(shù)等系統(tǒng)參數(shù)。
一種支持語音實(shí)時(shí)分解/合成的伽馬通濾波器組芯片系統(tǒng),其特征在于,該系統(tǒng)由輸入模塊、參數(shù)模塊、控制模塊、計(jì)算模塊和輸出模塊五部分組成;輸入模塊接收完一幀的語音數(shù)據(jù)后,產(chǎn)生激活信號(hào)來激活控制模塊;然后在控制模塊的控制下,輸入模塊根據(jù)不同子帶上人耳基底膜的延時(shí)來調(diào)整各通道的延時(shí),并將經(jīng)過延時(shí)調(diào)整后的語音數(shù)據(jù)提供給計(jì)算模塊,同時(shí)控制模塊控制參數(shù)模塊讀取對(duì)應(yīng)通道的參數(shù),并將參數(shù)傳輸給計(jì)算模塊;計(jì)算模塊根據(jù)參數(shù),同時(shí)結(jié)合自己內(nèi)部存儲(chǔ)的中間運(yùn)算數(shù)據(jù),完成本通道的伽馬通濾波算法,并將結(jié)果存入輸出模塊中;計(jì)算模塊完成該幀語音數(shù)據(jù)的所有通道計(jì)算后,輸出模塊將存儲(chǔ)的數(shù)據(jù)供外部進(jìn)行讀取。
本發(fā)明的特點(diǎn)及有益效果在于:
1)本發(fā)明系統(tǒng)的工作主頻低,每計(jì)算一個(gè)通道僅需要2個(gè)時(shí)鐘周期,對(duì)于輸入為16KHz的語音,計(jì)算64個(gè)通道,僅需要4MHz的工作主頻。
2)本發(fā)明將每比特系統(tǒng)訪問RAM的頻率降低到原來的1/L,同時(shí)RAM的接口總數(shù)也降低到原來的1/L,進(jìn)一步降低了延時(shí)和功耗。
3)本發(fā)明系統(tǒng)支持任意階的伽馬通濾波電路的計(jì)算。
4)本發(fā)明系統(tǒng)參數(shù)是可配置的,可以根據(jù)需要靈活調(diào)整伽馬通濾波器組中的通道數(shù)目和增益、濾波器抽頭系數(shù)等系統(tǒng)參數(shù)。
5)本發(fā)明不僅能完成語音分解操作,而且還提供了語音分解的逆變換過程,支持后續(xù)對(duì)語音的合成操作,只需要將各子帶的語音直接相加即可恢復(fù)原始語音。
附圖說明
圖1為現(xiàn)有的一種伽馬通濾波器組芯片系統(tǒng)結(jié)構(gòu)圖。
圖2為本發(fā)明的一種支持語音實(shí)時(shí)分解/合成的伽馬通濾波器組芯片系統(tǒng)結(jié)構(gòu)圖。
圖3為本發(fā)明系統(tǒng)的計(jì)算單元中N級(jí)級(jí)聯(lián)的伽馬通濾波器電路中的第n級(jí)濾波器電路結(jié)構(gòu)圖。
具體實(shí)施方式
本發(fā)明提出的一種支持語音實(shí)時(shí)分解/合成的伽馬通濾波器組芯片系統(tǒng),下面結(jié)合附圖及具體實(shí)施例進(jìn)一步說明如下:
本發(fā)明提出的一種支持語音實(shí)時(shí)分解/合成的伽馬通濾波器組芯片系統(tǒng),本發(fā)明中設(shè)定輸入語音為x(k),幀長L=2F,伽馬通濾波器的階數(shù)為N,通道數(shù)目M=2C,通道的中心頻率fc,地址總線AddrBus的位寬為F+C。
該系統(tǒng)由輸入模塊、參數(shù)模塊、控制模塊、計(jì)算模塊和輸出模塊五部分組成;輸入模塊接收完一幀的語音數(shù)據(jù)后,產(chǎn)生激活信號(hào)來激活控制模塊;然后在控制模塊的控制下,輸入模塊根據(jù)不同子帶上人耳基底膜的延時(shí)來調(diào)整各通道的延時(shí),并將經(jīng)過延時(shí)調(diào)整后的語音數(shù)據(jù)提供給計(jì)算模塊,同時(shí)控制模塊控制參數(shù)模塊讀取對(duì)應(yīng)通道的參數(shù),并將參數(shù)傳輸給計(jì)算模塊;計(jì)算模塊根據(jù)參數(shù),同時(shí)結(jié)合自己內(nèi)部存儲(chǔ)的中間運(yùn)算數(shù)據(jù),完成本通道的伽馬通濾波算法,并將結(jié)果存入輸出模塊中;計(jì)算模塊完成該幀語音數(shù)據(jù)的所有通道計(jì)算后,輸出模塊將存儲(chǔ)的數(shù)據(jù)供外部進(jìn)行讀取;隨后,外部接著輸入下一幀的語音數(shù)據(jù),如此系統(tǒng)一直循環(huán)工作下去。
該系統(tǒng)工作時(shí),包括對(duì)語音的分解過程和合成過程;分解過程為每次按幀來接收語音,一幀長度為L個(gè)語音,通過M個(gè)伽馬通濾波器將語音分解到M個(gè)子帶上,系統(tǒng)分M批次計(jì)算,每一批次按輸入順序計(jì)算同一個(gè)通道內(nèi)的L個(gè)語音,每計(jì)算一個(gè)通道用2個(gè)時(shí)鐘周期;語音的合成過程為分解過程的逆變換,即把不同子帶上的語音直接相加,即可重新合成為原始語音。
本發(fā)明系統(tǒng)的各模塊具體組成結(jié)構(gòu)如圖2所示,分別說明如下:
輸入模塊由寫地址發(fā)生器、讀地址譯碼器、讀寫控制器和輸入RAM四部分組成。輸入模塊功能:1)首先緩存輸入的語音數(shù)據(jù),接收完語音后產(chǎn)生激活控制模塊的使能信號(hào)EnCtrl;2)控制模塊被激活后,在控制模塊的控制下,根據(jù)通道的中心頻率fc來調(diào)整輸入的通道延時(shí)Dm(m代表通道序列號(hào))。通道延時(shí)Dm由參數(shù)模塊提供,延時(shí)調(diào)整后的語音xm(k)輸出給計(jì)算模塊。該模塊具體實(shí)施方式及功能說明如下:
輸入模塊中的輸入RAM采用常規(guī)的RAM器件,該器件的數(shù)據(jù)深度Lm是2的整數(shù)次冪且大于等于幀長與最大通道延時(shí)的和,如式(1)所示:
輸入模塊中的寫地址發(fā)生器采用一個(gè)常規(guī)的計(jì)數(shù)器,用于產(chǎn)生寫地址AddrInW和激活控制模塊的信號(hào)EnCtrl,每輸入一個(gè)語音信號(hào),寫地址AddrInW加1,當(dāng)輸入完L(一般為0-10000的某個(gè)整數(shù))個(gè)語音信號(hào),EnCtrl信號(hào)轉(zhuǎn)為有效。
讀地址譯碼器用來產(chǎn)生讀地址AddrInR,讀地址譯碼器內(nèi)部含有專門存儲(chǔ)通道延時(shí)Dm的寄存器(由具體工藝決定),它每次在本通道的最后一個(gè)寫狀態(tài)時(shí)更新,即當(dāng)?shù)刂房偩€AddrBus[F-1:0]上各位全為1且EnWrite為高電平時(shí)更新。讀地址AddrInR的譯碼公式為:
AddrInR[P-1:0]=AddrInW[P-1:0]-L-Dm (2)
圖2中輸入模塊的的讀寫控制器用來控制輸入RAM的讀寫:當(dāng)信號(hào)Full為低電平時(shí),輸入RAM的寫操作有效;當(dāng)信號(hào)Full為高電平且EnRead為高電平時(shí),輸入RAM的讀操作有效。
按照以上操作,輸入RAM的輸出為:
xm(k)=x(k-Dm) (3)
控制模塊由激活檢測單元、狀態(tài)機(jī)和地址總線發(fā)生器組成??刂颇K控制著輸入模塊的讀操作、參數(shù)模塊的讀操作、計(jì)算模的讀和寫操作、輸出模塊的寫操作,并產(chǎn)生相應(yīng)的地址總線和讀寫控制信號(hào)。激活檢測單元檢測到激活信號(hào)EnCtrl后,產(chǎn)生Full信號(hào),狀態(tài)機(jī)被激活。
狀態(tài)機(jī)被激活后會(huì)在讀狀態(tài)EnRead和寫狀態(tài)EnWrite之間不停地跳轉(zhuǎn),循環(huán)次數(shù)為L×M,所以每計(jì)算一路通道,只需要兩個(gè)狀態(tài)。計(jì)算完L×M路通道的值后,控制模塊產(chǎn)生使能信號(hào)Ready,外部檢測到信號(hào)Ready后會(huì)依次讀取L×M個(gè)計(jì)算結(jié)果,然后控制模塊又進(jìn)入等待狀態(tài)直到下一幀數(shù)據(jù)到來,如此循環(huán)一直下去,故每計(jì)算一個(gè)通道僅需要2個(gè)時(shí)鐘周期,大大提高了工作效率。
地址總線發(fā)生器由計(jì)數(shù)器構(gòu)成,狀態(tài)機(jī)每完成一個(gè)循環(huán),地址總線AddrBus加1。當(dāng)AddrBus各位全為1后,控制模塊停止工作并產(chǎn)生Ready信號(hào)。
參數(shù)模塊由寫地址發(fā)生器、讀寫控制器、讀地址譯碼器、參數(shù)寄存器和參數(shù)RAM五部分組成。參數(shù)模塊的作用是為計(jì)算單元提供通道的濾波器系數(shù)
系統(tǒng)在初始化之后會(huì)分L-1次從外部接收并將M個(gè)通道的2N+2個(gè)參數(shù)存入?yún)?shù)RAM里,系統(tǒng)可以根據(jù)需要調(diào)整參數(shù)的值,從而達(dá)到靈活調(diào)整參數(shù)如伽馬通濾波器組中的通道數(shù)目和增益、濾波器抽頭系數(shù)等系統(tǒng)參數(shù)的目的。然后系統(tǒng)進(jìn)入正常的工作狀態(tài),此時(shí)每次在計(jì)算一個(gè)通道的L個(gè)點(diǎn)過程中,會(huì)分L-1批次從參數(shù)RAM讀取下一個(gè)通道的2N+2個(gè)參數(shù),當(dāng)計(jì)算第M個(gè)通道時(shí),會(huì)讀取第1個(gè)通道的參數(shù)。同時(shí)讀取的參數(shù)會(huì)被存儲(chǔ)在參數(shù)寄存器中,等待計(jì)算模塊讀取。因此每個(gè)通道的參數(shù)在上一個(gè)通道已經(jīng)預(yù)先讀取,并且參數(shù)在整個(gè)通道的計(jì)算過程中保持不變,故每比特訪問參數(shù)RAM的頻率降低了L倍,每次訪問參數(shù)RAM的位寬也降低L倍。
寫地址發(fā)生器由計(jì)數(shù)器構(gòu)成,每輸入一個(gè)參數(shù),寫地址AddrPrW加1,AddrPrW的位寬為F+C。
讀地址譯碼器,譯碼公式為:
AddrPrR[F+C-1:0]={AddrBus[F-1:0],AddrBus[F+C-1:F]} (4)
讀寫控制器控制參數(shù)RAM的讀寫:當(dāng)Enp(控制信號(hào))為高電平時(shí),參數(shù)RAM寫操作有效;當(dāng)Enp為低電平且EnRead為高電平且AddrBus[F-1:0]<L-1時(shí),參數(shù)RAM讀操作有效。
參數(shù)寄存器會(huì)在Enp為低電平時(shí)且EnWrite為高電平且AddrBus[F-1:0]<L-1時(shí),將參數(shù)RAM的輸出存入?yún)?shù)寄存器中。
計(jì)算模塊由讀地址譯碼器、寫地址譯碼器、讀寫控制器、計(jì)算RAM、中間變量讀取寄存器、中間變量存儲(chǔ)寄存器和計(jì)算單元組成。計(jì)算模塊負(fù)責(zé)完成伽馬通濾波算法,并將計(jì)算ym(k)結(jié)果傳輸給輸出模塊,同時(shí)在讀狀態(tài)EnRead時(shí)分L批次讀取下一個(gè)通道的中間變量,在寫狀態(tài)EnWrite分L批次存儲(chǔ)上一個(gè)通道的變量。
讀地址譯碼器,讀地址AddrCpuW的位寬為F+C,譯碼公式為:
AddrPrR[F+C-1:0]={AddrBus[F+C-1:F]+1,AddrBus[F-1:0]} (5)
寫地址譯碼器,寫地址AddrCpuW的位寬為F+C,譯碼公式為:
AddrPrR[F+C-1:0]={AddrBus[F+C-1:F]-1,AddrBus[F-1:0]} (6)
讀寫控制器控制計(jì)算RAM的讀寫:在讀狀態(tài)EnRead有效時(shí),計(jì)算RAM的讀操作有效;在寫狀態(tài)EnWrite有效時(shí),計(jì)算RAM的寫操作有效。
中間變量存儲(chǔ)寄存器存儲(chǔ)本通道的最后一個(gè)點(diǎn)的中間變量,該值由計(jì)算單元提供,它在每個(gè)通道的第一個(gè)讀狀態(tài)更新,即AddrBus[F-1:0]的各位全為0且EnRead為高電平時(shí)更新,該值會(huì)在下一個(gè)通道分L批次存入計(jì)算RAM中。
中間變量讀取寄存器存儲(chǔ)上一幀本通道的中間變量,該值會(huì)在本通道內(nèi)分L批次從計(jì)算RAM中讀取。計(jì)算模塊在本通道內(nèi)的L個(gè)讀狀態(tài)中分L批次從計(jì)算RAM讀取該值、并在寫狀態(tài)分L批次存入中間變量讀取寄存器。
計(jì)算單元含有專門存儲(chǔ)參數(shù)的寄存器、專門存儲(chǔ)中間變量的寄存器和伽馬通濾波器電路。
專門存儲(chǔ)參數(shù)的寄存器在每通道的第一個(gè)讀狀態(tài)EnRead更新一次,即當(dāng)AddrBus[F-1:0]里各位全為0且EnRead為高電平時(shí)更新,該值來自于參數(shù)模塊中的參數(shù)寄存器。
專門存儲(chǔ)中間變量的寄存器在讀狀態(tài)EnRead為高電平時(shí)都會(huì)更新,在每個(gè)通道的第一個(gè)讀狀態(tài),即AddrBus[F-1:0]的各位全為0且EnRead為高電平時(shí),讀取中間變量讀取寄存器里的值,在其余讀狀態(tài)時(shí)讀取的是計(jì)算單元本身產(chǎn)生的中間變量,即上一個(gè)點(diǎn)的中間變量。
伽馬通濾波器電路中需要保存中間變量的選取可以根據(jù)需要來選取。其中一種可選的方案是保存其中n=1~N。這里伽馬通濾波器使用了N級(jí)流水線的結(jié)構(gòu),每一級(jí)的電路結(jié)構(gòu)如圖3所示,第m組濾波器中第n級(jí)的的輸入信號(hào)經(jīng)過各濾波器抽頭系數(shù)的加權(quán)后得到該級(jí)的輸出信號(hào)同時(shí)也向輸入模塊提供相位補(bǔ)償信息Dm。輸入信號(hào)經(jīng)過該級(jí)濾波器各抽頭系數(shù)的加成后得到該級(jí)的輸出信號(hào),因此該結(jié)構(gòu)支持任意N階伽馬通濾波器的計(jì)算,只需要使用N個(gè)圖3中的結(jié)構(gòu)級(jí)聯(lián)起來即可實(shí)現(xiàn)任意階的伽馬通濾波器的計(jì)算,每一級(jí)的具體計(jì)算表達(dá)式如下:
輸出模塊由寫地址譯碼器、讀地址發(fā)生器、讀寫控制器和輸出RAM組成。輸出模塊負(fù)責(zé)在寫狀態(tài)EnWrite有效時(shí)將計(jì)算模塊的輸出ym(k)存入輸出RAM,等計(jì)算完所有通道后,外部檢測到Ready信號(hào)后會(huì)讀取輸出模塊中存儲(chǔ)的計(jì)算結(jié)果。
寫地址譯碼器負(fù)責(zé)產(chǎn)生寫地址AddrOutWt,具體譯碼公式為:
AddrOutW[F+C-1:0]={AddrBus[F-1:0],AddrBus[F+C-1:F]} (11)
讀地址發(fā)生器由計(jì)數(shù)器構(gòu)成,負(fù)責(zé)產(chǎn)生讀地址AddrOutR,每讀取一個(gè)信號(hào),讀地址AddrOutR加1。
讀寫控制器負(fù)責(zé)控制輸出RAM的讀寫:當(dāng)Ready信號(hào)為低電平且寫狀態(tài)EnWrite為高電平時(shí),輸出RAM的寫操作有效;當(dāng)Ready為高電平時(shí),輸出RAM的讀操作有效
本發(fā)明系統(tǒng)可以由本領(lǐng)域技術(shù)人員采用常規(guī)CMOS工藝實(shí)現(xiàn)。應(yīng)用本系統(tǒng)的工作過程實(shí)施例,包括以下步驟:
1.初始化操作:這一階段系統(tǒng)所有寄存器和RAM會(huì)被初始化為零。
2.傳輸參數(shù)階段:該階段,輸入信號(hào)Enp變?yōu)楦咂剑獠繒?huì)分L-1批次向系統(tǒng)傳輸M個(gè)通道的所有參數(shù),總共(2N+2)×M個(gè)參數(shù)。此后,系統(tǒng)進(jìn)入正常工作狀態(tài),重復(fù)以下步驟3-5的操作;
3.外部會(huì)向系統(tǒng)的輸入模塊傳輸一幀數(shù)據(jù),總共L個(gè)語音數(shù)據(jù),輸入完畢后產(chǎn)生使能信號(hào)EnCtrl,將控制模塊從休眠狀態(tài)激活;
4.控制模塊被激活以后,狀態(tài)機(jī)開始運(yùn)轉(zhuǎn),狀態(tài)機(jī)總共有兩個(gè)狀態(tài):讀取狀態(tài)和寫入狀態(tài)。讀取狀態(tài)下會(huì)讀取數(shù)據(jù),寫入狀態(tài)下會(huì)將數(shù)據(jù)寫入RAM。每L個(gè)讀取狀態(tài)和存儲(chǔ)狀態(tài)完成一個(gè)通道的計(jì)算,L×M個(gè)讀取狀態(tài)和存儲(chǔ)狀態(tài)完成所有通道的計(jì)算??刂颇K控制著輸入模塊的讀操作、參數(shù)模塊的讀操作、計(jì)算模的讀和寫操作、輸出模塊的寫操作,并產(chǎn)生相應(yīng)的地址總線和讀寫控制信號(hào)。
A.讀取狀態(tài)下的各模塊
1)讀取狀態(tài)下的參數(shù)模塊:
參數(shù)模塊會(huì)分L-1批次在讀狀態(tài)從參數(shù)RAM中讀取下一個(gè)通道的2N+2個(gè)參數(shù),然后在L-1個(gè)寫狀態(tài)分L-1批次將參數(shù)存儲(chǔ)在參數(shù)寄存器中,因此每個(gè)通道的參數(shù)在上一個(gè)通道已經(jīng)預(yù)先被讀取,等待輸入模塊讀取參數(shù)D、計(jì)算模塊讀取其余參數(shù)Dm。
2)讀取狀態(tài)下的計(jì)算模塊:
a)計(jì)算模塊會(huì)在每個(gè)通道的第一個(gè)讀取狀態(tài)即當(dāng)AddrBus[F-1:0]里各位全為0且EnRead為高電平時(shí)更新計(jì)算單元里a1~a4、a1、a2、g1~g4的值,這些參數(shù)的值由參數(shù)模塊中的參數(shù)寄存器提供,此后計(jì)算單元中的參數(shù)保持不變,直至計(jì)算完本通道的所有點(diǎn);
b)計(jì)算模塊在每個(gè)讀取狀態(tài)都會(huì)更新計(jì)算單元中的中間變量,在每個(gè)通道的第一個(gè)讀狀態(tài),即AddrBus[F-1:0]的各位全為0且EnRead為高電平時(shí),讀取中間變量讀取寄存器中的值;在其余取狀態(tài)時(shí)讀取的是計(jì)算單元本身產(chǎn)生的中間變量,即本通道內(nèi)上一個(gè)點(diǎn)的中間變量。
c)計(jì)算模塊還會(huì)在本能通道的L個(gè)讀狀態(tài)分L批次讀取計(jì)算RAM中存儲(chǔ)的下一個(gè)通道的中間變量,然后在L個(gè)寫狀態(tài)分L批次將它們存入中間變量讀取寄存器中,等待計(jì)算單元在下一個(gè)通道的第一個(gè)讀狀態(tài)讀取。
d)計(jì)算模塊在每個(gè)通道的第一個(gè)讀狀態(tài),即AddrBus[F-1:0]的各位全為0且EnRead為高電平時(shí),更新中間變量存儲(chǔ)寄存器中的值,該值由計(jì)算單元提供,它會(huì)在后面的L個(gè)寫狀態(tài)分L批次存入計(jì)算RAM中。
B.寫入狀態(tài)下的各模塊:
1)寫入狀態(tài)下的計(jì)算模塊:計(jì)算模塊會(huì)分L批次將中間變量存儲(chǔ)寄存器存儲(chǔ)的中間變量存入計(jì)算RAM中。
2)寫入狀態(tài)下的輸出模塊:輸出模塊會(huì)在寫入狀態(tài)時(shí)將計(jì)算模塊的計(jì)算結(jié)果ym(k)存儲(chǔ)到輸出RAM中。
C.計(jì)算完一個(gè)通道內(nèi)的所有點(diǎn)以后,接著切換到下一個(gè)通道,按照上述流程計(jì)算,直到結(jié)算完所有通道。之后,控制模塊產(chǎn)生一個(gè)使能信號(hào),激活輸出模塊工作,其余模塊進(jìn)入休眠狀態(tài)。
5.輸出模塊被激活后,會(huì)等待外部讀取存儲(chǔ)在輸出模塊RAM中的數(shù)據(jù)。等外部讀出完信號(hào)以后,系統(tǒng)回到3階段,接著計(jì)算下一幀數(shù)據(jù)的計(jì)算。
6.語音的合成:本發(fā)明不僅能完成語音分解操作,而且還提供了語音分解的逆變換過程,支持后續(xù)對(duì)語音的合成操作,只需要將各子帶的語音直接相加即可恢復(fù)原始語音。