<listing id="vjp15"></listing><menuitem id="vjp15"></menuitem><var id="vjp15"></var><cite id="vjp15"></cite>
<var id="vjp15"></var><cite id="vjp15"><video id="vjp15"><menuitem id="vjp15"></menuitem></video></cite>
<cite id="vjp15"></cite>
<var id="vjp15"><strike id="vjp15"><listing id="vjp15"></listing></strike></var>
<var id="vjp15"><strike id="vjp15"><listing id="vjp15"></listing></strike></var>
<menuitem id="vjp15"><strike id="vjp15"></strike></menuitem>
<cite id="vjp15"></cite>
<var id="vjp15"><strike id="vjp15"></strike></var>
<var id="vjp15"></var>
<var id="vjp15"></var>
<var id="vjp15"><video id="vjp15"><thead id="vjp15"></thead></video></var>
<menuitem id="vjp15"></menuitem><cite id="vjp15"><video id="vjp15"></video></cite>
<var id="vjp15"></var><cite id="vjp15"><video id="vjp15"><thead id="vjp15"></thead></video></cite>
<var id="vjp15"></var>
<var id="vjp15"></var>
<menuitem id="vjp15"><span id="vjp15"><thead id="vjp15"></thead></span></menuitem>
<cite id="vjp15"><video id="vjp15"></video></cite>
<menuitem id="vjp15"></menuitem>

聲碼器特殊應用集成電路的制作方法

文檔序號:2822126閱讀:542來源:國知局
專利名稱:聲碼器特殊應用集成電路的制作方法
本申請是申請日為1995年2月13日申請號為第95190086.2號發明名稱為“聲碼器特殊應用集成電路”的中國專利申請的分案申請。
I.發明領域本發明涉及話音處理。本發明尤其涉及一種在特殊應用集成電路(application specific integrated circuits,簡稱為ASIC)中實現聲碼器的新的、改進的方法和裝置。
II.相關技術的描述采用數字技術來傳輸聲音已經相當普遍,特別是在長距離數字無線電話中應用更是普遍。若單單采用取樣和數字化處理來傳送話音,需要每秒64千比特(Kbps)的數據速率來獲得普通模擬電話的語音質量。然而,如果采用話音分析,隨后再進行恰當編碼、傳輸,并在接收器處合成,就可以大大減小數據速率。在發射機處進行話音分析和編碼,而在接收機處進行合成的裝置稱為聲碼器。
近年來數字蜂窩電話標準和系統的發展大大刺激了對這些聲碼器的需要。對更有效地采用已有傳輸帶寬并在接收機處更精確地再現源話音的先進聲碼器算法的要求增加了執行這些更復雜聲碼器算法所需的、具有更大運算能力的處理器的需要。
聲碼器利用話音中的長時間和短時間冗余,需要進行大量數值運算。這些運算包括長序列卷積、矩陣求逆、長序列相關等。這些實時進行的、在話音傳輸中不引入不可承受的編譯碼延遲的運算需要強有力的計算資源。
出現數字信號處理器(DSP)在能夠進行聲碼器算法的實時實現方面是一個重要因素。DSP在進行聲碼器算法的公用算術運算中具有很高的效率。DSP的進展使其運算能力增加到每秒四千萬條指令以上的速率。
用作典型目的聲碼器算法是可變速率編碼激勵線性預測(variable rate codeexcited linear prediction,簡稱為CELP)算法。這種算法詳見1993年1月14日申請的、申請號為08/004,484的共同待批的專利申請,其標題為“可變速率聲碼器(Variable Rate Vocoder)”該專利的申請權已轉讓給本發明的受讓人。上述專利申請中的內容在此引述供參考。
下表I是一個對單個20毫秒話音幀采用典型DSP來實施典型聲碼器算法的編碼部分的運行時間輪廓。因為典型聲碼器算法的編碼部分比起譯碼部分需要多得多的處理,所以表I中只詳細列出了編碼處理的詳細情況。表I中涉及的DSP的時鐘頻率是40MHz。視運算不同,在一個或多個時鐘周期內進行算術運算和其他運算。第一縱列代表典型聲碼算法的主要運算。第二縱列代表用典型的DSP來完成聲碼器算法的每一特定運算所需的時鐘周期數。第三縱列代表該特定運算點所需的總處理的百分比。典型的聲碼器算法要求所有運算在20毫秒內進行才能實時實施該算法。這就對所選擇的實施該算法的DSP提出一個要求,即DSP能夠以所要求的、在20毫秒幀內完成所要求處理的時鐘速率(或更高)進行運算。對表I所描述的典型DSP來說,這就將時鐘數限制為800,000。
表I
從表I可以看出,基音搜尋和碼書搜尋在聲碼器算法的編碼部分處理時間中占75%以上。因為大多數計算負荷集中在這兩個搜尋算法內,所以設計進行聲碼處理的有效ASIC的主要目標在于減少進行這兩種運算所需要的時鐘周期數。
本發明的方法和裝置大大減少了進行這些搜尋運算所必須的指令周期數。本發明還提供了對聲碼器算法具有特定意義的進行更為有效的運算的優化方法和裝置。本發明的方法和裝置并非僅限于典型的聲碼處理運算,或者僅用來進行話音編碼或譯碼。可以預計本方法和裝置可以用于任何采用數字信號處理算法的系統(如回聲消除器和信道均衡器)。
發明概述本發明是一種用來實施聲碼器算法的新的改進的方法和裝置。
本文中描述的本發明典型實施例是一種在前述共同待批的專利申請中詳述過的可變速率CELP算法的ASIC實現。本發明的特征同樣適用于任何一種線性預測編碼(LPC)算法。本發明引入了一種減少了的時鐘周期數和降低了的功耗來實施聲碼器算法的優化結構。其最終的優化目標在于使功耗降低到最小。使實現該算法所需的時鐘數減少與減少時鐘速率一樣直接和間接地降低功耗,也是一個人們所關心的問題。其直接效果是由于互補式金屬氧化物半導體(CMOS)器件的功耗和時鐘速率之間的關系。其間接效果在于CMOS器件中功耗和電壓之間的平方律關系,以及通過降低時鐘速率可降低電壓的能力。聲碼器ASIC的效率是每一時鐘周期所完成的處理量的量度。提高效率將減少完成該算法所需的時鐘周期總數。
提高聲碼器算法實施中的效率的第一種技術是一種專門DSP核心結構。該典型實施例的DSP核心通過提供三個隨機存取存儲器(RAM)元件來提高存儲器吞吐量。三個RAM元件中的每一個有一個專門的存儲地址發生單元。將存儲器一分為三使得能夠通過在一個周期中提供運算數、計算結果并存儲結果來有效地執行諸如遞歸卷積之類的運算。取運算數、計算結果以及存儲結果是通過流水線獲取的,從而在3個周期中進行完整的一個結果的遞歸卷積,但每一周期產生一個新的結果。一分為三的存儲器還減少了聲碼器算法中用于其他運算的時鐘周期需求。遞歸卷積的有效執行在聲碼器算法中提供了最有效的節約。
提高聲碼器算法實施中的效率的第二種技術是向DSP核心提供一個分立的從屬處理器,稱為最小化處理器,最小化處理器進行相關運算,計算均方誤差(SME),并在DSP核心提供給它的數據中尋找最小MSE。該最小化處理器與DSP核心一起分享運算量大的相關運算和最小化任務。最小化處理器配備有一個控制元件,該控制元件監督最小化處理器的運行,并在某些條件下能削減MSE最小化任務的運行。這些條件是那些由于數學約束繼續搜尋無法提供一個低于當前最小MSE的MSE。削減MSE最小化任務的方法稱為最小化處理器的節能模式。
提供典型實施例中聲碼器算法實施的效率的第三種方法是提供有效進行塊歸一化的專門硬件。在聲碼器算法的計算中,需要在計算中保持可能的最高水平的精度。通過提供專用硬件,可以在聲碼器算法中與其他運算同時進行塊歸一化,減少實施聲碼器算法所需的指令周期數。
圖面說明在參照附圖作了詳細說明以后,本發明的特征、目的和優點將變得更為清楚。圖中,相同的標號文字在所有圖中的函意相同。


