《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 低碼率語音編碼MELP的SOPC實現
低碼率語音編碼MELP的SOPC實現
李 銳
(南京郵電大學 電子科學與工程學院,江蘇 南京 210003)
摘要: 討論了低碼率語音編碼MELP的編解碼過程,有效降低了語音編碼碼率并能使說話者個人語音特征減弱,特別適合需要弱化說話者語音特點的場合。給出了其FPGA的硬件實現框圖,據此可進行具體的硬件設計。同時給出了MELP編解碼框圖,可用于進一步的軟件編制。
關鍵詞: SoPC MELP NIOS II
Abstract:
Key words :

摘  要: 討論了低碼率語音編碼MELP的編解碼過程,有效降低了語音編碼碼率并能使說話者個人語音特征減弱,特別適合需要弱化說話者語音特點的場合。給出了其FPGA的硬件實現框圖,據此可進行具體的硬件設計。同時給出了MELP編解碼框圖,可用于進一步的軟件編制。
關鍵詞: MELP;NIOS II;SOPC

    語音編碼技術在當今數字通信尤其在無線系統中發(fā)揮著越來越重要的作用。利用語音編碼技術可有效降低信息存儲量、提高信道利用率?;旌霞罹€性預測(MELP)語音編碼算法能在較低碼率下提供較高的語音質量、自然度和清晰度,已成為美國國防部新的2.4 Kb/s的語音編碼標準。
    Nios II處理器是Intel公司為Altera公司推出的32位精簡指令處理器軟核。在Altera公司推出的軟件SOPC中加載Nios II軟核和相應的外圍接口以及與定義相應的自定義指令,對設計進行綜合,下載到FPGA中就可以方便地實現一個具有高速DSP功能的嵌入式處理器[1]。
    由硬件實現復雜的算法通常比軟件實現更高效。利用Altera公司的Nios II嵌入式處理器的定制指令,可以把用戶自定義的功能直接添加到Nios II CPU的算術邏輯單元(ALU)中,以加快專項任務的執(zhí)行速度。自定義指令的優(yōu)勢就在于可以將程序代碼中的瓶頸部分改用硬件指令支持,用自定義的指令使程序得到加速。
1 MELP的構成
    MELP聲碼器的采樣率為8 kHz,每個樣點值用16 bit量化,每180個樣點為1幀,幀長22.5 ms,每幀量化bit數為54 bit,總的速率為2.4 Kb/s。
    MELP聲碼器是建立在傳統的二元激勵LPC模型基礎上,采用了混合激勵、非周期脈沖、自適應譜增強、脈沖整形濾波和傅氏級數幅度值等5項新技術,使得合成語音能更好地擬合自然語音。圖1所示為MELP編解碼原理框圖[2]。


2 Nios II可嵌入軟核的特點
    Nios嵌入式處理器是用戶可配置的通用RISC嵌入式處理器,是一個非常靈活、強大的處理器,因此已成為世界上最流行的嵌入式處理器[3];采用改進的哈佛存儲器結構,CPU帶有分離的數據和程序存儲器總線控制。SOPC Builder系統開發(fā)工具允許用戶容易地指定系統中Avalon控制器和從屬設備之間的連接,這些從屬設備可以是存儲器或外圍設備。
    Nios指令總線為16位,用于從存儲器中讀取指令。Nios數據總線寬度為16位或32位,分別用于Nios CPU的16位或32位配置。
2.1 指令系統
    Nios指令系統支持C和C++程序編譯,包括算術和邏輯運算、位操作、字節(jié)讀、數據傳送、流程控制和條件轉移等指令。指令系統包含豐富的尋址方式以減少代碼長度和提高處理器性能。
2.2 寄存器組
    Nios CPU有1個大容量的窗口化的通用寄存器組、8個控制寄存器、1個程序計數器和1個用于指令前綴的K寄存器。通用寄存器在16位Nios CPU中是16位,在32位Nios CPU中是32位。寄存器組可配置為包含128、256或512個寄存器。軟件可以通過包含32個寄存器的滑動窗口存取這些寄存器,滑動窗口的移動間隔是16個寄存器,且允許快速地進行寄存器切換,加速子程序的調用和返回。
2.3 高速緩存
    可配置的Nios CPU可以有選擇地包含指令和數據高速緩存。高速緩存通常通過提供局部存儲系統提高CPU的性能,這個局部存儲系統可以快速地響應CPU產生的總線事件。Nios高速緩存的實現是采用簡單的直接映射的連續(xù)寫入結構,這種結構設計能夠用最少的器件資源獲得最大的性能[4]。
2.4 中斷處理
    Nios處理器允許多達64個矢量中斷。中斷源有三類:外部硬件中斷、內部中斷和軟件中斷。Nios中斷處理模式能夠準確地處理所有內部中斷。
    用戶可以有選擇地禁止TRAP指令軟件中斷、硬件中斷和內部中斷。這項選擇能夠減少Nios系統的大小,但只用于處理器不運行復雜軟件的系統。
2.5 硬件加速
    Nios指令系統可以利用硬件提高系統性能。特殊的周期密集型軟件操作可以用硬件顯著地提高系統性能,這種特性通過修改指令系統提供[5]。
    Nios處理器有2種指令系統修改方法:自定義指令和標準CPU選項[6]。
