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

?

基于FPGA和USB3.0的通用數(shù)據(jù)傳輸系統(tǒng)設(shè)計(jì)

2017-04-26 10:42:17王永綱
關(guān)鍵詞:外設(shè)寄存器上位

匡 鵬,劉 沖,王永綱

(中國科學(xué)技術(shù)大學(xué) 近代物理系,安徽 合肥 230026)

基于FPGA和USB3.0的通用數(shù)據(jù)傳輸系統(tǒng)設(shè)計(jì)

匡 鵬,劉 沖,王永綱

(中國科學(xué)技術(shù)大學(xué) 近代物理系,安徽 合肥 230026)

現(xiàn)場可編程門陣列(FPGA)的高度靈活性和強(qiáng)大的數(shù)據(jù)處理能力,使其在越來越多的領(lǐng)域得到應(yīng)用。USB 3.0也是目前主流的數(shù)據(jù)傳輸協(xié)議之一,具有速度快、功耗低等優(yōu)點(diǎn)。將USB 3.0接口應(yīng)用到FPGA上,能夠有效地解決FPGA與上位機(jī)之間的數(shù)據(jù)傳輸問題,大大提高生產(chǎn)效率。文章利用USB 3.0的控制器芯片CYUSB3014實(shí)現(xiàn)了FPGA與上位機(jī)之間的高達(dá)390 MB/s的數(shù)據(jù)傳輸系統(tǒng)。

高速數(shù)據(jù)傳輸系統(tǒng);現(xiàn)場可編程門陣列;USB 3.0;CYUSB3014

0 引言

現(xiàn)場可編程門陣列(FPGA)具有極高的靈活性以及強(qiáng)大的數(shù)據(jù)處理能力,在科學(xué)研究、大型實(shí)驗(yàn)儀器和商用醫(yī)療設(shè)備等諸多領(lǐng)域中早已被成熟使用。但是FPGA本身并沒有提供任何與上位機(jī)通信的接口,這使得FPGA與上位機(jī)之間傳輸數(shù)據(jù)變得很不方便。開發(fā)者每次都必須根據(jù)具體外設(shè)重新開發(fā)FPGA和上位機(jī)的數(shù)據(jù)傳輸系統(tǒng),從而降低了開發(fā)效率。

通用串行總線(USB)3.0標(biāo)準(zhǔn)早在2008年就已經(jīng)提出,現(xiàn)在已取代USB2.0成為USB主要使用版本。USB3.0比USB2.0有更高的傳輸速度和更低的功耗。USB3.0的協(xié)議速度高達(dá)5.0 Gb/s(625 MB/s),是USB2.0的10倍之多。CYUSB3014是賽普拉斯(CYPRESS)公司設(shè)計(jì)的一款USB3.0外設(shè)控制芯片,它的主要功能是在USB主機(jī)與外設(shè)之間傳輸高寬帶數(shù)據(jù)。該芯片提供一個(gè)第二代通用可編程接口(GPIF II),開發(fā)者可以對(duì)GPIF II和FPGA編程,來實(shí)現(xiàn)從FPGA到USB控制器,再到上位機(jī)的數(shù)據(jù)傳輸通道。

本文利用USB3.0外設(shè)控制器CYUSB3014,實(shí)現(xiàn)了基于FPGA與上位機(jī)之間的數(shù)據(jù)傳輸接口設(shè)計(jì)[1-3]。經(jīng)測試,本設(shè)計(jì)可以實(shí)現(xiàn)390 MB/s的FPGA到上位機(jī)的數(shù)據(jù)傳輸通道,以及355 MB/s的上位機(jī)到FPGA的數(shù)據(jù)傳輸通道,幾乎達(dá)到了該芯片支持的最高速度(400 MB/s)。

1 系統(tǒng)結(jié)構(gòu)

圖1為整個(gè)系統(tǒng)的結(jié)構(gòu)。上位機(jī)的軟件應(yīng)用程序(例如MATLAB)通過調(diào)用驅(qū)動(dòng)程序中的應(yīng)用程序編程接口(API),向CYUSB3014控制器發(fā)送數(shù)據(jù)或從它接收數(shù)據(jù);USB控制器芯片內(nèi)部通過直接內(nèi)存存取(DMA)互聯(lián)結(jié)構(gòu)建立USB端點(diǎn)到GPIF II的數(shù)據(jù)傳輸通道;FPGA內(nèi)部接口邏輯模塊負(fù)責(zé)其他邏輯模塊與GPIF之間的數(shù)據(jù)傳輸。

