Professional Documents
Culture Documents
DMA
Truy nhËp bé nhí trùc tiÕp (DMA)
Kh¸i niÖm vÒ DMA
Khi m¸y tÝnh cÇn ph¶i chuyÓn mét sè lîng lín sè liÖu
gi÷a thiÕt bÞ ngo¹i vi vµ bé nhí. NÕu dïng CPU ®Ó
thùc hiÖn th× ®Çu tiªn CPU nhËn th«ng tin råi sau
®ã míi chuyÓn ®Õn n¬i nhËn. Qu¸ tr×nh nhËn vµ
gi¶i m· lÖnh cßn cÇn thªm c¸c th«ng tin bæ xung do
®ã c«ng viÖc nµy sÏ rÊt chËm. V× vËy Intel thiÕt kÕ
bé ®iÒu khiÓn vµ truy cËp trùc tiÕp 8237 víi chøc
n¨ng bá qua CPU vµ truyÒn sè liÖu trùc tiÕp gi÷a bé
nhí vµ ngo¹i vi, nhê vËy mµ lµm cho qu¸ tr×nh sÏ
nhanh lªn nhiÒu.
DMA (Direct Memory Access – Truy cËp bé nhí trùc
tiÕp). Lµ mét d¹ng cña ph¬ng ph¸p vµo ra, trong ®ã
d÷ liÖu ®îc di chuyÓn trùc tiÕp gi÷a bé nhí m¸y tÝnh
vµ m¹ch ngoµi mµ kh«ng dïng bé vi xö lý.
Ta cã thÓ so s¸nh: nÕu 8237 cã thÓ truyÒn byte d÷
liÖu gi÷a thiÕt bÞ ngo¹i vi I/O vµ bé nhí trong 4 chu
kú ®ång hå th× 8088 ph¶i thùc hiÖn trong 39 chu kú
®ång hå.
Sè chu kú ®ång
hå
BACK: MOV AL,[SI] 10
OUT PORT,AL 10
INC SI 2
LOOP BACK 17
.
Bè trÝ ch©n cña vi m¹ch dma 8237a
IOR 1 40 A7 DREQ0
IOW 2 39 A6
DB0-DB7 DMA0
MEMR 3 38 A5 Bé ®Öm DACK0
MEMW 4 37 A4 d÷ liÖu
Data
+5v 5 36 EOP
READY 6 35 A3 DREQ1
HLDA 7 34 A2 DMA1
ADSTB 8 33 A1 A0-A7 DACK1
AEN 9 32 A0 Bé ®Öm
HRQ 10 31 VCC Address ®Þa
CS DREQ2
11 30 DB0 chØ
CLK DMA2
12 29 DB1
DACK2
RESET 13 28 DB2
DACK2 14 27 DB3
DACK3 15 26 DB4 Bé thêi
DREQ3
DREQ3 16 25 DACK Control gian vµ
DMA3
DREQ2 17 24 0 ®/khiÓn DACK3
DREQ1 18 23 DACK
DREQ0 19 22 1
GND 20 21 DB5 §Þnh quyÒn u
DB6 tiªn
DB7
Bè trÝ ch©n cña vim¹ch DMA
8237A S¬ §å KHèI ®¬n gi¶n cña 8237
Kh¸c víi qu¸ tr×nh Add Bus
HLDA HAC
truyÒn sè liÖu qua DAC
CPU, DMA chØ truyÒn CPU 8237
Data Bus
sè liÖu mµ kh«ng cã
qu¸ tr×nh gi¶i m· vµ DR
thùc hiÖn lÖnh vµ khi HR
CPU nhËn tÝn hiÖu HOLD
D7 D6 D5 D4 D3 D2 D1 D0
Bus d÷
HRQ liÖu
DREQ
HLDA §iÒu
DMA Bé nhí khiÓn
CPU DAC ®Üa
8088 K
RESET A0
RE A1
Tõ gi¶I m· A0
CS A2
Tõ RDY ®Õn 74244 A3
DMA RDY A3 A4
§ång hå DMA CLK A4 A5
HLDA HLDA
IOR A6
A7
IOW
§Öm BUS ®iÒu MEMW
A7
MEMR HRQ DMA
khiÓn
TC
DREQ0
DACK0
DREQ1
DREQ2 DACK0 BRP
D0 DREQ3 DACK1
DACK2
D7 DACK3
D0 A8
74373
D7 A15
GhÐp nèi 8237 trªn
74 670
D0
RA
m¸y IBM - PC
D1
RB A16
A0 D2 A17
A1 D3 Q0 A18
DMA AEN WA Q1 A19
Tõ cæng WB
80H Q2
Trªn m¸y tÝnh IBM PC – XT c¸c kªnh DMA ®îc sö dông nh
sau:
Kªnh 0 ®îc dïng lµm t¬i DRAM. Trong c¸c m¸y PC/AT
kh«ng cßn chøc n¨ng nµy.
Kªnh 1 kh«ng ®îc sö dông, ngêi ta dïng kªnh nµy cho
m¹ng.
Kªnh 2 dïng cho bé ®iÒu khiÓn ®Üa mÒm.
Kªnh 3 dïng cho bé ®iÒu khiÓn ®Üa cøng.
C¸c kªnh 1,2 vµ 3 ®îc khëi t¹o nhê lËp tr×nh thanh ghi
chÕ ®é (xBH)
D1 D0 = 0 1 : Chän kªnh 1.
D3 D2 = 00 : KiÓm tra truyÒn.
D4 = 0: Bá chÕ ®é khëi t¹o tù ®éng.
D5 = 0: T¨ng ®Þa chØ.
D7 D6 = 01 : ChÕ ®é tõng byte.
Nh vËy ®Ó lËp tr×nh cho kªnh, thanh ghi chÕ ®é cã gi¸
trÞ lµ 41H. T¬ng tù gi¸ trÞ ®ã lµ 42H, 43H víi kªnh 2 vµ 3.
; N¹p ®Þa chØ thanh ghi chÕ RW
®é.
Mov dx, 00xBH
Gi¶i m· 2 x4
; §Æt chÕ ®é cho kªnh 1. RA
out dx, al D0 Q0
Thanh ghi 4 x 4
; §Æt chÕ ®é cho kªnh 2. D1 Q1
D2 Q2
mov al, 42H D3 Q3
out dx, al
WA
; ®Æt chÕ ®é cho kªnh 3. Gi¶i m· 2 x 4
WB CÊu tróc 74LS670
mov al,43h
out dx,al.
RD
HOLDA DACK0
DRQ1
DACK1 DRQ5
DRQ2 DACK5
80286 DRQ6
DACK2
DRQ3 DACK6 PhÇn 36 ch©n
DACK3 DRQ7
DACK7
INT INTA
Bé ®Öm
D0-D7
d÷ liÖu
Logic ®iÒu khiÓn
RD WR
AO.CS Khèi
logic
(®äc ghi)
ISR PR IRR
CAS 0.12
SP/EN IR0-IR7
Bé ®Öm
C¸c yªu cÇu ng¾t
cascad
IMR
Internal
Bus
Ghi chó:
CS : Chip select A0 : ®- êng ®Þa chØA0
SP/EN : Slave Program Enable Buffer D0-D7 : Bus d÷ liÖu 2 chiÒu
ISR : In Service PR : Prioryty
IRR : Interrupt Request CAS : Cascad
IMR : Thanh ghi mÆ t n¹ ®Óche hay kh«ng che ng¾t ISR : L- u ng¾t ®- î c phôc vô.
Phèi ghÐp 8259 trong m¸y PC/XT
Tr×nh tù thùc hiÖn ng¾t cøng víi 8259
1. Sau khi IR ®îc kÝch ho¹t, 8259 sÏ ®¸p l¹i b»ng c¸ch ®Æt INTR
lªn møc cao ®Ó th«ng b¸o cho CPU yªu cÇu ng¾t.
2. 8088/86 ®Æt c¸c tÝn hiÖu t¬ng øng lªn S0, S1, S2 ®Ó x¸c
nhËn 8288 r»ng ng¾t ®· ®îc yªu cÇu (S2S1S0=000).
3. 8288 ph¸t ra INTA ®Çu tiªn cho 8259.
4. 8259 nhËn INTA ®Çu tiªn vµ thùc hiÖn chøc n¨ng gi¸m s¸t kÓ
c¶ viÖc x¸c ®Þnh møc u tiªn.
5. Chip 8288 sÏ ph¸t INTA thø 2 tíi 8259.
6. Xung INTA thø 2 kÝch 8259 chuyÓn mét byte vÐc-t¬ ng¾t lªn
bus d÷ liÖu, vµ byte nµy sÏ ®îc 8088/86 chèt l¹i.
7. 8088/86 sö dông byte nµy ®Ó x¸c ®Þnh vÞ trÝ cña vÐc-t¬
ng¾t. Gi¸ trÞ ®ã gÊp 4 lÇn cña sè hiÖu ng¾t.
8. 8088/86 sÏ PUSH thanh ghi cê vµo ng¨n xÕp, xo¸ IF vµ TF v×
vËy sÏ kho¸ c¸c yªu cÇu ng¾t bªn ngoµi vµ chÕ ®é tõng bíc,
vµ cuèi cïng ®Èy thanh ghi CS:IP vµo ng¨n xÕp.
9. 8088/86 ®äc CS:IP cña ch¬ng tr×nh con phôc vô ng¾t tõ
b¶ng vÐc t¬ ng¾t vµ b¾t ®Çu ch¬ng tr×nh con phôc vô ng¾t