《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 業(yè)界動(dòng)態(tài) > 用TMS320C54x DSKplus Board構(gòu)建聲回波對(duì)消器

用TMS320C54x DSKplus Board構(gòu)建聲回波對(duì)消器

2009-04-29
作者:王春霞 譚 凱 王永德

  摘? 要: 介紹了TMS320C54x DSKplus Board的基本結(jié)構(gòu)和硬件特點(diǎn),,并以DSKplus Board構(gòu)建聲回波對(duì)消器為例,,介紹了DSKplus Board的硬件接口擴(kuò)展技術(shù)。

  關(guān)鍵詞: DSP? TMS320C54x? DSKplus? Board? 聲回波對(duì)消器

?

  TMS320C54x DSKplus Board(DSK)是一種成本低,、性能好的DSP入門套件,。采用簡(jiǎn)便直觀的代數(shù)語(yǔ)言編程,,使初學(xué)者能迅速入門;同時(shí),,由于硬件上可以使用擴(kuò)展板擴(kuò)展存儲(chǔ)空間及外部設(shè)備,,也為廣大的教師、科研工作者,、工程技術(shù)人員學(xué)習(xí)及應(yīng)用DSP提供了極大的方便,。本文介紹以DSKplus Board構(gòu)建的聲回波對(duì)消器。該聲回波對(duì)消器采用先進(jìn)的自適應(yīng)辨識(shí)算法,,即通過(guò)對(duì)聲回授通道的沖擊響應(yīng)的辨識(shí),,產(chǎn)生出同回聲相似的信號(hào),再?gòu)慕嗽捯艉突芈曋袦p去回聲信號(hào)以達(dá)到回聲對(duì)消的目的,。聲回波對(duì)消器需要兩路A/D輸入通道,,由于DSK只有一路A/D輸入通道,所以需要對(duì)其進(jìn)行硬件上的擴(kuò)展,。在這里我們自行設(shè)計(jì)了另一路A/D輸入通道,,并利用DSK上的擴(kuò)展口,非常方便地完成了硬件設(shè)計(jì),。經(jīng)軟,、硬件調(diào)試通過(guò)后,工作正常,。

1 TMS320C54x系列DSP簡(jiǎn)介

  TI公司于1996年推出的TMS320C54x系列DSP是新一代的定點(diǎn)數(shù)字信號(hào)處理器,。它采用先進(jìn)的修正型哈佛結(jié)構(gòu),片內(nèi)共有8條總線(1條程序存儲(chǔ)器總線,、3條數(shù)據(jù)存儲(chǔ)器總線和4條地址總線)以及CPU,、在片存儲(chǔ)器和在片外圍電路等硬件,,并有一套高度專業(yè)化的指令系統(tǒng)。TMS320C54x DSKplus Board是一種成本較低,、性能優(yōu)秀的DSP入門套件,。它具有一個(gè)獨(dú)立的應(yīng)用板,通過(guò)主機(jī)并口連接在用戶PC上,,可以檢查TMS320 C54x CPU的結(jié)構(gòu),、運(yùn)行情況及其外部設(shè)備。同時(shí),,還有一個(gè)基于Windows的調(diào)試器,,能逐條分析代碼,并在相應(yīng)的窗口實(shí)時(shí)顯示DSP內(nèi)部寄存器的信息,。

2 自適應(yīng)聲回波對(duì)消器原理

  自適應(yīng)聲回波對(duì)消器原理圖見(jiàn)圖1,。遠(yuǎn)端話音經(jīng)由未知的LRM(Louderspeaker-Room-Microphone)系統(tǒng)構(gòu)成的聲回授通道產(chǎn)生回聲,回聲又連同近端話音一起被傳輸?shù)竭h(yuǎn)端,。在一個(gè)閉環(huán)系統(tǒng)中,,可能會(huì)產(chǎn)生回聲、嘯叫等嚴(yán)重影響通話質(zhì)量的現(xiàn)象,。其回聲對(duì)消的原理是:通過(guò)對(duì)未知LRM系統(tǒng)沖擊響應(yīng)的辨識(shí),,產(chǎn)生出一個(gè)同回聲相同的信號(hào),在近端話音及回聲的混合信號(hào)傳向遠(yuǎn)端之前從中減掉回聲,。自適應(yīng)聲回波對(duì)消器需要有兩路A/D輸入信號(hào)和一路D/A輸出信號(hào),。TMS320C54x DSKplus Board上已有一路A/D輸入通道及D/A輸出通道,所以,,只需在此基礎(chǔ)上擴(kuò)展一路A/D輸入通道,。

?