圖1 系統(tǒng)整體結(jié)構(gòu)

本設(shè)計(jì)以FPGA接口邏輯為主設(shè)備,GPIF為從設(shè)備,接口邏輯負(fù)責(zé)控制整個(gè)系統(tǒng)的工作狀態(tài)。為了通用性起見,本文設(shè)計(jì)了上位機(jī)對(duì)FPGA進(jìn)行FIFO讀寫和寄存器讀寫共4種功能。FIFO讀寫可以完成高寬帶高速數(shù)據(jù)的雙向傳輸;寄存器讀寫則可以完成控制和監(jiān)測的功能。這樣的設(shè)計(jì)能夠滿足大部分FPGA設(shè)計(jì)對(duì)上位機(jī)接口的需求。

2 控制器芯片工作原理

賽普拉斯公司設(shè)計(jì)生產(chǎn)的USB3.0外設(shè)控制芯片CYUSB3014具有高度集成的靈活特性,它具有一個(gè)可進(jìn)行完全配置的并行通用可編程接口GPIF II,可與任何處理器、ASIC或FPGA連接。芯片集成了USB 3.0和USB 2.0物理層(PHY)以及32位ARM926EJ-S微處理器,具有強(qiáng)大的數(shù)據(jù)處理能力,并可用于構(gòu)建定制應(yīng)用[1]。

圖2表示了控制器芯片的數(shù)據(jù)輸入輸出。其中DMA描述符(DMA Descriptor)保存了DMA緩沖區(qū)的地址和大小,以及指向下一個(gè)DMA描述符的指針。套接字(Socket)是外設(shè)硬件模塊與RAM之間的連接點(diǎn),每個(gè)外設(shè)硬件模塊(如USB、GPIF、UART和SPI)具有各自固定的套接字?jǐn)?shù)量,簡單來說可以把套接字看成外設(shè)的接口。DMA緩沖區(qū)(DMA Buffer)是RAM的一部分,用來緩存外設(shè)間需要傳輸?shù)臄?shù)據(jù),這部分RAM的地址正是DMA描述符中保存的地址。

圖2 DMA通道示意圖

當(dāng)外設(shè)之間進(jìn)行數(shù)據(jù)傳輸時(shí),例如將GPIF的數(shù)據(jù)傳輸?shù)経SB端點(diǎn),控制器會(huì)自動(dòng)加載相應(yīng)的DMA描述符,然后從GPIF的套接字接收數(shù)據(jù),保存到RAM中DMA描述符所指定的地址。當(dāng)前DMA描述符處理完后,系統(tǒng)會(huì)自動(dòng)加載下一個(gè)DMA描述符。DMA緩沖區(qū)的切換需要消耗幾個(gè)微秒的時(shí)間,在切換DMA緩沖區(qū)時(shí),當(dāng)前的DMA通道不能進(jìn)行數(shù)據(jù)傳輸[4]。當(dāng)某個(gè)DMA緩沖區(qū)被寫滿,或者GPIF主動(dòng)提交數(shù)據(jù)包時(shí),系統(tǒng)開始把該緩沖區(qū)的數(shù)據(jù)發(fā)送到USB端點(diǎn)。從USB端點(diǎn)到GPIF的數(shù)據(jù)傳輸過程與之類似,只不過數(shù)據(jù)傳輸?shù)姆较騽偤孟喾础?/p>

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

3.1 控制器芯片固件設(shè)計(jì)

USB控制器芯片的固件設(shè)計(jì)包括GPIF II狀態(tài)機(jī)設(shè)計(jì)和運(yùn)行于芯片內(nèi)部ARM微處理器上的可執(zhí)行程序設(shè)計(jì)。其中,GPIF II狀態(tài)機(jī)的設(shè)計(jì)是關(guān)鍵,它描述了USB芯片如何響應(yīng)主設(shè)備FPGA接口邏輯模塊發(fā)出的請求。

