• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于EZ-USB FX2的實時數(shù)據(jù)傳輸?shù)膶崿F(xiàn)

    2010-01-27 03:27:46惠蘭裴東興
    電子技術(shù)應(yīng)用 2010年9期
    關(guān)鍵詞:固件驅(qū)動程序緩沖區(qū)

    惠蘭,裴東興

    (中北大學(xué) 儀器科學(xué)與動態(tài)測試教育部重點實驗室,山西 太原 030051)

    基于EZ-USB FX2的實時數(shù)據(jù)傳輸?shù)膶崿F(xiàn)

    惠蘭,裴東興

    (中北大學(xué) 儀器科學(xué)與動態(tài)測試教育部重點實驗室,山西 太原 030051)

    設(shè)計了一個以FPGA作為數(shù)據(jù)處理模塊,以CY7C68013作為接口芯片的數(shù)據(jù)采集系統(tǒng)。接口芯片CY7C68013工作在GPIF模式下,在數(shù)據(jù)的傳輸中起主控作用,利用FPGA以保證數(shù)據(jù)的正確性和穩(wěn)定性,使系統(tǒng)可以達(dá)到穩(wěn)定、實時、高速的數(shù)據(jù)傳輸。

    實時傳輸;數(shù)據(jù);CY7C68013A;GPIF

    實時數(shù)據(jù)的采集以及顯示等都會涉及到PC機和下位機間的數(shù)據(jù)傳輸,而傳輸數(shù)據(jù)中的丟點問題是實時數(shù)據(jù)采集中必須解決的問題。傳統(tǒng)的數(shù)據(jù)采集系統(tǒng)由于傳輸速度低或者安裝不方便等問題已不能滿足科研和生產(chǎn)過程的需求。輸入的實時數(shù)據(jù)是帶有幀頭的8位串行數(shù)據(jù)流,直接與CY7C68013A的GPIF(General programmable interface)接口對接不能保證數(shù)據(jù)完整不丟失,并且無法在數(shù)據(jù)中加入幀識別信息。在這種情況下采用FPGA完成此部分邏輯功能。通過FPGA對實時數(shù)據(jù)進(jìn)行相應(yīng)的調(diào)整再交給CY7C68013A傳送到上位機中。

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

    1.1 系統(tǒng)結(jié)構(gòu)和數(shù)據(jù)流程

    本系統(tǒng)采用 FPGA xc2s50-144完成整個系統(tǒng)的數(shù)據(jù)采集的處理,采用具有微處理器的USB接口CY7C68013A,通過USB接口將FPGA處理后的數(shù)據(jù)實時地傳輸?shù)接嬎銠C上。當(dāng)PC機發(fā)出數(shù)據(jù)采集、讀取數(shù)據(jù)等控制命令時,控制命令通過CY7C68013A傳送給FPGA,由FPGA啟動A/D芯片進(jìn)行A/D轉(zhuǎn)換。A/D轉(zhuǎn)換后將串行數(shù)據(jù)流和時鐘發(fā)送到 FPGA中,F(xiàn)PGA通過判斷幀頭截取有效數(shù)據(jù)并將數(shù)據(jù)轉(zhuǎn)換成8位的并行數(shù)據(jù)并緩存至FPGA內(nèi)部設(shè)計的FIFO中,由上位機通過USB接口芯片CY7C68013A以GPIF主控模式將數(shù)據(jù)傳送至上位機中。系統(tǒng)總體設(shè)計圖如圖1所示。

    圖1 系統(tǒng)總體設(shè)計圖

    1.2 USB接口芯片

    CY7C68013A是Cypress公司的FX2系列產(chǎn)品,可提供480 Mb/s的傳輸速率。CY7C68013A提供了一種獨特架構(gòu),使 USB接口和應(yīng)用環(huán)境直接共享 FIFO,而且微控制器可以不參與數(shù)據(jù)傳輸,但允許它以FIFO或RAM的方式訪問這些共享FIFO,CY7C68013A的內(nèi)部FIFO緩沖區(qū)中有四個端點,它們可以通過設(shè)置相應(yīng)的EPxFIFOCFG(x是端點號)寄存器被配置為2倍、3倍或4倍緩沖區(qū)。雙緩沖區(qū)可以允許一個數(shù)據(jù)包在被8051訪問的同時,另一個進(jìn)行USB數(shù)據(jù)傳輸。3或4緩沖區(qū)則允許在2個或3個緩沖區(qū)被訪問的同時,由另一個進(jìn)行USB數(shù)據(jù)傳輸。這樣就可以把數(shù)據(jù)包可用的時間延遲減至最小,從而增加帶寬的吞吐量。CY7C68013A共有三種工作模式:分別為普通端口模式、GPIF模式和從屬 FIFO模式。這三種工作模式由寄存器選擇決定。本設(shè)計中采用GPIF主控模式,GPIF在連接到外部邏輯設(shè)備時,可充當(dāng)“內(nèi)部”控制,可以作為CY7C68013A端點 FIFO的內(nèi)部主控制器。

    1.3 硬件連接圖

    使用 GPIF方式對 FIFO芯片進(jìn)行讀寫工作并使用PORTB雙向FIFO數(shù)據(jù)線,使外圍電路像普通FIFO一樣對FX2中端點2、4、6、8的數(shù)據(jù)緩沖區(qū)進(jìn)行讀寫。當(dāng)CY7C68013A工作在GPIF模式時,由PC機上發(fā)出控制命令給USB,CY7C68013A提供FPGA的片選、讀數(shù)據(jù)時鐘等信號。接口連線圖如圖2所示。

    圖2 系統(tǒng)硬件連接圖

    2 軟件設(shè)計

    2.1 固件程序的設(shè)計

    固件的作用是輔助硬件來完成預(yù)期的設(shè)備功能,固件主要工作如下:

    (1)寄存器初始化工作,按照需要設(shè)置特殊功能寄存器的初值;

    (2)輔助硬件完成設(shè)備的枚舉過程,對主機的設(shè)備請求作出適當(dāng)?shù)捻憫?yīng);

    (3)完成中斷處理、數(shù)據(jù)接收和發(fā)送以及對外圍電路的控制。

    在固件程序中,按照 FIFO的時序圖完成GPIF波形設(shè)計,并生成波形描述符文件 GPIF.c供設(shè)備功能程序main.c調(diào)用。生成的GPIF.c會初始化波形設(shè)計用到的寄存器,包括配置接口的設(shè)計,在TD_Init()中初始化函數(shù),配置好使用的端點類型,傳輸數(shù)據(jù)包的大小。在TD_Poll()中設(shè)置好GPIF的讀數(shù)據(jù)傳輸,通過main.c中對TD_Poll()的重復(fù)調(diào)用,完成USB的大數(shù)據(jù)量傳輸。

    2.2 GPIF波形圖

    根據(jù) FPGA編寫的時序,利用 Cypress公司配置的GPIF Designer畫出相應(yīng)的時序圖,如圖3所示。

    在數(shù)據(jù)讀時序狀態(tài)設(shè)計中,在S3狀態(tài),讓讀使能REN低電平有效。在S4中判斷FPGA內(nèi)FIFO的空標(biāo)志是否有效,有效后開始進(jìn)行FIFO的讀傳輸,OE用來控制數(shù)據(jù)出現(xiàn)在數(shù)據(jù)總線上的時間。數(shù)據(jù)總線在S5時拉高是數(shù)據(jù)有效 (activate),GPIF按字節(jié)將數(shù)據(jù)讀到 FIFO中,同時TC計數(shù)器會減一。在狀態(tài)6時,以計數(shù)器的值來判斷一幀數(shù)據(jù)是否完成傳輸。如果沒有完成,則不斷循環(huán),讀完所有數(shù)據(jù)為止;如果讀完了所有數(shù)據(jù)后,則不再經(jīng)過中間其他任何狀態(tài),直接跳到狀態(tài) 7(IDLE),表示完成一幀數(shù)據(jù)的傳輸。設(shè)計中在S4、S6設(shè)定決策點。

    2.3 USB驅(qū)動設(shè)計

    USB功能驅(qū)動程序采用 Cypress公司的通用驅(qū)動程序 ezusb.sys,ezusb.sys驅(qū)動的開發(fā)工具為 DDK,驅(qū)動程序開發(fā)工作包括:開發(fā)環(huán)境設(shè)置(VC編譯環(huán)境)、驅(qū)動程序設(shè)計、安裝文件(INF文件)設(shè)計。驅(qū)動程序減少了USB設(shè)備硬件處理數(shù)據(jù)的細(xì)節(jié),為應(yīng)用程序訪問USB硬件設(shè)備提供相應(yīng)接口。

    用戶編寫應(yīng)用程序只要調(diào)用它提供的接口函數(shù)及其所需要傳遞的參數(shù)來實現(xiàn)所需的功能。應(yīng)用程序用CreateFile()函數(shù)打開設(shè)備并且創(chuàng)建與設(shè)備的連接,然后用DeviceIoControl()函數(shù)或ReadFile()與WriteFile()函數(shù)從驅(qū)動程序中讀寫數(shù)據(jù)和向驅(qū)動程序?qū)懭霐?shù)據(jù)。當(dāng)應(yīng)用程序退出時,用CloseHandle()函數(shù)關(guān)閉設(shè)備。這一過程將產(chǎn)生對應(yīng)于此設(shè)備對象的IRP與驅(qū)動程序設(shè)備類成員函數(shù),如表1所示。

    表1 Win32函數(shù)對應(yīng)的IRP主功能代碼

    2.4 應(yīng)用程序設(shè)計

    應(yīng)用程序是系統(tǒng)與用戶的接口,它通過動態(tài)鏈接庫調(diào)用通用驅(qū)動程序完成對外設(shè)的控制和通信。本系統(tǒng)的應(yīng)用程序開發(fā)使用的是Visual Basic6.0中文版本。本系統(tǒng)的工作過程為:首先是查找設(shè)備打開設(shè)備句柄,然后調(diào)用動態(tài)鏈接庫發(fā)送控制命令啟動系統(tǒng),當(dāng)檢測到設(shè)備后進(jìn)行數(shù)據(jù)的讀取命令,調(diào)用動態(tài)鏈接庫的函數(shù)關(guān)閉設(shè)備句柄。系統(tǒng)的應(yīng)用程序界面如圖4所示。

    3 系統(tǒng)整體檢測

    3.1 FPGA邏輯正確性檢測

    利用FPGA內(nèi)部累加器模擬ADC轉(zhuǎn)換后的串行數(shù)據(jù)以及相應(yīng)的時鐘,利用 Cypress公司提供的 Control Panel發(fā)出控制命令直接給接口芯片,并讀取 FPGA內(nèi)部產(chǎn)生的數(shù)據(jù),觀察其中的數(shù)據(jù)與設(shè)定的FPGA中發(fā)出的數(shù)據(jù)是否相同,以驗證FPGA內(nèi)部邏輯的正確性。相應(yīng)地利用示波器監(jiān)測FPGA內(nèi)部的時鐘信號,驗證其正確性。

    3.2 數(shù)據(jù)傳輸數(shù)據(jù)檢測

    數(shù)據(jù)傳輸檢測中增加FPGA內(nèi)部累加器產(chǎn)生的數(shù)據(jù)包的數(shù)量,采用 Bus Hound記錄總線狀態(tài)變化,在得到的結(jié)果中觀察Bus Hound中的數(shù)據(jù)形式并查看VB讀數(shù)軟件中的數(shù)據(jù)文件,觀察得到的數(shù)據(jù)文件數(shù)據(jù)總量以及大小都正確,再打開應(yīng)用程序中的數(shù)據(jù)文件所示的波形,從而驗證了數(shù)據(jù)傳輸?shù)恼_性。

    4 本系統(tǒng)中對傳輸速度改進(jìn)方面的分析

    本系統(tǒng)中主要需要體現(xiàn)數(shù)據(jù)的實時性傳輸,在數(shù)據(jù)的處理部分與USB部分提高數(shù)據(jù)傳輸速度。主要通過以下方面使速度得到提高:

    (1)在數(shù)據(jù)處理部分利用FPGA截取數(shù)據(jù)的有效部分,并將串行數(shù)據(jù)變成并行數(shù)據(jù),以利于數(shù)據(jù)更快、更準(zhǔn)確的傳輸。

    (2)為了保證數(shù)據(jù)不丟失,在 FPGA內(nèi)部增加內(nèi)部FIFO,使數(shù)據(jù)在提交的同時也可以傳輸。

    (3)在USB的固件部分,使用 AUTO傳輸方式,數(shù)據(jù)直接經(jīng)過 USB2.0核、FIFO、GPIF Master以及 NandFlash這條高速路徑傳輸,而不經(jīng)過低速的 8051核,從而可以達(dá)到較高數(shù)據(jù)傳輸速度。

    (4)在固件的端點設(shè)置中,使用多緩沖機制,通過改變EPxCFG配置寄存器中的BUF0、BUF1位的值,就可以設(shè)置緩沖數(shù)。

    (5)使用 GPIF方式進(jìn)行傳輸,在 GPIF波形的延時,提高GPIF波形的執(zhí)行頻率,也可以提升讀取速度。

    在進(jìn)行系統(tǒng)整體性能的測試中,發(fā)現(xiàn)如果加快FPGA的數(shù)據(jù)輸出速度,則在讀出的波形中會有部分丟包的現(xiàn)象,經(jīng)過分步重新測試,發(fā)現(xiàn)在 FPGA的內(nèi)部 FIFO中,如果寫時鐘與讀時鐘的差距太大,就會造成丟點或者錯點的現(xiàn)象,所以USB的GPIF產(chǎn)生的讀波形應(yīng)該與FPGA的寫入速度相平衡,整體重新進(jìn)行調(diào)試后,滿足了實時顯示并且穩(wěn)定的條件。

    本文利用FPGA和USB接口芯片CY7C68013實現(xiàn)了采樣數(shù)據(jù)的高速傳輸。特別是在調(diào)試過程中為了保證數(shù)據(jù)的正確性,提出了適合于通用驅(qū)動程序的塊傳輸同步控制信號。在上下位機的協(xié)調(diào)控制下數(shù)據(jù)能夠高速有效地傳輸。多次試驗證明,此系統(tǒng)運行穩(wěn)定,能夠滿足工作環(huán)境復(fù)雜、傳輸速度要求高的場合。

    [1]EZ-USB FX2 technical reference manual version 2.0 [M/CD].Cypress Semionductor Corp data book,2001.

    [2]錢峰.EZ-USB FX2單片機原理、編程及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2005.

    [3]時向衛(wèi).Win2000/XP USB設(shè)備驅(qū)動程序研究與設(shè)計[J].計算機工程與設(shè)計,2008,29(21):5563-5564.

    [4]趙卉.基于 USB接口的無線數(shù)據(jù)傳輸系統(tǒng)設(shè)計[J].微計算機信息,2008,24(8-2):107-108.

    [5]王偉.基于 USB2.0的高速數(shù)據(jù)采集與傳輸系統(tǒng)的研究[D].長春:吉林大學(xué),2007.

    Real-time data transmission based on EZ-USB FX2

    HUI Lan,PEI Dong Xing
    (Key Laboratory of Instrumentation Science&Dynamic Measurement of the Ministry Education of China,North University of China,Taiyuan 030051,China)

    The data acquisition system has been designed with FPGA as data processing modules,and CY7C68013 as interface chip of data acquisition system.The interface chip CY7C68013 works in GPIF mode.The data acquisition system ensures the correctness ofFPGA,and the stability of the data system can achieve stability,real-time,high speed.

    real-time transmission;data;CY7C68013A;GPIF

    TP274.2

    A

    0258-7998(2010)09-0112-03

    2010-04-14)

    惠蘭,女,1986年生,碩士研究生,主要研究方向:動態(tài)測試與智能儀器。

    裴東興,男,1970年生,副教授,主要研究方向:動態(tài)測試,數(shù)據(jù)壓縮,動態(tài)校準(zhǔn),智能儀器。

    猜你喜歡
    固件驅(qū)動程序緩沖區(qū)
    嵌入式系統(tǒng)環(huán)形緩沖區(qū)快速讀寫方法的設(shè)計與實現(xiàn)
    基于固件的遠(yuǎn)程身份認(rèn)證
    關(guān)鍵鏈技術(shù)緩沖區(qū)的確定方法研究
    提取ROM固件中的APP
    電腦愛好者(2015年7期)2015-04-09 08:54:02
    一種通過USB接口的可靠固件升級技術(shù)
    奧林巴斯XZ—2新固件升級
    中國攝影(2014年1期)2014-02-24 01:50:23
    地理信息系統(tǒng)繪圖緩沖區(qū)技術(shù)設(shè)計與實現(xiàn)
    電視技術(shù)(2012年1期)2012-06-06 08:13:58
    驅(qū)動程序更新與推薦
    驅(qū)動程序更新與推薦
    阿拉尔市| 东台市| 揭西县| 若尔盖县| 罗田县| 丰原市| 石渠县| 视频| 高雄市| 东宁县| 灵石县| 区。| 扎囊县| 丘北县| 寿光市| 多伦县| 湾仔区| 丰原市| 阳江市| 韩城市| 双牌县| 昌都县| 丹棱县| 德阳市| 铜鼓县| 蚌埠市| 东乌珠穆沁旗| 闽侯县| 双辽市| 泸水县| 大悟县| 白河县| 邵武市| 南和县| 三穗县| 瑞昌市| 黔西| 竹溪县| 荥阳市| 新河县| 汤原县|