天天看點

基于EZ_USB FX2的通用資料傳輸子產品設計

介紹了一種基于EZ_USB FX2單片機的通用資料傳輸子產品,讨論了USB控制器EZ-USB FX2(CY7C68013)的性能及傳輸方式并給出了該系統的硬體實作方案。通過使用Cypress公司提供的GPIF Designer工具開發GPIF(通用可程式設計接口),預先定義好波形描述符,通過激發GPIF功能來實作資料傳輸。

       1 引言

  在各種計算機外圍接口不斷推陳出新的今天,USB接口已漸漸成為現今個人計算機上最重要的接口之一,并以其傳輸速度快、使用友善和價格低廉等特點成為現今一般消費性電子産品和工業控制裝置上不可缺少的接口。USB接口在全速模式下傳輸速度可達到12Mb/s,高速模式則達到480Mb/s。

  FX2内嵌增強型8051微控制核心,并使用8051标準指令集,但指令的執行速度比标準的8051快5~10倍。因為該核心中的一個總線周期由4個時鐘周期組成,而标準8051的一個總線周期是由12個時鐘周期組成的,而且,它的時鐘頻率為24M或48M,而标準的8051的時鐘頻率為6M或12M。USB具有熱拔熱插功能,可以連接配接多個USB外圍裝置。本文正是基于這一新型總線技術,選用USB2.0晶片CY7C68013、Xilinx公司的FPGA XC2S50E和雙口RAM CY7C026組成一個通用的資料傳輸子產品,在任何一種資料采集系統中,經采集系統處理後的資料都可以存放在雙口RAM或其他存儲器中,再與該USB傳輸子產品相連就可以實作與PC主機的通信。這裡着重介紹CY7C68013的硬體接口設計及其GPIF功能。

  2 硬體設計

  2.1 系統框圖

基于EZ_USB FX2的通用資料傳輸子產品設計

