CHÆÅNG 8 VAÌ O /RA DÆÎ LIÃÛ U BÀÒ NG DMA 1. Nguyãn tàõ c cuí a viãû c trao âäø i dæî liãû u våï i thiãú t bë ngoaû i vi bàò ng caï ch thám nháû p træû c tiãú p vaì o bäü nhåï (DMA) . Trong caï c caï ch âiãö u khiãø n viãû c trao âäø i dæî liãû u giæî a thiãú t bë ngoaû i vi vaì hãû vi xæí lyï bàò ng caï ch thàm doì traû ng thaï i sàô n saì ng cuí a thiãú t bë ngoaû i vi hay bàò ng caï ch ngàõ t bäü vi xæí lyï âaî âæåc noï i âãú n åí caï c chæång træåï c , dæî liãû u thæåì ng âæåü c chuyãø n tæì bäü nhåï qua bäü vi xæí lyï âãø räö i tæì âoï ghi vaì o thiãú t bë ngoaû i vi hoàû c ngæåü c laû i , tæì thiãú t bë ngoaû i vi noï âæåü c âoü c vaì o bäü vi xæí lyï âãø räö i tæì âoï âæåü c chuyãø n âãú n bäü nhåï . vç thãú täú c âäü trao âäø i dæî liãû u phuû thuäü c ráú t nhiãö u vaì o täú c âäü thæû c hiãû n cuí a caï c lãû nh MOV .IN vaì OUT cuí a bäü vi xæí lyï vaì do âoï viãû c trao âäø i dæî liãû u khäng thãø tiãú n haì nh nhanh âæåc . Trong thæû c tãú coï nhæî ng khi ta cáö n trao âäø i dæî liãû u tháû t nhanh våï i thiãú t bë ngoaû i vi : nhæ khi cáö n âæa dæî liãû u hiãû n thë ra maì n hçnh hoàû c trao âäø i dæî liãû u våï i bäü âiãö u khiãø n âéa .trong caï c træåì ng håü p âoï ta cáö n coï khaí nàng ghi /âoü c dæî liãû u træû c tiãú p våï i bäü nhåï (diret memory acces .DMA- thám nháû p vaì o bäü nhåï træû c tiãú p khäng thäng qua CPU) thç måï i âaï p æï ng âæåü c yãu cáö u vãö täú c âäü trao âäø i dæî liãû u .âãø laì m âæåü c âiãö u naì y caï c hãû vi xæí lyï noï i chung âãö u phaí i duì ng thãm maû ch chuyãn duû ng âãø âiãö u khiãø n viãû c thám nháû p træû c tiãú p vaì o bäü nhåï ( dircet memory access con troller.DMAC) Coï thãø láú y mäü t vê duû cuû thãø âãø minh hoaû âiiãuì naì y .trong khi mäü t maû ch DMAC nhæ 8237A cuí a inter coï thãø âiãö u khiãø n viãû c chuyãø n mäü t byte trong mäü t maí ng dæî liãû u tæì bäü nhåï ra thiãú t bë ngoaû i vi chè hãú t 4 chu kyì âäö ng häö thç bäü vi xæí lyï 8088 phaí i laì m hãú t cåî 4 chu kyì : ; säú chu kyì âäö ng häö
LAP: MOV AL, (SI );10 OUT PORT ,AL ; 10 INC SI ; 2 LOOP LAP ; 17 ; CÄÜ NG:39 chu kyì Âãø häù tråü cho viãû c trao âäø i dæî liãû u våï i thiãú t bë ngoaû i vi bàò ng caï ch thám nháû p træû c tiãú p vaì o bäü nhåï ,taû i mäù i vi maû ch CPU thæåì ng täö n taû i chán yãu cáö u treo HOLD âãø thiãú t bë ngoaû i vi , mäù i khi coï yãu cáö u duì ng buï cho viãû c trao âäø i dæî liãû u våï i bäü nhåï thç thäng qua chán naì y maì baï o cho CPU biãú t . âãú n læåü t CPU , khi nhán âæåü c yãu cáö u treo thç noï tæû treo lãn (tæû taï ch ra khoí i hãû thäú ng bàò ng caï ch âæa caï c bit vaì o traû ng thaï i tråí khaï ng cao )vaì âæa xung HLDA ra ngoaì i âãø thäng baï o CPU cho pheï p sæí duû ng buï . Så âäö khäú i cuí a mäü t hãû vi xæí lyï coï khaí nàng trao âäø i dæî liãû u theo kiãø u DMA âæåü c thãø hiãû n trãn hçnh 8.1
Ta nháû n tháú y trong hãû thäú ng naì y , khi CPU tæû taï ch ra khoí i hãû thäú ng bàû ng tæû treo (æï ng våï i vë trê hiãû n thåì i cuí a caï c cäng tàõ c chuyãø n maû ch )âãø trao quyãö n sæí duû ng bus cho DMAC phaí i chëu traï ch nhiãû m âiãö u khiãø n toaì n bäü hoaû t âäü ng trao âäø i dæî liãû u cuí a hãû thäú ng . âãø laì m âæåü c âiãö u âoï DMAC phaí i coï khaí nàng taû o ra âæåü c caï c tên hiãû u âiiãuì khiãø n cáö n thiãú t giäú ng nhæ caï c tên hiãû u cuí a CPU vaì baí n thán noï phaí i laì mäü t thiãú t bë láû p trçnh âæåü c (âãø CPU “dàn doì ” noï bàò ng
caï ch âæa vaì o caï c tæì âiãö u khiãø n træåï c khi noï coï thãø hoaû t âäü ng âäü c láû p ). Qua trinh hoaû t âäü ng cuí a hãû thäú ng trãn coï thãø âæåü c toï m tàõ t nhæ sau: Khi thiãú t bë ngoaû i vi coï yãu cáö u trao âäø i dæî liãû u kiãø u DMA våï i bäü nhåï , noï âæa yãu cáö u DRQ=1 âãú n DMAC, DMAC seî âæa yãu cáö u treo HRQ=1 âãú n chán HOLD cuí a CPU . nhán âæåü c yãu cáö u treo , CPU seî treo caï c bus cuí a mçnh vaì traí låì i cháú p nháû n treo qua tên hiãû u HLDA=1 âãú n chán HACK cuí a DMAC ,DMAC seî thäng baï o cho thiãú t bë ngoaû i vi thäng qua tên hiãû u DACK=1 laì noï cho pheï p thiãú t bë ngoaû i vi trao âäø i dæî liãû u kiãø u DMA .khi quaï trçnh DMA kãú t thuï c thç DMAC âæa ra tên hiãû u HRQ=0. Trong thæû c tãú täö n taû i 3 kiãø u trao âäø i dæî liãû u bàò ng caï ch thám nháû p træû c tiãú p vaì o bäü nhåï nhæ sau: + Treo CPU mäü t khoaí ng thåì i gian âãø trao âäø i caí maí ng dæî liãû u . +treo CPU âãø trao âäø i tæì ng byte. +táû n duû ng thåì i gian khäng duì ng bus âãø trao âäø i dæî liãû u . ta seî láö n luåü t giåï i thiãû u qua caï c kiãø u trao âäø i dæî liãû u naì y . • Trao âäø i caí mät maí ng dæî liãû u Trong chãú âäü naì y CPU bë treo trong suäú t quaï trçnh trao âäø i maí ng dæî liãû u .Chãú âäü naì y âæåü c duì ng khi ta coï nhu cáö u trao âäø i dæî liãû u våï i äø âéa hoàû c âæa dæî liãû u ra hiãø n thë . caï c bæåï c thuí tuû c âãø chuyãø n mäü t maí ng dæî liãû u tæì bäü nhåï ra thiãú t bë ngoaû i vi: 1.CPU phaí i ghi tæì âiãö u khiãø n vaì tæì chãú âäü laì m viãû c vaì o DMAC âãø quy âënh caï ch thæï c laì m viãû c , âëa chè âáö u cuí a maí ng nhåï , âäü daì i cuí a maí ng nhåï ,... 2.khi thiãú t bë ngoaû i vi co yãu cáö u trao âäø i dæî liãû u , noï âæa DRQ =1 âãú n DMAC .
3.DMAC âæa ra tên hiãû u HRQ âãú n chán HOLD cuí a CPU âãø yãu cáö u treo CPU .tên hiãû u HOLD phaí i åí mæï c cao cho âãú n hãú t quaï trçnh trao âäø i dæî liãû u . 4. nháû n âæåü c yãu cáö u treo ,CPU kãú t thuï c chu kyì bus hiãû n taû i , sau doï noï treo caï bus cuí a mçnh vaì âæa ra tên hiãû u HLDA baï o cho DMAC âæåü c toaì n quyãö n sæí duû ng bus. 5.DMAC âæa ra xung DACK âãø baï o cho thiãú t bë ngoaû i vi biãú t laì coï thãø bàõ t âáö u trao âäø i dæî liãû u . 6.DMAC bàõ t âáö u chuyãø n dæî liãû u tæì bäü nhåï ra thiãú t bë ngoaû i vi bàò ng caï ch âæa âëa chè cuí a byte âáö u ra bus âëa chè vaì âæa ra tên hiãû u MEMR=O âãø âoü c mäü t byte tæì bäü nhåï ra bus dæî liãû u .tiãú p âoï DMAC âæa ra tên hiãû u IOW =0 âãø ghi âæa dæî liãû u ra thiãú t bë ngoaû i vi.DMAC sau âoï giaí m bäü âãú m säú byte coì n phaí i chuyãø n , cáû p nháû t âëa chè cuí a byte cáö n âoü c tiãú p , vaì làû p laû i caï c âäü ng taï c trãn cho tåï i khi hãú t säú âãú m (TC). 7. quaï trçnh DMA kãú t thuï c , DMAC cho ra tên hiãû u HRQ=0 âãø baï o cho CPU biãú t âãø CPU daì nh laû i quyãö n âiãö u khiãø n hãû thäú ng . • Treo CPU âãø trao âäø i tæì ng byte . Trong caï ch trao âäø i dæî liãû u naì y CPU khäng bë treo láu daì i trong mäü t láö n nhæng thènh thoaí ng laû i bë treo trong khoaí ng thåì i gian ráú t ngàõ n âuí âãø trao âäø i 1 byte dæî liãû u (CPU bë láú y máú t mäü t säú chu kyì âäö ng häö ). Do bë láú y âi mäü t säú chu kyì âäö ng häö nhæ váû y lãn täú c âäü thæû c hiãû n mäü t cäng viãû c naì o âoï cuí a CPU chè bë suy giaí m chæï khäng dæì ng laû i . caï ch hoaû t âäü ng cuî ng tæång tæû nhæ pháö n træåï c , chè coï âiãö u mäù i láö n DMAC yãu cáö u treo CPU thi chè coï mäü t byte âæåü c trao âäø i • Táû n duû ng thåì i gian CPU khäng duì ng bus âãø trao âäø i dæî liãû u . Trong caï ch trao âäø i dæî liãû u naì y , ta phaí i coï caï c logic phuû bãn ngoaì i cáö n thiãú t âãø phaï t hiãû n ra caï c chu kyì xæí lyï näü i bäü cuí a
CPU (khäng duì ng âãú n bus ngoaì i )vaì táû n duû ng caï c chu kyì âoï vaì o viãû c trao âäø i dæî liãû u giæî a thiãú t bë ngoaû i vi våï i bäü nhåï . Trong caï ch laì m naì y thç DMAC vaì CPU luán phiãn nhau sæí duû ng bus vaì viãû c thám nháû p træû c tiãú p bäü nhåï kiãø u naì y khäng aí nh hæåí ng gç tåï i hoaû t âäü ng bçnh thæåì ng cuí a CPU. 2.DMAC 8237A -5 trong hãû vi xæí lyï 8088. 2.1.tên hiãû u HOLD vaì HLDA trong CPU 8088. Hai tên hiãû u duì ng âãø yãu cáö u treo vaì traí låì i cháú p nháû n yãu cáö u treo trong chãú âäü MIN cuí a CPU 8088 laì HLDA.quan hãû giæî a hai tên hiãû u âoï âæåü c thãø hiãû n trãn hçnh 8.2.
Tên hiãû u yãu cáö u treo HOLD âæåü c laï y máù u taû i sæåì n lãn cuí a .xung âäö ng häö træåï c chu kyì T4 hoàû c T1. Khi nháû n âæåü c yãu cáö u treo .CPU kãú t thuï c chu kyì bus hiãû n taû i , âæa ra tên hiãû u HLDA vaì treo caï c tên hiãû u cuí a bus .busd vaì bus c (træì tên hiãû u ALE=O)âãø nhæåì ng quyãö n sæí duû ng caï c bus naì y choDMAC . Cáö n læu yï ràò ng âáö u vaì o HOLD coï mæï c æu tiãn cao hån caï c âáö u vaì o yãu cáö u ngàõ t INTR vaì MNI nhæng laû i tháú p hån so våï i âáö u vaì o RESET. Âãø âaí m baí o viãû c âäö ng bäü tên hiãû u yãu cáö u treo cuí a thiãú t bë ngoaû i vi våï i tên hiãû u âäö ng häö cuí a hãû thäú ng træåï c khi âæa vaì o chán HOLD cuí a 8088 ngæåì i ta thæåì ng duì ng maû ch trãn hçnh 8.3.
2.2. Maû ch DMAC 8237A -5cuí a Inter Træåï c khi trçnh baì y kyî vãö maû ch DMAC 8237A cuí a Inter ta noï i qua vãö caï c thay âäø i cáö n coï trong nhoï m tên hiãû u âiãö u khiãø n ghi/âoü c cuí a hãû vi xæí lyï våï i CPU 8088 åí chãú âäü MIN âãø sæí duû ng âæåü c maû ch 8237A laì m DMAC Nhæ trãn hçnh 8.1 âaî thãø hiãû n tæång âäú i roî , âãø thãø hiãû n âæåü c chæï c nàng DMA trong hãû ,bus âiãö u cuí a hãû vi xæí lyï 8088 phaí i âæåü c thay âäø i chuï t êt âãø coï âæåü c caï c tên hiãû u cáö n thiãú t cho DMAC vaì caï c bäü pháû n lkhaï c hoaû t âäü ng .âoï chinhd laì viãû c caï c tên hiãû u RD.WD vaì IO/M âæåü c sæí duû ng âãø taoü caï c tên hiãû u âiãö u khiãø n måï i IOR.IOW .MEMR.MEMW.tæång thêch våï i caï c tên hiãû u cuí a DMAC 8237A -5. Hçnh 8.4 trçnh baì y mäü t khaí nàng taû o ra caï c tên hiãû u âiãö u khiãø n nhæ váû y duì ng maû ch däö n kãnh 74LS257 . trong 74LS 257 gäö m 4 maû ch däö n kãnh 2 âæåì ng . caï c tên hiãû u RD.WD vaì IO/M âæåü c bäú trê sao cho khi âáö u vaì o cuí a maû ch 74LS 257 laì B=1 thç ta laì m viãû c våï i thiãú t bë ngoaû i nháû p våï i caï c xung IORvaì IOW ,ngæåü c laû i khi B=0 thç ta laì m viãû c våï i bäü nhåï våï i caï c xung MEMR.MEMW. Trãn hçnh 8.4 ta coì n tháú y tên hiãû u AEN cuí a DMAC cuî ng âæåü c duì ng âãø khoaï caï c tên hiãû u âiãö u khiãø n måï i do CPU taû o ra khi DMAC âaî nàõ m quyãö n âiãö u khiãø n bus.
Trong chãú âäü truyãö n kiãø u âoü c thç dæî liãû u âæåü c âoü c tæì bäü nhåï räö i âæa ra thiãt bë ngoaû i vi. Trong chãú âäü truyãö n kiãø u ghi thç dæî liãû u âæåü c âoü c tæì thiãú t bë ngoaû i vi räö i âæa vaì o bäü nhåï . khi 8237A -5 laì m viãû c åí chãú âäü kiãø m tra thç tuy âëa chè âæåü c âæa âãú n bäü nhåï nhæng DMAC khäng taû o ra caï c xung âiãö u khiãø n âãø tiãú n haì nh caï c thao taï c ghi/âoü c bäü nhåï hay thiãú t bë ngoaû i vi . Ngoaì i ra maû ch 8237 A-5 coì n häù tråü viãû c trao âäø i dæî liãû u giæa caï c vuì ng khaï c nhau cuí a bäü nhåï vaì cuî ng chè riãng trong chãú âäü laì m viãû c naì y , dæî liãû u cáö n trao âäø i måï i phaí i di qua DMAC nhæng våï i täú c âäü cao hån khi âi qua CPU nhæng våï i täú c âäü cao hån khi âi qua CPU (trong træåì ng håü p naì y ta coï thãø âoü c âæåü c dæî liãû u âoï trong thanh ghi taû m). Så âäö khäú i cáú u truï c bãn trong cuí a maû ch 8237A -5 âæåü c thãø hiãû n trãn hçnh 8.5 Maû ch DMAC 8237A -5 chæï a 4 kãnh trao âäø i dæî liãû u DMA våï i mæï c æu tiãn láp trçnh âæåü c .MAC 8237A -5 coï täú c âäü truyãö n 1 MB/s cho mäù i kãnh , mäü t kãnh co thãø truyãö n mät maí ng coï âäü daì i 64KB . • Giåï i thiãû u caï c chán tên hiãû u cuí a 8237A -5 +CLK[I]:tên hiãû u âäö ng häö cuí a maû ch .âãø maû ch coï thãø laì m viãû c täú t våï i hãû 8088 thç tên hiãû u CLK cuí a hãû thäú ng thæåì ng âæåü c âaí o træåï c khi âæa vaì o CLK cuí a 8237A-5
+CS {I}:TÊN HIÃÛ U CHOÜ N VOÍ CUÍ A 8237a-5 chán naì y thæåì ng âæåü c näú i våï i âáö u ra cuí a bäü giaí i maî âëa chè .bäü giaí i maî âëa chè naì y khäng cáö n duì ng âãú n âáö u vaì o IO/M vç baí n thán DMAC âaî âæåü c cung cáú p caï c xung âiãö u khiãø n måï i cuí a hãn thäú ng . +RESET{I}:tên hiãû u näú i våï i tên hiãû u khåí i âäü ng cuí a hãû thäú ng . khi maû ch 8237A -5 ÂÆÅÜ C KHÅÍ I ÂÄÜ NG RIÃNG THANH GHI MÀÛ T LAÛ ÂÆÅÜ C LÁÛ P COÌ N CAÏ C BÄÜ PHÁÛ N SAU ÂAY BË XOAÏ : thanhghi lãû nh thanh ghi traû ng thaï i thanh ghi yãu cáö u DMA thanh ghi taû m thåì i maû ch láû t byte âáö u /byte cuäú i (Firsst/Last)
+READY{I}:tên hiãû u sàô n saì ng , näú i våï i READY cuí a hãû thäú ng âãø gáy ra caï c chu kyì âåü i âäú i våï i caï c thiãú t bë ngoaû i vi vaì caï c bäü nhåï cháû m . +HLDA {I}:tên hiãû u baï o cháú p nhán yãu cáö u treo tæì CPU +-DRQ3{I}:caï c tên hiãû u yãu cáö u treo tæì thiãú t bë ngoaû i vi . cæû c tênh cuí a caï c tên hiãû u naì y coï thãø láp trçnh âæåü c . sau khi khpåí i âäü ng caï c tên hiãû unaì y âæåü c âënh nghé a laì caï c tên hiãû u kêch hoaû t mæï c cao . +DBO-BD7{I,O}:tên hiãû u hai chiãö u näú i âãú n bus âëa chè vaì bus dæî lliãû u cuí a hãû thäú ng caï c tên hiãû u naì y âæåü c duì ng khi láp trçnh cho DMAC vaì khi DMAC hoaû t âäü ng caï c chán naì y chæï a 8 bit âëa chè cao A8-A15 cuí a maí ng nhåï dæî liãû u lëch cáö n chuyãø n . trong chãú âäü chuyãø n dæî liãû u giæî a caï c vuì ng cuí a bäü nhåï taû i caï c chán naì y coï caï c dæî liãû u âæåü c chuyãø n .
+IOR {I,O}VAÌ IOW{I,O}: laì caï c chán tên hiãû u hai chiãö u duì ng trong khi láû p trçnh cho DMAC vaì trong caï c chu kyì âoü c vaì ghi . +EOP{I,O}:LAÌ TÊN HIÃÛ U HAI CHIÃÖ U .KHI LAÌ ÂÁÖ U VAÌ O NOÏ ÂÆÅÜ C DUÌ NG ÂÃØ BÀÕ T BUÄÜ C DMAC kãú t thuï c quaï trçnh DMA .khi laì âáö u ra noï âæåü c duì ng âãø baï o cho bãn ngoaì i biãú t mäü t kãnh naì o âoï âaî chuyãø n xong säú byte theo yãu cáö u , luc nay noï thæåì ng duì ng nhæ mäü t yãu cáö u ngàõ t âãø CPU xæí lyï viãû c kãú t thuï c quaï trinh DMA +A0-A3{I,O}:laì caï c tên hiãû u hai chiãö u duì ng âãø choü n caï c thanh ghi trong 8237A 5 khi láû p trçnh vaì khi âoü c(âáö u vaì o), hoàû c âãø chuqaï 4 bit âëa chè tháú p nháú t cuí a âëa chè maí ng nhåï cáö n chuyãø n (âáö u ra) A4-A7[0]:caï c chán âãø chæï a 4 bêt âëa chè pháö n cao trong byte âëa chè tháú p cuí a âëa chè maí ng nhåï cáö n chuyãø n HRQ[0]:tên hiãû u yãu cáö u treo âãú n CPU. Tên hiãû u naì y thæåì ng âæåü c âäö ng bäü våï i tên hiãû u CLK cuí a hãû thäú ng räö i âæåü c âæa âãú n chán HOLD cuí a 8088. DACK0 DACK3[0]: laì caï c tên hiãû u traí låì i caï c yãu cáö u DMA cho caï c kãnh. Caï c tên hiãû u naì y coï thãø âæåü c láû p trçnh âãø hoaû t âäü ng theo mæï c tháú p hoàû c mæï c cao.sau khi khåí i âäü ng, caï c tê hiãû u naì y âæåü c âënh nghéa laì caï c xung têch cæû c tháú p. AEN[0]: tên hiãû u cho pheï p maû ch näú i vaì o DB0-DB7 chäú t láú y âëa chè cuí a vuì ng nhåï cáö n trao âäø i theo kiãø u DMA. Tên hiãû u naì y cuî ng cho pheï p cáú m caï c maû ch âãû m buï âëa chè vaì dæî liãû u hoàû c maû ch taû o tên hiãû u âiãö u khiãø n cuí a CPU näú i vaì o caï c buï tæån æï ng khi DMAC hoaû t âäü ng. ADSTB[0]: xung cho pheï p chäú t caï c bit âëa chè pháö n cao A8A15 coï màû t trãn DB0-DB7.
MEÍ M[0] vaì MEMÆ[0]: laì caï c chán tên hiãû u do DMAC taû o ra vaì duì ng khi âoü c/ghi bäü nhåï trong khi hoaû t âäü ng. Caï c thanh ghi bãn trong cuí a DMAC 8237A-5 Caï c thanh ghi bãn trong DMAC 8237A-5 âæåü c CPU 8088 choü n âãø laì m viãû c nhåì caï c bit âëa chè tháú p A0-A3. Baí ng 8.1 chè ra caï ch thæï c choü n ra caï c thanh ghi âoï . Caï c thanh ghi trong baí n trãn coï thãø âæåü c ghi.âcj hoàû c chè ghi vaì o vaì chuï ng chæï a caï c thäng tin khaï c nhau liãn quan âãú n caï ch thæï c laì m viãû c vaì caï c thäng säú cuí a mäù i kãnh DMA. Trong baí ng 8.2 vaì 8.3 liãtë kã caï c thanh ghi trãn theo caï c quan âiãø m æï ng duû ng khaï c nhau âãø dãù tra cæï u âëa chè cho chuï ng khi láû p trçnh våï i DMAC 8237A-5 Baí ng 8.1. Âëa chè caï c thanh ghi bãn trong cuí a 8237A5 Baí ng8.2. Âëa chè caï c thanh ghi trong âãø ghi/ âoü c âëa chè vaì ssäú tæì cáö n chuyãø n. Baí ng 8.3.Âëa chè caï c thanh ghi cho âiãö u khiãø n vaì traû ng thaï i. Ta seî giåï i thiãû u qua caï c âàû c âiãø m cuí a mäü t säú trong caï c thanh ghi kãø trãn. Thanh ghi âëa chè hiãû n thåì i: Âáy laì thanh ghi 16 bêt duì ng âãø chæï a âëa chè cuí a vuì ng nhåï phaí i chuyãø n.Mäù i kãnh coï riãng thanh ghi aì y âãø chæï a âëa chè .Khi 1 byte âæåü c truyãö n âi. Caï c thanh ghi naì y tæû däü ng tàng hay giaí m tuyì theo træåï c noï âæåü c láû p trçnh nhæ thãú naì o. Thanh ghi säú âãú m hiãû n thåì i: Thanh ghi 16 bêt naì y duì ng âãø chæï á säú byte maì kãnh phaí i truyãö n( nhiãö u nháú t laì 16KB). Mäù i kãnh coï thanh ghi säú byte cuí a mçnh. Caï c thanh ghi naì y âæåü c ghi bàò ng säú âãú m nhoí nháú t hån 1 so våï i säú byte thæû c chuyãø n.
Thanh ghi âëa chè cå såí vaì thanh ghi säú âãú m cå såí : Caï c thanh ghi naì y âæåü c duì ng âãø chæï a âëa chè vaì säú âeems cho mäù i kãnh khi chãú âäü tæû âäü ng khåí i âáö u âæåü c sæí duû ng. Trong chãú âäü naì y mäü t quaï trçnh DMA kãú t thuï c thç caï c thanh ghi âëa chè hiãû n thåì i vaì säú âãú m hiãû n thåì i âæåü c naû p laû i giaï trë cuí láú y tæì thanh ghi âëa chè cå såí vaì thanh ghi säú âãú m cå såí .. Khi caï c thanh ghi âëa chè hiãû n thåì i vaì säú âãú m hiãû n thåì i âæåü c láû p trçnh thç caï c thanh ghi âëa chè cå såí vaì thanh ghi säú âãú m cå såí cuî ng âæåü c láû p trçnh báú t kãø chãú däü tæû khåí i âáö u coï âæåü c sæí duû ng hay khäng. Thanh ghi lãû nh: Thanh ghi naì y duì ng âãø láû p trçnh cho DMAC. Noï bë xoaï khi khåí i âäü ng hoàû c khi ta sæí duû ng lãû nh xoaï toaì n bäü caï c thanh ghi. Daû ng thæï c cuí a thanh ghi lãû nh âæåü c biãø u diãø n trãn hçnh 8.6. Caï c bêt cuí a thanh ghi naì y quyãú t âënh caï c phæång thæï c laì m viãû c khaï c nhau cuí a 8237A-5. Ta seî giaí i thêch sau âáy yï nghéa cuí a caï c bit. Bit D0 cho pheï p DMAC duì ng kãnh 0 vaì kãnh 1 âãø chuyãø n dæî liãû u giæî a 2 vuì ng nhåï .Âëa chè cuí a byte dæî liãû u åí vuì ng âêch âæåü c chæï a trong thanh ghi âëa chè cuí a kãnh 1. Säú byte chuyãø n âæåü c âãø trong thanh ghi âãú m cuí a kãnh 1.Byte cáö n chuyãø n luï c âáö u âæåü c âoü c tæì vuì ng gäú c vaì o thanh ghi taû m âãø räö i tæì âoï noï âæåü c gæí i âãú n vuì ng âêch trong bæåï c tiãú p theo( hoaû t âäü ng nhæ lãû nh MOVSB nhæng våï i täú c âäü cao). Bit D1=1 duì ng âãø cho pheï p kãnh 0 giæî nguyãn âëa chè trong chãú âäü truyãö n giæî liãû u giæî a 2 vuì ng nhåï . Âiãö u naì y khiãú n cho toaì n bäü caï c ä nhåï vuì ng âêch âæåü c naû p cuì ng mäü t byte dæî liãû u. Bit D2 cho pheï p DMAC hoaû t âäü ng hay khäng. Bit D3 quyãú t âënh byte cáö n chuyãø n âæåü c truyãö n våï i 4hay 2 chu kç âäö ng häö .
Bit D4 cho pheï p choü n chãú âäü æu tiãn cäú âënh (kãnh 0 coï mæï c æu tiãn cao nháú t. Kãnh 3 coï mæï c æu tiãn tháú p nháú t) hoàû c chãú âoü æu tiãn luán phiãn( kãnh 0 luï c âáö u coï mæï c æu tiãn cao nháú t. Sau khi kãnh naì y âæåü c choü n âãø chuyãø n dæî liãû u thç noï âæåü c nháû n mæï c æu tiãn tháú p nháú t. Kãnh 1 laû i tråí thaì nh kãnh coï mæï c æu tiãn cao nháú t...) Bit D5 cho pheï p choü n thåì i gian ghibçnh thæåì ng hay keï o daì i cho tiãú t bë ngoaû i vi cháû m. Caï c bit D6 vaì D7 cho pheï p choü n cæû c tênh têch cæû c cuí a caï c xung DRQ0-DRQ4 vaì DACK0- DACK4.
+ thanh ghi chãú âäü : duì ng âàû t chãú âäü laì m viãû c cho caï c kãnh cuí a DMAC. Mäù i kãnh cuí a DMAC coï mäü t thanh ghi chãú âoü riãng.Daû ng thæï c cuí a thanh ghi chãú âäü âæåü c biãø u diãø n trãn hçnh 8.7. Trong chãú âäü DMA theo yãu cáö u. DMAC tiãú n haì nh chuyãø n dæî liãû u cho âãú n khi coï tên hiãû u EOP tæì bãn ngoaì i hoàû c cho âãú n khi khäng coì n yãu cáö u DMA næî a(DRQ tråí nãn khäng têch cæû c) Trong chãú âäü DMA chuyãø n tæì ng byte, chæì ng naì o váù n coì n yãu caì u DMA(DRQ váù n laì têch cæû c.) thç DMAC âæa ra HRQ=0 trong thåì i gian 1 chu kç bus sau mäù i láö n chuyãø n sang 1 byte. Sau âoï noï laû i âæa ra HRQ=1. Cæï nhæ váû y DMAC vaì CPU luán phiãn nhau xæî duû ng bus cho âãú n khi âãú m hãú t(TC) Trong chãú âäü DMA chuyãø n caí maî ng, caí mäü t maî ng gäö m mäü t säú byte bàò ng näü i dung bäü âãú m âæåü c chuyãø n liãö n 1 luï c. Chán
yãu cáö u chuyãø n dæî liãû u DRQ khäng cáö n phaí i giæî âæåü c åí mæï c têch cæû c suäú t trong quaï trçnh chuyãø n. Chãú âäü näú i táö n âæåü c duì ng khi coï nhiãö u bäü DMAC.âæåü c duì ng trong hãû thäú ng âãø måí räü ng säú kãnh coï thãø yãu cáö u DMA. + Thanh ghi yãu cáö u: yãu cáö u DMA coï thãø âæåü c thiãú t láû p/ xoaï theo yï muäú n bàò ng chæång trçnh. Âiãö u naì y ráú t coï låü i khi ta muäú n chuyãø n dæî liãû u giæî a caï c vuì ng khaï c nhau cuí a bäü nhåï luï c naì y caï c kãnh liãn quan phaí i âæåü c láû p trçnh åí chãú âoü chuyãø n caí maî ng. Daû ng thæï c cuí a thanh ghi yãu cáö u âæåü c biãø u diãø n trãn hçnh 8.8 7 6 5 4 X X X X 1.Thiãú t láû p yãu cáö u 0: xoï a theo yãu cáö u
3
2
1
Daû ng thæï c cuí a thanh ghi màû t naû täø ng håü p âæåü c biãø u diãù n trãn hçnh 8.10 7 6 5 4 3 2 1 0 X X X X X 1.Thiãú t láû p màû t naû 00: choü n kãnh 0 0: xoï a theo màû t naû 01: choü n kãnh 1 10: choü n kãnh 2 11: choü n kãnh 3 (X: khäng quan tám) Hçnh 8.9. Daû ng thæï c cuí a thanh ghi màû t naû riãng cho mäù i kãnh
0
X
00: choü n kãnh 0 01: choü n kãnh 1 10: choü n kãnh 2 11: choü n kãnh 3 Hçnh 8.8 daû ng thæï c cuí a thanh ghi yãu cáö u + Thanh ghi màû t naû riãng cho tæì ng kãnh: bàò ng thanh ghi naì y ta coï thãø láû p trçnh âãø cáú m (cho Bit màû t naû tæång æï ng = 1) thay cho pheï p hoaû t âäü ng (cho Bit màû t naû tæång æï ng = 0) âäú i våï i tæì ng kãnh mäü t . Daû ng thæï c cuí a thanh ghi màû t naû riãng leí cho tæì ng kãnh âæåü c biãø u diãù n trãn hçnh 8.9 . + Thanh ghi màû t naû täø ng håü p: våï i thanh ghi naì y ta coï thãø láû p trçnh âãø cáú m (cho Bit màû t naû tæång æï ng = 1) thay cho pheï p hoaû t âäü ng (cho Bit màû t naû tæång æï ng = 0) âäú i våï i tæì ng kãnh chè bàò ng mäü t lãû nh .
7
6 5 4 3 X X X X 1.Láû p màû t naû cho kãnh 3 0: xoï a màû t naû cho kãnh 3 1:Láû p màû t naû cho kãnh 2 0: Xoï a màû t naû cho kãnh 2
2
1
0
1: Láû p màû t naû cho kãnh 0 0 Xoï a màû t naû cho kãnh 0 1: láû p màû t naû cho kãnh 1 0: xoï a màû t naû cho kãnh 1
Hçnh 8.10. Daû ng thæï c cuí a thanh ghi màû t naû täø ng håü p. - Thanh ghi traû ng thaï i : Thanh ghi naì y cho pheï p xaï c âënh traû ng thaï i cuí a caï c kãnh trong DMAC. Kãnh naì o âaî trãö n xong (âaû t säú âãú m. TC) kãnh naì o âang coï yãu cáö u DMA âãø trao âäø i dæî liãû u. Khi mäü t kãnh naì o âoï âaû t TC. Kãnh âoï seî tæû âoü ng bë cáú m Daû ng thæï c cuí a thanh ghi traû ng thaï i âæåü c biãø u diãù n trãn hçnh 8.11.
• Caï c lãû nh âàû c biãû t cho DMAC 8237A - 5 Coï 3 lãû nh âàû c biãû t âãø âiãö u khiãø n hoaû t âäü ng cuí a DMAC 8237A - 5 . Caï c lãû nh naì y chè thæû c hiãû n bàò ng caï c lãû nh OUT våï i caï c âëa chè cäø ng xaï c âënh thç theo thanh ghi maì khäng cáö n âãú n giaï trë cuû thãø cuí a thanh ghi AL . 7 1. Kãnh 0 coï 1: Kãnh 1 coï 1: Kãnh 2 coï 1: Kãnh 3 coï
yãu cáö u yãu cáö u yãu cáö u yãu cáö u
6
5 4
3
2
1
0
1: Kãnh 0 âaû t säú 1: Kãnh 1 âaû t säú 1: Kãnh 2 âaû t säú 1: Kãnh 3 âaû t säú
âãú m âãú m âãú m âãú m
Hçnh 8.11. Daû ng thæï c cuí a thanh ghi traû ng thaï i. + Lãû nh xoï a maû ch láû t byte âáö u/byte cuäú i (First/Laï t, F/L) : F/L laì mäü t maû ch láû t bãn trong DMAC âãø chè ra byte naì o trong caï c thanh ghi 16 bit âãø chè ra byte naì o trong caï c thanh ghi 16bit (thanh ghi âëa chè hoàû c thanh ghi säú âãú m âæåü c choü n laì m viãû c .nãú u F/L=1 thi säú âoï laì MSB , coì n nãú u F/L=O ) thç säú âoï laì LSB.maû ch láû t F/L tæû âäü ng thay âäø i traû ng thaï i khi ta ghi /âoü c caï c thanh ghi âoï . khi khåí i âäü ng xong thç F/L=O lãû nh xoaï toaì n bäü caï c thanh ghi : lãû nh naì y coï taï c âäü ng nhæ thao taï c khåí i âäü ng . táú t caí caï c thanh ghji âãö u bë xoaï riãng thanh ghi màû t naû täø ng håü p thç âæåü c láû p âãø cáú m caï c yãu cáö u trao âäø i dæî liãû u . lãû nh xoaï thanh ghi màû t naû täø ng håü p :lãû nh naì y cho pheï p caï c kãnh cuí a DMAC bàõ t âáö u yãu cáö u trao âäø i dæî liãû u . • láû p trçnh cho caï c thanh ghi âëa chè vaì thanh ghi säú âãú m:
viãû c láû p trçnh cho caï c thanh ghi âëa chè vaì thanh ghi säú âãú m âæåü c thæû c hieû n riãng cho mäù i kãnh . cáö n phaí i âënh træåï c giaï trë logic cuí a F/L âãø thao taï c chênh xaï c âæåü c våï i LSB vaì MSB cuí a caï c thanh ghi trãn . ngoaì i ra coì n phaí i cáú m caï c yãu cáö u DMA cuí a caï c kãnh trong khi láû p trçnh cho chuï ng. Coï thãø tuán theo caï c bæåï c sau âáy âãø láû p trçnh cho DMAC 8237A -5: + xoaï màû t láû t F/L +cáú m caï c yãu cáö u cuí a caï c kãnh +ghi LSB räö i MSB cuí a thanh ghi âëa chè +ghi LSB räö i MSB cuí a thanh ghi säú âãú m . • Näú i DMAC 8237A -5 våï i CPU 8088 åí chãú âäü MIN Viãû c phäú i gheï p maû ch 8237A-5 våï i 8088 âæåü c thãø hiãû n trãn hçnh 8.12 Tên hiãû u cuí a 8237A AEN-=O khi CPU kiãø m soaï t hoaû t âäü ng cuí a toaì n hãû . caï c bit âëa chè A 16 -A 19 vaì AO-A7 seî âæåü c chäú t båí i U1 vaì U3 âãø âæa ra bit âëa chè . caï c tên hiãû u âiãö u khiãø n dáø n xuáú t tæì CPU cuî ng âæåü c âæa ra bus âiãö u khiãø n båí i maû ch däö n kãnh U5 (74LS257). KHI DMAC nàõ m quyãö n chè huy hãû thäú ng thç AEN =1 seî cáú m caï c chäú t U3 vaì U4 måí thäng tæì CPU ra bus . nhæng laû i cho pheï p chäú t U2 vaì måí chäú t U4 cuí a DMAC âãø cung cáú p caï c bit âëa chè A16-A19 vaì A8-A15.caï c bit âëa chè khaï c laì A0-A7 vaì caï c tên hiãû u MEMR.MEMR.IOR.IOW seî âæåü c láú y træû c tiãú p tæì DMAC. Xung ADSSTB seî cho pheï p måí maû ch chäú t U4 âãø âæa caï c bit âëa chè A8-A15 . âæåü c chäú t tæì bit D cuí a 8237A -5. Vç DMAC 8237A -5 chè coï khaí nàng cung cáú p caï c bit âëa chè A16-A19 âæåü c ghi vaì o chäú t U2 (74LS373) nhåì lãû nh OUT våï i âëa chè cäø ng âæåü c giaí i maî nhåì maû ch giaí i maî âëa chè U6 , maû ch giaí i maî âëa chè naì y âäö ng thåì i cuî ng cung cáú p xung choü n veí cho 8237A -5 .trãn hçnh 8.12 âãø cho viãû c giaí i thêch tråí nãn âån giaí n måï i chè biãø u diãù n caï c caï ch taû o ta âëa chè cao nháú t cho mäü t kãnh ta coï thãø duì ng
vi maû ch chuyãn duû ng 74LS 670 âãø laì m thanh ghi trang DMA cho caí 4 kãnh cuí a DMAC . tat nhiãn ta phaí i näú i laû i caï c tên hiãû u cho âuï ng . • Mäü t vê duû truyãö n dæî liãû u giæa hai vuì ng nhåï Viãû c duì ng chãú âoü DMA âãø chuãø yn dæî liãû u giæî a caï c vuì ng klhaï c nhau cuí a bäü cho pheï p âaû t âæåü c täú c âäü truyãö n cao hån so våï i viãû c duì ng caï c lãû nh chuyãø n dæî liãû u REP MOV SB cuí a CPU nãú u láú y vê duû våï i træåì ng håü p DMAC 8237A -5 vaì CPU 8088 5MHZthç täú c âäü truyãö n cuí a DMAC cao hån cåî 2 láö n . Sau âáy laì mäü t vê duû sæí duû ng 8237A -5 âãø chuyãø n dæî liãû u giæa 2 vuì ng nhåï . Giaí thiãú t ta phaí i chuyãø n säú mäü t säú byte säú liãû u tæì vuì ng nhåï coï âëa chè laì 10000H sang vuì ng nhåï khaï c coï chè âáö u laì 14000H trong mäü t hãû thäú ng coï så âäö pháö nDMAC vaì CPU dæû a trãn hçnh 8.12. Ta coï thãø duì ng chæång trçnh Mem Trans.asm âãø giaí i quyãú t cäng viãû c naì y . Trong chæång trçnh naì y , âáö u tiãn ta gæí i 4 bit âëa chè cao chäú t U1 , sau âoï ta xoaï maû ch láû t F/L räö i gæí i âëa chè cuí a vuì ng gäú c vaì vuì ng âêch ra caï c thanh ghi tæång æï ng cuí a kãnh o vaì kãnh 1.tiãú p theo ta choü n chãú âäü cho mäù i kãnh . ta phaí i âæa ra tæì âiãö u khiãø n âãø cho DMAC laì m viãû c oqr chãú âäü chuyãø n caí maí ng .Kãnh 0 sau âoï âæåü c cho pheï p hoaû t âäü ng vaì kêch hoaû t âäü ng bàò ng chæång trçnh . trong quaï trçnh chuyãø n dæî liãû u ta kiãø m tra thanh ghi traû ng thaï i âãø duì ng chæång trçnh khi âaû t säú âãú m (TC). • CHÆÅNG TRÇNH Mem Trans.asm m