国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于USB 3.0接口的高速數(shù)據(jù)傳輸系統(tǒng)設(shè)計(jì)

2017-03-23 23:57宋中喆裴東興楊少博
現(xiàn)代電子技術(shù) 2017年4期
關(guān)鍵詞:緩沖區(qū)線程傳輸

宋中喆+裴東興+楊少博

摘 要: 針對(duì)目前存儲(chǔ)測(cè)試系統(tǒng)中存有的數(shù)據(jù)傳輸慢,經(jīng)常出現(xiàn)錯(cuò)誤的顯著問(wèn)題,設(shè)計(jì)基于USB 3.0接口的高速數(shù)據(jù)傳輸系統(tǒng)。該設(shè)計(jì)以FPGA作為主控芯片,采用負(fù)延遲與乒乓緩存的方式將A/D轉(zhuǎn)換的數(shù)據(jù)高速緩存到DDR2 SDRAM中。設(shè)計(jì)了GPIF Ⅱ 通用可編程接口和手動(dòng) DMA 通道,實(shí)現(xiàn)了USB 3.0同步從FIFO模式的高速數(shù)據(jù)傳輸。系統(tǒng)分析測(cè)試和實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)實(shí)現(xiàn)了數(shù)據(jù)的高速可靠傳輸,能有效解決大容量數(shù)據(jù)采集后的數(shù)據(jù)高速傳輸問(wèn)題。

關(guān)鍵詞: 存儲(chǔ)測(cè)試; USB 3.0接口; 高速數(shù)據(jù)傳輸; 負(fù)延遲; 乒乓緩存

中圖分類號(hào): TN919.6?34; TP334.7 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2017)04?0159?04

Design of high?speed data transmission system based on USB 3.0 interface

SONG Zhongzhe1,2, PEI Dongxing1,2, YANG Shaobo1,2

(1. National Key Laboratory for Electronic Measurement Technology, North University of China, Taiyuan 030051, China;

2. MOE Key Laboratory of Instrumentation Science and Dynamic Measurement, North University of China, Taiyuan 030051, China)

Abstract: Since the current memory test system has the prominent problems of low data transmission speed and frequent fault occurrence, a high?speed data transmission system based on USB 3.0 interface was designed. The FPGA is taken as the main control chip of the design. The modes of negative delay and Ping?Pong cache are adopted to cache the data transformed through A/D into the DDR2 SDRAM with high speed. The general programming interface GPIF II and manual DMA channel were designed to realize the high?speed data transmission based on USB 3.0 synchronous slave FIFO mode. The system analysis, test and experimental results show that the system has realized the high?speed and reliable data transmission, and can effectively solve the high?speed data transmission problem occurring after large?capacity data acquisition.

Keywords: memory testing; USB 3.0 interface; high?speed data transmission; negative delay; Ping?Pong cache

0 引 言

隨著當(dāng)前存儲(chǔ)測(cè)試系統(tǒng)[1]中存儲(chǔ)容量的急劇增加,對(duì)數(shù)據(jù)的傳輸速度的要求隨之也越來(lái)越高,此外在某些需要對(duì)數(shù)據(jù)進(jìn)行實(shí)時(shí)傳輸處理的場(chǎng)合,人們對(duì)數(shù)據(jù)傳輸系統(tǒng)的速度要求也越來(lái)越嚴(yán)格[2]。本實(shí)驗(yàn)室以前一直在使用USB 2.0接口作為存儲(chǔ)測(cè)試系統(tǒng)的數(shù)據(jù)傳輸接口,但受限于其理論最大480 Mb/s的傳輸速度,現(xiàn)在已逐漸難以滿足數(shù)據(jù)傳輸?shù)囊?。新一代?USB 3.0繼承了 USB 2.0 的所有優(yōu)勢(shì),能夠向下兼容 USB 2.0,且在USB 2.0的基礎(chǔ)上新增了超速傳輸模式,理論傳輸速度[3?4]可高達(dá) 5 Gb/s。并且在固件程序開(kāi)發(fā)、電源管理等方面有了更好的提高。故而USB 3.0接口可以很好地解決那些問(wèn)題。在未來(lái)的幾年內(nèi),USB 3.0 必定能夠較好地應(yīng)對(duì)數(shù)字時(shí)代要求的高速性能和可靠互聯(lián)性[5]。

