Tải bản đầy đủ (.doc) (6 trang)

Vi xử lý máy vi tính - Chương 8 pps

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (63.99 KB, 6 trang )

CHỈÅNG 8
VO /RA DỈỴ LIÃÛU BÀỊNG DMA
1. Ngun tàõc ca viãûc trao âäøi dỉỵ liãûu våïi thiãút bë ngoải vi bàòng cạch
thám nháûp trỉûc tiãúp vo bäü nhåï (DMA) .
Trong cạc cạch âiãưu khiãøn viãûc trao âäøi dỉỵ liãûu giỉỵa thiãút bë ngoải vi
v hãû vi xỉí l bàòng cạch thàm d trảng thại sàơn sng ca thiãút bë
ngoải vi hay bàòng cạch ngàõt bäü vi xỉí l â âỉåc nọi âãún åí cạc chỉång
trỉåïc , dỉỵ liãûu thỉåìng âỉåüc chuøn tỉì bäü nhåï qua bäü vi xỉí l âãø räưi tỉì
âọ ghi vo thiãút bë ngoải vi hồûc ngỉåüc lải , tỉì thiãút bë ngoải vi nọ
âỉåüc âc vo bäü vi xỉí l âãø räưi tỉì âọ âỉåüc chuøn âãún bäü nhåï . vç thãú
täúc âäü trao âäøi dỉỵ liãûu phủ thüc ráút nhiãưu vo täúc âäü thỉûc hiãûn ca
cạc lãûnh MOV .IN v OUT ca bäü vi xỉí l v do âọ viãûc trao âäøi dỉỵ
liãûu khäng thãø tiãún hnh nhanh âỉåc .
Trong thỉûc tãú cọ nhỉỵng khi ta cáưn trao âäøi dỉỵ liãûu tháût nhanh våïi thiãút
bë ngoải vi : nhỉ khi cáưn âỉa dỉỵ liãûu hiãûn thë ra mn hçnh hồûc trao âäøi
dỉỵ liãûu våïi bäü âiãưu khiãøn âéa .trong cạc trỉåìng håüp âọ ta cáưn cọ kh
nàng ghi /âc dỉỵ liãûu trỉûc tiãúp våïi bäü nhåï (diret memory acces
.DMA- thám nháûp vo bäü nhåï trỉûc tiãúp khäng thäng qua CPU) thç måïi
âạp ỉïng âỉåüc u cáưu vãư täúc âäü trao âäøi dỉỵ liãûu .âãø lm âỉåüc âiãưu ny
cạc hãû vi xỉí l nọi chung âãưu phi dng thãm mảch chun dủng âãø
âiãưu khiãøn viãûc thám nháûp trỉûc tiãúp vo bäü nhåï ( dircet memory
access con troller.DMAC)
Cọ thãø láúy mäüt vê dủ củ thãø âãø minh hoả âiiã ny .trong khi mäüt
mảch DMAC nhỉ 8237A ca inter cọ thãø âiãưu khiãøn viãûc chuøn mäüt
byte trong mäüt mng dỉỵ liãûu tỉì bäü nhåï ra thiãút bë ngoải vi chè hãút 4
chu k âäưng häư thç bäü vi xỉí l 8088 phi lm hãút cåỵ 4 chu k :
; säú chu k âäưng häư
LAP: MOV AL, (SI );10
OUT PORT ,AL ; 10
INC SI ; 2
LOOP LAP ; 17


; CÄÜNG:39 chu k
Âãø häù tråü cho viãûc trao âäøi dỉỵ liãûu våïi thiãút bë ngoải vi bàòng
cạch thám nháûp trỉûc tiãúp vo bäü nhåï ,tải mäùi vi mảch CPU thỉåìng täưn
tải chán u cáưu treo HOLD âãø thiãút bë ngoải vi , mäùi khi cọ u cáưu
dng bụ cho viãûc trao âäøi dỉỵ liãûu våïi bäü nhåï thç thäng qua chán ny
m bạo cho CPU biãút . âãún lỉåüt CPU , khi nhán âỉåüc u cáưu treo thç
nọ tỉû treo lãn (tỉû tạch ra khi hãû thäúng bàòng cạch âỉa cạc bit vo trảng
thại tråí khạng cao )v âỉa xung HLDA ra ngoi âãø thäng bạo CPU
cho phẹp sỉí dủng bụ .
Så âäư khäúi ca mäüt hãû vi xỉí l cọ kh nàng trao âäøi dỉỵ liãûu theo kiãøu
DMA âỉåüc thãø hiãûn trãn hçnh 8.1
Ta nháûn tháúy trong hãû thäúng ny , khi CPU tỉû tạch ra khi hãû thäúng
bàûng tỉû treo (ỉïng våïi vë trê hiãûn thåìi ca cạc cäng tàõc chuøn mảch )
âãø trao quưn sỉí dủng bus cho DMAC phi chëu trạch nhiãûm âiãưu
khiãøn ton bäü hoảt âäüng trao âäøi dỉỵ liãûu ca hãû thäúng . âãø lm âỉåüc
âiãưu âọ DMAC phi cọ kh nàng tảo ra âỉåüc cạc tên hiãûu âiiã khiãøn
cáưn thiãút giäúng nhỉ cạc tên hiãûu ca CPU v bn thán nọ phi l mäüt
thiãút bë láûp trçnh âỉåüc (âãø CPU “dàn d ” nọ bàòng cạch âỉa vo cạc tỉì
âiãưu khiãøn trỉåïc khi nọ cọ thãø hoảt âäüng âäüc láûp ).
Qua trinh hoảt âäüng ca hãû thäúng trãn cọ thãø âỉåüc tọm tàõt nhỉ sau:
Khi thiãút bë ngoải vi cọ u cáưu trao âäøi dỉỵ liãûu kiãøu DMA våïi bäü
nhåï , nọ âỉa u cáưu DRQ=1 âãún DMAC, DMAC s âỉa u cáưu treo
HRQ=1 âãún chán HOLD ca CPU . nhán âỉåüc u cáưu treo , CPU s
treo cạc bus ca mçnh v tr låìi cháúp nháûn treo qua tên hiãûu HLDA=1
âãún chán HACK ca DMAC ,DMAC s thäng bạo cho thiãút bë ngoải
vi thäng qua tên hiãûu DACK=1 l nọ cho phẹp thiãút bë ngoải vi trao
âäøi dỉỵ liãûu kiãøu DMA .khi quạ trçnh DMA kãút thục thç DMAC âỉa ra
tên hiãûu HRQ=0.
Trong thỉûc tãú täưn tải 3 kiãøu trao âäøi dỉỵ liãûu bàòng cạch thám nháûp trỉûc
tiãúp vo bäü nhåï nhỉ sau:

