基于DSP的USB語(yǔ)音傳輸接口設(shè)計(jì)方案
1 引 言
USB把所有的輸入和輸出外設(shè)都置于機(jī)箱之外,而不用任何擴(kuò)展槽。他是快速、雙向、同步、動(dòng)態(tài)連接且價(jià)格低廉的串行接口,可以滿(mǎn)足PC機(jī)發(fā)展的現(xiàn)在和未來(lái)的需要。本設(shè)計(jì)就是充分發(fā)揮了USB這些優(yōu)點(diǎn),利用當(dāng)今先進(jìn)的電子技術(shù)研制出來(lái)的一種新型的高性能的語(yǔ)音傳輸接口裝置。
本設(shè)計(jì)選用TI公司的TMS320VC5402(以下簡(jiǎn)稱(chēng)DSP,Digital Signal Processor)作為本設(shè)計(jì)的主控制器芯片,NS公司的USBN9603(以下簡(jiǎn)稱(chēng)USB,Universal Serial Bus)作為USB控制器芯片,NEWAVE公司的NWl034(以下簡(jiǎn)稱(chēng)CODEC)作為語(yǔ)音編解碼器芯片,MITEI。公司的MH88634(以下簡(jiǎn)稱(chēng)COIC)作為電話(huà)機(jī)接口芯片。
2 DSP和USB簡(jiǎn)介
TMS320VC5402是定點(diǎn)芯片TMS320C54X系列的一種,是為實(shí)現(xiàn)低功耗和高性能而專(zhuān)門(mén)設(shè)計(jì)的定點(diǎn)DSP芯片,主要應(yīng)用在無(wú)線(xiàn)通信和語(yǔ)音處理等方面。TMS320VC5402的主要特點(diǎn)包括:處理性能好,運(yùn)算速度達(dá)100MI/s;優(yōu)化的CPU結(jié)構(gòu),內(nèi)部有1個(gè)40b的算術(shù)邏輯單元,2個(gè)獨(dú)立的40b的加法器,1個(gè)17×17的的乘法器和1個(gè)40b的桶形移位寄存器,有4條內(nèi)部總線(xiàn)和2個(gè)地址產(chǎn)生器;低功耗方式,可以在3.3VI/O電壓和1.8V內(nèi)核電壓下工作;智能外設(shè),除了標(biāo)準(zhǔn)的串行口和時(shí)分復(fù)用(TDM)串行口外,TMS320VC5402還提供了自動(dòng)緩沖串行口BSP(auto-Buffered Serial Port)和與外部處理器通信的HPI(Host Port Interface)接口;內(nèi)部有16k片內(nèi)RAM和4k片內(nèi)ROM。
TMS320VC5402其獨(dú)特的高性能、低功耗和低價(jià)格優(yōu)勢(shì),是我們選擇他作為本設(shè)計(jì)的主處理器的原因。
USB自1995年實(shí)現(xiàn)標(biāo)準(zhǔn)化后,經(jīng)過(guò)了數(shù)年的飛速發(fā)展,已經(jīng)從最初1.0規(guī)范發(fā)展到現(xiàn)在的2.o規(guī)范,最大傳輸速率可達(dá)480Mb/s。本設(shè)計(jì)使用的USBN9603支持USBl.1規(guī)范,低速傳輸速率為1.5Mb/s,全速傳輸速率為12Mb/s。USB提供了4種傳輸方式,以適應(yīng)各種設(shè)備的需要。這4種傳輸方式分別是控制傳輸、等時(shí)傳輸、中斷傳輸和批量傳輸。
NS的USBN9603是一個(gè)集成的USB端點(diǎn)控制器,具有增強(qiáng)的DMA功能。USBN9603集成了一個(gè)帶有3.3V的調(diào)節(jié)器的收發(fā)器,1個(gè)SIE(串行接口引擎),1個(gè)8 b并行接口,1個(gè)時(shí)鐘發(fā)生器和1個(gè)MICROWIRE/PLUS接口。USBN9603可以進(jìn)行7個(gè)端點(diǎn)的數(shù)據(jù)傳輸,除了端點(diǎn)。必須為控制傳輸端點(diǎn)以外,其他的6個(gè)端點(diǎn)可以被配置成中斷傳輸端點(diǎn)、批量傳輸端點(diǎn)或者等時(shí)傳輸端點(diǎn);每一個(gè)端點(diǎn)都有一個(gè)專(zhuān)門(mén)的FIFO,控制端點(diǎn)的FIFO長(zhǎng)度為8B,其他的為64B。8 b并行接口可以支持多路復(fù)用或者非多路復(fù)用2種與CPU的接口方式。USBN9603的突出特點(diǎn)為:低EMI(電磁干擾),低等待電流,24M晶振,增強(qiáng)的DMA功能;可使用5V或3.3V電源;總線(xiàn)操作具有異步喚醒的全速靜態(tài)HALT模式;改進(jìn)的3.3V電壓輸入的電壓調(diào)節(jié)器,所有非雙向端點(diǎn)都有64B的FIFO;外部控制器接口簡(jiǎn)單,編程方便。
3 語(yǔ)音傳輸的思想
本設(shè)計(jì)的目的是給普通電話(huà)機(jī)和PC機(jī)之間提供一個(gè)數(shù)字接口。在本設(shè)計(jì)中,PC機(jī)是主機(jī),DSP系統(tǒng)是USB設(shè)備。
當(dāng)有來(lái)電時(shí),COIC向DSP申請(qǐng)中斷,DSP收到中斷后就使用USB的中斷傳輸向主機(jī)報(bào)告有來(lái)電,主機(jī)應(yīng)用軟件會(huì)彈出一個(gè)對(duì)話(huà)框要求用戶(hù)選擇摘機(jī)還是拒接,同時(shí)耳機(jī)或音箱里會(huì)傳出電話(huà)鈴聲,如果選擇摘機(jī),主機(jī)就會(huì)使用USB的控制傳輸發(fā)送一個(gè)摘機(jī)命令給DSP,DSP在接到命令后就會(huì)接通電話(huà),同時(shí)啟動(dòng)CODEC,然后語(yǔ)音數(shù)據(jù)就通過(guò)USB的等時(shí)傳輸(也叫同步傳輸)進(jìn)行雙向傳送,而主機(jī)用戶(hù)插上耳機(jī)(或音箱)和話(huà)筒就可以與電話(huà)另一端通話(huà),通話(huà)完畢,主機(jī)發(fā)送一個(gè)掛機(jī)命令給DSP。如果選擇拒接,主機(jī)就發(fā)送一個(gè)拒接命令給DSP,DSP會(huì)執(zhí)行相應(yīng)的動(dòng)作。
當(dāng)用戶(hù)需要往外撥號(hào)時(shí),也無(wú)需拿起電話(huà)機(jī),只要在應(yīng)用軟件中選擇撥號(hào)功能,輸入被叫號(hào)碼,點(diǎn)擊確認(rèn)鍵即可。剩下來(lái)的執(zhí)行過(guò)程與有來(lái)電時(shí)的情況是一樣的。
4 電路原理設(shè)計(jì)
本設(shè)計(jì)由DSP構(gòu)成核心控制器,控制對(duì)象是USB,CODEC和COIC。圖1是整個(gè)系統(tǒng)的硬件框圖。
本設(shè)計(jì)的USB部分使用了USB的3種傳輸方式:
(1)控制傳輸
用于實(shí)現(xiàn)設(shè)備枚舉主機(jī)的標(biāo)準(zhǔn)請(qǐng)求還有廠(chǎng)商自定義請(qǐng)求(即主機(jī)命令)。
(2)中斷傳輸
用于實(shí)現(xiàn)設(shè)備對(duì)主機(jī)的喚醒,是惟一的設(shè)備主動(dòng)向主機(jī)發(fā)送數(shù)據(jù)的傳輸方式。
(3)等時(shí)傳輸
用于實(shí)現(xiàn)語(yǔ)音數(shù)據(jù)的雙向同步傳輸。
圖2是USB與DSP的接口原理圖,如圖所示,USB使用24M晶振,本設(shè)備是全速(高速)設(shè)備,所以在D+上加0.5kΩ上拉電阻,如果是低速設(shè)備,則在D一上加1.5kΩ上拉電阻。MODE0和MODEl是選擇8b并行接口方式的,本設(shè)計(jì)中選用非多路復(fù)用方式,所以MODE0和Model都接地,如果要選擇成多路復(fù)用方式,則使MODE0接3.3V電源,MODEl接地即可。
CLKOUT是時(shí)鐘輸出,可供測(cè)試用,正常上電復(fù)位后,CLKOUT就應(yīng)該輸出4MHz的方波。然后可以在主程序中對(duì)USB的時(shí)鐘寄存器進(jìn)行配置,以產(chǎn)生需要的時(shí)鐘,然后用示波器就可以在CLKOUT上看到相應(yīng)的輸出,可以用來(lái)判斷讀寫(xiě)操作是否正確等。
CODEC與DSP的接口為標(biāo)準(zhǔn)的串行通信接口。COIC把普通電話(huà)的兩線(xiàn)制轉(zhuǎn)換為四線(xiàn)制后實(shí)現(xiàn)與CODEC的無(wú)縫連接,另外和DSP接口只需幾根簡(jiǎn)單的控制線(xiàn)即可實(shí)現(xiàn)。
5 系統(tǒng)軟件的設(shè)計(jì)
系統(tǒng)軟件主要由3個(gè)部分組成:Firmware,USB驅(qū)動(dòng)程序,主機(jī)應(yīng)用軟件。圖3是系統(tǒng)軟件框圖。
5.1 Firmware
固件程序,是寫(xiě)在DSP的ROM中的程序,由主程序和中斷服務(wù)程序組成。使用TI提供的CCS(Code Composer Studio)來(lái)完成Firmware的編寫(xiě)。CCS是TI推出的代碼編譯調(diào)試的集成環(huán)境,調(diào)試方便、易于使用,為本設(shè)計(jì)的順利進(jìn)行創(chuàng)造有利條件。
(1)主程序
圖4為主程序流程圖。主程序只做初始化和檢測(cè)一些狀態(tài)位的變化,以轉(zhuǎn)入相應(yīng)的處理子程序中。
(2)中斷服務(wù)程序
包括COIC的中斷服務(wù)程序、CODEC的中斷服務(wù)程序和USB中斷服務(wù)程序3部分。Firmware的大部分工作是在中斷服務(wù)程序中完成的。
COIC只有一個(gè)中斷,就是把振鈴信息傳送給DSP。
CODEC有3個(gè)中斷:首先是接收振鈴信息,在振鈴中斷服務(wù)子程序中,把振鈴標(biāo)志位置位;然后是接收中斷,在中斷服務(wù)子程序中把從電話(huà)接收到的語(yǔ)音數(shù)據(jù)裝載到相應(yīng)的FIFO中去;還有就是發(fā)送中斷,在中斷服務(wù)子程序中把從PC機(jī)側(cè)發(fā)過(guò)來(lái)的語(yǔ)音數(shù)據(jù)發(fā)送至電話(huà)終端。
USB有4個(gè)中斷,所有的數(shù)據(jù)交換都是在中斷服務(wù)子程序中完成的,而且除中斷傳輸外每次傳輸都是由客戶(hù)啟動(dòng)的,主機(jī)應(yīng)用軟件調(diào)用USB功能驅(qū)動(dòng)程序開(kāi)始一個(gè)傳輸過(guò)程,然后USB產(chǎn)生一個(gè)中斷請(qǐng)求,向DSP申請(qǐng)中斷,在得到DSP的響應(yīng)之后才進(jìn)人中斷服務(wù)子程序進(jìn)行數(shù)據(jù)的接收或者發(fā)送。
5.2 USB驅(qū)動(dòng)程序
USB的驅(qū)動(dòng)程序?qū)儆赪DM(Windows Driver Model)類(lèi)型,Windows 98/2000等操作系統(tǒng)均支持該類(lèi)型的驅(qū)動(dòng)程序。WDM首先定義了一個(gè)基本的核心驅(qū)動(dòng)程序模型,處理所有類(lèi)型的數(shù)據(jù),使驅(qū)動(dòng)程序模型的內(nèi)核實(shí)現(xiàn)更加的固定。WDM驅(qū)動(dòng)程序還是一種分層的程序結(jié)構(gòu),可以看做是Windows NT驅(qū)動(dòng)程序的改進(jìn),WDM驅(qū)動(dòng)程序支持即插即用、電源管理和WMI(Windows Management Instrument)特性。Windows 98/2000提供了一系列的系統(tǒng)驅(qū)動(dòng)程序,他們具有為許多標(biāo)準(zhǔn)類(lèi)型設(shè)備服務(wù)所需的所有基本功能。圖5是USB的WDM接口框圖(也是USB驅(qū)動(dòng)程序總體框圖)。
Windows提供了USB的系統(tǒng)類(lèi)驅(qū)動(dòng)程序,他處理USB上的所有底層通信,這樣其他驅(qū)動(dòng)程序就有了一個(gè)定義好的接口可以使用。圖5中USB類(lèi)驅(qū)動(dòng)程序使用UHCD.SYS或OHCI.SYS分別驅(qū)動(dòng)兩種類(lèi)型的控制器UHCI(USB Host Controller Driver)和OHCI(Open Host Controller Interface)。當(dāng)PCI枚舉器發(fā)現(xiàn)USB主機(jī)控制器后,就會(huì)裝入相關(guān)的驅(qū)動(dòng)程序。
需要自己做的驅(qū)動(dòng)程序?qū)嶋H上是USB功能驅(qū)動(dòng)程序(也叫客戶(hù)驅(qū)動(dòng)程序),他控制一個(gè)給定的USB功能設(shè)備,例如我們的語(yǔ)音傳輸設(shè)備。連接到USB設(shè)備的每一種類(lèi)型的功能單元都必須要有功能驅(qū)動(dòng)程序。這些功能單元不知道和USB傳輸機(jī)制相關(guān)的細(xì)節(jié),而且必須依賴(lài)于USB的主機(jī)應(yīng)用軟件才能管理他們基于USB的能力和限制的傳輸請(qǐng)求。功能驅(qū)動(dòng)程序的理想實(shí)現(xiàn)是基于設(shè)備類(lèi)而定義的。功能驅(qū)動(dòng)程序把USB設(shè)備看作是一個(gè)司以被訪(fǎng)問(wèn)的端點(diǎn)的集合,他可以被控制并與他的功能單元進(jìn)行通信。USB功能驅(qū)動(dòng)程序可以在VC++下編寫(xiě),但需使用微軟提供的NTDDK(Windows NT Driver Develop Kit)來(lái)編譯驅(qū)動(dòng)程序。
5.3 主機(jī)應(yīng)用軟件
主機(jī)應(yīng)用軟件所完成的主要工作為:打開(kāi)和關(guān)閉USB設(shè)備;讀取設(shè)備描述符等;向設(shè)備發(fā)送摘機(jī)、掛機(jī)和撥號(hào)等命令;主動(dòng)向用戶(hù)發(fā)聲并彈出對(duì)話(huà)框提示有來(lái)電;進(jìn)行撥號(hào);撥號(hào)或摘機(jī)后的雙向語(yǔ)音同步傳輸。
主機(jī)應(yīng)用軟件在VC++6.0下完成,應(yīng)用軟件所操作的對(duì)象就是USB功能驅(qū)動(dòng)程序,由于功能驅(qū)動(dòng)程序提供與應(yīng)用軟件的接口,因此編寫(xiě)應(yīng)用軟件的難度要遠(yuǎn)遠(yuǎn)低于功能驅(qū)動(dòng)程序的開(kāi)發(fā)難度。
6 結(jié) 語(yǔ)
在當(dāng)今的數(shù)字化時(shí)代背景下,DSP已成為通信、計(jì)算機(jī)、消費(fèi)類(lèi)電子產(chǎn)品等領(lǐng)域的基礎(chǔ)器件,被譽(yù)為信息社會(huì)革命的旗手。USB為PC外圍設(shè)備輸入輸電提供了新的接口標(biāo)準(zhǔn)。他使得設(shè)備具有了熱插拔、即1插即吊、自動(dòng)配置的能力,并標(biāo)準(zhǔn)化了設(shè)備連接。USB的級(jí)聯(lián)星型拓?fù)浣Y(jié)構(gòu)大大擴(kuò)充了外設(shè)數(shù)量,使增加、使用外設(shè)更加便捷、快速。
本文所介紹的USB設(shè)備其實(shí)是一個(gè)數(shù)字電話(huà)機(jī)的模型,本系統(tǒng)軟硬件都具有模塊化特性,易于改造成其他應(yīng)用場(chǎng)合的語(yǔ)音控制系統(tǒng):從大的方面講,可以組成數(shù)字電話(huà)網(wǎng):從小的方面講,在一個(gè)局域網(wǎng)內(nèi)部,所有成員就都可以通過(guò)局域網(wǎng)方便地接聽(tīng)和撥打電話(huà),而無(wú)需大量的分機(jī)。該設(shè)計(jì)節(jié)省了大量的人力和物力,具有較強(qiáng)的使用價(jià)值和推廣意義
評(píng)論