1 系統(tǒng)總體方案設(shè)計(jì)

本文設(shè)計(jì)的系統(tǒng)主要包含五部分:傳感器與信號(hào)調(diào)理電路、ADC數(shù)據(jù)轉(zhuǎn)換電路、DDR2數(shù)據(jù)存儲(chǔ)單元、FPGA控制電路和USB 3.0數(shù)據(jù)傳輸接口。圖1為系統(tǒng)的總體原理框圖。傳感器將需要測(cè)量的物理量轉(zhuǎn)換為相應(yīng)的模擬電信號(hào),信號(hào)調(diào)理電路用來(lái)將傳感器輸出的微弱模擬信號(hào)進(jìn)行放大濾波等處理[6]。ADC數(shù)據(jù)轉(zhuǎn)換電路將經(jīng)過(guò)調(diào)理通道的采樣模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)。DDR2數(shù)據(jù)存儲(chǔ)單元用來(lái)按所接收的指令來(lái)對(duì)數(shù)據(jù)進(jìn)行高速緩存。數(shù)據(jù)轉(zhuǎn)換和存儲(chǔ)的操作在FPGA控制單元的控制下進(jìn)行,在FPGA內(nèi)部構(gòu)建有PLL鎖相環(huán),用來(lái)對(duì)輸入時(shí)鐘進(jìn)行頻率轉(zhuǎn)換,并將不同的輸出時(shí)鐘提供給A/D轉(zhuǎn)換器、DDR2及USB 3.0控制電路。USB 3.0接口電路傳輸上位機(jī)指令,F(xiàn)PGA接收指令并對(duì)其解碼,然后將FIFO中緩存的數(shù)據(jù)傳輸至上位機(jī)[7]。

2 硬件及實(shí)現(xiàn)原理

2.1 系統(tǒng)芯片選型

對(duì)于FPGA芯片的選擇,本文采用Altera公司的低成本Cyclone Ⅲ系列 EP3C16F484芯片來(lái)作為系統(tǒng)的控制中心。該芯片內(nèi)部包含較多的RAM容量,利用IP核可以搭建自己所需要的電路模塊,如FIFO緩存模塊,PLL鎖相環(huán)等。USB 3.0接口協(xié)議芯片采用Cypress公司的CYUSB3014,DDR2 SDRAM選用MT47H64M16HR。

2.2 FPGA與DDR2存儲(chǔ)接口設(shè)計(jì)

在實(shí)際應(yīng)用中為防止有效數(shù)據(jù)在FIFO中累積而造成數(shù)據(jù)丟失,故設(shè)計(jì)了DDR2數(shù)據(jù)緩存模塊,用來(lái)對(duì)海量的數(shù)據(jù)進(jìn)行緩存。圖2為FPGA與DDR2連接圖。DDR2 能夠以內(nèi)部控制總線4倍的速度運(yùn)行,還能夠以外部總線的4倍的速度進(jìn)行讀/寫(xiě)操作。DDR2 協(xié)議包括很多用戶命令,如存儲(chǔ)器初始化、讀/寫(xiě)命令和自動(dòng)刷新等。為確保 DDR2能夠在正常情況下工作,對(duì)這些命令的時(shí)序,以及命令間的順序及間隔都有著特別嚴(yán)格的要求。FPGA內(nèi)部有集成的高性能 DDR2 控制器內(nèi)核,直接調(diào)用該模塊,即可較方便地實(shí)現(xiàn)對(duì)數(shù)據(jù)的讀/寫(xiě)操作。

