USB通信技術(shù)在自動測試系統(tǒng)中的應(yīng)用
圖2為GPIF方式硬件連接框圖,其中IFCLK是雙向時鐘信號,當配置為輸出時,IFCLK被FX2驅(qū)動為30 MHz/48MHz:當配置為輸入時,時鐘范圍為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的空、滿等。本文引用地址:http://www.bjwjmy.cn/article/202645.htm
整個系統(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ū)懸绯?,用標志端EF和HF標明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ù)和端口操作全部由固件程序描述。
4 固件程序設(shè)計
68013A固件負責(zé)處理主機各種USB設(shè)備請求,控制68013A與外圍電路FPGA進行數(shù)據(jù)傳輸,協(xié)調(diào)主機和FPGA 之間的通信。設(shè)計利用Cypress公司生產(chǎn)的EZ-USB固件程序框架,其中包括初始化、處理USB設(shè)備請求、中斷和USB電源管理等任務(wù),固件的編譯在KeilμVision2的集成開發(fā)環(huán)境中進行。68013A固件設(shè)計流程如圖3所示。該設(shè)計主要包括5個部分:fw.c(框架源文件)、 periph.c(用戶任務(wù)調(diào)度函數(shù)文件)、dscr.a(chǎn)51(描述符表)、USBJmpTb.OBJ(中斷跳轉(zhuǎn)表)、Ezusb.lib(EZ_USB 庫文件)。用戶僅需對dscr.a(chǎn)51和pe-riph.c修改文件中部分代碼即可完成USB設(shè)備的各種功能。periph.c文件通過調(diào)用任務(wù)分配、標準設(shè)備請求和中斷處理等函數(shù)來處理USB事件。其中主要修改TD_Init()和TD_Poll()兩個任務(wù)分配函數(shù)。TD_Init()函數(shù)用于負責(zé)初始化端點狀態(tài)變量,配置外圍I/O接口及設(shè)置端口初始值。TD_Poll()主要是初始化功能寄存器,并對設(shè)備進行重新列舉,完成主機對設(shè)備的配置任務(wù);執(zhí)行過程中響應(yīng)中斷,對中斷作相應(yīng)處理并控制外圍電路。
評論