新聞中心

EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > USB數(shù)據(jù)采集系統(tǒng)中DMA數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)

USB數(shù)據(jù)采集系統(tǒng)中DMA數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)

作者: 時(shí)間:2012-07-16 來(lái)源:網(wǎng)絡(luò) 收藏

引言

本文引用地址:http://butianyuan.cn/article/193589.htm

通用串行總線(Universal Serial Bus)是被PC機(jī)廣泛采用的一種總線,目前已經(jīng)在計(jì)算機(jī)主板上大量集成,成為一種標(biāo)準(zhǔn)配置接口。它的即插即用、真正的熱插拔、可總線供電、高性能和系統(tǒng)造價(jià)低等一系列的優(yōu)點(diǎn),使得接口得到了廣泛的應(yīng)用。特別是隨著2.0高速傳輸協(xié)議的出現(xiàn),其速度達(dá)到了480Mb/s,使得USB接口方式的虛擬儀器系統(tǒng)成為今天低成本虛擬儀器系統(tǒng)的主流。本文設(shè)計(jì)了基于USB2.0高速傳輸?shù)?a class="contentlabel" href="http://butianyuan.cn/news/listbylabel/label/數(shù)據(jù)采集系統(tǒng)">數(shù)據(jù)采集系統(tǒng),整個(gè)過(guò)程完全采用方式,達(dá)到了較高的速度。

1、系統(tǒng)介紹

系統(tǒng)總體結(jié)構(gòu)如圖1所示。采用Philips公司的微控制器LPC2888作為系統(tǒng)核心控制器。前端數(shù)據(jù)采集模塊由一片CPLD實(shí)現(xiàn)對(duì)數(shù)據(jù)采集和觸發(fā)控制的功能。當(dāng)系統(tǒng)和計(jì)算機(jī)成功連接進(jìn)入工作狀態(tài)后,LPC2888從USB接口接收來(lái)自應(yīng)用程序的控制命令,然后通過(guò)控制CPLD對(duì)數(shù)據(jù)采集模塊采樣通道、采樣速率和觸發(fā)模式進(jìn)行配置后啟動(dòng)數(shù)據(jù)采集。CPLD控制模數(shù)轉(zhuǎn)換器獲取采樣數(shù)據(jù),同時(shí)配合LPC2888通用控制器的接口時(shí)序?qū)⒉蓸訑?shù)據(jù)以方式傳輸?shù)絃PC2888內(nèi)部緩存。最后由USB高速設(shè)備接口將采樣數(shù)據(jù)從LPC2888內(nèi)部緩存?zhèn)鬏數(shù)接?jì)算機(jī),在計(jì)算機(jī)中實(shí)現(xiàn)數(shù)據(jù)記錄、數(shù)據(jù)處理和波形顯示等功能。

11.jpg

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

1.1 LPC2888微控制器

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

22.jpg

圖2 USB高速設(shè)備控制器內(nèi)部結(jié)構(gòu)圖

1.2 數(shù)據(jù)采集模塊

數(shù)據(jù)采集模塊主要由信號(hào)調(diào)理電路、模數(shù)轉(zhuǎn)換電路、觸發(fā)控制電路和CPLD構(gòu)成。模數(shù)轉(zhuǎn)換器采用美國(guó)模擬器件公司(ADI)推出的快速12位雙通道模數(shù)轉(zhuǎn)換器AD9238。單雙通道選擇和采樣頻率控制通過(guò)CPLD控制邏輯來(lái)實(shí)現(xiàn)。

2、數(shù)據(jù)傳輸過(guò)程DMA方式的設(shè)計(jì)與實(shí)現(xiàn)

系統(tǒng)中數(shù)據(jù)傳輸過(guò)程包含兩個(gè)環(huán)節(jié),一個(gè)是從CPLD到LPC2888內(nèi)部緩存,另一個(gè)是從LPC2888內(nèi)部緩存通過(guò)USB接口到計(jì)算機(jī)。兩個(gè)環(huán)節(jié)都采用DMA方式傳輸數(shù)據(jù),兩個(gè)環(huán)節(jié)之間的協(xié)調(diào)通過(guò)GPDMA控制器產(chǎn)生的半滿、全滿中斷來(lái)實(shí)現(xiàn)。整個(gè)數(shù)據(jù)傳輸過(guò)程完全采用DMA的傳輸方式,從而可以消除因微控制器固件程序執(zhí)行較慢而造成的對(duì)數(shù)據(jù)傳輸速度的影響。

