USB通信技術在自動測試系統中的應用
圖2為GPIF方式硬件連接框圖,其中IFCLK是雙向時鐘信號,當配置為輸出時,IFCLK被FX2驅動為30 MHz/48MHz:當配置為輸入時,時鐘范圍為5~48 MHz;GPIFADR(9)信號為外部設備提供地址線,在總線上地址值是自增的;FD[15:0]是USB主機通過FX2和外部設備進行數據傳輸的數據線,可配置成8位或16位;CTL[5:0]為外設控制信號,如讀寫選通、使能等;RDY[5:0]為外設狀態檢測信號,如外部FIFO的空、滿等。本文引用地址:http://www.104case.com/article/202645.htm
整個系統的工作原理:主機通過應用軟件設置將相應的測試指令和數據經USB總線下載到68013A內部FIFO中,按照同件代碼配置相關寄存器、端口和中斷,實現與FIFO和FPGA的數據通信。外部使用兩片FIFO匹配數據傳輸速率,由外部控制信號RD(或RD2)/WR(或WR2)來控制數據的讀/寫。為防止數據的空讀或寫溢出,用標志端EF和HF標明FIFO狀態。這種內外FIFO雙緩沖設計為大容量、高速數據傳輸提供更大的緩沖空間和時序匹配。 FPGA從FIFO1接收數據的同時,按照從PE口收到的Status[7:0]指令,判斷所接收數據的類型和職能,將數據傳輸到相應的測試調理和輸出電路,執行相應操作,判斷被測試對象的工作情況;如從PE端口收到的是自檢命令,則將測試數據回采,判斷系統自身工作情況。被測試對象反饋的信號和測試采集的數據,自檢數據經FPGA數據融合處理,從FIFO2傳到68013A的GPIF接收端口,所有CY7C68013A的內部數據和端口操作全部由固件程序描述。
4 固件程序設計
68013A固件負責處理主機各種USB設備請求,控制68013A與外圍電路FPGA進行數據傳輸,協調主機和FPGA 之間的通信。設計利用Cypress公司生產的EZ-USB固件程序框架,其中包括初始化、處理USB設備請求、中斷和USB電源管理等任務,固件的編譯在KeilμVision2的集成開發環境中進行。68013A固件設計流程如圖3所示。該設計主要包括5個部分:fw.c(框架源文件)、 periph.c(用戶任務調度函數文件)、dscr.a51(描述符表)、USBJmpTb.OBJ(中斷跳轉表)、Ezusb.lib(EZ_USB 庫文件)。用戶僅需對dscr.a51和pe-riph.c修改文件中部分代碼即可完成USB設備的各種功能。periph.c文件通過調用任務分配、標準設備請求和中斷處理等函數來處理USB事件。其中主要修改TD_Init()和TD_Poll()兩個任務分配函數。TD_Init()函數用于負責初始化端點狀態變量,配置外圍I/O接口及設置端口初始值。TD_Poll()主要是初始化功能寄存器,并對設備進行重新列舉,完成主機對設備的配置任務;執行過程中響應中斷,對中斷作相應處理并控制外圍電路。
評論