TMS320VC5402 DSP與ISD4004語(yǔ)音錄放芯片的接諫杓萍捌湫畔⒐芾? 作者: 時(shí)間:2007-03-09 來源:網(wǎng)絡(luò) 加入技術(shù)交流群 掃碼加入和技術(shù)大咖面對(duì)面交流海量資料庫(kù)查詢 收藏 摘要:根據(jù)語(yǔ)音錄放芯片ISD4004的接口特點(diǎn),設(shè)計(jì)了其與TMS320VC5402 DSP的SPI接口電路。完成了DSP對(duì)ISD芯片的通訊與接口控制編程,并給出了實(shí)際應(yīng)用中的一種ISD4004信息管理方法:信息地址表(MAT)。關(guān)鍵詞:DSP 語(yǔ)音錄放芯片 ISD4004 SPI接口 MAT 許多類型的語(yǔ)音錄放應(yīng)用要求具備信息管理的功能,即能夠隨著地錄、放、刪除任意一段信息。而許多語(yǔ)音錄放系統(tǒng)并不能很好地滿足這種要求,如磁帶錄音系統(tǒng)。ISD4004語(yǔ)音錄放芯片提供了SPI微控制器接口,使得語(yǔ)音錄放的信息管理成為可能。本文將詳細(xì)闡述TMS320VC5402 DSP與ISD4004的SPI接口設(shè)計(jì)及其控制操作,同時(shí)設(shè)計(jì)適合應(yīng)用的信息管理方法。 ISD4004語(yǔ)音錄放芯片工作電壓為3V,單片錄放時(shí)間為8~16分鐘。芯片設(shè)計(jì)使得所有操作必須由微控制器控制,操作命令可通過串行通信接口SPI送入。芯片采用多電平直接模擬量存儲(chǔ)技術(shù),每個(gè)采樣值直接存儲(chǔ)在片內(nèi)內(nèi)爍存儲(chǔ)器中,因此能夠非常真實(shí)、自然地再現(xiàn)語(yǔ)音、音樂、音調(diào)和效果聲。采樣頻率可為4.0k、5.3k、6.4k、8.0kHz,頻率越低,錄放時(shí)間越長(zhǎng),但音質(zhì)有所下降。 TMS320VC5402是美國(guó)TI(德州儀器)公司推出的一款高性能的定點(diǎn)DSP,最高頻率為100MHz,內(nèi)部提供16K的存儲(chǔ)空間。它提供的多信道緩沖串口(McBSP)可以設(shè)置為SPI工作方式,從而使得DSP與ISD4004的接口設(shè)計(jì)成為可能。1 接口設(shè)計(jì) DSP作為SPI(串行外設(shè)接口)的主器件(Master),負(fù)責(zé)為ISD4004提供串行時(shí)鐘、片選信號(hào)以及控制ISD4004的動(dòng)作信號(hào)。接口電路如圖1所示。 1.1 SPI SPI協(xié)議是一個(gè)同步串行數(shù)據(jù)傳輸協(xié)議,協(xié)議假定微控制器的SPI移位寄存器在SCLK的下降沿動(dòng)作。ISD4004工作于SPI工作模式。因此對(duì)于ISD4004而言,在時(shí)鐘上升沿鎖存MOSI引腳的數(shù)據(jù),在下降沿將數(shù)據(jù)送至MISO引腳。ISD4004與DSP通訊協(xié)議的具體內(nèi)容如下: (1)所有串行數(shù)據(jù)傳輸開始于SS下降沿。 (2)SS在數(shù)據(jù)傳輸期間必須保持低電平,在兩條指令之間則保持高電平。 (3)數(shù)據(jù)在時(shí)鐘上升沿移入,在下降沿移出。 (4)SS變低時(shí),輸入指令和地址后,ISD才能開始錄放操作。 (5)指令格式是8位控制碼加16位地址碼。 (6)ISD的任何操作(含快進(jìn))如果遇到EOM(信息結(jié)束標(biāo)志)或OVF(溢出),則產(chǎn)生一個(gè)中斷,該中斷狀態(tài)在下一個(gè)SPI周期開始時(shí)被清除。 (7)使用“讀”指令使中斷狀態(tài)位移出ISD的MISO引腳時(shí),控制及地址數(shù)據(jù)也應(yīng)同步從MOSI端移入。因此要注意移入的數(shù)據(jù)是否與器件當(dāng)前進(jìn)行的操作兼容。 (8)所有操作在運(yùn)行位(RUN)置“1”時(shí)開始,置“0”時(shí)結(jié)束。 (9)所有指令都在SS上升沿開始執(zhí)行。 1.2 ISD4004與DSP的SPI時(shí)序配合 根據(jù)ISD4004的時(shí)序要求,DSP設(shè)置串口為SPI工作模式,發(fā)送數(shù)據(jù)先于串行時(shí)鐘半個(gè)周期建立、數(shù)據(jù)在時(shí)鐘上升沿發(fā)送。由圖2可知,ISD接收命令字的方式是先地址后命令,且位序從低到高;而DSP發(fā)送數(shù)據(jù)方式是先高位后低位,故在DSP發(fā)送程序中須將待送地址和命令進(jìn)行高低位對(duì)調(diào)。圖2 ISD控制命令字時(shí)序圖串行時(shí)鐘(SCLK)由DSP主時(shí)鐘產(chǎn)生。在DSP運(yùn)行于10MHz時(shí),設(shè)置時(shí)鐘分頻因子為255,得到約40kHz的串行傳輸時(shí)鐘,適應(yīng)ISD4004相對(duì)慢速的要求。DSP串口SPI方式數(shù)據(jù)傳輸時(shí)序如圖3所示。 ISD4004的RAC管腳(行地址時(shí)鐘)用于指示錄放操作已經(jīng)接近一行的末發(fā)展。RAC在行末前25ms變低,在到達(dá)行末時(shí)變高,DSP將它作為中斷INT3的中斷源,指示錄放操作進(jìn)行到何處;INT管腳在遇到EOM標(biāo)志和OVF溢出時(shí)向DSP發(fā)中斷,DSP將它作中斷INT2的中斷源,用來指示是否到達(dá)一段信息的末尾。按下NUM鍵觸發(fā)INT1中斷開始錄音,按下STOP鍵觸發(fā)INT0中斷終止錄音。放音時(shí)按下NUM即開始,遇以語(yǔ)句EOM時(shí)自動(dòng)停止放音。 1.3 接口軟件設(shè)計(jì) DSP對(duì)ISD的控制是通過SPI接口實(shí)現(xiàn)的,因此DSP的McBSP必須設(shè)置為符合ISD控制命令時(shí)序要求的SPI工作模式。下程序段完成了McBSP的SPI模式設(shè)置(單幀數(shù)據(jù)為24bit,串行時(shí)鐘上升沿發(fā)送數(shù)據(jù),時(shí)鐘頻率為40kHz): stm SPCR1,McBSP1_SPSA stm #0000h,McBSP1_SPSD ;Reset接收 stm SPCR2,McBSP1_SPSA stm #0000h,McBSP1_SPSD ;Reset發(fā)送 stm SPCR1,McBSP1_SPSA stm #1800h,McBSP1_SPSD ;CLKSTP=11,數(shù)據(jù)提前半個(gè)周期 stm RCR1,McBSP1_SPSA stm #0080h,McBSP1_SPSD ;RWDLEN1=100,每幀數(shù)據(jù)24bit stm RCR2,McBSP1_SPSA stm #0001h,McBSP1_SPSD ;RDATDLY=01 stm XCR1,McBSP1_SPSA stm #0080h,McBSP1_SPSD ;XWDLEN1=100,發(fā)送數(shù)據(jù)每幀24bit stm XCR2,McBSP1_SPSA stm #0001h,McBSP1_SPSD stm SRGR1,McBSP1_SPSA stm #00ffh,McBSP1_SPSD ;CLKGDV=0xFF,SPI的時(shí)鐘=DSP時(shí)鐘/256 stm SRGR2,McBSP1_SPSA stm #2000h,McBSP1_SPSD stm PCR,McBSP1_SPSA stm #0a08h,McBSP1_SPSD ;CLKXP=0,CLKXM=1,FSXM=1,FSXP=1 stm SPCR2,McBSP1_SPSA stm #0040h,McBSP1_SPSD ;GRST=1 nop nop ;等待兩個(gè)周期 stm SPCR1,McBSP1_SPSA stm #1801h,McBSP1_SPSD ;設(shè)定RRST=1,開始接收數(shù)據(jù) stm SPCR2,McBSP1_SPSA stm #0041h,McBSP1_SPSD ;設(shè)定XRST=1,開始發(fā)送數(shù)據(jù) DSP中斷服務(wù)程序、命令字發(fā)送程序以及信息管理程序在此不多述。2 信息管理 在采用本模塊的擬人機(jī)器人語(yǔ)言交互系統(tǒng)中,若干條語(yǔ)音按順序分別被錄入到芯片,并將期編程為1、2、3等。DSP可以通過SPI接口獲得每次錄音結(jié)束時(shí)的ISD內(nèi)部信息指針,據(jù)此構(gòu)建一個(gè)信息地址表(MAT),并將此表存入Flash Memory中,作為以后錄放、刪除操作時(shí)信息管理的依據(jù)。 ISD4004內(nèi)部存儲(chǔ)器分為2400行,每行1600列。對(duì)器件尋址即選擇一行,從行首開始錄放,而每行中的列不可尋址。對(duì)于8kHz采樣率的ISD4004,采樣間隔為125μs。器件地址分辨率可按如下計(jì)算: (1/Fs)%26;#215;1600=200ms 2.1 MAT 由于ISD4004內(nèi)部可尋址多達(dá)2400行,而每行固定存儲(chǔ)200ms語(yǔ)音,為了可錄放、刪除任意長(zhǎng)度的語(yǔ)音,有必要建立MAT。MAT跟蹤每一條語(yǔ)音的開始地址以及每一個(gè)信息碎塊的開始結(jié)束地址。ISD4004共2400行,實(shí)際只需要12位地址即可完成尋址。為節(jié)省MAT存儲(chǔ)空間,將地址最高位bit15作為語(yǔ)音起始點(diǎn)標(biāo)志。建立MAT的規(guī)則如下: (1)MAT表項(xiàng)值全為0(0000 0000 0000 0000):表示對(duì)應(yīng)行未存儲(chǔ)任何語(yǔ)音; (2)MAT表項(xiàng)值的bit15為1(1XXX XXXX XXXX XXXX),表示對(duì)應(yīng)的是某句語(yǔ)音的起始行; (3)MAT表項(xiàng)值的bit15為0,其余各位是有效地址(0XXX XXXX XXXX XXXX),表示對(duì)應(yīng)的行是某句語(yǔ)音的一行,但不是起始行; (4)ISD的第一行總是某句語(yǔ)音的起始行。 同一句語(yǔ)音的地址在MAT中總是連續(xù)存儲(chǔ)的。由若干行組成的句語(yǔ)音,它的各行地址總是從小到大,但不一定兩兩相連。以行地址為表項(xiàng)的MAT,所要求的存儲(chǔ)空間是較大的。本例中為2400行語(yǔ)句,則要求MAT具有2400個(gè)表項(xiàng)。為了減小MAT大小,也可對(duì)語(yǔ)音進(jìn)行分塊。若8以位為一個(gè)語(yǔ)音塊,則MAT大小減小為300個(gè)表項(xiàng)。經(jīng)過幾次錄音和刪除手,建立的MAT如表1所示。表1 MAT實(shí)例 MATbit15實(shí)際行地址句1000 0000 0000 000010000 0000 0000 000010000 0000 0000 000100000 0000 0000 00010000 0000 0000 000200000 0000 0000 00021000 0000 0000 000310000 0000 0000 000320000 0000 0000 000500000 0000 0000 00050000 0000 0000 000600000 0000 0000 00061000 0000 0000 000410000 0000 0000 000440000 0000 0000 000700000 0000 0000 00070000 0000 0000 000800000 0000 0000 00082.2 信息管理操作 放音時(shí),DSP從MAT表頭開始搜索bit15為1的表項(xiàng)。要播放第幾條語(yǔ)句,則尋找第幾個(gè)bit15為1的表項(xiàng)。由于RAC的周期和器件的行相同,且其低脈沖時(shí)間長(zhǎng)達(dá)25ms,在播放當(dāng)前行語(yǔ)音的同時(shí),RAC觸發(fā)DSP的INT3中斷。INT3中斷服務(wù)程序驗(yàn)證下一行bit15是否為1,若不為1則將該行地址送入ISD,則輸入的地址不會(huì)立刻生效,而是在緩沖器中等待當(dāng)前結(jié)束;若為1則指示下一行為新語(yǔ)句開始地址,DSP不送任何指令。放音遇到EOM或者OVF時(shí)產(chǎn)生INT中斷,停止放音。 錄音時(shí),按NUM鍵啟動(dòng)錄音操作,DSP首先找出MAT中的個(gè)全0行,發(fā)錄音指令;在錄制當(dāng)前行的同時(shí),DSP等待RAC信號(hào)觸發(fā)INT3中斷,中斷服務(wù)程序繼續(xù)尋找全0行、發(fā)帶該行地址的錄音指令,直到按STOP鍵觸發(fā)INT0中斷發(fā)錄音停止命令為止。刪除語(yǔ)音可通過將相應(yīng)語(yǔ)音行全置零來完成。 本文詳細(xì)闡述了TMS320VC5402 DSP與ISD4004語(yǔ)音錄放芯片的SPI接口設(shè)計(jì)、ISD4004的語(yǔ)音信息管理以及DSP與ISD4004之間的通訊與控制程序算法的設(shè)計(jì)。該模塊作為擬人機(jī)器人語(yǔ)音互系統(tǒng)的語(yǔ)音應(yīng)答模塊,可以對(duì)機(jī)器人識(shí)別的命令語(yǔ)音進(jìn)行相應(yīng)的實(shí)時(shí)應(yīng)答。
評(píng)論