3 擴(kuò)展DSK話音數(shù)據(jù)采集通道

  DSKplus Board上的AC01模擬接口電路可以完成單通道的話音信號(hào)的數(shù)據(jù)采樣,它具有以下特性:?jiǎn)纹珹/D和D/A轉(zhuǎn)換器,,14bit量化,;內(nèi)置式可編程反混迭濾波器;軟件可編程取樣率,;軟件可編程復(fù)位,、增益、低功耗模式,;可主從配置級(jí)聯(lián)操作。它具有三種基本操作模式:?jiǎn)为?dú)應(yīng)用模式,;主從模式,;線性編/譯碼模式。在DSKplus Board上,,AC01接口直接與C542 TDM串口連接,,它產(chǎn)生所需的移位時(shí)鐘脈沖SCLK和幀同步信號(hào)脈沖FS,,以便輸入輸出數(shù)據(jù)。這些脈沖由軟件可編程存儲(chǔ)器和AC01主時(shí)鐘共同決定,,主時(shí)鐘由板上的振蕩器產(chǎn)生,,頻率為10MHz。為了快速便地的擴(kuò)展一個(gè)話音采集通道,,可應(yīng)用AC01的主-從工作模式,,增加一個(gè)小型AC01電路板即可。增加的AC01主要連接如圖2所示,。DSKplus Board上的AC01作為主(Master)通道,,擴(kuò)展板上的另一個(gè)AC01作為從(Slave)通道。

?

  注意:主AC01的FSD輸出作為從AC01的FS信號(hào),,這樣主從通道就能輪流地連續(xù)地對(duì)兩路不同的話音信號(hào)進(jìn)行采樣了,。

  硬件電路完成后,再按設(shè)計(jì)要求對(duì)主從模式的兩個(gè)AC01進(jìn)行軟件初始化,。AC01具有九個(gè)可編程的內(nèi)部寄存器,,可通過(guò)修改這九個(gè)內(nèi)部寄存器的內(nèi)容來(lái)完成其配置。寄存器具體定義可參見(jiàn)文獻(xiàn)[2]?,F(xiàn)介紹幾個(gè)重要的寄存器:

  ·寄存器1,,A寄存器,其內(nèi)容決定幀同步時(shí)鐘和低通濾波器的-3dB截止頻率

  FCLK頻率=主時(shí)鐘頻率/(A寄存器內(nèi)容×2)

  低通濾波器的-3dB截止頻率flp=FCLK/40

  ·寄存器2,,B寄存器,,其內(nèi)容決定采樣頻率和高通濾波器的-3dB截止頻率:

  采樣頻率=FCLK/B寄存器內(nèi)容

  高通濾波器的-3dB截止頻率fhp=采樣頻率/200

  ·寄存器7,幀同步延遲寄存器,,其內(nèi)容決定從AC01的幀同步信號(hào)相對(duì)于主AC01的延遲時(shí)間,。

如果用AC01的主從模式,則要求寄存器7為最后一個(gè)初始化的寄存器,,最小值18,。

  ·寄存器8,幀同步個(gè)數(shù)寄存器,,其內(nèi)容決定系統(tǒng)中有多少個(gè)AC01,,個(gè)數(shù)為從AC01的個(gè)數(shù)加1。

在聲回波對(duì)消的應(yīng)用中,,要求主從通道均采用9kHz采樣頻率,,通帶為300Hz~3.4kHz(其中高通濾波器的-3dB截止頻率由外部接口電路決定),兩個(gè)通道輪流由TDM串口向DSP產(chǎn)生中斷,。相應(yīng)的寄存器內(nèi)容見(jiàn)源程序中的REG1~REG8,,設(shè)計(jì)出的實(shí)際參數(shù)為:

  采樣頻率:7.95kHz

  低通濾波器的-3dB截止頻率flp=3.37kHz

  高通濾波器的-3dB截止頻率fhp=40Hz

  初始化AC01的源程序如下:

  REGISTER.set 0cbH??????????? ;設(shè)定需要修改的寄存器號(hào),,Bit0~Bit7分別對(duì)應(yīng)REG1~REG8,,

                 1表示要修改,;0表示不修改,用上電的缺省值

  REG1 .set 125H?????????????? ,;A寄存器,,內(nèi)容為37

  REG2 .set 211H?????????????? ;B寄存器,,內(nèi)容為17

  REG3 .set 300H

  REG4 .set 409H

  REG5 .set 501H

  REG6 .set 600H

  REG7 .set 722H??????? ???? ,;幀同步延遲寄存器

  REG8 .set 802H????? ?????? ;幀同步個(gè)數(shù)寄存器,,在本應(yīng)用中為一主一從

AC01INIT:

? ????????? xf=0?????????????? ,;復(fù)位ac01

??? ??????? intm=1???????????? ;禁止所有中斷

? ?????????? tcr=#10H???????? ? ,;定時(shí)器停止

???????????? imr=#280H????????? ,;當(dāng)TDM發(fā)送時(shí),從休眠狀態(tài)啟動(dòng)

???????????? tspc=#0008H??????? ,;暫停TDM串口

???????????? tdxr=#0H??????? ?? ,;發(fā)送0作為第一個(gè)數(shù)

???????????? tspc=#00c8H??????? ;復(fù)位并打開(kāi)TDM串口

???????????? xf=1?????????????? ,;從復(fù)位狀態(tài)釋放AC01

,;……………………Register init's……………………

