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