2.3 FPGA與USB3.0通信接口設(shè)計(jì)

圖3為FPGA與FX3的接口設(shè)計(jì)圖。本系統(tǒng)將 GPIF Ⅱ(通用可編程接口)配置為32位的同步從FIFO 模式,GPIF Ⅱ的32位DQ數(shù)據(jù)總線與FPG相應(yīng)的32位數(shù)據(jù)端口相連,在 FX3 系統(tǒng)內(nèi)部,GPIF Ⅱ沒(méi)有直接與 USB端口緩沖區(qū)相連,而是直接連接到FX3的內(nèi)部 DMA網(wǎng)絡(luò)。FLAGA和FLAGB為CYUSB3014的狀態(tài)標(biāo)志信號(hào),用來(lái)反饋給外部主控制器 FPGA。PCLK與FPGA的CLK相連,用來(lái)接收時(shí)鐘信號(hào)。此外,SLCS為片選,SLWR為寫(xiě)使能,SLOE為輸出使能,SLRD為讀使能,PKTEND為短包發(fā)送信號(hào),均在低電平時(shí)被激活,A[1:0]為線程地址選擇信號(hào)。GPIF Ⅱ的端口操作和控制信號(hào)由內(nèi)部可編程的狀態(tài)機(jī)引擎控制,外部處理器通過(guò)配置輸入到FX3的控制信號(hào)來(lái)控制狀態(tài)機(jī)的操作[8]。

3 系統(tǒng)程序設(shè)計(jì)

3.1 A/D采集與數(shù)據(jù)緩存流程

本設(shè)計(jì)主要完成從系統(tǒng)上電開(kāi)始,A/D采樣輸入/輸出信號(hào)到采樣數(shù)據(jù)存儲(chǔ)工作。主要包括系統(tǒng)初始化、A/D采樣控制、未觸發(fā)前的FIFO循環(huán)寫(xiě)、觸發(fā)后的雙FIFO乒乓存儲(chǔ)操作。首先系統(tǒng)上電后,初始化A/D進(jìn)行數(shù)據(jù)采集,此過(guò)程采用負(fù)延遲的方式,即有效的觸發(fā)信號(hào)還沒(méi)有到來(lái),輸入FIFO1進(jìn)行循環(huán)采樣,由于FIFO容量有限,存儲(chǔ)的數(shù)據(jù)會(huì)不斷刷新,每一時(shí)刻所存儲(chǔ)到的數(shù)據(jù)都是此段時(shí)間內(nèi)最新采樣到的數(shù)據(jù)。一旦觸發(fā)信號(hào)到來(lái),F(xiàn)IFO1和 FIFO2都有效,此時(shí)進(jìn)行雙FIFO乒乓存儲(chǔ)操作。圖4為A/D采集與數(shù)據(jù)緩存流程圖。

觸發(fā)到來(lái)后,第一步將最初FIFO1中緩存的數(shù)據(jù)首先讀出寫(xiě)入DDR2,同時(shí)將觸發(fā)后A/D輸出數(shù)據(jù)寫(xiě)入 FIFO2中;第二步將第一步中FIFO2緩存的數(shù)據(jù)寫(xiě)入 DDR2,于此同時(shí)將 A/D 輸出數(shù)據(jù)寫(xiě)入FIFO1中;第三步將第二步中FIFO1緩存的數(shù)據(jù)寫(xiě)入DDR2,于此同時(shí)將A/D觸發(fā)后輸出數(shù)據(jù)寫(xiě)入 FIFO2 中,依此循環(huán),這樣通過(guò)兩個(gè) FIFO 按節(jié)拍的讀寫(xiě),將數(shù)據(jù)流無(wú)間斷地送入DDR2中[9]。直到系統(tǒng)停止采樣信號(hào)到來(lái)時(shí),此過(guò)程結(jié)束。圖5為乒乓緩存操作圖。

3.2 USB 3.0程序設(shè)計(jì)