+ Treo CPU mäüt khong thåìi gian âãø trao âäøi c mng dỉỵ liãûu .
+treo CPU âãø trao âäøi tỉìng byte.
+táûn dủng thåìi gian khäng dng bus âãø trao âäøi dỉỵ liãûu .
ta s láưn lüt giåïi thiãûu qua cạc kiãøu trao âäøi dỉỵ liãûu ny .
• Trao âäøi c mät mng dỉỵ liãûu
Trong chãú âäü ny CPU bë treo trong sút quạ trçnh trao âäøi mng
dỉỵ liãûu .Chãú âäü ny âỉåüc dng khi ta cọ nhu cáưu trao âäøi dỉỵ liãûu våïi äø
âéa hồûc âỉa dỉỵ liãûu ra hiãøn thë . cạc bỉåïc th tủc âãø chuøn mäüt
mng dỉỵ liãûu tỉì bäü nhåï ra thiãút bë ngoải vi:
1.CPU phi ghi tỉì âiãưu khiãøn v tỉì chãú âäü lm viãûc vo DMAC âãø
quy âënh cạch thỉïc lm viãûc , âëa chè âáưu ca mng nhåï , âäü di ca
mng nhåï ,
2.khi thiãút bë ngoải vi co u cáưu trao âäøi dỉỵ liãûu , nọ âỉa DRQ =1
âãún DMAC .
3.DMAC âỉa ra tên hiãûu HRQ âãún chán HOLD ca CPU âãø u cáưu
treo CPU .tên hiãûu HOLD phi åí mỉïc cao cho âãún hãút quạ trçnh trao
âäøi dỉỵ liãûu .
4. nháûn âỉåüc u cáưu treo ,CPU kãút thục chu k bus hiãûn tải , sau dọ
nọ treo cạ bus ca mçnh v âỉa ra tên hiãûu HLDA bạo cho DMAC
âỉåüc ton quưn sỉí dủng bus.
5.DMAC âỉa ra xung DACK âãø bạo cho thiãút bë ngoải vi biãút l cọ thãø
bàõt âáưu trao âäøi dỉỵ liãûu .
6.DMAC bàõt âáưu chuøn dỉỵ liãûu tỉì bäü nhåï ra thiãút bë ngoải vi bàòng
cạch âỉa âëa chè ca byte âáưu ra bus âëa chè v âỉa ra tên hiãûu
MEMR=O âãø âc mäüt byte tỉì bäü nhåï ra bus dỉỵ liãûu .tiãúp âọ DMAC
âỉa ra tên hiãûu IOW =0 âãø ghi âỉa dỉỵ liãûu ra thiãút bë ngoải vi.DMAC
sau âọ gim bäü âãúm säú byte cn phi chuøn , cáûp nháût âëa chè ca
byte cáưn âc tiãúp , v làûp lải cạ c âäüng tạc trãn cho tåïi khi hãút säú âãúm
(TC).
7. quạ trçnh DMA kãút thục , DMAC cho ra tên hiãûu HRQ=0 âãø bạo

