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