采集后的數(shù)據(jù)通過(guò) USB 3.0 接口傳輸至上位機(jī)進(jìn)行處理分析,F(xiàn)X3器件有一個(gè)內(nèi)部DMA結(jié)構(gòu),用來(lái)將GPIF Ⅱ接口連接至系統(tǒng)內(nèi)部存儲(chǔ)器和其他串行外設(shè)。在FX3上運(yùn)行的固件將該數(shù)據(jù)路徑連接至合適的數(shù)據(jù)源,或連接至數(shù)據(jù)接收器[10]。圖6為高速讀寫(xiě)數(shù)據(jù)的DMA通道設(shè)計(jì)圖。

套接字是外設(shè)硬件模塊和FX3 RAM間的連接點(diǎn),GPIFⅡ 一側(cè)的套接字相當(dāng)于端點(diǎn)[11],GPIF 線程是位于GPIF Ⅱ模塊內(nèi)專用的數(shù)據(jù)路徑,用來(lái)將外部數(shù)據(jù)引腳同套接字連接起來(lái)。本設(shè)計(jì)使用由兩位地址線 A[1:0] 決定的四個(gè)GPIF線程中的兩個(gè),采用套接字和GPIF線程的默認(rèn)的對(duì)應(yīng)關(guān)系:套接字1與線程1相對(duì)應(yīng),套接字0與線程0相連。線程的切換是通過(guò)FPGA控制GPIF Ⅱ接口上的地址信號(hào)A[1:0] 來(lái)實(shí)現(xiàn)的,當(dāng)A[1:0]=0時(shí),轉(zhuǎn)到線程0,為1時(shí)則對(duì)應(yīng)線程1。

固件程序中設(shè)置DMA通道時(shí),本設(shè)計(jì)采用手動(dòng)DMA通道,相比自動(dòng)DMA通道,手動(dòng)DMA通道允許固件管理和控制數(shù)據(jù)流,從而確保數(shù)據(jù)的可靠傳輸。將兩組共32個(gè)緩沖器分配到特定的輸入或輸出DMA通道上,每個(gè)緩沖器的大小根據(jù)USB的速度而被定義:全速模式時(shí)為64 B,高速時(shí)則為512 B,超速時(shí)設(shè)為1 024 B。創(chuàng)建手動(dòng)DMA通道時(shí),首先設(shè)置DMA的大小,然后設(shè)置從設(shè)備DMA緩存計(jì)數(shù),接著配置DMA的生產(chǎn)者和消費(fèi)者套接字,最后指定DMA通道類型。

3.3 FPGA與USB 3.0通信程序設(shè)計(jì)

此部分主要完成FPGA與GPIF Ⅱ接口進(jìn)行通信的設(shè)計(jì)。由于本設(shè)計(jì)中 DDR2的輸出數(shù)據(jù)位寬為16 b,而GPIF Ⅱ接口采用32 b,故在FPGA中還設(shè)計(jì)了輸出緩存FIFO,用來(lái)匹配不同寬度的數(shù)據(jù)接口。

在 GPIF Ⅱ Designer中,將FLAGA配置為Current_thread_DMA_RDY,F(xiàn)LAGB 配置為Current_thread_

