多種USB接口技術在游戲手柄控制系統(tǒng)中的應用
趙敬,陳德煌
空軍第一航空學院航空電子工程系,河南464000
摘要:為了使游戲控制盒更加方便的與游戲手柄進行連接,很多游戲機廠家都開發(fā)了基于USB接口的游戲手柄。如果產(chǎn)品發(fā)生故障,廠家需要一個快捷的檢測系統(tǒng)判斷手柄和控制盒工作是否正常,然后再對產(chǎn)品進行維修。因此,將USB接口的手柄與本板卡連接,結(jié)合計算機上的測試程序模擬手柄,無疑是一種快速、準確的方法。本設計就是一款電視游戲的測試控制系統(tǒng)。經(jīng)過廠家測試,本系統(tǒng)完全可以滿足測試需求,完成了設計任務,并且具有很好的擴展性。
關鍵字:FPAG,USB.HOST
中圖分類號:TP336文獻標識碼:A
1 引言
在電視游戲發(fā)展過程中,游戲手柄和游戲控制盒之間的連接線通常是使用排線連接的。雖然,各個游戲廠家在工藝上有了很大的提高,但是排線容易折斷仍然是這類電子消費產(chǎn)品的常見故障。為了解決傳統(tǒng)連接方式的不足,現(xiàn)在的很多電視游戲廠家都偏愛使用USB總線作為兩者的連接線。USB總線的中文意思是通用串行總線,是1995年由康柏、微軟、IBM、DEC等公司推廣的一種新型的通信標準。該總線接口具有安裝方便、高帶寬、易于擴展等憂點,已逐漸成為現(xiàn)代數(shù)據(jù)傳輸?shù)陌l(fā)展趨勢。
通常USB接口的電視游戲手柄包含手柄和控制器兩部分??刂破骱图矣秒娨暯涌谶B接,手柄通過USB接口受控于控制盒。如果產(chǎn)品發(fā)生故障,廠家需要一個快捷的檢測系統(tǒng)判斷手柄和控制盒哪個發(fā)生故障,然后再對產(chǎn)品進行維修。這個設計的重點在于:①實現(xiàn)USB接口和計算機的通信,并且實現(xiàn)游戲手柄自定義命令的有效下發(fā)和實現(xiàn);②實現(xiàn)USB HOST接口設計并實現(xiàn)對游戲手柄的識別、枚舉和通信;③FPGA防止緩存器訪問沖突。在設計過程中,充分考慮以上設計要素,產(chǎn)品符合設計要求,滿足使用需要。
2 系統(tǒng)整體設計
本設計利用FPGA作為核心控制器件,采用Cypress公司的68013 USB控制芯片和SL811HS HOST控制芯片完成系統(tǒng)功能。
根據(jù)設計要求,控制板卡需要三個USB接口,分別為USB_A、USB_B和USB_HOST。其中,USB_A和USB_B是USB的USB從端口,采用Cypress公司的68013芯片完成與計算機和游戲控制器的通信;USB_HOST端口是主端口,采用SL811HS芯片,完成向下枚舉游戲手柄的功能。由于SL811HS是一個受控的可編程芯片,功能的實現(xiàn)需要外加控制器。
對于外控制器的選擇,主要根據(jù)板卡實際使用功能要求。在本設計中選用TMS320C5402 DSP芯片。這個系列DSP具有很高的操作靈活性和速度。它具有一個先進的修正哈佛結(jié)構(gòu)、專門硬件邏輯的CPU、片內(nèi)存儲器、片內(nèi)外設和專門指令集。C54x系列提供了許多外設接口:兩個通用I/O口、主機通信接口(HPI)、4種串口,可以滿足眾多領域的使用要求。
在本系統(tǒng)內(nèi),計算機上利用Microsoft Visual C++軟件開發(fā)系統(tǒng)應用程序,模擬手柄操作。這些操作代表的指令通過USB_A接口發(fā)送到FPAC內(nèi)部的緩存器內(nèi)。同時,游戲手柄也通過USB_HOST接口發(fā)送控制命令到FPGA內(nèi)部。此時,FPAG根據(jù)接收兩個命令的時間判斷發(fā)送啷個命令通過USB_B到游戲控制盒。
若計算機發(fā)送命令可以控制游戲的正常運行,則表明游戲控制盒無故障,否則控制盒存在故障;若計算機可以正??刂频那疤嵯拢直黄鹱饔茫瑒t表明手柄故障。從而,完成游戲手柄功能的檢測。
從系統(tǒng)設計上看,難點在于多種USB接口通信的實現(xiàn)和FPAG對于內(nèi)部緩存的控制和防沖突的時序設計。對于USB接口通信包括USB SI.AVE和USB HOST兩種模式,并且在USB SLAVE接口設計中,除了要滿足總線的基本請求,還要實現(xiàn)游戲手柄與控制盒之間自定義請求的響應,因此,USB SLAVE的固件程序設計存在著比較大的難度。
3 USB SLAVE從接口設計
USB接口控制芯片包含兩大類:一類是需要外置控制器的芯片,如PHILIP公司的D12芯片;還有一類是內(nèi)置控制器。Cypress Semiconductor公司的EZ - USB FX2是世界上第一款集成USB2.0的微處理器,它集成了USB2.0收發(fā)器、SIE(串行接口引擎)、增強的8051微控制器和可編程的外圍接口。FX2這種獨創(chuàng)性結(jié)構(gòu)可使數(shù)據(jù)傳輸率達到56Mbytes/s,即USB2.0允許的最大帶寬。在FX2中,智能SIE可以硬件處埋許多USBl.1和USB2.0協(xié)議,從而減少了開發(fā)時間和確保了USB的兼容性。GPIF(General Programmable Inter-face)和主/從端點FJFO(8位或16位數(shù)據(jù)總線)為ATA、UTOPIA、EPP、計算機MCIA和DSP等提供了簡單和無縫連接接口。
本系統(tǒng)采用CYC68013芯片,它只需要正確配置USB端口的幾個上拉電阻,計算機就可以識別到USB設備的接人,同時判斷此USB設備是高速的還是全速的。隨后,USB設備識別和通信就要依靠固件程序和驅(qū)動程序了。
3.1 驅(qū)動和通信程序
為了簡化和加速開發(fā)過程,利用Cypress公司提供的USB固件框架進行開發(fā)。固件框架主要包括初始化、處理標準USB設備請求以及USB掛起時的電源管理等。
固件框架完成一個簡單的任務循環(huán)。首先初始化內(nèi)部狀態(tài)變量和鏈接一個描述符表,然后調(diào)用用戶初始化程序TD_lnit()函數(shù)。TD_Init()函數(shù)主要用于初始化8051內(nèi)核以及設置USB端口FIFO和初始化68013其他寄存器。從該函數(shù)返回后,每隔Is進行一次設備枚舉,直到端點0接收到SETUP包,框架開始任務調(diào)度。TD_Poll()函數(shù)是用戶函數(shù),用戶操作基本在這個函數(shù)完成。
在完成基本請求響應后,固件程序進入一個循環(huán)程序等待計算機下發(fā)的游戲手柄自定義指令。通過對這款游戲USB接口自定義通信協(xié)議的分析和理解后,在程序中對自定義請求做出準確回應,實現(xiàn)計算機對游戲手柄的模擬。
3.2驅(qū)動和通信程序
要實現(xiàn)計算機模擬手柄功能,USB設備的驅(qū)動開發(fā)一向是設計的重點。一個穩(wěn)定精練的驅(qū)動是USB設備快速、無誤工作的基本保證。由于Cypress公司提供驅(qū)動僅支持USB設備工作在同步模式下,這樣如果端口數(shù)據(jù)與讀寫不能同步,數(shù)據(jù)管道就會堵塞,照成死機。因此,需要在驅(qū)動中增加異步傳輸模式,添加Startlo例程,避免數(shù)據(jù)丟失和系統(tǒng)死機。完成驅(qū)動程序設計的方法一般有三種:基于DDK開發(fā)、基于Windriver開發(fā)相基于DriverStudio開發(fā)。由于Windriver和DriverStudio對DDK中的函數(shù)進行了一定程度的封裝,它們開發(fā)難度都比直接利用DDK開發(fā)要小,但開發(fā)靈活性和驅(qū)動的效率不如DDK。本設計使用的驅(qū)動是利用DDK開發(fā)的。完成了USB固件和驅(qū)動開發(fā)以后,就可以比較方便地實現(xiàn)USB接口與計算機的通信??紤]到程序設計的通用性和日后升級,首先開發(fā)USB與計算機通信的DLL(動態(tài)鏈接庫)文件。利用VC++軟件提供的API函數(shù)CreateFile和CloseHandle實現(xiàn)USB設備的打開和關閉;DeviceIoControl函數(shù)實現(xiàn)設備數(shù)據(jù)的讀寫。
這樣系統(tǒng)設計中的USB SLAVE接口設計就可以實現(xiàn)了。計算機利用VC編寫的應用程序界面完全替代了手柄功能。另一個手柄通過USB HOST接口通過FPGA連接到游戲控制盒上。USB HOST接口設計采用Cypress SL811 HS芯片實現(xiàn)。
4 USB HOST主接口設計
USB接口雖然具有眾多優(yōu)點,但是它也有一個不容忽視的缺點:USB設備在任何通信中都是從設備,它不能主動請求通信開始,也不能終止任何通信。與USB設備相關的通信都是由某一個主設備發(fā)起和控制的,如計算機機或其他的HOST設備。無論是什么樣的USB控制芯片,它都是作為計算機的從設備出現(xiàn)的,即,它只能響應計算機請求,不能向計算機發(fā)送請求。而USB HUB芯片是一個主控芯片,它打破了計算機在USB通信中的主宰地位。通過HUB芯片可以完成USB設備的枚舉、通信,是新一代USB開發(fā)技術的發(fā)展趨
勢。目前,比較常用的USB HUB芯片是Cypress公司的SL811HS芯片。
SL811HS內(nèi)含主/從控制器,支持全速/低速數(shù)據(jù)傳輸,并能自動識別低速或全速設備。內(nèi)部有一個256字節(jié)的內(nèi)部RAM,可用做控制寄存器或數(shù)據(jù)緩沖器。SL811HS所提供的接口遵從USBl.1標準,可以與微處理器、微控制器和DSP相連。在本設計中,TMS320C5402 DSP控制HUB芯片。
采用TMS320C5402 DSP控制SL811HS芯片。HUB芯片的固件編寫與USB芯片的大不相同,它遵循USBl.1標準中第11章的HUB標準。首先,HUB以默認的端口0和地址0對下游USB設備進行枚舉,若枚舉成功,就為這個設備分配地扯,接著通過端口0和新地址獲取設備描述符和配置描述符等。若檢測到HUB類,獲取HUB端口數(shù)等其他特性后,再枚舉USB設備。若檢測到USB設備就直接對設備進行枚舉,完成通信。下面,集中討論HUB芯片的固件程序設計。
該系統(tǒng)USB固件程序主要由幾個部分組成:對SL811HS進行設置的初始化程序,這部分程序在系統(tǒng)復位后就立即執(zhí)行;發(fā)現(xiàn)USB設備接人的子程序,并判斷該設備是高速設備還是低速設備;對該USB設備進行枚舉。固件程序?qū)?/span>USB設備的配置涉及到資源分配和設置USB地址等。這些功能的完成都需要控制傳輸函數(shù)usbxfer實現(xiàn)。圖3是這個函數(shù)的主流程圖。
經(jīng)過多次的DSP與SL811HS的通信,完成了SL811HS對下流USB設備的枚舉和識別。然后,手柄通過有效地址與FPGA進行數(shù)據(jù)通信。
FPGA是系統(tǒng)設計的中樞部分,它相當于通信鏈路上的樞紐,因此FPGA內(nèi)部時序的有效運行是確保手柄和計算機指令有效傳達到控制盒的關鍵。對于FPGA的程序設計重點在于防止來自不同接口的游戲指令沖突,包括時序沖突和內(nèi)存沖突。在適當分配了DSP和USB接口和內(nèi)存后,利用控制邏輯進行時序控制,防止沖突產(chǎn)生。
5 結(jié)束語
本系統(tǒng)是一個對USB接口游戲硬件進行測試的平臺。經(jīng)過廠家測試,本系統(tǒng)完全可以滿足測試需求,完成了設計任務。并且,系統(tǒng)硬件是基于FPGA的“軟”設計,因此,通過軟件修改就可以滿足各個廠家不同的需要。同時,USB通信協(xié)議也是由軟件控制的,所以對于各個廠家對游戲手柄與控制器的通信協(xié)議各有不同造成的差異,也可以有效地解決。
-
- HL.13330 六臂內(nèi)波紋手輪
- 材質(zhì):膠木
-
- HL.41151鉸鏈
- 材質(zhì):不銹鋼202/304/316
-
- HL.12290星形把手
- 材質(zhì):ABS
-
- HL.23030 圓形旋入式油標
- 材質(zhì):聚碳酸酯
-
- HL.12010 把手(旋鈕)
- 材質(zhì):膠木
-
- HL.41147 鉸鏈
- 材質(zhì):鋅合金
-
- HL.14080 圓形拉手
- 材質(zhì):鋁合金+不銹鋼
-
- HL.14140 方形拉手
- 材質(zhì):工程塑料
-
- HL.11340 焊機搖手柄
- 材質(zhì):尼龍
上一篇:電鍍塑料汽車手柄件斷裂原因分析 下一篇:非拔插式噴砂潔牙機手柄的污染情況及對策