Adaptive Multi-rate Speech Codec

Implementation on TI TMS320C6201 DSP

 

 

知識庫

[ 回到AMR學理介紹 | 目錄分類 ]

bullet

硬體平台介紹

      我們預計達到的目標為即時編解碼。為應付高運算量的編解碼演算法,必須使用一強大的運算DSP晶片,並擁有audio的介面可供我們直接輸入語音與輸出編解碼後的結果。故我們選用的硬體平台為TM S320C6x EVM,其完全符合我們的需求。

 

     1.TMS320C6x EVM

我們所使用的實作載具是TI出產的TMS320C6x的Evaluation Module(簡稱EVM)。茲將EVM特色簡列如下(可見圖3-1功能方塊):

-         其核心為TMS320C6201的DSP晶片。

-         擁有外部記憶體SBSRAM與SDRAM,並自行可規劃其Memory Map對應關係。

-         予許再新增兩子板直接並行工作於EVM上。

-         使用PCI介面規格。

-         JTAG介面可直接線上模擬(Emulation)。

-         Stereo Audio Interface,可外接Mic In、Line In與Line Out。

(3-1    TMS320C6x Evaluation Module功能方塊圖)

(摘自TMS320C6201/6701 Evaluation Module Technical Reference)

 

        1.2     TMS320C6201

而其核心TMS320C6201有以下特色(可見圖3-2見其核心方塊)

-         32-bit fixed point processor

-         200MHz Clock Rate

-         VelociTITM Advanced Very Long Instruction

-         1M-Bit On-Chip SRAM

-         Two Multichannel Buffered Serial Ports

-         IEEE-1149.1 (JTAG) Boundary-Scan Compatible

(3-2    TMS320C6201 DSP Core Block Diagram)

(摘自TMS320C6201 Fixed-Point Digital Signal Processor Datasheet)

 

2                    內部功能

在實現AMR中,我們需要讓麥克風輸入,並且由喇叭輸出。為了達到這樣的效果,我們會使用到Multichannel Buffered Serial Port做為與外部Audio Codec Module的溝通管道與Direct Memory Access做為快速且不影響CPU的傳輸模式。咨將介紹如下:

 

    2.1     Mutichannel Buffered Serial Port

      Multichannel Buffered Serial Port(簡稱McBSP)TI DSP系統中C2x, C5x等等的標準串列埠,它重要提供了如下的功能:

-         Full-duplex communication

-         Double-buffered data registers, which allow a continuous data stream

-         Direct interface to industry-standard codecs, analog interface chips(AICs), and other serially connected A/D and D/A devices

-         Autobuffering capability through the five channel DMA controller

-         AC97 compliant devices

-         I2SSPI compliant devices

-         u-Low and A-Law companding

 

 

    2.2     Direct Memory Access

      Direct Memory Acces(簡稱DMA)是一種記憶體與外部I/O裝置之間傳輸資料的方式,它不但提供了一種不需CPU即可運作的方式,並且可達到幾十Mega Bytes的高速傳輸。 以下簡略列出其幾項特點:

-         Read transfer

-         Write transfer

-         Element tansfer

-         Frame transfer

-         Block transfer

-         Background operation

(3-3    DMA Controller Interconnect to TMS320C6x)

(摘自TMS320C6201/c6701 Peripherals Datasheet)

    

bullet

軟體平台介紹 Code Composer Studio

1     開發環境簡介

本次在C6201 EVM上實現AMR Codec 使用軟體是Code Composer Studio 2.01版(簡稱CCSv2)。該軟體原先是由Go-DSP公司專為德州儀器所發展的一套DSP整合式發展環境。在德州儀器併購Go-DSP後推出了C6x Code Composer 1.0板,在該版中已經加入了”C6x模擬器 simulator ”,只是該模擬器無法完全模擬C6x Chip的週邊元件 如: EMIF,DMA McBSP 及HPI…等等。一直發展至今最新的Code Composer Studio 版本已經更新到2.X版。

CCSv2發展環境中,與其他Windows 下的程式開發環境非常類似,如Microsoft Visual Studio。Code Composer Studio Ver2.01開發工具所提供基本功能如下:

-         開發專案之建立與編輯。

-         程式除錯。

-         檔案資料輸出入及資料繪圖。

-         輸出入資料檔案格式。

-         在模擬器下模擬中斷及輸出入埠。

 

2     專案之建立與編輯

CCSv2開發軟體具有專案管理概念,因此發展TMS320C6X應用程式,必須先要建立一個專案來統一管理使用者所有程式碼(*.cpp)、函式庫(*.lib) 、標頭檔(*.h) 、連接程式設定檔(*.cmd)…等等

 

3     程式除錯