圖1是本發明裝置的方框圖;圖2是本發明運行的功能描述;圖3是本發明典型編碼運行的流程圖;圖4a-d是一組不同速率下聲碼器位分配以及每一速率使用的基音和碼書子幀數的圖;圖5a-d是本發明DSP核心典型實施例的方框圖;圖6a-b是本發明最小化處理器典型實施例的方框圖;圖7描述的是本發明的典型實施例中實施的基音搜尋運行;圖8是本發明典型實施例的基音搜尋操作流程圖;圖9是本發明典型實施例中實施的碼書搜尋操作;圖10是本發明典型實施例的碼書搜尋操作流程圖;圖11是本發明的典型實施例的聲碼處理運行中,使通信鏈路一端處的編碼器和另一端處的譯碼器的濾波器存儲器保持相同的編碼器的譯碼器方框圖;圖12是本發明典型實施例的譯碼器方框圖。
最佳實施例的詳細描述下面參照附圖,圖1和圖5a-d中描述的DSP核心4是圍繞三重分區的隨機存取存儲器RAM(RAM A 104、RAM B 122和RAM C 182)、只讀存儲器ROM(ROM E 114)以及一有效算術邏輯裝置ALU(ALU 143)而設計的。三重分區的RAM提供了更有效的ALU利用,并在單個RAM所能取得的基礎上增大了RAM的帶寬。專用ROM(ROM E114)提供16位的常數。RAM分區(partition)RAM A 104、RAM B 122和RAM C 182以及ROM(ROM E114)把數據提供給ALU 143。RAM C 182從ALU 143接受并向ALU 143提供32位數據,而RAM A 104和RAM B 122接受并提供16位數據,高效率地進行16位運算數的計算以及32位結果的存儲。
每一分區有一專用地址產生單元。RAM A 104有地址單元A 102,RAM B 122有地址單元B 120,RAM C 182有地址單元186,而ROM E 114有地址單元E 112。每一地址單元由寄存器、多路復用器和加法器/減法器元件(未圖示)組成。在一個時鐘周期中,DSP核心4可以進行三次存儲器操作、三次地址更新、一次算術運算(例如相乘一累加一歸一),以及一次至最小化處理器6的數據移送。
指令ROM、ROM I 194存儲控制DSP核心4執行序列的指令。存儲在ROM I 194中的指令序列描述將由DSP核心4實施的處理功能。ROM I 194有一個專用地址產生單元,IP計數器和棧(stack)196。
RAM地址產生單元或寄存器文件、地址單元A 102、地址單元B 120和地址單元C 186提供相應RAM操作的地址和數據。數據可以從一些寄存器文件元件移送到同一地址單元中的另一些寄存器文件元件,或移送至各RAM。典型的實施例中,地址單元A 102通過多路復用器106將數據提供至RAM A 104,地址單元B 120通過多路復用器124將數據提供至RAM B 122,地址單元C 186通過多路復用器將數據提供至RAM C 182。
寄存器文件元件從同一地址單元中的其他寄存器文件元件接收直接數據、IMM(如圖5a-d中描述的那樣),或從RAM接受數據。所以,在所有情況下,術語“直接數據”指的是指令譯碼器192提供的數據。本典型實施例中,RAM A 104通過多路復用器將數據提供至地址單元A 102,RAM B 122通過多路復用器118將數據提供至地址單元B 120,RAM C 182通過多路復用器184將數據提供至地址單元C 186。每一地址單元通過內部配置的加法器/減法器(未圖示)提供自動算后增量和算后減量。本典型實施例中,地址單元B 120提供自動模尋址和兩個專用寄存器文件元件(未圖示),用作直接存儲器存取(DMA)的指針。
地址單元E 112優化用于系數檢索。它包含通過多路復用器110接受直接數據的基址寄存器以及通過多路復用器110接受直接數據或者通過多路復用器168和110從一累加器(C0REG 164或C1REG 166)接受數據的偏移寄存器(offsetregister)。該偏移寄存器通過一內部加法器/減法器(未圖示),提供自動算后增量和算后減量。
IP計數器和存儲棧196包含實施尋址ROM I 194功能的地址指針。地址序列是由指令譯碼器192來控制的。地址數據或者是在IP計數器和存儲棧196內移送,或者接受為直接數據。
數據可以從RAM A 104、RAM B 122或RAM C 182移送到ALU143的寄存器中。數據也可以從累加器(C0REG 164或C1REG 166)移送到RAM A 104、RAM B 122或RAM C 182。數據可以從0REG 162移送到RAM C 182。
RAM A 104通過多路復用器106從地址單元A 102接受數據。RAM A 104還通過多路復用器168和106從累加器(C0REG 164或C1REG 166)接受數據。RAM B 122通過多路復用器124從地址單元B 120接受數據。RAM B 122還通過多路復用器168和124從累加器(C0REG 164或C1REG 166)接受數據。RAM B 122還通過多路復用器124從DMAINPUT(如圖5a-d中所示的那樣)或從INREG 128接受數據。RAMC 182通過多路復用器180從地址單元C 186接受數據。RAM C還通過多路復用器168和180從累加器(C0REG 164或C1REG 166)接受數據。RAM A 104通過多路復用器100將數據提供至地址單元A102,并通過多路復用器108將數據提供至AREG 130。RAM B 122通過多路復用器118將數據提供給地址單元B 120,將數據提供給RAMBDOUT(如圖5a-d所示),通過多路復用器126將數據提供給SREG 136,通過多路復用器116將數據提供至BREG 134,通過多路復用器158將數據提供至DREG156。
AREG 130通過多路復用器108從ROM E 114接受數據,或從RAM A 104接受數據。BREG 134通過多路復用器116接受直接數據,從ROME 114接通數據,或從RAM B 122接受數據。BREG 134還通過多路復用器168和116從累加器(C0REG 164或C1REG 166)接受數據。
C0REG 164和C1REG 166通過多路復用器148,從RAM C 182,從加法器146,從邏輯“與”元件144,或從邏輯“或”元件142接受數據。
移位變址寄存器(shift index register)SREG 136通過多路復用器126接受直接數據或從RAM B 122接受數據。
ALU 143進行乘、加、減、相乘—累加、乘—加、乘—減、舍入、增量、清零、求反、以及邏輯“與”、“或”和“倒相”運算。AREG 130和BREG 134到乘法器132的輸入進行選通(選通未圖示),通過確保僅當進行相乘時才使輸入改變來減少乘法器132的功耗。ALU 143出于效率考慮提供兩個36-位累加器(C0REG 164和C1REG 166),并提供兩個桶形移位器(barrel shifter)即桶形移位器140和桶形移位器150用于規范化。向左或向右直至16作移位是由桶形移位器140和桶形移位器150給出的。移位指數或者是通過直接數據,或者是通過多路復用器149而由專用移位變址寄存器SREG 136來指定的。移位變址寄存器SREG 136與桶形移位器140和150、按位邏輯“或”元件160和0REG 162用來將進行塊規范化中的開銷降到最小。ALU143根據C0REG 164和/或C1REG 166的算術和邏輯狀態,將狀態提供至指令譯碼器192,從而允許進行條件轉移。例如,本實施例中,比較C0REG 164和C1RE中值的符號以提供符號改變時的條件轉移。轉移發生在直接數據提供至IP計數器和存儲棧196時。自動檢測累加器上溢和下溢并自動進行飽和操作,按照二的補碼算術,在上溢時給出十六進制值0×7FFFFFFF,下溢時給出十六進制值0×80000001。
指令執行順序是取指令、譯碼、執行。地址值是由IP計數器和存儲棧196提供至指令ROM I 194的,其對此作出響應將一指令提供至指令譯碼器192。指令譯碼器192響應于該輸入指令,對該指令進行譯碼,并將控制信號提供至DSP核心4內的恰當元件以執行該指令。
專用循環計數器和存儲棧190與IP計數器和存儲棧196提供低開銷嵌套子程序調用(low overhead nested subroutine calls)和嵌套循環。在單個指令循環期間是不允許取指令的,這可降低功耗。循環計數器和存儲棧190通過多路復用器188接受直接數據,執行固定長度的循環。循環計數器和存儲棧190還通過多路復用器168和188從累加器(C0REG 164 C1REG 166)接受數據,執行可變長度的循環。ROM I 194內的256字靜態指令超高速緩沖存儲器(未圖示)提供用于最常執行的循環和子程序的低功率取指令。一“等待”指令禁止取指令以及指令譯碼而等待某一事件,以降低功耗。所說的事件可以包括DMA轉移、來自PCM接口2的定時選通或一外部事件。
外部數據和控制通過PORTINPUT(端口輸入,如圖5a-d中所示)和DMAINPUT(DMA輸入)從PCM接口2和條件轉移指令中使用的靜態測試位提供至DSP核心。數據是由DSP核心4通過CREG(如圖5a-d,6a-b所示)以及RAMBDOUT從外部提供的。通過熟知的周期竊用(cycle stealing)來進行DSP核心4和PCM接口2之間的DMA。來自C0REG 164或C1REG 166的數據是通過多路復用器168與來自指令譯碼器192的OUTREGEN(如圖5a-d,6a-b所示)信號一起提供的。一起作用的OUTREGEN信號表示存在提供至最小化處理器6的有效CREG數據。
如圖6a-b中所示的最小化處理器6用來幫助基音和碼書搜尋中的計算量大的部分。為了實施最小化,最小化處理器6從DSP核心4接收一感性加權的(perceptually weighted)輸入話音取樣序列、一組增益值和一組合成的話音取樣序列。最小化處理器6計算合成話音的自相關性以及合成話音和感性加權的輸入話音之間的互相關性。根據這些相關性,確定合成話音和輸入話音之間的均方差(MSE)的相對量度,作為合成話音增益和指數的函數。最小化處理器6報告產生的最小MSE的指數和增益。當不可能再進一步最小化時,節能特性使MSE計算中斷。最小化處理器6通過CREG、I/O端口以及專用DSP核心指令與DSP通信。
最小化處理器6的運行是由控制器220來確定的。控制器220包含一跟蹤當前指數值的計算器、保持最佳基音或碼書搜尋結果的寄存器、存取RAM×212的地址發生電路以及輸入/輸出電路。另外,控制元件220還負責控制多路復用器224、234、230和246上的選擇信號,以及使鎖存器210、214、226、228、236、238、244和250工作。控制220還監測最小化處理器6中元件內的各值,控制在某些預定搜尋終斷條件下削減搜尋的節能方式,并控制循環緩沖器259中增益值的循環。
另外,控制元件220還負責輸入/輸出操作。控制元件220負責通過輸入端口12將最小化結果提供至DSP核心(即在其各次搜尋中確定的最佳基音延遲和基音增益或者最佳碼書指數和碼書增益)。OUTREGEN信號被提供至控制元件220,以指示輸入到鎖存器210的數據是有效的,并存在于累加器輸出信號CREG處。控制元件220響應于此,產生一允許信號,并將該允許信號提供至鎖存器210,來接收數據。
OUTPORTEN(如圖5a-d,6a-b所示)以及PORTADD(如圖5a-d,6a-b所示)信號從DSP核心4提供至控制元件220。PORTADD信號將一地址提供至最小化處理器6。當PORTADD值指定用作最小化處理器6的數據,并且OUTPORTEN表示一有效PORTADD值時,最小化處理器6將從CREG接受數據。如上所述,向最小化處理器6提供控制和數據。
圖1是本發明結構的典型方框圖。PCM接口2將脈沖編碼調制(PCM)話音取樣數據提供至一編譯碼器(未圖示)以及從該編譯碼器接收PCM話音取樣數據,所述的PCM話音取樣數據在本實施例中是以μ-律或A-律壓縮擴展的取樣數據或線性取樣數據。PCM接口2從時鐘發生器10接收定時信息,并從微處理器接口8接收數據和控制信息。
PCM接口2將它從編譯碼器(未圖示)接收的PCM話音取樣數據提供至DSP核心4,進行編碼。PCM接口2從DSP核心4接收隨后提供至編譯碼器(未圖示)的PCM話音取樣數據。PCM數據是通過DMA在DSP核心4和PCM接口2之間傳送的。PCM接口根據從編譯碼器(未圖示)接收到的取樣值的定時,將定時信息提供至時鐘發生器10。
DSP核心4將數據和控制信息提供至其協處理器(co-processor)即最小化處理器6。DSP核心4還將數據提供至輸出端口14,并從輸入端口12接收數據。DSP核心4從時鐘發生器10接收計時信息。DSP核心4還能夠提供外部地址信息,并接收外部指令和數據。
最小化處理器6從時鐘發生器10接收定時信息,并從DSP核心4接收數據和控制。最小化處理器6通過輸入端口12將最小化過程的結果提供至DSP核心4。
時鐘發生器10將定時信息提供至所有其他塊。時鐘發生器10接收外部時鐘信號,并從微處理器接口8和PCM接口2接收定時信息。
聯合測試動作組(JTAG)接口16提供測試ASIC功能的能力。JTAG接口16接收外部數據和控制信息,并提供外部數據。
輸出端口14從DSP核心4接收數據,并將該數據提供至微處理機接口8,還可以將數據提供至外部裝置(未圖示)。
輸入端口12從微處理器接口8和最小化微處理器6接收數據,并將該數據提供至DSP核心4。輸入端口12還可以從外部裝置(未圖示)接收數據,并將該數據提供至微處理器接口8。
微處理器接口8從微處理器(未圖示)接收數據和控制信息,并將數據和控制信息提供至微處理機(未圖示)。該信息也提供至其他塊。
本發明的典型實施例中,聲碼器ASIC執行可變速率CELP算法,該算法在申請日為1993年1月14日、申請號為08/004,484、標題為“可變速率聲碼器”的、轉讓給本發明受讓人的共同待批的美國專利申請文獻中有詳述。
圖2描述了ASIC中的主要功能。參見圖2,待編碼的抽樣值通過PCM接 30從一編譯碼器(未圖示)提供至聲碼器ASIC。這些取樣值隨后被提供至將μ-律或A-律取樣值轉換成線性取樣值的脫壓縮擴展元件(decompanding element)32。以線性格式提供的取樣值無變化地通過脫壓縮擴展元件32。線性取樣值提供給發送音頻處理元件34,發送音頻處理元件34功能上含有話音控制開關(voice operatedswitch,簡稱為VOX)36、音頻均衡元件(andio equalization element)38,QCELP編碼元件40以及雙音多頻(DTMF)檢測元件41。發送音頻處理單元34隨后通過微處理機接42將編碼話音包(ercoded speech packet)提供至ASIC外部的微處理器(未圖示)。
編碼話音包由微處理器(未圖示)通過微處理機接42提供至接收音頻處理元件44,在此它們被譯碼成話音取樣值。接收音頻處理元件44功能上包含QCELP譯碼元件46、音頻均衡器48和DTMF發生元件47。譯碼取樣值被提供至壓縮擴展元件50,它將線性取樣值轉換成μ-律或A-律格式或不變地將線性取樣值傳送到PCM接口30。ASIC通過PCM接口30將譯碼取樣值提供到ASIC外部的編譯碼器(未圖示)。
圖2中脫壓縮擴展元件32進行的脫壓縮擴展運算以及圖2中壓縮擴展元件50進行的壓縮擴展運算是由圖5a-d中描述的DSP核心4來實施的。圖2中發送音頻處理元件34描述的發送音頻處理運算是由圖6a-b中描述的DSP核心4以及最小化處理器6來實施的。圖2中描述為接收音頻處理元件44的接收音頻處理運算是由圖5a-d中描述的DSP核心4來實施的。
本實施例中,以8位μ-律或8位A-律格式從編譯碼器(未圖示)提供的取樣值被轉換成14位線性格式。μ律和線性之間的關系如方程1所示2Y=-1S(33+2M)2N-33(1)式中,Y為線性值(-4015.5至4015.5),N為指數(0至7),M為一數值(0至15),S為一符號(0表示正,1表示負)。A律和線性之間的關系如方程2和3所示2Y=-1S(1+2M)22Y對于N=0 (2)2Y=-1S(33+2M)2N對于N=1,…,7(3)
式中,Y為線性值(-4032至4032),N、M和S如上所述。
參見圖5a-d,借助于查閱存儲在ROME 114內的表,通過圖2中的PCM接口30提供的取樣值被轉換成線性格式。在一種較佳實施例中,采用一半大小的128×14 μ-律至線性和A-律至線性查表來進行轉換。這種較佳實施例利用了具有如下式(4)所示性能的全大小的轉換表。
ROM(n+128)=-ROM(n)0≤n≤127) (4)在計算自相關系數和LPC系數之前需要從輸入話音信號中去除所有DC成分。DC組塊運行(DC blocking operation)是通過從當前窗口(current window)中的每一輸入取樣中減去一低通濾波的話音取樣平均值(DC偏置)在DSP核心4中完成的。即,當前幀的DC偏置是當前幀和前一幀的取樣平均的加權平均。DC偏置的計算如等式(5)所示DC_偏置=a(平均(前一幀))+(1-a)平均(當前幀) (5)式中,對于本實施例a=0.75。低通濾波是為了防止在幀邊界處出現大的不連續。這一操作是在DSP核心4中,采用ROME 114提供的插值因子a在一個RAM元件(即RAM A104、RAM B122或RAM C182)中存儲當前幀和前一幀的取樣平均來進行的。相加是由加法器146完成的,相乘是由乘法器132來完成的。可以在微處理器控制下來允許和禁止組塊功能。
不帶DC的輸入話音信號S(n)隨后被加窗,來減小將話音序列斬波成固定長度幀的影響。本實施例中采用Hamming窗口函數。對于幀長度LA=160,根據等式(6)計算加窗的話音Sw(n)SW(n)=S(n+60)WH(n),0≤n≤LA-1 (6)式中,Hamming窗口由等式(7)和(8)定義。
WH(n)=0.54-0.46cos[2πn/(LA-1)],0≤n≤LA-1(7)=0, 其它(8)在一種較佳實施例中,因為WH(n)是一個偶對稱函數,所以80個系數的查尋表(Hamming窗口系數數量的一半)被存儲在ROM E114中。加窗可以通過多路復用器108,按照地址單元E 112提供的地址值,從ROM E 114提供窗口系數至AREG 130。AREG 130將該數據提供至乘法器132的第一輸入。話音取樣S(n+60)由RAM B 122提供至BREG 134。BREG 134將該值提供至乘法器132的第二輸入。乘法器132的輸出是加窗的話音取樣,通過多路復用器168被提供至C0REG 164,并隨后被提供至RAM C182。
塊歸一化過程由兩個功能部分組成歸一化因子的判定和所要數據的歸一化。本實施例中,數據以二的補碼表示被存儲起來。按照上式(7)計算加窗的取樣值。根據從ROM I 194得到的歸一化指令DETNORM,C0REG 164中產生的加窗取樣值要經歷下述過程。如果C0REG 164中的值為負,則反相元件152將該數的二進制數字反相并將該位反相值傳送到加法器146的第一輸入。通過多路復用器137和138使加法器146的第二輸入為零。隨后,加法器146通過它的進位輸入(未圖示)加一至位反相值。如果C0REG 164中的值為正,則該值通過多路復用器168和154被傳送,反相元件152和加法器146不受影響。這一過程的目的在于計算C0REG164的絕對值。該絕對值隨后被提供至按位邏輯或元件160的第一輸入。按位邏輯或元件160的第二輸入由0REG 162提供。上述絕對值計算由下面的等式8a-c所示。
0REG新=(ABS(C0REG))OR(0REG老) (8a)其中,ABS(C0REG)=C0REG,C0REG≥0 (8b)=-C0REG,C0REG<0 (8c)如果歸一化所要的數據在C1REG 166內,則用一DETNORM指令同樣在C1REG 166上進行等式8a-c中描述的運算。0REG 162在歸一化運行開始時清零。該過程對所有加窗取樣值(所要的數據)重復,從而在運算結束時,0REG 162中存儲的值代表所有加窗取樣值絕對值的按位邏輯或。由于0REG 162中的值大于或等于加窗取樣值塊中的最大數值,所以根據0REG 162中設定的最有效位,可確定一比例因子。0REG 162中的值通過多路復用器168傳送到RAM C182。該值隨后被裝載到C0REG 164內。歸一化因子是通過計數所需的C0REG 164中值的左移位或右移位數來確定的,從而由該值形成的加窗數據的移位會為后續的運算而提供具有要求峰值數值的值。該比例因子也稱為歸一化因子。因為歸一化是通過移位來進行的,所以歸一化因子是數值2的冪。
為了盡可能以最高精度保持加窗取樣值,所要的值被一歸一化因子相乘,從而最大值占據后續運算中給出的最大位值。因為歸一化因子是數值2的冪,所以所要的數據的歸一化可以通過簡單地由歸一化因子指定的移位數來獲得。歸一化因子由RAM B122通過多路復用器126提供給SREG 136。加窗取樣值隨后通過多路復用器158從RAM C182提供至DREG 156。DREG 156隨后通過多路復用器154和禁止工作的反相器152將這些值提供至桶形移位器150,數據值在這里在通過多路復用器149,按照由SREG 136提供至桶形移位器的歸一化因子移位。桶形移位器150的輸出通過禁止的加法器元件146和多路復用器148傳送至C0REG 164。歸一化并加窗的取樣值隨后通過多路復用器168傳送,并通過多路復用器124和180分別提供至RAM B122和RAM C182。這就在RAM中形成兩套歸一并加窗的取樣值,使自相關系數的后續計算更為有效。
P+1個自相關系數R(k)的計算是按等式9進行的R(k)=&Sigma;m=0LA-1-kSW(m)SW(m+k),----0&le;K&le;P(9)]]>其中,P為編碼器中共振峰預測濾波器(formant prediction filter)的階數。本實施例中,P=10。歸一并加窗的取樣值SW(m)通過多路復用器116和BREG 134由RAM B 122提供給乘法器132的第一輸入。延遲了的歸一并加窗的取樣值SW(m+k)通過多路復用器148和C1REG 166、RAM A 104和AREG 130由RAM C182提供至乘法器132的第二輸入。每個R(k)是LA-K個值的累加。對于每個R(k)的第一次迭代,乘法器132的輸出通過多路復用器138和桶形移位器140提供至累回器C0REG164以及加法器146的第一輸入。多路復用器154通過禁止的桶形移位器150將零提供至加法器146的第二輸入。對于后續迭代,乘法器132的輸出通過多路復用器138和桶形移位器140提供至加法器146的第一輸入0加法器146的第二輸入是通過多路復用器168和154、禁止的倒相元件152和桶形移位器150,以C0REG164的輸出提供的。對于每一R(k),重復這一過程。
自相關系數中沒有一個大于R(0)。本實施例中,在計算了R(0)以后,也就確定了歸一化因子。該歸一化因子隨后被運用于已經計算的R(0)以及其余自相關系數。這一階段上的自相關系數的歸一化使LPC的后續計算的精度最大。
現在來說明圖3的方框62,計算LPC系數來去除話音取樣值中的短時相關冗余。
具有階數P的共振峰預測濾波器具有如下式(10)所述的傳遞函數A(Z)。
A(Z)=1-&Sigma;i=1PaiZ-1,---P=10---(10)]]>每一LPC系數ai是根據歸一化并加窗的輸入話音的自相關值來計算的。本實施例中采用稱為Durbin遞歸(見L.R.Rabiner和R.W.Schafer的“話音信號的數字處理(Digital Processing of Speech Signals)”,Prentice-Hall,1978)的有效迭代方法來計算LPC系數。該迭代方法由下列等式(11)至(17)所述。
E(0)=R(0),i=1 (11)Ki=[R(i)-&Sigma;j=1i-1aj(i-1)R(i-j)]/E(i-1)----(12)]]>ai(i)=Ki(13)aj(i)=aj(i-1)-Kiai-j(i-1),i≤j≤i-1(14)E(i)=(1-Ki2)E(i-1)(15)如果i<P,則遞增i并繼續至12(16)最后的LPC系數值為aj′=aj(P),1≤j≤p (17)Durbin迭代算法僅適用于輸入信號具有零平均值的時候,這要求在進行前述的自相關計算前去掉所有的DC偏置。
本實施例中,采用15HZ的帶寬擴展來確保共振峰預測濾波器的穩定性。這可以通過徑向向內的共振峰合成濾波器的極點的標度來完成。帶寬擴展是通過按照等式(18)對LPC系數的標度來完成的。
ai=βiai′,1≤i≤P (18)本實施例中,β=0.9883。對于1≤i≤p的十個帶寬擴展系數βi被存儲在ROME114中提供的查尋表中。方框62的功能是在DSP核心4內實現的。
現在來說明圖3中的方框64,它確定話音數據當前幀的編碼速率。速率的判定是根據每一幀中的話音活動量測定來進行的。話音活動量回過來又是按照前述的幀能量R(0)來測定的。為了確定i幀的編碼速率,將幀能量與等式(19)至(21)所定義的三個閾值進行比較T1(Bi)=-(5.54463·10-6)Bi2+(4.047152)Bi+362(19)T2(Bi)=-(1.529733·10-6)Bi2+(8.750045)Bi+1136 (20)T3=(Bi)=-3(3.957050·10-6)Bi2+(18.899622)Bi+3347 (21)式中i幀的背景噪聲電平Bi按等式(22)對每一幀進行更新。
Bi=min[Ri-1(0),160000,max[1.00547Bi-1,Bi-1+1]] (22)如果幀能量低于所有三個閾值,則速率為八分之一;如果幀能量在T1(Bi)和T2(Bi)之間,則速率為四分之一;如果幀能量在T2(Bi)和T3(Bi)之間,則速率為二分之一;如果幀能量高于T3(Bi),則為全速率。除非當速率由微處理機(未圖示)通過微處理機接口8被強制到某一特定速率,否則數據速率可以被提高至任一速率,但降低則不能超過每幀一個臺階(例如二分之一速率至四分之一速率)。在DSP核心4中,與這些閾值相關的系數在ROM E114中的查詢表中給出。
在實施例中還給出分數速率算法,從而使最大平均速率可以由微處理機(未圖示)通過微處理機接口8來限制。給定一速率限定因子S,可以通過限定連續全速率幀數來將聲碼器的最大平均速率限定在(2S+1)/[2(S+1)]。方框64的功能是在DSP核心4中實施的。
下面描述圖3中的方框66,帶寬展寬的LPC系數被轉換成線譜對(LSP)頻率(見Soong和Juang的“線譜對(LSP)和話音數據壓縮(Line Spectrum Pair(LSP)andSpeech Data Compression)”,ICASSP,1984)。LSP頻率已經表明具有更好的傳輸存儲特性,并且比起LPC系數可以更有效地進行編碼。表示十個LPC系數的LSP頻率是等式23和24中所述多項式的十個根P′(ω)=cos5(2πω)+P1′cos4(2πω)+…P4′cos(2πω)+0.5P5′(23)Q′(ω)=cos5(2πω)+q1′cos4(2πω)+…+q1′cos(πω)0.5P5′(24)式中,按照等式(25)至(27)在DSP核心4中計算1≤i≤5的Pi′和qi′P0′=q0′=1 (25)Pi′=-ai-a11-i-Pi-11≤i≤5(26)qi′=-ai+a11-i+q′i-11≤i≤5 (27)P′(ω)的根是通過假定在每一π/32弧度內最多有一個根來求得的。在從0到π弧度的每一π/32弧度處估算P′(ω)。在任一π/32區間內存在一個根使得函數P′(ω)在該區間上改變符號。
如果求得了一個根,則進行對半檢索,來隔離π/256范圍內的根。對半檢索包含在當前區間的中心處估算P′(ω),從而確定哪半個區間包含該根。當前區間隨后變窄,以僅包含求得的包含該根的那半個區間。繼續這一過程,直至該根被隔離到π/256大小的區間內。隨后進行線性插入,來估算π/256弧度區間內根的位置。
LSP頻率的有序性確保Q′(ω)的一個根位于P′(ω)的每一對根之間。Q′(ω)的第五個根位于P′(ω)的第五個根和π弧度之間。上述對半檢索在P′(ω)的每一對根之間以及P′(ω)的第五個根和π弧度之間進行,以確定Q′(ω)的根。
因為對半檢索一直進行到將根的位置隔離在π/256大小的區間內,所以需要將256個余弦值等間距地排列在0和π之間。這些余弦值被存儲在ROM E114的查詢表中。為了求得P′(ω)和Q′(ω)的根,分別需要最大值為48和30次函數估算。這些函數估算是在將LPC系數轉換成LSP頻率中計算量最大的部分。方框66的功能是在DSP核心4中實施的。
下面描述圖3中的方框68,對LSP頻率進行量化。每一LSP頻率位于相應偏置值的中心附近。在量化之前,從每一相關LSP頻率中減去這一偏置,來減小量化所需的位數。該偏置是以下述等式(28)來計算的。
Biasi=0.5i/(P+1)=(0.45)i (28)在該偏置從LSP頻率中減去以后,用一微分(differential)脈沖編碼調制(DPCM)量化器來量化LSP頻率。采用DPCM量化器是因為LSP頻率隨時間緩慢變化,對LSP頻率中變化的量化減小了直接對LSP頻率進行量化所需的位數。在DSP核心4中,LSP頻率偏置值存儲在ROM E114中的查詢表中。所用的量化位數以及量化間隔大小是正被量化的10個LSP頻率的函數,也是編碼速率的函數。量化位數,以及間隔大小按每一編碼速率、每一LSP頻率存儲在ROM E114中的查詢表中。上述的查詢表見表II中所示的那樣。例如,用4位以及0.025的間隔大小對全速率下的LSP頻率ω1進行量化。
表II
在量化和插值以后,進行測試,以確保在考慮了量化的影響以后使共振峰濾波器保持穩定。LSP頻率必須以至少80HZ的間隔分開,從而確保合成共振峰濾波器的穩定。如果任何一個LSP頻率與相鄰LSP頻率的分開小于80HZ,則再進行帶寬擴展。方框68的功能是在DSP核心4內實現的。
現在描述圖3中方框70,LSP頻率經下述等式(29)所述的低通濾波來減小量化影響
其中,在本實施例中,對于全速率SM=0,對于二分之一速率SM=0.125。對于四分之一和八分之速率,如果四分之一或八分之一速率的連續幀數小于10,則SM=0.125和SM=0.9。
對于每一基音子幀,LSP頻率。除了八分之一速率以外,基音子幀的插值LSP頻率用作相應的碼書子幀對。按照下述等式30插值LSP頻率
式中,按每一速率、每一基音子幀和碼書子幀,將權重αω存儲在ROM E 114的查詢表中。上述查詢表見表III所示。例如對基音子幀1和碼書子幀1和2來說,在全速率下αω為0.75。
表III
插值的LSP頻率再轉換回到用于基音及碼書搜尋的LPC系數。如下述等式31-33所示根據PA(Z)和QA(Z)來計算LPC系數。
A(Z)=[PA(Z)+QA(Z)]/2 (31)其中,PA(Z)=(1+Z-1)&Pi;j=15[1-2Z-1cos(2&pi;&omega;2i-1)+Z-2]---(32)]]>QA(Z)=(1-Z-1)&Pi;j=15[1-2Z-1cos(2&pi;&omega;2j)+Z-2]---(33)]]>本實施例中,在DSP核心4內估算臺勞(Taylor)級數展開,來計算PA(Z)和QA(Z)中的余弦值。臺勞級數展開提供了比起前述尋根搜索中所采用的更為精確的余弦值。PA(Z)和QA(Z)的值是通過對上述等式32-33中的二次多項式進行卷積來計算的。方框70的功能是在DSP核心4中實現的。
現在描述圖3的方框圖72,通過合成基音搜尋運算來進行綜合分析。這一窮盡搜尋過程可由方框72-74組成的循環來說明。本實施例中,除了八分之一速率以外,全部在基音子幀上進行基音預測。圖7中描述的基音編碼器采用合成-分析方法來確定基音預測參數(即基音滯后L以及基音增益b)。選擇的參數是那些使采用基音預測參數產生的感性加權輸入話音和合成話音之間的MSE最小的參數。
本發明較佳實施例中,在圖7描述的基音預測參數的抽取中采用隱含的感性加權。圖7中,具有下述等式(34)所示響應的感性加權濾波器是以濾波器320和濾波器324的串聯來實施的。
&omega;(Z)=A(Z)A(Z/&xi;)---(34)]]>隱含的感性加權通過再次使用作為開路(34)共振峰殘留(open loop formantresidual)的濾波器320的輸出來減小感性加權濾波的計算復雜性。將等式(34)的濾波分成兩個部分的運算消除了基音搜尋中的一個濾波運算。
輸入話音取樣值S(n)通過共振峰預測濾波器320,其系數是從前面描述的圖3中方框70的LSP插值和LSP至LPC轉換產生的LPC系數。共振峰預測濾波器320的輸出是開路共振峰殘留P0(n)。開路共振峰殘留P0(n)通過具有用等式35所述的傳遞函數加權共振峰合成濾波器324。
H(Z)=1A(Z/&xi;)=11-&Sigma;i=110ai(Z/&xi;)-1,]]>其中ξ=0.8(35)加權共振峰合成濾波器324的輸出是感性加權話音X(n)。從加權共振峰合成濾波器324的輸出中減去加權共振峰合成濾波器324的輸出零輸入響應(ZIR),來去除初始濾波器或加權共振峰合成濾波器324的濾波器存儲的影響。加權共振峰合成濾波器324的ZIR計算是在ZIR元件328中計算的。ZIR即aZIR(n)是在加法器326中從感性加權話音X(n)中減去的。在每一基音子幀的開頭處,ZIR元件328和加權共振峰合成濾波器324的濾波器存儲是相同的。
在基音搜尋中,假定碼書向量對于開路共振峰殘留中當前子幀的貢獻為零。基音搜尋是采用前述開路共振峰殘留P0(n)以及閉路共振峰殘留PC(n)來進行的。閉路共振峰殘留是先前基音子幀中基音合成濾波器322中重新構筑的取樣值。基音合成濾波器322的傳遞函數見下述等式(3b)1P(Z)=1(1-bZ-L)---(36)]]>式中的基音滯后L以及基音增益b是在先前基音子幀的基音搜尋過程中計算的。基音合成濾波器322的輸入為激勵矢量Cb(n),它是通過將指數為I的碼書項(codebock entry)Cb(I)以及先前碼書子幀的碼書搜尋過程期間計算的碼書增益G相乘而產生的。這樣產生的共振峰殘留稱為閉路共振峰殘留。
本實施例中,PC(n)由143個閉路重建樣本組成。搜尋從大開環搜尋移到大閉環搜尋,搜尋一基音子幀長度的窗口。對于長度為LP的基音子幀,n在-Lmax=-143和LP-17之間變化。本實施例中,對于全速率,LP=40;對于二分之一速率,LP=80;對于四分之一速率,LP=160。本實施例中,取樣值PC(n)和Po(n)如多路復用器332所示的那樣相鄰存儲在一起,使得PC(n)和Po(n)值可以作為長度為LP+143的單一一塊取樣值順序存取。取樣值存儲在RAM B122中。
共振峰殘留P(n)是由PC(n)和Po(n)構成的,并通過具有下述等式(37)所示傳遞函數的加權共振峰合成濾波器330。
H(Z)=1A(Z/&xi;),]]>式中ξ=0.8(37)加權共振峰合成濾波器330對于基音滯后L的每一值,用來產生LP個加權的合成話音取樣值的序列YL(n)。加權合成話音序列YL(n)以及加權話音序列XP(n)被提供至最小化處理器334。因為已經減去了加權共振峰合成濾波器324的初始狀態的影響,所以僅必須計算加權共振峰合成濾波器330的脈沖響應。YL(n)的計算必須用加權共振峰合成濾波器330的脈沖響應h(n)和P(n)內的恰當子序列作卷積,來獲取基音滯后L的加權合成話音取樣值YL(n)。
卷積是如圖5a-d所示在DSP內核4內以遞歸方式來進行的。從L=17到L=143,對于每一基音滯后值計算一組YL(n)值。加權共振峰合成濾波器330的脈沖響應h(n)被截取至本實施例中的前二十個取樣值,并存儲在RAM A104內。共振峰殘留P(n)被存儲在RAM B122內。第一個基音滯后L=17的卷積是以下述等式(38)所示的非遞歸方式來進行的Y17(n)=h(n)*P17(n)=&Sigma;i=019h(i)P17(n-i),0&le;n&le;LP---(38)]]>式中LP為基音子幀長度。
計算第一序列Yn(n)并存儲在RAM C142中。以下述等式39-41,遞歸地計算基音滯后L=18至L=143的后續序列YL(n)YL(n)=h(0)P(-L) n=0 (39)YL(n)=YL-1(n-1)+h(n)P(-L)1≤n<20,17<L≤143 (40)YL(n)=YL-1(n-1) 20≤n<LP(41)注意下述等式(42)中所示的關系。
PL(n)=P(n-L)=PL-1(n-1)17<L≤143,0≤n<LP(42)將RAM分成三個分區,每一分區具有一個專用尋址單元以控制裝入和存儲操作來使遞歸卷積的效率最佳化。這稱為三重分區RAM。用等式40計算卷積值,隨后就可以每一時鐘周期產生一個結果。例如,在一個脈沖周期內,計算Y18(10),存儲Y18(9),取Y17(10)和h(10)。這樣,上述等式(40)就可以每一周期產生一個結果。上述等式(41)也可以每一周期產生一個結果。例如,在一個周期中,計算Y18(24),取Y17(24),并存儲Y18(23)。
能夠運算等式(40)和(41)而無需在基音滯后更新之間將先前計算的加權合成話音取樣值YL-1(n-1)移送到同一源RAM需要一稱為乒乓過程(其中源RAM和目的RAM在每一滯后更新之間交換)的存儲策略和硬件能力。當計算偶數基音滯后值的YL(n)時,YL-1(n-1)值是從三個RAM中的第一個中取出的,結果被存儲在三個RAM中的第二個內。當計算奇數基音滯后值的YL(n)時,YL-1(n-1)值是從三個RAM中的第二個取出的,結果存儲在三個RAM中的第一個內。這一乒乓過程無需在每一基音滯后更新之間,將新計算的YL(n)值移送到同一RAM,以及從同一RAM移送出先前計算的YL-1(n-1)。
圖8是本實施例中基音搜尋的卷積部分(初始非遞歸和遞歸卷積)的執行流程圖。方框350中,基音滯后L初始化至其最低值,本實施例中,該最低值為17。樣本號n和濾波器指數m被設置為零,Y17(n)的值被設置為零。方框352至360構成以非遞歸方式進行計算的初始卷積循環。L=17的初始卷積計算是按照下述等式(43)來進行的。
Y17(n)=&Sigma;i=019h(i)P17(n-i),0&le;n&lt;LP---(43)]]>初始卷積的計算采用固定長度的循環來減小計算的復雜性。以這種方式可以避免在內循環(方框356-360)中建立可變長度循環結構所需的開銷。每一Y17(n)值在計算后被傳送至最小化處理器334。
方框352測試樣品指數n。如果n等于基音子幀長度LP,則完成了初始卷積,流程進行到方框362。如果在方框352中,n小于基音子幀長度,則流程進行到方框356。方框356測試指數m。如果m等于濾波器脈沖響應長度(在本實施例中為20),則完成了當前迭代,流程進行到方框354,此處m被設置為0,n遞增1。流程隨后回到方框352。如果在方框356處m小于脈沖響應長度,則流程進行到360,此處累計部分和。流程繼續進行到358處,指數m遞增1,并且流程再進行到方框356。
由方框352至360形成的初始卷積循環中進行的運算是在DSP內核4中進行的,該處配置了恰當的流水線,使得可以如方框360所示每一時鐘周期完成乘積的累加。下面的運算描述在一個時鐘周期中在DSP內核4中發生的運算流水線。濾波器響應值h(m+1)是從RAM A104取出的,并被提供至AREG130。共振峰殘留值p(n-17)是從RAM B122取出的,并被提供至BREG134。C0REG 164中的部分和Y17(n+m-1)通過多路復用器168和180被提供至RAM C182。部分和Y17(n+m+1)是由RAM C182通過多路復用器158提供至DRE G156。ARE G130和BREG134中的值h(m)和p(n-17)分別被提供至乘法器132。乘法器132的輸出通過多路復用器138被提供至桶形移位器140,按照通過多路復用器149由SREG136提供的比例值使該值歸一化。SRE G136中的值是使p(n-17)序列歸一化所需的值。因為在桶形移位器140中進行歸一化之前保持了乘積的精確性,所以將歸一化因子作用于p(n-17)和h(m)的乘積獲取了使p(n-17)歸一化的相同效果。歸一化值被提供至加法器146的第一輸出。部分和Y17(n+m)是通過多路復用器154、禁止的反相器152和桶形移位器150由DREG 156提供至加法器146的第二輸入的。加法器146的輸出是通過多路復用器148提供至C0REG164的。當指數n達到方框352中所允許的最大值時,就完成了初始卷積,RAM C182中出現的部分和現在就是卷積的最后結果。
當初始卷積完成時,流程進行到方框362,對余下的基音滯后值的計算進行遞歸卷積。
在方框362中,樣品指數n被設定為零,基音滯后指數L遞增1。流程進行到方框364。方框364測試L。如果L大于最大基音滯后值(在本實施例中為143),則流程進行到方框366,基音搜尋運算終止。如果L小于或等于143,則流程進行到方框368。方框368控制前述的乒乓過程。在方框368中,測試L,以判斷它是偶數還是奇數。如果L是偶數,則流程進行到方框378(該運算稱為第一種情況)。如果L為奇數,則流程進行到方框370(該運算稱為第二種情況)。
第一種情況(基音滯后L為偶數)在方框378中,YL(0)按照等式(39)進行計算。地址單元A102將一地址值提供至RAM A104,其響應于此通過多路復用器108將h(0)提供至ARE G130。在同一時鐘周期中,地址單元B120提供一地址值至RAM B122,其響應于此通過多路復用器116將P(-L)提供至BRE G134。在下一時鐘周期中,AREG 130提供h(0)、BRE G134提供P(-L)至乘法器132,在此兩值相乘,其積通過多路復用器138提供至桶形移位器140。桶形移位器140按照SRE G136提供的值,通過多路復用器149,使該乘積歸一化,并將歸一化的乘積提供至加法器146的第一輸入。加法器146的第二輸入通過多路復用器154、禁止反相元件152和桶形移位器152被置零。加法器146的輸出通過多路復用器148而被提供至C0RE G164。在同一時鐘周期中,YL-1(0)和h(1)是分別從RAM B122和RAM A104取出的,并通過多路復用器158和108提供至DREG156和AREG130。
在方框380中,合成話音取樣指數n遞增1。在控制方框382中,如果合成話音取樣指數n小于20,則流程進行到方框384。
在方框384中,按照等式(40),每一時鐘周期計算一個新的YL(n)值。使YL-1(n-1)和h(n)的值初始化而在方框384的第一次迭代之前所需的恰當設置是在上述方框378中獲得的。為了存儲最終值YL(19),在方框384的最后迭代以后還需要有恰當的清除。
在方框384的第一次迭代中,方框378內計算的YL(0)是位于C0REG164內的。C0REG164以從地址單元C186提供至RAM C182的地址值通過多路復用器168和180向RAM C182提供YL(0)。在被提供至RAC 182的同時,YL(0)被提供至最小化處理器334。
在方框384中,在一個時鐘周期中進行下述運算。按照由地址單元B120提供的一個地址,通過多路復用器116和158,由RAM B122將YL-1)(n)值提供至DREG156。按照地址單元A102提供的地址,通過多路復用器108,由RAM A104將脈沖響應值h(n+1)提供至AREG130。DREG 156通過多路復用器154、禁止的反相器元件152和桶形移位器150,將YL-1(n-1)提供至加法器146的第一輸入。AREG130提供h(n)、BREG134提供P(-L)至乘法器132,在此兩值相乘,其乘積通過多路復用器138由乘法器132提供至桶形移位器140。桶形移位器140按照SREG136提供的值,對該乘積歸一化,并將該歸一化的乘積值提供至加法器146的第二輸入。加法器146的輸出通過多路復用器148提供至C0REG164。前面迭代中計算的C0REG164值通過多路復用器168和180被提供至用來存儲的RAM C182以及最小化處理器334。
在方框380中,合成話音樣品指數n遞增1。在控制方框382中,如果合成的話音取樣指數n等于20,則最終迭代中計算的YL(19)在流程進行到方框390之前通過多路復用器168和124被提供至RAM B122,用來存儲在一循環緩沖器內,YL(19)還被提供至最小化處理器334。
第一種情況結束第二種情況(基音滯后L為奇數值)在方框370中,按照等式(39)計算YL(0)。地址單元A102將一地址值提供至RAM A104,其響應于此通過多路復用器108將h(0)提供至ARE G130。在同一時鐘周期中,地址單元B 120將一地址值提供至RAM B122,其響應于此通過多路復用器116將P(-L)提供至BRE G134。在下一時鐘周期中,AREG130提供h(0)、BREG134提供P(-L)至乘法器132,在此兩值相乘,其乘積通過多路復用器138提供至桶形移位器140。桶形移位器140按照SREG136提供的值,通過多路復用器149使該乘積歸一化,并將該歸一化的乘積提供至加法器146的第一輸入。加法器146的第二輸入通過多路復用器154、禁止的反相元件152以及桶形移位器152而被置零。加法器146的輸出通過多路復用器148被提供至C0REG164。在同一時鐘周期中,YL-1(0)和h(1)分別是從RAM C和RAM A104取出的,并通過多路復用器158和108被提供至DREG156和AREG130。
在方框372中,合成的話音取樣指數n遞增1。在控制方框374中,如果合成的話音取樣指數n小于20,則流程進行到方框376。
在方框376中,按照等式(40)按每一時鐘周期計算一個新的YL(n)值。為了使YL-1(n-1)和h(n)的值初始化,如上所述在方框370中獲取在方框376的第一次迭代之前所需的恰當設置。為了存儲YL(19)的最終值,在方框376的最后迭代后還需要有恰當的清除。
在方框376的第一次迭代中,方框370中計算的YL(0)是出現在C0REG164中的。C0REG164以從地址單元B120提供至RAM B122的地址值通過多路復用器168,提供YL(0)至用作存儲的RAM B122。在提供至RAM B122的同時,YL(0)還被提供至最小化處理器334。
在方框376中,在一個循環中進行下述運算。按照地址單元C186提供的地址,通過多路復用器158,由RAM C182將YL-1(n)值提供至DRE G156。按照地址單元A 102提供的地址,通過多路復用器108,由RAM A104將脈沖響應值h(n+1)提供至AREG130。DRE G156通過多路復用器154、禁止的反相器元件152以及桶形移位器150,將YL-1(n-1)提供至加法器146的第一輸入。ARE G130提供h(n)、BREG134提供P(-L)至乘法器132,在此兩值相乘,其乘積通過多路復用器138由乘法器132提供至桶形移位器140。桶形移位器140按照SRE G136提供的值,使該乘積值歸一化,并將該歸一化的乘積值提供至加法器146的第二輸入。加法器146的輸出通過多路復用器148的第二輸入。加法器146的輸出通過多路復用器148被提供至C0REG164。先前迭代中計算的C0REG164中的值通過多路復用器168和124被提供至用來存儲的RAM B122以及最小化處理器334。
在方框372中,合成的話音取樣指數n遞增1。在控制方框374中,如果合成的話音取樣指數n等于20,則最終迭代中計算的YL(19)在流程進行到方框390之前通過多路復用器168和124被提供至RAM B122中,用來存儲在RAM B122中的循環緩沖器內,YL(19)還被提供至最小化處理器334。
第二種情況結束在方框390的第一次迭代之前,YL-1(19)是從RAM B122內的循環緩沖器內取出的,并被裝入BREG134內,YL-1(19)隨后從BRE G134移送至C0RE G164。隨后,YL-1(20)被從RAM B122內的循環緩沖器中取出并被裝入BREG134內。
在方框390中,按照等式(41),按每一時鐘循環計算一個新的YL(n)。在一個時鐘周期中進行下述運算。YL-1(n-2)由BREG134提供至C0REG164。YL-1(n-3)被從RAM B122中的循環緩沖器內取出,并被裝入BRE G134。C0REG164中的YL-1(n-1)被提供至最小化處理器334。在方框390的最后迭代以后,在RAM B122中循環緩沖器中消除YL-1(LP-2)。通過按每一基音滯后在循環緩沖器內加入一元素,而按每一基音滯后從循環緩沖器去除一元素,循環緩沖器的大小被保持在LP-19。循環緩沖器的實施是通過地址單元B120中的特殊地址寄存器來完成的,它支配環繞點(地址取模操作),從而可以以循環方式自動對順序存儲器進行尋址。
在方框386中,合成的話音取樣指數n遞增1。在控制方框388中,如果合成的話音取樣指數n小于LP,則流程再次進行到方框390。如果合成的話音取樣指數n等于LP,則對于當前基音滯后值已經計算了所有的YL(n)值,并且流程回到方框362。
本合成的話音取樣值YL(n)的計算之前,長度為LP的感性加權話音取樣值序列被提供至最小化處理器334。正如前面描述過的那樣,在初始遞歸卷積計算期間,滯后值為L=17至L=143的LP長度的合成話音取樣值序列YL(n)被提供至最小化處理器334。合成的話音取樣值被順序地提供至最小化處理器334。最小化處理器334計算每一合成的話音取樣序列YL(n)的自相關,每一合成的話音取樣序列YL(n)之間的互相關,以及感性加權話音取樣序列XP(n)。根據這些相關值,最小化處理器334計算每一合成話音取樣序列YL(n)和感性加權話音取樣序列XP(n)之間的MSE相對值。對于每一基音滯后L,計算合成話音取樣序列的所有可能基音增益值b的MSE。最小化處理器334對所有基音滯后值L以及所有可能的基音增益值b求得最小MSE,并通過保持當前基音滯后L和當基音增益b來保持最小MSE值。相應于最小MSE的基音滯后估算 和基音調增益估算指數_也由最小化處理器334來保持。每一新的MSE值與保持在最小化處理器334內的最小MSE比較。如果該新的MSE小于最小MSE,則該最小MSE被該新的MSE值取代,基音滯后估算 和基音增益估算指數_被更新,以反映該新的最小MSE。保持在最小化處理器334內的最小MSE和相應的基音滯后估算 以及基音增益估算指數_用基音子幀期間計算的第一負MSE值,在每一基音子幀被初始化。在所有的基音滯后值L以及所有的基音增益值b用完以后,基音滯后估算 以及基音增益估算指數_將分別對于當前基音子幀的最佳基音滯后指數和最佳基音增益指數。最小化處理器334將最佳基音滯后 以及最佳基音增益指數_提供至DSP內核4。最佳基音滯后 以及最佳基音增益指數_是由感性加權的話音取樣值XP(n)和加權的合成話音取樣值YL(n)之間的最小MSE產生的。該MSE是如下式(44)至(46)所述,為基音滯后L和基音增益b的函數MSE(L1b)=&Sigma;n=0LP-1(Xp(n)-bYL(n))2----(44)]]>=&Sigma;n=0LP-1(XP(n))2-2b&Sigma;n=0LP-1(XP(n)YL(n))+b2&Sigma;n=0LP-1(YL(n))2-----(45)]]>=EXPXP-2bEXPYL+b2EYLYL---(46)]]>EXPXP是感性加權的話音取樣值XP(n)的自相關。EXPYY是感性加權的話音取樣值XP(n)和加權的合成話音取樣值YL(n)的互相關。EYLYL是加權的合成話音取樣YL(n)的自相關。
感性加權的話音高取樣值XP(n)的自相關EXPXP不是音調增益b的函數。EXPXP在每一基音子幀期間保持常數,所以不會影響最佳基音滯后和最佳基音增益的選擇。等式(44)至(46)對基音滯后L和基音增益b的最小化等效于下述等式(47)的最小化MSE(L,b)=-2bEXPYL+b2EYLYL(47)
最小化處理器334計算加權的合成話音取樣序列YL(n)的自相關EYLYL,以及感性的加權話音取樣值序列XP(n)和加權的合成話音取樣值序列YL(n)之間的互相關EXPYL。對于每一相關對(EXPYL,EYLYL),最小化處理器334對于一組基音增益b的值,按照上述等式(47),計算相對MSE。相關EXPYL和EYLYL的計算是同時在最小化處理器334內進行的計算相對MSE值;并在對于基音滯后L,作出有關MSE最小化的判定的同時對于基音滯后L+1,計算其相關值。
圖6a和6b描述的是最小化處理器334的典型實施例。感性加權的話音取樣值XP(n)是按照控制器220提供的地址由DSP內核4提供至存鎖器210而存儲在RAM×212內的。以間隔0.25而從b=0.25變化列b=2.0的標稱基音增益值-2b通過多路復用器260由DSP內核4提供,用來分別存儲在鎖存器264、268、272、276、280、284、288以及292內。相應的標稱基音增益b2是通過多路復用器由DSP內核4來提供的,用來分別存儲在鎖存器262、266、270、274、278、282、286和290。多路復用器260將這些值直接提供給鎖存器262。鎖存器262將這些值直接提供給鎖存器264。鎖存器276通過多路復用器294將值提供給鎖存器278。鎖存器290將這些值直接提供至鎖存器292,等等。通過鎖存器262至292以及多路復用器294的移位值使得這些值可以通過多路復用器260提供至循環緩沖器259內的所有鎖存器。在存儲了感性加權的話音取樣值XP(n)以及-2b值和b2值以后,加權的合成話音取樣值序列YL(n)被提供至鎖存器210。加權的合成話音取樣值YL(n)由鎖存器210被提供至乘法器216的兩個輸入端,產生加權合成話音取樣值的平方(YL(n))2。鎖存器210還將加權合成話音取樣值YL(n)提供至乘法器218的第一輸入。RAM X212通過鎖存器214將感性加權話音取樣值XP(n)提供至乘法器212的第二輸入。乘法器218計算乘積值XP(n)YL(n)。分別由乘法器216和218按每一周期計算新的平方(YL(n))2和新的乘積XP(n)YL(n)。對于每一基音滯后L,取樣值指數n從0變化到Lp-1。
加權的合成話音取樣值的平方(YL(n))2被提供至累加器221。乘積值X(n)被提供至累加器231。累加器221計算每一基音滯后L的LP個平方和。累加器231計算每一基音滯后L的LP個乘積值的和。
在每一新的基音滯后之前,通過多路復用器224將鎖存器226置零。累加器221隨后計算當前基音滯后L的自相關EYL。在累加器221中,平方值(YL(n))2被提供至加法器222的第一輸入。其總和由鎖存器226提供至加法器222的第二輸入。新計算的總和由加法器222通過多路復用器224提供至鎖存器226,用于存儲。在對于基音滯后L的所有LP值累加以后,自相關EYLYL被提供至鎖存器228,用作存儲。
在每一新的基音滯后之前,通過多路復用器234,使鎖存器236置零。隨后對于當前基音滯后L,累加器231計算互相關EXPYL。在累加器231中,乘積值XP(n)YL(n)被提供至加法器232的第一輸入。其總和由鎖存器236提供至加法器232的第二輸入。新計算的總和通過多路復用器234,由加法器232提供至鎖存器236,用作存儲。在對基音滯后L計算了所有LP個值以后,互相關EXPYL被提供至鎖存器238,供存儲。
隨后按照下述兩個周期的過程計算由等式(47)描述的MSE。
在兩個周期的第一個中,鎖存器238通過多路復用器230將感性加權的話音取樣值和加權的合成話音取樣值之間的互相關EXPYL提供至乘法器240的第一輸入。循環緩沖器259通過多路復用器296將標稱的基音增益值-2b提供至乘法器240的第二輸入。乘積-2bEXPYL由乘法器240提供至加法器242的第一輸入。加法器242的第二輸入通過多路復用器246置零。加法器242的輸出被提供至鎖存器244,用作存儲。循環緩沖器259的鎖存器262至292中的值通過多路復用器294由提供鎖存器276的輸出至鎖存器278,并通過多路復用器260將鎖存器292的輸出提供至鎖存器262來循環移位。循環以后,鎖存器262、264、266、268、270、272、276、278、280、282、284、286、288、290和292分別含有先前包含在鎖存器292、262、264、266、268、270、272、274、276、278、280、282、284、286、288、290中的值。在基音搜尋中,循環緩沖器是由鎖存器262至292以及循環緩沖器259的多路復用器260和294組成的。通過循環移位循環緩沖器259中的值,鎖存器292分別在第一和第二周期中提供-2b和b2。
在兩個周期的第二個中,鎖存器228通過多路復用器230將加權的合成話音取樣值的自相關EYLYL提供給乘法器240的第一輸入。循環緩沖器259通過多路復用器296將標度的基音增益值b2提供至乘法器240的第二輸入。其乘積b2EYLYL由乘法器240提供至加法器242的第一輸入。通過多路復用器246將鎖存器244的輸出-2bEXPYL提供給加法器242的第二輸入。加法器242將-2bEXPYL+b2EYLYL提供給鎖存器244,用作存儲。循環存儲器259的鎖存器262至292中的值隨后如上所述循環。
上述這兩個循環過程對標稱的基音增益值的所有八對(-2b,b2)重復。在當前MSE值、-2bEXPYL+b2EYLYL的計算以后的兩個周期中,用一對新的-2b和b2值計算一個新的MSE值。在鎖存器224用新的MSE值更新以前,對當前基音子幀將當前MSE值與鎖存器250內存儲的當前最小MSE比較。當前MSE值-2bEXPYL+b2EYLYL由鎖存器244提供至減法器248的正輸入端。鎖存器250將當前最小MSE值提供至減法器248的負輸入端。控制器220監測減法器248輸出的差值結果。如果差值為負數,對于當前基音子幀來說,該當前MSE值是一新的最小MSE,并被存儲在鎖存器250內,在控制器220中更新相應的基音滯后估算 和基音增益估算指數_。如果差值是非負值,則當前MSE值被忽略。
在每一基音子幀之前,DSP內核4發出一指令至最小化處理器334,通知控制器220將有一個新的基音子幀。在接收到該指令以后,在控制器220中將當前基音滯后和當前基音增益指數設置為0。在每一新的加權合成話音取樣值序列被提供至最小化處理器334之前,DSP內核4發出一多指令至最小化處理器334,通知控制器220將有一個新的加權合成話音取樣值序列。在接收到該指令以后,控制器220使當前基音滯后和當前基音增益的指數遞增1,對應于基音滯后增量為1而基音增益增量為0.25。當加權的合成話音取樣值的第一序列被提供至最小化處理器334時,當前基音調滯后和當前基音增益指數將等于1,對應于基音滯后L=17和歸一化的基音增益b=0.25。同樣,在每一基音子幀之前,當前基音滯后估算 和當前基音增益估算指數_被置于零,表示一無效基音滯后和基音增益。在每一基音子幀期間,控制器220將檢測鎖存器244中的第一負MSE。這一值被存儲在鎖存器250內,并且相應的基音滯后估算 和基音增益估算指數_在控制器220內更新。這樣做是為了按每一基音子幀使鎖存器250內的最小MAS被始化。如果在該基音子幀內沒有產生負MSE值,則在該子幀結尾處,基音滯后估算 和基音增益估算指數_為零。這些估算值將由控制器220提供至DSP內核4。如果DSP內核4接收到一個無效基音滯后估算值,最佳基音增益被設定為零_=0,對應于零MSE。當基音濾波器的基音增益為零時,基音滯后沒有結果。如果DSP內核4接收到一個有效基音滯后估算值 則該值被用作最佳基音滯后。對于基音增益估算指數1至8,使用的最佳基音增益將分別是0.25,0.5,0.75,1.0,1.25,1.5,1.75和2.0。
在基音搜尋中,等式(47)的MSE函數MSE(L,b)的性質允許實現計算節約。當判定在當前基音滯后中計算的其余MSE值不會產生小于存儲在鎖存器250內當前最小MSE的一個MSE值時,就終斷當前基音滯后的其余MSE計算。本實施例中,在最小化處理器334內應用了三種基音搜尋中節約計算的技術。MSE函數MSE(L,b)是b的二次函數。對于每一基音滯后值L構成一個二次方程。所有這些二次方程通過原點b=0和MSE(L,b)=0。基音增益值b=0包括在該組可能的增益值內,盡管該值不是在這基音搜尋運算中明顯搜尋的。
第一種節約計算的方法包括當EXPYL為負值時在當前基音滯后的基音搜尋中去掉MSE值的計算。所有的基音增益值為正值,確保了零為每一子幀最小MSE的上限。EXPYL的負值將導致正的MSE值,并因此為次最佳(Sub-optimal)的。
第二種節約計算的方法包括根據MSE函數的二次特性,在當前基音滯后的基音搜尋過程中省去其余MSE值的計算。MSE函數MSE(L,b)是對單調增加的基音增益值計算的。當為當前基音滯后計算出一正的MSE值時,省去為當前基音滯后所做的所有其余MSE計算,因為所有其余的MSE值為正值。
第三種節約計算的方法包含根據MSE函數的二次性質,在當前基音滯后的基音搜尋過程中省去其余MSE值的計算。MSE函數MSE(L,b)是對單調遞增的基音增益值計算的。當在當前基音滯后內,某一MSE值計算出來并未被判定為新的最小MSE,并且在此之前某一MSE值已被判定為新的最小MSE的時候,就中斷當前基音滯后內的所有其余MSE計算,因為剩余的MSE值不能小于新的最小MSE。上述三種節約計算的方法給出了最小化處理器334內的有效的節約能源的方法。在方框76內,基音值被量化。對于每一基音子幀,選擇的參數_和 被轉換成傳輸編碼PGAIN和PLAG。最佳基音增益指數_是一個1和8(含1和8)之間的整數。最佳基音滯后 是一個1和127(含1和127)之間的整數值。
PLAG的值依賴于_和 如果_=0,則PLAG=0。否則PLAG=L^.]]>所以,PLAG用七位來表示。如果_=0,則PGAIN=0。否則PGAIN=_-1。所以PGAIN用三位來表示。注意_=0和_=1都使PGAIN=0。這兩種情況是用PLAG的值來區分的,它在第一種情況下為零,在第二種情況中為非零。
由于原料中不需要使用價格昂貴的貴金屬鈷,鎳和錳的含量也較現有技術降低不少,因此比現有Ni-Fe基觸媒合金原料成本減少20%以上。經多次實驗顯示,本觸媒合金可應用于粗顆粒,高強度優質金剛石的合成。利用該觸媒合成的人造金剛石峰值集中,40-60的占比例在65%以上,峰值產量靜壓強度≥13kg所占比例在35%以上,金剛石顏色金黃,透明度高。
具體實施例方式本發明合金采用常規的粉狀或片狀加工方法,按表1所列組份(重量%)進行配料,真空熔煉。
根據本發明FeNi基觸媒的化學成分范圍,配制了4批觸媒,表2提供了制備上述4批觸媒混合料的具體化學成分,表3提供了前述4批觸媒的性能指標。
表1 Fe-Ni基觸媒爐料配比(重量%)