圖3給出了USB控制芯片與FPGA的接口連接。其中,CLK是由FPGA提供的頻率最高為100 MHz的時(shí)鐘信號(hào)。DATA信號(hào)是雙向數(shù)據(jù)線,完成GPIF與FPGA之間的雙向數(shù)據(jù)傳輸。ADDR為地址線,用于選擇使用哪個(gè)GPIF進(jìn)程傳輸數(shù)據(jù)。GPIF共有4個(gè)獨(dú)立進(jìn)程,每個(gè)進(jìn)程與相應(yīng)的DMA通道綁定。FPGA通過改變地址線ADDR,從而選擇使用哪個(gè)DMA通道進(jìn)行數(shù)據(jù)傳輸。控制信號(hào)均由FPGA發(fā)出,控制信號(hào)包括SLOE、SLCS、SLWR、SLRD、PKTEND,這些信號(hào)均為低電平有效。SLCS為片選信號(hào),系統(tǒng)工作時(shí),SLCS必須始終有效(即始終為0)。SLRD為讀請求信號(hào),該信號(hào)有效時(shí),GPIF會(huì)把緩存在RAM中的數(shù)據(jù)傳輸給FPGA。SLOE為輸出使能信號(hào),它的唯一作用是驅(qū)動(dòng)數(shù)據(jù)總線DATA翻轉(zhuǎn)。因?yàn)镕PGA發(fā)出讀請求后,USB芯片并不能立刻將有效數(shù)據(jù)傳遞到GPIF端點(diǎn),從SLRD有效到DATA有效有兩個(gè)時(shí)鐘周期的延遲[5],因此需要額外的數(shù)據(jù)總線驅(qū)動(dòng)信號(hào)SLOE。SLWR是寫請求信號(hào),該信號(hào)有效時(shí),F(xiàn)PGA會(huì)發(fā)送數(shù)據(jù)給GPIF,GPIF隨之將這些數(shù)據(jù)緩存在RAM中。PKTEND為傳輸結(jié)束信號(hào),該信號(hào)用來標(biāo)志此次數(shù)據(jù)傳輸結(jié)束。

圖3 FPGA與GPIF之間的接口連接

另外,還有4個(gè)DMA標(biāo)志信號(hào)FLAGX。這些信號(hào)由USB芯片發(fā)出,F(xiàn)PGA接收。這些信號(hào)并不是由GPIF狀態(tài)機(jī)控制的,F(xiàn)LAG信號(hào)用來標(biāo)志指定DMA通道對(duì)應(yīng)的緩沖區(qū)的狀態(tài)。

3.2 FPGA接口設(shè)計(jì)

FPGA接口既要完成與USB控制器GPIF II對(duì)接,同時(shí)也要提供對(duì)FPGA內(nèi)部邏輯模塊的數(shù)據(jù)傳輸接口。FPGA接口邏輯是本系統(tǒng)的核心,它作為主設(shè)備,控制著從設(shè)備GPIF的工作狀態(tài)。FPGA接口邏輯模塊內(nèi)部有一些標(biāo)志工作狀態(tài)的寄存器,用戶可以通過上位機(jī)軟件來配置這些寄存器,從而指定整個(gè)系統(tǒng)的工作模式。因此,在執(zhí)行某種操作之前,需要通過上位機(jī)軟件先對(duì)FPGA接口邏輯模塊進(jìn)行配置。

圖4 FPGA接口邏輯對(duì)外提供的接口

FPGA接口邏輯除了具有3.1節(jié)中與GPIF II相連接的接口外,還提供了其他接口與FPGA內(nèi)部其他邏輯模塊相連接。圖4給出了這些接口信號(hào)。CLK是接口的工作時(shí)鐘(100 MHz),同時(shí)這個(gè)時(shí)鐘也是GPIF II的工作時(shí)鐘。RST是全局復(fù)位信號(hào)。剩下的信號(hào)則用來完成FIFO讀寫和寄存器讀寫的功能。

在進(jìn)行FIFO讀操作時(shí),使用的接口信號(hào)是RD_ACK、RD_VALID和RD_DATA。當(dāng)RD_VALID有效時(shí),標(biāo)志著外部FIFO數(shù)據(jù)有效,RD_ACK作為應(yīng)答信號(hào)告知外部邏輯已經(jīng)完成對(duì)該有效數(shù)據(jù)的讀取。使用時(shí),先通過上位機(jī)軟件對(duì)接口邏輯模塊進(jìn)行配置,配置的信息確定了接口模塊將工作在讀FIFO模式,同時(shí)還確定了此次讀FIFO的數(shù)據(jù)個(gè)數(shù)。當(dāng)讀取FIFO的數(shù)據(jù)個(gè)數(shù)達(dá)到上位機(jī)所請求的個(gè)數(shù)時(shí),接口邏輯模塊停止讀取外部FIFO,同時(shí)停止向GPIF發(fā)送數(shù)據(jù),并且發(fā)出PKTEND信號(hào),標(biāo)志著此次傳輸結(jié)束。

