新聞中心

EEPW首頁 > EDA/PCB > 設(shè)計應(yīng)用 > 基于FPGA的異步USB數(shù)據(jù)傳輸系統(tǒng)設(shè)計

基于FPGA的異步USB數(shù)據(jù)傳輸系統(tǒng)設(shè)計

作者: 時間:2016-10-18 來源:網(wǎng)絡(luò) 收藏

摘要:設(shè)計實現(xiàn)了以為主控制單元,采用EZ-USB FX2微處理器為接口芯片的快速系統(tǒng)。文章給出了和CY7C68013之間的軟硬件設(shè)計方案,著重介紹了內(nèi)部建構(gòu)的FIFO原理及程序?qū)崿F(xiàn)方法,并以FLASH存儲模塊為例,通過FX2與FLASH握手過程的設(shè)計,實現(xiàn)了數(shù)據(jù)存儲器與計算機之間的數(shù)據(jù)高速傳輸。應(yīng)用結(jié)果表明,此系統(tǒng)可靠有效,具有一定的通用性,可用于其他使用USB進行數(shù)據(jù)傳輸?shù)南到y(tǒng)中。

本文引用地址:http://www.butianyuan.cn/article/201610/308420.htm

0 引言

現(xiàn)代電子技術(shù)的進步使得外設(shè)的種類日益繁多,接入數(shù)量急劇增加,傳統(tǒng)的安裝數(shù)據(jù)采集卡的方式,由于存在安裝不便、擴展困難、傳輸質(zhì)量不高等諸多缺點,漸漸滿足不了數(shù)據(jù)采集過程中對復(fù)雜外設(shè)和數(shù)據(jù)傳輸速率的要求。此外,在需要移動數(shù)據(jù)采集的場合,普通筆記本電腦以及絕大部分便攜式數(shù)據(jù)采集設(shè)備都不再提供PCI插槽。因此采用統(tǒng)一、便捷的數(shù)據(jù)傳輸接口來替代原有方式,其緊迫性日益凸顯。通用串行總線(USB)作為一個接口規(guī)范把不同類型的接口統(tǒng)一起來,且其外接設(shè)備具有熱插拔、易擴展、傳輸速度快等優(yōu)點,已經(jīng)成為各類筆記本和便攜設(shè)備數(shù)據(jù)傳輸?shù)闹髁鹘涌凇?/p>

本設(shè)計使用支持USB2.0協(xié)議的CY7C68013芯片,作為上位機與FPGA之間的傳輸接口,以FPGA為主控制單元,實現(xiàn)了數(shù)據(jù)的高速傳輸。文章給出了此數(shù)據(jù)傳輸系統(tǒng)的硬件設(shè)計方案,著重介紹了FPGA控制模塊中內(nèi)部集成FIFO的結(jié)構(gòu)原理和關(guān)鍵程序模塊的實現(xiàn)方式。本系統(tǒng)設(shè)計方案結(jié)構(gòu)簡單、傳輸速度快、具有一定的可擴展性。

1 系統(tǒng)硬件設(shè)計

數(shù)據(jù)傳輸系統(tǒng)硬件原理框圖如圖1所示,主要由USB傳輸控制器EZ-USB FX2、FPGA主控制單元、外設(shè)模塊構(gòu)成。數(shù)據(jù)采集模塊在中心控制單元的控制下對信號、數(shù)據(jù)等進行采集,并把數(shù)據(jù)最終轉(zhuǎn)入數(shù)據(jù)外設(shè)中進行存儲。上位機經(jīng)傳輸控制模塊(FX2)發(fā)送控制指令到主控制單元(FPGA)內(nèi)部后,經(jīng)過串并轉(zhuǎn)換進行指令解碼,解碼后按照相應(yīng)的指令要求從數(shù)據(jù)外設(shè)(FLASH)中進行數(shù)據(jù)讀取。從而實現(xiàn)將外設(shè)存儲系統(tǒng)中的數(shù)據(jù)快速上傳到上位機中保存處理。

基于FPGA的異步USB數(shù)據(jù)傳輸系統(tǒng)設(shè)計