cho CPU biãút âãø CPU dnh lải quưn âiãưu khiãøn hãû thäúng .
• Treo CPU âãø trao âäøi tỉìng byte .
Trong cạch trao âäøi dỉỵ liãûu ny CPU khäng bë treo láu di
trong mäüt láưn nhỉng thènh thong lải bë treo trong khong thåìi
gian ráút ngàõn â âãø trao âäøi 1 byte dỉỵ liãûu (CPU bë láúy máút mäüt
säú chu k âäưng häư ). Do bë láúy âi mäüt säú chu k âäưng häư nhỉ
váûy lãn täúc âäü thỉûc hiãûn mäüt cäng viãûc no âọ ca CPU chè bë
suy gim chỉï khäng dỉìng lải . cạch hoảt âäüng cng tỉång tỉû
nhỉ pháưn trỉåïc , chè cọ âiãưu mäùi láưn DMAC u cáưu treo CPU
thi chè cọ mäüt byte âỉåüc trao âäøi
• Táûn dủng thåìi gian CPU khäng dng bus âãø trao
âäøi dỉỵ liãûu .
Trong cạch trao âäøi dỉỵ liãûu ny , ta phi cọ cạc logic phủ bãn
ngoi cáưn thiãút âãø phạt hiãûn ra cạc chu k xỉí l näüi bäü ca CPU
(khäng dng âãún bus ngoi )v táûn dủng cạc chu k âọ vo viãûc trao
âäøi dỉỵ liãûu giỉỵa thiãút bë ngoải vi våïi bäü nhåï . Trong cạch lm ny thç
DMAC v CPU ln phiãn nhau sỉí dủng bus v viãûc thám nháûp trỉûc
tiãúp bäü nhåï kiãøu ny khäng nh hỉåíng gç tåïi hoảt âäüng bçnh thỉåìng
ca CPU.
2.DMAC 8237A -5 trong hãû vi xỉí l 8088.
2.1.tên hiãûu HOLD v HLDA trong CPU 8088.
Hai tên hiãûu dng âãø u cáưu treo v tr låìi cháúp nháûn u cáưu
treo trong chãú âäü MIN ca CPU 8088 l HLDA.quan hãû giỉỵa hai tên
hiãûu âọ âỉåüc thãø hiãûn trãn hçnh 8.2.
Tên hiãûu u cáưu treo HOLD âỉåüc lạy máùu tải sỉåìn lãn ca
.xung âäưng häư trỉåïc chu k T4 hồûc T1. Khi nháûn âỉåüc u cáưu
treo .CPU kãút thục chu k bus hiãûn tải , âỉa ra tên hiãûu HLDA v treo
cạc tên hiãûu ca bus .busd v bus c (trỉì tên hiãûu ALE=O)âãø nhỉåìng
quưn sỉí dủng cạc bus ny choDMAC . Cáưn lỉu ràòng âáưu vo
HOLD cọ mỉïc ỉu tiãn cao hån cạc âáưu vo u cáưu ngàõt INTR v

MNI nhỉng lải tháúp hån so våïi âáưu vo RESET.
Âãø âm bo viãûc âäưng bäü tên hiãûu u cáưu treo ca thiãút bë
ngoải vi våïi tên hiãûu âäưng häư ca hãû thäúng trỉåïc khi âỉa vo chán
HOLD ca 8088 ngỉåìi ta thỉåìng dng mảch trãn hçnh 8.3.
2.2. Mảch DMAC 8237A -5ca Inter
Trỉåïc khi trçnh by k vãư mảch DMAC 8237A ca Inter ta nọi
qua vãư cạc thay âäøi cáưn cọ trong nhọm tên hiãûu âiãưu khiãøn ghi/âc ca
hãû vi xỉí l våïi CPU 8088 åí chãú âäü MIN âãø sỉí dủng âỉåüc mảch
8237A lm DMAC
Nhỉ trãn hçnh 8.1 â thãø hiãûn tỉång âäúi r , âãø thãø hiãûn âỉåüc
chỉïc nàng DMA trong hãû ,bus âiãưu ca hãû vi xỉí l 8088 phi âỉåüc
thay âäøi chụt êt âãø cọ âỉåüc cạc tên hiãûu cáưn thiãút cho DMAC v cạc bäü
pháûn lkhạc hoảt âäüng .âọ chinhd l viãûc cạc tên hiãûu RD.WD v IO/M
âỉåüc sỉí dủng âãø ta cạc tên hiãûu âiãưu khiãøn måïi IOR.IOW
.MEMR.MEMW.tỉång thêch våïi cạc tên hiãûu ca DMAC 8237A -5.
Hçnh 8.4 trçnh by mäüt kh nàng tảo ra cạc tên hiãûu âiãưu khiãøn
nhỉ váûy dng mảch däưn kãnh 74LS257 . trong 74LS 257 gäưm 4 mảch
däưn kãnh 2 âỉåìng . cạc tên hiãûu RD.WD v IO/M âỉåüc bäú trê sao cho
khi âáưu vo ca mảch 74LS 257 l B=1 thç ta lm viãûc våïi thiãút bë
ngoải nháûp våïi cạc xung IORv IOW ,ngỉåüc lải khi B=0 thç ta lm
viãûc våïi bäü nhåï våïi cạc xung MEMR.MEMW.
Trãn hçnh 8.4 ta cn tháúy tên hiãûu AEN ca DMAC cng âỉåüc
dng âãø khoạ cạc tên hiãûu âiãưu khiãøn måïi do CPU tảo ra khi DMAC
â nàõm quưn âiãưu khiãøn bus.
Trong chãú âäü truưn kiãøu âc thç dỉỵ liãûu âỉåüc âc tỉì bäü nhåï
räưi âỉa ra thiãt bë ngoải vi. Trong chãú âäü truưn kiãøu ghi thç dỉỵ liãûu
âỉåüc âc tỉì thiãút bë ngoải vi räưi âỉa vo bäü nhåï . khi 8237A -5 lm
viãûc åí chãú âäü kiãøm tra thç tuy âëa chè âỉåüc âỉa âãún bäü nhåï nhỉng
DMAC khäng tảo ra cạc xung âiãưu khiãøn âãø tiãún hnh cạc thao tạc
ghi/âc bäü nhåï hay thiãút bë ngoải vi .