圖1

       系統硬體框圖如圖1所示。主要由資料存儲器雙口RAM、FPGA、内置MCU的USB接口晶片和主機四部分組成。

  2.2 硬體工作過程

  對于資料傳輸子產品的核心器件USB2.0控制器CY7C68013,它既負責USB事務處理也兼具處理器的控制功能,以實作主機和USB裝置間的協定轉換。系統加電複位後,按照USB的規範應答,進行裝置識别和總線枚舉,即計算機檢測到有裝置插入,自動發出查詢請求,USB裝置回應這個請求,送出裝置的Vendor ID和Product ID,計算機根據這兩個ID加載相應的驅動程式,并将控制權交給8051,8051通過總線對系統晶片的各項參數進行初始化設定。

       CY7C68013包括1個8051處理器、1個串行接口引擎(SIE)、1個USB收發器、8.5KB片上RAM、4KB FIFO存儲器以及1個通用可程式設計接口(GPIF)。資料存儲器高速雙口靜态RAM CY7C026的規格為16K×16,存取速度小于25ns,具有真正的雙端口,可以同時進行資料存取,兩個端口具有獨立的控制信号線、位址線和資料線,另外通過主/從選擇可以友善地擴存儲容量和資料寬度。通過晶片的信号量标志器,左、右兩端口可以實作晶片資源的共享,CY7C026的資料傳輸主要通過“信箱”實作。所謂“信箱”指晶片将存儲器的高位址3FFF作為左端口的“信箱”,3FFE作為右端口的“信箱”。當左端口将資料寫入右端口的“信箱”時,右端口的INTR管腳就會産生中斷信号,即INTR管腳置低。右端口讀取該資料後中斷信号自動複位。本設計中可以在雙口RAM中任意選取0x1024~0x5119和0x5120~0x9215兩個緩沖區,位址空間均為4KB。雙口RAM中被寫入資料後,在右端口産生的中斷信号由FPGA接收。FPGA收到中斷信号後,立即對CY7C68013産生一個中斷請求信号,“詢問”USB是否準備好接收資料。若CY7C68013傳回的是“準備好”信号,則FPGA讀取左端口“信箱”中的資料。定義當讀取的資料為“00”時,FPGA從位址為0x1024的緩沖區開始讀數;當讀取的資料為“ff”時,從位址為0x5120的緩沖區開始讀數,實作了對資料的雙緩沖讀寫。由于雙口RAM的位址線為14根[13:0],GPIF隻有9根位址線[8:0],是以通過FPGA對USB的位址進行擴充,在USB産生握手信号給FPGA後,在GPIFADR[8]下降沿的觸發下,高位位址A[13:9]自動加1,進而組合成位址總線AB[13:0]。

      3 軟體設計

  3.1 GPIF接口模式

  CY7C68013有三種可用的接口模式:端口、GPIF主要和從FIFO。在“端口”模式下,所有I/O引腳都可作為8051的通用I/O口。在“從FIFO”模式下,外部邏輯或外部處理器直接與FX2端點FIFO相連。在這種模式下,GPIF不被激活,因為外部邏輯可直接控制FIFO。這種模式下,外部主要端既可以是異步方式,也可以是同步方式,并可以為FX2接口提供自己的獨立時鐘。

       “GPIF主要”接口模式使用PORTB和PORTD構成通向四個FX2端點FIFO(EP2、EP4、EP6和EP8)的16位資料接口。GPIF作為内部的主要制器與FIFO直接相連,具有6個可程式設計控制輸出信号(CTR0-5)和6個通用就緒輸入信号(RDY0-5),使用者可通過程式設計來決定控制信号的輸出狀态,亦即晶片在接收到什麼樣的就緒信号之後執行相應的操作。使用者程式存放在處于晶片内部RAM的波形描述器中[1]。由于GPIF的運作速度比FIFO快得多,是以其時序信号具有很高的程式設計分辨率。另外,GPIF既可以使用晶片内部時鐘(48MHz),也可以由外部振蕩電路提供[2]。是以,本系統使用GPIF模式的資料傳輸方案,隻要輸出信号和就緒信号作相應的組合,就可以實作多種複雜的控制時序[5]。

  3.2 GPIF波形代碼

  對GPIF的程式設計,可采用Cypress公司提供的基于Windows界面的開發工具GPIF Designer。它提供了一個非常友好的可視化視窗,在圖形界面上進行簡單的修改,就可以生成一個名為*.c關于波形描述符的源檔案。該源檔案主要由兩部分構成,即初始變量(WaveData、FlowStates和InitData)的定義和GPIFInit()的實作。在初始化函數中主要就是配置與GPIF相關的寄存器[3]。GPIF的程式存儲區一般情況下存儲4組波形,分别是Single Read、Single Write、Fifo Read、Fifo Write。從本系統需求出發,現将CY7C68013設為Fifo Read模式,讓GPIF中的Slave FIFO與USB通信中端點緩沖直接建立連接配接,資料的傳送不再需要CPU的參與[4]。雙口RAM的讀操作時序如圖2所示,在位址産生至少25ns後,資料線上的資料有效。本設計采用48MHz晶振,每個時鐘周期為21ns,是以在GPIF Designer的波形中設定資料有效時間為4個CLK,完全能夠滿足位址有效時間的要求。

基于EZ_USB FX2的通用資料傳輸子產品設計

圖2

  圖3為USB批量讀取雙口RAM中資料的波形描述。系統初始化時,在FPGA的控制下,雙口RAM的片選信号CE、輸出使能OE以及讀寫選通信号RW均被設為有效狀态。在S0時,位址自動加1,接着資料有效,持續約84ns後啟動下一次轉換。從圖上可以清楚地看出位址與資料之間的對應關系。

基于EZ_USB FX2的通用資料傳輸子產品設計

