1. Vào ra đi u khi n b ng cỏch th m dũ
V n đ đi u khi n vào/ra d li u s tr thành r t đ n gi n n u thi t b ngo i vi lỳc nào c ng s n sàng ch đ làm vi c v i CPU. Vớ d , b ph n đo nhi t s (nh là m t thi t b vào) l p s n trong m t h th ng đi u khi n lỳc nào c ng cú th cung c p s đo v nhi t đ c a đ i t ng c n đi u ch nh, cũn m t b đốn LED 7 nột (nh là m t thi t b ra) dựng đ ch th m t giỏ tr nào đú c a m t đ i l ng v t lý nh t đnh trong h th ng núi trờn thỡ lỳc nào c ng cú th bi u hi n thụng tin đú. Nh v y, khi CPU
- 53 - mu n cú thụng tin v nhi t đ c a h th ng thỡ nú ch vi c đ c c ng ph i ghộp v i b đo nhi t đ , và n u CPU mu n bi u di n thụng tin v a đ c đ c trờn đốn LED thỡ nú ch vi c đ a tớn hi u đi u khi n t i đú mà khụng ph i ki m tra xem cỏc thi t b này cú đang s n sàng làm vi c hay khụng.
Tuy nhiờn trong th c t khụng ph i lỳc nào CPU c ng làm vi c v i cỏc đ i t ng "liờn t c s n sàng" nh trờn. Thụng th ng khi CPU mu n làm vi c v i m t đ i t ng nào đú, tr c tiờn nú ph i ki m tra xem thi t b đú cú đang tr ng thỏi s n sàng làm vi c hay khụng, n u cú thỡ nú m i th c hi n vi c trao đ i d li u. Nh v y, n u làm vi c theo ph ng phỏp th m dũ thỡ h thụng th ng là CPU ph i
đ c dành riờng cho vi c trao đ i d li u vỡ nú ph i liờn t c ki m tra tr ng thỏi s n sàng c a thi t b ngo i vi thụng qua cỏc tớn hi u múc n i (Handshake Signal). Cỏc tớn hi u này đ c l y t m ch ph i ghộp, do ng i thi t k t o ra, đ ch ng trỡnh th m dũ ho t đ ng trờn đú.
Vớ d : M t c ng vào s 0 (Cú đa ch 00) đ c dựng đ đ c tr ng thỏi s n sàng c a 2 thi t b ngo i vi núi trờn. Tớn hi u s n sàng c a thi t b ngo i vi s 1 (c ng vào 01) đ c đ t vào bit D0, tớn hi u s n sàng c a thi t b ngo i vi s 2 (c ng vào 02) đ c đ t vào bit D1. Cỏc thi t b này s cú giỏ tr 1 khi thi t b ngo i vi t ng ng tr ng thỏi s n sàng làm vi c v i CPU và chỳng s đ c đ a vào Bus d li u khi CPU đ c nú b ng l nh đ c c ng vào s 0.
Mụ t ho t đ ng c a ph n m ch vào d li u.
Khi thi t b vào s 1 cú 1 Byte s li u c n trao đ i, nú đ a ra xung STB đ cho phộp m ch ch t 8 bit l y Byte d li u đ ng th i kớch cho m ch l t D (m ch t o tớn hi u s n sàng) làm vi c. CPU s th m dũ tr ng thỏi s n sàng c a thi t b vào s 1 qua bit D0 khi nú đ c c ng D0. n khi CPU đ c 1 Byte d li u vào thỡ nú đ ng th i xoỏ luụn m ch t o tr ng thỏi s n sàng đ chu n b cho l n làm vi c t i v i 1 Byte d li u khỏc.
2. Vào ra đi u khi n b ng Ng t
Ng t và đi u khi n ng t
Trong cỏch t ch c trao đ i d li u thụng qua vi c th m dũ tr ng thỏi s n sàng c a thi t b ngo i vi, tr c khi ti n hành b t k m t cu c trao đ i d li u nào CPU ph i đ toàn b th i gian vào vi c xỏc
đnh tr ng thỏi s n sàng làm vi c c a thi t b ngo i vi. Trong h th ng vi x lý v i cỏch làm vi c nh v y, thụng th ng CPU đ c thi t k ch y u ch là đ ph c v cho vi c vào ra d li u và th c hi n cỏc x lý liờn quan. Trong th c t CPU luụn cú nhu c u t ng i dựng là t n d ng kh n ng làm vi c c a CPU đ làm thờm nhi u cụng vi c khỏc n a. Ch t i khi nào cú yờu c u trao đ i d li u thỡ m i
- 54 - yờu c u CPU t m d ng cụng vi c hi n t i đ ph c v vi c trao đ i d li u. Sau khi hoàn thành vi c trao đ i d li u CPU s quay v đ làm ti p cụng vi c hi n đang b giỏn đo n. Cỏch làm này g i là ng t CPU đ trao đ i d li u.
Nh v y m t h th ng v i cỏch ho t đ ng theo ki u này cú th đỏp ng đ c r t nhanh cỏc yờu c u trao đ i d li u trong khi v n cú th làm đ c cỏc cụng vi c khỏc. Mu n đ t đ c đi u này, ta ph i cú cỏch t ch c h th ng sao cho cú th t n d ng đ c kh n ng th c hi n cỏc ch ng trỡnh ph c v ng t t i cỏc đa ch xỏc đnh c a CPU. Vi m ch 8088 c a CPU cú cỏc yờu c u ng t che đ c INTR và khụng che đ c NMI, chớnh cỏc chõn này s đ c s d ng vào vi c đ a cỏc yờu c u ng t t bờn ngoài đ n CPU.
Cỏc lo i ng t trong 8088
Trong h vi x lý 8088 cú th x p cỏc nguyờn nhõn gõy ra ng t CPU vào 3 nhúm sau:
Nhúm cỏc ng t c ng:đú là cỏc yờu c u ng t CPU do tớn hi u ng t đ n t cỏc chõn INTR và NMI. Ng t c ng NMI là yờu c u ng t khụng che đ c, t ng đ ng v i ng t INT2. Cỏc l nh CLI (xoỏ c IF) và STI (l p c IF) khụng cú nh h ng đ n vi c nh n bi t tớn hi u yờu c u ng t NMI.
Ng t c ng INTR là yờu c u ng t che đ c, cỏc l nh CLI và STI cú nh h ng tr c ti p t i tr ng thỏi c a c IF trong b vi x lý, t c là nh h ng t i vi c CPU cú nhõn bi t yờu c u ng t t i chõn này hay khụng. Yờu c u ng t t i chõn INTR cú th cú ki u ng t N n m trong kho ng 0 - FFh. Ki u ng t này ph i đ c đ a vào Bus d li u đ CPU cú th đ c đ c khi cú xung INTA trong chu k tr l i ch p nh n ng t.
Chu k tr l i ng t c a CPU 8088.
Nhúm cỏc ng t m m: Khi CPU th c hi n cỏc l nh ng t d ng INT N, trong đú N là s hi u (ki u) ng t
n m trong kho ng 00-FFH (0-225).
Nhúm cỏc hi n t ng ngo i l đú là: cỏc ng t do cỏc l i n y sinh trong quỏ trỡnh ho t đ ng c a CPU nh phộp chia cho 0, x y ra tràn khi tớnh toỏn ...
Yờu c u ng t s đ c ki m tra th ng xuyờn t i chu k đ ng h cu i cựng c a m i l nh. Cỏch đ n gi n đ đ a đ c s hi u ng t N vào Bus d li u trong khi c ng t o ra yờu c u ng t đ a vào chõn INTR c a b vi x lý 8088
Cỏc ng t khỏc:
- 55 -
a s hi u ng t vào Bus d li u
Gi thi t trong m t th i đi m nh t đnh ch cú m t yờu c u ng t IRi đ c tỏc đ ng và khi đú đ u ra c a m ch NAND s cú xung yờu c u ng t đ n CPU. Tớn hi u IRi đ c đ ng th i đ a qua m ch khu ch đ i đ m đ t o ra s hi u ng t t ng ng, s hi u ng t này s đ c CPU đ c vào khi nú đ a ra tớn hi u tr l i INTA.
Quan h gi a IRi và s hi u ng t N
ỏp ng c a CPU khi cú yờu c u ng t
Khi cú yờu c u ng t ki u N đ n chõn CPU, và n u yờu c u đú đ c phộp,CPU th c hi n cỏc cụng vi c sau:
V m t c u trỳc ch ng trỡnh, khi cú ng t x y ra thỡ ch ng trỡnh chớnh (CTC) liờn h v i ch ng trỡnh con ph c v ng t (CTCPVN), đi u này đ c mụ t trờn hỡnh d i đõy.
- 56 - Trong th c t cỏc ng t m m INT N đó bao trựm cỏc lo i khỏc CPU b i vỡ INTEL đó quy đnh m t s ki u ng t đ c bi t đ c x p vào đ u dóy ng t m m INT N:
INT 0: ng t m m do phộp chia cho s 0 gõy ra.
INT 1: Ng t m m đ ch y t ng l nh ng v i tr ng h p c TF = 1 INT 2: Ng t c ng do tớn hi u tớch c c t i chõn NMI gõy ra
INT3: Ng t m m đ đ t đi m d ng c a ch ng trỡnh t i m t đa ch nào đú INT4 (ho c l nh INTO): Ng t m m ng v i tr ng h p c tràn OF = 1
Cỏc ki u ng t khỏc cũn l i thỡ đ c dành cho INTEL và cho ng i s d ng (IBM khụng hoàn toàn tuõn th cỏc quy đnh này khi ch t o cỏc mỏy PC/XT và PC/AT)
INT5 – INT 1FH: Dành riờng cho INTEL trong cỏc b vi x lý cao c p khỏc. INT20 – INT FFH: dành cho ng i s d ng.
Cỏc ki u ng t N trong INT N đ u t ng ng v i cỏc đa ch xỏc đnh c a CTCPVN mà ta cú th tra đ c trong b ng cỏc vộc t ng t. INTEL quy đnh b ng này n m trong RAM b t đ u t đa ch 00000H và dài 1KB (8088 cú t t c 256 ki u ng t, m i ki u ng t ng v i m t vect ng t, m i vộc t ng t c n cú 4 Byte đ ch a đa ch đ y đ cho CS : IP c a CTCPVN.
B ng vộct ng t c a 8088 t i 1 KB RAM đ u tiờn đ c ch ra nh hỡnh d i đõy:
X lý u tiờn khi ng t
M t yờu c u quan tr ng đ t ra là, đũi h i CPU ph i cú kh n ng x lý đ c cỏc yờu c u ng t n u t i cựng m t th i đi m cú nhi u yờu c u ng t thu c cỏc lo i ng t khỏc nhau, đũi h i CPU th c hi n ph c v . V n đ gi i quy t theo cỏch sau: CPU s x lý cỏc yờu c u ng t theo th th u tiờn v i nguyờn t c ng t nào cú m c u tiờn cao nh t s đ c CPU nh n bi t và ph c v tr c.
Thụng th ng ngay t khi ch t o CPU 8088 cú kh n ng phõn bi t cỏc m c u tiờn khỏc nhau cho cỏc lo i ng t (theo th t t cao xu ng th p) nh sau:
- 57 - M ch đi u khi n u tiờn ng t 8259A (PIC: Priority interrupt control)
cỏc kh i ch c n ng chớnh c a PIC: (b sung)
3. Vào ra đi u khi n b ng DMA
Khỏc v i trao đ i tin theo ch ng trỡnh do VXL đi u khi n theo t ng l nh vào ra gi a thanh ghi ch a AX c a VXL v i c a vào-ra c a TBN, trao đ i tin DMA do kh i đi u khi n trao đ i tr c ti p kh i nh DMAC đi u khi n. õy là ph ng phỏp trao đ i tin nhanh, cho m t l ng l n tin tr c ti p gi a kh i nh M và c a vào ra TBN, khụng qua VXL. Ph ng phỏp này th ng dựng đ đ a tin t kh i kh ra màn hỡnh ho c trao đ i gi a kh i nh và đa t . Kh i đi u khi n DMAC cú th thi t k ch t o b i vi m ch r i ho c IC l n nh 8237,82C37.
Th t c trao đ i tin DMA
a. Yờu c u trao đ i tin DMA c a cỏc TBN
a) Nh c đi m c a ph ng phỏp trao đ i tin theo CT. Mu n trao đ i tin c a Kh i nh M và TBN nào đú ta c n:
X a đa ch kh i nh
X Phỏt l nh đ c/ghi kh i nh đ trao đ i v i thanh ghi ch a AX c a VXL.
X a đa ch c a c a n i v i TBN
X Phỏt l nh trao đ i tin (IN/OUT) gi a thanh ghi ch a AX v i c a vào-ra c a TBN. Nh v y ph i cú 4 l nh và trao đ i tin gi a kh i nh và TBN ph i thụng qua thanh ghi ch a v a VXL. Th i gian trao đ i tin l n vỡ:
X VXL ph i gi i mó l nh và th c hi n l nh.
X Trao đ i thụng qua thanh ghi ch a AX trung gian. b)Yờu c u trao đ i tin nhanh.
Trong h MVT cú hai thi t b là màn hỡnh và đa t đũi h i trao đ i m t l ng tin l n trong th i gian nh . do đú ph i dựng gi i phỏp c ng đ đi u khi n s trao đ i tin (khụng dựng ph n m m). c đi m c a gi i phỏp DMA này là:
Kh i DMAC hoàn toàn thay th VXL đ đi u khi n s trao đ i tin, núi cỏch khỏc DMAC hoàn toàn dành quy n s d ng bus trong quỏ trỡnh trao đ i.
VXL b cụ l p, b treo khụng ho t đ ng, t c tr ng thỏi đi n tr cao, khụng liờn h bus bờn ngoài. Khi trao đ i tin xong DMAC l i tr l i quy n s d ng Bus cho VXL.
b. Th t c trao đ i tin DMA.
a) Th t c:
DMAC đi u khi n s trao đ i DMA gi a kh i nh M và TBN, khụng cú s tham gia c a VXL (b treo hay cụ l p đ ng dõy) theo th t c cú trỡnh t sau:
TBN đ a yờu c u DRQ cho DMAC. DMAC ghi nh n (n u ch a cú ghi che, ch n tr c), xột th t u tiờn (n u cú nhi u yờu c u DRQ vào đ ng th i) và đ a yờu c u cho VXL, đ ngh chi m gi đ ng dõy b i m t trong hai tớn hi u sau:
X Tớn hi u Hold (cho cỏc VXL 8085,8086 ch đ MIN)
X Tớn hi u RQ0 ( ch đ MAX c a 8086)
VXL hoàn thành l nh đang th c hi n, ng t ch ng trỡnh đ chuy n sang ch ng trỡnh con kh i phỏt DMA (ghi đa ch ban đ u kh i nh , s l i trao đ i, h ng thay đ i đa ch ) và đ a ra tớn hi u xỏc nh n DMA (GT0, GT1 hay HLDA) và t treo tr ng thỏi đi n tr cao (cụ l p) đ nh ng quy n s d ng BUS cho DMAC.
- 58 - DMAC ti n hành:
X a tớn hi u xỏc nh n DACK cho TBN
X Ti n hành trao đ i DMA cho t i khi k t thỳc (đ m l i trao đ i tr v 0)
X K t thỳc tớn hi u HOLD, tr quy n đi u khi n bus cho VXL
X VXL nh n bi t s k t thỳc tớn hi u HOLD và k t thỳc tớn hi u HLDA, dành l i quy n đi u khi n Bus.
b) Chu i hành đ ng c a DMAC trong trao đ i tin DMA
Chu i hành đ ng c a DMAC g m kh i ghộp n i và kh i đi u khi n đ c th c hi n đ đ m b o vi c trao đ i tin. Chu i hành đ ng này tuõn theo th t :
1. Kh i ghộp n i (KGN) g i kh i đi u khi n m t yờu c u (DRQ) cho ph c v DMA. 2. KDK g i yờu c u Hold t i VXL
3. K K nh n xỏc nh n đi u khi n bus (HLDA, GT0) t VXL
4. K K phỏt đa ch lờn bus (t thanh ghi đ m đa ch ) cho kh i nh . 5. K K phỏt xỏc nh n DMA cho TBN. 6. K K phỏt l nh đ c (ghi) đ trao đ i s li u gi a kh i nh và kh i ghộp n i. 7. KGN: (4) (1) Kh i ghộp n i s n sàng nh n s li u. Yờu c u DMA đ c t o thành 8086 và lụgic đi u khi n đ ng dõy(bus) Kh i nh M Kh i ghộp n i TBN i u khi n DMA Thi t b Vào / Ra Kh i ghộp n i (5) (8) (9) (3) (2) HLDA Hold Bus đa ch Bus s li u Bus đi u khi n
- 59 - Ch t s li u (khi ghi) đ trao đ i v i TBN. Hai hành đ ng 6 và 7 cú th trỏo đ i v i nhau nờn ghi s li u t kh i ghộp n i vào kh i nh thụng qua thanh ghi đ m c a KGN.
Thanh ghi đa ch t ng lờn 1.
Thanh ghi đ m l i gi m đi 1. N u n i dung thanh ghi đ m l i này ch a b ng 0, l p l i cỏc b c 6, 7 đ trao đ i v i cỏc l i tin khỏc.
8. KGN k t thỳc tớn hi u yờu c u HOLD
9. VXL k t thỳc tớn hi u HLDA đ dành l i quy n chi m bus t DMAC
3. Cỏc ch đ trao đ i DMA
a) Trao đ i tin kh i : trao đ i nhi u (kh i) l i tin l n l t t giỏ tr đ m l i tin n t i 0 (h t)
b) Trao đ i l y nộn chu k t ng ph n: DMAC phỏt hi n đ ng dõy bus r i (VXL khụng s d ng
đ ng dõy bus) th c hi n trao đ i DMA. DMAC ph i cú :
Thi t b phỏt hi n đ ng dõy r i
Thi t b b o đ m VXL b treo cho t i khi DMAC khụng s d ng bus, khi n VXL ch m t th i gian Tw t i khi DMAC th c hi n trao đ i xong m t ph n c a trao đ i tin và ti p t c n t ph n l y lộn chu k sau cho t i khi k t thỳc trao đ i tin kh i tin DMA.
c) L y lộn chu k trong su t: Ch đ này c ng gi ng ch đ trờn là l y lộn chu k nh ng b t VXL ch v i Tw l n h n cho t i khi trao đ i xong m t kh i tin tr n v n.
Kh i đi u khi n DMAC
1. Nhi m v c a kh i