Ngoi ra mảch 8237 A-5 cn häù tråü viãûc trao âäøi dỉỵ liãûu giỉa
cạc vng khạc nhau ca bäü nhåï v cng chè riãng trong chãú âäü lm
viãûc ny , dỉỵ liãûu cáưn trao âäøi måïi phi di qua DMAC nhỉng våïi täúc
âäü cao hån khi âi qua CPU nhỉng våïi täúc âäü cao hån khi âi qua CPU
(trong trỉåìng håüp ny ta cọ thãø âc âỉåüc dỉỵ liãûu âọ trong thanh ghi
tảm).
Så âäư khäúi cáúu trục bãn trong ca mảch 8237A -5 âỉåüc thãø hiãûn
trãn hçnh 8.5
Mảch DMAC 8237A -5 chỉïa 4 kãnh trao âäøi dỉỵ liãûu DMA våïi
mỉïc ỉu tiãn láp trçnh âỉåüc .MAC 8237A -5 cọ täúc âäü truưn 1 MB/s
cho mäùi kãnh , mäüt kãnh co thãø truưn mät mng cọ âäü di 64KB .
• Giåïi thiãûu cạc chán tên hiãûu ca 8237A -5
+CLK[I]:tên hiãûu âäưng häư ca mảch .âãø mảch cọ thãø lm viãûc
täút våïi hãû 8088 thç tên hiãûu CLK ca hãû thäúng thỉåìng âỉåüc âo
trỉåïc khi âỉa vo CLK ca 8237A-5
+CS {I}:TÊN HIÃÛU CHN V CA 8237a-5 chán ny thỉåìng
âỉåüc näúi våïi âáưu ra ca bäü gii m âëa chè .bäü gii m âëa chè
ny khäng cáưn dng âãún âáưu vo IO/M vç bn thán DMAC â
âỉåüc cung cáúp cạc xung âiãưu khiãøn måïi ca hãn thäúng .
+RESET{I}:tên hiãûu näúi våïi tên hiãûu khåíi âäüng ca hãû thäúng .
khi mảch 8237A -5 ÂỈÅÜC KHÅÍI ÂÄÜNG RIÃNG THANH
GHI MÀÛT LẢ ÂỈÅÜC LÁÛP CN CẠC BÄÜ PHÁÛN SAU ÂAY
BË XOẠ :
 thanhghi lãûnh
 thanh ghi trảng thại
 thanh ghi u cáưu DMA
 thanh ghi tảm thåìi
 mảch láût byte âáưu /byte cúi (Firsst/Last)
+READY{I}:tên hiãûu sàơn sng , näúi våïi READY ca hãû thäúng
âãø gáy ra cạc chu k âåüi âäúi våïi cạc thiãút bë ngoải vi v cạc bäü

nhåï cháûm .
+HLDA {I}:tên hiãûu bạo cháúp nhán u cáưu treo tỉì CPU
+-DRQ
3
{I}:cạc tên hiãûu u cáưu treo tỉì thiãút bë ngoải vi . cỉûc
tênh ca cạc tên hiãûu ny cọ thãø láp trçnh âỉåüc . sau khi khpåíi
âäüng cạc tên hiãûuny âỉåüc âënh nghé a l cạc tên hiãûu kêch hoảt
mỉïc cao .
+DBO-BD7{I,O}:tên hiãûu hai chiãưu näúi âãún bus âëa chè v bus
dỉỵ lliãûu ca hãû thäúng cạc tên hiãûu ny âỉåüc dng khi láp trçnh
cho DMAC v khi DMAC hoảt âäüng cạc chán ny chỉïa 8 bit
âëa chè cao A8-A15 ca mng nhåï dỉỵ liãûu lëch cáưn chuøn .
trong chãú âäü chuøn dỉỵ liãûu giỉỵa cạc vng ca bäü nhåï tải cạc
chán ny cọ cạc dỉỵ liãûu âỉåüc chuøn .
+IOR {I,O}V IOW{I,O}: l cạc chán tên hiãûu hai chiãưu dng
trong khi láûp trçnh cho DMAC v trong cạc chu k âc v ghi .
+EOP{I,O}:L TÊN HIÃÛU HAI CHIÃƯU .KHI L ÂÁƯU VO
NỌ ÂỈÅÜC DNG ÂÃØ BÀÕT BÜC DMAC kãút thục quạ trçnh
DMA .khi l âáưu ra nọ âỉåüc dng âãø bạo cho bãn ngoi biãút
mäüt kãnh no âọ â chuøn xong säú byte theo u cáưu , luc nay
nọ thỉåìng dng nhỉ mäüt u cáưu ngàõt âãø CPU xỉí l viãûc kãút
thục quạ trinh DMA
+A0-A3{I,O}:l cạc tên hiãûu hai chiãưu dng âãø chn cạc thanh
ghi trong 8237A 5 khi láûp trçnh v khi âc(âáưu vo), hồûc âãø
chuqạ 4 bit âëa chè tháúp nháút ca âëa chè mng nhåï cáưn chuøn
(âáưu ra)
A4-A7[0]:cạc chán âãø chỉïa 4 bêt âëa chè pháưn cao trong byte
âëa chè tháúp ca âëa chè mng nhåï cáưn chuøn
HRQ[0]:tên hiãûu u cáưu treo âãún CPU. Tên hiãûu ny thỉåìng
âỉåüc âäưng bäü våïi tên hiãûu CLK ca hãû thäúng räưi âỉåüc âỉa âãún