DMA_watermark,兩者都設(shè)為低電平有效,故當(dāng)其為低電平時(shí),它們指示滿/空或一部分滿/一部分空狀態(tài)。 本文外部FPGA通過(guò)從設(shè)備 FIFO 對(duì) FX3 進(jìn)行突發(fā)寫(xiě)入傳輸,圖7為32 b數(shù)據(jù)總線寬度的突發(fā)寫(xiě)入傳輸邏輯分析器截圖。在突發(fā)模式下,在整個(gè)突發(fā)寫(xiě)入過(guò)程中保持激活狀態(tài)。在突發(fā)寫(xiě)入模式下,令A(yù)[1:0]=0,GPIF Ⅱ狀態(tài)機(jī)控制切換到線程0,數(shù)據(jù)被接入作為生產(chǎn)者的套接字0,然后當(dāng)寫(xiě)使能信號(hào)SLWR有效時(shí),來(lái)自外部的數(shù)據(jù)先被寫(xiě)入位于系統(tǒng)內(nèi)存的DMA緩沖區(qū)的第一個(gè)緩沖器Buffer0,接著每當(dāng) PCLK 的上升沿到來(lái)時(shí),都會(huì)將數(shù)據(jù)總線上的值寫(xiě)入到FX3的Buffer0內(nèi),當(dāng)Buffer0狀態(tài)滿后,F(xiàn)LAGA反饋信號(hào)將被拉低,用來(lái)表明其滿狀態(tài)。此時(shí)FX3 CPU 即會(huì)接收到一個(gè)由GPIF Ⅱ 套接字發(fā)送的中斷,來(lái)通知至此已填充了DMA 緩沖區(qū),F(xiàn)X3 的CPU可將此信息發(fā)給USB套接字。此過(guò)程后調(diào)用的回調(diào)函數(shù)清空DMA 緩沖區(qū),F(xiàn)LAGA狀態(tài)標(biāo)志重新變?yōu)楦唠娖?,然后消費(fèi)端點(diǎn)將數(shù)據(jù)上傳給上位機(jī),接著USB套接字發(fā)送一個(gè)中斷給FX3 CPU,來(lái)告知USB套接字已經(jīng)清空了DMA 緩沖區(qū),至此DMA通道即可轉(zhuǎn)到第二個(gè)緩沖器。外部FPGA主設(shè)備必須監(jiān)控FLAGA,以確定何時(shí)完成切換操作,以及何時(shí)可同下一個(gè)緩沖區(qū)進(jìn)行數(shù)據(jù)訪問(wèn)。

在FX3的固件程序的 cyfxslfifo.c 文件中,添加一個(gè)CyU3PgpifSocketConfigure() API 調(diào)用,以指定水印值,水印值決定何時(shí)激活局部標(biāo)志FLAGB。圖7中,F(xiàn)LAGB在寫(xiě)入最后數(shù)據(jù)字的同一個(gè)周期內(nèi)轉(zhuǎn)為低電平。

4 系統(tǒng)測(cè)試

在完成了系統(tǒng)的設(shè)計(jì)后對(duì)系統(tǒng)進(jìn)行數(shù)據(jù)傳輸性能測(cè)試。首先通過(guò)信號(hào)發(fā)生器來(lái)代替?zhèn)鞲衅髋c信號(hào)調(diào)理電路輸入模擬鋸齒波信號(hào)給ADC,圖8為實(shí)驗(yàn)室某上位機(jī)記錄儀通過(guò)USB 3.0接口接收到的鋸齒波數(shù)據(jù)。由圖8知波形與信號(hào)發(fā)生器的輸出一致,表明數(shù)據(jù)傳輸正確。

圖9為利用Cypress 公司streamer軟件進(jìn)行測(cè)試系統(tǒng)的傳輸速度,本系統(tǒng)的測(cè)試速度達(dá)到了252 900 KB/s,即247.0 MB/s的超高速度,相比于先前使用的USB 2.0接口的速度,有了非常明顯的提高,并且整個(gè)傳輸過(guò)程沒(méi)有錯(cuò)誤出現(xiàn)。

5 結(jié) 語(yǔ)

本文設(shè)計(jì)了基于USB 3.0同步從FIFO模式的高速數(shù)據(jù)傳輸系統(tǒng),采用FPGA作為整個(gè)系統(tǒng)主控芯片,借助其非常高效的并行處理能力,并與A/D轉(zhuǎn)換模塊、DDR2數(shù)據(jù)緩存模塊及USB 3.0通信模塊相結(jié)合,使得數(shù)據(jù)的采集、轉(zhuǎn)換、存儲(chǔ)和傳輸能夠協(xié)調(diào)進(jìn)行,達(dá)到了數(shù)據(jù)采集后的的高速傳輸?shù)囊?。?jīng)過(guò)多次傳輸測(cè)試,表明該系統(tǒng)的傳輸速度可達(dá)247.0 MB/s,而且系統(tǒng)非常穩(wěn)定,不會(huì)出現(xiàn)數(shù)據(jù)丟失,能夠可靠完成數(shù)據(jù)的高速傳輸。

