ADSP-TS101的USB 2.0接口擴展
1 引 言
現(xiàn)代信號處理系統(tǒng)通常涉及到上位機與信號處理機之間的數(shù)據(jù)通訊,如何建立信號處理機與上位機的通訊接口成為系統(tǒng)設(shè)計中必須解決的一個問題。通常情況下,對于數(shù)據(jù)傳輸速度要求不太高的應(yīng)用,可以使用普通串行口作為通訊鏈路。在本系統(tǒng)中,由于采用多片高性能浮點數(shù)字信號處理器ADSP-TS101作為處理器,產(chǎn)生了大量的處理結(jié)果,并且要求實時傳輸處理結(jié)果,傳輸速度必須達(dá)到1 MB/s,因此普通的串行通訊口已經(jīng)不能滿足要求。若采用PCI接口,雖然在速度上可以滿足要求,但需要單獨在上位機占用一個PCI插槽,另外由于系統(tǒng)還有其他模塊需要與信號處理機進(jìn)行高速數(shù)據(jù)傳輸,因此在供電設(shè)計、系統(tǒng)中模塊間的連接布線、開發(fā)調(diào)試中都存在一定的困難,在使用中也會因為其不具備熱插拔功能而相對繁瑣??紤]到這些因素,選擇USB 2.0接口作為通訊鏈路,因為其具有傳輸速度高、使用簡單、成本低廉的優(yōu)點。
USB(Universal Serial Bus)是一種通用串行總線,由COMPAQ,InteI,Microsoft和NEC等公司共同開發(fā),并成為標(biāo)準(zhǔn),現(xiàn)今已廣泛運用于各種數(shù)字系統(tǒng)中。USB總線具有用戶使用方便、成本低廉、易于與PC接口、支持熱插拔、傳輸速度高、易于升級等優(yōu)點。USB 2.0的最高傳輸速率可達(dá)480 Mb/s,比一般的串口快1 000倍以上。
USB總線主要包括主機和設(shè)備、物理構(gòu)成、邏輯構(gòu)成以及客戶軟件與設(shè)備功能接口的關(guān)系4個部分,圖1展示了USB總線組成關(guān)系。
2 系統(tǒng)設(shè)計
2.1 系統(tǒng)結(jié)構(gòu)
圖2為本文所論及的信號處理系統(tǒng)的結(jié)構(gòu)框圖。在本系統(tǒng)中,上位機將設(shè)置好的參數(shù)發(fā)送給信號處理機,由信號處理機將參數(shù)轉(zhuǎn)發(fā)給系統(tǒng)其他模塊,并根據(jù)此參數(shù)進(jìn)行相應(yīng)的信號處理,最后再將處理結(jié)果傳回上位機。
2.2 ISP1581簡介
ISP1581是Philips公司的一款高性價比的USB 2.0接口芯片。他完全遵循USB 2.0規(guī)范,支持7個IN端點,7個OUT端點和一個固定控制IN/OUT端點。ISP1581支持USB 2.0的自檢工作模式和USB 1.1的返回工作模式,可以在高速或全速條件下正常運行。內(nèi)部集成有串行接口引擎(SIE),PIE,8 kB的FIFO存儲器,數(shù)據(jù)收發(fā)器,PLL的12 MHz晶體振蕩器和3.3 V的電壓調(diào)整器。同時,可通過軟件控制與USB總線的連接。
2.3 硬件電路設(shè)計
由ADSP-TS101和ISP1581構(gòu)成的USB 2.0接口電路如圖3所示。其中ADSP-TS101在系統(tǒng)中同時完成信號處理和充當(dāng)微控制器完成對ISP1581的控制。ADSP-TS101和ISP1581以通用總線的方式連接,即數(shù)據(jù)總線和地址總線分離的方式。ISP1581的片選信號連接到ADSP-TS101的MS0,映射到ADSP-TS101的地址空間為0X8000000~0X80000FF,TS101通過對這些地址上的寄存器進(jìn)行讀寫來控制ISP1581,完成與上位機的USB傳輸。ISP1581的中斷輸出引腳連接到ADSP-TS101的中斷請求輸入引腳IRQ2,通過中斷方式與DSP通訊。ISP1581的復(fù)位可通過硬件和軟件觸發(fā),硬件復(fù)位引腳連接到系統(tǒng)復(fù)位信號,系統(tǒng)上電復(fù)位或熱復(fù)位時同時復(fù)位ISP1581。
3 固件程序設(shè)計
由于ISP158l本身沒有集成的微控器,固件程序?qū)⒃赥S101中運行。固件程序在結(jié)構(gòu)上采用中斷驅(qū)動方式,TS101通常情況下在自身的運算任務(wù)下運行,當(dāng)上位機有通訊請求時,通過中斷方式通知TSl01。在TSl01的中斷服務(wù)程序中,通過讀ISPl581的內(nèi)部寄存器判斷具體的請求類型,然后設(shè)置相應(yīng)的標(biāo)志。從程序的實現(xiàn)方式來說,固件程序主要就是一系列請求函數(shù)的集合,主要包括實現(xiàn)設(shè)備枚舉的標(biāo)準(zhǔn)請求和與具體應(yīng)用相關(guān)的廠商請求,不同的請求根據(jù)建立包中的數(shù)據(jù)來區(qū)分,固件程序的主要流程圖如圖4所示。
3.1 ISPl581的初始化
為兼容USB 1.1接口,器件初始配置為全速模式,若上位機支持USB 2.0接口,可在設(shè)備枚舉的過程中更改為高速模式。器件支持7個IN和7個OUT端點,分別可以配置成為中斷方式、同步方式和批量方式,其中批量方式適合高速的數(shù)據(jù)傳輸要求,中斷方式可以用于命令數(shù)據(jù)的傳輸。在此雷達(dá)系統(tǒng)中,為滿足應(yīng)用要求,共配置2個批量輸出端點用于處理結(jié)果傳輸、1個中斷輸出端點用于命令響應(yīng)和1個中斷輸入端點用于接收命令,其他的端點保留不用。
3.2 設(shè)備枚舉
USB設(shè)備的枚舉至關(guān)重要,直接影響到設(shè)計的成功與否,這需要嚴(yán)格依據(jù)USB 2.0協(xié)議規(guī)范來設(shè)計。這部分程序主要由一系列標(biāo)準(zhǔn)請求函數(shù)構(gòu)成,在USB任務(wù)處理中被調(diào)用,主要包括獲取設(shè)備描述符、設(shè)置設(shè)備地址、配置設(shè)備、配置端點等。USB設(shè)備的枚舉一般按照如下步驟進(jìn)行:
(1)設(shè)備連接,總線復(fù)位,ISP1581將發(fā)送高速(HS)模式檢測信號,若接收到一個高速(HS)握手信號,則將轉(zhuǎn)換到高速(HS)狀態(tài),否則仍工作在全速(FS)狀態(tài);
(2)通過默認(rèn)地址0獲取設(shè)備描述符;
(3)給設(shè)備分配惟一的地址;
(4)通過分配的地址重新獲取設(shè)備描述符;
(5)獲取配置描述符;
(6)獲取設(shè)備描述符集合,包括配置描述符、接口描述符、端點描述符;
(7)若為第一次連接則提示找到新硬件,要求安裝驅(qū)動程序,否則根據(jù)設(shè)備描述符加載設(shè)備驅(qū)動程序;
(8)配置設(shè)備,至此設(shè)備枚舉完成。
3.3 廠商請求
本應(yīng)用中的廠商請求主要包括發(fā)送控制命令和讀取處理結(jié)果。由于控制命令的數(shù)據(jù)量很小,故采用中斷方式進(jìn)行傳輸,而處理結(jié)果數(shù)據(jù)量較大,為提高傳輸速度,采用批量傳輸方式傳輸。為防止數(shù)據(jù)異常更新,數(shù)據(jù)緩沖區(qū)采用乒乓緩沖方式,USB發(fā)送完成某個緩沖區(qū)的數(shù)據(jù)前,信號處理的結(jié)果只能存放在另一緩沖區(qū)中。圖5為控制命令-設(shè)置模式字的廠商請求處理流程圖。
4 驅(qū)動程序
驅(qū)動程序用于處理底層通信細(xì)節(jié),實現(xiàn)具體的通信協(xié)議,為應(yīng)用程序提供透明的傳輸接口。USB設(shè)備驅(qū)動程序的設(shè)計是基于WDM(Windows Driver Model,Windows驅(qū)動模型)的。WDM采用分層驅(qū)動程序模型,對于USB設(shè)備來說,可以分為USB總線驅(qū)動程序和USB功能驅(qū)動程序。USB總線驅(qū)動程序是由操作系統(tǒng)提供,USB功能驅(qū)動程序是由設(shè)備開發(fā)者編寫的,他位于USB總線驅(qū)動程序的上面,通過向USB總線驅(qū)動程序發(fā)送IRP(I/O Re-quest Packet,I/O請求包),來實現(xiàn)對USB設(shè)備信息的發(fā)送與接收。
USB設(shè)備驅(qū)動程序的開發(fā)工具有Windows DDK,KRFTech公司的WinDriver,Compuware公司的DriverWorks等。其中WinDriver使用簡單,開發(fā)者幾乎不需要編寫任何代碼即可為開發(fā)的設(shè)備生成可用的驅(qū)動程序。為縮短開發(fā)周期,設(shè)備驅(qū)動程序用WinDriver開發(fā),并用InstallShield為驅(qū)動程序制作了單一的安裝包,以方便用戶安裝使用。
5 設(shè)備調(diào)試中遇到的問題及解決辦法
在USB設(shè)備的開發(fā)過程中,設(shè)備的調(diào)試工作一個重點和難點,下面針對ISP1581,對在調(diào)試過程中可能遇到的問題做出簡要的說明。
(1)處理器不能正常讀寫ISP1581內(nèi)部的寄存器。
出現(xiàn)此問題的可能原因主要有兩個:第一,ISP1581的時鐘信號不穩(wěn)定,ISP1581需要穩(wěn)定的12 MHz時鐘頻率;第二,ISPl581上電復(fù)位不正常,可以在程序起始位置,重新復(fù)位ISPl581,延時20 ms后再對ISP1581進(jìn)行操作。
(2)連接設(shè)備后,上位機提示“不可識別的USB設(shè)備”。
出現(xiàn)此提示,說明ISP1581已經(jīng)設(shè)置好軟連接,真正與上位機連接,但是由于沒有正確響應(yīng)上位機的請求,導(dǎo)致枚舉失敗,上位機不能正確識別USB設(shè)備。要解決此問題,最好使用調(diào)試工具來輔助,例如bushound等。運行該軟件,分析USB總線上傳輸?shù)臄?shù)據(jù)流,觀察USB設(shè)備與上位機的請求與響應(yīng)狀態(tài)以及響應(yīng)的具體內(nèi)容,與標(biāo)準(zhǔn)的USB枚舉過程進(jìn)行比對,從而查出問題所在。
(3)設(shè)備枚舉成功,且正常加載驅(qū)動,但是無法對USB設(shè)備進(jìn)行讀寫操作。
導(dǎo)致此問題可能是固件程序、驅(qū)動程序以及應(yīng)用程序的問題。應(yīng)先排除應(yīng)用程序和驅(qū)動程序的問題,使用WinDriver重新生成設(shè)備的驅(qū)動程序,并根據(jù)WinDriver提供的例程和API函數(shù)手冊,仔細(xì)檢查應(yīng)用程序。固件程序故障的排除相對復(fù)雜,可利用WinDriver提供的端點測試工具,結(jié)合合理的固件程序斷點設(shè)置,按照USB數(shù)據(jù)傳輸?shù)牧鞒?,逐級檢查。
USB設(shè)備的調(diào)試是一個復(fù)雜的過程,需要清楚地了解USB設(shè)備的枚舉過程和USB數(shù)據(jù)傳輸過程,通過細(xì)心的檢查找出問題所在,才能將問題根本解決。
6 結(jié) 語
本設(shè)計通過為ADSP-TSl01擴展USB接口,實現(xiàn)了信號處理機與上位機的USB 2.0接口,并在實際使用中取得了良好的效果,實際傳輸速度大于1.2 MB/s。設(shè)計中,ISP1581通過通用總線方式與TS101連接,如果希望取得更高的傳輸速度,可以考慮采用ISP1581的DMA模式。USB 2.0接口性能優(yōu)越,使用簡單,成本低廉,在計算機與外設(shè)的互聯(lián)中得到了廣泛的應(yīng)用,并逐漸成為計算機與外設(shè)的標(biāo)準(zhǔn)結(jié)構(gòu),因此USB接口的設(shè)計在實際應(yīng)用中具有重要的地位和意義。
評論