1. <code id="ya7qu"><span id="ya7qu"><label id="ya7qu"></label></span></code>

    <b id="ya7qu"><bdo id="ya7qu"></bdo></b>
    <wbr id="ya7qu"><optgroup id="ya7qu"><strike id="ya7qu"></strike></optgroup></wbr>
  2. <u id="ya7qu"><bdo id="ya7qu"></bdo></u>
    現在位置:范文先生網>理工論文>電子通信論文>多制式語音編碼及其DSP實現

    多制式語音編碼及其DSP實現

    時間:2023-02-21 00:18:09 電子通信論文 我要投稿
    • 相關推薦

    多制式語音編碼及其DSP實現

      摘要:介紹了一種多制式語音編解碼器,在單片TMS320VC5409上完成4路語音的全雙工通信,并實現G.729a、CVSD、ADPCM算法之間的編碼轉換,給出了算法的軟硬件實現、算法的運算量及所占用的硬件資源。
      關鍵詞:多制式語音編解碼TMS320VC5409G.729aCVSDADPCM
      
      在各種通信設備中,實時的語音壓縮通常在DSP上實現。單一編碼算法,由于碼率和算法固定,系統的靈活性較差。越來越多的通信服務要求能實現多種、多路編碼算法,提供一定范圍內的編碼速率和編碼算法的多種選擇,例如軟件無線電、IP電話、多媒體終端等。
      
      G.729a是ITU制定的一種高質量的中速率語音編碼標準,編碼速率為8kbps,目前已在許多通信系統中得到了應用。16/32kbps的CVSD是一種抗信道誤碼非常好的語音編碼算法,在軍事通信、宇航通信中得到了廣泛的應用。32kbps的ADPCM是一種算法較簡單的波形編碼,具有良好的話音質量和抗噪性能,在衛星通信、數字話路倍增系統中得到了廣泛應用。綜合了這三種算法的編碼系統,在8kbps~32kbps碼率具有較高的靈活性。
      
      由于語音壓縮的運算量、存儲量和精度要求都不太高,在考慮價格因素的基礎上,定點DSP足以勝任語音編解碼的要求。本文采用了TI公司的TMS320VC5409定點DSP實現了上述三種語音編解碼算法。算法DSP的實現通過了有關測試。其中G.729a和ADPCM采用ITUT有關建議提供的測試序列進行了測試,CVSD按照我國有關標準進行了測試。
      
      本文對以上三種語音編碼和TMS320VC5409做簡單介紹后,對算法的軟件和硬件實現進行介紹,并給出算法所需運算量以及所占用的硬件資源。
      
      1DSP芯片和語音編碼算法
      
      (1)TMS320VC5409簡介
      
      TMS320VC5409是TI公司生產的一種性價比較高的定點DSP芯片,運算速度為80MIPS/100MIPS。它擁有改進的喻佛結構、一個CPU、片上存儲區(32KB的ROM和64KB的DARAM)、片上外設以及專用的指令結構。它具有以下主優點:
      
      ·1條程序總線和3條數據總線。配合存儲區的雙操作數讀取能力,可以支持單周期,三操作數指令,提高了程序的運行和通用性;
      
      ·先進的針對應用設計的CPU硬件邏輯提高了芯片的性能;
      
      ·高度專用的指令結構提供了更快的算法實現和更方便的優化;
      
      ·片上外設包括3個McBSP(多通道緩沖串口)、一個6通道的DMA控制器、8bitHPI口及鎖相環時鐘發生器;
      
      ·模塊化結構方便了快速的后續發展;
      
      ·先進的IC處理技術實現了高性能和低功耗,5V靜態CMOS技術進一步降低了功耗。
      
      (2)G.729a算法
      
      G.729是ITU在8kbps速率上的標準,采用“共軛結構代數碼來激勵線性預測編碼方案”(C-ASCELP)算法。這種算法綜合了波形編碼和參數編碼的優點,以線性預測編碼技術為基礎,采用了矢量量化、分析合成和感覺加權等技術。G.729a只在G.729的基礎上減少了一些運算量,保持了兼容性,質量也基本沒有下降。
      
      (3)32kbpsADPCM算法
      
      G726是ITU制定的自適應差分脈沖編碼算法標準,有4種速率。在此項目中,使用32kbps的速率。ADPCM算法是一種波形編碼,它在PCM編碼的基礎上引入了預測和差分的概念,僅對實際值民預測值之間的差值進行編碼。在編碼過程,用過去樣點的值對當產點進行預測,并自適應地調整預測系數數,使預測誤差很小,從而在降低碼率的同時,保持了很高編碼質量。
      
      (4)CVSD(32kbps/16kbps)算法
      
      連續可變分辯率增量調制,是一種1bit的差分波形編碼方式。自適用的量階隨信號統計特性的變化而變化,在信號很大動態范圍內,可獲得最大信噪比。并且易于實現,電路結構簡單。
      
      主要技術:三連0/三連1檢測,即若檢測到碼流中有三連0或三連1,則表示信號在驟升或驟降,調整量階以適應信號變化。
      
      2硬件系統
      
      (1)硬件板介紹
      
      在發端,模擬信號通過前端處理電路和A/D采樣,轉換成8bitA-lawPCM信號。對數PCM信號在TMS320VC5409中轉換線性碼,并進行壓縮編碼。輸出的G.729a/ADPCM/CVSD編流在信道上傳輸。
      
      接收端接收到的壓縮碼流在DSP中被解碼成對數PCM信號,再經過D/A變換和用戶電路,最終得到模擬話音。其中CPLD用來產生8kHz的幀同步信號,使各硬件芯片之間協同工作。
      
      A/D、D/A部分采用單片MC14557芯片。單路信號的硬件系統框圖如圖1所示。
      
      (2)算法的硬件選擇
      
      程序定義了兩個標志變理flag1、flag2。利用VC5409提供的可屏蔽中斷INT0~INT3,在中斷服務例程中對2個標志位進行設置,從而控制主程序的跳轉。
      
      系統加電后,INT0~INT3其中一個管腳給出中斷請求信號,程序執行中檢測到哪個中斷,就執行該中斷對應的編碼算法。接著,主程序對IMR寄存器置位以屏蔽這些中斷,直至下次系統復位。其中INT0中斷在測試中是無編碼轉換的跳轉,但在應用中用于選擇32kbps的CVSD算法。表1是算法選擇的硬件中斷與標志位設置。
      
      表1算法選擇的硬件中斷與標志位設置
      
      INT0直通,無編碼轉換flag2=0flag1=0INT1G.729aflag2=0flag1=1INT216kbpsCVSDflag2=1flag1=0INT332kbpsADPCMflag2=1flag1=1
      (3)數據流輸入和輸出
      
      VC5409提供了3個McBSP(MultichannelBufferedSerialPorts),并在其中集成了硬件對數PCM編解碼器。串口的雙緩沖區發送、三緩沖區接收能保證數據的連續性。收發的數據流字長可以是8、12、16、20、24、32bit,每幀最多可以有128個字。表2是本項目采用的串口配置。
      
      表2串口配置
      
      串口數據流字長(bit)幀長(word)讀/寫控制同步事件/中斷McBSP0PCM84×1DMAREVT/XEVTMcBSP1G.729a164×1DMAREVT/XEVTMcBSP2ADPCM/CVSD322or4×8bitCPURINT/XINT
      對每種算法,4路編解碼器都要求全雙工工作,因此,對3個McBSP都進行了配置。其中,McBSP0負責PCM碼流的收發。PCM碼流是4路8bit的A-law信號,因此定義字長為8位;McBSP1收發G.729的碼流。G.729分幀編碼,幀長10ms,每幀80bit。為了數據能夠方便、有效地收,定義串口的字長為16bit,這樣,每5個幀同步收全一個G.729幀,共16×5×4(路)=80×4bit。
      
      為了取得數據格式的一致性,方便串口收發碼流,對ADPCM和CVSD定義了相同的碼流格式,并由McBSP2收發。如圖2所示。
      
      32kbpsADPCM每樣點用4bit編碼,規定其碼流為每樣點的碼字重復2次,即占8bit。4路信號其32bit;16kbps和32kbps的CVSD是每樣點2bit和4bit編碼,故規定其碼流為每比特編碼碼字分別重復4次和2次,即均占8bit。4路信號也是32bit。
      
      (4)數據流的傳輸(串口與存儲區)
      
      VC5409提供了6個DMA通道,用戶可以設置每個DMA通道的源地址、目的地址、一次傳輸的數據量、同步事件和中斷方式等。
      
      表3是本項目中各DMA通道的配置情況。
      
      表3DMA配置
      
      通道比特流源地址目的地址緩沖區(字)中斷方式(緩沖區)DMA2G.729a(收)DRR11DM4×5×2全滿/半滿DMA3G.729a(發)DMDXR114×5×2全滿/半滿DMA4PCM(收)*1DRR10DM4×1全滿*2DRR10DM4×80×2全滿/半滿DMA5PCM(發)*1DMDXR104×1全滿*2DMDXR104×80×2全滿/半滿
      DM:數據存儲區
      
      *1:對ADPCM/CVBSD編碼
      
      *2:對G.729a編碼
      
      (5)數據傳輸的控制
      
      如圖3所示,串行數據流在McBSP的DR管腳接收,DX管腳發送。數據收發由幀同步信號觸發。幀同步由CPLD提供,位時鐘由外部晶振提供。
      
      串口與存儲區之間的數據交換由CPU或DMA控制器完成。接收寄存器DRR滿(發送寄存器DXR空)時,串口向DMA發出同步事件(REVT/XEVT)或向CPU發出中斷請求(RINT/XINT),智能DMA或CPU數據傳輸已準備好。
      
      對PCM和G.729碼流,串口(McBSP0/McBSP1)的數據讀寫為DMA方式。
      
      由于G.729采用分幀編碼,一次編解碼待處理的數據量較大。為了避免DMA讀取數據過程中連續碼流溢出,設計緩沖區為雙倍大小。這2塊緩沖區以乒乓方式工作,即DMA傳遞其中塊緩沖區數據時,另一塊緩沖區接收來自串口或CPU的下一組數據。由于VC5409的DMA支持緩沖區全滿或半滿都產生中斷的方式,所以只要將這2塊緩沖區設計成連續,就可以方便地實現乒乓工作,而不產生數據溢出。
      
      對ADPCM/CVSD碼流,由于每次處理的碼流長度較短(32bit),故在中斷服務例程中由CPU直接讀寫串口(McBSP2),而不采取DMA方式。
      
      圖3數據流的收發和傳輸
      
      3軟件系統
      
      (1)CVSD算法的修正
      
      CVSD是每樣點1bit的編碼方式,所以32kbps和16kbps的CVSD輸出信號分別由32kHz和16kHz采樣的PCU信號編碼得到。而實際CVSD編碼器的輸入總是8kHz的采樣信號,為了滿足算法要求。對輸入PCM碼流進行插值濾波。
      
      根據插值這理,可以選擇低通濾波器無失真地恢復原始信號。為了取得信號質量和運算量的折中,設計了5階的橢圓型IIR濾波器。
      
      1:2插值(16kbps)
      
      分子多項式系數:
      
      [1.02295e-01,1.14533e-01,2.41943e-01,
      
      2.41943e-01,1.45325e-01,1.02295e-01]
      
      每母多項式系數:
      
      [1.00000e+00,-1.26125e+00,1.91846e+00,-1.21680+00,6.79321e+01,-1.54358e+01]
      
      1:4插值(32kbps)
      
      分子多項式系數:
      
      [4.48200e+02,-6.9309e+02,4.68041e+02,4.6041e+02,-6.9309e+02,4.48200e+02]
      
      分母多項式系數:
      
      [1.00000e+00,-3.56926e+00,5.66631e+00,-4.83285e+00,2.20789e+00,-4.2822e+01]
      
      另外,在對編解碼后的信號進行頻譜測試時,發現在3kHz處,信號的幅度超出要求3db左右。為此在編碼端加入了譜調整的模塊,使3kHz處頻譜下降3db,作為補償。
      
      
      
      (2)G.729算法的回聲抵消模塊
      
      G.729算法編碼延時為15ms,回聲現象比較明顯,必須引入加聲抵消算法加以抑制。
      
      自適應回聲抵消器的一般算法中,所需運算量最大的是更新參數部分。階數越大,運算量越大。考慮到DSP的性能和算法的運算量要求,采用128階的自適應濾波器進行回聲抵消。
      
      回聲抵消模塊的輸入是當前一幀輸入語音信號與以前解碼器輸出的一階合成語音。回聲抵消器利用解碼器輸出的合成語音信號對一幀輸入信號進行回聲抵消,然后將抵消掉回聲的一幀輸入語音信號提供給編碼器作為輸入信號。
      
      (3)存儲區的優化
      
      ①由于使用DP尋址,變量名僅指示偏移量;而4路信號分時處理,各路所用變量與程序代碼相同,所以可以使用不同頁上同名變量,在不混淆各路信號數據存儲區的前提下,簡化程序存儲區大小。
      
      對于ADPCM程序,編解碼器的有狀態變量各占25字,編解碼器都使用的變量占14字。鑒于DP一頁有128字,所以可以考慮前兩路編解碼器變量共用一頁存儲區;后兩路編解碼器變量共用一頁存儲區。這樣,2路編解碼器的存儲量有25×2×2+14=114字<128字,可以存儲在同一頁上。
      
      為了區分同一頁上的2路變量以及同一路的編解碼器變量,它們的名稱應有不同。因此,編解碼的程序模塊各需要2個版本,即總的程序存儲量=單路程序量×2。
      
      ②對CVSD和ADPCM算法,由于輸入輸出信號不分幀(逐樣點處理),而碼流格式又取得了一致,所以可以共享輸入輸出存儲單元。
      
      (4)代碼的優化
      
      TMS320C54xx提供了強大的硬件結構和指令體系以支持基本的數據處理操作。對匯編語言,充分挖掘指令集的潛力,能大幅度降低程序的復雜度,提高運行速度。如:使用乘累加指令MAC、MAS等,在一個時鐘周期內實現1次乘法和1次加(減)法;使用DELAY指令,在一個周期內實現變量更新,簡化了濾波器的實現;使用循環尋址,對FIR和IIR濾波器只要在主程序中設置一次基地址,降低了開銷;使用PRT+MVDD指令,進行塊搬移,減少頻繁內存讀定的開銷;使用雙字運算指令DADD、DADSUB等指令對32位的變進行操作;使用EXP+NORM指令快速計算定點數的指數和尾數;使用RPT+DSUBT指令高效實現定點數除法;使用RPT+FIRS指令高效實現FIR濾波計算。
      
      4實現結果
      
      各算法的復雜度和存儲量如表4所示,實現所用資源。
      
      表4各算法的復雜度和存儲量
      
      算法復雜度(MIPS)存儲量(千字)ProgramDataG.729608.3218.53CVSD121.540.52ADPCM15.52.0480.28
      總的復雜度=MAX(60,12,40)=60MIPS;
      
      總的存儲量=(8.32+18.53+1.54+0.52+2.048+0.28)=31.24千字;
      
      因此,一片VC5409上的硬件資源可以滿足算法要求。實際系統的各算法性能也通過了相關的標準測試
      
      
      
      
      
      

    【多制式語音編碼及其DSP實現】相關文章:

    一種數字語音通信系統的DSP實現08-06

    基于定點DSP的MP3間頻編碼算法研究及實現08-06

    DSP與慢速設備接口的實現08-06

    CF卡與雙核DSP的實現08-06

    自適應算術編碼的FPGA實現08-06

    DSP上的指紋識別模塊的實現08-06

    語音處理芯片AC48105在低速語音編碼設備中的應用08-06

    DSP+FLASH引導裝載系統的設計與實現08-06

    基于混沌理論的微弱信號檢測的DSP實現08-06

    国产福利萌白酱精品tv一区_日韩亚洲中字无码一区二区三区_亚洲欧洲高清无码在线_全黄无码免费一级毛片
    1. <code id="ya7qu"><span id="ya7qu"><label id="ya7qu"></label></span></code>

      <b id="ya7qu"><bdo id="ya7qu"></bdo></b>
      <wbr id="ya7qu"><optgroup id="ya7qu"><strike id="ya7qu"></strike></optgroup></wbr>
    2. <u id="ya7qu"><bdo id="ya7qu"></bdo></u>
      亚洲免费图区在线视频 | 亚洲精品美女久久久久99 | 亚洲2020久久久久久久 | 亚洲一区二区中文字 | 伊人久久精品视频一区二区 | 在线亚洲精品国产二区图片欧美 |