參考文獻(xiàn)

[1] 張文棟.存儲(chǔ)測(cè)試系統(tǒng)的設(shè)計(jì)理論及其應(yīng)用[M].北京:高等教育出版社,2002:34?40.

[2] 岳孝忠,裴東興,王健.基于USB 3.0接口高速數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)[J].電子器件,2015(1):140?143.

[3] 朱耀麟,馬慧銘.USB 3.0超高速多串口傳輸系統(tǒng)的設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2013(9):129?131.

[4] Hewlett?Packard Company, Intel Corporation, Microsoft Corporation, et al. Universal serial bus 3.0 specification [R]. USA:Alan Berkema, 2011: 45?57.

[5] 蘆艷芳,郭林.USB 3.0兼容性與電源分配方案[J].電腦知識(shí)與技術(shù),2010(27):7649?7650.

[6] 馬青.高速數(shù)據(jù)采集信號(hào)調(diào)理電路的研究[D].哈爾濱:哈爾濱理工大學(xué),2009.

[7] 柯艷,李杰,孔祥雷,等.基于USB 2.0的多路數(shù)據(jù)采集系統(tǒng)上位機(jī)軟件設(shè)計(jì)[J].測(cè)試技術(shù)學(xué)報(bào),2010(4):351?356.

[8] Cypress Semiconductor. EZ?USB FX3 technical reference manual [R]. USA:San Jose, 2011: 125?170.

[9] 楊世錫,梁文軍,于保華.振動(dòng)信號(hào)多通道同步整周期數(shù)據(jù)采集卡設(shè)計(jì)[J].振動(dòng)、測(cè)試與診斷,2013,33(1):23?28.

[10] Cypress Semiconductor. FX3 programmers manual [R]. USA: San Jose, 2011:39?49.

[11] 楊少博,裴東興,岳孝忠.高速數(shù)據(jù)采集系統(tǒng)中USB 3.0數(shù)據(jù)傳輸接口設(shè)計(jì)[J].電子器件,2015(4):912?916.

猜你喜歡
緩沖區(qū)線程傳輸
混合型隨機(jī)微分方程的傳輸不等式
牽引8K超高清傳輸時(shí)代 FIBBR Pure38K
電子制作(2018年18期)2018-11-14
嫩江重要省界緩沖區(qū)水質(zhì)單因子評(píng)價(jià)法研究
淺談linux多線程協(xié)作
支持長(zhǎng)距離4K HDR傳輸 AudioQuest Pearl、 Forest、 Cinnamon HDMI線
關(guān)鍵鏈技術(shù)緩沖區(qū)的確定方法研究
基于上下文定界的Fork/Join并行性的并發(fā)程序可達(dá)性分析*
Linux線程實(shí)現(xiàn)技術(shù)研究
地理信息系統(tǒng)繪圖緩沖區(qū)技術(shù)設(shè)計(jì)與實(shí)現(xiàn)
安溪县| 德州市| 揭西县| 越西县| 民乐县| 明溪县| 丽水市| 谢通门县| 钟山县| 昌平区| 南充市| 游戏| 瑞安市| 什邡市| 贵定县| 达州市| 潮安县| 定陶县| 荥阳市| 莱州市| 黑水县| 祁阳县| 云和县| 温宿县| 永平县| 永丰县| 大化| 隆安县| 中阳县| 仁布县| 洛宁县| 安宁市| 花莲县| 徐州市| 庆云县| 光山县| 遂溪县| 清新县| 清水县| 钦州市| 民权县|