??? 摘? 要: 介紹一種基于單片機(jī)系統(tǒng)的采用“RAM出讓 ”方式實(shí)現(xiàn)的DMA控制電路,。模塊化設(shè)計(jì),,便于用可編程邏輯門陣列或集成電路芯片實(shí)現(xiàn)。給出其軟件接口子程序設(shè)計(jì)方案,。
關(guān)鍵詞: 單片機(jī)系統(tǒng)? 直接存儲(chǔ)器存取(DMA)方式? 數(shù)據(jù)傳輸
?
采用中斷或查詢方式時(shí),單片機(jī)系統(tǒng)無(wú)法實(shí)現(xiàn)小于其指令周期的高速數(shù)據(jù)傳輸及數(shù)據(jù)采集,。雖然近些年單片機(jī)速度不斷提高,,但指令周期一般還在微秒量級(jí),這就限制了單片機(jī)在高速數(shù)據(jù)傳輸領(lǐng)域內(nèi)的應(yīng)用,,如網(wǎng)絡(luò)通訊,、高速數(shù)據(jù)采集等。DMA(即外設(shè)與內(nèi)儲(chǔ)存器之間數(shù)據(jù)直接傳輸)控制電路以其高效,、高速,、CPU資源占用少等特點(diǎn)已在PC機(jī)中成熟應(yīng)用。在PC機(jī)中,,它是通過(guò)安裝在主板上的專用DMA控制芯片或集成于外圍控制芯片中來(lái)實(shí)現(xiàn)的,。單片機(jī)通常不具有DMA功能,也沒(méi)有現(xiàn)成的控制芯片可以利用,。而且,,由于總線和系統(tǒng)組成方面的差異無(wú)法將PC機(jī)中的DMA電路移植到單片機(jī)系統(tǒng)中。
另一方面,,單片機(jī)系統(tǒng)不具備“總線出讓”功能,,沒(méi)有類似總線響應(yīng)、保持響應(yīng)、總線有效等引腳功能,,因此設(shè)計(jì)采用“指定RAM出讓”的方法,。指定RAM是指連接在DMA控制器上的RAM。在DMA周期內(nèi)系統(tǒng)通過(guò)控制線將此RAM交由DMA控制器和外設(shè)讀寫,,構(gòu)成“RAM出讓”,。“RAM出讓”的突出優(yōu)點(diǎn)是在DMA周期中,,單片機(jī)依然可以對(duì)總線上的其他電路或組件進(jìn)行操作,。
本文所討論的DMA控制電路模塊可以采用可編程邏輯門陣列來(lái)實(shí)現(xiàn),也可以加工成厚膜電路或集成電路芯片,。
1 DMA與系統(tǒng)的連接及其結(jié)構(gòu)框圖
DMA控制模塊在系統(tǒng)中的連接如圖1所示,。
?
1.1 DMA模塊與單片機(jī)的連接
單片機(jī)系統(tǒng)通過(guò)數(shù)據(jù)(DB)、地址(AB),、控制(CB)總線與DMA模塊連接,。連接方式與連接RAM僅有較小的區(qū)別。主要在控制總線部分,,除原有的讀寫控制線外須增加DMA允許輸入,、DMA狀態(tài)輸出。
1.2 DMA模塊與RAM的連接
DMA模塊通過(guò)8位數(shù)據(jù)線,、地址線和讀寫控制線與RAM連接,。地址線個(gè)數(shù)由RAM空間大小決定,最大16線,。
1.3 DMA模塊與外設(shè)的連接
連接外設(shè)有8位數(shù)據(jù)線,,控制線包括DMA申請(qǐng)輸入、讀寫控制輸入,、DMA響應(yīng)輸出,。
????DMA控制模塊的結(jié)構(gòu)框圖如圖2所示。
?
2 工作原理
2.1 工作過(guò)程
在允許DMA操作之前,,必須在主程序中對(duì)DMA控制器初始化,寫入工作方式字和起,、止地址,。DMA控制器中的方式寄存器和地址發(fā)生器中的地址寄存器都是可尋址的口,其地址占用RAM的最高位5個(gè)字節(jié)(方式字1個(gè),,起始和結(jié)束地址各2個(gè)),。在數(shù)據(jù)寫入時(shí),RAM中同時(shí)被寫入鏡象數(shù)據(jù),,因此控制字可以從同一地址讀出,。
初始化設(shè)置包括以下信息:
·數(shù)據(jù)傳輸方向。即通過(guò)方式字中的相應(yīng)位選擇數(shù)據(jù)向RAM寫入或由RAM讀出。
·數(shù)據(jù)傳輸方式,。通過(guò)寫入方式字選擇傳輸方式,,有字節(jié)傳輸、塊傳輸,、請(qǐng)求傳輸三種方式,。
·數(shù)據(jù)傳輸在存儲(chǔ)器中的起始地址和結(jié)束地址。這兩個(gè)寄存器包含在地址發(fā)生器模塊中,。DMA傳輸時(shí)地址采用增1方式,,所以要求結(jié)束地址高于起始地址。
初始化結(jié)束后,,在主程序許可的情況下,,發(fā)出DMA允許(DEN)信號(hào),查詢DMA狀態(tài)(DS)或利用(DS)觸發(fā)中斷來(lái)判斷DMA結(jié)束,。在等待結(jié)束過(guò)程中,,單片機(jī)可以進(jìn)行對(duì)非指定RAM的所有外部操作以及所有內(nèi)部操作。下一次DMA傳輸需要重復(fù)設(shè)置,、DMA允許,、等待結(jié)束三個(gè)過(guò)程。
單片機(jī)置DEN有效即DMA允許,,時(shí)序和邏輯模塊控制總線收發(fā)器1截止和總線收發(fā)器2開(kāi)通,,使得RAM連接由單片機(jī)切換至外設(shè)和DMA控制器,并根據(jù)方式寄存器的輸出,,實(shí)現(xiàn)對(duì)數(shù)據(jù)傳輸方式和傳輸方向的控制,。而在DMA禁止(DEN無(wú)效)時(shí)或DMA傳輸結(jié)束后,邏輯模塊控制總線收發(fā)器1開(kāi)通和總線收發(fā)器2截止,,使得RAM連接至單片機(jī),。
在DMA允許后,當(dāng)有DMA申請(qǐng)(即DRQ有效),,控制器輸出DMA響應(yīng)(DAK有效)通知外設(shè)可以進(jìn)行數(shù)據(jù)傳輸,,同時(shí)改變DMA狀態(tài)輸出(DS輸出有效)通知單片機(jī)。DMA傳輸結(jié)束可有三種不同方式:方式1為單字傳輸結(jié)束;方式2為RAM地址超出結(jié)束地址;方式3為DMA申請(qǐng)信號(hào)撤消(DRQ無(wú)效),。DMA結(jié)束,,DS由高變低,觸發(fā)單片機(jī)中斷,。單片機(jī)收到DMA結(jié)束信號(hào)后,,輸出DMA禁止,進(jìn)行數(shù)據(jù)處理,。
2.2 地址產(chǎn)生電路
地址產(chǎn)生電路如圖3所示,。
主地址發(fā)生器是一個(gè)16位可預(yù)置二進(jìn)制計(jì)數(shù)器,,預(yù)置的16位二進(jìn)制數(shù)作為DMA傳輸?shù)钠鹗嫉刂贰EN,、EEN為計(jì)數(shù)器和鎖存器的寫入片選,,各2根,高8位和低8位分2個(gè)地址寫入,。CP為計(jì)數(shù)脈沖輸入,,DMA每傳輸完一字節(jié),CP收到一個(gè)計(jì)數(shù)脈沖,,計(jì)數(shù)器輸出加1,,指向下一個(gè)傳輸?shù)刂贰?/P>
結(jié)束地址寫入16位鎖存器,高8位和低8位分兩個(gè)地址寫入,。鎖存器輸出送數(shù)字比較器,,與來(lái)自計(jì)數(shù)器輸出的地址比較,如果結(jié)束地址高于輸出地址則地址溢出輸出端OA輸出低電平,。當(dāng)計(jì)數(shù)器輸出地址高于結(jié)束地址時(shí),,OA端輸出高電平,該信號(hào)送邏輯模塊控制可作為DMA結(jié)束標(biāo)志,。
2.3 工作方式的選擇
時(shí)序與邏輯模塊根據(jù)方式字的選擇可實(shí)現(xiàn)不同傳輸方式的控制,。如字節(jié)傳輸方式、塊傳輸方式,、請(qǐng)求傳輸方式,。
字節(jié)傳輸方式時(shí),一次只做一個(gè)字節(jié)的數(shù)據(jù)傳輸,。傳輸結(jié)束后釋放RAM,,DAK無(wú)效,到單片機(jī)處理數(shù)據(jù)結(jié)束,,重新DMA允許后才可以進(jìn)行下一次傳輸,。
塊傳輸方式要求結(jié)束地址高于起始地址,因?yàn)镈MA地址輸出采用加1方式,。起始地址和結(jié)束地址之間數(shù)據(jù)作為被傳輸?shù)臄?shù)據(jù)塊,,直到整個(gè)數(shù)據(jù)塊傳輸結(jié)束后才釋放RAM。
請(qǐng)求傳輸方式與塊傳輸方式類似,,但是要求DRQ在傳輸過(guò)程中保持有效,。DRQ無(wú)效時(shí)DMA傳輸結(jié)束,釋放RAM,。就是說(shuō)它以DRQ無(wú)效作為DMA結(jié)束標(biāo)志。
2.4 時(shí)序與邏輯電路
時(shí)序與邏輯電路設(shè)計(jì)需實(shí)現(xiàn)上述工作的邏輯功能,。包括有:判斷單片機(jī)輸出DEN和DMA結(jié)束標(biāo)記輸出總線控制;根據(jù)方式字所設(shè)的傳輸方向控制RAM的讀或?qū)懹行?輸出地址進(jìn)位脈沖;根據(jù)方式字中傳輸方式的選擇和DMA申請(qǐng)輸入DRQ輸出響應(yīng)DAK;選擇DMA結(jié)束標(biāo)記;當(dāng)結(jié)束標(biāo)記產(chǎn)生時(shí)輸出DMA結(jié)束操作,。
總之,,時(shí)序與邏輯電路的設(shè)計(jì)取決于對(duì)工作方式的選擇和DMA工作過(guò)程的設(shè)計(jì)考慮。
3 接口軟件設(shè)計(jì)
DMA控制器在系統(tǒng)中應(yīng)用時(shí)可選擇采用結(jié)束查詢法或結(jié)束中斷法來(lái)判斷DMA的結(jié)束,,接口子程序流程,,見(jiàn)圖4所示。
?
?
參考文獻(xiàn)
1 何立民.單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì).北京:北京航空航天大學(xué)出版社,,1990:1~19
2 張昆藏.微型計(jì)算機(jī)接口技術(shù).北京:清華大學(xué)出版社,,1991:32~45
3 余新平.采用DMA技術(shù)實(shí)現(xiàn)高速數(shù)據(jù)傳輸?shù)腎/O接口卡設(shè)計(jì).電子技術(shù)應(yīng)用,1999;25(7):54~56