在進(jìn)行FIFO寫操作時(shí),使用的接口信號(hào)是WR_ACK、WR_READY、WR_DATA。當(dāng)WR_READY有效時(shí),標(biāo)志著接口模塊可以向外部FIFO寫入數(shù)據(jù),WR_ACK作為應(yīng)答信號(hào)告知外部邏輯已經(jīng)完成了數(shù)據(jù)的寫入。與讀FIFO類似,使用時(shí)先通過上位機(jī)軟件對(duì)接口模塊進(jìn)行配置。配置信息確定了接口模塊工作在FIFO寫模式,同時(shí)確定了將要寫入的數(shù)據(jù)個(gè)數(shù)。

圖5 FPGA接口邏輯狀態(tài)機(jī)

圖5給出了FPGA接口邏輯模塊的狀態(tài)機(jī)向GPIF收發(fā)數(shù)據(jù)時(shí)的工作流程。系統(tǒng)最初處在空閑狀態(tài)(IDLE),然后根據(jù)配置信息確定的工作模式,以及DMA通道的FLAG標(biāo)志信號(hào),進(jìn)入相應(yīng)的狀態(tài)機(jī)流程中。

此外,接口邏輯模塊還實(shí)現(xiàn)了寄存器讀寫的功能,寄存器讀寫使用的DMA通道與FIFO讀寫的通道相同,只是傳輸?shù)臄?shù)據(jù)個(gè)數(shù)始終為1。

3.3 上位機(jī)軟件設(shè)計(jì)

賽普拉斯官方提供了USB控制器芯片的驅(qū)動(dòng)程序,并且提供了相應(yīng)的應(yīng)用程序接口(API)。為了使用方便,本設(shè)計(jì)在官方提供的API基礎(chǔ)上,將主要功能(FIFO讀寫和寄存器讀寫)用C++封裝成動(dòng)態(tài)鏈接庫(DLL)。這樣用戶可以直接在自己的C/C++工程中調(diào)用已經(jīng)封裝好的庫函數(shù)。在封裝庫函數(shù)時(shí),已經(jīng)將配置FPGA接口模塊這步工作封裝在了相應(yīng)的功能函數(shù)中,這樣用戶就不必先單獨(dú)配置FPGA邏輯模塊。

考慮到現(xiàn)在大部分研究階段的數(shù)據(jù)處理工作都是使用MATLAB進(jìn)行,本設(shè)計(jì)進(jìn)一步將DLL函數(shù)封裝成MATLAB函數(shù),以便MATLAB能夠直接使用USB的相關(guān)功能。

4 測試結(jié)果

4.1 測試環(huán)境

測試環(huán)境如表1所示。

表1 測試環(huán)境

4.2 寄存器讀寫測試

寄存器讀寫只涉及到正確性問題,測試工程在FPGA內(nèi)部例化了16個(gè)32 bit的寄存器。測試時(shí)對(duì)某個(gè)寄存器隨機(jī)寫入一個(gè)數(shù)值,然后再把該寄存器的值讀回來,比較讀取的值是否等于寫入的數(shù)值。經(jīng)循環(huán)對(duì)這16個(gè)寄存器進(jìn)行讀寫測試,發(fā)現(xiàn)寄存器讀寫功能能夠穩(wěn)定地正常工作。

4.3 FIFO回環(huán)測試

FIFO回環(huán)測試是為了驗(yàn)證FIFO讀寫的正確性。測試時(shí),MATLAB先將1 024個(gè)數(shù)據(jù)寫入到FPGA的FIFO中,然后再將這些數(shù)據(jù)從該FIFO中讀出,驗(yàn)證讀出的數(shù)據(jù)是否是原來寫入的數(shù)據(jù)。經(jīng)過測試,F(xiàn)IFO讀寫也能正常穩(wěn)定地工作。

4.4 讀寫FIFO速度測試

經(jīng)測試,本設(shè)計(jì)讀FIFO的速度能夠達(dá)到390 MB/s左右,而寫FIFO的速度能夠達(dá)到355 MB/s左右。

5 結(jié)論

本設(shè)計(jì)利用USB 3.0控制器芯片CYUSB3014實(shí)現(xiàn)了FPGA與上位機(jī)之間的高寬帶數(shù)據(jù)傳輸系統(tǒng)。主要實(shí)現(xiàn)的功能包括上位機(jī)對(duì)FPGA的寄存器讀寫和FIFO讀寫。經(jīng)測試,這些功能都能穩(wěn)定地正常工作。上位機(jī)讀FIFO的速度能夠達(dá)到390 MB/s,寫FIFO的速度能夠達(dá)到355 MB/s,接近于CYUSB3014芯片支持的理論最高速度400 MB/s。之所以讀FIFO的速度會(huì)比寫FIFO的速度高出不少,主要原因是因?yàn)樵谠O(shè)計(jì)固件程序時(shí),讀FIFO使用了DMA雙通道,而寫FIFO則只使用了DMA單通道。