表2

碼書向量CI(n)是由碼書400響應于碼書指數I按照等式53來提供的。在本實施例中,采用當前基音子幀的基音搜尋過程中已經確定的加權合成濾波器404的脈沖響應h(n)。然而在八分之一速率的情況下,h(n)是在加權合成濾波器404中的碼書搜尋中計算的。本實施例中,脈沖響應h(n)被截取至前20個取樣值。
由于碼書的遞歸特性,在碼書搜尋中采用與基音搜尋中類似的遞歸卷積過程。卷積是用下述等式(52)來計算的。
YI(n)=&Sigma;i=019h(i)CI(n-i),0&le;I&lt;128,0&le;n&lt;LC------(52)]]>指數I的碼書向量CI(n)是用下式(53)來定義的。
全卷積是按照等式54,對指數I=0來進行的。輸出Y0(n)被存儲在RAM C182中。對于其余的指數I=1至I=127,卷積是如下式55-57以遞歸方式進行的。
Y0(n)=h(n)*C0(n)=&Sigma;i=019h(i)C0(n-i),0&le;n&lt;LC----(54)]]> 如同基音搜尋中那樣,遞歸卷積的碼書搜尋的性能是由三重分區的RAM和DSP內核4中的ROM E114來最佳化的。
因此可以計算等式(56)中的卷積值,并按每一時鐘周期產生一個結果。例如,在一個周期中,計算Y18(10),存儲Y18(9),取得Y17(10),并取得h(10)。所以,上述等式(56)可以按每一時鐘周期產生一個結果。對于上述等式(57)也可以按每一時鐘周期產生一個結果。例如,在一個時鐘周期中,計算Y18(24),取得Y17(24),并存儲Y18(23)。
能夠進行等式(56)和(57)的運算,而無需在每一碼書指數更新之間將前面計算的加權合成話音取樣值YI-1(n-1)移送至同一源RAM,需要稱為乒乓過程的存儲策略和硬件能力。其中,在每一指數更新之間交換的源和目的RAM。當計算偶數碼書數值的YI(n)時,從三個RAM中的第一個取得YI-1(n-1)值,其結果被存儲在三個RAM中的第二個內。當計算奇數碼書指數值的YI(n)時,從三個RAM的第二個內取得YI-1(n-1)值,其結果存儲在三個RAM中的第一個內。這一乒乓過程無需在每一碼書指數更新期間將先前計算的YI-1(n-1)值移送到同一RAM。
圖10是本實施例中碼書搜尋的遞歸卷積部分(初始非遞歸和遞歸卷積)執行的流程圖。方框414中,碼書指數I被初始化至其最低值,本實施例中,該最低值為0。樣本號n和指數m被設定為零,Y0(n)的值被設定為零。方框416至424構成以非遞歸方式計算的初始卷積循環。初始卷積的計算(此處I=0)是按等式(58)來進行的。
Y0(n)=&Sigma;i-019h(i)C0(n-i)---0&le;n&lt;LC-----(58)]]>初始卷積的計算采用固定長度的循環,來減小計算的復雜性。采用這種方式,就避免了在等式(58)內循環(方框320-324)中建立可變長度循環結構所需的開銷。每一Y0(n)在其計算以后被傳送至最小化處理器412。
方框416測試樣本指數n。如果n等于碼書子幀長度LC,則第一卷積結束,流程進行到方框426。如果在方框416中,n小于碼書子幀長度,則流程繼續進行到方框420。方框420測試指數m。如果m等于濾波器脈沖響應長度(本實施例中為20),則當前迭代結束,流程進行到方框418,這時m被設定為0,n遞增1。流程隨后回到方框416。如果在方框420中,m小于濾器脈沖響應長度20,則程序進行到方框424,累計部分和。流程進行到方框422,此處m遞增1,流程進行到方框420。
在DSP內核4中,進行由方框414至424形成的初始卷積循環中包含的運算,其中給出恰當的流水線,使得可以如方框424中所示進行乘積的累加。下面的運算描述了一個時鐘周期中出現在DSP內核4中的計算流水線。濾波器響應值h(m+1)從RAM A104中取出,并被提供至AREG 130。碼書向量值CI(n)從ROME114中取出,并被提供至BREG 134。C0REG 164內的部分和Y0(n+m-1)通過多路復用器168和180被提供至RAM C182。部分積Y0(n+m+1)由RAM C182提供至DREG156。AREG130和BRE G134內的值h(m)和CI(n)分別被提供至乘法器132。乘法器132的輸出通過多路復用器138和禁止的桶形移位器140提供至加法器146的第一輸入。部分和Y0(n+m)由DREG156通過多路復用器154、禁止的反相器152和禁止的桶形移位器150提供至加法器146的第二輸入。本實施例中,中心剪除的高斯碼書CI(n)大多數為零值。利用這一情況作為節能特性,DSP內核4首先檢驗在方框424中,碼書向量是否為零。如果為零,則跳過上述通常在方框424內進行的相乘和相加步驟。這一過程清除了略占80%時間的相乘和相加運算,從而節省了能源。加法器146的輸出通過多路復用器148被提供至C0REG 164。C0REG中的該值隨后通過多路復用器168和180被提供至RAM C182。當指數n達到方框416中的最大允許值時,初始卷積結束,RAM C182中的部分和現在就是卷積的結果。
當初始卷積結束時,流程進行到方框426,對剩余碼書指數值進行遞歸卷積的計算。
在方框426中,樣本指數n被設定為零,碼書指數I遞增1。流程進行到方框428。方框428測試I。如果I大于或等于128(在本實施例中128為最大碼書指數值),則流程進行到方框430,在此碼書搜尋運算終止。如果I小于或等于127,則流程進行到方框432。方框432控制前面描述的乒乓運算過程。在方框432,測試I,來確定它是偶數還是奇數。如果I是偶數,則流程進行到方框442(第一種情況所描述的運算)。如果I為奇數,則流程進行到方框434(第二種情況描述的運算)。
第一種情況(碼書指數I為偶數值)在方框442中,按照等式55計算YI(0)。地址單元A 102將一地址值提供至RAM A104,它響應于此通過多路復用器108將h(0)提供至AREG130。在同一時鐘周期中,地址單元E112將一地址值提供至ROM E114,它響應于此通過多路復用器116將CI(0)提供至BREG134。在下一個周期中,AREG130提供h(0)、BREG134提供CI(0)至乘法器132,在此,兩值相乘,其積通過多路復用器138以及禁止的桶形移位器140提供至加法器146的第一輸入。加法器146的第二輸入通過多路復用器154、禁止的反相器元件152以及桶形移位器152被置零。加法器146的輸出通過多路復用器148提供至C0REG164。同一時鐘周期內,YI-1和h(1)被分別從RAM B122和RAM A104讀取,并通過多路復用器158和100被提供至DREG156和AREG130。
在方框444內,合成的話音樣品指數n遞增1。在控制方框446內,如果合成的話音樣品指數n小于20,則流程進行到方框448。
在方框448中,按照等式(56)每一時鐘周期計算一個新的YI(n)。為了使YI-1(n-1)和h(n)的值初始化而在方框448的第一次疊代之前所需的恰當設置是如上所述在方框442內實現的。為了存儲YI(19)的最終值,在方框448的最后迭代后還需要恰當的清除。
在方框448的第一次迭代中,方框442中計算的YI(0)出現在C0REG164內。C0REG164通過多路復用器168和180,以從地址單元C186提供至RAM C182的地址值向用作存儲的RAM C182提供YI(0),YI(0)在被提供至RAM C182的同時還被提供至最小化處理器412。
在方框448內,在一個時鐘周期中進行下述運算。按照地址單元B120提供的地址,通過多路復用器116和158,由RAM B122將YI-1(n)提供至DRE G156。按照地址單元A 102提供的地址,通過多路復用器108,由RAM A104將脈沖響應值提供至AREG 130。DREG156通過多路復用器154、禁止的反相器元件152以及桶形移位器150將YI-1(n-1)提供至加法器146的第一輸入。AREG 130提供h(n)、BREG 134提供CI(n)提供至乘法器132,在此兩值相乘,其乘積由乘法器132通過多路復用器138、通過禁止的桶形移位器140提供至加法器146的第二輸入。加法器146的輸出通過多路復用器148提供至C0REG164。C0REG164中在前一迭代中計算的值通過多路復用器168和180被提供至用作存儲的RAM C182以及最小化處理器412。
在控制方框446中,如果合成的話音樣品指數n等于20,則流程在進行到方框454之前,最終迭代中計算的YI(19)通過多路復用器168和124被提供至RAMB122,用來存儲在循環緩沖器以及最小化處理器412內。
第一種情況結束第二種情況(碼書指數I為奇數值)在方框434中,按照等式55計算II(0)。地址單元A 102提供一地址值至RAMA104,其對此響應,通過多路復用器108將h(0)提供至AREG 130。在同一時鐘周期中,地址單元E 112將一地址值提供至ROME 114,其響應于此,通過多路復用器116將CI(0)提供至BREG 134。在下一周期中,AREG 130提供h(0)、BREG 134提供CI(0)至乘法器132,在此兩值相乘,其積通過多路復用器138、通過禁止的桶形移位器140被提供至加法器146的第一輸入。加法器146的第二輸入通過多路復用器154、禁止的反相器元件152以及桶形移位器152被置零。加法器146的輸出通過多路復用器148被提供至C0REG164。在同一時鐘周期中,YI-1(0)和h(1)被分別從RAM C182和RAMA102中讀取,并通過多路復用器158和100被提供至DREG156和AREG130。
在方框436中,合成的話音樣品指數n遞增1。在控制方框438中,如果合成的話音樣品指數n小于20,則流程進行到方框440。
在方框440中,按照等式(56)每一時鐘周期計算一個新的YI(n)值。為了使YI-1(n)和h(n)的值初始化,方框440的第一次迭代之前所需的恰當設置是如上所述在方框434中實現的。為了存儲YI(19)的最終值,方框440的最終迭代后還需要恰當的清除。
在方框440的第一次迭代中,方框434中計算的YI(0)出現在C0REG164中。C0REG164通過多路復用器168和180,以從地址單元B120提供至RAM B122的地址值向用作存儲的RAM B122提供YI(0),YI(0)在被提供至RAM B122的同時還被提供至最小化處理器412。
在方框440中,在一個時鐘周期中進行下述運算。按照地址單元C 186提供的地址,通過多路復用器158,由RAM C182將YI-1(n)值提供至DREG 156。按照地址單元A 102提供的地址,通過多路復用器108,由RAM A104將脈沖響應值h(n+1)提供至AREG 130。DREG156通過多路復用器154、禁止的反相器元件152以及桶形移位器150,將YI-1(n-1)提供至加法器146的第一輸入。AREG 130提供h(n)、BREG 134提供CI(n)至乘法器132,在此兩值相乘,并且其積由乘法器132通過多路復用器138、桶形移位器140提供至加法器146的第二輸入。加法器146的輸出通過乘法器148提供至C0REG164。C0REG164中由前一迭代計算的值通過多路復用器168和124被提供至用作存儲的RAM B122以及最小化處理器412。
在方框436中,合成的話音樣品指數n遞增1。在控制方框438中,如果合成的話音樣品指數n等于20,則在流程進行到方框454之前,在最后迭代中計算的YI(19)通過多路復用器168和124被提供至RAM B122,用來存儲在RAM B122中的循環緩沖器內,YI(19)還被提供至最小化處理器412。
第二種情況結束在方框454的第一次迭代之前,YI-1(19)是從RAM B122中的循環緩沖器內取得并被裝入BREGB 4內的。YI-1(19)隨后從BREG 134移送到C0REG 164,隨后YI-1(20)被從RAM B122中的循環緩沖器內取得,并被裝入BREG 134內。
在方框454內,按照等式(57),每一時鐘周期計算一個新的YI(n)。在一個時鐘周期中進行下述運算。YI-1(n-2)由BREG 134提供至C0REG 164。YI-1(n-3)是從RAM B122內的循環緩沖器讀取并被裝入BREG 134內的。C0REG 164中的YI-1(n-1)提交給最小化處理器412。在方框454的最后迭代以后,從RAM B122中的循環緩沖器中刪除YI-1(LC-2)。對每一碼書指數,在RAM B122內的循環緩沖器中加進并去掉一個元素,使循環緩沖器的大小保持在LC-19。
RAM B122中循環緩沖器的實施是由地址單元B120中的特殊地址寄存器來實現的,其支配環繞點(地址取模操作),從而以循環方式自動對順序存儲器尋址。
在方框450中,合成的話音取樣指數n遞增1。在控制方框452中,如果合成的話音取樣指數n小于LC,則流程進行到方框454。如果合成的話音樣品指數n等于LC,則對于當前碼書指數值I已計算了所有的YI(n)值,流程回到方框426。
在合成話音取樣值YI(n)的計算之前,長為LC的感性加權的話音取樣值序列XC(n)被提供至最小化處理器412。如前所述,對于碼書向量指數值I=0至I=127,長度為LC的合成話音取樣值序列YI(n)在初始和遞歸卷積計算期間被提供至最小化處理器412。合成的話音取樣值被順序地提供至最小化處理器412。最小化處理器412計算每一合成話音樣品序列的自相關以及每一合成話音取樣序列YI(n)和感性加權的話音取樣值序列XC(n)之間的互相關。根據這些相關值,最小化處理器412隨后計算每一合成話音取樣序列YI(n)和感性加權的話音取樣值序列XC(n)之間MSE的相對值。對于每一碼書向量指數I,對合成話音取樣序列的所有可能的碼書增益值G計算MSE。通過當前碼書向量指數I和當前碼書增益G的最小MSE值來保持最小MSE值,最小化處理器412在所有碼書向量指數值I和所有碼書增益值G中求得最小MSE。對應于最小MSE的碼書向量指數估算 以及碼書增益指數估算值 也由最小化處理器412保持。每一新的MSE值與最小化處理器412中保持的MSE比較。如果新的MSE小于最小MSE,則該最小MSE由新的MSE值取代,碼書向量指數估算值 和碼書增益估算值指數 被更新,以反映該的最小MSE。最小化處理器412中保持的最小MSE以及相應的碼書向量指數估算值 和碼書增益估算指數 在每一用碼書子幀中計算的第一MSE值。在所有的碼書向量指數I和所有碼書增益值G用盡以后,碼書向量指數估算值 和碼書增益估算指數 就將分別是當前碼書子幀的最佳碼書向量指數和最佳碼書增益指數。最小化處理器412通過輸入口12提供最佳碼書向量指數 以及最佳碼書增益指數 至DSP內核4。最佳碼書向量指數 和最佳碼書增益估算指數 是產生感性加權的話音取樣值XC(n)以及加權的合成話音取樣值YI(n)之間最小MSE的那些指數值。如下述等式(59)至(61)所述,MSE是碼書指數I和碼書增益G的函數。
MSE(I,G)=&Sigma;n=0LC-1(XC(n)-GY1(n))2----(59)]]>=&Sigma;n=0LL-1(XC(n))2-2G&Sigma;n=0LC-1(XC(n)YI(n))+]]>G2&Sigma;n=0LC-1(YI(n))2-----(60)]]>=EXCXC-2GEXCYL+G2EYLYI---(61)]]>EXCXC是感性加權話音取樣值XC(n)的自相關。EXCYI是感性加權話音取樣值XC(n)和加權合成的話音取樣值YI(n)之間的互相關。EYIYI是感性加權的合成話音取樣值YI(n)的自相關。
感性加權的話音取樣值XC(n)的自相關EXCXC不是碼書增益G的函數。EXCXC在每一碼書子幀內保持不變,所以不反映最佳碼書向量指數和最佳碼書增益的選擇。等式(59)至(61)對碼書向量指數I和碼書增益G的最小化與下述等式(62)的最小化等價。
MSE(I,G)=-2GEXCYI+G2EYIYI(62)
最小化處理器計算加權合成話音取樣值序列YI(n)的自相關EYIYI以及加權的話音取樣值序列XC(n)和加權的合成話音取樣值序列YI(n)之間的互相關EXCYI。對于每一相關對(EXCYL,EYIYI),最小化處理器412按照上述等式(62),計算一組碼書增益G的相對MSE。相關值EXCYI和EYIYI的計算是同時在最小化處理器412內進行的。對于碼書向量指數I計算相對MSE值,并作出有關MSE最小值的判定,同時對碼書向量指數I+1,計算相關值。
圖6a和6b描述了一個最小化處理器412的典型實施例。感性加權的話音取樣值XC(n)由DSP內核4提供至鎖存器210,用來按照控制器220提供的地址存儲在RAM X212中。兩組碼書增益值是由DSP內核4提供至最小化處理器412的。一組用于正碼書增益值G,第二組用于負碼書增益值-G。在全速率和半速率中,標稱碼書增益-2G,從G=-4.0dB至G=+8.0dB,以間隔+4.0dB通過多路復用器260由DSP內核4提供,分別存儲在鎖存器292、288、284以及280內。在四分之一速率以及八分之一速率下,標稱碼書增益值-2G,從G=-4.0dB到G=-2.0dB,以間隔2.0dB,通過多路復用器260,由DSP內核4提供,分別存儲在鎖存器292、288、284以及280內。相應的標稱編碼簿增益值G2通過多路復用器260提供,分別存儲在鎖存器290、286、282以及278內。在全速率以及二分之一速率下,標稱碼書增益值2G從G=-4.0dB到G=+8.0dB以間隔+4.0dB通過多路復用器260提供,分別存儲在鎖存器276、272、268以及264內。在四分之一速率和八分之一速率下標稱碼書增益值2G從G=-4.0dB到G=2.0dB,以間隔+2.0dB,通過多路復用器260提供,分別存儲在鎖存器276、272、268和264內。相應的標稱碼書增益值G2通過多路復用器260提供,分別存儲在鎖存器274、270、266和262內。多路復用器260將值直接提供給鎖存器262。鎖存器262將值直接提供給鎖存器264。鎖存器276通過多路復用器294將值提供給鎖存器278。鎖存器290將值直接提供給鎖存器292,等等。通過鎖存器262至292以及多路復用器294的移位值使得這些值可以通過多路復用器260提供到循環緩沖器259內的所有鎖存器。在碼書搜尋中,循環緩沖器259內提供兩個循環緩沖器。在感性加權的話音取樣值XC(n)存儲和碼書增益值的存儲以后,加權合成的話音取樣值序列列YI(n)被提供至鎖存器210。加權合成的話音取樣值II(n)由鎖存器210提供至產生加權合成話音取樣值的平方(YI(n))2的乘法器216的兩個輸入端。鎖存器210還提供加權合成話音取樣值YI(n)至乘法器218的第一輸入端。RAMX212通過鎖存器214將感性加權的話音取樣值XC(n)提供至乘法器218的第二輸入端。乘法器218計算乘積值XC(n)YI(n)。每一周期新的平方(YI(n)2和新的乘積XC(n)YI(n)分別由乘法器216和218計算。取樣指數n按每一碼書向量指數值I從0變化到LC-1。
加權合成的話音取樣值的平方(YI(n))2被提供至累加器221。乘積值XC(n)YI(n)被提供至累加器231。累加器221對每一碼書向量指數I計算LC平方和。累加器231對每一碼書向量指數I計算LC個乘積值的和。
在每一新的碼書向量指數之前,鎖存器226通過多路復用器224提供零。累加器221準備計算當前碼書向量指數I的自相關EYIYI。在累加器221中,平方(YI(n))2被提供至加法器222的第一輸入端。總和由鎖存器226提供至加法器222的第二輸入端。新計算的總和由加法器222通過多路復用器224提供至鎖存器226,用作存儲。在對碼書向量指數I的所有LC個值累加以后,自相關值EYIYI被提供至鎖存器228,供存儲。
在每一新的碼書向量指數之前,鎖存器236通過多路復用器234提供零。累加器231準備計算當前碼書向量指數I的互相關值EXCYI。在累加器231中,乘積值XC(n)YI(n)被提供至加法器232的第一輸入端。總和由鎖存器236提供至加法器232的第二輸入。新計算的總和由加法器232通過多路復用器234提供至鎖存器236,供存儲。在對碼書向量指數I的所有LC個值累加以后,互相關值EXCYI被提供至鎖存器238,供存儲。
等式(62)描述的MSE隨后在下述兩個周期的過程中計算。
在兩個周期的第一個中,鎖存器238通過多路復用器230將感性加權的話音取樣值和加權的合成話音取樣值之間的互相關值EXCYI提供至乘法器240的第一輸入端。控制器220監測鎖存器238提供的EXCYI。如果EXCYI是非負值,則鎖存器292通過多路復用器296將標稱碼書增益值-2G提供至乘法器240的第二輸入端。乘積-2GEXCYI由乘法器240提供至加法器242的第一輸入。如果EXCYI是負值,則鎖存器276通過多路復用器296將標稱碼書增益值2G提供至乘法器240的第二輸入。乘積2GEXCYI由乘法器240提供至加法器242的第一輸入。加法器242的第二輸入通過多路復用器246置零。加法器242的輸出被提供至鎖存器244,供存儲。EXCYI的符號存儲在控制器220內。EXCYI的符號為1和0分別對應于EXCYI的負值和非負值。鎖存器262至276的值通過多路復用器260,由提供鎖存器276的輸出至鎖存器262來循環移位。循環移位以后,鎖存器262、264、266、268、270、272、274以及276中分別包含以前存儲在鎖存器276、262、264、266、268、270、272以及274中的值。鎖存器278至292中的值通過多路復用器294,由提供鎖存器292中的值通過多路復用器294,由提供鎖存器292的輸出至鎖存器278來循環移位。循環移位以后,鎖存器278、280、282、284、286、288、290以及292、分別包含以前存儲在鎖存器292、278、280、282、284、286、288以及290中的值。一個循環緩沖器是由鎖存器262至276和多路復用器260組成的。第二個循環緩沖器是由鎖存器278至292以及多路復用器294組成的。通過循環移位循環緩沖器259中兩個循環緩沖器的第二個中的值,鎖存器292分別提供第一和第二周期中的-2G和G2。通過循環移位循環緩沖器259中兩個循環緩沖器的第二個中的值,鎖存器276分別提供第一和第二周期中的2G和G2。對于每一對相關和互相關值,只有一組碼書增益對是由循環緩沖259提供的。一組碼書增益對是由循環緩沖器262至276和多路復用器260組成的循環緩沖器為負值的EXCYI提供的。另一組碼書增益對是由鎖存器278至292和多路復用器294組成的循環緩沖器為非負值的EXCYI提供的。
在兩個周期的第二個中,鎖存器228通過多路復用器230將EYIYI提供至乘法器240的第一個輸入端。通過多路復用器296,鎖存器276和292分別對負值和非負值的EXCYI,將碼書增益值G2提供至乘法器240的第二輸入端。乘積G2EYIYI由乘法器240提供至加法器242的第一輸入端。加法器242的第二輸入端通過多路復用器246提供鎖存器244的輸出±2GEXCYI。加法器242提供±2GEXCYI+G2EYIYI至鎖存器244,供存儲。循環緩沖器259的鎖存器262至292中的值以上述方式循環移位。
上述兩周期的過程對于每一碼書指數I和所有四對碼書增益值(±2G,G2)重復。在當前MSE值(±2GEXCYI+G2EYIYI)計算以后的兩個周期中,用下一對±2G和G2值計算一個新的MSE值。在鎖存器244用新的MSE值更新之前,當前MSE值與存儲在鎖存器250中當前碼書子幀的最小MES比較,當前MSE值(±2GEXCYI+G2EYIYI)由鎖存器244提供至減法器248的正輸入端。鎖存器250將當前最小MSE值提供至減法器248的負輸入端。控制器220監測減法器248輸出的差值。如果差值為負,則當前MSE值為當前碼書小幀的新的最小MSE,并被存儲在鎖存器250內,相應的碼書向量指數估算 和碼書增益估算指數 在控制器220內更新。如果差值為非負值,則當前MSE值被忽略。
在每一碼書子幀之前,DSP內核4向最小化處理器412發出一條指令,通知控制器220以下有一個新的碼書子幀。在收到這條指令以后,當前碼書向量指數和當前碼書增益指數在控制器220中被設置為0。在每一新的加權合成話音取值值序列被提供至最小化處理器412之前,DSP內核4發出一條指令給最小化處理器412,通知控制器220以下有一個加權合成話音取樣值的新序列。在收到這條指令以后,控制器使當前碼書向量指數和當前碼書增益指數遞增1,這對應于碼書向量指數增量1和根據速率碼書增益增量2dB或4dB。當加權合成的話音取樣值的第一序列被提供至最小化處理器412時,當前碼書向量指數和當前碼書增益指數等于1,這對應于碼書指數向量為0以及根據速率不同碼書增益G=-8dB或G=-4dB。在每一碼書子幀內,第一個MSE值存儲在鎖存器250內,相應的碼書向量指數估算值 和碼書增益優算指數 在控制器220內更新。這樣做是為了對每一碼書子幀使鎖存器250內的最小MSE初始化。相應于最小MSE估算值的碼書向量指數和碼書增益指數將與相應于最小MSE的互相關EXCYI的符號一起由控制器220提供至DSP內核4。如果DSP內核4接收到表示EXCYI符號的零值則它將把最佳碼書增益設定為G。如果DSP內核4收到表示EXCYI符號的1值,則它將把最佳碼書增益設定為-G。DSP內核4用控制器220提供的碼書向量指數估算值和碼書增益估算指數來確定最佳碼書向量和最佳碼書增益。對于全速率和半速率,分別對應于碼書增益指數G^=1]]>至G^=4]]>最佳碼書增益G為-4dB、0dB、+4dB和+8dB。對于四分之一和八分之一速率,對應于碼書增益指數G^=1]]>至G^=4,]]>最佳碼書增益G為-4dB、-2dB、0dB和+2dB。
在碼書搜尋中,等式(62)表示的MSE函數MSE(I,G)的性質使得可以節約計算。當判定出對當前碼書向量計算剩下的MSE值無法產生小于鎖存器250中存儲的當前最小MSE時,就可以停止對當前碼書向量的其余MSE計算。本實施例中,在最小化處理器412中采用了三種碼書搜尋節約計算的技術。MSE函數MSE(I,G)是G的二次函數。對每一碼書向量指數I構成一個二次方程。所有這些二次方程均通過原點G=0和MSE(I,G)=0。
第一種節約計算的方法包含根據EXCYI的符號,搜尋正碼書增益值或負碼書增益值。EXCYI的負值和負增益值將產生等式62中-2GEXCYI項的負值。EXCYI的正值和正增益值也將產生等式62中-2GEXCYI項的負值。因為等式(62)中G2EYIYI項總是正數,-2GEXCYI項的負值將趨于使MSE最小。兩組碼書增益對被提供至循環緩沖器259,一個帶有正碼書增益值,第二個帶有負碼書增益值。以這種方式,對于每一碼書向量指數I,可以使用四對增益值來取代八對增益值。
第二種節約計算的方法包括根據MSE函數的二次特性,在當前碼書向量的碼書搜尋過程中省略其余MSE值的計算。MSE函數MSE(IG)是按單調增加的碼書增益值計算的。當為當前碼書向量計算出一個正MSE值時,因為相應的MSE值將大于當前MSE值,所以為當前碼書向量所有剩余MSE計算可以被省略。
第三種節省計算的方法包含根據MSE函數的二次特性,在當前碼書指數向量的碼書搜尋過程中省去其余MSE值的計算。因為對單調增加的碼書增益值計算MSE(I,G),當在當前碼書向量內計算出一個被判定為不是新的最小MSE的MSE值并且在當前碼書向量前一個已經計算的MSE被判定的是新的最小MSE的MSE值時,當前碼書向量內的其余MSE計算可以被省去。這是因為這些其余的MSE值不會小于新的最小MSE。上述三種節約計算的方法使最小化處理器412中的功耗大大減少。
在方框84內,碼書值被量化。方框86檢驗是否處理了所有的碼書子幀。如果還未處理完所有的碼書子幀,則流程回到方框80,如果所有的碼書子幀均已被處理,則流程進行到方框88。方框88檢驗是否所有的基音子幀均已被處理。如果還未處理完所有的基音子幀,則流程程回到方框70,如果所有的基音子幀均已被處理,則流程進行到方框90。
在方框90中,編碼結果被壓縮成一種特定格式。在全速率下,由微處理機(未圖示)讀取22字節的數據。半速率讀取10字節,四分之一速率讀取5字節,八分之一速率讀取2個字節。在全速率下產生11個奇偶檢驗位,提供全速率數據18個最重要位的糾錯和檢驗。
發射機處的編碼器必須保持接收機處譯碼器的狀態,目的是為更新在基音和碼書搜尋過程中依次用作編碼器的濾波器存儲值。本實施例中,編碼器包含在每一碼書子幀后使用的譯碼器的版本(version)。
在DSP內核4內進行下述譯碼操作用作編碼器的一部分。參見圖11,為當前碼書子幀確定的最佳碼書向量指數 和最佳碼書增益 被用來產生一個標稱碼書向量Gd(n)。除了八分之一速率以外,碼書502配備有為當前碼書子幀確定的最佳碼書指數 并響應于此,提供相應的激勵向量至乘法器504的第一輸入端。在八分之一速率的情況下,偽隨機向量發生器500產生一個偽隨機序列作為Cd(n),并被提供至乘法器504的第一輸入端。為當前碼書子幀確定的最佳碼書增益 被提供至乘法器504的第二輸入端。該序列是由接收機處譯碼器所使用的同樣偽隨機發生運算產生的。
標稱碼書向量Cd(n)被提供至產生共振峰殘留Pd(n)的基音合成濾波器506。基音合成濾波之存儲值由生成話音的最后取樣產生的最終狀態初始化。基音合成濾波器506采用為當前基音子幀判定的最佳基音滯后 和最佳基音增益_。對于八分之一速率,最佳基音增益被設定為0。保留基音合成濾波存儲值的最后狀態,用來產生如上所述的下一基音調子幀的話音,以及用于后續基音搜尋和編碼器內的譯碼操作。
加權共振峰合成濾波器508根據共振峰殘留Pd(n)產生輸出Yd(n)。這個濾波器由產生話音的最后取樣的最終狀態初始化。根據當前子幀插值LSP值計算的LPC系數用作該濾波器的系數。該濾波器的最終狀態用來產生下一碼書子幀的話音,以及用于隨后的基音及碼書搜尋。
圖2中方框44和50所示的譯碼操作是在DSP內核4內進行的。ASIC通過微處理機接口42從微處理機(未圖示)接收特定格式的數據包。DSP內核4對該數據包中的數據譯碼,并用它來合成通過PCM接口2提供至一編譯碼器(未圖示)的話音取樣值。在DSP內格4中,接收的數據包被拆開,來取得合成話音取樣值所需的數據。數據包括編碼速率LSP頻率、以及該速率下相應子幀的基音和碼書參數。根據接收的數據包數據對話音取樣值的合成是在DSP內核4內進行的,并示于圖12中。
參見圖12,相應于當前碼書子幀的最佳碼書向量指數 和最佳碼書增益 被譯碼器用來產生標稱編碼薄向量Cd(n)。除了八分之一速率之外,對應于當前碼書子幀的最佳碼書指數 碼書522被提供。響應于此,將相應的激勵向量提供至乘法器524的第一輸入端。在八分之一速率的情況下,用于Cd(n)的偽隨機序列由偽隨機向量發生器520產生,并提供至乘法器524的第一輸入端。該序列由接收機處譯碼器使用的同一偽隨機發生操作來產生。相應于當前碼書子幀的最佳碼書增益值 被提供至乘法器524的第二輸入端。
標稱碼書向量Cd(n)被提供至產生共振峰殘留Pd(n)的基音合成濾波器526基音合成濾波器存儲器由生成話音的最后取樣所產生的最后狀態初始化。基音合成濾波器526使用相應于當前基音子幀的最佳基音滯后 和最佳基音增益_。對于八分之一速率,最佳基音增益被設定為0。基音合成濾波器的最終狀態被存儲起來,用來產生如上所述下一基音子幀的話音。
加權共振峰合成濾波器528根據共振峰殘留Pd(n)產生輸出Yd(n)。該濾波器由生成話音的最后取樣值產生的最終狀態初始化。根據當前子幀的插值LSP值計算的LPC系數用作該濾波器的系數。濾波器的最終狀態被存儲起來,用來產生下一碼書子幀的話音。
被譯碼的話音Yd(n)被提供至在本實施例中稱為長期后置濾波器(long termpost-filter)的后置濾波器530它是基于被譯碼的當前子幀的LPC系數。后置濾波器530對重新構筑的話音取樣Yd(n)進行濾波,并將經濾波的話音提供至增益控制器532。增益控制器532控制輸出話音Sd(n)的電平,并能夠進行自動增益控制(AGC)。
前述本發明的描述使得本領域的任何技術人員能制作或使用本發明。本領域的技術人員還可以對這些實施例作各種改進,其基本原理還可以用于其他實施例,而無需借助一本發明的專業人員。所以,本發明并非僅限于上述實施例,而應當在本文所揭示的原理和新特征的最大范圍內來理解本發明。
權利要求
1.一種用于進行濾波操作的數字信號處理器,所述處理器在時鐘周期產生多個濾波結果,該處理器包括第一乘/加元件,用于接收輸入信號樣值以及濾波器系數,并產生第一濾波結果;多個附加乘/加元件;以及控制元件,用于將所述多個附加乘/加元件置于濾波器模式,其中在所述濾波器模式中,所述附加乘/加元件接收所述輸入信號樣值的延遲形式,還接收所述濾波器系數,并產生多個附加濾波結果。
2.如權利要求1所述的濾波器,其特征在于所述第一乘/加元件置于數字信號處理核心中,而所述多個附加乘/加元件置于最小化處理器中。
3.如權利要求1所述的濾波器,其特征在于所述第一乘/加元件置于數字信號處理核心中,而所述多個附加乘/加元件置于耦合于所述數字處理核心的輔助處理器中。
4.如權利要求1所述的濾波器,其特征在于所述第一乘/加元件置于數字信號處理核心中,而所述多個附加乘/加元件置于協同處理器中。
5.如權利要求1所述的濾波器,其特征在于所述第一乘/加元件置于數字信號處理核心中,而所述多個附加乘/加元件置于加速器中。
6.如權利要求1所述的濾波器,其特征在于所述控制元件控制多個多路復用器以在所述濾波器模式時配置一組預定數據路徑。
7.如權利要求1所述的濾波器,其特征在于進一步包括多路復用器,用于接收所述附加濾波結果并選擇所述濾波結果的其中一個作為輸出。
8.在一種包括數字信號處理核心和最小化處理器的聲碼器中,其中所述最小化處理器包括多個累加器和多個乘法器,一子系統包括控制裝置,用于將所述最小化處理器置于濾波器模式;以及算術裝置,用于響應與所述控制裝置而進行信號分析操作。
9.如權利要求8所述的聲碼器,其特征在于所述信號分析操作是濾波操作。
10.如權利要求8所述的聲碼器,其特征在于所述信號分析操作是自相關操作。
11.如權利要求8所述的聲碼器,其特征在于所述信號分析操作是互相關聯操作。
12.一種用于進行信號分析操作的數字信號處理器,所述處理器在時鐘周期產生多個分析結果,該處理器包括第一乘/加元件,用于接收輸入信號樣值,并產生第一分析結果;多個附加乘/加元件;以及控制元件,用于將所述多個附加乘/加元件置于補充模式,其中在所述補充模式中,所述附加乘/加元件接收所述輸入信號樣值以及輸入信號樣值的延遲形式,并產生多個補充分析結果。
13.如權利要求12所述的濾波器,其特征在于所述第一乘/加元件置于數字信號處理核心中,而所述多個附加乘/加元件置于最小化處理器中。
14.如權利要求12所述的濾波器,其特征在于所述第一乘/加元件置于數字信號處理核心中,而所述多個附加乘/加元件置于耦合于所述數字處理核心的輔助處理器中。
15.如權利要求12所述的濾波器,其特征在于所述第一乘/加元件置于數字信號處理核心中,而所述多個附加乘/加元件置于協同處理器中。
16.如權利要求12所述的濾波器,其特征在于所述第一乘/加元件置于數字信號處理核心中,而所述多個附加乘/加元件置于加速器中。
17.如權利要求12所述的濾波器,其特征在于所述控制元件控制多個多路復用器以在所述補充模式時配置一組預定數據路徑。
18.如權利要求12所述的濾波器,其特征在于進一步包括多路復用器,用于接收所述附加分析結果并選擇所述分析結果的其中一個作為輸出。
19.一種進行遞歸卷積的設備,用于將數字化話音模型化,它包括數字信號處理器(DSP)核心,用于遞歸地對多個值進行卷積;多個隨機存取存儲器(RAM),可由DSP核心進行存取,每個RAM用于存儲各個值,以使這些值可從RAM中相互并行地讀取以由DSP核心進行處理。
20.如權利要求19所述的設備,其特征在于多個RAM包括第一RAM,用于存儲表示加權合成話音樣值的第一組值;第二RAM,用于存儲表示共振峰濾波器脈沖相應的第二組值;以及第三RAM,用于存儲表示共振峰殘留的第三組值。
21.如權利要求20所述的設備,其特征在于進一步包括最小化處理器,用于從DSP核心接收遞歸卷積的結果,并產生將數字化話音模式化的輸出。
22.如權利要求21所述的設備,其特征在于進一步包括塊歸一化電路,該電路包括移位寄存器,用于對數字化話音進行沒有除法操作的歸一化。
23.如權利要求19所述的設備,其特征在于該設備與移動電話組合。
24.如權利要求23所述的設備,其特征在于該設備進一步與移動電話系統組合。
全文摘要
本發明揭示了一種在特殊應用集成電路(ASIC)中實現聲碼器的方法和裝置。該裝置包含一按照一減化了的指令組(RISC)結構進行計算的DSP內核(4)。該電路還包含一特別設計的DSP的從屬處理器,稱為最小化處理器(b)。該裝置還包含一特別設計的塊歸一化電路。
文檔編號G10L19/00GK1512486SQ0315404
公開日2004年7月14日 申請日期1995年2月13日 優先權日1994年2月16日
發明者張乾春, 蘭迪普·辛格, 查爾斯·E·坂牧, 蔡明昌, 普拉山特·坎泰克, J·G·麥克唐納, E 坂牧, 辛格, 特 坎泰克, 麥克唐納 申請人:夸爾柯姆股份有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
韩国伦理电影