intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Ghép nối và điều khiển thiết bị ngoại vi - Chương 5

Chia sẻ: Nguyễn Nhi | Ngày: | Loại File: PDF | Số trang:14

138
lượt xem
31
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tài liệu tham khảo giáo trình môn học Ghép nối và điều khiển thiết bị ngoại vi nhằm cung cấp kiến thức cơ bản trong việc tìm hiểu thiết kế mạch ghép nối ngoại vi với máy vi tính - Chương 5 Ghép nối vào ra điều khiển bằng DMA

Chủ đề:
Lưu

Nội dung Text: Ghép nối và điều khiển thiết bị ngoại vi - Chương 5

  1. Tài li u môn h c: Ghép n i và ñi u khi n thi t b ngo i vi CHƯƠNG 5: GHÉP N I VÀO RA ðI U KHI N B NG DMA 5.1 Khái ni m DMA cơ b n 5.1.1 Khái ni m DMA Phương pháp trao ñ i d li u theo chương trình s ch m do: - VXL ph i gi i mã và th c hi n l nh - Trao ñ i d li u t ng byte thông qua thanh ch a AX c a VXL. K thu t vào ra DMA (direct memory access) là phương pháp truy c p tr c ti p t i b nh ho c I/O mà không có s tham gia c a CPU. Phương pháp này trao ñ i d li u gi a b nh và thi t b ngo i vi v i t c ñ cao và ch b h n ch b i t c ñ c a b nh ho c c a b ñi u khi n DMA. T c ñ truy n DMA có th ñ t t i 10 ÷ 12 Kbyte/s v i các b nh RAM có t c ñ cao. DMA ñư c ng d ng trong nhi u m c ñích nhưng thông thư ng nó ñư c dùng trong quá trình "refresh" DRAM, xu t màn hình, ñ c ghi ñĩa, truy n d li u gi a các vùng nh v i t c ñ cao . 5.1.2 Ho t ñ ng DMAC (DMA Controller) cơ b n Hai tín hi u ñ yêu c u và xác nh n trong h th ng VXL là HOLD ñư c s d ng ñ yêu c u DMA và HLDA là ñ u ra xác nh n DMA. Khi tín hi u HOLD ho t ñ ng (HOLD = 1), DMA ñư c yêu c u. B VXL tr l i b ng cách kích ho t tín hi u HLDA, xác nh n yêu c u, ñ ng th i th n i các công vi c hi n th i cùng các bus d li u và ñ a ch , ñi u khi n ñư c ñ t tr ng thái tr kháng cao. Tr ng thái này cho phép các thi t b I/O bên ngoài ho c các b VXL khác n m quy n ñi u khi n bus h th ng ñ truy c p tr c ti p b nh . Tín hi u HOLD có m c ưu tiên cao hơn INTR ho c ñ u vào NMI (ng t không che ñư c) và ch sau RESET. Tín hi u HOLD luôn có hi u l c t i b t kỳ th i ñi m nào trong su t quá trình th c hi n các l nh khác c a VXL. Chú ý r ng t lúc tín hi u HOLD thay ñ i cho ñ n khi tín hi u HLDA thay ñ i ñã tr i qua m t s chu kỳ clock . DMA thư ng ñư c th c hi n gi a thi t b I/O và b nh . Quá trình ñ c DMA là quá trình ñưa d li u t b nh ra thi t b I/O, và ngư c l i quá trình ghi DMA là quá trình ñưa d li u t I/O t i b nh . Trong c hai chu trình này thi t b I/O và b nh ñư c ñi u khi n ñ ng th i d n ñ n c n có các tín hi u ñi u khi n khác nhau. Ð ñi u khi n quá trình ñ c DMA ta c n hai tín hi u ho t ñ ng MEMR (ñ c b nh ) và IOW (ghi I/O). Ð ñi u khi n quá trình ghi ta có hai tín hi u MEMW (ghi b b nh ) và IOR (ñ c I/O). B ñi u khi n DMA cung c p ñ a ch b nh và tín hi u ch n thi t b I/O cho 8088 trong su t quá trình DMA. Do t c ñ truy n DMA ph thu c vào t c ñ c a b nh và t c ñ c a b ñi u khi n DMA nên trong trư ng h p t c ñ c a b ñi u khi n DMA nh hơn so v i b nh thì b ñi u khi n DMA s làm gi m t c ñ chung c a h th ng . Hình v sau minh ho quá trình ho t ñ ng DMA cơ b n cùng ñ th th i gian ñ c / ghi DMA : Gi ng viên: Nguy n Văn Minh Trí 59
  2. Tài li u môn h c: Ghép n i và ñi u khi n thi t b ngo i vi Ð th th i gian ñ c / ghi DMA . Gi ng viên: Nguy n Văn Minh Trí 60
  3. Tài li u môn h c: Ghép n i và ñi u khi n thi t b ngo i vi 5.1.3. Các ch ñ trao ñ i d li u DMA + Trao ñ i d li u theo kh i: trao ñ i nhi u l i d li u, ñ m t giá tr n ñ n 0. + Trao ñ i l y lén chu kỳ t ng ph n: DMA phát hi n data bus r i, r i th c hi n trao ñ i d li u 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 ñư ng dây, khi n VXL ch m t th i gian Tw t i khi DMAC th c hi n trao ñ i xong trong m t ph n c a trao ñ i d li u 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 c t d li u DMA. + Trao ñ i l y lén chu kỳ trong su t: gi ng ch ñ trên, nhưng DMA b t VXL ch t i khi trao ñ i xong m t t d li u tr n v n. Gi ng viên: Nguy n Văn Minh Trí 61
  4. Tài li u môn h c: Ghép n i và ñi u khi n thi t b ngo i vi 5.2 B ñi u khi n DMA – 8237A Vi m ch 8237A là m t b ñi u khi n DMA cung c p ñ a ch b nh và tín hi u ñi u khi n trong su t quá trình DMA và truy n s li u v i t c ñ cao gi a b nh và thi t b vào ra. 8237 là vi m ch có 4 kênh tương thích v i b VXL 8088, các kênh này có th m r ng thêm nhi u kênh khác m c dù ñ i v i h th ng nh thì 4 kênh này là qúa ñ . 8237 có kh năng th c hi n truy n DMA lên t i 1.6Mbyte/s .M i kênh có kh năng ñánh ñ a ch t i 64 Kbyte b nh và có th truy n 64 Kbyte theo chương trình. 5.2.1 Sơ ñ kh i và ch c năng các kh i c a vi m ch 8237A 1. Sơ ñ kh i Hình 5.1: Vi m ch 8237A -5 Gi ng viên: Nguy n Văn Minh Trí 62
  5. Tài li u môn h c: Ghép n i và ñi u khi n thi t b ngo i vi Hình 5.2: Sơ ñ kh i chi ti t c a 8237 - CLK : Ðư c n i v i tín hi u ñ ng h h th ng . - CS :Tín hi u ch n m ch, thông thư ng n i v i ñ u ra c a m t b gi i mã ñ a ch . - RESET : Xoá các thanh ghi t m, thanh ghi tr ng thái , thanh ghi l nh,thanh ghi yêu c u. - READY : t o tr ng thái ch cho 8237A-5 ñ i v i b nh ho c I/O có t c ñ th p. - HLDA (hold Acknowledge): tín hi u thông báo CPU ñã th n i bus ñ a ch , d li u, ñi u khi n c a nó. - DREQ0 - DREQ3 (DMA request) : Ð u vào yêu c u truy n DMA cho m i kênh c a 8237A-5, c c tính c a các tín hi u vào này là có th l p trình ñư c . - DB0 - DB7 (data bus ): Chân n i v i bus d li u c a b VXL 8088 ñư c s d ng trong quá trình trao ñ i d li u - IOR và IOW : ñi u khi n ñ c và ghi I/O . - EOP (end of process ) : tín hi u hai chi u báo k t thúc DMA t i cu i chu kỳ DMA . - A0- A3 : Ch n thanh ghi n i c n l p trình và m t ph n ñ a ch truy n DMA trong quá trình DMA . - A7 - A4 : Cung c p 1 ph n ñ a ch còn l i c a DMA . Gi ng viên: Nguy n Văn Minh Trí 63
  6. Tài li u môn h c: Ghép n i và ñi u khi n thi t b ngo i vi - HRQ (hold request ) : n i v i HOLD c a VXL t o yêu c u DMA . - DACK0- DACK3 : (DMA channel acknowledge ) Ð u ra ch p nh n DMA ( có th l p trình ñư c) Thư ng dùng ñ ch n thi t b c n ñi u khi n DMA. - AEN : Cho phép ch t ñ a ch n i v i DB0 - DB7 ñ ng th i không cho phép các b ñ m trong h th ng ñư c n i v i VXL. - ADSTB : (address strobe ) : ho t ñ ng như ALE nhưng ch s d ng b i b ñi u khi n DMA ch t ñ a ch A8- A15 trong su t quá trình truy n DMA. -MEMW ,MEMR: Ð u ra ñi u khi n b nh ñ c, ghi d li u trong chu kỳ DMA tương ng . 2. Ch c năng các kh i và các thanh ghi * Các kh i ch c năng c a vi m ch : - Kh i ñ m bus d li u. Ðây là b ñ m 8 bit ghép n i 8237 v i bus h th ng . (D0- D7) : Các ñư ng bus d li u ba tr ng thái, hai chi u. Khi 8237 ñang ñư c l p trình ñi u khi n b i 8088 CPU, 8 bit d li u c a thanh ghi ñ a ch DMA, thanh ghi ch ñ (Mode set Register ) ñư c g i ñ n t bus d li u. Khi 8088 CPU ñ c m t thanh ghi ñ a ch DMA, ho c thanh ghi ñ m (terminal count Register), thanh ghi tr ng thái d li u ñư c truy n ñ n 8088 thông qua bus d li u. Trong su t chu kỳ DMA (khi 8237 ñang n m quy n ñi u khi n bus d li u), 8237 s g i 8 bit quan tr ng nh t c a ñ a ch b nh (t m t trong s các thanh ghi ñ a ch DMA) t i b ñi u khi n bus. Các bit ñ a ch này s ñư c truy n ngay khi b t ñ u chu kỳ DMA, sau ñó bus d li u s ñư c gi i phóng ñ th c hi n quá trình trao ñ i d li u v i b nh trong su t quá trình DMA. * Các kênh DMA (DMA channel ): M i kênh (CH0 - CH3) bao g m hai thanh ghi 16 bit : Thanh ghi ñ a ch DMA và thanh ghi ñ m (Terminal Count Register ) . Hai thanh ghi này ph i ñư c kh i t o trư c khi các kênh ñư c phép ho t ñ ng. Thanh ghi ñ a ch DMA ñư c ñ c cùng v i ñ a ch c a ô nh ñ u tiên ñư c truy c p. Giá tr ñư c ghi vào thanh ghi ñ m (termianal count register) xác ñ nh s các chu kỳ DMA ngay trư c khi ñ u ra c a b ñ m k t thúc TC (Terminal Count ) ho t ñ ng. Nói chung khi mu n có N chu kỳ DMA thì giá tr N-1 ph i ñư c ñưa t i 14 bit th p c a thanh ghi ñ m c ng vào ra (Terminal Count Register). Hai bit cao nh t c a thanh ghi này xác ñ nh lo i ho t ñ ng DMA cho kênh này . Gi ng viên: Nguy n Văn Minh Trí 64
  7. Tài li u môn h c: Ghép n i và ñi u khi n thi t b ngo i vi * Kh i ñ c ghi logic (Read/ Write logic ) Khi 8088 CPU ñ c ho c ghi m t trong s các thanh ghi c a 8237, kh i logic ñi u khi n ñ c ghi nh n l nh ñ c I/O (IOR) ho c I/O Write (IOW) thông báo cho vi m ch ñi u khi n bus 8288 gi i mã 4 bit ñ a ch th p nh t (A0- A3 ) và ñ ng th i ghi n i dung c a bus d li u vào thanh ghi ñ a ch (n u là tín hi u IOW) ho c ghi n i dung thanh ghi ñ a ch lên bus d li u (n u là tín hi u IOR ). Trong su t quá trình DMA kh i logic ñi u khi n ñ c ghi th c hi n l nh ñ c I/O và ghi b nh ( chu kỳ DMA ghi) ho c tín hi u ghi I/O và ñ c b nh (chu kỳ DMA ñ c). C n lưu ý r ng trong su t quá trình ñi u khi n DMA thi t b I/O không ho t ñ ng trong ch ñ này ph i ñư c ñ t tr ng thái "c m " s d ng tín hi u AEN. * Các thanh ghi n i: - Thanh ghi ñ a ch hi n th i (CAR ): Lưu 16 bít ñ a ch b nh trong su t quá trình truy n DMA. M i kênh ñ u có m t thanh ghi này và CAR tăng ho c gi m tuỳ thu c vào cách l p trình. - Thanh ghi ñ m t hi n th i (CWCR ): ñi u khi n s byte ñư c truy n trong quá trình DMA . S ghi trong thanh ghi này nh hơn s byte ñã ñư c truy n 1 ñơn v . - Thanh ghi ñ a ch cơ s và t cơ s (BWCR): s d ng khi ch n ch ñ t ñ ng kích ho t cho m t kênh ,trong quá trình này thanh ghi BWCR ñư c dùng ñ g i l i các thanh ghi CAR và CWCR sau khi DMA k t thúc. - Thanh ghi l nh (Command Register ): l p trình cho ho t ñ ng c a 8237 - Thanh ghi ch ñ (Mode Registe ): Thi t l p ch ñ ho t ñ ng cho m i kênh . Gi ng viên: Nguy n Văn Minh Trí 65
  8. Tài li u môn h c: Ghép n i và ñi u khi n thi t b ngo i vi - Thanh ghi yêu c u (Request Register): dùng yêu c u truy n DMA b ng ph n m m . - Thanh ghi che set/reset (Mask register set/reset mode): xoá ,thi t l p vi c c m các kênh . - Thanh ghi c m (Mask register): xoá ho c thi t l p vi c c m c a t t c các kênh b ng m t l nh . Gi ng viên: Nguy n Văn Minh Trí 66
  9. Tài li u môn h c: Ghép n i và ñi u khi n thi t b ngo i vi - Thanh ghi tr ng thái (Status register -SR ): xác ñ nh tr ng thái c a các kênh DMA . B ng 5.1: Gi i thi u ñ a ch và các l nh ñ c ghi cho các thanh ghi. A3 A2 A1 A0 Ho t ñ n g IOR IOW 1 0 0 0 0 1 ð c thanh ghi tr ng thái 1 0 0 0 1 0 Ghi thanh ghi l nh 1 0 0 1 1 0 Ghi thanh ghi yêu c u 1 0 1 0 1 0 Ghi thanh ghi m t n ñơn 1 0 1 1 1 0 Ghi thanh ghi ch ñ 1 1 0 0 1 0 Xoá flip-flop con tr byte 1 1 0 1 0 1 ð c thanh ghi t m th i 1 1 0 1 1 0 Xoá ch 1 1 1 0 1 0 Xoá thanh ghi m t n 1 1 1 1 1 0 Ghi t t c các bit c a thanh ghi m t n Gi ng viên: Nguy n Văn Minh Trí 67
  10. Tài li u môn h c: Ghép n i và ñi u khi n thi t b ngo i vi Kê Thanh ghi Ho t IOW A3 A2 A1 A0 Int Data CS IOR nh ñ ng FF Bus 0 ñ a ch cơ s Ghi 0 1 0 0 0 0 0 0 A7÷A0 và hi n hành 0 1 0 0 0 0 0 1 A8÷A15 ñ a ch hi n ðc 0 0 1 0 0 0 0 0 A7÷A0 hành 0 0 1 0 0 0 0 1 A8÷A15 ð m l i cơ s Ghi 0 1 0 0 0 0 1 0 W7÷W0 và hi n hành 0 1 0 0 0 0 1 1 W15÷W8 ð m l i hi n ðc 0 0 1 0 0 0 1 0 W7÷W0 hành 0 0 1 0 0 0 1 1 W15÷W8 1 ñ a ch cơ s Ghi 0 1 0 0 0 1 0 0 A7÷A0 và hi n hành 0 1 0 0 0 1 0 1 A8÷A15 ñ a ch hi n ðc 0 0 1 0 0 1 0 0 A7÷A0 hành 0 0 1 0 0 1 0 1 A8÷A15 ð m l i cơ s Ghi 0 1 0 0 0 1 1 0 W7÷W0 và hi n hành 0 1 0 0 0 1 1 1 W15÷W8 ð m l i hi n ðc 0 0 1 0 0 1 1 0 W7÷W0 hành 0 0 1 0 0 1 1 1 W15÷W8 2 ñ a ch cơ s Ghi 0 1 0 0 1 0 0 0 A7÷A0 và hi n hành 0 1 0 0 1 0 0 1 A8÷A15 ñ a ch hi n ðc 0 0 1 0 1 0 0 0 A7÷A0 hành 0 0 1 0 1 0 0 1 A8÷A15 ð m l i cơ s Ghi 0 1 0 0 1 0 1 0 W7÷W0 và hi n hành 0 1 0 0 1 0 1 1 W15÷W8 ð m l i hi n ðc 0 0 1 0 1 0 1 0 W7÷W0 hành 0 0 1 0 1 0 1 1 W15÷W8 3 ñ a ch cơ s Ghi 0 1 0 0 1 1 0 0 A7÷A0 và hi n hành 0 1 0 0 1 1 0 1 A8÷A15 ñ a ch hi n ðc 0 0 1 0 1 1 0 0 A7÷A0 hành 0 0 1 0 1 1 0 1 A8÷A15 ð m l i cơ s Ghi 0 1 0 0 1 1 1 0 W7÷W0 và hi n hành 0 1 0 0 1 1 1 1 W15÷W8 ð m l i hi n ðc 0 0 1 0 1 1 1 0 W7÷W0 hành 0 0 1 0 1 1 1 1 W15÷W8 Gi ng viên: Nguy n Văn Minh Trí 68
  11. Tài li u môn h c: Ghép n i và ñi u khi n thi t b ngo i vi 5.2.2 Ghép n i v i 8237A-5 trong h vi x lý 8088 Vi m ch 8237 ñư c s d ng trong máy vi tính IBM PC ñ th c hi n các quá trình DMA trao ñ i d li u tr c ti p gi a thi t b ngoài và máy vi tính . Tín hi u AEN và ADSTB ra c a 8237A-5 ñi u khi n ñ u ra c a ch t 82C82. Trong su t quá trình ho t ñ ng bình thư ng c a 8088 (AEN=0 ) các vi m ch ch t ñ a ch cung c p các bit ñ a ch A15- A8 .Ð a ch bus A7- A0 ñư c cung c p tr c ti p b i 8237A-5 và ch a m t ph n ñ a ch truy n DMA. Tín hi u ñi u khi n MEMR ,MEMW ,IOR ,IOW cũng ñư c t o b i b ñi u khi n DMA. Gi thi t ñ a ch ñ u cho DMAC là 0070h. Hình 5.3: Sơ ñ ghép n i 8237 v i 8088 1. Các tr ng thái ho t ñ ng Vi m ch 8237A có các tr ng thái sau: - Tr ng thái ngh SI: tr ng thái tr kháng cao, không ñư c ch n m ch ( CS =1). - Tr ng thái ch SO: Tr ng thái ñ u c a quá trình trao ñ i DMA. 8257 nh n tín hi u DREQ, x lý và g i yêu c u Hold cho VXL nhưng chưa nh n ñư c tín hi u xác nh n theo HLDA. Khi nh n ñư c xác nh n, DMAC b t ñ u quá trình trao ñ i d li u. - Tr ng thái phát ñ a ch ngu n s li u S1: DMAC phát ñ a ch ngu n s li u (c a I/O ho c Memory) - Tr ng thái phát l nh ñ c cho ngu n s li u S2: DMAC phát l nh ñ c s li u c a ngu n s li u - Tr ng thái ch SW: DMAC ch trong th i gian Sw ñ s li u ñư c ñ c xong ngu n phát s li u, ghi xong vào thanh ghi ñ m, ch Ready c a DMAC. Gi ng viên: Nguy n Văn Minh Trí 69
  12. Tài li u môn h c: Ghép n i và ñi u khi n thi t b ngo i vi - Tr ng thái phát ñ a ch c a ñích s li u S3: DMAC phát ñ a ch c a nơi g i s li u (Memory ho c c a I/O) - Tr ng thái phát l nh ghi s li u vào ñích S4: DMAC phát l nh ghi s li u t thanh ghi ñ m ra c a vào-ra 2. Các ch ñ Tuỳ n i dung thanh ghi ch ñ lúc kh i phát, DMAC có các ch ñ sau: - Ch ñ chuy n t ng t ñơn (Single Transfer Mode) - Ch ñ chuy n nhi u t (Block Transfer Mode) - Ch ñ chuy n theo nhu c u (Demand Transfer Mode) v i s lư ng t tuỳ theo ngư i s d ng ñi u khi n. - Ch ñ ghép t ng (Cascade Mode) là ch ñ chuy n liên ti p các t , ñi u khi n b i các DMAC m c n i t ng. 3. Các ch ñ ưu tiên c a yêu c u DMAC Cũng gi ng như x lý ng t, DAMC có hai ch ñ ưu tiên: - 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. - Ch ñ ưu tiên vòng: kênh v a ñư c ph c v s có m c ưu tiên th p nh t. Khi m i l p ch ñ , kênh 0 có m c ưu tiên cao nh t. 4. Kh i phát và ñ m b o chương trình ph c v Trư c khi ñưa DMAC vào ho t ñ ng, chương trình ph i kh i phát nó. Quá trình kh i phát g m 2 giai ño n: - Xoá c ng b ng tín hi u Reset, làm các thanh ghi v 0. - Ghi các l nh c a chương trình kh i phát: VXL ghi vào các thanh ghi ch c năng như ñ a ch ban ñ u, s t trao ñ i, s kênh, che ch n yêu c u c a kênh không c n ho t ñ ng, ch ñ trao ñ i, chi u tăng hay gi m ñ a ch … Khi ghi d li u vào thanh ghi 16 bit, ph i ghi l n l ơt 2 byte theo th t byte th p trư c, byte cao sau. - Sau khi ñư c kh i phát, DMAC s hoàn toàn t ñ ng làm vi c. K t thúc chương trình kh i phát này, luôn ph i có l nh ghi bit D4=1 vào thanh ghi ch ñ ñ cho phép t kh i ñ ng. 5. K t thúc trao ñ i DMA Có hai cách k t thúc trao ñ i d li u: - K t thúc t ñ ng: K t thúc khi b ñ m s tin trao ñ i ñ m v 0, hay s ñ m k t thúc TC (Terminal Count). V i DMAC 8237, vi c k t thúc th hi n tín hi u Hold k t thúc, t c tr v m c logic 0. Gi ng viên: Nguy n Văn Minh Trí 70
  13. Tài li u môn h c: Ghép n i và ñi u khi n thi t b ngo i vi - K t thúc c ơng b c: ñây là tín hi u t ngoài vào (do m ch TBNV ho c do ngư i ñi u hành can thi p b ng cách n nút l nh) ñ k t thúc quá trình trao ñ i DMA. 6. Ki m tra s k t thúc kênh mong mu n Trong khi DMAC ho t ñ ng, thanh ghi tr ng thái luôn ñư c c p nh t, t c luôn ghi tr ng thái hi n th i c a DMAC. Khi k t thúc, VXL có th ñ c n i dung này c a thanh ghi tr ng thái ñ bi t r ng kênh nào c a DMA ñã ñ t ñ n s ñ m k t thúc TC, s l i ñã trao ñ i là bao nhiêu ( trư ng h p k t thúc cư ng b c do EOP t ngoài vào) và kênh vào ñang ch ph c v . 7. ð c ñi m v ho t ñ ng c a 8237 8237 có nh ng ñ c ñi m chính sau: - Cho phép ho c c m riêng bi t t ng kênh DMA trong s 4 kênh. - Trao ñ i d li u DMA tr c ti p gi a hai vùng b nh . - Cho phép n i t ng các DMAC ñ tăng s kênh DMA. - Có th t o yêu c u DMA b ng chương trình - V i 8237-2, t c ñ trao ñ i DMA có th ñ t t i 1,6Mbps. Do ñó ngoài ph c v trao ñ i d li u gi a MVT và màn hình, ñĩa, DMA còn ñư c dùng trong m ng MVT. 5.2.3 L p trình cho 8237A a. Chương trình truy n d li u gi a b nh -b nh b ng DMA Ví d c n chuy n kh i nh có ñ a ch 1000h-13FFh t i kh i nh 1400h-17FFh thông qua DMA. Chương trình s g m các bư c sau: - Xoá flip-flop con tr byte v 0. - L p trình cho các kênh 0 và 1: ðưa ñ a ch ngu n và ñích vào kênh 0 và 1. - ð t giá tr b ñ m b ng s byte c n chuy n -1 - L p trình thông qua thanh ghi ch ñ cho kênh 0 và 1 - L p trình cho thanh ghi l nh - Cho phép kênh 0 và ñưa ra yêu c u DMA - Ki m tra bit h t d li u. N u ñã xong thì k t thúc DMA. Xác ñ nh ñ a ch các thanh ghi: Addr_chanel0 = $70; Addr_chanel1 =$72; Addr_CT1 =$73 ;// ð a ch b ñ m kênh 1 Addr_SR =$78 ;// ð a ch thanh ghi tr ng thái Addr_CR =$78 ;// ñ a ch thanh ghi ñi u khi n Addr_MR =$7B ; //ñ a ch thanh ghi ch ñ Addr_MKR = $7F;// ñ a ch thanh ghi c m Addr_RR = $79 ; //ñ a ch thanh ghi yêu c u Addr_pFF = $7C ; //ñ a ch flip-flop con tr byte Gi ng viên: Nguy n Văn Minh Trí 71
  14. Tài li u môn h c: Ghép n i và ñi u khi n thi t b ngo i vi port[addr_pFF]=$00;// xoá con tr FF v 0. // ð t ñ a ch ngu n vào kênh 0 port[addr_chanel0] =$00; port[addr_chanel0] =$10; // ð t ñ a ch ñích vào kênh 1 port[addr_pFF]=$01;// xoá con tr FF v 0. port[addr_chanel1] =$00; port[addr_chanel1] =$14; //Ch ñ nh s byte c n chuy n 4000 port[addr_pFF]=$01;// xoá con tr FF v 0. port[addr_CT1] =$00; port[addr_CT1] =$40; // ð t ch ñ : kênh 0 ñ c 1011 1000b= B8h ; kênh 1 ghi: 1011 0101=B5h port[addr_pFF]=$01;// xoá con tr FF v 0. port[addr_MR]=$B8; port[addr_MR]=$B5; // L p trình thanh ghi l nh cho phép truy n M-M= 01h Port[addr_CR]=$01; // B m t n che ch n kênh 0 = 0000 1110 b=0Eh port[addr_MKR]= $0E; //Yêu c u DMAC = 0000 0100 b=04h port[addr_RR] = $04; //Ki m tra tr ng thái k t thúc ñ m: kênh 0 ñã truy n h t d li u (D0=1) =01h Repeat Var1=port[addr_SR]; Until ((var1 and $01)=$01); //k t thúc truy n Return; Sau khi kh i ñ ng, h th ng DMAC s t ho t ñ ng mà không c n thêm chương trình ph nào n a. Gi ng viên: Nguy n Văn Minh Trí 72
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2