1.1 USB傳輸控制器

本系統(tǒng)USB傳輸接口芯片選擇Cypress公司的CY7C68013,它是Cypress公司推出的EZ-USB FX2系列產(chǎn)品之一,集成USB2.0的微處理器,具有增強型8051內(nèi)核性能,智能串行引擎(SIE),通用可編程接口(GPIF),8.5KB的RAM和FIFO存儲器,支持12Mb/s的全速速率和1480 Mb/s的高速傳輸速率,最大限度地滿足了USB 2.0的總線帶寬。其內(nèi)部結(jié)

構(gòu)如圖2所示。

基于FPGA的異步USB數(shù)據(jù)傳輸系統(tǒng)設(shè)計

CY7C68013由于其內(nèi)部集成有獨立于微處理器的USB核,其可被配置成GPIF(可編程接口)和SlaveFIFO(主從)等多種接口模式,使數(shù)據(jù)傳輸通過執(zhí)行USB本身的協(xié)議來完成。在此過程中CPU可不參與數(shù)據(jù)傳輸,從而使數(shù)據(jù)的傳輸速率大大提高,同時也簡化了固件代碼的編寫。本設(shè)計采用FX2的GPIF數(shù)據(jù)傳輸方式,時序簡單、編程靈活,可以很容易地從RAM中讀取數(shù)據(jù)。

1.2 FPGA主控制單元

本設(shè)計采用Altera公司的EP1K30QC208作為主控芯片,實現(xiàn)對數(shù)據(jù)傳輸過程的控制。它包括1728個邏輯單元,成本較低,適用于小系統(tǒng)編程。在此硬件系統(tǒng)中FPGA的作用主要有二個:一是實現(xiàn)對所傳輸數(shù)據(jù)的控制。上位機經(jīng)USB傳輸控制模塊(FX2)發(fā)送控制指令到FPGA主控制單元后,經(jīng)過其內(nèi)部串并轉(zhuǎn)換,實現(xiàn)指令解碼。解碼后按照要求從數(shù)據(jù)外設(shè)(FLASH)中進行數(shù)據(jù)讀取,并根據(jù)FIFO狀態(tài)進行數(shù)據(jù)傳輸控制;二是內(nèi)部建構(gòu)一個FIFO存儲器。由于本設(shè)計是對FLASH存儲器進行讀數(shù)操作,其數(shù)據(jù)傳輸是以頁為單位,讀數(shù)時頁與頁之間有一小段時間間隔,數(shù)據(jù)輸出不是連續(xù)的。為實現(xiàn)FX2讀取FLASH中的數(shù)據(jù),需要在FPGA建構(gòu)FIFO作為數(shù)據(jù)過渡,先將FLASH中的數(shù)據(jù)讀到FIFO中,CY7C68013傳輸控制器再從FIFO中讀取數(shù)據(jù)。

2 主控單元軟件設(shè)計

根據(jù)本系統(tǒng)主控制單元的作用,F(xiàn)PGA要實現(xiàn)上文所述的主要功能,其關(guān)鍵在于FX2與FLASH的握手過程的設(shè)計,滿足此過程的內(nèi)部FIFO的建構(gòu)和相關(guān)標志信號的產(chǎn)生。

2.1 FX2與FLASH的握手過程

FPGA主控單元先將數(shù)據(jù)存儲到內(nèi)部的FIFO中,然后CY7C68013再從FIFO中讀取數(shù)據(jù)。由于讀取和寫入的速度是不同的,可能讀比寫快,也可能寫比讀快。為防止傳輸時數(shù)據(jù)丟失,設(shè)計如下的握手過程:FPGA內(nèi)部的“讀數(shù)控制”模塊不斷進行判斷,只要FIFO不滿它就一直向FIFO中寫入數(shù)據(jù)。對于外部FX2,只要判斷FIFO不空它就從FIFO中讀取數(shù)據(jù)。這樣FIFO的讀寫就組成了一個閉環(huán),保證了讀數(shù)的完整準確。在數(shù)據(jù)傳輸握手方式確定以后可能出現(xiàn)兩種情況:1)FIFO的寫入速度大于讀取速度,這樣寫地址慢慢就追上讀地址,此時總的傳輸速度就取決于讀取速度。2)FIFO的讀取速度大于寫入速度,這樣讀地址慢慢就追上寫地址,此時總的傳輸速度就由寫入速度決定。在FPGA中編寫“標志位