圖3

  3.3 固件程式設計

  固件程式代碼開發主要是根據系統需求設計相應的程式架構圖(如圖4所示),然後調用固件函數庫(Ezusb.lib)提供的函數進行程式設計。由于用到了GPIF,就必須對端點進行初始化和重新列舉,然後在任務處理器中設定任務。固件程式的編寫選用Keil公司的KeilC5l編譯器(V6.10)。它為805l微控制器的軟體開發提供了C語言環境,同時保留了彙編代碼高效、快速的特點,相對于傳統的彙編開發環境更加靈活、高效和易于使用。将代碼在KeilC51環境中進行編譯。編譯通過後,将固件代碼下載下傳到USB單片機中,就可以實作GPIF進行多位元組讀等操作。在程式開始時, 固件架構會執行下列步驟:

  (1) 設定所有的内部狀态變量,即設定起始的初值。

  (2) 調用使用者的初始設定函數TD_ Init ()。待傳回後,固件架構就會設定USB接口成為未配置的狀态,并且使能中斷。

  (3) 在1s的時間間隔内,開始重新裝置列舉(ReNumerate),直到設定(SETUP)封包收到端點0為止。

  (4) 當SETUP封包被檢測到後,固件架構就會啟動與其合作的工作配置設定器。而這個工作配置設定器就會按順序重複地執行下面的工作:

  ①調用使用者函數TD_ Poll()。

  ②是否決定标準裝置請求是未定(或等待決定)的。如果已決定,它将會分析所收到的指令請求,并且加以響應[6]。即檢測是否有标準的裝置請求,如果有,則執行指令并做出相應的操作。

  ③是否決定USB核心已經報告了USB中止(Suspend)事件。如果已決定,它會調用使用者函數TD_Suspend()。若取得成功的傳回,則測試回複(Resume)事件。反之,如果未檢測到,它将會把微處理器放入中止模式中。當回複事件被檢測到時,将調用使用者函數TD_Resume(),并且連續地跳回至步驟③。若從TD_Suspend()函數中未收到成功的傳回,再連續地跳至步驟③[6]。

基于EZ_USB FX2的通用資料傳輸子產品設計

圖4

      固件程式的載入有兩種方式。

      方式一:通過晶片的I2C總線連接配接外部的EEPROM,固件代碼事先通過燒寫器寫入EEPROM中,USB裝置上電運作時,通過I2C總線将EEPROM中固件代碼載入。EZ-USB支援外部EEPROM通過總線來下載下傳固件,這種方式使開發者可以從外圍硬體來下載下傳8051程式代碼,但是不利于在裝置開發階段使用。

      方式二:使用該晶片特有軟配置功能,将固件程式存儲在計算機中,當該裝置接入USB電纜時,由于EZ-USB具有重新枚舉的能力,是以在初始化枚舉以後,使用者隻需要通過Cypress公司提供的開發軟體UsbControlPanel中Download項,就可以将固件載入到控制晶片中。該方法完全是軟操作,不需要額外的硬體裝置,友善程式的修改調試。

     4 結束語

  利用Cypress公司的USB總線專用接口晶片CY7C68013,完成了基于GPIF的通用資料傳輸子產品的硬體與軟體設計。晶片的可程式設計特性提高了系統工作的可靠性,資料不會丢失,抗幹擾能力強,便于資料的傳輸和處理。另外,USB裝置具有“熱插拔”和即插即用的特性,使用友善,無需關機重新開機或打開機箱進行裝卸,具有良好的應用前景和很高的實用價值。

     參考文獻

      [1] 駱展鴻,馮穗力,葉梧.TMS320C67x的信号處理系統USB接口擴充實作[J].計算機工程與應用,2005,16:100~102

      [2] 曾水生,謝雲,易波,張忠波, LabVIEW實時資料采集系統的USB2.0接口實作[J].機床與液壓,2005,5:89~91

      [3] 周雲鋒,單甘霖,王鑫. FX2的波形描述符設計及應用[J].微計算機資訊,2005,21(2):158~159

      [4] 郭樂江,李強. 一種基于USB接口的高速雷達資料采集系統的設計與實作[J].計算技術與自動化,2005,24(4):50~52

      [5] Cypress Semiconductor Corporation, EZ_USB FX2 Technical Reference Manual, 2002, 12

      [6] 吳濤,韓偉.一種基于USB2. 0 接口的資料采集系統的設計方案與實作[J].空間電子技術,2004,2:54~59

繼續閱讀