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