基于TMS320LF2407 DSP控制器語(yǔ)音系統的設計與實(shí)現
1 引言
本文引用地址:http://dyxdggzs.com/article/257308.htm隨著(zhù)信息技術(shù)和計算機技術(shù)的飛速發(fā)展,DSP技術(shù)也正以日新月異的速度應用到國民經(jīng)濟的各個(gè)領(lǐng)域。
TMS320LF240X系列DSP是美國德州儀器(TI)公司推出的一款16位定點(diǎn)數字信號處理器,它采用程序總線(xiàn)、數據總線(xiàn)分別獨立并具有多條總線(xiàn)的哈佛結構體系,其數據和程序有各自獨立的存儲空間,這樣的結構使數據吞吐率有很大提高;芯片內部包含多個(gè)處理單元;16×16位硬件乘法器;廣泛采用深度流水線(xiàn)技術(shù),以及特有的DSP指令,使得取址、譯碼和處理可同時(shí)進(jìn)行,從而減少了指令執行時(shí)間,增強了DSP的處理能力;具有強大的內部事件管理器、10位A/D采樣功能、I/O端口等豐富的外設接口。因此 DSP適用于高速、實(shí)時(shí)性的數據處理應用系統。
對于某一控制任務(wù)可能需要多個(gè)DSP相互合作完成或DSP作為主控制器來(lái)控制其他外圍器件,這樣DSP就需要和其他控制器頻繁交換數據,此時(shí),我們可以通過(guò)SPI口進(jìn)行器件之間的高速數據交換,這種通信方式比起通過(guò)串行通訊接口(SCI)速度提高了近一倍。
2. SPI串行外設接口
DSP的串行外設接口(SPI)是一個(gè)高速同步串行輸入/輸出(I/O)口,它能使可編程長(cháng)度(116位)的串行位流以可編程的位傳輸速率輸入或輸出器件。SPI口主要 通過(guò)4根線(xiàn)來(lái)完成通信,即:時(shí)鐘線(xiàn)(SPICLK),主機輸出/從機輸入線(xiàn)(SPISIMO),主機輸入/從機輸出線(xiàn)(SPISOMI),SPI從發(fā)送使能 。它主要用于主從式系統中,一個(gè)主控制器可以帶動(dòng)幾個(gè)從器件,或者一個(gè)主控制器可以和幾個(gè)其他控制器構成多機系統,從器件的時(shí)鐘是由主機給出,主機通過(guò)從發(fā)送使能信號來(lái)使同一時(shí)刻只有一個(gè)從器件和主機交換數據。從器件只有在主機發(fā)送命令時(shí)才向主機傳送數據。
由于SPI接口是串行傳輸數據,所以要求通信兩端的時(shí)序必須匹配。TMS320LF2407的SPI接口有4種時(shí)序,由芯片的SPICLK寄存器的4種時(shí)鐘模式確定。這4種模式規定同步移出和移入數據位與時(shí)鐘上/下觸發(fā)沿及相位是否延遲的關(guān)系。
模式0――上升沿觸發(fā)無(wú)延時(shí):上升沿發(fā)送數據,緊接的下降沿接收數據。
模式1――上升沿觸發(fā)有延時(shí):上升沿前半個(gè)周期和緊接的下降沿之間發(fā)送數據,上升沿接收數據。
模式2――下降沿觸發(fā)無(wú)延時(shí):下降沿發(fā)送數據,緊接的上升沿接收數據。
模式3――下降沿觸發(fā)有延時(shí):下降沿前半個(gè)周期和緊接的上升沿之間發(fā)送數據,下降沿接收數據。
DSP可以根據系統中與之通信的芯片的具體特點(diǎn)來(lái)選擇一個(gè)工作模式。
3. 硬件電路設計
語(yǔ)音模塊的硬件電路設計必須保證語(yǔ)音信號輸出的實(shí)時(shí)性,這里我們采用TI DSP系列的TMS320LF2407(以下簡(jiǎn)稱(chēng)2407),它高達30MIPS的處理能力足以滿(mǎn)足語(yǔ)音的實(shí)時(shí)要求。語(yǔ)音采集和輸出芯片采用的是TLC320AD50C(以下簡(jiǎn)稱(chēng)AD50),它是一款單5V電源供電、16位A/D和D/A高分辨率的可編程信號轉換器。語(yǔ)音信號實(shí)時(shí)處理系統的主要功能是將話(huà)音通過(guò)MIC輸入,然后經(jīng)過(guò)差分放大、模擬帶通濾波后,輸入AD50,經(jīng)采樣,將數據再送入DSP中進(jìn)行處理,最后再將處理完的語(yǔ)音數據經(jīng)DAC,放大輸出,最后驅動(dòng)喇叭發(fā)聲。
AD50是差分器件,從MIC輸入的信號Vaudio經(jīng)集成運放后變?yōu)椴罘州斎?N*Vaudio,在對模擬信號進(jìn)行數據采集以前,需要經(jīng)過(guò)帶通濾波器濾除帶外雜波。由于話(huà)音的頻率一般在3400Hz以下,而工頻干擾一般為50Hz左右。所以設計了通帶范圍為300Hz~3400Hz的帶通濾波器。該濾波器由兩級二階低通、兩級二階高通級聯(lián)組成,采用多級反饋形式,具有巴特沃斯(butterworth)帶內平坦的特性,這樣可保證300~3400Hz的語(yǔ)音信號不失真地通過(guò)濾波器,不僅濾除帶外的低頻信號,以減少帶外工頻等分量的干擾,還將濾除帶外的高次諧波,減少由于采樣引起的混疊失真。
設計中AD50的功能實(shí)現是通過(guò)對其內部的4個(gè)寄存器進(jìn)行編程來(lái)完成的,對這4個(gè)寄存器的訪(fǎng)問(wèn)與其他一些接口電路有所不同,它不是通過(guò)地址線(xiàn)選通寄存器,而是通過(guò)串行輸入口(DIN)在二次通信的時(shí)刻將控制字輸入到AD50中,對4個(gè)寄存器進(jìn)行初始化。通過(guò)這種串行接口的初始化,可以達到對AD50進(jìn)行編程的目的,可編程的功能還包括:復位、掉電、通信協(xié)議、信號采樣率、增益控制等。
AD50和DSP交換數據時(shí),數據流和控制流在串行線(xiàn)上一位一位的傳輸,我們通過(guò)分時(shí)復用傳輸線(xiàn)即一次串行通信和請求二次串行通信的方法來(lái)分辨是數據流還是控制流。使一次通信時(shí)DIN端口輸入的16bit數據的LSB位為高,這樣在特定模式下就發(fā)出了二次通信的請求。在二次通信過(guò)程中,16位控制字DIN引腳輸入到AD50中來(lái),對它的4個(gè)寄存器進(jìn)行寫(xiě)操作,從而實(shí)現AD50的各個(gè)可編程控制。 基于SPI串行外設接口的特點(diǎn),在硬件電路設計時(shí)考慮到采用的語(yǔ)音處理芯片AD50和2407的時(shí)序,配置AD50為主動(dòng)模式,2407的SPI為從動(dòng)模式。AD50的基準時(shí)序信號MCLK由DSP的系統時(shí)鐘輸出CLKOUT提供,AD50通過(guò)內部的PLL分頻器將MCLK信號變成SCLK信號,SCLK信號即控制著(zhù)串行數據流中字符內部位與位之間的定時(shí)關(guān)系。由于A(yíng)D50不是標準的串行外設接口,根據 SPICLK端在從動(dòng)方式下正常工作所需接收的信號波形,將AD50的FS引腳經(jīng)非門(mén)引出,和SCLK相與,它們輸出的時(shí)序信號和SPI的SPICLK端相連以達到控制兩者時(shí)序同步的目的。
由于A(yíng)D50是SPI通信接口的主動(dòng)器件,為了更好地控制AD50,可將DSP的任意一個(gè)沒(méi)有用到的通用I/O端口作為AD50的使能口,和AD50的PWDOWN端口相連,通過(guò)這個(gè)通用I/O口來(lái)控制AD50的啟動(dòng)和關(guān)閉。SPI的使能端SPISTE所要求的使能信號可以由AD50的FSD端口獲得,通過(guò)對AD50的軟件初始化,將FSD輸出的使能信號略提前于一次通信的第一位數據的傳送時(shí)刻,即可以實(shí)現在A(yíng)D50和SPI傳輸數據的前一時(shí)刻將SPI使能。
4.軟件設計
當系統要對語(yǔ)音信號進(jìn)行處理時(shí),首先要正確地初始化SPI和AD50。由于A(yíng)D50屬于DSP的外圍器件,且不是標準的通信串口,所以不能象SPI一樣通過(guò)直接向各寄存器置入初始化值而完成,而必須在A(yíng)D50的二次通信時(shí)將原來(lái)置于SPI輸出緩沖寄存器里的值,通過(guò)串行傳輸線(xiàn)送入AD50的串行輸入端,以完成對AD50的初始化。
SPI初始化如下:
LDP #DP_PF2
LACL MCRB
OR #003CH
;配置SPI各個(gè)引腳為特殊功能方式
LDP #DP_PF1
SPLK #000FH,SPICCR
;配置SPI寄存器允許初始化,16位數據輸出
SPLK #0003H,SPICTL
;從動(dòng)方式,時(shí)鐘方式為無(wú)延時(shí)的上升沿
SPLK #0002H,SPIBRR
;SPI波特率為10MHz (根據采樣率確定波特率)
SPLK #008FH,SPICCR
;初始化結束,并關(guān)閉初始化使能位
在初始化AD50過(guò)程中,首先向AD50的DIN端口發(fā)送0000H,確保第二次向AD50發(fā)送字符時(shí),AD50處于一次通信,然后發(fā)送一個(gè)0001引發(fā)二次通信,再分四次把命令字寫(xiě)入AD50,程序如下:
SPLK #0000H,SPIDAT
NOP
XMIT_RDY0:
;確保第二次向AD50發(fā)送字符時(shí),AD50處于一次通信
BIT SPISTS,BIT6 ;等待數據
BCND XMIT_RDY1,NTC ;發(fā)送完
NOP
LACL SPIRXBUF
NOP
SPLK #0001H,SPIDAT ;開(kāi)始初始化寄存器2
XMIT_RDY1:
BIT SPISTS,BIT6 ;等待數據
BCND XMIT_RDY1,NTC
;發(fā)送完,完成對AD的二次通信請求
NOP
LACL SPIRXBUF
NOP
SPLK #0210H,SPIDAT
;正式初始化寄存器2,(16 BIT ADC MODE )
XMIT_RDY1_1:
BIT SPISTS,BIT6
;等待數據
BCND XMIT_RDY1_1,NTC
;發(fā)送完,完成對寄存器2的初始化
NOP
LACL SPIRXBUF
SPI將它要發(fā)送的數據放在SPIDAT(一個(gè)移位寄存器)內,當SPI的使能引腳SPISTE變低,且SPICLK時(shí)鐘到來(lái)時(shí),SPI便將SPIDAT內的數據通過(guò)移位的方式移出該寄存器,同時(shí)也以移位的方式將AD50發(fā)送的串行數據移入該寄存器。接收完后,SPI將接收到的數據復制到接收緩沖器SPIRXBUF,并將中斷標志位置為1。DSP可以通過(guò)查詢(xún)的方式不斷查詢(xún)這個(gè)位,當其變?yōu)?時(shí),即表明一次數據傳輸已經(jīng)結束,此時(shí)可以去處理這個(gè)數據。
DSP對語(yǔ)音信號進(jìn)行處理時(shí),可依據需要設計一些濾波器對其進(jìn)行濾波處理,如FIR、IIR、FFT等。采用以上的硬件電路設計使得濾波器的頻率可調,大大擴展了該語(yǔ)音處理模塊的應用范圍
評論