1 引 言
USB支持主計算機與許多可同時訪問的外設(shè)之間進(jìn)行數(shù)據(jù)交換,使外設(shè)的連接具有單一化、即插即用、熱插拔等特點,已成為個人筆記本電腦和臺式機的標(biāo)準(zhǔn)配置接口。Cypress公司的EZ-USB FX2是一款集成 USB2.0的微處理器,它集成了USB2.0收發(fā)器、SIE(串行接口引擎)、增強的8051微控 制器和可編程的外圍接口。每條指令占四個時鐘周期,在48M晶振下工作時,單指令周 期為83.3ns,執(zhí)行速度遠(yuǎn)快于標(biāo)準(zhǔn)的8051單片機。本文的數(shù)據(jù)傳輸模塊采用CY7C68013 高速芯片設(shè)計的USB接口可以實現(xiàn)外部的存儲測試電路數(shù)據(jù)的快速下載,并且上傳至計 算機保存,顯示,處理。這里介紹CY7C68013的GPIF接口功能及其在設(shè)計中的實現(xiàn)機理。
2 硬件連接設(shè)計
2.1系統(tǒng)連接框圖及硬件各部分功能
系統(tǒng)的連接框圖如下圖1所示:主要有計算機主機USB接口,程序存儲EEPROM,內(nèi)置MCU的USB接口芯片,電平轉(zhuǎn)換部分組成。
硬件各部分功能:
設(shè)備接口:實現(xiàn)模塊與測試電路的連接;
電平轉(zhuǎn)換:單片機的輸出和工作電壓為3.3V的電壓值,而設(shè)備的電壓是3.3~5V之間,電平轉(zhuǎn)換器件實現(xiàn)電壓值的匹配;
USB總線控制器:采用CY7C68013接口芯片的GPI接口模式完成控制信號的發(fā)送和16bit寬度數(shù)據(jù)的讀取;
串行EEPROM:存儲單片機固件,并被下載到單片機。
2.2硬件部分工作過程
硬件工作過程:
數(shù)據(jù)傳輸中核心器件是CY7C68013控制器芯片,主要完成USB的事務(wù)處理和單片機的控制功能。系統(tǒng)采用總線供電模式,數(shù)據(jù)傳輸模塊連接到計算機后,上電復(fù)位后,USB功能設(shè)備以全速的模式進(jìn)行設(shè)備的識別并枚舉。設(shè)計中將程序存儲到串行EEPROM中,主芯片首先檢測I2C總線上的EEPROM,判斷其首字節(jié)是0xC2,下載固件和USB的描述符標(biāo)裝入到自身的RAM中執(zhí)行,并且根據(jù)信息設(shè)置定義設(shè)備,完成了重枚舉。 CY7C68013包含8.5KB的片上RAM,可以用于“軟配置”,4KB的FIFO存儲器可以給4個端點共享。實現(xiàn)數(shù)據(jù)的高速讀取和傳輸,根據(jù)實際的需要,設(shè)計中配置了端點2采用三緩沖,使用3KB,端點4采用雙緩沖使用1KB。
采用GPIF主機模式,EZ-USB FX2由軟件編程輸出讀寫控制波形,F(xiàn)D[15:0]雙向數(shù)據(jù)總線12位與外部測試電路的靜態(tài)存儲器(SRAM)的相連,CTL[5:0]輸出可編程控制信號,如SRAM的讀寫選通信號等。數(shù)據(jù)在GPIF控制下讀入到CY7C68013后,在軟件的配置下,完成1024字節(jié)的最大封包,輸入計算機,由主機端的主控制器的串行接口引擎完成數(shù)據(jù)流串行化和解碼。
3 系統(tǒng)軟件設(shè)計
3.1GPIF接口模式
FX支持3種接口方式:端口、Slave FIFOs和可編程接口GPIF。
在“端口”模式下,所有I/O引腳都可作為8051的通用I/O口。在“從FIFO”模式下,外部邏輯或外部處理器直接與FX2端點FIFO相連。在這種模式下,GPIF 不被激活,這種模式下,外部主控端既可以是異步方式,也可以是同步方式,并可以為FX2 接口提供自己的獨立時鐘?!癎PIF主控”接口模式使用PORTB 和PORTD構(gòu)成通向四個FX2端點FIFO(EP2、EP4、EP6和EP8)的16位數(shù)據(jù)接口。GPIF 作為內(nèi)部的主控制器與FIFO直接相連, 并產(chǎn)生用戶可編程的控制信號與外部接口進(jìn)行通信。GPIF使用內(nèi)部時鐘。用戶將波形文件程序存在內(nèi)部RAM的程序存儲區(qū)中。
根據(jù)系統(tǒng)需要,設(shè)計中采用GPIF接口模式將CY7C68013設(shè)為FIFO READ和SINGLE READ兩種模式, 讓GPIF中的端點FIFO與USB通信中端點緩沖直接建立連接, 數(shù)據(jù)的傳送不再需要CPU 的參與。 根據(jù)外部測試電路的要求,適用于不同測試環(huán)境預(yù)設(shè)電路的CPLD編程信號,根據(jù)實際的測試信號的頻率采用不同的采樣頻率,設(shè)定不同的觸發(fā)電平,使用單次寫模式可以完成編程數(shù)據(jù)的輸出。針對的測試數(shù)據(jù)采用FIFO多次讀模式,實現(xiàn)數(shù)據(jù)的批量傳輸。設(shè)計中采用48M晶振,由于靜態(tài)存儲器的在使能信號(OE)的上升沿后推地址(Adr),而數(shù)據(jù)在總線上的保持時間至少需要85ns,因此在波形設(shè)計中數(shù)據(jù)有效時間應(yīng)該為4個時鐘周期,才能夠滿足地址有效的要求。靜態(tài)存儲器讀操作時序圖如圖2所示。
3.2固件程序設(shè)計
固件是指存儲在USB接口芯片或微控器中的代碼,用于控制硬件系統(tǒng)運行,各種USB標(biāo)準(zhǔn)請求的處理,以及USB閑置模式的電源管理服務(wù),實現(xiàn)主機與外設(shè)之間的通信和數(shù)據(jù)傳輸。主要是根據(jù)系統(tǒng)需求設(shè)計相應(yīng)的程序框架圖。Cypress 公司為FX2 固件開發(fā)提供了一個固件庫和固件框架,都是在KeilC51集成開發(fā)環(huán)境下開發(fā)的,固件庫提供了一些常量、數(shù)據(jù)結(jié)構(gòu)、函數(shù)來簡化用戶對芯片的使用。C 語言環(huán)境, 同時保留了匯編代碼高效、快速的特點,將代碼在KeilC51環(huán)境中進(jìn)行編譯。編譯通過后,將固件代碼下載到USB單片機中,就可以實現(xiàn)GPIF多字節(jié)讀等操作。在程序起始時,固件架構(gòu)會執(zhí)行下列步驟:
(1)首先,設(shè)置所有的內(nèi)部狀態(tài)變量。
(2)然后,調(diào)用用戶的初始設(shè)置函數(shù)TD_Init()。待返回后固件架構(gòu)就會設(shè)置USB接口成為未配置的狀態(tài),并且使能中斷。
(3)接下來,在1秒的間隔內(nèi)開始重新設(shè)備列舉(ReNumerate)設(shè)備,并直到設(shè)置(SETUP)封包收到端點0為止。
(4)一旦SETUP封包被檢測到,固件架構(gòu)就會啟動與PC主機合作的工作分配器。而這個工作分配器就會順序重復(fù)執(zhí)行下列的工作:
①調(diào)用用戶函數(shù)TD_Poll()。
②判斷標(biāo)準(zhǔn)設(shè)備請求是否決定。如果已決定,它將解析所收到的命令請求并加以響應(yīng)。
③判斷USB核心是否己經(jīng)報告了USB中止(suspend)事件。
用戶需要編寫TD_Poll()中的代碼完成特定的功能,判斷USB設(shè)備枚舉的狀態(tài)決定每次出發(fā)FIFO波形文件的次數(shù),數(shù)據(jù)短包的處理方式等,實現(xiàn)數(shù)據(jù)的讀取。
3.3 應(yīng)用程序的設(shè)計
應(yīng)用程序編寫的關(guān)鍵是如何實現(xiàn)從USB設(shè)備讀取指定數(shù)量的數(shù)據(jù)以及向其發(fā)送指定的數(shù)據(jù)。另外,還有向USB設(shè)備發(fā)送USB標(biāo)準(zhǔn)設(shè)備請求和特定的命令,包括廠商定義的命令和用戶自定義的命令。
大型的應(yīng)用程序大部分是很多模塊組成, 這些模塊完成相對獨立的功能,協(xié)作來完成整個軟件系統(tǒng)的工作。部分模塊的功能較為通用, 在構(gòu)造其它軟件系統(tǒng)時仍會被使用。測試系統(tǒng)的應(yīng)用程序采用VisualBasic6.0編寫,具有界面友好,操作簡單的特點。
動態(tài)鏈接庫文件的使用,需要在應(yīng)用程序的全局定義變量定義模塊中調(diào)用。dll文件, 應(yīng)用程序會在其所在目錄和系統(tǒng)目錄下查找。dll。在聲明過程中需要注意數(shù)據(jù)類型的匹配問題。
BulkRead Lib "DLL68013.dll" (ByVal pipenum As Long, ByRef rec As Integer, ByVal length As Integer) As Integer
Public Declare Function BulkWrite Lib "DLL68013.dll" (ByVal pipenum As Long, ByRef send As Byte, ByVal length As Integer) As Long
Public Declare Function OpenDevice Lib "DLL68013.dll" () As Integer
設(shè)計中結(jié)合實際需要,主要操作由動態(tài)鏈接庫文件完成,應(yīng)用程序的主要功能包括錯誤操作提示,接收由動態(tài)鏈接庫讀取的數(shù)據(jù)傳回主界面實現(xiàn)數(shù)據(jù)的格式轉(zhuǎn)換,數(shù)據(jù)的顯示、處理等。
利用Cypress公司的USB2.0專用接口芯片CY7C68013, 完成了采用GPIF模式的通用數(shù)據(jù)傳輸模塊的硬件與軟件設(shè)計。針對原有的人機界面需要,開發(fā)了動態(tài)鏈接庫,可以提供給不同語言編寫的主機端的應(yīng)用程序使用。
在系統(tǒng)測試中,利用信號發(fā)生器產(chǎn)生輸入信號為正弦波,頻率10Hz,測試系統(tǒng)的采樣頻率125Ksps,通過系統(tǒng)電路采樣,存儲,數(shù)據(jù)通過傳輸模塊傳入計算機,根據(jù)采集數(shù)據(jù)恢復(fù)的信號與原始信號比較,失真較小,噪聲水平低,采集數(shù)據(jù)的有效位數(shù)達(dá)到12位,實驗結(jié)果表明,實際的傳輸速率120Mbps,滿足了測試系統(tǒng)的數(shù)據(jù)傳輸要求。與實驗測試系統(tǒng)聯(lián)合調(diào)試,實際采樣波形如圖3所示。
芯片的可編程特性提高了系統(tǒng)工作的可靠性, 數(shù)據(jù)不會丟失,便于數(shù)據(jù)的傳輸和處理。另外,USB設(shè)備具有“熱插拔”和即插即用的特性具有較高的實用價值,設(shè)計的USB數(shù)據(jù)傳輸模塊適合于舊測試系統(tǒng)接口的改造。
-
收發(fā)器
+關(guān)注
關(guān)注
10文章
3376瀏覽量
105807 -
計算機
+關(guān)注
關(guān)注
19文章
7383瀏覽量
87643 -
微處理器
+關(guān)注
關(guān)注
11文章
2246瀏覽量
82274
發(fā)布評論請先 登錄
相關(guān)推薦
評論