袁 衛(wèi) 張冬陽(yáng)
摘 要:USB 2.0接口芯片F(xiàn)X2 CY7C68013工作在Slave FIFO模式下,討論了一種以FPGA為控制核心,對(duì)其內(nèi)部的FIFO進(jìn)行控制,以實(shí)現(xiàn)數(shù)據(jù)的高速傳輸。該系統(tǒng)模塊主要由USB固件程序和FPGA控制軟件組成,可應(yīng)用到需要通過(guò)USB 2.0接口進(jìn)行高速數(shù)據(jù)傳輸或采集系統(tǒng)中。實(shí)驗(yàn)結(jié)果表明:系統(tǒng)具有數(shù)據(jù)傳輸準(zhǔn)確、速度快等特點(diǎn)。
關(guān)鍵詞:USB 2.0;Slave FIFO模式;FPGA;高速接口
中圖分類號(hào):TP334.7 文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1004-373X(2009)01-161-03
Design of High Speed Interface FPGA and USB 2.0 Based on Verilog
YUAN Wei 1,2,ZHANG Dongyang 1
(1.College of Technical Physics,Xidian University,Xi′an,710071,China;
2.Weinan Teachers Univerisity,Weinan,714000,China)
Abstract:In this paper,high speed data transmission technology which used Slave FIFO pattern of USB 2.0 FX2 CY7C68013 under the control of FPGA is introduced.The system mainly consists of two parts of firmware design program and software of control of FPGA.It can be applied to those systems which need to transmit or acquire mass data quickly by USB 2.0 interface.The result of examination indicates that the system is exact in transmission and high in speed.
Keywords:USB 2.0;pattern of Slave FIFO;FPGA;high speed interface
0 引 言
USB (通用串行總線)是英特爾、微軟、IBM、康柏等公司1994年聯(lián)合制定的一種通用串行總線規(guī)范,它具有數(shù)據(jù)傳輸速度快,成本低,可靠性高,支持即插即用和熱插拔等優(yōu)點(diǎn),迅速得到廣泛應(yīng)用[1]。
在高速的數(shù)據(jù)采集或傳輸中,目前使用較多的都是采用USB 2.0接口控制器和FPGA或DSP實(shí)現(xiàn)的[2],本設(shè)計(jì)在USB 2.0接口芯片CY7C68013的Slave FIFO模式下,利用FPGA作為外部主控制器實(shí)現(xiàn)對(duì)FX2 USB內(nèi)部的FIFO進(jìn)行控制,以實(shí)現(xiàn)數(shù)據(jù)的高速傳輸。該模塊可普遍適用于基于USB 2.0接口的高速數(shù)據(jù)傳輸或采集中。
1 系統(tǒng)硬件模塊設(shè)計(jì)
1.1 系統(tǒng)硬件框圖
圖1中展示了Slave FIFO方式下FX2 USB和FPGA的典型連接。其中,FD[7..0]為8位雙向數(shù)據(jù)總線;FLAGA~FLAGC為FX2內(nèi)FIFO的標(biāo)志管腳,映射FIFO的當(dāng)前狀態(tài);SLCS為Slave FIFO的片選信號(hào);SLOE用于使能數(shù)據(jù)總線FD的輸出;FIFOADR[1..0]用于選擇和FD連接的端點(diǎn)緩沖區(qū)(00代表端點(diǎn)2,01代表端點(diǎn)4,10代表端點(diǎn)6,11代表端點(diǎn)8);SLRD和SLWR可分別作為FIFO的讀寫選通信號(hào)。
1.2 USB 2.0接口芯片CY7C68013
1.2.1 CY7C68013的結(jié)構(gòu)特點(diǎn)
Cypress公司的USB FX2是第一個(gè)包含USB 2.0的集成微控制器,它內(nèi)部集成了1個(gè)增強(qiáng)型的8051, 1個(gè)智能USB串行接口引擎,1個(gè)USB數(shù)據(jù)收發(fā)器, 3個(gè)8位I/O口,16位地址線,8.5 KB RAM和4 KB FIFO等。增強(qiáng)性8051內(nèi)核完全與標(biāo)準(zhǔn)8051兼容,而性能可達(dá)到標(biāo)準(zhǔn)8051的3倍以上[3]。其框圖如圖2所示。
1.2.2 CY7C68013的工作模式
CY7C68013有Ports模式、Slave FIFO和GPIF三種接口方式[4]。
Ports模式是一種最基本的數(shù)據(jù)傳輸方式,其數(shù)據(jù)傳輸主要由固件程序完成,需要CPU 的參與,因此數(shù)據(jù)傳輸速率比較低,適用于傳輸速率要求不高的場(chǎng)合。
Slave FIFO方式是從機(jī)方式,外部控制器,如 FPGA,可像對(duì)普通FIFO一樣對(duì)FX2的多層緩沖FIFO進(jìn)行讀寫。FX2內(nèi)部的FIFO提供所需的時(shí)序信號(hào)、握手信號(hào)(滿、空等)和輸出使能等。這里就是在Slave FIFO模式下實(shí)現(xiàn)USB 2.0接口和FPGA的數(shù)據(jù)通信。
可編程接口GPIF是主機(jī)方式,GPIF作為內(nèi)部主機(jī)控制端點(diǎn)FIFO,可以軟件編程讀寫控制波形,幾乎可以對(duì)任何8/16 b接口的控制器、存儲(chǔ)器和總線進(jìn)行數(shù)據(jù)的主動(dòng)讀寫,非常靈活[5]。
2 系統(tǒng)軟件模塊設(shè)計(jì)
2.1 USB固件程序設(shè)計(jì)
應(yīng)用中采用異步FIFO方式,使用內(nèi)部 48 MHz時(shí)鐘,自動(dòng)方式,固件程序采用Cypress公司提供的固件程序框架,在其初始化函數(shù)中添加了用戶配置代碼。該設(shè)計(jì)中異步自動(dòng)從屬FIFO數(shù)據(jù)傳輸?shù)某跏蓟a如下:
void TD_Init(void)//初始化函數(shù)
{
BREAKPT&=~bmBPEN;
Rwuen=TRUE;
CPUCS=((CPUCS&~bmCLKPSD)|bmCLKPSD1);//設(shè)定40 MHz主頻
IFCONFIG=0xE3; //設(shè)定IFCLK時(shí)鐘為48 MHz,提供對(duì)外輸出
EP1OUTCFG=0xA0;//配置端點(diǎn)1,OUT,批量傳輸
EP1INCFG=0xA0;
EP2CFG=0xA2;//配置端點(diǎn)2,OUT,批量傳輸,2倍緩沖
EP4CFG=0xA0;//配置端點(diǎn)4,OUT,批量傳輸,2倍緩沖
EP6CFG=0xE2;//配置端點(diǎn)6,IN,批量傳輸,2倍緩沖
EP8CFG=0xE0;//配置端點(diǎn)8,IN,批量傳輸,2倍緩沖
PINFLAGSAB=0x00;
//定義FLAGA為可編程級(jí)標(biāo)志,FLAGB為滿標(biāo)志,由FIFOADR[1:0]指定
PINFLAGSCD=0x00; //定義FLAGC為空標(biāo)志
WAKEUP=0xF4;
AUTOPTRSETUP|=0x01;
}
2.2 FPGA控制程序設(shè)計(jì)
CY7C68013A提供的端口FIFO的讀寫操作,與普通FIFO讀寫操作方式一樣[6]。CY7C68013A為每個(gè)端口提供了“空”標(biāo)志、“滿”標(biāo)志和“可編程級(jí)”標(biāo)志。FPGA檢測(cè)這些信號(hào),用于控制讀寫的過(guò)程。FPGA在完成這些端口FIFO的操作時(shí),采用Verilog HDL硬件描述語(yǔ)言實(shí)現(xiàn)了FIFO的讀寫時(shí)序,并在ALTERA公司提供的Quartus Ⅱ 8.0開發(fā)工具中綜合編譯并映射到FPGA中運(yùn)行。
2.2.1 從屬FIFO異步“讀”操作
實(shí)現(xiàn)異步從屬FIFO“讀”的狀態(tài)機(jī)如圖3所示。其狀態(tài)轉(zhuǎn)移進(jìn)程如下:
IDLE:當(dāng)“寫”事件發(fā)生時(shí),轉(zhuǎn)到狀態(tài)1。
狀態(tài)1:指向OUT FIFO,激活FIFOADR[1:0],轉(zhuǎn)向狀態(tài)2。
狀態(tài)2:激活SLOE,如果FIFO空標(biāo)志為“假”(FIFO不空),則轉(zhuǎn)向狀態(tài)3;否則停留在狀態(tài)2。
狀態(tài)3:激活SLOE,SLRD,傳送總線采樣數(shù)據(jù);撤銷激活SLRD(指針加1)和SLOE,轉(zhuǎn)向狀態(tài)4。
狀態(tài)4:如果有更多的數(shù)據(jù)要求,則轉(zhuǎn)向狀態(tài)2;否則轉(zhuǎn)向IDLE。
實(shí)現(xiàn)以上狀態(tài)機(jī)的仿真波形如圖4所示。
2.2.2 從屬FIFO異步“寫”操作
實(shí)現(xiàn)異步從屬FIFO“寫”的狀態(tài)機(jī)如圖5所示。其狀態(tài)轉(zhuǎn)移進(jìn)程如下:
IDLE:當(dāng)寫事件發(fā)生時(shí),轉(zhuǎn)到狀態(tài)1。
狀態(tài)1:指向IN FIFO,激活FIFOADR[1:0],轉(zhuǎn)向狀態(tài)2。
狀態(tài)2:如果FIFO滿標(biāo)志為“假”(FIFO不滿),則轉(zhuǎn)向狀態(tài)3;否則停留在狀態(tài)2。
狀態(tài)3:傳送總線驅(qū)動(dòng)數(shù)據(jù)。為一個(gè)IFCLK激活SLWR,轉(zhuǎn)向狀態(tài)4。
狀態(tài)4:如果有更多的數(shù)據(jù)要寫,則轉(zhuǎn)向狀態(tài)2;否則轉(zhuǎn)向IDLE。
用Quartus Ⅱ進(jìn)行仿真驗(yàn)證,其仿真波形如圖6所示,在此過(guò)程中USB_SLWR信號(hào)很重要,經(jīng)分析可知,本狀態(tài)機(jī)實(shí)現(xiàn)的FIFO寫控制信號(hào)完全正確。
x
3 實(shí)驗(yàn)結(jié)果
對(duì)傳輸?shù)臄?shù)據(jù)進(jìn)行驗(yàn)證,可通過(guò)FPGA編程生成 0~255的數(shù)據(jù)傳送至CY7C68013的EP6端點(diǎn),連續(xù)傳送兩次,然后利用EZ-USB Control Panel軟件測(cè)試所接收到的數(shù)據(jù),測(cè)試結(jié)果如圖7所示,可以看出,數(shù)據(jù)傳輸準(zhǔn)確無(wú)誤。
4 結(jié) 語(yǔ)
USB 2.0控制器CY7C68013已經(jīng)被廣泛應(yīng)用到許多數(shù)據(jù)傳輸領(lǐng)域,由于USB具有靈活的接口和可編程特性,大大簡(jiǎn)化了外部硬件的設(shè)計(jì),提高了系統(tǒng)可靠性[7]。
該設(shè)計(jì)可擴(kuò)展性好,已經(jīng)被應(yīng)用于數(shù)據(jù)傳輸與采集的板卡上,經(jīng)實(shí)際測(cè)試,沒有出現(xiàn)數(shù)據(jù)的誤碼等錯(cuò)誤,數(shù)據(jù)傳送正確,傳輸速率可達(dá)30 MHz/s以上,滿足設(shè)計(jì)要求。
參考文獻(xiàn)
[1]黃大勇,李鑒,張建正.基于USB 2.0接口的高速數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2007,30(24):69-72.
[2]譚安菊,龔彬.USB 2.0控制器CY7C68013與FPGA接口的VerilogHDL實(shí)現(xiàn)[J].電子工程師,2007,33(7):52-55.
[3] 錢鋒.EZUSB FX2單片機(jī)原理、編程及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2006.
[4]邊海龍.USB 2.0設(shè)備的設(shè)計(jì)與開發(fā)[M].北京:人民郵電出版社,2004.
[5]蕭世文.USB 2.0硬件設(shè)計(jì)[M].北京:清華大學(xué)出版社,2002.
[6]王祥,阮利華,周榮政.USB 2.0接口系統(tǒng)的設(shè)計(jì)與應(yīng)用[J].計(jì)算機(jī)工程與應(yīng)用研究,2005,41(6):98-100.
[7]蔣金濤,楊鳴.USB 2.0控制器EZ-USB FX2的性能特點(diǎn)及其數(shù)據(jù)傳輸實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用研究,2005,41(11):94-96.
[8]夏宇聞.復(fù)雜數(shù)字電路與系統(tǒng)的Verilog HDL設(shè)計(jì)技術(shù)[M].北京:北京航空航天大學(xué)出版社,1998.
[9]朱正平,寧百齊,袁洪,等.基于USB 2.0接口芯片F(xiàn)X2的高速數(shù)據(jù)采集板的設(shè)計(jì)實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2006,22(5):328-331.
[10][美]Michael D Ciletti.Verilog高級(jí)數(shù)字設(shè)計(jì)[M].張雅綺,李鏘,譯.北京:電子工業(yè)出版社,2006.
作者簡(jiǎn)介袁 衛(wèi) 男,1973年出生,陜西渭南人,西安電子科技大學(xué)博士研究生,渭南師范學(xué)院物理系講師。研究方向?yàn)楣怆姵上裣到y(tǒng)仿真與評(píng)估。
張冬陽(yáng) 男,1985年出生,江蘇淮安人,西安電子科技大學(xué)碩士研究生。研究方向?yàn)榍度胧较到y(tǒng)應(yīng)用。