chán HOLD ca 8088.
DACK
0
DACK
3
[0]: l cạc tên hiãûu tr låìi cạc u cáưu DMA
cho cạc kãnh. Cạc tên hiãûu ny cọ thãø âỉåüc láûp trçnh âãø hoảt
âäüng theo mỉïc tháúp hồûc mỉïc cao.sau khi khåíi âäüng, cạc tê
hiãûu ny âỉåüc âënh nghéa l cạc xung têch cỉûc tháúp.
AEN[0]: tên hiãûu cho phẹp mảch näúi vo DB0-DB7 chäút láúy
âëa chè ca vng nhåï cáưn trao âäøi theo kiãøu DMA. Tên hiãûu
ny cng cho phẹp cáúm cạc mảch âãûm bụ âëa chè v dỉỵ liãûu
hồûc mảch tảo tên hiãûu âiãưu khiãøn ca CPU näúi vo cạc bụ tỉån
ỉïng khi DMAC hoảt âäüng.
ADSTB[0]: xung cho phẹp chäút cạc bit âëa chè pháưn cao A8-
A15 cọ màût trãn DB0-DB7.
MM[0] v MEMỈ[0]: l cạc chán tên hiãûu do DMAC tảo ra
v dng khi âc/ghi bäü nhåï trong khi hoảt âäüng.
Cạc thanh ghi bãn trong ca DMAC 8237A-5
Cạc thanh ghi bãn trong DMAC 8237A-5 âỉåüc CPU 8088
chn âãø lm viãûc nhåì cạc bit âëa chè tháúp A0-A3. Bng 8.1 chè
ra cạch thỉïc chn ra cạc thanh ghi âọ.
Cạc thanh ghi trong bn trãn cọ thãø âỉåüc ghi.âcj hồûc chè ghi
vo v chụng chỉïa cạc thäng tin khạc nhau liãn quan âãún cạch
thỉïc lm viãûc v cạc thäng säú ca mäùi kãnh DMA.
Trong bng 8.2 v 8.3 liãtë kã cạc thanh ghi trãn theo cạc quan
âiãøm ỉïng dủng khạc nhau âãø dãù tra cỉïu âëa chè cho chụng khi
láûp trçnh våïi DMAC 8237A-5
Bng 8.1. Âëa chè cạc thanh ghi bãn trong ca 8237A5
Bng8.2. Âëa chè cạc thanh ghi trong âãø ghi/ âc âëa chè v ssäú

tỉì cáưn chuøn.
Bng 8.3.Âëa chè cạc thanh ghi cho âiãưu khiãøn v trảng thại.
Ta s giåïi thiãûu qua cạc âàûc âiãøm ca mäüt säú trong cạc thanh
ghi kãø trãn.
Thanh ghi âëa chè hiãûn thåìi: Âáy l thanh ghi 16 bêt dng âãø
chỉïa âëa chè ca vng nhåï phi chuøn.Mäùi kãnh cọ riãng
thanh ghi y âãø chỉïa âëa chè .Khi 1 byte âỉåüc truưn âi. Cạc
thanh ghi ny tỉû däüng tàng hay gim tu theo trỉåïc nọ âỉåüc láûp
trçnh nhỉ thãú no.
Thanh ghi säú âãúm hiãûn thåìi: Thanh ghi 16 bêt ny dng âãø chỉïá
säú byte m kãnh phi truưn( nhiãưu nháút l 16KB). Mäùi kãnh
cọ thanh ghi säú byte ca mçnh. Cạc thanh ghi ny âỉåüc ghi
bàòng säú âãúm nh nháút hån 1 so våïi säú byte thỉûc chuøn.
Thanh ghi âëa chè cå såí v thanh ghi säú âãúm cå såí: Cạc thanh
ghi ny âỉåüc dng âãø chỉïa âëa chè v säú âeems cho mäùi kãnh
khi chãú âäü tỉû âäüng khåíi âáưu âỉåüc sỉí dủng.
Trong chãú âäü ny mäüt quạ trçnh DMA kãút thục thç cạc thanh
ghi âëa chè hiãûn thåìi v säú âãúm hiãûn thåìi âỉåüc nảp lải giạ trë c
láúy tỉì thanh ghi âëa chè cå såí v thanh ghi säú âãúm cå såí Khi
cạc thanh ghi âëa chè hiãûn thåìi v säú âãúm hiãûn thåìi âỉåüc láûp
trçnh thç cạc thanh ghi âëa chè cå såí v thanh ghi säú âãúm cå såí
cng âỉåüc láûp trçnh báút kãø chãú däü tỉû khåíi âáưu cọ âỉåüc sỉí dủng
hay khäng.
Thanh ghi lãûnh: Thanh ghi ny dng âãø láûp trçnh cho DMAC.
Nọ bë xoạ khi khåíi âäüng hồûc khi ta sỉí dủng lãûnh xoạ ton bäü
cạc thanh ghi.
Dảng thỉïc ca thanh ghi lãûnh âỉåüc biãøu diãøn trãn hçnh 8.6.
Cạc bêt ca thanh ghi ny quút âënh cạc phỉång thỉïc lm viãûc
khạc nhau ca 8237A-5. Ta s gii thêch sau âáy nghéa ca
cạc bit.

