張錦鵬 趙建軍 唐海峰 趙 恩
(昆明理工大學(xué)理學(xué)院 昆明 650500)
基于USB接口多位數(shù)據(jù)格式的高速傳輸系統(tǒng)?
張錦鵬 趙建軍 唐海峰 趙 恩
(昆明理工大學(xué)理學(xué)院 昆明 650500)
該設(shè)計(jì)實(shí)現(xiàn)了一種基于USB2.0接口的數(shù)據(jù)傳輸系統(tǒng)。該系統(tǒng)由FPGA產(chǎn)生一個(gè)35位自加到250清0的計(jì)數(shù)器,實(shí)現(xiàn)通過USB把計(jì)數(shù)器的數(shù)值傳送到上位機(jī)的功能。該設(shè)計(jì)采用的FPGA芯片為Altera公司的CycloneII EP2C5Q208C8N,USB芯片為Cypress公司EZ-USB系列的CY7C68013A。通過Quartus II軟件,Keil軟件,Cypress控制臺進(jìn)行USB接口多位數(shù)據(jù)傳輸系統(tǒng)的設(shè)計(jì)。該系統(tǒng)可用于高精度、高速度、低成本的批量數(shù)據(jù)傳輸。
FPGA;USB;數(shù)據(jù)傳輸;Cypress
USB又稱為串行數(shù)據(jù)接口,具有高速率傳輸數(shù)據(jù),即插即用的優(yōu)點(diǎn)。USB2.0標(biāo)準(zhǔn)規(guī)定其傳輸速率高達(dá)480Mbps,它已經(jīng)成為目前電腦中的標(biāo)準(zhǔn)擴(kuò)展接口[1~3]。本系統(tǒng)設(shè)計(jì)的目的是通過 FPGA 產(chǎn)生一個(gè)35位自加到250清零的計(jì)數(shù)器,實(shí)現(xiàn)通過USB把計(jì)數(shù)器的數(shù)值傳送到上位機(jī),最終實(shí)現(xiàn)一種基于CY7C68013A的USB數(shù)據(jù)傳輸系統(tǒng)。
本設(shè)計(jì)通過FPGA產(chǎn)生一個(gè)35位自加到250清零的計(jì)數(shù)器,通過USB把計(jì)數(shù)器的數(shù)值傳送到上位機(jī)。因?yàn)閁SB的數(shù)據(jù)位寬為16,計(jì)數(shù)器為35位,因此需要分開傳送。圖1所示為本設(shè)計(jì)的RTL(Register Transfer Level)視圖。
圖1中的datagen產(chǎn)生一個(gè)cnt的35位計(jì)數(shù)器,由于要分三次傳送所以計(jì)數(shù)器的時(shí)鐘驅(qū)動(dòng)為USB時(shí)鐘的三分頻。USB模塊為USB的傳輸模塊,通過USB傳輸?shù)缴衔粰C(jī)的功能實(shí)現(xiàn)就在此模塊中實(shí)現(xiàn)。其中圖2所示為USB模塊設(shè)計(jì)的狀態(tài)機(jī)流程圖。
EZ-USB系列的USB控制器主要通過兩種模式進(jìn)行傳輸:Slave FIFO和General ProgrammableInterface(GPIF)。在本文中就是通過Slave FIFO模式下實(shí)現(xiàn)USB數(shù)據(jù)傳輸[4]。
圖1 系統(tǒng)RTL視圖
圖2 狀態(tài)機(jī)流程圖
盡管一些USB的設(shè)備可以使用EZ-USB中的CPU直接處理USB數(shù)據(jù),但大部分情況只是將EZ-USB作為USB與外部處理數(shù)據(jù)邏輯的一種管道。USB數(shù)據(jù)流通過EZ-USB內(nèi)部的端點(diǎn)FIFOs在主機(jī)和從機(jī)中流動(dòng)。對于外部邏輯而言,這些端點(diǎn)FIFOs提供了時(shí)鐘信號、握手信號、讀寫使能和輸出使能等[5]。而其端點(diǎn)FIFO由外部邏輯產(chǎn)生,這就是Slave FIFO模式即從模式。
本設(shè)計(jì)所采用的Slave FIFO模式設(shè)計(jì),也就是對FIFO進(jìn)行寫操作把數(shù)據(jù)傳送到上位機(jī)。當(dāng)有寫事件發(fā)生時(shí),進(jìn)入WRITE狀態(tài),寫入cnt[15:0],若FIFO非滿則跳轉(zhuǎn)WRITE_1狀態(tài),不然跳回IDLE狀態(tài);在WRITE_1狀態(tài),寫入cnt[34:32],其余高位補(bǔ)零,若FIFO非滿則跳轉(zhuǎn)到WRITE_2狀態(tài),不然跳回 IDLE狀態(tài);在 WRITE_2狀態(tài),寫入 cnt[31:16],若FIFO非跳轉(zhuǎn)到WRITE狀態(tài),則跳回IDLE狀態(tài)[6]。其中注意,WRITE_1狀態(tài)和WRITE_2狀態(tài)傳輸?shù)腸nt位數(shù)不能交換。
本設(shè)計(jì)采用FPGA作為控制器件,其控制USB接口芯片CY7C68013A。下圖3為USB器件工作在Slave FIFO模式下時(shí)USB和FPGA的典型電路連接圖。
設(shè)計(jì)是采用同步的方式,在IFCLK為上升沿的時(shí)候SLRD,SLWR有效[7]。當(dāng)IFCLK為上升沿時(shí)SLWR有效,F(xiàn)D的數(shù)據(jù)寫入FIFO中。當(dāng)IFCLK為上升沿時(shí)SLRD有效,F(xiàn)IFO中的數(shù)據(jù)讀出。其中SLWR 和 SLRD 為低有效[8~10]。
本設(shè)計(jì)中所采用的控制器件FPGA芯片為Al?tera公司的CycloneII EP2C5Q208C8N,USB芯片為Cypress公司的 EZ-USB 系列的 CY7C68013A[11]。其中EP2C5Q208C8N芯片擁有4608個(gè)邏輯單元,片上RAM共計(jì)119808 bits,13個(gè)18*18硬件乘法器,2個(gè)高性能PLL以及多達(dá)142個(gè)用戶自定義IO[12]。板上提供了大容量的SDRAM和Flash ROM等存儲(chǔ)單元。標(biāo)準(zhǔn)的2.54mm間距的擴(kuò)展插座供用戶方便使用。電源管理模塊只需要外接DC-5V電源即可。該芯片本身具有低成本、高性能、低功耗等優(yōu)點(diǎn),因此這里選用該器件作為控制器件。
該USB芯片CY7C68013A是Cypress半導(dǎo)體公司EZ-USB系列的一款USB控制器芯片[13]。CY7C68013A芯片具有以下幾個(gè)顯著特點(diǎn):內(nèi)部集成工業(yè)標(biāo)準(zhǔn)的8051處理器[14];全USB吞吐量;基于RAM的架構(gòu)設(shè)計(jì)允許無限制的配置和升級;自動(dòng)處理USB協(xié)議,為用戶設(shè)計(jì)大大簡化了代碼。其中圖4所示為EZ-USB系列芯片的內(nèi)部框架圖??梢栽趫D4中明顯看到該系列芯片內(nèi)部集成了48MHz的8051處理器,外部具有PHY(物理層)接口。在設(shè)計(jì)中比較關(guān)注的就是8051的處理器的配置,對USB寄存器的配置,對FIFOs的讀寫操作。在CY7C68013A中具有4片F(xiàn)IFO,每一片F(xiàn)IFO對應(yīng)一個(gè)端點(diǎn)EP。實(shí)現(xiàn)USB的傳輸工作主要就是對這4片F(xiàn)IFO進(jìn)行讀寫操作[15]。
圖4 EZ-USB系列芯片的內(nèi)部框架圖
在進(jìn)行USB傳輸設(shè)計(jì)工作時(shí),要先對CY7C68013A內(nèi)部的寄存器進(jìn)行配置,該工作是必不可少的,目地是配置USB的一些工作方式[16]。
本設(shè)計(jì)采用Slave FIFO的模式。圖5所示為Slave FIFO在EZ-USB系統(tǒng)中的角色。
圖5 Slave FIFO在EZ-USB系統(tǒng)中的角色
其中在Slave FIFOs中可以看見有EP2,EP4,EP6,EP8四片F(xiàn)IFO。IFCLK為USB的內(nèi)部時(shí)鐘信號,本設(shè)計(jì)采用48MHz。其中FLAGA,B,C,D為在固件設(shè)計(jì)中的標(biāo)志位,由固件程序所確定。SLOE為輸出使能信號。SLRD為讀信號,SLWR為寫信號。FIFO的選擇通過FIFOADR[1:0]來確定。當(dāng)FIFOADR為00時(shí)選擇EP2;01時(shí)選擇EP4;10時(shí)選擇 EP6;11 時(shí)選擇EP8[17]。FD[15:0]表示為 16位的USB數(shù)據(jù)信號,也可以通過固件程序選擇為8位的數(shù)據(jù)信號。PKTEND表示為一個(gè)包結(jié)束的信號。
在進(jìn)行USB的設(shè)計(jì)中,主要分別對USB內(nèi)部固件程序的編寫和對FPGA的USB接口設(shè)計(jì)[3]。完成了這兩步后就可以利用Cypress公司官方提供的Cyconsole EZ-USB上位機(jī)軟件對USB的數(shù)據(jù)進(jìn)行接收。
在對USB的芯片介紹中,CY7C68013A內(nèi)部集成了一個(gè)51單片機(jī)的內(nèi)核作為處理器,并且有許多對USB功能協(xié)議控制的寄存器。對固件程序的設(shè)計(jì)簡單而言就是對USB內(nèi)部寄存器的配置,通過對這些寄存器的配置來對USB的模式、傳輸位數(shù)、端點(diǎn)的接收情況等進(jìn)行設(shè)置。其中圖6為對固件程序設(shè)計(jì)的流程圖。
圖6 固件程序流程圖
CY7C68013A內(nèi)部的寄存器都是8位,其中TD_Init()函數(shù)是對CY7C68013A芯片進(jìn)行初始化工作[18],即CPU的工作頻率設(shè)置、USB的傳輸模式設(shè)置、FLAGA、B、C、D管腳進(jìn)行設(shè)置以及對端點(diǎn)操作的設(shè)置等。TD_Poll()主要對數(shù)據(jù)進(jìn)行搬移,循環(huán)調(diào)用。對固件程序的修改主要也就是修改TD_Init()和TD_Poll()兩個(gè)函數(shù)[19~21]。
1)計(jì)數(shù)器通過USB傳送到上位機(jī)
在FPGA內(nèi)部產(chǎn)生一個(gè)16位計(jì)數(shù)器,計(jì)數(shù)到250時(shí)清零重新計(jì)數(shù)。通過USB傳送到上位機(jī)。采用寫FIFO的方式進(jìn)行設(shè)計(jì),設(shè)計(jì)具體方法同步寫FIFO設(shè)計(jì)中,F(xiàn)PGA內(nèi)部產(chǎn)生1個(gè)16位遞增計(jì)數(shù)器寫入FX2 FIFO中,并通過FX2發(fā)送到上位機(jī),如果FX2內(nèi)部FIFO滿,則計(jì)數(shù)器停止計(jì)數(shù),非滿則計(jì)數(shù)并寫入FX2的FIFO中[22]。圖7為設(shè)計(jì)的仿真波形。
圖7 系統(tǒng)仿真波形
當(dāng)u_flagb為高時(shí)進(jìn)入寫狀態(tài),u_slwr為低有效開始寫入FIFO。當(dāng)u_flagb為低時(shí)進(jìn)入IDLE狀態(tài)停止寫,此時(shí)u_slwr為高。在此情況下data_out數(shù)據(jù)一直保存不變直到u_flagb發(fā)生變化。下載到FPGA開發(fā)板,用Cypress控制臺進(jìn)行測試。本設(shè)計(jì)把FPGA的數(shù)據(jù)傳送到EP6,其他端點(diǎn)并不使用。所以這邊只用EP6進(jìn)行接收數(shù)據(jù)即可[23]。
通過圖7所示可以看出實(shí)驗(yàn)達(dá)到了預(yù)期效果,由FPGA內(nèi)部產(chǎn)生的一個(gè)計(jì)數(shù)器通過USB傳送到了上位機(jī)。
2)異步FIFO的測試
通過異步FIFO改變使頻率相匹配,異步FIFO的RTL視圖如圖8所示。
圖8 異步FIFO的RTL視圖
其中wr_clk為寫時(shí)鐘,wr_en為寫使能信號;rd_clk為讀時(shí)鐘,rd_en為讀使能信號;din為輸入管腳;dout為FIFO輸出管腳;empty為空標(biāo)志位;full為滿標(biāo)志位。rst為復(fù)位信號,此為低電平有效。圖9所示為FIFO的仿真波形圖。
圖9 FIFO的仿真波形圖
其中clk_1為clk的兩分頻,cnt為0~9的計(jì)數(shù)器,dout為FIFO的輸出信號。利用異步FIFO改變數(shù)據(jù)輸入輸出的頻率大小。在此注意FIFO的rst為低電平有效,wr和rd信號必須作為output不然波形無法出現(xiàn)。由圖9可以看出使數(shù)據(jù)的頻率發(fā)生了變化達(dá)到了預(yù)期的效果。
3)三分頻的測試
把頻率clk進(jìn)行三分頻測試,設(shè)計(jì)兩位的計(jì)數(shù)器記到2時(shí)清零。當(dāng)計(jì)數(shù)到2時(shí)clk_out為1,其余的為0。由于是時(shí)序邏輯,所以得到的結(jié)果是在00時(shí)clk_out為0。圖10所示為仿真波形。
圖10 仿真波形
其中clk為主頻,clk_out為三分頻后的頻率。由圖10所示可以看出clk_out的時(shí)鐘為clk的三倍,可得設(shè)計(jì)正確。
本設(shè)計(jì)的USB固件程序利用官方提供的固件庫,把EP6改成IN,大小為512即可。換句話而言就是本設(shè)計(jì)只利用EP6做為接收,其余不變。當(dāng)打開Cypress官方提供的控制臺后下載固件,跳到EP6上進(jìn)行接收。
最后 WRITE 狀態(tài)將 cnt[15:0]傳送給 data,WRITE_1 狀態(tài) 將 cnt[34:32]加 1 傳送給 data,WRITE_2狀態(tài)將cnt[31:16]加1傳送給data。結(jié)果由Cypress控制臺打出,如圖11所示。
圖11 EZ-USB對采集數(shù)據(jù)的測試結(jié)果圖
其中圖11所示的傳輸?shù)缴衔粰C(jī)端的數(shù)據(jù)與所采集的數(shù)據(jù)一致,驗(yàn)證了系統(tǒng)的可行性。
本文利用CY7C68013A芯片對計(jì)數(shù)器數(shù)據(jù)進(jìn)行傳輸。首先完成了對USB內(nèi)部固件程序的配置,再對FPGA內(nèi)部產(chǎn)生數(shù)據(jù)通過USB控制模塊對FP?GA內(nèi)部信號進(jìn)行發(fā)送。最后利用Cypress公司提供的EZ-USB Interface界面對USB發(fā)送來的數(shù)據(jù)進(jìn)行采集,驗(yàn)證了系統(tǒng)的可行性。因此本系統(tǒng)可用于高精度、高速度、低成本的批量數(shù)據(jù)傳輸。
[1]馬偉.計(jì)算機(jī)USB系統(tǒng)原理及其主/從機(jī)設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,2004:7-8.MA Wei.Computer USB system principle and its master/slave design[M].Beijing:Beijing University of Aeronau?tics and Astronautics Press,2004:7-8.
[2]邊海龍,賈少華.USB2.0設(shè)備的設(shè)計(jì)與開發(fā)[M].北京:人民郵電出版社,2004.1:15-17.BIAN Hailong,JIA Shaohua.USB2.0 device design and development[M].Beijing:People's Posts and Telecommu?nications Press,2004.1:15-17.
[3]羅向東.基于FPGA與CY7C68013A的USB接口系統(tǒng)設(shè)計(jì)[J].科技廣場,2010(6):96-98.LUO Xiangdong.Design of USB Interface Based on FPGA and CY7C68013A[J].Technology Square,2010(6):96-98.
[4]馬俊濤,李振宇.Slave FIFO模式CY7C68013和FPGA的數(shù)據(jù)通信[J].中國傳媒大學(xué)學(xué)報(bào)(自然科學(xué)版),2009,16(2):38-44.MA Juntao,LI Zhenyu.Data Communication of Slave FIFO Mode CY7C68013 and FPGA[J].Journal of Commu?nication University of China(Natural Science),2009,16(2):38-44.
[5]任莉.基于USB2.0構(gòu)建分布式偏振耦合測試儀數(shù)據(jù)采集系統(tǒng)[D].天津:天津大學(xué),2006.REN Li.Design of Data Acquisition System for Distributed Polarization Coupling Analyzer with USB2.0 Protocols[D].Tianjin:Tianjin University,2006.
[6]陳續(xù).GNSS衛(wèi)星中頻信號采集器的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2010.CHEN Xu.Design and Implementation of GNSS Satellite IF Signal Collector[D].Beijing:Beijing University of Posts and Telecommunications,2010.
[7]于健.基于FPGA和DSP成像信號處理板設(shè)計(jì)[D].西安:西安電子科技大學(xué),2009.YU Jian.Design of SAR Imaging Signal Processer Based on FPGA and DSP[D].Xi'an:Xidian University,2009.
[8]馬玲.基于FPGA和USB2.0的數(shù)據(jù)采集系統(tǒng)[J].電子世界,2014:22-23.MA Ling.Data Acquisition System Based on FPGA and USB2.0[J].Electronic World,2014:22-23.
[9]張俊濤,王豫瑩.基于FPGA和USB2.0的高速數(shù)據(jù)采集系統(tǒng)[J].儀表技術(shù)與傳感器,2011(10):46-48.ZHANG Juntao,WANG Yuying.High Speed Data Acquisi?tion System Based on FPGA and USB2.0[J].Instrumenta?tion Technology and Sensor,2011(10):46-48.
[10]閆成彥.基于USB的陣線CCD圖像采集系統(tǒng)[D].大連:大連理工大學(xué),2009.YAN Chengyan.Fuzzy CCD Image Acquisition System Based on USB[D].Dalian:Dalian University of Technol?ogy,2009.
[11]呂超,張玉霞,王立欣.USB接口高速數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)[J].計(jì)算機(jī)測量與控制,2009,17(5):1003-1005.LU Chao,ZHANG Yuxia,WANG Lixin.Realization of High-speed Data Transmission Based on USB Interface[J].Computer Measurement and Control,2009,17(5):1003-1005.
[12]張伯約,王麗卿.基于本地交通網(wǎng)絡(luò)服務(wù)的電子輔助駕駛系統(tǒng)[J].微型機(jī)與應(yīng)用,2015,34(9):68-70.ZHANG Boyao,WANG Liqing.Electronic Auxiliary Driving System Based on Local Traffic Network Service[J].Microcomputer And Applications,2015,34(9):68-70.
[13]星碩工控科技.FCUSB-CY7C68013-56開發(fā)文檔,2004.12:8-10.Star Shuo Industrial Technology Development.FCUSB-CY7C68013-56 development document,2004.12:8-10.
[14]劉勝,陳華,聶雄.基于EZ-USB FX2的圖像采集系統(tǒng)的 設(shè) 計(jì) 與 實(shí) 現(xiàn)[J].電 子 設(shè) 計(jì) 工 程 ,2011(11):160-162.LIN Sheng,CHEN Hua,NIE Xiong.Design and Imple?mentation of Image Capturing System Based on EZ-USB FX2[J].Electronic Design Engineering,2011(11):160-162.
[15]甘建偉,秦付軍,王鵬.基于FPGA的高速多通道數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].測控技術(shù)與儀表技術(shù),2013(39):55-57.GAN Jianwei,QIN Fujun,WANG Peng.Design of Multi-channelHigh-speedDataAcquisition System Based on FPGA[J].Journal of Measurement and Control Technology and Instrumentation,2013(39):55-57.
[16]袁益民.基于USB2.0+FPGA的密碼算法硬件設(shè)計(jì)平臺設(shè)計(jì)[D].長沙:中南大學(xué),2008.YUAN Yimin.USB2.0+FPGA based cryptographic algo?rithm hardware platform[D].Changsha:Central South University,2008.
[17]紀(jì)超,劉慧英,孫景峰,等.虛擬與現(xiàn)實(shí)交互中跟蹤系統(tǒng)的改進(jìn)設(shè)計(jì)[J].計(jì)算機(jī)測量與控制,2014,22(2):528-530.JI Chao,LIU Huiying,SUN Jingfeng,et al.Design Im?provements of Tracking System in Virtual and Reality In?teraction[J].Computer Measurement and Control,2014,22(2):528-530.
[18]張建喜,汪峰,李金海,等.基于USB的GPS數(shù)據(jù)采集系統(tǒng)[J].電訊技術(shù),2010(6):96-100.ZHANG Jianxi,WANG Feng,LI Jinhai,et al.A GPS Da?ta Acquisition System Based on USB[J].Telecommuni?cations Technology,2010(6):96-100.
[19]劉志才,郭付才,彭新偉,等.基于CY7C68013A的FP?GA配置和通信接口[J].電子技術(shù)應(yīng)用,2013(2):18-21.LIU Zhihua,GUO Fucai,PENG Xinwei,et al.Design of the FPGA's Configuration and Communication Interface Based on CY7C68013A[J].Journal of Electronic Tech?nique,2013(2):18-21.
[20]王紅凱.基于CY7C68013A的USB接口系統(tǒng)設(shè)計(jì)[J].現(xiàn)代機(jī)械,2008(1):77-79.WANG Hongkai.Design of USB Interface Based on CY7C68013A[J].Modern Machinery,2008(1):77-79.
[21]張超,李洪文,朱丹丹,等.基于USB的高速數(shù)據(jù)傳輸系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用,2013(z2):54-56.ZHANG Chao,LI Hongwen,ZHU Dandan,et al.Design of a High-speed Data Transmission System Based on USB[J].Journal of Computer Applications,2013(z2):54-56.
[22]劉世銀.基于USB的數(shù)據(jù)采集系統(tǒng)研究與設(shè)計(jì)[D].武漢:武漢理工大學(xué),2013.LIU Shiyin.Research and Design of USB-based Data Ac?quisition System[D].Wuhan:Wuhan University of Tech?nology,2013.
[23]唐海峰.基于FPGA的時(shí)間測量電路的研究[D].昆明:昆明理工大學(xué),2016.TANG Haifeng.The Research of Time Measurement Cir?cuit Based on FPGA[D].Kunming:Kunming University of Science and Technology,2016.
High Speed Transmission System Based on USB Interface Multi Bit Data Format
ZHANG JinpengZHAO Jianjun TANG HaifengZHAO En
(College of Science,Kunming University of Science and Technology,Kunming 650500)
This design realizes a data transmission system based on USB2.0 interface.The system from the FPGA to produce a 35-bit added to 250 from 0 of the counter,to achieve the value of the counter through the USB to the host computer's function.The design of the FPGA chip uses Altera's CycloneII EP2C5Q208C8N,USB chip Cypress's EZ-USB series CY7C68013A.Through the Quartus II software,Keil software,Cypress console for USB interface design of multi-bit data transmission system.The system can be used for high-precision,high-speed,low-cost bulk data transmission.
FPGA,USB,data transmission,Cypress
Class Number TN919.3
TN919.3
10.3969/j.issn.1672-9722.2017.12.026
2017年6月21日,
2017年7月28日
國家自然科學(xué)基金青年科學(xué)基金項(xiàng)目(編號:11103069)資助。
張錦鵬,男,碩士研究生,研究方向:嵌入式系統(tǒng)、云計(jì)算、交通物聯(lián)網(wǎng)。趙建軍,男,碩士,副教授,研究方向:X射線脈沖星導(dǎo)航、嵌入式系統(tǒng)、物聯(lián)網(wǎng)數(shù)據(jù)融合、云計(jì)算、交通物聯(lián)網(wǎng)。唐海峰,男,碩士研究生,研究方向:X射線脈沖星導(dǎo)航、嵌入式系統(tǒng)。趙恩,女,碩士研究生,研究方向:嵌入式系統(tǒng)。