MELP語音編碼專用處理器晶片

An Application Specific Processor for MELP Speech Coding Processing

 

學生:陳建志

 

指導教授:林進燈

 

國立交通大學電機與控制工程學系(研究所)碩士班

 

        

 

語音傳輸是目前最主要也最普遍的通訊傳輸服務。在數位語音下的傳輸更有彈性,能夠降低價格、維持品質、並提供保密的功能。由於使用者的增加與有限的頻寬。新的語音編碼傳輸位元率已由8KbpsCELP)與4.8KbpsCS-ACELP)發展至2.4KbpsMELP)。也因為傳輸位元率的降低,語音品質就只能由更複雜的演算法來提升,這使得實現快速語音編碼相當困難。

 

本論文針對壓縮率最高的MELP,提出一個新的語音編碼技術處理器。這個處理器針對語音壓縮技術中最複雜的編碼技術來設計,我們使用硬體軟體雙重設計的方式使處理器的架構與指令集最佳化。處理器中使用五級的管線式架構來平衡處理速度與晶片面積,同時擁有兩個向量處理用的記憶體、四層迴圈、大範圍的記憶體資料暫存區、24bits精確的浮點運算單元、整數運算單元、提供很大動態運算範圍8bits的指數處理單元以及具平行處理能力的指令。在指令長度固定為24bits下,此處理器提供6種定址模式與三元運算。此晶片在60MHz下的浮點處理能力為120MFLOPS,約為TMS320C44-60的兩倍。此晶片以Cell-Based方式設計完成,使用TSMC 0.35um製成之標準元件庫,預估能工作於60MHz

功能與規格說明

研究設計語音晶片的主要目的與動機如下:

1、實現低壓縮率語音編碼技術,以期能夠應用在一個嵌入式的系統上。

2、分析語音處理的演算法,應用在語音處理器上的效能,以期能找出最適當的語音輔助運算器架構。

3、解決多媒體系統與消費性通訊產品在即時運用上的需求。

4、設計出一個可程式化功能的架構,以增加應用上的彈性。

 

MELP(Mixed Excitation Linear Prediction)是一種2.4k bits/s的語音壓縮法,是目前語音壓縮技術方面壓縮率最小且使用率高的一種低位元率語音壓縮。MELP壓縮法是建構在傳統的LPC參數模型上,但又引進了另外五個特性參數:(1) mixed excitation (2) aperiodic pulses (3) adaptive spectral enhancement (4) pulse dispersion (5) Fourier magnitude 。圖1是MELP壓縮法的合成方塊圖:

1 MELP 編解碼的方塊圖

 

我們將以上的流程加以說明如下的語音編碼分析步驟:

1.          除去低頻(Low frequency removal):移去輸入語音信號中的低頻能量,這是利用一個截止頻率60Hz及截止帶30dB的四階Chebychev type highpass filter來實現。

2.          整數Pitch (Integer pitch):首先經過1K Hz的六階Butterworth低通濾波器,整數Pitch(P1)則是在τ=40~160中normalized autocorrelation r(τ)最大的值。

   where            

3.          帶通語音分析(bandpass voicing analysis):這是定義五個帶通語音強度,並且會重新定義Pitch以及normalized autocorrelation值。利用五種不同的頻帶來求得語音強度以及相對應的Fractional Pitch(P2)和normalized autocorrelation r(P2)。並且設定非週期性的旗標,使得解碼時可以知道是週期性或是非週期性的訊號。

4.          線性預估的分析(Linear prediction analysis):利用一個200取樣點的Hamming Window和輸入訊號來做一個10階的線性預估分析。這裡利用傳統的Levinson-Durbin recursion [4]的方式來實現。並利用求取出來的預估參數a來計算線性預估剩餘值得到residual window,以利final pitch的計算。

5.          峰值計算(peakiness calculation):利用160點的Window來完成。主要是用來定義語音強度訊號

6.          Final Pitch:利用六階和1kHz截止頻率的低通濾波剩餘訊號來求得Final Pitch(P3)以及相對應的normalized  autocorrelation r(P3),若r(P3)≧0.6則需要再做Doubling Check的工作,它將提高threshold並且得到一個新的Pitch值及相對應的normalized  autocorrelation,並更新Average Pitch。

7.          增益計算(gain calculation):

8.          LPC係數的量化(quantization of LPC coefficients):首先LPC轉換成LSF,再將LSF按照階數升冪排列並最小分隔為50Hz。接著,將LSF結果利用Multi_stage Vector Quantizer ( MSVQ )量化,結果用來計算Fourier magnitude。

