Tài liệu Ghép nối và ñiều khiển thiết bị ngoại vi

pdf 128 trang vanle 2420
Bạn đang xem 20 trang mẫu của tài liệu "Tài liệu Ghép nối và ñiều khiển thiết bị ngoại vi", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdftai_lieu_ghep_noi_va_ieu_khien_thiet_bi_ngoai_vi.pdf

Nội dung text: Tài liệu Ghép nối và ñiều khiển thiết bị ngoại vi

  1. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi GHÉP N I VÀ ðIU KHI N THI T B NGO I VI Ng ưi so n: TS. Nguy n V ăn Minh Trí ThS. Lâm T ăng ðc Các sinh viên l p 03SK Gi ng viên: Nguy n V ăn Minh Trí 1
  2. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi TÀI LI U L ƯU HÀNH N I B LI NĨI ð U Ngày nay, máy vi tính (MVT) đã đưc c i ti n, nâng c p và th tr ưng hố đ đt t c đ x lý c c nhanh, giá thành r . Trong nh ng th p niên qua, MVT đã đưc áp d ng kh p m i n ơi, thay th cho các h th ng c ũ nhi u nh ưc đim. ðc bi t, trong h th ng đin, đin cơng nghi p, MVT đã đưc ng d ng ngày càng nhi u, mang l i nhi u tính năng ưu vi t cho h th ng. Do đĩ yêu c u phát tri n lý thuy t v h th ng cĩ s d ng MVT đã m ra nhi u l ĩnh v c h c m i. Mt ví d c th c a vi c ng d ng MVT trong cơng nghi p là các h th ng đo l ưng và điu khin s d ng MVT. Trong các h th ng này, MVT nh n các d li u đo đt tr ng thái v t lý c a h th ng, vi d nh ư nhi t đ, áp su t, đin áp , và tính tốn đ đư a ra nh ng quy t đnh, tín hi u điu khi n tr l i h th ng, nh m đt đưc các yêu c u điu khi n đ ra c a h th ng. Mu n thi t k , v n hành và b o qu n t t h đo-điu khi n cơng nghi p, ng ưi k s ư cn n m v ng v k thu t máy tính, cách vi t ch ươ ng trình, k thu t ghép n i thi t b ngo i vi, vi c x lý s li u, lý thuy t điu khi n s Mơn h c ghép n i và điu khi n thi t b ngo i vi (TBNV) nh m cung c p các 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 MVT. Các m ch thi t k ph c v cho vi c đo l ưng, điu khi n, giao ti p gi a MVT v i MVT, MVT v i h vi điu khi n. Gi ng viên: Nguy n V ăn Minh Trí 2
  3. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi MC L C CH ƯƠ NG 1: C Ơ S GHÉP N I THI T B NGO I VI 1.1. Gi i thi u chung 1.1.1. Cu trúc h th ng 1.1.2. Nhi m v c a b ghép n i 1.1.3. Th t c trao đ i d li u c a máy vi tính 1.2. Gi i thi u m t s vi m ch dùng trong b ghép n i 1.2.1. Các m ch logic c ơ b n 1.2.2. Các mch l t 1.2.3. Các m ch thanh ghi đ m 1.2.4. Các m ch gi i mã đa ch 1.2.5. Các m ch truy n d li u CH ƯƠ NG 2: GHÉP N I VÀO RA SONG SONG ðIU KHI N B NG CH ƯƠ NG TRÌNH 2.1 Các l nh vào ra d li u 2.1.1 Các l nh vào ra b ng h p ng 2.1.2 Các l nh vào ra b ng Turbo C 2.1.3 Các l nh vào ra b ng Turbo Pascal 2.2 Ghép n i song song đơ n gi n: cĩ hay khơng cĩ đi tho i 2.2.1 Ca vào đơ n gi n khơng đ i tho i 2.2.2 Ca ra đơn gi n khơng đ i tho i 2.2.3 Ca vào đơ n gi n cĩ đ i tho i 2.2.4 Ca ra đơn gi n cĩ đ i tho i 2.3 Ghép n i song song điu khi n b ng ch ươ ng trình 2.3.1 Sơ đ kh i và ch c n ăng các kh i c a 8255A 2.3.2 Các ch đ làm vi c c a 8255A 2.3.3 Ghép n i v i 8255A 2.3.4 Lp trình cho 8255A CH ƯƠ NG 3: GHÉP N I TRAO ðI D LI U NI TI P 3.1 Gi i thi u chung v trao đ i d li u n i ti p 3.1.1 Yêu c u trao đ i d li u n i ti p 3.1.2 Mch trao đ i d li u n i ti p Gi ng viên: Nguy n V ăn Minh Trí 3
  4. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi 3.1.3 Th t c trao đi d li u n i ti p 3.2 M ch thu phát d b v n n ăng UART 8250 3.2.1 S ơ đ kh i và ch c n ăng các kh i c a UART 8250 3.2.2 Ghép n i v i UART 8250 3.2.3 L p trình cho UART 8250 CH ƯƠ NG 4: GHÉP N I ðIU KHI N NG T 4.1 Khái ni m và phân lo i ng t 4.1.1 Khái ni m 4.1.2 Phân lo i ng t 4.2 X lý ng t c a nhi u thi t b ngo i vi 4.2.1 Cho phép ho c c m ng t 4.2.2 Sp x p ưu tiên ng t 4.2.3 Xác đnh ngu n gây ng t 4.2.4 To vector ng t 4.3 Vi m ch điu khi n ng t 8259A 4.3.1 Sơ đ kh i và ch c n ăng các kh i c a 8259A 4.3.2 Cu trúc ho t đ ng c a vi m ch 8259A 4.3.3 Ghép ni v i 8259A 4.3.4 Lp trình cho 8259A CH ƯƠ NG 5: GHÉP N I VÀO RA ðIU KHI N B NG DMA 5.1 Khái ni m DMA c ơ b n 5.1.1 Khái ni m DMA 5.1.2 Ho t đ ng DMAC (DMA Controller) c ơ b n 5.1.3 Các ch đ trao đ i d li u DMA 5.2 B điu khi n DMA – 8237A 5.2.1 S ơ đ kh i và ch c n ăng các kh i c a DMAC 8237A 5.2.2 Ghép n i v i 8237A trong h vi x lý 8088 5.2.3 L p trình cho 8237A CH ƯƠ NG 6: GHÉP N I TƯƠ NG T -S VÀ S -TƯƠ NG T 6.1. Gi i thi u m t s m ch khu ch đi thu t tốn 6.1.1 Các tham s c ơ b n c a m ch khu ch đ i thut tốn 6.1.2 Các s ơ đ c ơ b n c a b khu ch đ i thu t tốn 6.2 B chuy n đ i s -tươ ng t DAC 6.2.1 Ho t đ ng c a DAC 6.2.2 Các tham s c ơ b n c a b chuy n đ i c a DA 6.2.3 Các m ch DAC đin hình 6.2.4 Ghép n i v i DAC 6.2.5 L p trình xu t d li u ra DAC 6.3 B bi n đ i t ươ ng t -s ADC Gi ng viên: Nguy n V ăn Minh Trí 4
  5. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi 6.3.1 Nguyên t c làm vi c c a ADC 6.3.2 Các tham s c ơ b n c a b chuy n đ i AD 6.3.3 Các ph ươ ng pháp chuy n đ i AD 6.3.4 Ghép n i v i ADC 6.3.5 L p trình nh n d li u t ADC CH ƯƠ NG 7: NG D NG MÁY VI TÍNH TRONG ðO L ƯNG VÀ ðIU KHI N 7.1. Gi i thi u v c u trúc máy tính 7.2 Thi t k m ch ghép n i gi a h th ng t đ ng hĩa v i các c ng c a máy vi tính Gi ng viên: Nguy n V ăn Minh Trí 5
  6. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi CH ƯƠ NG 1: CƠ S GHÉP N I THI T B NGO I VI 1.1. Gi i thi u chung 1.1.1 Cu trúc h th ng Máy vi tính hay h vi x lý đu cĩ c u trúc chung do Phơn N ơi-Man đ xu t g m kh i x lý trung tâm (CPU), b nh (M) và các c a vào/ra (I/O), nh ư trên hình 1.1. Ngồi ra, MVT cịn c n ph i trao đi d li u và mơi tr ưng bên ngồi, ví d giao ti p v i ng ưi s dng qua bàn phím-màn hình, trao đi d li u v i các thi t b ngồi thơng d ng, các thi t b ngồi trong h đo-điu khi n, và các MVT khác trong m ng. Do đĩ các b ghép n i thi t b ngo i vi (BGN TBNV) đưc xây d ng, g m: • BGN các thi t b vào chu n nh ư bàn phím, con chu t • BGN các thi t b ra chu n nh ư màn hình, máy in • BGN các b nh ngồi chu n nh ư c ng, CD-ROM • BGN v i MVT khác trong m ng nhi u MVT. • BGN v i h vi điu khi n, h vi x lý. • BGN h đo l ưng - điu khi n: RAM ROM V ðưng dây d li u và đa ch MVT X L ðưng dây BGN BGN BGN BGN BGN BGN điu khi n Bàn phím Máy in b nh Song song Vào/ra Vào/ra Màn hình ngồi /n i ti p Cm bi n Cơ c u Thi t b c ng BGN đo l ưng ch p hành CN CD-ROM Song song /n i ti p MVT /Vi ðK Hình 1.1: C u trúc h GN trao đ i d li u tin gi a MVT và TBNV Trong đĩ: VXL là vi t t t c a vi x lý RAM là random-access memory ROM là read-only memory BGN là b ghép n i CD-ROM là compact disk read-only memory CN là cơng nghi p ðK là điu khi n Gi ng viên: Nguy n V ăn Minh Trí 6
  7. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi ðt bi t trong h đo l ưng - điu khi n, MVT nh n d li u tr ng thái v t lý c a h th ng (nhi t đ, áp su t, đin áp, dịng đin ) d ưi d ng tín hi u đin, t đu dị các b cm bi n (sensor), b chuy n đi (tranducer), b phát hi n (detector). Và MVT cịn nh n thơng tin v tr ng thái s n sàng hay b n c a thi t b đo. MVT sau đĩ đư a tín hi u ch p nh n trao đi d li u v i TBNV, thu th p và x lý d li u, tính tốn các tín hi u điu khi n đư a ra các c ơ c u ch p hành (các van đĩng m , các rơle trong m ch đin, các m ch đng l c điu t c đng c ơ đin ), hay đư a ra các thơng s k thu t cho thi t b . Ngồi ra, MVT cịn c n l ưu tr d li u trên c ng, đĩa compact (CD-ROM) đ tra cu lúc c n, hi n th k t qu đo d ưi d ng b ng s li u, d ng đ th hay hình v đ ho trên màn hình. 1.1.2 Nhi m v c a b ghép n i TBNV đưc ghép n i v i MVT thơng qua các ph n thích ng v cơng ngh và thích ng logic nh ư hình 1.2. GN cơng ngh làm nhi m v điu chnh m c tín hi u gi a cơng ngh s n xu t TBNV và cơng ngh s n xu t các m ch c u trúc nên BUS c a MVT. GN logic làm nhi m v t o các tín hi u điu khi n TBNV t nh ng tín hi u trên BUS h th ng. Nhi m v c a BGN là ph i h p trao đi d li u gi a MVT và TBNV. 1. Ph i h p v m c và cơng su t tín hi u - Mc tín hi u c a MVT th ưng là m c TTL (0V, 5V), trong khi TBNV cĩ m c đin tho i ( ±15V, ±48V) hay m c đin cơng nghi p (220V/380V). - Cơng su t đưng dây MVT nh (c ch c mA), trong khi cơng su t c n cho TBNV là rt ln tùy theo tng h th ng. Do đĩ BGN ph i bi n đi đin áp và khu ch đi cơng su t cho phù h p gi a MVT và TBNV. Th ưng dùng vi m ch 3 tr ng thái đ đư a d`li u ra, đư a d li u vào. Do đĩ vi mch s tr ng thái tr kháng cao khi khơng cĩ trao đi d li u, đ cơ l p TBNV v i MVT, đ khơng tiêu th m t chút cơng su t nào c a đưng dây và đ bo v MVT. 2. Ph i h p v d ng d li u - D li u trao đi c a MVT luơn là song song d ng s nh phân, cĩ th truy n theo 8 bit, 16 bit, 32 bit, 64 bit. - D li u c a TBNV cĩ th song song 8 bit và 16 bit, n i ti p ho c tín hi u liên t c. Do đĩ BGN s chuy n đi d ng d li u cho phù h p gi a MVT và TBNV, ví d chuy n đi t tín hi u liên t c sang tín hi u s . 3. Ph i h p v t c đ trao đ i d li u - MVT th ưng ho t đng v i t c đ cao (t n s lên t i hàng tr ăm MHz) trong khi TBNV th ưng ho t đng ch m h ơn nhi u. Do đĩ BGN nh n và l ưu d li u t MVT r i truy n cho TBNV theo ph p ch m c a TBNV, gi i phĩng cho MVT làm nhi m v khác (ph c v TBNV khác, ch y ch ươ ng trình x lý s li u hay hi n th trên màn hình). T ươ ng t , BGN nh n d li u c a TBNV và ch MVT đc d li u vào. 4. Ph i h p v ph ươ ng th c trao đ i d li u - Vi c đc/xu t d li u do MVT kh i x ưng: Khi đĩ, MVT đư a l nh điu khi n t i kh i đng BGN hay TBNV, MVT đc tr ng thái ca TBNV. N u tr ng thái TBNV ch ưa s n sàng, MVT s ch . Gi ng viên: Nguy n V ăn Minh Trí 7
  8. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi N u TBNV tr ng thái s n sàng, MVT s ti n hành đc/xu t d li u. - Vi c đc/xu t d li u do TBNV kh i x ưng: Khi đĩ, TBNV đư a yêu c u trao đi d li u t i b ph n x lý ng t c a BGN. N u cĩ nhi u TBNV đng th i đư a ra yêu c u, BGN s s p x p theo th t ưu tiên đnh s n, r i đư a t ng yêu c u t i MVT. MVT sau khi nh n tín hi u yêu c u, s chu n b và đư a tín hi u xác nh n s n sàng trao đi. ðn l ưc BGN nh n và truy n tín hi u s n sàng đn cho TBNV. Sau đĩ, MVT và TBNV s trao đi d li u qua trung gian là BGN. điu khi n điu khi n BGN MVT GN GN TBNV s li u logic cơng s li u ngh Hình 1.2: GN gi a MVT và TBNV 1.1.3 Th t c trao đ i d li u c a máy vi tính MVT trao đi d li u v i TBNV theo m t trong hai ch đ: - Ch đ ch ươ ng trình: Gm các l nh VÀO, RA và CHUY N d li u gi a các thanh ghi. - Ch đ truy c p th ng t i b nh : BGN lúc này điu khi n s trao đi gi a TBNV và b nh qua trung gian BGN. Các ca vào ra c a VXL tr ng thái tr kháng cao. BGN điu khi n m i ho t đng c a b nh và TBNV, bao g m: . Phát đa ch cho b nh và TBNV. . Phát l nh đc RD hay ghi WR s li u. . Các s li u đc, ghi đưc trao đi gi a b nh và TBNV thơng qua các thanh ghi đm c a BGN. ch đ trao đi d li u theo ch ươ ng trình, vi c th c hi n cĩ th theo m t trong ba ph ươ ng pháp sau (hình 1.3): - ðng b hay khơng đi tho i. - Khơng đng b hay cĩ đi tho i. - Ng t ch ươ ng trình. 1. Trao đi đ ng b : Sau khi kh i đng TBNV, MVT khơng c n quan tâm t i TBNV cĩ s n sàng trao đi d li u hay khơng mà đư a luơn l nh trao đi d li u. Do đĩ TBNV ph i luơn s n sàng trao đi d li u. Ph ươ ng pháp trao đi d li u này cĩ ưu đim là nhanh, khơng t n th i gian ch đi. Tuy nhiên nĩ cĩ nh ưc đim là thi u tin c y, đơi khi b m t d li u vì cĩ th cĩ s c làm TBNV ch ưa s n sàng trao đi. 2. Trao đi khơng đ ng b : Trình t trao đi di n ra nh ư sau: - MVT đư a tín hi u điu khi n t i BGN. - MVT ch và ki m tra tr ng thái s n sàng trao đi c a TBNV. N u ch ưa s n sàng thì đc là ki m tra l i trng thái này. Gi ng viên: Nguy n V ăn Minh Trí 8
  9. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi - MVT trao đi d li u v i TBNV khi đã s n sàng. Ph ươ ng pháp này th ưng dùng vì t c đ trao đi d li u c a TBNV ch m h ơn so v i MVT. Ph ươ ng pháp trao đi d li u này cĩ ưu đim là r t tin c y, nh ưng l i t n th i gian s d ng MVT. 3. Trao đi theo ng t ch ươ ng trình: Ph ươ ng pháp này kh c ph c đưc nh ưc đim c a ph ương pháp trên. Trình t nh ư sau: - MVT đang th c hi n chu i l nh c a ch ươ ng trình nào đĩ. - TBNV cĩ yêu c u trao đi d li u, s g i tín hi u yêu c u trao đi (yêu c u ng t - INTR ). - MVT đư a tín hi u ch p nh n (xác nh n ng t – INTA). - Ch ươ ng trình chính b ng t, MVT chuy n sang ch ươ ng trình con ph c v ng t, tc ch ươ ng trình con trao đi d li u cho TBNV đã yêu c u. - Ch ươ ng trình chính l i đưc ti p t c th c hi n ch b ng t. Ch ươ ng trình Ch ươ ng trình Ch ươ ng trình Ch ưa Trao đi Trao đi d li u TBNV s n sàng ? Ng t d li u Ri Trao đi d li u a) ðng b b) Khơng đng b c) Ng t ch ươ ng trình Hình 1.3 : Trao đi d li u theo ch ươ ng trình Gi ng viên: Nguy n V ăn Minh Trí 9
  10. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi 1.2. Gi i thi u m t s vi m ch dùng trong b ghép n i Thơng th ưng BGN cĩ các thanh ch t d li u, b đ m 3 tr ng thái đ n i v i BUS và các m ch l t t o tín hi u đ i tho i. 1.2.1 Các m ch logic c ơ b n Mch AND 3Y - SN7408 Vcc 4B 4A 4Y 3B 3A Bng tr ng thái 14 13 12 11 10 9 8 - SN7409 A B Y L L L H L L L H L 1 2 3 4 5 6 7 H H H 1A 1B 1Y 2A 2B 2Y GND Mch OR Vcc 4B 4A 4Y 3B 3A 3Y - SN7432 14 13 12 11 10 9 8 Bng tr ng thái A B Y L L L H L H L H H 1 2 3 4 5 6 7 H H H 1A 1B 1Y 2A 2B 2Y GND Mch NOT - SN7404: Vcc 6A 6Y 5A 5Y 4A 4Y Bng tr ng thái: - SN7405 14 13 12 11 10 9 8 - SN7406 A Y L H H L 1 2 3 4 5 6 7 1A 1Y 2A 2Y 3A 3Y GND Mch EX-OR Vcc 4B 4A 4Y 3B 3A 3Y B ng tr ng thái - SN74136 14 13 12 11 10 9 8 A B Y L L L H L H L H H 1 2 3 4 5 6 7 H H L 1A 1B 1Y 2A 2B 2Y GND Gi ng viên: Nguy n V ăn Minh Trí 10
  11. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi Mch NAND - SN7400 Vcc 4B 4A 4Y 3B 3A 3Y Bng tr ng thái: - SN7401 14 13 12 11 10 9 8 - SN7403 A B Y L L H H L H 1 2 3 4 5 6 7 L H H 1A 1B 1Y 2A 2B 2Y GND H H L Mch NOR Bng tr ng thái - SN7402 Vcc 4B 4A 4Y 3B 3A 3Y - SN7428 14 13 12 11 10 9 8 A B Y L L H H L L L H L 1 2 3 4 5 6 7 H H L 1A 1B 1Y 2A 2B 2Y GND Mch EX-NOR Bng tr ng thái - SN74HC266 Vcc 4B 4A 4Y 3B 3A 3Y 14 13 12 11 10 9 8 A B Y L L H H L L L H L H H H 1 2 3 4 5 6 7 1A 1B 1Y 2A 2B 2Y GND Mch đm 3 tr ng thái kích ho t m c th p - SN74125 Vcc 4C 4A 4Y 3B3C 3A 3Y B ng tr ng thái - SN74425 14 13 12 11 10 9 8 C A Y H X Z∞ L L L L H H 1 2 3 4 5 6 7 1C 1A 1Y 2C 2A 2Y GND Trong đĩ Z ∞ là tr ng thái tr kháng cao. Mch đm 3 tr ng thái kích ho t m c cao Gi ng viên: Nguy n V ăn Minh Trí 11
  12. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi - SN74126 B ng tr ng thái 3Y - SN74426 Vcc 4C 4A 4Y 3B3C 3A 14 13 12 11 10 9 8 C A Y L X Z∞ H L L H H H 1 2 3 4 5 6 7 1C 1A 1Y 2C 2A 2Y GND 1.2.2 Các m ch l t: 2 2 2 - SN7474 Vcc CLR 2D CK PR 2Q 2 Q Bng tr ng thái 14 13 12 11 10 9 8 PR PR CLR CK D Q D Q Q CK Q L H X X H L CLR Q CLR CK H L X X L H D PR Q L L X X H* H* 1 2 3 4 5 6 7 H H ↑ H H L 1 1D 1 1 1Q 1 Q GND CLR CK PR H H ↑ L L H H H L X Q0 Q0 * Trong đĩ Q 0 là tr ng thái c ũ tr ưc đĩ, H là tr ng thái c m. 1.2.3 Các m ch thanh ghi đ m - SN74LS373, SN74LS374 là loi vi m ch ch t truy n qua 8 bits cùng đm 3 tr ng thái. Ð m và ch t đưc điu khi n đ c l p b ng các đ u vào điu khi n khác nhau là:  OE (Output Enable): M cng-đm  LE (Latch Enable): điu khi n m ch t  CP (Clock Input) : ðu vào xung s ưn lên Gi ng viên: Nguy n V ăn Minh Trí 12
  13. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi Bng s th t c a 74LS373 MODEHotđng Ðuvào Thanh Ðura ghini OE LE Di Oi Kíchhotvàđc L H L L L thanhghi L H H H H Chtvàđcthanhghi L L x Q0 Q0 Chtvàkhơngchora H x x x Z∞ Bng s th t c a 74LS373 MODEHotđng Ðuvào Thanh Ðura ghini OE CP Di Oi Kíchhotvàđc L L L L thanhghi L H H H Chtvàđcthanhghi L L x Q0 Q0 Chtvàkhơngchora H x x x Z∞ B điu khi n bus ch t h 8 lo i CMOS 82C82 Gi ng viên: Nguy n V ăn Minh Trí 13
  14. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi Bng s th t c a 82C82 STB OE DI DO X H X Z∞ H L L L H L H H ↓ L X Q0 Trong đĩ: H là logic 1 L là logic 0 X là b t k ỳ Z ∞ là tr ng thái tr kháng cao ↓ là s ưn xung âm Q0 là ch t giá tr c a d li u sau cùng 1.2.4 Các m ch gi i mã đa ch Mt s vi m ch đưc dùng nhi u trong các h th ng gi i mã c a VXL là SN74LS138 (m ch gi i mã 3-8), SN74LS139 (hai gi i mã 2-4). Ð minh ho cho ph ươ ng pháp này ta ch n vi m ch 74LS138. B ng s th t c a vi mch cho bi t t i m t th i đim ch cĩ m t trong tám đ u ra cĩ m c logic 0. Ði u ki n cn đ cĩ m t trong các m c th p đ u ra là các đu vào E1 , E2 , E3 ph i đưc kích ho t, t c là E1 , E2 m c th p và E3 m c cao. Khi 74LS138 đã đưc kích ho t, các đu vào đa ch A 0, A1 và A2 s l a ch n đ u ra, điu này cho phép cĩ th ch n đưc m t trong tám thi t b nh khác nhau t i m t th i đim. Gi ng viên: Nguy n V ăn Minh Trí 14
  15. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi Bng s th t c a 74LS138 Ðu vào Output Enable Select E A2 A1 A0 0 1 2 3 4 5 6 7 E1 E2 3 H x x x x x H H H H H H H H x H x x x x H H H H H H H H x x L x x x H H H H H H H H L L H L L L L H H H H H H H L L H L L H H L H H H H H H L L H L H L H H L H H H H H L L H L H H H H H L H H H H L L H H L L H H H H L H H H L L H H L H H H H H H L H H L L H H H L H H H H H H L H L L H H H H H H H H H H H L Ví d v m ch gi i mã đa ch cho ROM cĩ th tham kh o trên hình 1.4. Gi ng viên: Nguy n V ăn Minh Trí 15
  16. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi Hình 1.4: Mch gi i mã ch n ROM dùng 74LS138 1.2.5 Các m ch truy n d li u - SN74LS245  Các chân A1 ÷A8, B1 ÷B8 là các chân g i/ nh n d li u 2 h ưng t ươ ng ng.  Chân 19 ( G ) là chân ch n IC (Chip Enable).  Chân 1 (DIR) là chân ch n h ưng g i/ nh n d li u (Direction). Bng s th t ca 74LS245 G DIR Hotđng L L DliuvàoB,raA L H DliuvàoA,raB H X Z∞ Gi ng viên: Nguy n V ăn Minh Trí 16
  17. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi CH ƯƠ NG 2: GHÉP N I VÀO RA SONG SONG ðIU KHI N B NG CH ƯƠ NG TRÌNH 2.1. Các l nh vào ra d li u 2.1.1 Các l nh vào ra b ng h p ng : L nh đ nh n d li u t thi t b vào/ra là INput và m t l nh đ g i s li u ra thi t b vào/ra là OUTput. Cĩ b n cách dùng khác nhau c a m i l nh này: hai lo i chuy n d li u 8 hay 16 bít thơng qua các c ng vào/ra 8 bít, và hai chuy n d li u 8 hay 16 bít thơng qua các c ng 16 bít. Ví d hai l nh sau đây s đc các byte c a đưng d n d li u t c ng LPT1: MOV DX,378H ; n p đ a ch c a thanh ghi d li u vào DX IN AL,DX ; đc thơng tin trên đưng d n d li u (D0 đ n D7) c a LPT1 sang thanh ghi AL Bng 2.1: B ng các l nh vào ra Instruction Data Comment Width IN AL,d8 8 Ðc m t byte t c ng vào/ra 8 bít IN AL,DX 8 Ðc m t byte t c ng vào/ra xác đnh b i thanh ghi DX IN AX,d8 16 Ðc m t word t c ng vào/ra 8 bít IN AX,DX 16 Ðc m t word t c ng vào/ra xác đnh b i thanh ghi DX OUT d8,AL 8 Gi m t byte ra c ng vào/ra 8 bít OUT DX,AL 8 Gi m t byte ra c ng vào/ra xác đnh b i thanh ghi DX OUT d8,AX 16 Gi m t word ra c ng vào/ra 8 bít OUT DX,AX 16 Gi m t word ra c ng vào/ra xác đnh b i thanh ghi DX Chú ý: d8 ch a đa ch là c ng vào/ra 8 bít, và DX ch a đ a ch là c ng vào/ra 16 bít. Gi ng viên: Nguy n V ăn Minh Trí 17
  18. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi 2.1.2.Các l nh vào ra b ng Turbo C Bng 2.2: B ng các l nh vào ra Instruction Data Comment Width outportb(addr_port,data_var) 8 Gi mt byte ra c ng vào/ra 8 bít xác đnh b i đa ch addr_port Data_var=inportb(addr_port) 8 Ðc m t byte t c ng vào xác đnh b i đa ch addr_port outport(addr_port,data_var) 16 Gi mt word ra cng vào/ra, 8 bít th p xác đnh b i đa ch addr_port, 8 bít cao xác đnh b i đa ch addr_port+1 Data_var=inportb(addr_port) 16 Ðc m t word t c ng vào/ra, 8 bít th p xác đnh b i đa ch addr_port, 8 bít cao xác đnh b i đa ch addr_port+1 outp(addr_port,data_var) 8 Gi mt byte ra c ng vào/ra 8 bít xác đnh b i đa ch addr_port Data_var=inp(addr_port) 8 Ðc m t byte t c ng vào xác đnh b i đa ch addr_port outpw(addr_port,data_var) 16 Gi m t byte ra c ng vào/ra, 8 bít th p xác đnh b i đa ch addr_port, 8 bít cao xác đnh b i đa ch addr_port+1 Data_var=inp(addr_port) 16 Ðc m t word t c ng vào/ra, 8 bít th p xác đnh b i đa ch addr_port, 8 bít cao xác đnh b i đa ch addr_port+1 Ví d các l nh sau xu t 5 (8 bít 00000101) qua thanh ghi d li u c a LPT1 #include #define Dat_reg 0x378 char data_var=5; outport(Dat_reg,data_var); 2.1.3 Các l nh vào ra b ng Turbo Pascal Bng 2.3: B ng các l nh vào ra Instruction Data Comment Width Port[addr] := var1; 8 Gi mt byte ra c ng vào/ra 8 bít xác đnh b i đa ch addr Var := port[addr]; 8 Ðc m t byte t c ng vào xác đnh b i đa ch addr Ví d : Uses crt; Gi ng viên: Nguy n V ăn Minh Trí 18
  19. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi Port[$378] := X; Xu t ra giá tr bi n X lên đưng d n d li u (D0 đ n D7) c a c ng LPT1 Y := port[$379]; ðc n i dung thanh ghi tr ng thái c a LPT1 vào bi n Y Chú ý: M t ch s h 16 ph i thêm d u: 0x vào tr ưc s đĩ trong ngơn ng C, và $ vào tr ưc s đĩ trong ngơn ng Pascal. 2.1.4 Gi n đ th i gian các l nh đ c/ghi d li u: Bus h th ng, bao g m bus d li u (data bus), bus điu khi n (control bus) và bus đa ch (address bus), là các đưng d n truy n thơng gi a vi x lý và TBNV. Các VXL 8 bit d li u th ưng cĩ 8 đưng dây data bus, và 16 đưng dây t ươ ng ng 16 đưng đ a ch address bus. Hai tín hi u RD , WR control bus th ưng đưc s d ng đ xác đ nh th i đim d li u n đ nh trên data bus. Hình 1.5 là gi n đ th i gian tín hi u trên bus h th ng. D li u đưc D li u đưc đc v ào VXL ghi ra TBNV Chu k ỳ đc Chu k ỳ ghi address bus D li u t D li u t TBNV VXL data bus RD WR Hình 1.5: Gi n đ th i gian tín hi u trên bus h th ng. Mi chu k ỳ bus (bus cycle) bao g m vi c chuy n 1 t d li u gi a VXL v i b nh ho c TBNV. Mi chu k ỳ bus b t đ u khi VXL xu t m t đ a ch đ ch n m t v trí b nh ho c các c ng vào ra. Trong gi n đ này, các bus đa ch và d li u đưc bi u di n b ng 1 c p đưng th ng đ ch thơng tin trên bus n đ nh. Khi các đưng trên s ơ đ c t ngang nhau di n t d li u đã thay đi. ðưng nét đ t là tr ng thái th n i khi khơng cĩ thi t b nào lái nĩ. Gi ng viên: Nguy n V ăn Minh Trí 19
  20. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi 2.2 Ghép n i song song đơn gi n: cĩ hay khơng cĩ đ i tho i 2.2.1 C a vào đơ n gi n khơng đi tho i Hình 2.1 mơ t m t c a vào đơ n gi n khơng c n tín hi u đi tho i. Tín hi u vào t b cm bi n (BCB) đưc n i v i bus d li u c a MVT thơng qua b đm ba tr ng thái. Khi chúng ta l p trình đon l nh: C: data1 = inport(addrport); Pascal: data1 := port(addrport); Trình biên d ch s chuy n đon l nh trên thành mã máy, và khi ch y đon mã máy này, VXL s t o ra các tín hi u: - A 0 A 15 t addrport - RD kích ho t m c 0. B gi i mã s so sánh các giá tr trên đưng đa ch v i đa ch c ng cho tr ưc, n u trùng đa ch , đu ra b gi i mã s kích ho t m c 0. Do đĩ đu ra m ch OR s m c 0, kích ho t cho b đm ba tr ng thái m ra, và d li u t TBNV s đ vào bus d li u c a VXL. Lúc này, VXL s nh n - D0, , D 7 gán vào cho bi n data1. Kt thúc chu k ỳ l nh, RD tr v m c 1. ða ch A0 A 15 Gi i mã RD D BCB 1 0 D1 BCB 2 D 7 BCB 7 Bus MVT BGN TBNV Hình 2.1: C a vào đơ n gi n, khơng cĩ đ i tho i Gi ng viên: Nguy n V ăn Minh Trí 20
  21. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi 2.2.2 C a ra đơn gi n khơng đ i tho i ða ch A0 A 15 Gi i mã +E WR K/ ði D0 D 1 D7 Bus MVT BGN Hình 2.2: C a ra đơn gi n, khơng cĩ đi tho i Tươ ng t , m t c a ra đơ n gi n khơng cĩ đi tho i đưc th hi n trên hình 2.2. D li u t VXL đưc g i ra TBNV qua thanh ghi đm, dùng đ điu khi n đèn. M ch khu ch đi s nâng cơng su t lên phù h p v i cơng su t c a đèn. Khi l p trình ph n m m, chúng ta s gõ vào dịng l nh C: outportb(addrport,data2); Pascal: port(addrport) := data2; Trình biên d ch s chuy n đon l nh trên thành mã máy, và khi ch y đon mã máy này, VXL s t o ra các tín hi u: - A 0 A 15 t addrport - WR kích ho t m c 0. B gi i mã s so sánh các giá tr trên đưng đa ch v i đa ch c ng cho tr ưc, n u trùng đa ch , đu ra b gi i mã s kích ho t m c 0. Do đĩ đu ra m ch NOR s nh y lên m c 1, kích ho t cho b thanh ghi đm m ra, và TBNV nh n d li u t MVT, g m: - D0, , D 7 tươ ng ng v i bi n data2. Kt thúc chu k ỳ l nh, WR tr v m c 1. Gi ng viên: Nguy n V ăn Minh Trí 21
  22. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi 2.2.3. C a vào đơ n gi n cĩ đ i tho i 1 ða ch Q D Q0 A0 A 15 CKLQ Q Gi i mã 1 Xung Cl RD np D0 BCB 1 BCB 2 D1 D7 BCB 7 Bus MVT TBNV Hình 2.3: C a vào cĩ đi tho i Ca vào cĩ đi tho i th hi n trên hình 2.3. TBNV g i s li u t i đu vào các thanh ghi. Khi s li u đã n đnh, thi t b ngo i vi g i ti p m t xung n p. S ưn lên xung n p đư a d li u c a TBNV vào nh trong thanh ghi. S ưn xu ng xung n p kích m ch l t, đư a đu ra Q = D = 1. ðĩ là tr ng thái s n sàng c a TBNV. B VXL s ki m tra tr ng thái này b ng thu t tốn trong đon l nh: #define BIT0 0x01; #define addrport1 0x00F8; #define addrport3 0x00F9; do data3 = inportb(addrport1); while (data3&BIT0!=BIT0); data4 = inportb(addrport2); Bng l nh inportb đu tiên, VXL s đư a đa ch addrport1 ra các chân đa ch , kích ho t RD = 0 . ðu ra OR = 0, m m ch đm ba tr ng thái, đư a tín hi u Q = 1 vào đưng d li u D 0. Qua đĩ, d li u v i D 0 = 1 s đưc gán cho bi n data3. Kt thúc chu k ỳ l nh, RD =1, đu ra c ng OR chuy n sang m c 1 làm m ch đm ba tr ng thái chuy n sang tr ng thái tr kháng cao, cách ly chân Q và đưng d li u D 0. Sau khi VXL ki m tra th y d li u đã s n sàng (bit D 0 = 1), l nh inportb th hai s làm VXL t o tín hi u kích m b đm ba tr ng thái, đư a d li u c a TBNV đang nh trong các thanh ghi vào bus d li u và gán cho bi n data4. C ũng b ng xung ch n m ch này, m ch l t s xố Q v m c logic 0. Gi ng viên: Nguy n V ăn Minh Trí 22
  23. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi 2.2.4 C a ra đơn gi n cĩ đi tho i 0 TBNV s n D Q sàng nh n RD QCKL ða ch Pr A0 A 15 Gi i mã 1 S li u s n D Q WR Q sàng CKL Cl Ghi nh n Q D K/ ði 0 D1 D7 Bus MVT BGN TBNV Hình 2.4: C a ra cĩ đ i tho i Hình 2.4 mơ t c a ra cĩ đi tho i. Khi TBNV s n sàng nh n d li u, TBNV s đư a ra mt tín hi u logic 1. B VXL s ki m tra tr ng thái c a TBNV trong đon l nh: #define BIT0 0x01; do data5 = inportb(adrport); while (data5&BIT0 != BIT0); outportb(adrport,data6); Cách ho t đng c a VXL t ươ ng t trên, l nh inportb s n p d li u cĩ D 0 = 1 vào bi n data5, bi n này dùng đ so sánh nh n bi t TBNV s n sàng ch ưa. Kt thúc l nh inportb, đu ra m ch OR chuy n sang 1, t o xung lên đu ra m ch AND, làm chuy n tr ng thái mch l t Q = D = 0, đng th i làm m ch đm ba tr ng thái chuy n sang tr ng thái tr kháng cao, cách ly chân Q và đưng d li u D 0. Nu th y TBNV s n sàng nh n thì l nh outportb ti p theo s g i đa ch adrport cùng tín hi u WR= 0 t o ra m t xung ra m ch OR. S ưn lên xung này n p d li u data6 trên bus d li u vào thanh ghi đ xu t ra TBNV, s ưn xu ng đư a tín hi u Q = D = 1, báo cho TBNV là s li u s n sàng. Sau khi nh n s li u, TBNV sinh ra tín hi u ghi nh n đ xố tín hi u s li u s n sàng (v m c 0) và l p tín hi u TBNV s n sàng nh n (lên m c 1), ch b VXL g i s li u ti p theo. Trao đi d li u cĩ đi tho i làm vi c ch c ch n h ơn trao đi khơng đi tho i. Vì TBNV cĩ t c đ ho t đng ch m, nên s li u đu vào VXL cĩ lúc khơng đúng khi TBNV Gi ng viên: Nguy n V ăn Minh Trí 23
  24. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi cĩ s li u ch ưa n đnh. Do đĩ m t thu t tốn c n dùng cho trao đi khơng đi tho i là đc nhi u l n và ki m tra k t qu các l n v i nhau. N u k t qu gi ng nhau thì d li u vào xem nh ư n đnh. 2.3 Ghép n i song song điu khi n b ng ch ươ ng trình 2.3.1 S ơ đ kh i và ch c n ăng các kh i c a 8255A Ph n GN v i VXL Ph n điu khi n n i b Ph n GN v i TBNV PA 1 3 40 PA 4 PA 2 2 39 PA ðiu Nhĩm PA 0 PA 7 PA 3 5 1 38 PA 6 khi n A PA 4 0 37 PA 7 nhĩm ca A RD 5 36 WR A CS 6 35 RES ET GND 7 34 D 0 A 1 8 33 D 1 Bus s PC 4 PC 7 A 0 9 32 D 2 li u Nhĩm B PC 7 10 8255A 31 D 3 D D ðm Bus s li u trong ca C, 4 0 7 PC 6 11 30 D 4 bus s bit cao PC 5 12 29 D 5 li u PC 4 13 28 D 6 PC 0 PC 3 PC 0 14 27 D 7 Nhĩm B RD PC 1 15 26 V CC ca C, 4 WR ðiu PC 2 16 25 PB 7 bit th p PC 3 17 24 PB 6 A1 khi n A PB 0 18 23 PB 5 0 đc/ghi PB 1 19 22 PB 4 RESET PB 2 20 21 PB 3 CS ðiu Nhĩm PB 0 PB 7 khi n B Hình 2.5: Sơ đ chân và s ơ đ kh i c a 8255A nhĩm ca B B D D D÷ D 0÷ 7 INTRA INTR 0 7 RD INTRB RD WR WR RESET RST PA0÷ PA 7 8255A TBNV VXL A0 A0 A1 PC0÷ PC 7 A1 Gi i mã A÷ A 2 n đa ch CS PB0÷ PB 7 cao Hình 2.6: S ơ đ GN 8255A v i VXL và TBNV Gi ng viên: Nguy n V ăn Minh Trí 24
  25. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi Vi mch PPI 8255A là vi m ch điu khi n b ng ch ươ ng trình đưc áp d ng khá r ng rãi. Hình 1.10 trình bày s ơ đ ghép n i 8255A, g m cĩ: 1. Ph n ghép n i v i VXL: - B đm s li u đ trao đi d li u hai chi u gi a MVT và đưng dây s li u trong. - B logic điu khi n đc vi t: t c b gi i mã đa ch l nh cho các thanh ghi đm và thanh ghi điu khi n. Vi t h p các tín hi u đa ch (A 0, A 1). ch n vi m ch ( CS ), các l nh đc ( RD ) và ghi ( WR ) c a VXL, ta cĩ các l nh ghi và đc khác nhau cho các c a (A, B, C) và t điu khi n (control word) nh ư b ng 2.4. Bng 2.4: B ng tr ng thái c a 8255A A1 A0 CS RD WR Lnh (c a VXL) Chi u di chuy n s li u (v i VXL) 0 0 0 0 1 ðc c a A Ca A → D 0 D 7 0 1 0 0 1 ðc c a B Ca B → D 0 D7 1 0 0 0 1 ðc c a C Ca C → D 0 D 7 1 1 0 0 1 Khơng cĩ giá tr 0 0 0 1 0 Ghi c a A D0 D 7 → C a A 0 1 0 1 0 Ghi c a B D0 D 7 → C a B 1 0 0 1 0 Ghi c a C D0 D 7 → C a C 1 1 0 1 0 Ghi thanh ghi điu khi n D0 D 7 → thanh ghi điu khi n x x 1 x x Vi m ch tr ng thái tr Khơng cĩ trao đi s li u kháng cao 2. Ph n ghép n i v i TBNV: - Ca A, B: hai thanh ghi đm s li u (8 bit) vào ho c ra tu ỳ ch ươ ng trình - Ca C cĩ th chia là hai nhĩm đc l p b ng ch ươ ng trình: n a cao (PC 4 PC 7) và n a th p (PC 0 PC 3). Tu ỳ theo ch đ s d ng trong t điu khi n, c a C cĩ th dùng: • Trao đi s li u vào ho c ra ch đ 0 (mode 0). • ðiu khi n ho c đi tho i v i TBNV và VXL khi c a A và B ch đ 1 b ng cách xác l p và xố t ng bit PC i . • ðiu khi n ho c đi tho i v i TBNV và VXL khi c a A và B ch đ 1 và 2. ch đ 1 và 2, đc các bit c a C, ta bi t đưc tr ng thái c a các c a A và B. 3. Ph n các m ch điu khi n n i b : Cĩ các kh i điu khi n (nhĩm A, nhĩm B) các c a A, B và C. Gi ng viên: Nguy n V ăn Minh Trí 25
  26. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi 2.3.2 Các ch đ làm vi c c a 8255A: B ghép n i 8255A cĩ ba ch đ làm vi c c ơ b n nh ư hình 2.7: - Ch đ 0: vào/ra thơng th ưng - Ch đ 1: ch t vào/ra - Ch đ 2: BUS hai chi u Tu ỳ theo t điu khi n ghi vào thanh ghi điu khi n khi kh i đng cho vi m ch, ta cĩ các ch đ làm vi c và chi u trao đi s li u c a các c a A, B, C khác nhau, nh ư hình 2.8. Hình 2.7: Tĩm t t các ch đ c a 8255A D7 D6 D5 D4 D3 D2 D1 D0 1 Nhĩm B Chi u c a C thp Ch đ c a A 1 - vào 00 - Ch đ 0 0 - ra 01 - Ch đ 1 1x - Ch đ 2 Chi u c a B 1 - vào Chi u c a A 0 - ra 1 - vào 0 - ra Ch đ c a B 1 - Ch đ 1 Chi u c a C cao 0 - Ch đ 0 1 - vào 0 - ra Nhĩm A Hình 2.8: T điu khi n ch đ và chi u c a các c a A, B, C. Gi ng viên: Nguy n V ăn Minh Trí 26
  27. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi 1. Ch đ 0: Ðây là ch đ vào ra c ơ b n c a vi m ch, nĩ đ m b o d li u đưc đưa ra ho c ghi vào các c ng riêng bi t . Trong ch đ này, vi m ch cĩ các ch c n ăng sau : - Vi m ch ho t đ ng g m hai c ng 8 bit và hai c ng 4 bit. - Các c ng cĩ th là c ng vào ho c c ng ra. - Các tín hi u ra đưc ch t l i . - Các tín hi u vào khơng đưc ch t . - Trong ch đ này 8255 cĩ 16 c u hình ho t đ ng vào/ra nh s d ng t điu khi n và l nh OUT nh ư sau : Gi ng viên: Nguy n V ăn Minh Trí 27
  28. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi * Ð th th i gian đ c /ghi c a 8255 trong ch đ này nh ư sau : Gi ng viên: Nguy n V ăn Minh Trí 28
  29. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi Ð th th i gian quá trình đc. Ð th th i gian quá trình ghi. 2. Ch đ 1: Trong ch đ này c ng A và c ng B s d ng các đưng dây tín hi u c a c ng C đ t o ho c ti p nh n tín hi u h i tho i ( hanshaking signal ) ngh ĩa là m i quá trình trao đi d li u c a t ng c ng đ u dùng các tín hi u h i tho i. Các ch c n ăng c ơ b n c a ch đ 1 là - Vi m ch ho t đ ng g m hai nhĩm, nhĩm A và nhĩm B. - M i nhĩm ch a m t c ng 8 bit và m t c ng điu khi n 4 bit. - C ng 8 bit cĩ th là c ng vào , ho c c ng ra ,c hai c ng vào ra đu là c ng ch t . - Các c ng 4 bit đưc s d ng đ điu khi n và xác đnh tr ng thái c a các c ng 8 bit.  Các tín hi u điu khi n vào đưc dùng trong ch đ vào : • STB (Strobe input) Mc th p c a tín hi u vào này cho phép d li u đưc đ c vào . • IBF (Input Buffer Full) Gi ng viên: Nguy n V ăn Minh Trí 29
  30. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi Mc cao c a tín hi u ra này ch ra r ng d li u đã đưc ghi vào c ng ch t, v bn ch t đây là m t tín hi u xác nh n. Tín hi u IBF đưc xác l p khi tín hi u STB đang m c th p và đưc kh i t o l i khi cĩ s ưn d ươ ng c a đu vào RD . • INTR ( Interrupt Request ) Mc cao c a tín hi u ra này cĩ th đưc s d ng đ yêu c u ng t t i CPU. Khi mt thi t b vào yêu c u ph c v , tín hi u INTR đưc xác l p b i tín hi u STB =1, tín hi u IBF=1 và INTE =1 .Tín hi u này đưc kh i t o l i khi s ưn sau ca tín hi u RD . Ch c n ăng này cho phép các thi t b vào yêu c u ng t t i CPU m t cách đơn gi n b ng cách đưa d li u c a nĩ ra c ng. Các t l nh điu khi n và đ th th i gian c a ch đ này nh ư sau: * Ð th th i gian c a ch đ ho t đ ng này nh ư sau : Ð th th i gian quá trình đc . Gi ng viên: Nguy n V ăn Minh Trí 30
  31. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi  Các tín hi u điu khi n ra đưc dùng trong ch đ ra • OBF ( Output Bufer Full F/F). Tín hi u ra OBF chuy n v m c th p đ thơng báo r ng CPU đã ghi d li u ra m t c ng xác đ nh. Tín hi u OBF F/F s đưc xác l p s ưn lên c a tín hi u WR và b xố khi tín hi u vào ACK m c th p . • ACK (Acknowledge Input ). Mc th p c a tín hi u vào này thơng báo cho 8255 r ng d li u t c ng A ho c c ng B đã đưc ch p nh n. V b n ch t đây là tín hi u phúc đáp t thi t b ngo i vi thơng báo nĩ đã nh n đưc d li u g i t i t CPU. • INTR (Interrupt Request ) Mc cao c a tín hi u ra này đưc s d ng đ yêu c u ng t CPU khi m t thi t b ngồi đã nh n đưc d li u truy n t CPU. Tín hi u INTR xác l p khi tín hi u ACK = "1", OBF = "1" và INTE ="1" . Tín hi u này đưc kh i to l i s ưn xu ng c a tín hi u WR . Các t l nh c a ch đ này nh ư sau: * Ð th th i gian c a ch đ ho t đ ng này nh ư sau : Gi ng viên: Nguy n V ăn Minh Trí 31
  32. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi Ð th th i gian quá trình ghi. Trong ch đ 1, hai c ng A và B cĩ th đưc l p trình m t cách riêng bi t là c ng vào ho c c ng ra đ ho t đ ng trong các ng d ng vào /ra cĩ h i tho i khác nhau. Các t l nh ho t đng trong ch đ này nh ư sau: 3. Ch đ 2 Ch đ ho t đ ng này cung c p kh n ăng trao đ i d li u v i các thi t b ngo i vi s dng m t đưng truy n 8 bit đ v a truy n v a nh n d li u (Bus vào/ra hai chi u). Các tín hi u h i tho i đưc dùng trong ch đ này đ điu khi n vi c truy n d li u c ũng tươ ng t nh ư ch đ 1. Các ch c n ăng c ơ b n c a ch đ 2: Gi ng viên: Nguy n V ăn Minh Trí 32
  33. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi - Trong ch đ này ch cĩ nhĩm A đưc s d ng . - C ng A là c ng vào/ ra hai chi u 8 bit . - Các tín hi u vào/ra đu đưc ch t l i. - 5 bit c a c ng C đưc s d ng làm c ng điu khi n ,tr ng thái cho c ng A 8 bit.  Các tín hi u điu khi n ra . • OBF( Output buffer full ) Tín hi u ra OBF m c th p thơng báo CPU khi d li u ra c ng A. • ACK (Acknowledge) Mc th p c a tín hi u vào này cho phép b đ m ra bus d li u c a c ng A gi d li u. Ng ưc l i, b đ m ra này s tr ng thái tr kháng cao . • INTE 1 ( Tín hi u INTE ph i h p v i tín hi u OBF ). Ði u khi n b i vi c l p bit ho c xố bit PC4 .  Các tín hi u điu khi n vào . • STB (Srobe input ). Mc th p c a tín hi u vào này đc d li u vào c ng vào ch t . • IBF ( Input bufer Full ). Mc cao c a tín hi u ra này ch ra r ng tín hi u đã đưc ghi vào c ng vào ch t . • INTE2 ( Tín hi u INTE ph i h p v i tín hi u IBF) Ði u khi n b i vi c xố /l p bit c a PC4 Các t l nh ho t đ ng trong ch đ này nh ư sau : Gi ng viên: Nguy n V ăn Minh Trí 33
  34. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi 4. Ch đ k t h p Ngồi vi c ho t đ ng riêng r theo t ng ch đ , 8255 cịn cĩ kh n ăng ho t đ ng đ ng th i k t h p các ch đ khi khơng ph i t t c các bit trong c ng C đưc s d ng đ điu khi n ho c dành cho tr ng thái. Các bit cịn l i cĩ th đưc s d ng đ th c hi n các ch c năng sau :  Khi đưc l p trình là các đưng vào tín hi u Tt c các đưng vào tín hi u đ u cĩ th đưc truy c p trong su t quá trình đc c ng C thơng th ưng. Nh ư trong hình v minh ho sau : Gi ng viên: Nguy n V ăn Minh Trí 34
  35. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi  Khi đưc l p trình là các đưng tín hi u ra Các bit trong s các bit cao c a c ng C ( PC7- PC4) ph i đưc truy c p m t cách riêng r b ng cách s d ng ch c n ăng xố /l p bit. Các bit trong s các bit th p c a c ng C cĩ th truy c p b ng ch c n ăng xố /l p bit ho c dùng 3 bit t ươ ng ng ghi ra c ng C . * Ðc tr ng thái c ng C. Trong mode 0, cng C truy n d li u t i ho c t thi t b ngo i vi. Khi 8255 đưc l p trình ho t đng trong mode 1 ho c mode 2, cng C đưc s d ng đ t o ra ho c nh n tín hi u h i tho i trao đ i v i thi t b ngo i vi. Ðc n i dung c a c ng C cho phép ng ưi l p trình ki m tra tr ng thái c a các thi t b ngo i vi và điu khi n quá trình trao đi d li u. Khơng cĩ l nh đ c bi t nào dùng đ đ c thơng tin tr ng thái t c ng C mà ch cĩ thao tác đc thơng th ưng th c hi n ch c n ăng này. Gi ng viên: Nguy n V ăn Minh Trí 35
  36. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi 5. Chc n ăng xố bit và l p bit (single bit set/reset ) Bt c bit nào trong 8 bit c a c ng C đ u cĩ th đưc thi t l p ho c đưc xố nh s dng các l nh ghi ra thanh ghi điu khi n các bit phù h p. Nh ư v y khi c ng C đang đưc dùng đ điu khi n, ghi tr ng thái cho c ng A ho c c ng B thì nh ng bit c a c ng C cĩ th đưc xố ho c đưc thi t l p nh s d ng các l nh xố, thi t l p bit nh ư khi c ng C là c ng ra d li u. - T l nh ho t đ ng trong ch đ nh ư sau: Gi ng viên: Nguy n V ăn Minh Trí 36
  37. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi 6. Chc n ăng điu khi n ng t (Interrupt control ) Khi 8255 đưc l p trình ho t đ ng ch đ 1 ho c ch đ 2, các tín hi u điu khi n ca nĩ cĩ th đưc s d ng nh ư yêu c u ng t t i CPU. Tín hi u yêu c u ng t t o b i cng C cĩ th b c m hay đưc phép nh xố hay xác l p m ch l t INTE s d ng ch c năng l p xố bit nh ư đã nêu trên. Ch c n ăng này cho phép ng ưi l p trình cĩ th cho phép ho c khơng cho phép m t thi t b I/O ng t CPU mà khơng gây nh h ưng t i b t k ỳ m t thi t b nào khác trong c u trúc ng t . 2.3.3 Ghép n i v i 8255A Hình 2.9 trình bày m t ví d m t m ch GN 8255A v i máy in, máy đc b ăng ch đ 0. N a th p c a C là c a vào, dùng đ đc các tr ng thái - PC 1 cho tr ng thái b n c a máy in. - PC 0 cho tr ng thái s n sàng c a máy đc b ăng. Na cao c a C là c a ra, dùng đ đư a ra tín hi u điu khi n: - PC 5 đư a tín hi u ch t s li u cho máy in (qua b đo). - PC 4 đ d ch chuy n b ăng gi y đi 1 v trí v bên ph i (qua b khu ch đi đo). Hình 2.10 mơ t m ch ghép n i v i máy in ch đ 1. Các tín hi u đi tho i g m: - PC 4 tín hi u ra đ ch t s li u, cĩ th dùng PC 7 ( OBF A ) thay th . - PC 6 tín hi u vào cho ACK , xác nh n đã in s li u. - PC 3 dùng đ yêu c u ng t ch ươ ng trình, đư a vào chân INTR c a VXL. Nh s d ng ch đ 1, các tín hi u PC 6, PC 7 s t đng thu phát mà khơng c n l nh ca ch ươ ng trình, tr PC 4 ph i đư a l nh. V i vi c n i vào INTR c a VXL, ch ươ ng trình ph c v ng t khơng c n l nh ki m tra tr ng thái c a PC 6. PA PA Máy 8255 0÷ 7 Data strobe in PC 5 Reset Reset Busy PC 1 D÷ D D0÷ D 7 0 7 RD RD VXL WR WR A A 0 PC Busy 0 0 Máy A A1 1 PC 4 đc A÷ A driver right 2 19 Gi i CS PB0÷ PB 7 băng mã đa ch Hình 2.9: Ví d GN 8255 ch đ 0. Gi ng viên: Nguy n V ăn Minh Trí 37
  38. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi PA÷ PA D÷ D D0÷ D 7 0 7 0 7 Data strobe PC 4 VXL INTR A INTR PC 6 PC 3 ACK INTA PC 7 OBF A Máy in 8255 Hình 2.10: Ví d GN 8255 ch đ 1. D÷ D 8255 PA÷ PA 0 7 0 7 DAC Reset Li ra Reset PB 0 Ch t s li u tươ ng t D÷ D D0÷ D 7 0 7 PB 1 Cho phép đư a ra RD RD VXL WR WR ADC PB Cho phép trích m u A A0 2 Li vào 0 A tươ ng t A1 1 PB 3 Ch t s li u D÷ D A2÷ A 19 Gi i CS 0 7 mã đa ch Hình 2.11: Ví d GN 8255 ch đ k t h p. Hình 2.11 mơ t ví d ghép n i 8255A ch đ 2 c a c a PA và ch đ 0 c a c a PB. . 2.3.4 L p trình cho 8255A Vi m ch c ng song song l p trình đưc PPI 8255 cĩ kh n ăng ho t đ ng trong các ch đ ho t đ ng khác nhau các ch đ ho t đ ng này cĩ th k t h p đưc v i nhau t o kh năng l p trình điu khi n ho t đ ng m t cách linh ho t. Khi vi t ch ươ ng trình cho 8255A ho t đng, ta ph i : - Vi t l ưu đ thu t tốn. - Xác đnh t điu khi n ch đ cho thanh ghi điu khi n, t tr ng thái cho tng mch c th . - Ch ươ ng trình kh i phát b ng l nh ghi vào thanh ghi điu khi n. - ðư a n i dung các bít cho các c a dùng đ điu khi n TBNV. - ðc và ki m tra tr ng thái : là thanh ghi tr ng thái n u 8255 dùng ch đ 1,2; là mt c a ghi tr ng thái TBNV n u ch đ 0. - ðư a s li u vào hay ghi s li u ra các c a. Gi ng viên: Nguy n V ăn Minh Trí 38
  39. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi Ví d vi t ch ươ ng trình điu khi n đư a s li u ra máy in nh ư trên hình 2.9, và đa ch cao dành cho máy in xác đnh là 3FE18h.  Lưu đ thu t tốn th hi n trên hình 2.12. Bt đu Bt đu Lp xung ch t PC 4 ðc tr ng thái – PC 1 Yes Máy in b n? ðc tr ng thái – PC 0 No Yes ðư a s li u ra Máy đc b n? No Xố xung ch t PC ðc s li u vào 5 Lp xung ch t PC Xố xung ch t PC 4 5 Kt thúc Kt thúc Hình 2.12: L ưu đ trao đ i d li u gi a MVT và máy in, máy đc b ăng.  Xác đnh các thanh ghi ch đ và chi u c a c a: 3FE18h ⇒ A 19 . A 3 A 2 A 1 A 0 T b ng 1.17, ta cĩ đ a ch sau: PA cĩ đa ch addr_A := 3FE18h PB cĩ đa ch addr_B := 3FE19h PC cĩ đa ch addr_C := 3FE1Ah Thanh ghi điu khi n addr_dk := 3FE1Bh  Xác đnh t điu khi n và t tr ng thái: Khơng dùng ch đ l p c nên D7=1 PA ch đ 0, c a ra nên D 6=0 D 5=0 D 4=0 Na c a C cao là c a ra nên D3=0 PB ch đ 0, c a vào nên D 2=0 D 1=0 Na c a C th p là c a vào nên D 0=1 Ta cĩ t điu khi n sau: Data_dk := 81h (=1000 0001 B) T tr ng thái cho các c ng PC: PC 7 PC 6 PC 5 PC 4 PC 3 PC 2 PC 1 PC 0 Cho PC5 0 0 1 0 0 0 0 0 ⇒ data_C5 := 20h Gi ng viên: Nguy n V ăn Minh Trí 39
  40. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi Cho PC4 0 0 0 1 0 0 0 0 ⇒ data_C4 := 10h Cho PC 1 0 0 0 0 0 0 1 0 ⇒ data_C1 := 02h Cho PC 0 0 0 0 0 0 0 0 1 ⇒ data_C0 := 01h  Ch ươ ng trình vi t b ng Pascal nh ư sau: Begin {Gán các bi n} Port[addr_dk] := data_dk; Repeat Var1 := port[addr_C]; Until ((var1 and data_C1)=data_C1); Port[addr_A] := ‘s’; Port[addr_C] :=0; Port[addr_C] := data_C5; End Gi ng viên: Nguy n V ăn Minh Trí 40
  41. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi CH ƯƠ NG 3: GHÉP N I TRAO ðI D LI U NI TI P 3.1 Gi i thi u chung v trao đi d li u n i ti p 3.1.1 Yêu c u trao đ i d li u n i ti p Trao đi d li u n i ti p là trao đi l n l ưt t ng bit, trên m t đưng dây duy nh t. Do đĩ ít t n kém v đưng dây, nh ưng t c đ truy n th p. S trao đi này do các yêu c u: - Thi t b phát hay nh n d li u t ng bit. Ví d VXL 8085 phát t ng bit l i ra n i ti p SOD (chân s 4) và nh n d li u l i vào n i ti p SID (chân s 5); và TBNV ni ti p nh ư máy cassette, đĩa t , máy in ni ti p - Kho ng cách gi a hai thi t b trao đi d li u là l n (cĩ th đ n hàng ngàn km ho c h ơn), do v y vi c dùng 8 đưng dây truy n d li u song song là r t t n kém. Ngồi ra, ng ưi ta cĩ th dùng luơn đưng dây đin tho i đ trao đi d li u, thơng qua b điu ch - gi i điu ch (MODEM) ðiu khi n n i ti p cĩ 2 lo i truy n d li u: -truy n d li u đng b (t c đ nhanh). - truy n d li u khơng đng b (t c đ ch m). 1. Trong trao đi d li u đng b : D li u đưc truy n 1 l n g m 1 kh i nhi u byte, đưc ch n đ u và cu i b i ký t SYNC( mã ASCII là 16h). M i kh i cĩ th hàng tr ăm byte hay hàng tr ăm Kbyte. sync sync d li u ð truy n đi c n cĩ s đ ng b v t c đ gi a máy phát và máy thu, cĩ 2 cách đ đ ng b - M t máy phát xung đt n ơi phát và truy n t i máy thu b i m t đưng dây khác. Do đĩ t n thêm m t đưng dây H này s d ng 1 máy phát xung đ ng b đ cung c p xung đ ng b cho c hai bên phát và thu. Phát Thu ðng b - Máy thu ch tr ng thái ch , khi cĩ ký t đ ng b SYNC thì máy phát xung nh p trong máy thu b t lên và chuy n sang ch đ thu xung đ ng b đưc kích ho t b i kí t SYNC. Thu Phát ðng b Gi ng viên: Nguy n V ăn Minh Trí 41
  42. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi 2. Trong trao đi thơng tin khơng đ ng b : Các byte đưc đt trong m t khung và truyn đc l p v i nhau, g i là m t l i tin. Dng thơng tin truy n nh ư sau: D li u truy n cĩ th 5,6 ,7,8 bit; thơng th ưng là 7 bit ( n u truy n s li u và ch cái) hay 8 bit ( n u truy n c các ký t m r ng đ điu khi n h t File). M t l i tin g m: - 1 bit Start th ưng là m c 0 (+12V). Theo chu n RS232C, tín hi u t máy tính qua c ng Com, m c đin áp là ±12 V và đưc qui đ nh:0=12V, 1= -12V. - 5÷8 bit d li u, đây d li u truy n đi là mã ASCII, nh ư s “0” s đưc truy n đi là mã ASCII = 48 = 030h ch khơng ph i là truy n đi “0”. - 1 bit b c dùng đ ki m tra tính ch n l d li u truy n. T ng s bit 1 c a m t l i tin (k c bit ch n l ) s đưc ghi vào bit ch n l và đưc ki m tra so sánh n ơi phát và n ơi thu. - 1, 1.5 hay 2 bit Stop (tu ỳ theo s l a ch n tr ưc khi trao đi) c ũng m c 1. S bit Stop th c ch t là đ dài c a tín hi u Stop m c logic 1. Bit Start dùng đ đng b xung nh p máy phát và máy thu. Nu kho ng cách g n d ưi 300m, s thu phát là khơng c n MODEM. nh ng kho ng cách l n ng ưi ta khơng dùng máy phát xung ngồi mà dùng MODEM đ t o xung đ ng b cho c máy phát và máy thu. Vi c dùng MODEM là đ ch ng nhi u trên đưng truy n. Trên đưng dây đin tho i, ng ưi ta khơng phát t ng bit 0/1 mà dùng MODEM (modulation-demodulation) đ điu ch tín hi u thành d ng xoay chi u (0 ÷2400 Hz, 1÷1200 Hz) và truy n tín hi u xoay chi u đĩ. 3.1.2 Mch trao đ i d li u ni ti p. 1. Mch khơng c n b ghép n i: -s d ng 2 chân ra-vào n i ti p SID ( serial IN) và SOD ( serial OUT) c a vi x lý 8085 đ trao đ i. -cĩ th dùng 1 chân c a l i vào ra song song c a VXL đ làm chân vào ra n i ti p. Trao đi tin ki u này khơng ph c t o trong c u t o m ch nh ưng ph c t p trong quá trình l p trình và theo dõi thi t b , địi h i nhi u th i gian x lý. Thi t b ngồi vào/ra song song VXL SOD D SID Thanh ghi d ch CLK C Hình 3.1: Mch khơng c n BGN 2. Mch trao đ i c n ghép n i song song-ni ti p: Gi ng viên: Nguy n V ăn Minh Trí 42
  43. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi BGN cĩ ch c n ăng chuy n d li u song song t máy tính (h VXL) thành tín hi u dng n i ti p và truy n đ n TBNV. ð truy n chính xác, BGN ngồi ch c n ăng chuy n d li u song song thành n i ti p, nĩ cịn t o ra các bit Start, stop, parity đ đĩng khung d li u. Loi này làm vi c đơn gi n nh ưng khơng m r ng đưc thi t b ngo i vi, kho ng cách truy n tin ng n. BGN TBNV VXL ss-nt (VXL) nt Hình 3.2: M ch c n BGN ss-nt Trong đĩ, song song là ss, n i ti p là nt. 3. Mch cĩ KGN song song- n i ti p và n i ti p-song song: H này c ũng gi ng nh ư h trên, ch khác là TBNV làm vi c v i d li u song song, nên c n cĩ BGN trung gian chuy n d li u song song thành n i ti p. BGN BGN TBNV VXL ss-nt nt-ss (VXL) ss Hình 3.3: M ch c n BGN ss-nt và nt-ss 4. Mch cĩ BGN, MODEM và RS232C: BGN đưng dây BGN VXL ss-nt TB ðC đin tho i ss-nt (VXL) RS-232C MODEM MODEM MODEM MODEM RS-232C ss Hình 3.4: M ch c n BGN ss-nt, RS 232 và MODEM. H này thơng d ng và th ưng xuyên g p trong th c t . Trong đĩ VXL th ưng là 1 máy vi tính, cịn thi t b đu cu i (TB ðC) cĩ th là 1 đi t ưng b t k ỳ. N u TB ðC là máy vi tính thì h th ng dùng đ trao đ i File. Chú ý: Chu n RS232C cĩ m c đin áp là ±12V. Chu n RS422 cĩ m c đin áp là ±15V. Chu n RS485 cĩ m c đin áp là ±30V (đin tho i). ð chuy n t RS232C thành RS485 hay RS422 s cĩ nh ng b chuy n (shift) trung gian, thơng th ưng đĩ là nh ng b đ m, v a t o m c tín hi u,v a ph i h p tr kháng. Gi ng viên: Nguy n V ăn Minh Trí 43
  44. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi 3.1.3 Th t c trao đ i d li u n i ti p 1. Th t c phát d li u TxD (Tranceiver Data) : • TB ðC (hay MVT) gi tín hi u DTR (Data Terminal Ready) m c 0 đn MODEM báo hi u đã s n sàng. • MODEM tr l i TB ðC bng tín hi u DSR (Date Set Ready) m c 0. • Nu TB ðC cĩ 1 ký t s n sàng g i đi, nĩ g i RTS (Request To Send) đn MODEM • MODEM g i tín hi u CD (Carrier Detect) cho TB ðC đ báo hi u liên l c đã thơng v i MTV. • Khi MODEM s n sàng phát s liu trên đưng dây, MODEM phát xung nh p và tín hi u CTS (Clear To Send) đn TB ðC (xung nh p trên đưng dây). • TB ðC gi các ký t s li u (SDU) cho MODEM. • Khi TB ðC gi xong, nĩ nâng tín hi u RTS lên cao đ báo cho modem bi t là đã phát xong. • MODEM tr l i cho TB ðC bng tín hi u CTS m c cao, báo hi u hồn thành vi c truy n tin. Qua đĩ ta th y vi c g i đi kí t b ng modem nhi u th t c và do đĩ t c đ ch m 2. Th t c nh n d liu RxD (Receiver Data) Trong quá trình nh n tin, ph i b o đ m máy tính đã s n sàng nh n ,khi đĩ : • TB ðC phía thu g i DTR m c th p cho MODEM báo nĩ đã s n sàng (Data terminal ready) • MODEM thu g i tín hi u tr l i b ng DSR . • MODEM thu nh n tín hi u CD t đưng dây và kích g i tín hi u nh p MODEM cho TB ðC. • TB ðC phát tín hi u RTS cho modem (Request to Send). • MODEM g i tín hi u CTS m c th p cho TB ðC (Clear to Send) đ báo MODEM sn sàng nh n tin. • MODEM nh n TxD trên đưng dây, sau đĩ ph i điu ch thành các bit 0/1 và l n l ưt g i chu i tín hi u RxD cho TB ðC. • Khi thu xong, TB ðC nâng tín hi u RTS lên cao, báo cho MODEM là đã thu xong • MODEM tr l i b ng nâng tín hi u CTS lên cao, đ báo quá trình nh n đã xong. Vi c ti n hành chuy n d li u ss/nt hay nt/ss đưc th c hi n b i các thanh ghi d ch (Shift register). Các thanh ghi này cĩ tác d ng khi nh n 1 byte song song đ u vào nĩ s cho đ u ra m t chu i bit k ti p nhau theo th t t bit th p đ n bit cao c a byte. ði vi máy tính, các ch c n ăng trên đưc th c hi n thơng qua vi m ch 8251 c a hãng INTEL. Gi ng viên: Nguy n V ăn Minh Trí 44
  45. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi 3.2 Mch thu phát di b v n n ăng UART 8250 Mch URAT 8250 (Universal Asynchronous Receiver/Transmitter) đưc l p ráp trong các máy IBM XT, là m t IC thu phát khơng đng b cĩ th l p trình đưc, nĩ thc hi n ch c n ăng giao ti p gi a máy tính và TBNV. Trong các máy PC/AT hi n nay s d ng UART 16450 cịn trong PS/2 và các AT đi mi l i dùng UART 16550 vì 8250 và 16450 khơng đt đ n t c đ 115200 baud đưc. Th c ra t c đ này ng d ng t t trong k thu t truy n tin trên m ng, cịn trong các thi t b cơng nghi p TBNV nĩi chung, th ưng ch c n t i đa 19200 baud là đưc, thơng d ng là 9600 baud. 3.2.1 S ơ đ khi và ch c n ăng các kh i c a UART 8250 1. Mơ t vi m ch: Vi m ch 8250 cĩ 40 chân nh ư trên hình v : Hình 3.5: S ơ đ chân 8250 Chc n ăng các chân g m: - Các chân t 1- 8 (D0- D7 ): Các chân d li u, 8 chân này đưc n i v i bus d li u. Qua 8 chân d li u này mà d li u đưc đi t bus t i d ưi d ng song song sau khi qua vi m ch 8250 bi n đ i thành tu n t đ đi t i c ng RS232. D li u t c ng RS232 t i d ưi d ng tu n t , sau khi đi qua vi m ch 8250 đưc bi n đ i thành song song và qua 8 chân này truy n lên bus. - Chân s 9 (RCLK ): nh n xung đ ng h đưa ra t b t o t c đ . - Chân s 10 (SIN): nhn d li u tu n t đi t i t c ng RS232. - Chân s 11 (SOUT): G i d li u tun t sang c ng RS232. - Chân s 12,13,14 (CS0 -CS2): Chip select - tín hi u ch n vi m ch. - Chân s 15 ( BOUDOUT ) : L i ra c a b t o t c đ . - Chân s 16,17 (XTAL1,XTAL2) :L y xung Clock t b phát nh p b ng th ch anh ti v i t n s 3,072 MHz. - Chân 18(DOSTR ): I/O write. - Chân s 19 ( DOSTR ) : Ð o c a I/O write - Chân s 20 (Vss ): n i đ t Gi ng viên: Nguy n V ăn Minh Trí 45
  46. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi - Chân s 21 (DISTR) : I/O Read . - Chân s 22 ( DISTR ): Ð o c a I/O Read . - Chân s 26,27,28 ( A0 - A2 ): nh n đ a ch truy n t i đ gi i mã l nh . - Chân s 30 (INTRPT) : Interrupt Control Logic . - Chân s 32 ( RTS ) : Request To Send ( yêu c u g i ) . - Chân s 33 ( DTR ) : Data Terminal Ready .(D li u s n sàng ) - Chân s 35 (MR) : Reset . - Chân s 36 ( CTS ) : Clear To Send - Chân s 37 ( DSR ) : Data Set Ready . - Chân s 38 ( DCD ) : Data Carrier Detect . - Chân s 39 ( RI ): Ring Indicate . - Chân s 40 (VDo) : n i v i ngu n m t chi u +5V. (3F8) (3FB) (3F8) (3F9) (3FD) (3F8) (3FC) (3FE) (3F9) (3FA) Hình 3.6: S ơ đ kh i 8250 Nh ư v y, 8250 cĩ 11 thanh ghi n i, v i cách truy c p nh ư b ng sau: Bng 3.1: ða ch các thanh ghi c a 8085 DLAB A2 A1 A0 ðc/ghi Thanh ghi Gi ng viên: Nguy n V ăn Minh Trí 46
  47. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi 0 0 0 0 đm thu (RBR) và đm phát (THR) 0 0 0 1 ðc/ghi cho phép yêu c u ng t (IER) 1 0 0 0 ðc/ghi ch t chia ph n th p (LSB) 1 0 0 1 ðc/ghi ch t chia ph n cao (MSB) x 0 1 0 ðc nh n d ng ng t (IIR) x 0 1 1 ðc/ghi điu khi n dịng (LCR) x 1 0 0 ðc/ghi điu khi n MODEM (MC) x 1 0 1 ðc/ghi tr ng thái dịng (LSR) x 1 1 0 ðc/ghi tr ng thái modem (MSR) x 1 1 1 ðc/ghi nh nháp (DM) Mi thanh ghi trong 8250 t ươ ng ng v i m t đ a ch c ng, trong đĩ cĩ hai thang ghi đc bi t, nĩ cĩ ch c n ăng cĩ th thay th tu ỳ thu c giá tr bit DLAB (divitor latch access bit –Bit truy c p ch t) (DLAB là bit D7 c a thanh ghi d ng s li u). • Nu DLAB = 1 thì thanh ghi thc hi n ch c n ăng ch t chia ph n cao và ph n th p. • nu DLAB = 0 , hai thanh ghi dùng đ đ m và nh n d li u, và IER. 2. Mơ t các thanh ghi: a) Thanh ghi đm thu (Receiver Buffer Register – RBR) ng v i DLAB = 0, thanh ghi cĩ đa ch là 3F8h (COM1), hay 2F8h (COM2): Khi 8250 nh n đưc ký t qua chân SIN (chân 10) ký t đưc chuy n vào thanh ghi d ch, ti đây nĩ đưc tháo khung (các bit start, stop, parity) và n p song song vào thanh đm thu (l ưu ý thanh ghi cĩ 8 bit). CPU ch đ c d li u trong thanh ghi này vì nĩ thao tác v i BUS d li u song song t i thi u m i l n là 1 byte. b) Thanh ghi đm phát (Transmitter Holding Register – THR) tươ ng ng v i DLAB = 0, đa ch là 3F8h (2F8h) Ký t c n phát đi ph i đưc ghi t thanh ghi vào, thanh ghi này nĩ n m ch (holding) đĩ cho đ n khi ký t tr ưc nĩ đưc phát đi, sau đĩ nĩ đư a vào thanh ghi d ch c a b phát, ti đây nĩ đưc đĩng khung và đư a ra t ng bit m t vào chân SOUT (chân 11) ca 8250, d li u đu ra đây cĩ d ng n i ti p. c) Thanh ghi cho phép ng t (Interrupt Enable Register - IER) , bit DLAB = 0 , đa ch 3F9h (COM1) hay 2F9h (COM2) Thanh ghi này th c hi n đ cho phép/c m các nguyên nhân gây ra ng t khác nhau. Trong khi 8250 ho t đ ng, cĩ tác đng đ n CPU thơng qua chân INTRPT (chân 30), mi bit trong các bit D3, D2, D1, D0 m c cao s cho phép các ho t đng t ươ ng ng v i các bit đ đưa ra nguyên nhân ng t t ươ ng ng, và c m ng t khi ghi 0 vào các bit. Bit Ch c n ăng 7-4 D tr , luơn đt b ng 0. 3 cho phép 8250 phát yêu c u ng t tr ng thái MODEM Gi ng viên: Nguy n V ăn Minh Trí 47
  48. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi 2 cho phép 8250 phát yêu c u ng t theo tr ng thái d ng truy n nh n ho c ng t dịng thơng tin (l i ch n l , tràn khung). 1 cho phép 8250 phát yêu c u ng t khi thanh ghi đm phát rng. 0 cho phép 8250 phát yêu c u ng t khi thanh ghi đm thu đy, d li u đã sn sàng d) Thanh ghi ch t chia ph n th p (Divisor Latch - LS) tươ ng ng DLAB = 1, đ a ch là 3F8h, hay 2F8h. e) Thanh ghi ch t chia ph n cao (Divisor Latch – MS) t ươ ng ng DLAB = 1, đ a ch là 3F9h, hay 2F9h. ð đ t t c đ truy n mong mu n, giá tr tính tốn đưc đ t trong hai thanh ghi, đưc g i là thanh ghi ch t chia t c đ đưc tính theo cơng th c Tn s nh p chu n B chia = 16 x t c đ baud mong mu n - tn s nh p chu n do đ ng h th ch anh c a 8250 phát ra, nĩ b ng 1,8432 MHZ - tc đ t i đa tính tốn là 115200 baud. - t c đ baud đ th c hi n các chân SIN, SOUT. Bng ch m i liên h gi a t c đ s li u và các h s chia d ng hexa decimal nh ư sau: Baud S chia Baud S chia 50 0900 1200 0060 110 0417 2400 0030 150 0300 4800 0018 300 0180 9600 000C 600 00C0 11520 0001 Qua đĩ ta th y giá tr trong thanh ch t chia cn 1 byte r ưi đ l ưu t t c . ð thu n ti n, ng ưi ta s dùng 2 byte và ghi vào 2 thanh ghi, đĩ chính là LSB và MSB. f) Thanh ghi nh n d ng ng t (Interrupt Identification Register - IIR) , đa ch là 3FAh, hay 2FAh. Thanh ghi nh n d ng ng t (ch cĩ th đ c) ch a mã m c ưu tiên cao nh t c a các yêu c u ng t (t i chân 30-INPUT ca 8250) đang ch đưc ph c v . N u cĩ nhi u ng t cùng m t lúc thì IIR s ch a mã ng t nào c n x lý trưc. Do v y khi cn x lý ng t, CPU c n đ c bit D 0 c a thanh ghi này đ bi t cĩ yêu c u ng t và ki m tra các bit D 1 và D 2 đ xác đnh ngu n g c các yêu c u ng t. Sau khi 8250 b Reset, ch cĩ yêu c u ng t ưu tiên s m t đưc ph c v . Ta cĩ th thay đi Gi ng viên: Nguy n V ăn Minh Trí 48
  49. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi điu này b ng cách dùng m t n che đi các bit yêu c u ng t nào đĩ b ng cách ghi vào thanh ghi IIR các giá tr bit thích h p. Các bit D 7÷D3 luơn đt b ng 0. D2, D1: mã hố các yêu c u ng t cĩ m c ưu tiên cao nh t đang ch phc v . D2 D1 Mc ưu tiên Nh n di n ng t 0 0 4 Tr ng thái MODEM ⇒ ch ươ ng trình đc tr ng thái MODEM 0 1 3 Thanh ghi đm phát r ng 1 0 2 TG đm thu đy, s li u đã s n sàng 1 1 1 tr ng thái dịng đã thay đi D0=0: cĩ yêu c u ng t D0=1: khơng cĩ yêu c u ng t T các nh n d ng ng t trên, VXL s chuy n đn các đa ch ch a các ch ươ ng trình con ph c v ng t. VXL s xố các bit D0, D1, D2 v 0 sau các thao tác: -đc thanh ghi tr ng thái chu i. -đc d li u t thanh ghi đ m thu. -ghi vào b phát ho c đc thanh ghi nh n di n ng t. -đc tr ng thái thanh ghi thao tác MODEM (RS232-C). g) Thanh ghi điu khi n dịng (Line Control Register – LCR) , đa ch là 3FBh, hay 2FBh. Thanh ghi này cịn cĩ tên là thanh ghi đnh khuơn d ng d li u vì nĩ quy t đ nh khuơn d ng c a d li u truy n trên đưng dây. Bit Ch c n ăng 7 =1 truy nh p thanh ghi ch t chia (LSB & MSB) đ l p t c đ baud =0 truy nh p IER,THR,RBR 6 ðt cho phép tín hi u Break 5-3 B5 B4 B3 Ch n ch n l x x 0 Non 0 0 1 Odd 0 1 0 Even 1 0 1 High Parity 1 1 1 Low Parity 2 = 1 thì dùng 1.5 bit Stop n u đ dài t là 5, cịn n u đ dài t 6-8 bit thì cĩ 2 bit Stop. = 0 thì dùng 1 bit Stop 1-0 B1 B0 S bit data 0 0 5 0 1 6 1 0 7 1 1 8 Gi ng viên: Nguy n V ăn Minh Trí 49
  50. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi ð hi u tín hi u Break, ta xem ví d khung d li u trên v i 8 bit data, khơng ki m tra ch n l và 1 bit Stop. Khi đưng dây tr ng thái Mark, m c logic là 1. Bit Start s là m c logic 0. Sau đĩ t ng bit data s đưc g i trên đưng dây. Bit Stop (logic 1) sau đĩ đưc gán vào đ k t thúc vi c truy n. Sau bit Stop s là bit logic 0, cĩ ngh ĩa là bit Start c a m t d li u m i. N u khơng cĩ thêm d li u truy n đi, đưng dây ph i tr ng thái r i, m c logic 1. Do đĩ n u đưng dây gi tr ng thái 0 sau bit Stop trong m t th i gian b ng đ dài 1 t , tín hi u Break s đưc t o ra. Tín hi u Break là tín hi u báo cho CPU hay MODEM bi t ký t truy n đã xong và đang t m ng t vi c truy n. h) Thanh ghi điu khi n MODEM (MODEM Control Register – MCR) , đa ch 3FCh Thanh ghi này cịn g i là thanh ghi điu khi n các tín hi u ra c a MODEM vì nĩ cho phép điu khi n các tín hi u t i các chân DTR (chân 33) và DTS (chân 32) c a 8250. Bit Ch c n ăng 7-5 D tr , luơn đưc thi t l p v 0. 4 =1 cho phép 8250 làm vi c ch đ n i vịng c c b đ ki m tra các ch c n ăng ca 8250. =0 làm vi c ch đ th ưng. 3 =1 : kích ho t k t xu t OUT2 2 =1 : kích ho t k t xu t OUT1 1 =1 : tín hi u t i chân RTS ca 8250 đưc chuy n v m c 0, máy tính phát chuy n tín hi u RTS ti MODEM đ báo hi u nĩ đã s n sàng phát d li u. 0 =1 : tín hi u t i chân DTR ca 8250 đt m c 0, lúc này máy tính g i tín hiu DTR ti MODEM (hay t i MVT đu kia n u giao ti p khơng dùng MODEM) đ báo hi u nĩ s n sàng làm vi c (tín hi u g i t i chân s 4 c a DB9 hay chân 20 ca DB25). i) Thanh ghi tr ng thái dịng (Line Status Register – LSR) đa ch 3FDh Chc n ăng thanh ghi này cho bi t tr ng thái dịng tín hi u trên đưng dây nh ư th nào, các bit D0 ÷D5 đu cĩ th gây ra ng t n u các bit t ươ ng ng trong thanh ghi IER đưc lp . Các bit tr ng thái cĩ ý ngh ĩa nh ư sau: Bit Ch c n ăng Gi ng viên: Nguy n V ăn Minh Trí 50
  51. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi 7 D tr 6 =1: báo thanh ghi chuy n phát r ng (Transmitter Shift Register Empty), báo m t kí t đã đưc phát đi, bit này b xố khi cĩ m t kí t chuy n t THR sang TSR. 5 =1: báo thanh ghi đm truy n r ng, ký t chuy n t THR sang TSR (Transmitter Shift Register), bit này b xố khi CPU đưa kí t đ n THR. 4 =1: báo nh n đưc tín hi u Break, bit này b xố khi đc thanh ghi LSR. 3 =1: báo l i khung (framming error) ch ng h n bit stop =0, bit này b xố khi CPU đc thanh ghi LSR. 2 =1: nh n báo đưc l i ki m tra ch n l (parity error), bit này b xố khi CPU đ c thanh ghi LSR. 1 =1: cĩ l i tràn (over run) x y ra khi kí t tr ưc đĩ b m t, bit này b xố khi CPU đc thanh ghi LSR. 0 =1: đã nh n đưc 1 ký t và đ nĩ trong thanh ghi đ m thu (RBR), bit này b xố v 0 khi CPU đc thanh ghi RBR. j) Thanh ghi tr ng thái modem (MODEM Status Regisster – MSR) , đa ch 3FEh Thanh ghi này cịn đưc g i là thanh ghi tr ng thái vào t RS232C vì nĩ cho bi t tr ng thái hi n th i c a các tín hi u điu khi n MODEM. Bit Ch c n ăng 7 =1 : DCD đang ho t đ ng, báo liên l c v i MODEM đã đưc thi t l p. 6 =1 : RI đang ho t đ ng 5 =1 : MODEM (hay MVT đu kia) g i tín hi u DSR (Data Set Ready) v máy tính đ cho bi t đã s n sàng nh n d li u (qua chân 6 c a DB9 hay DB25) 4 =1 : MODEM (hay MVT đu kia) g i tín hi u CTS (Clear To Send) v máy tính đ cho bi t đã s n sàng nh n d li u (qua chân 8 c a DB9 hay chân 5 c a DB25). 3 =1 : bit D7 va đ i tr ng thái 2 =1 : bit D6 v a đi tr ng thái 1 =1 : bit D5 va đ i tr ng thái 0 =1 : bit D4 va đ i tr ng thái k) Thanh ghi nh nháp (Scratch Register), đa ch 3FFh (dành cho CPU, ít s d ng nên khơng nghiên c u) Gi ng viên: Nguy n V ăn Minh Trí 51
  52. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi 3.2.2 Ghép n i v i UART 8250: SOUT RxD D÷ D D0÷ D 7 0 7 SIN TxD Reset MR RTS RTS MO I/O R MEMR DI ST R DTR DTR DEM MEM W I/O W DO ST R DSR DSR DCD VXL 8250 DCD CTS CTS A 0 A0 RI RI A1 A1 OUT 1 A A2 2 OUT 2 Gi i A3÷ A 15 mã đa CS 2 XTAL1 ch CS CS 1 XTAL2 CS 0 5V CS 0V BAUDOUT ADS CS DOSTR RCKL DISTR Hình 3.7: S ơ đ ghép n i v i 8250 3.2.3 Lp trình cho UART 8250: Lưu đ thu t tốn: a. Kh i phát vi m ch theo trình t sau: - Ghi vào thanh ghi d ng s li u theo : + D 7 = DLAB = 1 đ chu n b ghi ch t cho b chia t c đ. + Khung tin v i s bit Stop + S bit c a tin - Ghi giá tr b chia t n s vào các thanh ghi ch t chia LSB, MSB tu ỳ theo t c đ baud. - Ghi các phép yêu c u ng t vào thanh ghi yêu c u ng t. b. Phát s li u n i ti p: - ðc thanh ghi nh n d ng ng t đ bi t b đm r ng, cĩ th phát tin. - Ghi vào thanh ghi điu khi n MODEM đ đư a l nh DRT (bit D 0-1) điu khi n MODEM chu n b phát. - ðc thanh ghi tr ng thái MODEM đ ki m tra các bit DSR (D 5), RI (D 6), DCD (D 7) xem đã chu n b phát ch ưa? ( giá tr chúng =1) - ðc thanh ghi tr ng thái dịng đ xem cĩ sai s khơng và hai thanh truy n và đm cĩ tr ng khơng? ( đ đư a tin ra) - Ghi tin ra vào thanh ghi đm phát t MVT. - Ghi l nh RTS (D 1=1) vào thanh ghi điu khi n MODEM đ điu khi n phát s li u. Gi ng viên: Nguy n V ăn Minh Trí 52
  53. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi c. Nh n s li u n i ti p: - Ghi l nh DTR (D 0=1) vào thanh ghi điu khi n MODEM - ðc tr ng thái MODEM DSR, RI, DCD thanh ghi tr ng thái MODEM. - ðc thanh ghi tr ng thái dịng đ bi t đã cĩ s li u thu ch ưa (D 0=1); ho c đc thanh ghi nh n di n ng t đ bi t thêm s li u thu. - ðc s li u vào t thanh ghi đm s li u vào. Ví d 8250 c n trao đi tin 8 bit, t c đ 9600 baud, khơng ki m tra ch n l , 2 bit Stop, đa ch làm vi c đu 03F8h. Ghi thanh ghi điu khi n dịng D0D1=11 , D2=1, D3=0, D4=0, D5=0, D6=0, D7=1 ⇒ data1_LCR=87h nu D7=0 ⇒data2_LCR=07h addr_LCR=03FBh Ghi thanh ghi ch t b chia 9600 baud ⇒ s chia=000C data_LS = 0Ch và data_MS = 00h addr_LS=03F8h và addr_MS=03F9h Ghi thanh ghi cho phép ng t khơng làm vi c, c m ng t: data_IER=00h; addr_IER=03F9h ðc thanh ghi nh n d ng ng t THR_rong= 02h addr_IIR=03FAh Ghi thanh ghi điu khi n MODEM Addr_MCR=3FCh Data_DRT=01h Data_RTS=02h ðc thanh ghi tr ng thái MODEM Addr_MSR=3FEh DSR (D 5), RI (D 6), DCD (D 7) = 1 ⇒data1_MSR=E0h ðc thanh ghi tr ng thái dịng Addr_LSR=3FDh Khơng l i D1 D2 D3 = 0; t/g đm r ng D5 D6 =1 ⇒data1_LSR=60h Ch ươ ng trình con th c hi n các cơng vi c trên: 1. Kh i phát vi m ch theo trình t sau: port[addr_LCR] :=data1_LCR; port[addr_LS] :=data_LS; port[addr_MS] :=data_MS; port[addr_LCR] :=data2_LCR; Gi ng viên: Nguy n V ăn Minh Trí 53
  54. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi port[addr_ IER] :=data_IER; 2. Phát s li u n i ti p repeat Var1 := port[addr_IIR]; Until ((var1 and THR_rong)=THR_rong); port[addr_MCR] := data_DRT; repeat Var2 := port[addr_MSR]; Until ((var2 and data1_MSR)=data1_MSR); Repeat var3 := port[addr_LSR]; until ((var3 and data1_LSR)=data1_LSR); port[addr_THR] :=$50; {s li u truy n đi} port[addr_MCR] := data_RTS; 3.Nh n s li u n i ti p port[addr_MCR] := data_DRT; Repeat Var2 := port[addr_MSR]; Until ((var2 and data1_MSR)=data1_MSR); Repeat var3 := port[addr_LSR]; until ((var3 and data1_LSR)=data1_LSR); Var4 :=port[addr_RBR]; Gi ng viên: Nguy n V ăn Minh Trí 54
  55. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi CH ƯƠ NG 4: GHÉP N I ðIU KHI N NG T 4.1 Khái ni m và phân lo i ng t 4.1.1 Khái ni m Mi khi m t thi t b ph n c ng hay m t ch ươ ng trình c n đ n s giúp đ c a CPU, nĩ gi đi m t tín hi u hoc l nh g i là ng t (Interrupt Request – IRQ) đn b vi x lý ch đnh m t cơng vi c c th nào đĩ mà nĩ c n CPU th c hi n. Khi b vi x lý nh n đưc tín hi u ng t, nĩ th ưng t m ng ưng t t c các ho t đ ng khác và kích ho t m t ch ươ ng trình con đang cĩ trong b nh g i là ch ươ ng trình x lý ng t (Interrupt Service Routine _ ISR) tươ ng ng v i t ng s li u ng t c th . Sau khi ch ươ ng trình x lý ng t làm xong nhi m v , các ho t đ ng c a máy tính s ti p t c l i t n ơi đã b t m d ng lúc x y ra ng t. 4.1.2 Phân lo i ng t Cĩ ba lo i ng t chính, đu tiên là các ng t đưc t o ra b i m ch đin c a máy tính nh m đáp l i m t s ki n nào đĩ nh ư nh n phím trên bàn phím Các ng t này đưc b điu khi n ng t 8259A qu n lý. 8259A s n đ nh m c đ ưu tiên cho t ng ng t r i g i đ n CPU. Th hai là các ng t do CPU t o ra khi g p ph i m t k t qu b t th ưng trong khi th c hi n ch ươ ng trình nh ư chia cho 0 ch ng h n Cu i cùng là các ng t do chính ch ươ ng trình t o ra nh m g i các ch ươ ng trình con xa đang n m trong ROM hoc RAM, các ng t này g i là ng t m m chúng th ưng là b ph n c a các ch ươ ng trình con ph c v c a ROM-BIOS ho c c a DOS. Ngồi ba lo i ng t trên cịn cĩ lo i ng t đ c bi t là ng t khơng b che NMI địi h i CPU ph c v ngay khi cĩ yêu c u. Lo i ng t này th ưng đưc dùng đ báo hi u s c nh ư s t đip áp hay l i b nh . Nh ư v y NMI là m c ng t cĩ đ ưu tiên cao nh t . Các ng t trong PC cĩ th chia thành 4 nhĩm nh ư sau : - Các ng t vi x lý : Th ưng g i là các ng t logic đưc thi t k s n trong b VXL. B n trong s các ng t này (0,1,3,4 ) do chính b VXL t o ra, cịn ng t 2 (NMI ) s đưc kích ho t khi cĩ tín hi u t o ra b i m t trong các thi t b ngồi. 1. Các ng t c ng Ðưc thi t k s n trong ph n c ng c a c a PC, tám ng t trong s các ng t này (2,8,9,t Bh đn Fh) đưc g n ch t vào trong b VXL ho c vào b ng m ch chính c a h th ng. Tt c các ng t c ng đ u do 8259A điu khi n . 2. Các ng t m m Gi ng viên: Nguy n V ăn Minh Trí 55
  56. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi Nh ng ng t này là m t ph n c a các ch ươ ng trình ROM -BIOS, các s hi u dành cho các ng t c a ROM- BIOS là t 10h đn 1C h và 48h . Ngồi ra cịn cĩ các ng t DOS và ng t BASIC ph c v h điu hành DOS và ch ươ ng trình BASIC . 3. Các ng t đ a ch Bng 4.1 : B ng ch c n ăng các ng t trong máy vi tính INT (Hex) IRQ Common Uses 00 Exception Handlers Chia m t s cho 0 01 Exception Handlers Th c hi n t ng b ưc 02 Non-Maskable IRQ Non-Maskable IRQ (Các l i ch n l ) 03 Exception Handlers ðim d ng ch ươ ng trình do ng ưi s d ng đt 04 Exception Handlers Vưt quá n i dung thanh ghi hay b nh 05 - 07 Exception Handlers - 08 Hardware IRQ0 B th i gian h th ng 09 Hardware IRQ1 Bàn phím 0A Hardware IRQ2 Redirected 0B Hardware IRQ3 Cng n i ti p COM2/COM4 0C Hardware IRQ4 Cng n i ti p COM1/COM3 0D Hardware IRQ5 Reserved/Sound Card 0E Hardware IRQ6 ðiu khi n đĩa m m 0F Hardware IRQ7 Cng song song 10 - 6F Software Interrupts Ng t ROM-BIOS hay DOS 70 Hardware IRQ8 ðng h th i gian th c 71 Hardware IRQ9 Redirected IRQ2 72 Hardware IRQ10 Reserved 73 Hardware IRQ11 Reserved 74 Hardware IRQ12 PS/2 Mouse 75 Hardware IRQ13 Math's Co-Processor 76 Hardware IRQ14 Hard Disk Drive 77 Hardware IRQ15 Reserved 78 - FF Software Interrupts - Ba trong s các ng t này tr đ n ba b ng r t quan tr ng, đĩ là b ng kh i t o màn hình, bng c ơ s đĩ a và b ng các ký t đ th . Các b ng này ch a các tham s đưc ROM Gi ng viên: Nguy n V ăn Minh Trí 56
  57. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi BIOS dùng khi kh i đ ng h th ng và t o các ký t đ th . Các s hi u dành cho các ng t này là t 1D hex đn 1F hex. 4.2 X lý ng t c a nhi u thi t b ngo i vi Thơng th ưng m t MVT c n x lý ng t c a nhi u TBNV, do đĩ cn gi i quy t các v n đ sau: - Cho phép ho c c m ng t cho m t yêu c u ng t c a m t TBNV. - Ghi nh n và s p x p nhi u yêu c u ng t theo th t ưu tiên. - Xác đnh ngu n ng t do TBNV nào gây ra. - To vector ng t, t c đa ch ơ nh c a l nh đu tiên trong ch ươ ng trình con ph c v ng t. 4.2.1 Cho phép ho c c m ng t 1. Cho phép ho c c m ng t b ng l nh - L nh c m ng t DI (Disable interrupt) và cho phép ng t EI (Enable Interrupt) c a 8085. - Ghi vào thanh ghi c n i dung bit IF (Interrupt Flag) các giá tr : IF =1 : cho phép ng t IF=0 : c m ng t 2. Cho phép ho c c m ng t b ng m ch ph n c ng Vi l i vào NMI và yêu c u ng t c a TBNV, ta cĩ th dùng các m ch l t đ điu khi n cho phép ho c c m ng t. 4.2.2 Sp x p ưu tiên ng t Theo m t trong ba ph ươ ng pháp sau: 1. Ph ươ ng pháp h i vịng (polling): Dùng ch ươ ng trình, đc theo th t ưu tiên các bit tr ng thái c a các TBNV và ki m tra chúng. N u bit nào xác l p lên 1, t c TBNV t ương ng cĩ yêu c u ng t, và VXL chuy n sang ch ươ ng trình con ng t ph c v TBNV đĩ. Sau đĩ l i đc và ki m tra bit tr ng thái TBNV cĩ m c ưu tiên th p h ơn. Ph ươ ng pháp này đơ n gi n v thi t b nh ưng m t th i gian h i vịng. 2. Ph ươ ng pháp ng t c ng ð tránh m t th i gian h i vịng, ng ưi ta n i các bit tr ng thái c a TBNV v i m ch OR, l i ra c ng OR n i vào chân INTR c a VXL. Khi b t k ỳ TBNV nào cĩ yêu c u ng t, VXL s nh n bi t qua INTR và ti n hành h i vịng. Ph ươ ng pháp này gi m đưc th i gian ki m tra tr ng thái khi ch ưa cĩ yêu c u ng t nào, nh ưng c ũng khơng thay đi đưc th t ưu tiên. 3. Ph ươ ng pháp x lý ưu tiên b ng m ch c ng Cĩ hai lo i ưu tiên theo v trí và ưu tiên tu ỳ theo m ch so sánh.  Ưu tiên theo v trí đ t g n VXL Sơ đ m ch ví d trên hình 4.1, v i ho t đng nh ư sau: - Tín hi u tr l i ng t INTA (Interrupt Acknowledge) t VXL đi n i ti p qua các BGN, qua m ch x lý ng t và tr v l i VXL theo m t m t xích kín (daisy chain). BGN nào đt g n VXL cĩ m c ưu tiên cao Gi ng viên: Nguy n V ăn Minh Trí 57
  58. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi - Nu m t BGN đã ghi nh n ng t, tín hi u INTA b ch n và khơng truy n t i BGN sau. Do đĩ, VXL khơng nh n đưc tín hi u INTA, ngh ĩa là cĩ m t yêu cu ng t đã x y ra. DI 0÷DI n 1 INTR VXL INTA BGN 1 BGN 2 BGN3 DI ÷DI 0 n INTA INTA 0 (b) (a) Hình 4.1: S ơ đ ưu tiên ng t theo v trí và vector ng t Ph ươ ng pháp này tuy đơ n gi n nh ưng th t ưu tiên khơng thay đi đưc và n u cĩ mt BGN nào b h ng, m ch s luơn báo cĩ yêu c u ng t.  Ưu tiên ng t dùng m ch so sánh Dùng các vi m ch Intel 8214, 8259 cĩ th thay đi ưu tiên ng t b ng ch ươ ng trình. 4.2.3 Xác đnh ngu n gây ng t Cĩ nh ng ph ươ ng pháp xác đnh TBNV nào gây ng t đ chuy n sang ch ươ ng trình con ph c v ng t t ưng ng cho TBNV đĩ: - Ph ươ ng pháp h i vịng: VXL đc và ki m tra l n l ưt tr ng thái các TBNV. Nu k t qu là 1, tr ng thái TBNV là s n sàng và ngu n ng t là TBNV đĩ. - Ph ươ ng pháp đc vector ng t t o b i tín hi u ng t INTA trong ưu tiên ng t theo v trí. - Ph ươ ng pháp đc vào thanh ghi ưu tiên PR trong s ơ đ dùng m ch so sánh. 4.2.4 To vector ng t Vector ng t ch a đa ch đu c a ch ươ ng trình con ph c v ng t. Các vector ng t ca MVT – PC đưc trình bày trên b ng 4.1. Ta cĩ th t o vector ng t b ng c ng AND colector h nh ư hình 4.1 (b). Ph ươ ng pháp này thay đi đưc m c ưu tiên và cách tìm ngu n ng t, nh ưng mch ph c t p và đt ti n. Gi ng viên: Nguy n V ăn Minh Trí 58
  59. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi CH ƯƠ NG 5: GHÉP N I VÀO RA ðIU KHI N BNG 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à thit 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 ca b điu khi n DMA. Tc đ 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 cu 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 , điu 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 ngồi ho c các b VXL khác n m quy n điu 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 đim 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 điu khi n đng th i d n đ n c n cĩ các tín hi u điu khi n khác nhau. Ð điu 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). Ð điu khi n quá trình ghi ta cĩ hai tín hi u MEMW (ghi b b nh ) và IOR ( đc I/O). B điu 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 điu khi n DMA nên trong tr ưng h p t c đ c a b điu khi n DMA nh h ơn so v i b nh thì b điu 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
  60. Tài li u mơn h c: Ghép n i và điu 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
  61. Tài li u mơn h c: Ghép n i và điu 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 ti khi DMAC th c hi n trao đi xong trong mt 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
  62. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi 5.2 B điu khi n DMA – 8237A Vi m ch 8237A là m t b điu khi n DMA cung c p đ a ch b nh và tín hi u điu 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 rng 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
  63. Tài li u mơn h c: Ghép n i và điu 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 : Xố 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, điu khi n c a nĩ. - DREQ 0 - DREQ 3 (DMA request) : Ð u vào yêu c u truy n DMA cho m i kênh c a 8237A-5, cc tính c a các tín hi u vào này là cĩ th l p trình đưc . - DB 0 - DB 7 (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 : điu 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 . - A 0- A 3 : 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 . - A 7 - A 4 : 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
  64. Tài li u mơn h c: Ghép n i và điu 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 . - DACK 0- DACK 3 : (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 điu khi n DMA. - AEN : Cho phép ch t đ a ch n i v i DB 0 - DB 7 đ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 điu khi n DMA ch t đ a ch A 8- A 15 trong su t quá trình truy n DMA. -MEMW ,MEMR: Ðu ra điu 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 . (D 0- D 7) : Các đưng bus d li u ba tr ng thái, hai chi u. Khi 8237 đang đưc l p trình điu 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 nm quy n điu 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 điu 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 ): Mi 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 kt 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
  65. Tài li u mơn h c: Ghép n i và điu 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 điu 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 điu khi n bus 8288 gi i mã 4 bit đa ch th p nh t (A 0- A 3 ) 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 điu 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 điu khi n DMA thit 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 ): điu 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
  66. Tài li u mơn h c: Ghép n i và điu 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): xố ,thi t l p vi c c m các kênh . - Thanh ghi c m (Mask register): xố ho c thi t l p vi c c m c a t t c các kênh b ng mt l nh . Gi ng viên: Nguy n V ăn Minh Trí 66
  67. Tài li u mơn h c: Ghép n i và điu 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 . Bng 5.1: Gii thi u đ a ch và các l nh đc ghi cho các thanh ghi. A3 A2 A1 A0 IO R IO W Ho t đ ng 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 Xố flip-flop con tr byte 1 1 0 1 0 1 ðc thanh ghi t m th i 1 1 0 1 1 0 Xố ch 1 1 1 0 1 0 Xố 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
  68. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi Kê Thanh ghi Ho t CS IOR IOW A3 A2 A1 A0 Int Data 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
  69. Tài li u mơn h c: Ghép n i và điu 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 ngồi và máy vi tính . Tín hi u AEN và ADSTB ra c a 8237A-5 điu 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 A 15 - A 8 .Ð a ch bus A 7- A 0 đưc cung c p tr c ti p b i 8237A-5 và ch a mt ph n đ a ch truy n DMA. Tín hi u điu khi n MEMR ,MEMW ,IOR ,IOW c ũng đưc t o b i b điu 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
  70. Tài li u mơn h c: Ghép n i và điu 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 điu khi n. - Ch đ ghép t ng (Cascade Mode) là ch đ chuy n liên ti p các t , điu 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 mi 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 đon: - Xố 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 hồn tồ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 D 4=1 vào thanh ghi ch đ đ cho phép t kh i đng. 5. Kt thúc trao đ i DMA Cĩ hai cách k t thúc trao đi d li u: - Kt thúc t đng: K t thúc khi b đm s tin trao đi đm v 0, hay s đm kt thúc TC (Terminal Count). V i DMAC 8237, vi c kt 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
  71. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi - Kt thúc c ơng b c: đây là tín hi u t ngồi vào (do m ch TBNV ho c do ng ưi điu 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 ngồi vào) và kênh vào đang ch ph c v . 7. ðc đim v ho t đ ng c a 8237 8237 cĩ nh ng đc đim 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 đĩ ngồ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: - Xố flip-flop con tr byte v 0. - Lp 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 - Lp trình thơng qua thanh ghi ch đ cho kênh 0 và 1 - Lp 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 điu 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
  72. Tài li u mơn h c: Ghép n i và điu khi n thi t b ngo i vi port[addr_pFF]=$00;// xố 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;// xố 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;// xố 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;// xố 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 (D 0=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