2.5.1 自定義指令
    開發(fā)者可以通過向Nios處理器指令系統中添加自定義指令加快時間要求嚴格的軟件算法,也可以用自定義指令在單周期和多周期操作中執(zhí)行復雜的處理任務。另外,用戶添加的自定義指令邏輯電路可以訪問Nios系統外的存儲器和邏輯電路。
    復雜的操作序列可以在硬件中簡化為單指令的執(zhí)行。這種特性允許開發(fā)者為數字信號處理(DSP)、分組標題處理和計算密集操作優(yōu)化自己的軟件。
    Altera公司的SOPC Builder軟件提供了一個圖形用戶界面(GUI),開發(fā)者利用GUI可以向Nios嵌入式處理器中添加多達5個自定義指令。
2.5.2 標準CPU選項
    Altera公司提供單獨的預定義指令來提高軟件性能。MUL和MSTEP指令就是與其他硬件一起實現的預定義指令。當用戶在SOPC Builder中選擇這些CPU選項時,相關邏輯被增加到算術邏輯運算單元(ALU)。例如,如果用戶選擇執(zhí)行MUL指令,整數乘法器被自動地添加到CPU的ALU中,并在2個時鐘周期內完成16位與16位的乘法操作(相同的操作若用循環(huán)的軟件程序實現需要80個時鐘周期)。
3 MELP語音編碼的硬件構成
    硬件電路板由Altera公司的FPGA芯片EP2C8作為主控芯片,此外還包括:8 MB容量的SDRAM、2 MB容量的Flash、WM8731音頻芯片,自帶音頻D/A、A/D,為方便調試,另帶有串口。MELP語音編碼硬件構成如圖2所示。


    為便于程序的調試,擴充了RS-232串口,可與計算機串口直接互聯。8 MB容量的SDRAM可為Nios II軟核處理器運行嵌入式操作系統提供所需的存儲空間,2 MB容量的Flash也可為MELP的軟件編制提供存儲空間。WM8731音頻芯片提供快速的音頻編解碼數據碼流,并向揚聲器傳輸解碼后的數據流。
    WM8731是一個低功耗的立體聲Codec芯片,內部集成了耳機放大功能,因此,WN8731也可以應用于MD、DAT等設備[7];內建了24 bit(multi-bit)Σ-Δ三角模數轉換和數模轉換,ADC和DAC都使用了超采樣數字插值技術;支持數字音頻的位數可以是16 bit~32 bit,采樣率從8 kHz~96 kHz;立體聲音頻輸出帶有數據緩存和數字音量調節(jié),WM8731通過2~3根的串行接口進行控制,可工作于主從模式。在3.3 V信號電壓時ADC可以達到90 dB的信噪比,1. 8 V信號電壓時ADC可以達到85 dB的信噪比。3.3 V信號電壓時的DAC信噪比可以達到100 dB,1.8 V信號電壓時DAC信噪比也有95 dB。ADC和DAC的頻率響應都在8 kHz~96 kHz之間,可以有選擇地使用ADC的高通濾波。一般情況下,WM8731都是在專業(yè)聲卡領域中使用。
    各芯片之間的互聯通過引線連接到FPGA的IO腳。Nios II處理器的內部總線通過定義引腳連到IO,這樣需要連接到Avavon總線的芯片可通過IO腳連到總線上。圖3所示為WM8731CODEC芯片與主芯片FPGA的連接。
    串口方面,SDRAM及Flash使用Nios II自帶的基于Avalon總線的軟IP。


    本文討論了MELP混合線性碼激勵的FPGA實現的硬件構成,介紹了硬件主要組成芯片及MELP編解碼的主要框架,可以用于下一步軟件程序的編制。
參考文獻
[1] ATITALLAH A B, GHOZZI P, KADIONIK P, et al. HW/SW codesign of the H. 263 video coder[C]. Electrical and Computer Engineering, Canadian Conference on May, 2006:783-787.
[2] 王炳錫.語音編碼[M].西安:西安電子科技大學出版社,2002.
[3] BROWN S D, CAPALIIA D, FORT B, et al. A multithreaded Soft processor for SOPC area reduction[C]. Field-Programmable Custom Computing Machines, 2006. FCCM’06. 14th Annual IEEE Symposium on April, 2006:131-142.
[4] SIEW K, SHOAIB M, SRIKANTHAN T. Modeling arbitrator delay-area dependencies in customizable instruction set processors[C]. Electronic Design, Test and Applications, 2006. DELTA 2006. Third IEEE International Workshop on 17-19 Jan, 2006.
[5] ETIEMBLE D, BOUAZIZ S,LACASSAGNE L. Customizing 16-bit floating point instructions on a NIOS II processor for FPGA image and media processing[C]. Embedded Systems for Real-Time Multimedia, 2005. 3rd Workshop on 22-23 Sept, 2005:61-66.
[6] GE Zhi Guo, LIM H B, WONG W F. A reconfigurable instruction memory hierarchy for embedded systems[C]. Field Programmable Logic and Applications, 2005. International Conference on 24-26 Aug, 2005:7-12.
[7] WOLFSON COMPANY. WM8731/WM8731L portable internet audio CODEC with headphone driver and programmable sample rates[M]. Datasheet of Product, 2009:1-7.

此內容為AET網站原創(chuàng),未經授權禁止轉載。