楊少博,裴東興*,岳孝忠
(1.中北大學(xué)電子測(cè)試技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室,太原030051; 2.中北大學(xué)儀器科學(xué)與動(dòng)態(tài)測(cè)試教育部重點(diǎn)實(shí)驗(yàn)室,太原030051)
?
高速數(shù)據(jù)采集系統(tǒng)中USB3.0數(shù)據(jù)傳輸接口設(shè)計(jì)
楊少博1,2,裴東興1,2*,岳孝忠1,2
(1.中北大學(xué)電子測(cè)試技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室,太原030051; 2.中北大學(xué)儀器科學(xué)與動(dòng)態(tài)測(cè)試教育部重點(diǎn)實(shí)驗(yàn)室,太原030051)
摘要:高速穩(wěn)定可靠的數(shù)據(jù)傳輸在高速數(shù)據(jù)采集系統(tǒng)中扮演著重要的角色。針對(duì)彈載電子測(cè)試儀對(duì)高速數(shù)據(jù)傳輸?shù)囊?,設(shè)計(jì)了一個(gè)基于USB3.0的高速數(shù)據(jù)采集傳輸系統(tǒng)。該系統(tǒng)數(shù)據(jù)傳輸部分采用Cypress公司CYUSB3014芯片作為接口芯片,詳細(xì)介紹了接口連接及硬件工作過(guò)程;介紹了USB3.0接口的軟件設(shè)計(jì)主要模塊,如DMA通道、GPIFⅡ可編程接口等固件編程。實(shí)際測(cè)試表明:該系統(tǒng)實(shí)現(xiàn)了數(shù)據(jù)高速可靠傳輸,固件程序能夠正常穩(wěn)定的運(yùn)行。
關(guān)鍵詞:存儲(chǔ)測(cè)試;高速數(shù)據(jù)采集;高速數(shù)據(jù)傳輸; USB3.0接口
高速數(shù)據(jù)采集系統(tǒng)中,為了保證處理器能夠正確的處理A/D輸出的數(shù)據(jù),數(shù)據(jù)的正確傳輸和存儲(chǔ)顯得非常重要。實(shí)驗(yàn)室一直致力于高速數(shù)據(jù)傳輸接口的研究,近年來(lái)隨著大容量存儲(chǔ)器的發(fā)展,存儲(chǔ)容量已經(jīng)提升到GB級(jí)別,基于USB2.0的數(shù)據(jù)傳輸接口已逐漸不能滿(mǎn)足測(cè)試需要,USB3.0的出現(xiàn)為這一難題的解決提供了新的方向。在這種背景下,利用存儲(chǔ)測(cè)試方法[1-2]研究設(shè)計(jì)了適合在惡劣環(huán)境下實(shí)現(xiàn)動(dòng)態(tài)測(cè)試的小型高速數(shù)據(jù)采集傳輸系統(tǒng),該系統(tǒng)能夠放在高速炮中隨炮彈一起發(fā)射,高速采集、存儲(chǔ)編碼信號(hào);隨后用超速傳輸設(shè)備USB3.0將信號(hào)傳輸顯示,并將靜態(tài)和動(dòng)態(tài)的脈沖信號(hào)進(jìn)行對(duì)比,更好地了解導(dǎo)彈、彈丸飛行過(guò)程的姿態(tài)參數(shù)的數(shù)據(jù)。本設(shè)計(jì)選用USB3.0芯片CYUSB3014作為接口芯片,不僅提高了數(shù)據(jù)傳輸?shù)乃俾?,還能保證數(shù)據(jù)傳輸?shù)臏?zhǔn)確性與穩(wěn)定性。
圖1為實(shí)驗(yàn)室為準(zhǔn)確測(cè)量引信在膛內(nèi)及飛行過(guò)程的動(dòng)態(tài)參數(shù)研制的可置于引信內(nèi)部的彈載電子測(cè)試儀數(shù)據(jù)采集系統(tǒng)。該系統(tǒng)把彈上動(dòng)態(tài)參數(shù)測(cè)試必不可少的功能部分放置到彈載電子測(cè)試儀上,而把盡可能多的功能部分,如接口、數(shù)據(jù)處理、顯示等功能部件放置在地面。經(jīng)過(guò)特殊系統(tǒng)校準(zhǔn)及專(zhuān)門(mén)的惡劣環(huán)境可靠性考核系統(tǒng)考核,該系統(tǒng)可以適應(yīng)彈載測(cè)試的惡劣環(huán)境。
圖1 彈載電子測(cè)試儀數(shù)據(jù)采集系統(tǒng)
彈載電子測(cè)試儀完成被測(cè)參量的獲取和存儲(chǔ)記錄,高強(qiáng)度殼體的有效防護(hù)可以提高儀器的存活性[3]。通過(guò)USB3.0傳輸接口,地面計(jì)算機(jī)完成對(duì)彈載電子測(cè)試儀的參數(shù)設(shè)置及實(shí)驗(yàn)數(shù)據(jù)的讀取處理。圖中傳感器1為軸向安裝的加速度傳感器,傳感器2和3為徑向安裝的加速度傳感器,傳感器4為實(shí)驗(yàn)室自制的地磁傳感器[4]。
2.1USB3.0硬件工作過(guò)程
EZ-USB FX3芯片CYUSB3014由Cypress公司研發(fā),擁有一個(gè)高性能的32 bit ARM926EJ-S微處理器[5],該內(nèi)核的工作頻率可達(dá)200 MHz,使得FX3能夠用在對(duì)數(shù)據(jù)處理要求較高的地方。芯片內(nèi)部還集成了一個(gè)512 kbyte嵌入式SRAM,用來(lái)存儲(chǔ)代碼、配置參數(shù),同時(shí)作為芯片內(nèi)部DMA通道的緩沖區(qū)。它具備一個(gè)并行通用可編程接口GPIFⅡ(GPIFⅡ是Cypress公司USB2.0旗艦產(chǎn)品FX2[6]中GPIF的增強(qiáng)版本),它可與任何處理器、FPGA或ASIC等進(jìn)行連接。CYUSB3014有兩種配置方式:Slave FIFO模式和GPIF主控模式。本設(shè)計(jì)選用GPIFⅡ接口的Slave FIFO工作模式,與一片F(xiàn)PGA相連,實(shí)現(xiàn)高速數(shù)據(jù)傳輸系統(tǒng)的整個(gè)過(guò)程。USB3.0接口硬件框圖如圖2所示。
高速數(shù)據(jù)傳輸系統(tǒng)的硬件工作過(guò)程如下:首先,將系統(tǒng)與計(jì)算機(jī)相連,然后,系統(tǒng)上電,F(xiàn)X3芯片通過(guò)固化在EEPROM中固件程序加載系統(tǒng),加載固件程序,調(diào)用子函數(shù),初始化芯片內(nèi)部寄存器和外圍電路狀態(tài),USB設(shè)備被計(jì)算機(jī)正確識(shí)別后,上位機(jī)軟件通過(guò)調(diào)用DLL使USB設(shè)備進(jìn)入工作狀態(tài),執(zhí)行固件中的讀數(shù)子程序并開(kāi)始讀數(shù),二者相互獨(dú)立。本系統(tǒng)與USB3.0通信的FPGA芯片選用EP3C40F484,它具有體積小,處理速度快和散熱性好等特點(diǎn),借助FPGA強(qiáng)大的并行處理能力,協(xié)助FX3芯片完成高速數(shù)據(jù)傳輸。USB3.0接口為系統(tǒng)提供5 V電壓,900 mA電流,電源管理芯片選用TPS650243,通過(guò)轉(zhuǎn)換可以為CYUSB3014提供3.3 V電壓,為EP3C40F484提供1.2 V工作電壓。
圖2 USB3.0接口硬件框圖
圖3 CYUSB3014與FPGA、PC機(jī)接口連接
2.2CYUSB3014與FPGA、PC機(jī)接口連接
CYUSB3014與FPGA、PC機(jī)接口連接如圖3所示。USB3.0擁有8條線路:一對(duì)電源、地線和三對(duì)差分信號(hào)線。三對(duì)差分信號(hào)線分別為:D+和D-,SSTX+和SSTX-,SSRX+和SSRX-。相對(duì)與USB2.0,USB3.0新增的兩對(duì)差分信號(hào)線SSTX+和SSTX-,SSRX+和SSRX-可保證數(shù)據(jù)進(jìn)行并行的收發(fā),專(zhuān)用的數(shù)據(jù)發(fā)送線路和獨(dú)立的數(shù)據(jù)接收線路,支持全雙工通信[7]。同時(shí),USB3.0還兼容了USB2.0的D+/-信號(hào)接口,從而可以與USB2.0無(wú)縫連接。相比USB2.0,USB3.0數(shù)據(jù)傳輸速率更高,理論最高傳輸速率可達(dá)5.0 Gbit/s。另外,USB3.0采用的是更加人性化的中斷驅(qū)動(dòng)協(xié)議,在發(fā)出中斷請(qǐng)求之前,USB3.0設(shè)備處于待機(jī)狀態(tài),不消耗電源電能[8]。
3.1USB3.0固件設(shè)計(jì)
固件是在加電后,由EEPROM加載到CYUSB3014中并在其中運(yùn)行,完成接口數(shù)據(jù)傳送功能的一段程序,其作用是控制硬件來(lái)完成預(yù)期的設(shè)備功能。固件的主要功能包括:初始化設(shè)備;輔助硬件完成設(shè)備的重新枚舉(Re-Numeration)過(guò)程;對(duì)主機(jī)請(qǐng)求做出響應(yīng);數(shù)據(jù)的接收與發(fā)送;對(duì)中斷的處理;對(duì)外圍電路的控制等。固件框架流程圖如圖4所示。
圖4 固件框架流程圖
USB3.0與USB2.0不同之處之一就是USB3.0涉及到不同固件數(shù)據(jù)流,這大大提高了數(shù)據(jù)傳輸速度。固件設(shè)計(jì)一個(gè)很重要的工作就是建立DMA數(shù)據(jù)通道,DMA通道用來(lái)連接兩個(gè)套接字[9]。FX3提供了兩種DMA通道模式,一種是自動(dòng)DMA通道,另一種是手動(dòng)DMA通道。GPIFⅡ接口和USB接口只能通過(guò)DMA通道進(jìn)行數(shù)據(jù)傳輸。DMA系統(tǒng)引擎會(huì)向微處理器發(fā)送DMA事件中斷信號(hào),該信號(hào)用來(lái)通知微處理器有特定的DMA事件發(fā)生,當(dāng)微處理器接收到特定的DMA事件時(shí),就會(huì)調(diào)用相應(yīng)的回調(diào)函數(shù)來(lái)處理這些DMA事件。手動(dòng)創(chuàng)建DMA通道程序如下:
/*創(chuàng)建一個(gè)手動(dòng)DMA通道* /
dmaBulkLpConfig.size = CY_FX_BULKLP_DMA_BUF_ SIZE;
dmaBulkLpConfig.count= CY_FX_BULKLP_DMA_BUF_ COUNT;
dmaBulkLpConfig.prodSckId = (CyU3PDmaSocketId_ t)(CY_U3P_UIB_SOCKET_PROD_0|
CY_FX_EP_PRODUCER_SOCKET);
dmaBulkLpConfig.consSckId = (CyU3PDmaSocketId_ t)(CY_U3P_UIB_SOCKET_CONS_0|
CY_FX_EP_CONSUMER_SOCKET);
dmaBulkLpConfig.dmaMode = CY_ U3P_ DMA_ MODE_ BYTE;
dmaBulkLpConfig.notification=CY_U3P_DMA_CB_PROD_ EVENT;
dmaBulkLpConfig.cb=CyFxBulkLpDmaCallback;
dmaBulkLpConfig.prodHeader=0;
dmaBulkLpConfig.prodFooter=0;
dmaBulkLpConfig.consHeader=0;
dmaBulkLpConfig.prodAvailCount=0;
apiRetStatus=CyU3PDmaChannelCreate
(&glChHandleBulkLp,CY_ U3P_ DMA_ TYPE_ MANUAL,&dmaBulkLpConfig);
3.2下位機(jī)程序設(shè)計(jì)
GPIFⅡ接口工作在Slave FIFO模式下,F(xiàn)PGA作為邏輯控制器,外部數(shù)字信號(hào)通過(guò)FPGA寫(xiě)入FX3,再通過(guò)USB3.0接口傳輸?shù)接?jì)算機(jī)上。GPIFⅡ一側(cè)的套接字(Socket)相當(dāng)于端點(diǎn)。FX3可提供多達(dá)4個(gè)物理線程用于GPIFⅡ數(shù)據(jù)傳輸,將要使用的套接字映射至某個(gè)線程上,這種映射由固件完成。GPIFⅡ接口上的信號(hào)A1:A0表示要訪問(wèn)的線程,數(shù)據(jù)傳輸時(shí),DMA結(jié)構(gòu)將數(shù)據(jù)映射到該線程上的套接字[10]。GPIFⅡ是一種可編程狀態(tài)機(jī),使用GPIFⅡDesigner軟件生成GPIFⅡ波形描述符加入到固件程序中,完成相關(guān)配置。使用QuartusⅡ9.1軟件采用VHDL實(shí)現(xiàn)FPGA對(duì)USB3.0的邏輯時(shí)序控制,仿真結(jié)果如圖5所示。
圖5 FPGA對(duì)FX3邏輯控制仿真
DCLK為由FPGA控制GPIFⅡ的接口時(shí)鐘; SLCS為片選,低電平有效,即選中FX3芯片; SLWR為寫(xiě)使能控制,低電平有效。FLAGA和FLAGB是FX3固件配置的標(biāo)志位,它們可以配置為空、滿(mǎn)、局部空或局部滿(mǎn)狀態(tài)信號(hào),由FX3內(nèi)部的DMA硬件引擎控制。數(shù)據(jù)傳輸接口系統(tǒng)中應(yīng)用FLAGA作為當(dāng)前線程套接字的滿(mǎn)/不滿(mǎn)狀態(tài)標(biāo)志。FIFO地址由A1:A0= 0確定線程0,F(xiàn)LAGA信號(hào)為高電平,表示套接字緩沖區(qū)不滿(mǎn),SLCS一直處于低電平使能狀態(tài),當(dāng)應(yīng)用程序通過(guò)GPIFⅡ的INT接口向FPGA發(fā)送一個(gè)高電平脈沖時(shí),SLWR下拉至低電平,數(shù)據(jù)開(kāi)始從時(shí)鐘上升沿向套接字緩沖區(qū)寫(xiě)入數(shù)據(jù),緊接著FX3會(huì)啟動(dòng)DMA通道;當(dāng)緩沖區(qū)被裝滿(mǎn)數(shù)據(jù),F(xiàn)LAGA信號(hào)下拉至低電平,相應(yīng)的DMA回調(diào)函數(shù)被調(diào)用。PKTEND是數(shù)據(jù)包結(jié)束信號(hào),低電平有效; SLOE是輸出使能控制信號(hào)。
3.3驅(qū)動(dòng)程序設(shè)計(jì)
Cypress公司為EZ-USB FX3系列提供的SDK開(kāi)發(fā)包中含有通用cyusb3.sys驅(qū)動(dòng)程序和與之相匹配的cyusb3.inf文件[11]。對(duì)于通用驅(qū)動(dòng)程序而言,用戶(hù)需要做的是根據(jù)固件程序中的PID和VID來(lái)修改INF文件。固件程序中定義了VID = 04B4與PID = 00F1,修改INF文件后保存,系統(tǒng)就能根據(jù)INF文件識(shí)別USB3.0設(shè)備加載驅(qū)動(dòng)程序,USB設(shè)備啟動(dòng)后用戶(hù)就可以對(duì)它進(jìn)行一些正常的操作。
利用第3方工具軟件Eclipse IDE建立工程,調(diào)試FX3固件,自動(dòng)生成ELF二進(jìn)制文件,這些二進(jìn)制文件在Eclipse工程中利用elf2img工具可被轉(zhuǎn)換成二進(jìn)制img格式文件。硬件連接好后,利用Cypress公司提供的USB control center軟件可以下載img文件到FX3芯片中,完成固件下載。
彈載電子測(cè)試儀已在靶場(chǎng)進(jìn)行了20余次實(shí)彈測(cè)試,成功獲取了某引信在膛內(nèi)和飛行過(guò)程的加速度參數(shù),數(shù)據(jù)捕獲率為高達(dá)96%。圖6為某次實(shí)彈測(cè)試軸向加速度測(cè)試結(jié)果部分截圖,圖7為利用Cypress公司Streamer軟件測(cè)試的該USB3.0系統(tǒng)的數(shù)據(jù)傳輸速率,在win7 64位操作系統(tǒng)下傳輸速率測(cè)試結(jié)果為191 300 kbyte/s,實(shí)現(xiàn)了高速數(shù)據(jù)傳輸?shù)囊?,比以往使用的USB2.0接口傳輸速率更快,并且無(wú)點(diǎn)的丟失。在發(fā)射的同時(shí)使用天幕靶對(duì)彈丸的初速進(jìn)行測(cè)試,通過(guò)對(duì)引信軸向加速度信號(hào)的積分可得出彈丸在膛內(nèi)的速度曲線,計(jì)算出引信在出炮口的最大速度和所測(cè)的初速相差6 m/s,驗(yàn)證了測(cè)試數(shù)據(jù)的正確性[12]。測(cè)試結(jié)果表明本高速數(shù)據(jù)傳輸系統(tǒng)在測(cè)試中的可靠性和實(shí)用性,也表明本數(shù)據(jù)采集系統(tǒng)可控性強(qiáng),傳輸速率快,數(shù)據(jù)完整,是一套成功、實(shí)用的采集系統(tǒng)。
圖6 加速度測(cè)試結(jié)果分析
圖7 數(shù)據(jù)傳輸速率測(cè)試
FPGA技術(shù)與USB3.0的結(jié)合有極大的靈活性和可擴(kuò)展性,基于FPGA和USB3.0的突出優(yōu)點(diǎn),該設(shè)計(jì)方案必將應(yīng)用在更廣闊的領(lǐng)域。雖然已經(jīng)設(shè)計(jì)出了一個(gè)高速數(shù)據(jù)采集系統(tǒng),但本系統(tǒng)還處在研發(fā)階段,在PCB布局布線及信號(hào)和電源完整性方面仍待提高。
參考文獻(xiàn):
[1]張文棟.存儲(chǔ)測(cè)試系統(tǒng)的設(shè)計(jì)理論及其應(yīng)用[M].北京:高等教育出版社,2002:34-40.
[2]祖靜,張志杰,裴東興,等.新概念動(dòng)態(tài)測(cè)試[J].測(cè)試技術(shù)學(xué)報(bào),2004,18(z6):1-4.
[3]靳書(shū)云,靳鴻,張艷兵.彈載加速度數(shù)據(jù)記錄儀抗高沖擊設(shè)計(jì)[J].傳感技術(shù)學(xué)報(bào),2014,27(4):463-466.
[4]裴東興,王文武,崔春生.利用轉(zhuǎn)速測(cè)試彈丸炮口速度的方法研究[J].兵工學(xué)報(bào),2013,34(1):125-128.
[5]Cypress Semiconductor Corporation,EZ-USB FX3 Super Speed USB Controller[EB/OL].www.cypress.com,2011,1-35.
[6]錢(qián)峰.EZ-USB FX2單片機(jī)原理、編程及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2006:171-176.
[7]Cypress Semiconductor.Cypress CyAPI Programmer’s Reference [EB].2011:12-61.
[8]劉妍秀.USB3.0體系結(jié)構(gòu)及發(fā)展前景[J].長(zhǎng)春大學(xué)學(xué)報(bào),2010,20(10):23-26.
[9]張聰,張濤.基于USB3.0設(shè)備控制器的固件設(shè)計(jì)[J].電子器件,2013,36(3):384-388.
[10]USB 3.0 Promoter Group,Universal Serial Bus 3.0 Specification [S].www.usb.org,2008.
[11]段仲麟,何其胃.基于USB的DSP與PC的通信接口設(shè)計(jì)[J].信息與電腦,2010,30(11):49-51.
[12]費(fèi)業(yè)泰.誤差理論與數(shù)據(jù)處理[M].5版.北京:機(jī)械工業(yè)出版社,2006:24-34.
The Design of Multi-Interface CAN Bus Detecting System*
LI Ping*,WEI Changbao
(School of Information Engineering,Huanghuai University,Zhumadian He’nan 463000,China)
Abstract:In order to make the data communication between the computer and 1553B bus much easier and faster,and improve the detection efficiency of 1553B bus equipment,a CAN bus detecting system was designed based on ARM and FPGA.With modular method for the hardware circuit,the ARM module,the FPGA module and the bus interface connecting were designed independently.The Top-Down method was used in the logic design based on FPGA.USB and Ethernet interfaces were designed based on ARM microcontroller for resolving the interface integration.Two interfaces could work independently.The results of software stimulation and hardware testing indicated that the detecting system could achieve data transmitting and detecting for CAN bus.
Key words:CAN bus; detecting system; multi-interface; modular method
doi:EEACC:720010.3969/j.issn.1005-9490.2015.04.040
收稿日期:2014-10-16修改日期:2014-11-08
中圖分類(lèi)號(hào):TP334.7
文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1005-9490(2015)04-0912-05