登錄  |  注冊
河北華利機械配件有限公司

多種USB接口技術在游戲手柄控制系統中的應用

2013/7/11 14:25:28

 

    趙敬,陳德煌

    空軍第一航空學院航空電子工程系,河南464000

摘要:為了使游戲控制盒更加方便的與游戲手柄進行連接,很多游戲機廠家都開發了基于USB接口的游戲手柄。如果產品發生故障,廠家需要一個快捷的檢測系統判斷手柄和控制盒工作是否正常,然后再對產品進行維修。因此,將USB接口的手柄與本板卡連接,結合計算機上的測試程序模擬手柄,無疑是一種快速、準確的方法。本設計就是一款電視游戲的測試控制系統。經過廠家測試,本系統完全可以滿足測試需求,完成了設計任務,并且具有很好的擴展性。

關鍵字:FPAG,USBHOST

中圖分類號:TP336文獻標識碼:A

引言

    在電視游戲發展過程中,游戲手柄和游戲控制盒之間的連接線通常是使用排線連接的。雖然,各個游戲廠家在工藝上有了很大的提高,但是排線容易折斷仍然是這類電子消費產品的常見故障。為了解決傳統連接方式的不足,現在的很多電視游戲廠家都偏愛使用USB總線作為兩者的連接線。USB總線的中文意思是通用串行總線,是1995年由康柏、微軟、IBM、DEC等公司推廣的一種新型的通信標準。該總線接口具有安裝方便、高帶寬、易于擴展等憂點,已逐漸成為現代數據傳輸的發展趨勢。

    通常USB接口的電視游戲手柄包含手柄和控制器兩部分??刂破骱图矣秒娨暯涌谶B接,手柄通過USB接口受控于控制盒。如果產品發生故障,廠家需要一個快捷的檢測系統判斷手柄和控制盒哪個發生故障,然后再對產品進行維修。這個設計的重點在于:①實現USB接口和計算機的通信,并且實現游戲手柄自定義命令的有效下發和實現;②實現USB HOST接口設計并實現對游戲手柄的識別、枚舉和通信;③FPGA防止緩存器訪問沖突。在設計過程中,充分考慮以上設計要素,產品符合設計要求,滿足使用需要。

系統整體設計

    本設計利用FPGA作為核心控制器件,采用Cypress公司的68013 USB控制芯片和SL811HS HOST控制芯片完成系統功能。

    根據設計要求,控制板卡需要三個USB接口,分別為USB_A、USB_BUSB_HOST。其中,USB_AUSB_BUSBUSB從端口,采用Cypress公司的68013芯片完成與計算機和游戲控制器的通信;USB_HOST端口是主端口,采用SL811HS芯片,完成向下枚舉游戲手柄的功能。由于SL811HS是一個受控的可編程芯片,功能的實現需要外加控制器。

    對于外控制器的選擇,主要根據板卡實際使用功能要求。在本設計中選用TMS320C5402 DSP芯片。這個系列DSP具有很高的操作靈活性和速度。它具有一個先進的修正哈佛結構、專門硬件邏輯的CPU、片內存儲器、片內外設和專門指令集。C54x系列提供了許多外設接口:兩個通用I/O口、主機通信接口(HPI)、4種串口,可以滿足眾多領域的使用要求。

    在本系統內,計算機上利用Microsoft Visual C++軟件開發系統應用程序,模擬手柄操作。這些操作代表的指令通過USB_A接口發送到FPAC內部的緩存器內。同時,游戲手柄也通過USB_HOST接口發送控制命令到FPGA內部。此時,FPAG根據接收兩個命令的時間判斷發送啷個命令通過USB_B到游戲控制盒。

若計算機發送命令可以控制游戲的正常運行,則表明游戲控制盒無故障,否則控制盒存在故障;若計算機可以正??刂频那疤嵯?,手柄不起作用,則表明手柄故障。從而,完成游戲手柄功能的檢測。

    從系統設計上看,難點在于多種USB接口通信的實現和FPAG對于內部緩存的控制和防沖突的時序設計。對于USB接口通信包括USB SIAVEUSB HOST兩種模式,并且在USB SLAVE接口設計中,除了要滿足總線的基本請求,還要實現游戲手柄與控制盒之間自定義請求的響應,因此,USB SLAVE的固件程序設計存在著比較大的難度。

3  USB SLAVE從接口設計

USB接口控制芯片包含兩大類:一類是需要外置控制器的芯片,如PHILIP公司的D12芯片;還有一類是內置控制器。Cypress Semiconductor公司的EZ - USB FX2是世界上第一款集成USB2.0的微處理器,它集成了USB2.0收發器、SIE(串行接口引擎)、增強的8051微控制器和可編程的外圍接口。FX2這種獨創性結構可使數據傳輸率達到56Mbytes/s,即USB2.0允許的最大帶寬。在FX2中,智能SIE可以硬件處埋許多USBl.1USB2.0協議,從而減少了開發時間和確保了USB的兼容性。GPIF(General Programmable Inter-face)和主/從端點FJFO8位或16位數據總線)為ATA、UTOPIA、EPP、計算機MCIADSP等提供了簡單和無縫連接接口。   

本系統采用CYC68013芯片,它只需要正確配置USB端口的幾個上拉電阻,計算機就可以識別到USB設備的接人,同時判斷此USB設備是高速的還是全速的。隨后,USB設備識別和通信就要依靠固件程序和驅動程序了。

