新聞中心

        EEPW首頁 > 測試測量 > 設計應用 > USB數據采集系統中DMA數據傳輸的實現

        USB數據采集系統中DMA數據傳輸的實現

        作者: 時間:2012-07-16 來源:網絡 收藏

        引言

        本文引用地址:http://www.104case.com/article/193589.htm

        通用串行總線(Universal Serial Bus)是被PC機廣泛采用的一種總線,目前已經在計算機主板上大量集成,成為一種標準配置接口。它的即插即用、真正的熱插拔、可總線供電、高性能和系統造價低等一系列的優點,使得接口得到了廣泛的應用。特別是隨著2.0高速傳輸協議的出現,其速度達到了480Mb/s,使得USB接口方式的虛擬儀器系統成為今天低成本虛擬儀器系統的主流。本文設計了基于USB2.0高速傳輸的,整個過程完全采用方式,達到了較高的速度。

        1、系統介紹

        系統總體結構如圖1所示。采用Philips公司的微控制器LPC2888作為系統核心控制器。前端數據采集模塊由一片CPLD實現對數據采集和觸發控制的功能。當系統和計算機成功連接進入工作狀態后,LPC2888從USB接口接收來自應用程序的控制命令,然后通過控制CPLD對數據采集模塊采樣通道、采樣速率和觸發模式進行配置后啟動數據采集。CPLD控制模數轉換器獲取采樣數據,同時配合LPC2888通用控制器的接口時序將采樣數據以方式傳輸到LPC2888內部緩存。最后由USB高速設備接口將采樣數據從LPC2888內部緩存傳輸到計算機,在計算機中實現數據記錄、數據處理和波形顯示等功能。

        11.jpg

        圖1 系統總體結構圖

        1.1 LPC2888微控制器

        LPC2888是一款基于ARM7TDMI內核的微控制器,帶有8kB高速緩存,最高工作時鐘頻率60MHz。在結構上增加了多通道通用DMA控制器(GPDMA)。它支持存儲器到存儲器,存儲器到外設,外設到存儲器和外設到外設的DMA傳輸。本系統采用GPDMA控制器實現數據從前端數據采集模塊到內部緩存的DMA傳輸。同時,LPC2888集成有USB高速設備控制器。它完全兼容USB2.0協議,支持USB高速傳輸,理論最高傳輸速度480Mb/s,其內部結構如圖2所示。USB設備控制器直接掛接在LPC2888系統內部核心總線AHB上,可以方便地與ARM控制器內核及外部存儲器交換數據。其內部包含一個DMA引擎,當USB接口運行在DMA模式時,DMA引擎作為AHB總線上的主機,在ARM內部緩存和USB設備控制器緩存之間傳遞數據,傳輸過程不需要控制器內核程序的參與,所以能夠達到較高的數據傳輸速度。

        22.jpg

        圖2 USB高速設備控制器內部結構圖

        1.2 數據采集模塊

        數據采集模塊主要由信號調理電路、模數轉換電路、觸發控制電路和CPLD構成。模數轉換器采用美國模擬器件公司(ADI)推出的快速12位雙通道模數轉換器AD9238。單雙通道選擇和采樣頻率控制通過CPLD控制邏輯來實現。

        2、數據傳輸過程DMA方式的設計與實現

        系統中數據傳輸過程包含兩個環節,一個是從CPLD到LPC2888內部緩存,另一個是從LPC2888內部緩存通過USB接口到計算機。兩個環節都采用DMA方式傳輸數據,兩個環節之間的協調通過GPDMA控制器產生的半滿、全滿中斷來實現。整個數據傳輸過程完全采用DMA的傳輸方式,從而可以消除因微控制器固件程序執行較慢而造成的對數據傳輸速度的影響。

        2.1 從CPLD到LPC2888內部緩存的DMA傳輸

        CPLD從AD9238獲得兩個12位的轉換結果,經過位數變換后送到32位的數據信號線。數據信號線直接連接到LPC2888的P0口(32位)。由于CPLD內部沒有數據緩存過程,所以為了保證不丟失采樣點,從CPLD到LPC2888內部緩存的DMA傳輸必須保證連續性和實時性。為此,系統采取了如下解決方案:

        1) 在LPC2888內部RAM中開辟兩塊相同大小的緩存空間:buffer1和buffer2。將通用DMA控制器的通道3和通道5分別配置為從P0口到buffer1和buffer2的DMA通道。

        2) 配置DMA通道3和通道5為外部信號控制模式,由CPLD作為DMA數據傳輸過程的主機。

        3) DMA通道3和通道5采用交替工作的方式,由CPLD控制邏輯實現。

        CPLD與LPC2888之間的硬件連接如圖3所示。其中DMAEn是DMA通道的外部使能控制信號,其上升沿啟動一次DMA操作。DMAReq是DMA數據同步信號,該信號控制數據節拍,每次DMA操作傳輸4096個數據。IO口P2.0和P2.1分別為啟動停止和采樣模式選擇控制信號線,實現LPC2888對CPLD的控制。系統采用Verilog HDL語言描述CPLD控制邏輯,從CPLD到LPC2888內部緩存的DMA傳輸時序如圖4所示。

        44.jpg

        圖3 CPLD與ARM接口

        44.jpg

        圖4 GPDMA傳輸時序圖

        2.2 USB高速設備接口的DMA傳輸

        USB高速設備控制器支持16個物理端點,其中4個端點支持DMA方式。本設計中選用三個端點:EP0、EP2和EP3。控制端點EP0工作在控制傳輸模式,用于接收USB主機的SETUP令牌包、響應主機的標準設備請求、完成USB設備的枚舉過程。EP2配置為OUT(輸出)模式,用于接收來自應用程序的控制命令。EP3配置為IN(輸入)模式,采用批量傳輸工作方式,負責將采樣結果傳輸到PC機。從LPC2888內部緩存到計算機的DMA傳輸由USB高速設備控制器內部的DMA引擎和EP3批量傳輸配合完成。為了達到較高的數據傳輸速度,EP3批量傳輸采用自動傳輸模式。DMA引擎將LPC2888內部緩存數據傳輸到USB設備控制器內部FIFO緩存中,當FIFO獲得的數據達到設定的大小時將自動封包由EP3傳輸到PC機。同時,當FIFO中數據為空時,控制器將自動啟動DMA引擎繼續傳輸數據。該環節的DMA傳輸過程完全由USB高速設備控制器硬件實現,程序中只需更改DMA源地址寄存器并設置使能控制寄存器即可啟動一次DMA傳輸。

        2.3 兩個DMA傳輸環節的協調


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 万年县| 云安县| 汤原县| 嘉黎县| 那坡县| 胶南市| 穆棱市| 尼玛县| 泉州市| 小金县| 玉树县| 平乡县| 龙州县| 织金县| 桑日县| 美姑县| 津市市| 遂川县| 阿荣旗| 石嘴山市| 米脂县| 钦州市| 莲花县| 磴口县| 班戈县| 阿鲁科尔沁旗| 仙游县| 廊坊市| 衡阳县| 五家渠市| 峡江县| 元阳县| 巴林右旗| 潜江市| 南投市| 兴隆县| 宝应县| 鹤壁市| 铜鼓县| 日照市| 南漳县|