產(chǎn)生”程序模塊,產(chǎn)生滿、空信號作為FX2與FLASH傳輸過程中的握手信號,是保證數(shù)據(jù)傳輸穩(wěn)定可靠的關(guān)鍵。

2.2 內(nèi)部建構(gòu)的FIFO原理及關(guān)鍵程序的流程

FIFO的本質(zhì)是一種特殊的雙口RAM,大部分FPGA內(nèi)部就有雙口RAM資源。FIFO結(jié)構(gòu)的特點是先進先出,對外它是一種沒有地址控制的特殊緩存。在程序編寫過程中,內(nèi)部FIFO要求只要接收RD、WR使能信號,就能進行讀寫工作。在此過程中,整個FIFO模塊對外不顯示地址,只需要給出表現(xiàn)內(nèi)部狀態(tài)的滿、半滿和空信號即可。FX2和FPGA內(nèi)部的“讀數(shù)控制”模塊根據(jù)這些信號對FIFO進行數(shù)據(jù)傳輸控制。FPGA內(nèi)部建構(gòu)的FIFO原理圖如圖3所示。

基于FPGA的異步USB數(shù)據(jù)傳輸系統(tǒng)設(shè)計

FIFO產(chǎn)生滿、空狀態(tài)標志信號由“標志位產(chǎn)生”程序模塊產(chǎn)生,滿、空狀態(tài)信號均采用寫地址和讀地址相減(或讀地址和寫地址相減)的結(jié)果來判斷雙口RAM此時的狀態(tài)。此外,還可以據(jù)此得到FIFO的半滿狀態(tài)信號,以此可容易地標示FIFO滿空深度。FIFO滿、空、半滿標志信號的程序流程基本一致,只不過判斷比較的差值存在不同。FIFO滿時地址差值為1023,空時為1,半滿是差值大于512。以半滿信號產(chǎn)生為例,標志位產(chǎn)生程序流程如圖4所示。

基于FPGA的異步USB數(shù)據(jù)傳輸系統(tǒng)設(shè)計

為了避免時序錯誤,還可以任意設(shè)定一定的滿空深度。例如可以設(shè)定當(dāng)?shù)刂凡畲笥?000時即認為FIFO己滿,不再向FIFO中寫入數(shù)據(jù),以避免錯誤的出現(xiàn)。

3 結(jié)語

隨著便攜式數(shù)據(jù)存儲系統(tǒng)的普及,基于USB的數(shù)據(jù)傳輸系統(tǒng)受到了普遍關(guān)注。本文設(shè)計的基于EZ-USB FX2微處理器的數(shù)據(jù)傳輸系統(tǒng),實現(xiàn)了上位機通過USB端口對FLASH存儲器的快速讀取操作,并成功地應(yīng)用在某一車載數(shù)據(jù)盒工程項目中。測試結(jié)果表明,系統(tǒng)傳輸過程穩(wěn)定,速度較高,與上位機接口方式嚴格遵守USB 2.0協(xié)議,具有很強的通用性,適合即插即用的工作場合。本系統(tǒng)基于FPGA的主控單元配置方案便于軟件系統(tǒng)的升級與調(diào)試,如果搭配合適的傳感器和相應(yīng)的信號調(diào)理電路,就可以實現(xiàn)對多種信號的采集處理,再配以合適的存儲模塊完全可以構(gòu)成完備的數(shù)據(jù)采集存儲系統(tǒng)。本設(shè)計對于一般的數(shù)據(jù)傳輸系統(tǒng)的設(shè)計及傳統(tǒng)接口改造具有一定的借鑒意義。



關(guān)鍵詞: FPGA EZ-USB FX2 數(shù)據(jù)傳輸

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