1 引言
自動測試系統(tǒng)ATS(AutomaTIc Test System)集成測試所需的全部激勵與測量設(shè)備,計算機高效完成各種模式的激勵及響應(yīng)信號的采集、存儲與分析,對被測單元進行自動狀態(tài)監(jiān)測、性能測試和故障診斷。總線是ATS的重要組成部分,是計算機與測試硬件內(nèi)部及外設(shè)傳遞信息的公共通路,其性能參數(shù)直接影響ATS整體的功能實現(xiàn)和性能指標(biāo)。
通用串行總線USB(Universal Serial Bus)主要用于PC與外圍USB設(shè)備互聯(lián)。其物理連接是一種分層的菊花鏈結(jié)構(gòu),最多支持5 Hub層及127個外設(shè)。該結(jié)構(gòu)獨立性強??垢蓴_性強、傳輸速率高、占用資源有限、使用靈活、支持熱插拔,因此USB技術(shù)逐漸成為現(xiàn)代ATS數(shù)據(jù)傳輸?shù)陌l(fā)展趨勢。
這里通過Cypress公司的USB單片機CY7C68013A的PE和GPIF接口實現(xiàn)計算機與測試控制器件FPGA和緩沖FIFO的高速數(shù)據(jù)通信,完成ATS測試指令信號和數(shù)據(jù)的下載,自檢和反饋數(shù)據(jù)的上傳功能,實現(xiàn)測試技術(shù)的智能化。重點從USB硬件和固件代碼設(shè)計闡述在測試系統(tǒng)數(shù)據(jù)傳輸過程中 USB技術(shù)的應(yīng)用。
2 USB接口通信工作流程
USB具有靈活的1二作流程,如圖1所示。
圖1中,USB設(shè)備的工作流程從設(shè)備連接→上電→復(fù)位→分配地址→配置操作→執(zhí)行固件代碼,6大工作狀態(tài),這些狀態(tài)在USB主機的控制下實現(xiàn)狀態(tài)間的轉(zhuǎn)換和總線的訪問。USB設(shè)備隨時根據(jù)總線活動情況判斷是否進入或退出掛起狀態(tài),節(jié)省USB系統(tǒng)的功耗。
從圖1分析可知,USB通信包括USB系統(tǒng)應(yīng)用軟件、設(shè)備及總線驅(qū)動程序和USB固件3層。應(yīng)用軟件設(shè)計由2部分組成:動態(tài)鏈接庫和應(yīng)用程序。動態(tài)鏈接庫負(fù)責(zé)與內(nèi)核態(tài)的USB功能驅(qū)動程序通信并接收應(yīng)用程序?qū)SB設(shè)備I/O的各種操作請求,應(yīng)用程序調(diào)用Win32 APl函數(shù)DeviceToCon-trol向設(shè)備發(fā)出命令;USB設(shè)備驅(qū)動程序通過總線驅(qū)動程序發(fā)出輸入輸出請求(IRP),實現(xiàn)對USB設(shè)備信息的發(fā)送和接收;總線驅(qū)動程序負(fù)責(zé)總線檢測、電源管理和USB事務(wù)處理,固件程序?qū)崿F(xiàn)FX2器件的初始化設(shè)置,設(shè)備請求處理,電源管理和外圍通信功能,是整個通信架構(gòu)的核心。在測試系統(tǒng)中,通過固件代碼建立數(shù)據(jù)物理通道并實現(xiàn)通信協(xié)議,用戶可通過測試軟件對USB設(shè)備進行功能控制,實現(xiàn)數(shù)據(jù)的有效通信和測試任務(wù)高效、可靠地完成。
3 測試系統(tǒng)USB硬件電路原理
CY7C68013A(簡稱68013A)集成USB2.0收發(fā)器、串行接口引擎(SIE)、增強8051內(nèi)核和可編程外圍接口,提供一個高效的USB2.0解決方案,它可配置為3種數(shù)據(jù)通信模式:端口、GPIF和Slave FIFO模式。本設(shè)計利用GPIF方式快速、靈活等特點,有效地解決了端口方式下USB2.0設(shè)備數(shù)據(jù)傳輸速度瓶頸,大大提高了數(shù)據(jù)的傳輸速率。FX2專門為GPIF提供外圍接口信號,如8/16位數(shù)據(jù)線、CTL、Ready信號及地址線。從通用性、低功耗等方面考慮,將68013A的PA,PB,PD和 PE 4個I/O端口,6個CTL[5:0]和6個RDY[5:0]與FIFO或FPGA相連實現(xiàn)數(shù)據(jù)通信和握手、控制等功能。
圖2為GPIF方式硬件連接框圖,其中IFCLK是雙向時鐘信號,當(dāng)配置為輸出時,IFCLK被FX2驅(qū)動為30 MHz/48MHz:當(dāng)配置為輸入時,時鐘范圍為5~48 MHz;GPIFADR(9)信號為外部設(shè)備提供地址線,在總線上地址值是自增的;FD[15:0]是USB主機通過FX2和外部設(shè)備進行數(shù)據(jù)傳輸?shù)臄?shù)據(jù)線,可配置成8位或16位;CTL[5:0]為外設(shè)控制信號,如讀寫選通、使能等;RDY[5:0]為外設(shè)狀態(tài)檢測信號,如外部FIFO的空、滿等。
整個系統(tǒng)的工作原理:主機通過應(yīng)用軟件設(shè)置將相應(yīng)的測試指令和數(shù)據(jù)經(jīng)USB總線下載到68013A內(nèi)部FIFO中,按照同件代碼配置相關(guān)寄存器、端口和中斷,實現(xiàn)與FIFO和FPGA的數(shù)據(jù)通信。外部使用兩片F(xiàn)IFO匹配數(shù)據(jù)傳輸速率,由外部控制信號RD(或RD2)/WR(或WR2)來控制數(shù)據(jù)的讀/寫。為防止數(shù)據(jù)的空讀或?qū)懸绯?,用?biāo)志端EF和HF標(biāo)明FIFO狀態(tài)。這種內(nèi)外FIFO雙緩沖設(shè)計為大容量、高速數(shù)據(jù)傳輸提供更大的緩沖空間和時序匹配。 FPGA從FIFO1接收數(shù)據(jù)的同時,按照從PE口收到的Status[7:0]指令,判斷所接收數(shù)據(jù)的類型和職能,將數(shù)據(jù)傳輸?shù)较鄳?yīng)的測試調(diào)理和輸出電路,執(zhí)行相應(yīng)操作,判斷被測試對象的工作情況;如從PE端口收到的是自檢命令,則將測試數(shù)據(jù)回采,判斷系統(tǒng)自身工作情況。被測試對象反饋的信號和測試采集的數(shù)據(jù),自檢數(shù)據(jù)經(jīng)FPGA數(shù)據(jù)融合處理,從FIFO2傳到68013A的GPIF接收端口,所有CY7C68013A的內(nèi)部數(shù)據(jù)和端口操作全部由固件程序描述。