<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 消費(fèi)電子 > 設(shè)計(jì)應(yīng)用 > 多制式語(yǔ)音編碼及其DSP實(shí)現(xiàn)

          多制式語(yǔ)音編碼及其DSP實(shí)現(xiàn)

          作者: 時(shí)間:2009-02-09 來源:網(wǎng)絡(luò) 收藏
          如圖3所示,串行數(shù)據(jù)流在McBSP的DR管腳接收,DX管腳發(fā)送。數(shù)據(jù)收發(fā)由幀同步信號(hào)觸發(fā)。幀同步由CPLD提供,位時(shí)鐘由外部晶振提供。

          本文引用地址:http://www.ex-cimer.com/article/167071.htm

            串口與存儲(chǔ)區(qū)之間的數(shù)據(jù)交換由CPU或DMA控制器完成。接收寄存器DRR滿(發(fā)送寄存器DXR空)時(shí),串口向DMA發(fā)出同步事件(REVT/XEVT)或向CPU發(fā)出中斷請(qǐng)求(RINT/XINT),通知DMA或CPU數(shù)據(jù)傳輸已準(zhǔn)備好。

            對(duì)PCM和G.729碼流,串口(McBSP0/McBSP1)的數(shù)據(jù)讀寫為DMA方式。

            由于G.729采用分幀,一次編解碼待處理的數(shù)據(jù)量較大。為了避免DMA讀取數(shù)據(jù)過程中連續(xù)碼流溢出,設(shè)計(jì)緩沖區(qū)為雙倍大小。這2塊緩沖區(qū)以乒乓方式工作,即DMA傳遞其中一塊緩沖區(qū)數(shù)據(jù)時(shí),另一塊緩沖區(qū)接收來自串口或CPU的下一組數(shù)據(jù)。由于VC5409的DMA支持緩沖區(qū)全滿或半滿都產(chǎn)生中斷的方式,所以只要將這2塊緩沖區(qū)設(shè)計(jì)成連續(xù)的,就可以方便地乒乓工作,而不產(chǎn)生數(shù)據(jù)溢出。

            對(duì)ADPCM/CVSD碼流,由于每次處理的碼流長(zhǎng)度較短(32bit),故在中斷服務(wù)例程中由CPU直接讀寫串口(McBSP2),而不采取DMA方式。

          3 軟件系統(tǒng)

            (1)CVSD算法的修正

            CVSD是每樣點(diǎn)1bit的方式,所以32kbps和16kbps的CVSD輸出信號(hào)分別由32kHz和16kHz采樣的PCM信號(hào)得到。而實(shí)際CVSD編碼器的輸入總是8kHz的采樣信號(hào),為了滿足算法要求,對(duì)輸入PCM碼流進(jìn)行插值濾波。

            根據(jù)插值定理,可以選擇低通濾波器無失真地恢復(fù)原始信號(hào)。為了取得信號(hào)質(zhì)量和運(yùn)算量的折中,設(shè)計(jì)了5階的橢圓型IIR濾波器。

            1:2插值 (16kbps)

            分子多項(xiàng)式系數(shù):

            [1.02295e-01, 1.14533e-01, 2.41943e-01,

            2.41943e-01, 1.45325e-01, 1.02295e-01]

            分母多項(xiàng)式系數(shù):

            [1.00000e+00, -1.26125e+00, 1.91846e+00, -1.21680e+00, 6.79321e+01, -1.54358e+01]

            1:4插值 (32kbps)

            分子多項(xiàng)式系數(shù):

            [4.48200e+02, -6.9309e+02, 4.68041e+02,

            [4.68041e+02, -6.9309e+02, 4.48200e+02]

            分母多項(xiàng)式系數(shù):

            [1.00000e+00, -3.56926e+00, 5.66631e+00, -4.83285e+00, 2.20789e+00, -4.2822e+01]

            另外,在對(duì)編解碼后的信號(hào)進(jìn)行頻譜測(cè)試時(shí),發(fā)現(xiàn)在3kHz處,信號(hào)的幅度超出要求3db左右。為此在編碼端加入了譜調(diào)整的模塊,使3kHz處頻譜下降3db,作為補(bǔ)償。

            

            (2) G.729算法的回聲抵消模塊

            G.729算法編碼延時(shí)為15ms,回聲現(xiàn)象比較明顯,必須引入回聲抵消算法加以抑制。

            自適應(yīng)回聲抵消器的一般算法中,所需運(yùn)算量最大的是更新參數(shù)部分。階數(shù)越大,運(yùn)算量越大??紤]到的性能和算法的運(yùn)算量要求,采用128階的自適應(yīng)濾波器進(jìn)行回聲抵消。

            回聲抵消模塊的輸入是當(dāng)前一幀輸入信號(hào)與以前解碼器輸出的一段合成?;芈暤窒骼媒獯a器輸出的合成信號(hào)對(duì)一幀輸入信號(hào)進(jìn)行回聲抵消,然后將抵消掉回聲的一幀輸入語(yǔ)音信號(hào)提供給編碼器作為輸入信號(hào)。

            (3)存儲(chǔ)區(qū)的優(yōu)化[4]

            ①由于使用DP尋址,變量名僅指示偏移量;而4路信號(hào)分時(shí)處理,各路所用變量與程序代碼相同,所以可以使用不同頁(yè)上的同名變量,在不混淆各路信號(hào)數(shù)據(jù)存儲(chǔ)區(qū)的前提下,簡(jiǎn)化程序存儲(chǔ)區(qū)大小。

            對(duì)于ADPCM程序,的有狀態(tài)變量各占25字,都使用的變量占14字。鑒于DP一頁(yè)有128字,所以可以考慮前兩路變量共用一頁(yè)存儲(chǔ)區(qū);后兩路編解碼器變量共用一頁(yè)存儲(chǔ)區(qū)。這樣,2路編解碼器的存儲(chǔ)量有25×2×2+14=114字128字,可以存儲(chǔ)在同一頁(yè)上。

            為了區(qū)分同一頁(yè)上的2路變量以及同一路的編解碼器變量,它們的名稱應(yīng)有不同。因此,編解碼的程序模塊各需要2個(gè)版本,即總的程序存儲(chǔ)量=單路程序量×2。

           ?、趯?duì)CVSD和ADPCM算法,由于輸入輸出信號(hào)不分幀(逐樣點(diǎn)處理),而碼流格式又取得了一致,所以可以共享輸入輸出存儲(chǔ)單元。

            (4)代碼的優(yōu)化[3]

            TMS320C54xx提供了強(qiáng)大的硬件結(jié)構(gòu)和指令體系以支持基本的數(shù)據(jù)處理操作。對(duì)匯編語(yǔ)言,充分挖掘指令集的潛力,能大幅度降低程序的復(fù)雜度,提高運(yùn)行速度。如:使用乘累加指令MAC、MAS等,在一個(gè)時(shí)鐘周期內(nèi)1次乘法和1次加(減)法;使用DELAY指令,在一個(gè)周期內(nèi)變量更新,簡(jiǎn)化了濾波器的實(shí)現(xiàn);使用循環(huán)尋址,對(duì)FIR和IIR濾波器只要在主程序中設(shè)置一次基地址,降低了開銷;使用RPT+MVDD指令,進(jìn)行塊搬移,減少頻繁內(nèi)存讀寫的開銷;使用雙字運(yùn)算指令DADD、DADSUB等指令對(duì)32位的變量進(jìn)行操作;使用EXP+NORM指令快速計(jì)算定點(diǎn)數(shù)的指數(shù)和尾數(shù);使用RPT+DSUBT指令高效實(shí)現(xiàn)定點(diǎn)數(shù)除法;使用RPT+FIRS指令高效實(shí)現(xiàn)FIR濾波計(jì)算。

          4 實(shí)現(xiàn)結(jié)果

            各算法的復(fù)雜度和存儲(chǔ)量如表4所示,實(shí)現(xiàn)所用資源。

            因此,一片VC5409上的硬件資源可以滿足算法要求。實(shí)際系統(tǒng)的各算法性能也通過了相關(guān)的標(biāo)準(zhǔn)測(cè)試。


          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();