Bit D0 cho phẹp DMAC dng kãnh 0 v kãnh 1 âãø chuøn dỉỵ
liãûu giỉỵa 2 vng nhåï.Âëa chè ca byte dỉỵ liãûu åí vng âêch âỉåüc
chỉïa trong thanh ghi âëa chè ca kãnh 1. Säú byte chuøn âỉåüc
âãø trong thanh ghi âãúm ca kãnh 1.Byte cáưn chuøn lục âáưu
âỉåüc âc tỉì vng gäúc vo thanh ghi tảm âãø räưi tỉì âọ nọ âỉåüc
gỉíi âãún vng âêch trong bỉåïc tiãúp theo( hoảt âäüng nhỉ lãûnh
MOVSB nhỉng våïi täúc âäü cao).
Bit D1=1 dng âãø cho phẹp kãnh 0 giỉỵ ngun âëa chè trong
chãú âäü truưn giỉỵ liãûu giỉỵa 2 vng nhåï. Âiãưu ny khiãún cho
ton bäü cạc ä nhåï vng âêch âỉåüc nảp cng mäüt byte dỉỵ liãûu.
Bit D2 cho phẹp DMAC hoảt âäüng hay khäng.
Bit D3 quút âënh byte cáưn chuøn âỉåüc truưn våïi 4hay 2 chu
kç âäưng häư.
Bit D4 cho phẹp chn chãú âäü ỉu tiãn cäú âënh (kãnh 0 cọ mỉïc
ỉu tiãn cao nháút. Kãnh 3 cọ mỉïc ỉu tiãn tháúp nháút) hồûc chãú â
ỉu tiãn ln phiãn( kãnh 0 lục âáưu cọ mỉïc ỉu tiãn cao nháút. Sau
khi kãnh ny âỉåüc chn âãø chuøn dỉỵ liãûu thç nọ âỉåüc nháûn
mỉïc ỉu tiãn tháúp nháút. Kãnh 1 lải tråí thnh kãnh cọ mỉïc ỉu
tiãn cao nháút )
Bit D5 cho phẹp chn thåìi gian ghibçnh thỉåìng hay kẹo di cho
tiãút bë ngoải vi cháûm.
Cạc bit D6 v D7 cho phẹp chn cỉûc tênh têch cỉûc ca cạc xung
DRQ0-DRQ4 v DACK0- DACK4.
+ thanh ghi chãú âäü: dng âàût chãú âäü lm viãûc cho cạc kãnh ca
DMAC. Mäùi kãnh ca DMAC cọ mäüt thanh ghi chãú â
riãng.Dảng thỉïc ca thanh ghi chãú âäü âỉåüc biãøu diãøn trãn hçnh
8.7.
Trong chãú âäü DMA theo u cáưu. DMAC tiãún hnh chuøn dỉỵ
liãûu cho âãún khi cọ tên hiãûu EOP tỉì bãn ngoi hồûc cho âãún khi
khäng cn u cáưu DMA nỉỵa(DRQ tråí nãn khäng têch cỉûc)

Trong chãú âäü DMA chuøn tỉìng byte, chỉìng no váùn cn u
cu DMA(DRQ váùn l têch cỉûc.) thç DMAC âỉa ra HRQ=0
trong thåìi gian 1 chu kç bus sau mäùi láưn chuøn sang 1 byte.
Sau âọ nọ lải âỉa ra HRQ=1. Cỉï nhỉ váûy DMAC v CPU ln
phiãn nhau xỉỵ dủng bus cho âãún khi âãúm hãút(TC)
Trong chãú âäü DMA chuøn c mng, c mäüt mng gäưm mäüt säú
byte bàòng näüi dung bäü âãúm âỉåüc chuøn liãưn 1 lục. Chán u
cáưu chuøn dỉỵ liãûu DRQ khäng cáưn phi giỉỵ âỉåüc åí mỉïc têch
cỉûc sút trong quạ trçnh chuøn.
Chãú âäü näúi táưn âỉåüc dng khi cọ nhiãưu bäü DMAC.âỉåüc dng
trong hãû thäúng âãø måí räüng säú kãnh cọ thãø u cáưu DMA.
+ Thanh ghi u cáưu: u cáưu DMA cọ thãø âỉåüc thiãút láûp/ xoạ
theo mún bàòng chỉång trçnh. Âiãưu ny ráút cọ låüi khi ta
mún chuøn dỉỵ liãûu giỉỵa cạc vng khạc nhau ca bäü nhåï lục
ny cạc kãnh liãn quan phi âỉåüc láûp trçnh åí chãú â chuøn c
mng.
Dảng thỉïc ca thanh ghi u cáưu âỉåüc biãøu diãøn trãn hçnh 8.8
7 6 5 4 3 2 1 0
X X X X X
1.Thiãút láûp u cáưu 00: chn kãnh 0
0: xọa theo u cáưu 01: chn kãnh 1
10: chn kãnh 2
11: chn kãnh 3
Hçnh 8.8 dảng thỉïc ca thanh ghi u cáưu
+ Thanh ghi màût nả riãng cho tỉìng kãnh: bàòng thanh ghi ny ta
cọ thãø láûp trçnh âãø cáúm (cho Bit màût nả tỉång ỉïng = 1) thay cho
phẹp hoảt âäüng (cho Bit màût nả tỉång ỉïng = 0) âäúi våïi tỉìng
kãnh mäüt .
Dảng thỉïc ca thanh ghi màût nả riãng l cho tỉìng kãnh âỉåüc
biãøu diãùn trãn hçnh 8.9 .