9.          Pitch及Gain的量化:利用99-level範圍20~160取樣的量化器來量化Final Pitch(P3)成為7bit的table。兩個Gain的值分別量化,G2是利用範圍為10~77dB的uniform quantizer量化為5-bit,G1則是根據G2來量化為3-bit。

10.      聲音強度量化(bandpass voicing quantiza- tion):根據的大小,將其量化為0或1。

11.      Fourier Magnitude計算及量化:首先利用LPC係數來產生residual window,接著將200點的Hamming Window轉化成512點的FFT,最後FFT轉為magnitude以及產生spectral peak- picking 的harmonic magnitude,其量化是以perceptually weighted  Euclidean distance的方法來做codebook的搜尋。

12.      位元包裝(bit packing)及錯誤保護(error protec- tion):所有參數經過量化後,再經過適當排列,最後以每個frame 54-bit的形式送出。當unvoiced mode時,有數個參數不用傳出,即aperiodic flag、fourier magnitudes和bandpass voicing,於是空出來的bit可以為錯誤保護運用,使得壓縮編碼的品質更好。

處理器基本結構

本處理器是利用24位元浮點數所設計的五級MELP編碼專用處理器,在電路設計中,內部的匯流排針對特殊的定址模式而設計,其中包含了向量定址、分支跳躍、快速浮點及整數的運算。本處理器中處理了語音運算當中最複雜的部分,並設計了assembler及emulator來輔助處理器的運作。處理器中的指令集包含了三種模式:

1. Load and store instructions (2個)

2. Arithmetic instructions (12個)

3. Program control instructions (11個)

基本指令集:

選用的指令

指令碼

Load and store Instruction

MOV

10000

10001

Load data, store data and move data

A,B

LD

11111

Load Immediate

Arithmetic Instructions

ADD

 

10010

Add floating point value

A+B

ADDI

 

01000

Add Integer value

A+immediate or A+B

SUB

 

10011

Subtract floating point value

B-A

MPY

 

10100

Multiply floating point value

AxB

SHF

10110

Shift Right or Left by N bits

MAC

 

 

10111

Multiply floating point value and add floating point value with last sum

AxB + Last Execution Result

AND

00100

Bitwise-Logical AND

OR

00101

Bitwise-Logical OR

FIX

00110

Float to integer

Float

00111

Integer to float

EXP

01001

Take exponent part

IEXP

01010

Put exponent part

Program Control Instructions

NOP

00000

No Operation

LDC

00001

Load AR0 and AR1 value

LDE

01100

Load EXT and FIL External memory Address to R_EXT & R_FIL(Aux)

RPB

00010

Repeat block

RETB

00011

Return repeat block instruction

CALL

11000

Call Subroutine

RET

11001

Return from subroutine

PUSH

11010

Push to stack

POP

11011

Pop from stack

CMPR

11100

Compare

BCND

11110

Branch conditionally

 

處理器特性:

         60MHz,16ns單週期指令執行時間

         60MIPS、120MFLOPS

         內建2個1024x24bits RAM,Hamming Window  ROM 200x18bits Instruction ROM 4096x24bits

         外掛8K Extend RAM,8K Filter ROM

         指令長度24bits,浮點規格24bits,定址線15bits

         24bits浮點乘法、加減法器

         14bits整數運算單元:加減法器、移位器、指數運算

         整數與浮點間的轉換運算:FIX、FLOAT

         八個24bits暫存器

         四個10bits輔助暫存器、4個迴圈計數暫存器、1個乘加輔助暫存器

         二元運算及3元運算指令

         單週期加法指令、雙週期乘法及乘加指令

         向量運算能力

         四層程式區塊循環能力

         一個24bits資料傳輸外部界面

         工作狀態輸出

         12bits多點測試觀測電路

         封裝100CQFP、有效腳位100pins

         製成0.35um CMOS

 

定址模式: 處理器提供了下列定址模式

l          Register Addressing (暫存器定址法)

在暫存器定址法中有三個運算元,分別為RA、RB、RC。配合opcode使用,有下列兩種格式:

Example: RA Operation RB => RC or Operation RA => RC

l          Direct Addressing (直接定址法)

直接定址的方式是直接由微碼中的立即值作為位置,定址的範圍是0~1024。支援內部的RAM0、RAM1以及外部的EXT、FIL的前面1024筆資料。使用格式為:

Example: RAM[Add] <=Op R or R<= R Op RAM[Add]

l          Indirect Addressing(間接定址法)

間接定址模式是針對外部的記憶體EXT及FIL的定址所設計的。利用兩個15bits的指標暫存器R_EXT、R_FIL來分別定址EXT及FIL兩個記憶體,執行大量的向量運算。使用格式為:

Example: RAM[Add] <=Op R or RC<= RA Op RAM[Add]