開發應用程式最不可或缺的就是開發環境的除錯功能。CCSv2提供了一般程式開發軟體該有的功能,如: 加入中斷點、單步執行 …等程式執行控制外,還有記憶體及暫存器檢查/編輯工具。特別的是,更有profile時序分析顯示工具,藉著時鐘的設定,可以分析資料所使用的時序信號。利用此工具可以分析AMR Codec 中所有的程式運算量 分析完成後以便作日後加速的動作。

4     檔案資料輸出入及資料繪圖

        在數位信號處理應用程式中,常常會需要從外界輸入/輸出一些信號,藉由所開發系統在輸出/輸入再回到外界。若在系統開發過程中,可以讓程式由一個檔案讀取本來應該由外界讀入的訊號,並且將應該本來要輸出到外界的信號輸出到檔案中,這樣可以降低開發程式除錯工作困難度,並能真正能模擬出真實的實際情況。

Code Composer Studio 就提供了類似硬體發展時使用的產波器 示波器的信號探針工具。此外CCSv2 具有強大的繪圖工,能讓使用者能將探針在記憶體/暫存器中所搜集到的資料,以不同繪圖的方式顯示(如訊號座標圖、信號頻譜、眼形圖…等等) 以方便使用者觀測。

 

5     在模擬器下模擬中斷及輸出入埠

早在CCS 1.0版開始中就已經內建有C6x模擬器了,所以即使使用者沒有EVM或SDK版也可以在電腦上模擬開發應用程式。

本次專題模擬器是選用C6201&6701EVM(PCI)Simulator。其實輸出入埠之模擬功能與前一節的檔案輸出/輸入功能是一樣的,只是輸出入埠之模擬可以模擬一個輸出入埠的輸出/輸入資料。C6x是一個memory mapping I/O的CPU,所以輸出入埠的模擬也可以說是記憶體的資料的模擬。

 

6    C62 EVM Board 上CCSv2.01的基本環境設定

使用CCSv2開發工具在C6201 EVM Board上實現AMR Codec。我們所面對的不在單純的只是演算法實現數位訊號處理的軟體環境 還有,C6201 EVM Board的硬體環境問題,因此欲使用C6201 EVM Board需配合已規劃好的硬體來作好環境上的設定。

-         Import Configuration

欲使用CCSv2來開發應用程式需事先載入正確之硬體設定檔,

C6201 &C6701 EVM (PCI)

直線圖說文字 3: C6201 &C6701 EVM (PCI)
此次選用平台為TIC6201 EVM Board。故需選擇”C6201 &C6701 EVM (PCI)”,選取按下Import 後再按Save and Quit即完成載入。

(3-4  Import Configuration)

-         Simulation Emulation 之選擇。

CCSv2 已內建多個DSP模擬器,當在作資料分析或程式效能分析時需選擇”C6xxx Simulator”,否則選取”C6xxx EVM”直接以實體發展板執行。

(3-5    Selection of Simulation and Emulation)

-         Build Options

當開發AMR Codec時需設定好程式編譯的環境參數,否則程式雖然沒有問題,但編譯時仍會出錯,例如找不到Lib..等等。

(3-6-1        Build Options)

-         Build Options -> Basic -> Basic

C620x

直線圖說文字 3: C620x

(3-6-2        Build Option)

-         target version :需要選擇620x

-         Opt. Speed v.s Size

此項為編輯器本身對程式碼作最佳化的程度共分成Size Most Critical Size Critical Speed Critical Speed More Critical Speed Most Critical …等幾種。若選Size Most Critical則效能會最差,語音品降低。若選擇Speed Most Critical 則語音品質最佳但相對的需付出編譯出來的程式將會變大,耗費記憶空間的代價。

選擇 Speed More Critical 即可在耗費程式大小和語音品質間獲得平衡。

-         Build Options -> Compiler -> Files

輸出物件之資料夾

直線圖說文字 3: 輸出物件之資料夾

(3-7   Obj Directory)

-         Obj Directory: 此選項為設定物件檔的輸出資料夾。

-         Build Options -> Linker

²        Output filename: 此為設定編譯器編譯完成後所產生的coff檔名。

²        Library Search Path:使用C6201 EVM Board需加入適當的library,此為設定搜尋的路徑名稱。

²        Include Libraries: 加入的Libraries”;”隔開。

*.out輸出檔名

直線圖說文字 3: *.out輸出檔名

(3-8   Output Filename)

 

除此之外在CCSv2上若要使用C語言,必須要加入 rts6201.lib

方法為以拖拉方式加入專案中即可,經由以上步驟介紹即可完成CCSv2C6201EVM Board的基本環境設定,接下來只要把AMRSource Code 加入其專案即可