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