????????????? .evalREGISTER & 1H,SELECT

????????????????????? ???????? ,;如果要修改REG1,,則執(zhí)行下列程序

????????????? .if SELECT=1H

????????????? a=#REG1? ??????? ;用REG1的值加載累加器A

????????????? call REQ2??????? ,;調(diào)用REQ2子程序初始化寄存器值

????????????? .endif

????????????? .eval REGISTER & 2H,,SELECT

?????????????????????????????? ;如果要修改REG2,,則執(zhí)行下列程序

????????????? .if SELECT=2H

????????????? a=#REG2

????????????? call REQ2

????????????? .endif?

????????????? .eval REGISTER & 4H,,SELECT?

????????????????????????? ??? ;如果要修改REG3,,則執(zhí)行下列程序

????????????? .if SELECT=4H

????????????? a=#REG3

????????????? call REQ2

????????????? .endif?

????????????? .eval REGISTER & 8H,,SELECT?

????????????????????????????? ;如果要修改REG4,,則執(zhí)行下列程序

????????????? .if SELECT=8H

????????????? a=#REG4

????????????? call REQ2

????????????? .endif

????????????? .eval REGISTER & 10H,,SELECT

?????????????????????????? ;如果要修改REG5,,則執(zhí)行下列程序

????????????? .if SELECT=10H

????????????? a=#REG5

?????? call REQ2

?????? .endif?

?????? .eval REGISTER & 20H,,SELECT?

????????????????????????? ;如果要修改REG6,,則執(zhí)行下列程序

?????? .if SELECT=20H

?????? a=#REG6

?????? call REQ2

?????? .endif

?????? .eval REGISTER & 80H,,SELECT

???????????????????????? ;如果要修改REG8,,則執(zhí)行下列程序

?????? .if SELECT=80H

?????? a=#REG8

?????? call REQ2

?????? .endif

?????? .eval REGISTER & 40H,,SELECT

??????????????????????? ;如果要修改REG7,,則執(zhí)行下列程序

?????? .if SELECT=40H

?????? a=#REG7

?????? call REQ2

?????? .endif

?????? return

REQ2

?????? ifr=#080H????????,;清除中斷標(biāo)志寄存器IFR

?????? tdxr=#03H????????;請(qǐng)求AC01的二次通訊

?????? idle(1)??????????,;等待第一次發(fā)送

?????? tdxr=a???????????,;把寄存器內(nèi)容送到串口

?????? ifr=#080H????????;清除中斷標(biāo)志寄存器IFR

?????? idle(1)??????????,;等待二次發(fā)送

?????? tdxr=#0H

?????? ifr=#080H????????,;清除中斷標(biāo)志寄存器

?????? idle(1)

?????????? return?????? ;中斷返回

  在自適應(yīng)聲回波對(duì)消的主程序中,,當(dāng)有AC01中斷時(shí),,中斷服務(wù)程序首先判斷數(shù)據(jù)是從哪一個(gè)通道送來(lái)的,主通道還是從通道?可通過(guò)接收數(shù)據(jù)的最低兩位D01 D00檢測(cè)出來(lái),。若LSBS是00,,表明是主通道傳來(lái)的數(shù)據(jù),程序轉(zhuǎn)向主通道的中斷服務(wù)程序,。若LSBS是01,,表明是從通道傳來(lái)的數(shù)據(jù),程序轉(zhuǎn)向從通道的中斷服務(wù)程序,。

  以上硬件電路已經(jīng)成功地應(yīng)用于實(shí)時(shí)聲回波對(duì)消器中,。當(dāng)然,最終的產(chǎn)品應(yīng)該是獨(dú)立的脫機(jī)系統(tǒng),。但在研發(fā)初期,,與從頭設(shè)計(jì)一個(gè)DSP系統(tǒng)相比,擴(kuò)展DSKplus Board的接口功能,,為科研人員節(jié)省了大量的時(shí)間,,也避免了由于開(kāi)發(fā)初期考慮不周,造成反復(fù)設(shè)計(jì)DSP系統(tǒng)的巨大浪費(fèi),,使科研人員能把主要的精力投入到需要?jiǎng)?chuàng)新,、需要反復(fù)驗(yàn)證的關(guān)鍵步驟。由此看來(lái),,價(jià)廉且性能佳的DSK不僅能作為初學(xué)者入門的良好套件,,也是科研人員加快初期研發(fā)工作進(jìn)度的有力工具。

?

參考文獻(xiàn)

1 TMS320C54x DSKplus DSP Starter Kit User’s Guide. TI,1996

2 TLC320AC01C Single-Supply Analog Interface Circuit Data Manual.TI,,1996

3 TMS320C54x DSP Algebraic Instruction Set Reference Set.TI,,1996

4 B.Farhang-Boroujeny.Fast LMS/Newton algorithms based on autoregresive modeling and their application to acoustic echo cancellation.IEEE Trans.Signal Processing,1997,;45(8)

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn),。轉(zhuǎn)載的所有的文章,、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118,;郵箱:[email protected]