2.1 從CPLD到LPC2888內(nèi)部緩存的DMA傳輸

CPLD從AD9238獲得兩個(gè)12位的轉(zhuǎn)換結(jié)果,經(jīng)過(guò)位數(shù)變換后送到32位的數(shù)據(jù)信號(hào)線。數(shù)據(jù)信號(hào)線直接連接到LPC2888的P0口(32位)。由于CPLD內(nèi)部沒(méi)有數(shù)據(jù)緩存過(guò)程,所以為了保證不丟失采樣點(diǎn),從CPLD到LPC2888內(nèi)部緩存的DMA傳輸必須保證連續(xù)性和實(shí)時(shí)性。為此,系統(tǒng)采取了如下解決方案:

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

2) 配置DMA通道3和通道5為外部信號(hào)控制模式,由CPLD作為DMA數(shù)據(jù)傳輸過(guò)程的主機(jī)。

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

CPLD與LPC2888之間的硬件連接如圖3所示。其中DMAEn是DMA通道的外部使能控制信號(hào),其上升沿啟動(dòng)一次DMA操作。DMAReq是DMA數(shù)據(jù)同步信號(hào),該信號(hào)控制數(shù)據(jù)節(jié)拍,每次DMA操作傳輸4096個(gè)數(shù)據(jù)。IO口P2.0和P2.1分別為啟動(dòng)停止和采樣模式選擇控制信號(hào)線,實(shí)現(xiàn)LPC2888對(duì)CPLD的控制。系統(tǒng)采用Verilog HDL語(yǔ)言描述CPLD控制邏輯,從CPLD到LPC2888內(nèi)部緩存的DMA傳輸時(shí)序如圖4所示。

44.jpg

圖3 CPLD與ARM接口

44.jpg

圖4 GPDMA傳輸時(shí)序圖

2.2 USB高速設(shè)備接口的DMA傳輸

USB高速設(shè)備控制器支持16個(gè)物理端點(diǎn),其中4個(gè)端點(diǎn)支持DMA方式。本設(shè)計(jì)中選用三個(gè)端點(diǎn):EP0、EP2和EP3??刂贫它c(diǎn)EP0工作在控制傳輸模式,用于接收USB主機(jī)的SETUP令牌包、響應(yīng)主機(jī)的標(biāo)準(zhǔn)設(shè)備請(qǐng)求、完成USB設(shè)備的枚舉過(guò)程。EP2配置為OUT(輸出)模式,用于接收來(lái)自應(yīng)用程序的控制命令。EP3配置為IN(輸入)模式,采用批量傳輸工作方式,負(fù)責(zé)將采樣結(jié)果傳輸?shù)絇C機(jī)。從LPC2888內(nèi)部緩存到計(jì)算機(jī)的DMA傳輸由USB高速設(shè)備控制器內(nèi)部的DMA引擎和EP3批量傳輸配合完成。為了達(dá)到較高的數(shù)據(jù)傳輸速度,EP3批量傳輸采用自動(dòng)傳輸模式。DMA引擎將LPC2888內(nèi)部緩存數(shù)據(jù)傳輸?shù)経SB設(shè)備控制器內(nèi)部FIFO緩存中,當(dāng)FIFO獲得的數(shù)據(jù)達(dá)到設(shè)定的大小時(shí)將自動(dòng)封包由EP3傳輸?shù)絇C機(jī)。同時(shí),當(dāng)FIFO中數(shù)據(jù)為空時(shí),控制器將自動(dòng)啟動(dòng)DMA引擎繼續(xù)傳輸數(shù)據(jù)。該環(huán)節(jié)的DMA傳輸過(guò)程完全由USB高速設(shè)備控制器硬件實(shí)現(xiàn),程序中只需更改DMA源地址寄存器并設(shè)置使能控制寄存器即可啟動(dòng)一次DMA傳輸。

2.3 兩個(gè)DMA傳輸環(huán)節(jié)的協(xié)調(diào)


上一頁(yè) 1 2 3 下一頁(yè)

評(píng)論


相關(guān)推薦

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

關(guān)閉