+ Thanh ghi màût nả täøng håüp: våïi thanh ghi ny ta cọ thãø láûp
trçnh âãø cáúm (cho Bit màût nả tỉång ỉïng = 1) thay cho phẹp hoảt
âäüng (cho Bit màût nả tỉång ỉïng = 0) âäúi våïi tỉìng kãnh chè bàòng
mäüt lãûnh .
Dảng thỉïc ca thanh ghi màût nả täøng håüp âỉåüc biãøu diãùn trãn
hçnh 8.10
7 6 5 4 3 2 1 0
X X X X X
1.Thiãút láûp màût nả 00: chn kãnh 0
0: xọa theo màût nả 01: chn kãnh 1
10: chn kãnh 2
11: chn kãnh 3
(X: khäng quan tám)
Hçnh 8.9. Dảng thỉïc ca thanh ghi màût nả riãng cho mäùi kãnh
7 6 5 4 3 2 1 0
X X X X
1.Láûp màût nả cho kãnh 3 1: Láûp màût nả cho kãnh 0
0: xọa màût nả cho kãnh 3 0 Xọa màût nả cho kãnh 0
1:Láûp màût nả cho kãnh 2 1: láûp màût nả cho kãnh 1
0: Xọa màût nả cho kãnh 2 0: xọa màût nả cho kãnh 1
Hçnh 8.10. Dảng thỉïc ca thanh ghi màût nả täøng håüp.
- Thanh ghi trảng thại : Thanh ghi ny cho phẹp xạc âënh trảng
thại ca cạc kãnh trong DMAC. Kãnh no â trãưn xong (âảt säú
âãúm. TC) kãnh no âang cọ u cáưu DMA âãø trao âäøi dỉỵ liãûu.
Khi mäüt kãnh no âọ âảt TC. Kãnh âọ s tỉû âng bë cáúm Dảng
thỉïc ca thanh ghi trảng thại âỉåüc biãøu diãùn trãn hçnh 8.11.
• Cạc lãûnh âàûc biãût cho DMAC 8237A - 5
Cọ 3 lãûnh âàûc biãût âãø âiãưu khiãøn hoảt âäüng ca DMAC 8237A
- 5 . Cạc lãûnh ny chè thỉûc hiãûn bàòng cạc lãûnh OUT våïi cạc âëa
chè cäøng xạc âënh thç theo thanh ghi m khäng cáưn âãún giạ trë

củ thãø ca thanh ghi AL .
7 6 5 4 3 2 1 0
1. Kãnh 0 cọ u cáưu 1: Kãnh 0 âảt säú âãúm
1: Kãnh 1 cọ u cáưu 1: Kãnh 1 âảt säú âãúm
1: Kãnh 2 cọ u cáưu 1: Kãnh 2 âảt säú âãúm
1: Kãnh 3 cọ u cáưu 1: Kãnh 3 âảt säú âãúm
Hçnh 8.11. Dảng thỉïc ca thanh ghi trảng thại.
+ Lãûnh xọa mảch láût byte âáưu/byte cúi (First/Lạt, F/L) : F/L l
mäüt mảch láût bãn trong DMAC âãø chè ra byte no trong cạc thanh ghi
16 bit âãø chè ra byte no trong cạc thanh ghi 16bit (thanh ghi âëa chè
hồûc thanh ghi säú âãúm âỉåüc chn lm viãûc .nãúu F/L=1 thi säú âọ l
MSB , cn nãúu F/L=O ) thç säú âọ l LSB.mảch láût F/L tỉû âäüng thay
âäøi trảng thại khi ta ghi /âc cạc thanh ghi âọ . khi khåíi âäüng xong thç
F/L=O
lãûnh xoạ ton bäü cạc thanh ghi : lãûnh ny cọ tạc âäüng nhỉ thao
tạc khåíi âäüng . táút c cạc thanh ghji âãưu bë xoạ riãng thanh ghi màût nả
täøng håüp thç âỉåüc láûp âãø cáúm cạc u cáưu trao âäøi dỉỵ liãûu .
lãûnh xoạ thanh ghi màût nả täøng håüp :lãûnh ny cho phẹp cạc
kãnh ca DMAC bàõt âáưu u cáưu trao âäøi dỉỵ liãûu .
• láûp trçnh cho cạc thanh ghi âëa chè v thanh ghi säú âãúm:
viãûc láûp trçnh cho cạc thanh ghi âëa chè v thanh ghi säú âãúm âỉåüc
thỉûc hiẻn riãng cho mäùi kãnh . cáưn phi âënh trỉåïc giạ trë logic ca
F/L âãø thao tạc chênh xạc âỉåüc våïi LSB v MSB ca cạc thanh ghi
trãn . ngoi ra cn phi cáúm cạc u cáưu DMA ca cạc kãnh trong khi
láûp trçnh cho chụng. Cọ thãø tn theo cạc bỉåïc sau âáy âãø láûp trçnh
cho DMAC 8237A -5:
+ xoạ màût láût F/L
+cáúm cạc u cáưu ca cạc kãnh
+ghi LSB räưi MSB ca thanh ghi âëa chè
+ghi LSB räưi MSB ca thanh ghi säú âãúm .