[1] 陳松. 基于USB3.0的高速數(shù)據(jù)傳輸系統(tǒng)的研究與設(shè)計(jì)[D]. 成都: 電子科技大學(xué), 2014.

[2] 徐超, 劉沖, 王永綱. 基于FPGA和USB2.0協(xié)議的通用數(shù)據(jù)傳輸設(shè)計(jì)[J]. 微型機(jī)與應(yīng)用, 2016,35(16): 41-43.

[3] 王成儒, 李英偉. USB2.0原理與工程開發(fā)[M]. 北京: 國防工業(yè)出版社, 2004.

[4] Manaskant Desai, Karthik Sivaramskrishnan. O-ptimizing USB 3.0 throughput with EZ-USB?FX3TM[EB/OL]. (2015-10-22)[2016-10-30]. http://www.cypress.com/file/125281.

[5] Rama Sai Krishna V. Designing with the EZ-USB FX3 Slave FIFO Interface[EB/OL]. (2014-07-21)[2016-10-30]. http://www.cypress.com/file/136056.

Design of universal data transmission system based on FPGA and USB3.0

Kuang Peng, Liu Chong, Wang Yonggang

(Department of Modern Physics, University of Science and Technology of China, Hefei 230026, China)

Field-programmable gate array (FPGA) is used more and more in various fields due to the highly flexible and powerful ability of data processing. USB 3.0 is one of the mainstream data transmission protocols, with the advantages of fast speed and low power consumption. Implementing USB 3.0 interface on FPGA can effectively solve the problem of data transmission between FPGA and the host computer, greatly improve production efficiency. In this paper, a data transmission system between FPGA and the host computer is designed and implemented with the USB 3.0 controller CYUSB3014, which achieves transmission speed of up to 390 MB/s.

high throughput data transmission system; FPGA; USB 3.0; CYUSB3014

TP334.7;TN791

A

10.19358/j.issn.1674- 7720.2017.07.008

匡鵬,劉沖,王永綱.基于FPGA和USB3.0的通用數(shù)據(jù)傳輸系統(tǒng)設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2017,36(7):26-28,34.

2016-11-14)

匡鵬(1991-),通信作者,男,碩士研究生,主要研究方向:FPGA邏輯設(shè)計(jì)。E-mail: kp77@mail.ustc.edu.cn。

劉沖(1989-),男,博士,主要研究方向:基于FPGA的高精度TDC系統(tǒng)研究與設(shè)計(jì)。

王永綱(1965-),男,博士,教授,博士生導(dǎo)師,主要研究方向:正電子斷層掃描(PET)系統(tǒng)研究與設(shè)計(jì)。

猜你喜歡
外設(shè)寄存器上位
Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
特斯拉 風(fēng)云之老阿姨上位
車迷(2018年12期)2018-07-26 00:42:22
分簇結(jié)構(gòu)向量寄存器分配策略研究*
“三扶”齊上位 決戰(zhàn)必打贏
基于ZigBee和VC上位機(jī)的教室智能監(jiān)測管理系統(tǒng)
以新思路促推現(xiàn)代農(nóng)業(yè)上位
Microchip推出具備雙ADC外設(shè)的全新器件,擴(kuò)展其低成本8位PIC?單片機(jī)產(chǎn)品線
高速數(shù)模轉(zhuǎn)換器AD9779/AD9788的應(yīng)用
一種可重構(gòu)線性反饋移位寄存器設(shè)計(jì)
貼身呵護(hù) 必不可少的PSP外設(shè)
建昌县| 海南省| 岱山县| 韶山市| 光泽县| 莫力| 徐州市| 六枝特区| 深圳市| 宽甸| 和林格尔县| 石楼县| 上杭县| 江阴市| 新巴尔虎右旗| 云安县| 安龙县| 威远县| 盐津县| 石城县| 辽中县| 土默特右旗| 阳泉市| 皮山县| 弥勒县| 连云港市| 哈巴河县| 瑞丽市| 通化市| 潢川县| 黄陵县| 徐汇区| 安塞县| 天津市| 卢氏县| 甘泉县| 黑山县| 保定市| 留坝县| 宜良县| 古丈县|