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