• Näúi DMAC 8237A -5 våïi CPU 8088 åí chãú âäü MIN
Viãûc phäúi ghẹp mảch 8237A-5 våïi 8088 âỉåüc thãø hiãûn trãn hçnh
8.12
Tên hiãûu ca 8237A AEN-=O khi CPU kiãøm soạt hoảt âäüng ca ton
hãû . cạc bit âëa chè A 16 -A 19 v AO-A7 s âỉåüc chäút båíi U1 v U3
âãø âỉa ra bit âëa chè . cạc tên hiãûu âiãưu khiãøn dáøn xút tỉì CPU cng
âỉåüc âỉa ra bus âiãưu khiãøn båíi mảch däưn kãnh U5 (74LS257). KHI
DMAC nàõm quưn chè huy hãû thäúng thç AEN =1 s cáúm cạc chäút U3
vU4 måí thäng tỉì CPU ra bus . nhỉng lải cho phẹp chäút U2 v måí
chäút U4 ca DMAC âãø cung cáúp cạc bit âëa chè A16-A19 v A8-
A15.cạc bit âëa chè khạc l A0-A7 v cạc tên hiãûu
MEMR.MEMR.IOR.IOW s âỉåüc láúy trỉûc tiãúp tỉì DMAC.
Xung ADSSTB s cho phẹp måí mảch chäút U4 âãø âỉa cạc bit âëa chè
A8-A15 . âỉåüc chäút tỉì bit D ca 8237A -5.
Vç DMAC 8237A -5 chè cọ kh nàng cung cáúp cạc bit âëa chè
A16-A19 âỉåüc ghi vo chäút U2 (74LS373) nhåì lãûnh OUT våïi âëa chè
cäøng âỉåüc gii m nhåì mảch gii m âëa chè U6 , mảch gii m âëa chè
ny âäưng thåìi cng cung cáúp xung chn v cho 8237A -5 .trãn hçnh
8.12 âãø cho viãûc gii thêch tråí nãn âån gin måïi chè biãøu diãùn cạc
cạch tảo ta âëa chè cao nháút cho mäüt kãnh ta cọ thãø dng vi mảch
chun dủng 74LS 670 âãø lm thanh ghi trang DMA cho c 4 kãnh
ca DMAC . tat nhiãn ta phi näúi lải cạc tên hiãûu cho âụng .
• Mäüt vê dủ truưn dỉỵ liãûu giỉa hai vng nhåï
Viãûc dng chãú â DMA âãø chøyn dỉỵ liãûu giỉỵa cạc vng klhạc
nhau ca bäü cho phẹp âảt âỉåüc täúc âäü truưn cao hån so våïi viãûc dng
cạc lãûnh chuøn dỉỵ liãûu REP MOV SB ca CPU nãúu láúy vê dủ våïi
trỉåìng håüp DMAC 8237A -5 v CPU 8088 5MH
Z
thç täúc âäü truưn ca
DMAC cao hån cåỵ 2 láưn .

Sau âáy l mäüt vê dủ sỉí dủng 8237A -5 âãø chuøn dỉỵ liãûu
giỉa 2 vng nhåï .
Gi thiãút ta phi chuøn säú mäüt säú byte säú liãûu tỉì vng nhåï cọ
âëa chè l 10000H sang vng nhåï khạc cọ chè âáưu l 14000H trong mäüt
hãû thäúng cọ så âäư pháưnDMAC v CPU dỉûa trãn hçnh 8.12.
Ta cọ thãø dng chỉång trçnh Mem Trans.asm âãø gii quút
cäng viãûc ny .
Trong chỉång trçnh ny , âáưu tiãn ta gỉíi 4 bit âëa chè cao chäút U1 , sau
âọ ta xoạ mảch láût F/L räưi gỉíi âëa chè ca vng gäúc v vng âêch ra
cạc thanh ghi tỉång ỉïng ca kãnh o v kãnh 1.tiãúp theo ta chn chãú âäü
cho mäùi kãnh . ta phi âỉa ra tỉì âiãưu khiãøn âãø cho DMAC lm viãûc
oqr chãú âäü chuøn c mng .Kãnh 0 sau âọ âỉåüc cho phẹp hoảt âäüng
v kêch hoảt âäüng bàòng chỉång trçnh . trong quạ trçnh chuøn dỉỵ liãûu
ta kiãøm tra thanh ghi trảng thại âãø dng chỉång trçnh khi âảt säú âãúm
(TC).
• CHỈÅNG TRÇNH Mem Trans.asm
m

×