l          Vector Addressing

向量定址模式主要是利用Memory to Memory的方式來完成的,同時由不同的記憶體區塊讀出所要運算的值,運算結束後寫入第三塊記憶體中或暫存器R3。使用格式為:

Example: VC <= VA[AR_A] Op VB[AR_B]

l          Immediate Addressing (立即定址法)

立即定址模式主要是利用微碼來使指令可以執行立即值的運算。主要可分為兩種模式來進行一種是針對整數的運算模式所設計的另一種則是配合運算過程中旗標的改變,對於程式執行的指標做跳躍的動作。

Example: R <= R Op Literal  or  PC<= ( Cond. ) Literal

l          Control mode

控制模式用來控制程式迴圈,與設定迴圈所要跑的次數,迴圈暫存器為M、N再加上之前的資料指標暫存器R、J,因此這個語音輔助處理器可以做四層巢狀迴圈。亦可以利用這個模式做到程式跳躍的能力。

Example: PC <= LITERAL or R<=LITERAL or J<=LITERAL

 

1 MELP處理器的基本架構圖

電路合成與模擬結果

利用Verilog語言[10]撰寫完RTL Code之後進行Cadence Verilog-XL模擬,並與C模擬結果比較,其結果均一致。接下來利用Synopsys Design Compiler軟體[11]來合成電路,在過程中,將運算時間較長的浮點加法器做timing上的限制,以減少運算時間,加快運算速度。並且將所有的條件限制寫成一個script file,以便於在合成時的執行。在面積(19000)以及時間(16ns)限制的條件下,合成出內部電路,得到了下表的結果:

 

Condition

Synthesis result

Max operation time

15.24 ns

Min operation time

0.52 ns

Transition time

2.0 ns

Fanout

15.70

Capacitance

0.08

Gate count area

22337

 

1  MELP合成電路結果

 

撰寫C語言程式以驗證演算法的正確性,並且測試所設定的浮點數格式所實現的音質是否符合要求。根據標準的MELP壓縮演算法,我們利用C語言實現,得到不錯的聲音品質。在本晶片中是利用24 bit的資料格式,因此在實現MELP的同時,也比較了在32bit與24bit資料格式下的模擬結果,作為發展晶片的重要依據,經過比較兩者的結果之後,發現兩者的結果相當接近,並且解碼之後的聲音品質很好。此外,我們也利用發展出來的Emulator進行MELP模擬,同樣的也發現在求得的每一個參數都相當接近,聲音品質也都符合要求。詳細的參數比較如下表所示:

 

 

Harmonic Magnitude

LPC

Coefficient

LSF

Coefficient

Pitch

Gain1

Gain2

Vbp

AF

Mode

32 bit

1.233587

0.057968

407.757812

49.806248

10.000

48.903229

1100

1

voiced

24 bit

1.315164

0.072861

391.101562

49.802734

10.000

48.902344

1100

1

Voiced

Emulator

1.315164

0.072861

391.101562

49.802734

10.000

48.902344

1100

1

voiced

 

2  MELP軟體模擬結果比較

 

2  在32bit浮點數格式下所得語音訊號結果

3  在24bit浮點數格式下所得語音訊號結果

 

 

最後以下面聲音(長度3)波形如圖4(原軟體)和5(MELP硬體)在不同的條件下所進行的模擬語音波形所做的實結果, 可以看出波形近似,同時聲音的品質也可以接受

4  在C語言環境下模擬的語音波形

5  MELP語音壓縮晶片環境下模擬的語音波形

效能比較

我們將這顆MELP語音編碼處理器的執行效能與TI發展的general-purpose浮點處理器TMSC320C3x[12]與TMS320C4x系列來比較。在本晶片中的浮點運算為24bits,而在TI系列中則是32bits。圖6為浮點數運算能力比較圖。在最佳的執行狀態下,本晶片在60MHz時的浮點運算能力為120MFLOPS,較TMS320C44在60MHz下要快兩倍。圖7為在向量運算下與TI的TMSC320C3x與TMS320C4x系列比較運算速度,X軸假定MELP晶片在60MHz時為100%,相對於其他各處理器向量運算時的能力。

6  浮點運算能力比較圖

7 處理器向量運算能力比較圖

晶片照相圖

佈局、封裝與Layout: MELP語音壓縮處理器佈局有下列的特徵 :

1、晶片外圍power ring的寬度為80μm。

2、內部記憶體的power ring的寬度為40μm。

3、一對寬度為20μm、距離25μm的power stripe。

4、內部分為四個group:ALU、CTRL、BUS、REG。

5、Gate Count:22337。

6、封裝型態:100-pin CQFP。

 

 

[回上一頁]