3.1  驅動和通信程序

    為了簡化和加速開發過程,利用Cypress公司提供的USB固件框架進行開發。固件框架主要包括初始化、處理標準USB設備請求以及USB掛起時的電源管理等。

    固件框架完成一個簡單的任務循環。首先初始化內部狀態變量和鏈接一個描述符表,然后調用用戶初始化程序TD_lnit()函數。TD_Init()函數主要用于初始化8051內核以及設置USB端口FIFO和初始化68013其他寄存器。從該函數返回后,每隔Is進行一次設備枚舉,直到端點0接收到SETUP包,框架開始任務調度。TD_Poll()函數是用戶函數,用戶操作基本在這個函數完成。

    在完成基本請求響應后,固件程序進入一個循環程序等待計算機下發的游戲手柄自定義指令。通過對這款游戲USB接口自定義通信協議的分析和理解后,在程序中對自定義請求做出準確回應,實現計算機對游戲手柄的模擬。

3.2驅動和通信程序

    要實現計算機模擬手柄功能,USB設備的驅動開發一向是設計的重點。一個穩定精練的驅動是USB設備快速、無誤工作的基本保證。由于Cypress公司提供驅動僅支持USB設備工作在同步模式下,這樣如果端口數據與讀寫不能同步,數據管道就會堵塞,照成死機。因此,需要在驅動中增加異步傳輸模式,添加Startlo例程,避免數據丟失和系統死機。完成驅動程序設計的方法一般有三種:基于DDK開發、基于Windriver開發相基于DriverStudio開發。由于WindriverDriverStudioDDK中的函數進行了一定程度的封裝,它們開發難度都比直接利用DDK開發要小,但開發靈活性和驅動的效率不如DDK。本設計使用的驅動是利用DDK開發的。完成了USB固件和驅動開發以后,就可以比較方便地實現USB接口與計算機的通信??紤]到程序設計的通用性和日后升級,首先開發USB與計算機通信的DLL(動態鏈接庫)文件。利用VC++軟件提供的API函數CreateFileCloseHandle實現USB設備的打開和關閉;DeviceIoControl函數實現設備數據的讀寫。

    這樣系統設計中的USB SLAVE接口設計就可以實現了。計算機利用VC編寫的應用程序界面完全替代了手柄功能。另一個手柄通過USB HOST接口通過FPGA連接到游戲控制盒上。USB HOST接口設計采用Cypress SL811 HS芯片實現。

4  USB HOST主接口設計

    USB接口雖然具有眾多優點,但是它也有一個不容忽視的缺點:USB設備在任何通信中都是從設備,它不能主動請求通信開始,也不能終止任何通信。與USB設備相關的通信都是由某一個主設備發起和控制的,如計算機機或其他的HOST設備。無論是什么樣的USB控制芯片,它都是作為計算機的從設備出現的,即,它只能響應計算機請求,不能向計算機發送請求。而USB HUB芯片是一個主控芯片,它打破了計算機在USB通信中的主宰地位。通過HUB芯片可以完成USB設備的枚舉、通信,是新一代USB開發技術的發展趨

勢。目前,比較常用的USB HUB芯片是Cypress公司的SL811HS芯片。

    SL811HS內含主/從控制器,支持全速/低速數據傳輸,并能自動識別低速或全速設備。內部有一個256字節的內部RAM,可用做控制寄存器或數據緩沖器。SL811HS所提供的接口遵從USBl.1標準,可以與微處理器、微控制器和DSP相連。在本設計中,TMS320C5402 DSP控制HUB芯片。

    采用TMS320C5402 DSP控制SL811HS芯片。HUB芯片的固件編寫與USB芯片的大不相同,它遵循USBl.1標準中第11章的HUB標準。首先,HUB以默認的端口0和地址0對下游USB設備進行枚舉,若枚舉成功,就為這個設備分配地扯,接著通過端口0和新地址獲取設備描述符和配置描述符等。若檢測到HUB類,獲取HUB端口數等其他特性后,再枚舉USB設備。若檢測到USB設備就直接對設備進行枚舉,完成通信。下面,集中討論HUB芯片的固件程序設計。

    該系統USB固件程序主要由幾個部分組成:對SL811HS進行設置的初始化程序,這部分程序在系統復位后就立即執行;發現USB設備接人的子程序,并判斷該設備是高速設備還是低速設備;對該USB設備進行枚舉。固件程序對USB設備的配置涉及到資源分配和設置USB地址等。這些功能的完成都需要控制傳輸函數usbxfer實現。圖3是這個函數的主流程圖。

    經過多次的DSPSL811HS的通信,完成了SL811HS對下流USB設備的枚舉和識別。然后,手柄通過有效地址與FPGA進行數據通信。

    FPGA是系統設計的中樞部分,它相當于通信鏈路上的樞紐,因此FPGA內部時序的有效運行是確保手柄和計算機指令有效傳達到控制盒的關鍵。對于FPGA的程序設計重點在于防止來自不同接口的游戲指令沖突,包括時序沖突和內存沖突。在適當分配了DSPUSB接口和內存后,利用控制邏輯進行時序控制,防止沖突產生。

結束語

    本系統是一個對USB接口游戲硬件進行測試的平臺。經過廠家測試,本系統完全可以滿足測試需求,完成了設計任務。并且,系統硬件是基于FPGA的“軟”設計,因此,通過軟件修改就可以滿足各個廠家不同的需要。同時,USB通信協議也是由軟件控制的,所以對于各個廠家對游戲手柄與控制器的通信協議各有不同造成的差異,也可以有效地解決。

 

華利膠木手輪