CHỈÅNG 8 VO /RA DỈỴ LIÃÛU BÀỊNG DMA 1. Ngun tàõc ca viãûc trao âäøi dỉỵ liãûu våïi thiãút bë ngoải vi bàòng cạch thám nháûp trỉûc tiãúp vo bäü nhåï (DMA) . Trong cạc cạch âiãưu khiãøn viãûc trao âäøi dỉỵ liãûu giỉỵa thiãút bë ngoải vi v hãû vi xỉí l bàòng cạch thàm d trảng thại sàơn sng ca thiãút bë ngoải vi hay bàòng cạch ngàõt bäü vi xỉí l â âỉåc nọi âãún åí cạc chỉång trỉåïc , dỉỵ liãûu thỉåìng âỉåüc chuøn tỉì bäü nhåï qua bäü vi xỉí l âãø räưi tỉì âọ ghi vo thiãút bë ngoải vi hồûc ngỉåüc lải , tỉì thiãút bë ngoải vi nọ âỉåüc âc vo bäü vi xỉí l âãø räưi tỉì âọ âỉåüc chuøn âãún bäü nhåï . vç thãú täúc âäü trao âäøi dỉỵ liãûu phủ thüc ráút nhiãưu vo täúc âäü thỉûc hiãûn ca cạc lãûnh MOV .IN v OUT ca bäü vi xỉí l v do âọ viãûc trao âäøi dỉỵ liãûu khäng thãø tiãún hnh nhanh âỉåc . Trong thỉûc tãú cọ nhỉỵng khi ta cáưn trao âäøi dỉỵ liãûu tháût nhanh våïi thiãút bë ngoải vi : nhỉ khi cáưn âỉa dỉỵ liãûu hiãûn thë ra mn hçnh hồûc trao âäøi dỉỵ liãûu våïi bäü âiãưu khiãøn âéa .trong cạc trỉåìng håüp âọ ta cáưn cọ kh nàng ghi /âc dỉỵ liãûu trỉûc tiãúp våïi bäü nhåï (diret memory acces .DMA- thám nháûp vo bäü nhåï trỉûc tiãúp khäng thäng qua CPU) thç måïi âạp ỉïng âỉåüc u cáưu vãư täúc âäü trao âäøi dỉỵ liãûu .âãø lm âỉåüc âiãưu ny cạc hãû vi xỉí l nọi chung âãưu phi dng thãm mảch chun dủng âãø âiãưu khiãøn viãûc thám nháûp trỉûc tiãúp vo bäü nhåï ( dircet memory access con troller.DMAC) Cọ thãø láúy mäüt vê dủ củ thãø âãø minh hoả âiiã ny .trong khi mäüt mảch DMAC nhỉ 8237A ca inter cọ thãø âiãưu khiãøn viãûc chuøn mäüt byte trong mäüt mng dỉỵ liãûu tỉì bäü nhåï ra thiãút bë ngoải vi chè hãút 4 chu k âäưng häư thç bäü vi xỉí l 8088 phi lm hãút cåỵ 4 chu k : ; säú chu k âäưng häư LAP: MOV AL, (SI );10 OUT PORT ,AL ; 10 INC SI ; 2 LOOP LAP ; 17 ; CÄÜNG:39 chu k Âãø häù tråü cho viãûc trao âäøi dỉỵ liãûu våïi thiãút bë ngoải vi bàòng cạch thám nháûp trỉûc tiãúp vo bäü nhåï ,tải mäùi vi mảch CPU thỉåìng täưn tải chán u cáưu treo HOLD âãø thiãút bë ngoải vi , mäùi khi cọ u cáưu dng bụ cho viãûc trao âäøi dỉỵ liãûu våïi bäü nhåï thç thäng qua chán ny m bạo cho CPU biãút . âãún lỉåüt CPU , khi nhán âỉåüc u cáưu treo thç nọ tỉû treo lãn (tỉû tạch ra khi hãû thäúng bàòng cạch âỉa cạc bit vo trảng thại tråí khạng cao )v âỉa xung HLDA ra ngoi âãø thäng bạo CPU cho phẹp sỉí dủng bụ . Så âäư khäúi ca mäüt hãû vi xỉí l cọ kh 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 ny , khi CPU tỉû tạch ra khi hãû thäúng bàûng tỉû treo (ỉïng våïi vë trê hiãûn thåìi ca cạc cäng tàõc chuøn mảch ) âãø trao quưn sỉí dủng bus cho DMAC phi chëu trạch nhiãûm âiãưu khiãøn ton bäü hoảt âäüng trao âäøi dỉỵ liãûu ca hãû thäúng . âãø lm âỉåüc âiãưu âọ DMAC phi cọ kh nàng tảo ra âỉåüc cạc tên hiãûu âiiã khiãøn cáưn thiãút giäúng nhỉ cạc tên hiãûu ca CPU v bn thán nọ phi l mäüt thiãút bë láûp trçnh âỉåüc (âãø CPU “dàn d ” nọ bàòng cạch âỉa vo cạc tỉì âiãưu khiãøn trỉåïc khi nọ cọ thãø hoảt âäüng âäüc láûp ). Qua trinh hoảt âäüng ca hãû thäúng trãn cọ thãø âỉåüc tọm tàõt nhỉ sau: Khi thiãút bë ngoải vi cọ u cáưu trao âäøi dỉỵ liãûu kiãøu DMA våïi bäü nhåï , nọ âỉa u cáưu DRQ=1 âãún DMAC, DMAC s âỉa u cáưu treo HRQ=1 âãún chán HOLD ca CPU . nhán âỉåüc u cáưu treo , CPU s treo cạc bus ca mçnh v tr låìi cháúp nháûn treo qua tên hiãûu HLDA=1 âãún chán HACK ca DMAC ,DMAC s thäng bạo cho thiãút bë ngoải vi thäng qua tên hiãûu DACK=1 l nọ cho phẹp thiãút bë ngoải vi trao âäøi dỉỵ liãûu kiãøu DMA .khi quạ trçnh DMA kãút thục thç DMAC âỉa ra tên hiãûu HRQ=0. Trong thỉûc tãú täưn tải 3 kiãøu trao âäøi dỉỵ liãûu bàòng cạch thám nháûp trỉûc tiãúp vo bäü nhåï nhỉ sau: + Treo CPU mäüt khong thåìi gian âãø trao âäøi c mng dỉỵ liãûu . +treo CPU âãø trao âäøi tỉìng byte. +táûn dủng thåìi gian khäng dng bus âãø trao âäøi dỉỵ liãûu . ta s láưn lüt giåïi thiãûu qua cạc kiãøu trao âäøi dỉỵ liãûu ny . • Trao âäøi c mät mng dỉỵ liãûu Trong chãú âäü ny CPU bë treo trong sút quạ trçnh trao âäøi mng dỉỵ liãûu .Chãú âäü ny âỉåüc dng khi ta cọ nhu cáưu trao âäøi dỉỵ liãûu våïi äø âéa hồûc âỉa dỉỵ liãûu ra hiãøn thë . cạc bỉåïc th tủc âãø chuøn mäüt mng dỉỵ liãûu tỉì bäü nhåï ra thiãút bë ngoải vi: 1.CPU phi ghi tỉì âiãưu khiãøn v tỉì chãú âäü lm viãûc vo DMAC âãø quy âënh cạch thỉïc lm viãûc , âëa chè âáưu ca mng nhåï , âäü di ca mng nhåï , 2.khi thiãút bë ngoải vi co u cáưu trao âäøi dỉỵ liãûu , nọ âỉa DRQ =1 âãún DMAC . 3.DMAC âỉa ra tên hiãûu HRQ âãún chán HOLD ca CPU âãø u cáưu treo CPU .tên hiãûu HOLD phi åí mỉïc cao cho âãún hãút quạ trçnh trao âäøi dỉỵ liãûu . 4. nháûn âỉåüc u cáưu treo ,CPU kãút thục chu k bus hiãûn tải , sau dọ nọ treo cạ bus ca mçnh v âỉa ra tên hiãûu HLDA bạo cho DMAC âỉåüc ton quưn sỉí dủng bus. 5.DMAC âỉa ra xung DACK âãø bạo cho thiãút bë ngoải vi biãút l cọ thãø bàõt âáưu trao âäøi dỉỵ liãûu . 6.DMAC bàõt âáưu chuøn dỉỵ liãûu tỉì bäü nhåï ra thiãút bë ngoải vi bàòng cạch âỉa âëa chè ca byte âáưu ra bus âëa chè v âỉa ra tên hiãûu MEMR=O âãø âc mäüt byte tỉì bäü nhåï ra bus dỉỵ liãûu .tiãúp âọ DMAC âỉa ra tên hiãûu IOW =0 âãø ghi âỉa dỉỵ liãûu ra thiãút bë ngoải vi.DMAC sau âọ gim bäü âãúm säú byte cn phi chuøn , cáûp nháût âëa chè ca byte cáưn âc tiãúp , v làûp lải cạ c âäüng tạc trãn cho tåïi khi hãút säú âãúm (TC). 7. quạ trçnh DMA kãút thục , DMAC cho ra tên hiãûu HRQ=0 âãø bạo cho CPU biãút âãø CPU dnh lải quưn âiãưu khiãøn hãû thäúng . • Treo CPU âãø trao âäøi tỉìng byte . Trong cạch trao âäøi dỉỵ liãûu ny CPU khäng bë treo láu di trong mäüt láưn nhỉng thènh thong lải bë treo trong khong thåìi gian ráút ngàõn â âãø trao âäøi 1 byte dỉỵ liãûu (CPU bë láúy máút mäüt säú chu k âäưng häư ). Do bë láúy âi mäüt säú chu k âäưng häư nhỉ váûy lãn täúc âäü thỉûc hiãûn mäüt cäng viãûc no âọ ca CPU chè bë suy gim chỉï khäng dỉìng lải . cạch hoảt âäüng cng tỉång tỉû nhỉ pháưn trỉåïc , chè cọ âiãưu mäùi láưn DMAC u cáưu treo CPU thi chè cọ mäüt byte âỉåüc trao âäøi • Táûn dủng thåìi gian CPU khäng dng bus âãø trao âäøi dỉỵ liãûu . Trong cạch trao âäøi dỉỵ liãûu ny , ta phi cọ cạc logic phủ bãn ngoi cáưn thiãút âãø phạt hiãûn ra cạc chu k xỉí l näüi bäü ca CPU (khäng dng âãún bus ngoi )v táûn dủng cạc chu k âọ vo viãûc trao âäøi dỉỵ liãûu giỉỵa thiãút bë ngoải vi våïi bäü nhåï . Trong cạch lm ny thç DMAC v CPU ln phiãn nhau sỉí dủng bus v viãûc thám nháûp trỉûc tiãúp bäü nhåï kiãøu ny khäng nh hỉåíng gç tåïi hoảt âäüng bçnh thỉåìng ca CPU. 2.DMAC 8237A -5 trong hãû vi xỉí l 8088. 2.1.tên hiãûu HOLD v HLDA trong CPU 8088. Hai tên hiãûu dng âãø u cáưu treo v tr låìi cháúp nháûn u cáưu treo trong chãú âäü MIN ca CPU 8088 l HLDA.quan hãû giỉỵa hai tên hiãûu âọ âỉåüc thãø hiãûn trãn hçnh 8.2. Tên hiãûu u cáưu treo HOLD âỉåüc lạy máùu tải sỉåìn lãn ca .xung âäưng häư trỉåïc chu k T4 hồûc T1. Khi nháûn âỉåüc u cáưu treo .CPU kãút thục chu k bus hiãûn tải , âỉa ra tên hiãûu HLDA v treo cạc tên hiãûu ca bus .busd v bus c (trỉì tên hiãûu ALE=O)âãø nhỉåìng quưn sỉí dủng cạc bus ny choDMAC . Cáưn lỉu ràòng âáưu vo HOLD cọ mỉïc ỉu tiãn cao hån cạc âáưu vo u cáưu ngàõt INTR v MNI nhỉng lải tháúp hån so våïi âáưu vo RESET. Âãø âm bo viãûc âäưng bäü tên hiãûu u cáưu treo ca thiãút bë ngoải vi våïi tên hiãûu âäưng häư ca hãû thäúng trỉåïc khi âỉa vo chán HOLD ca 8088 ngỉåìi ta thỉåìng dng mảch trãn hçnh 8.3. 2.2. Mảch DMAC 8237A -5ca Inter Trỉåïc khi trçnh by k vãư mảch DMAC 8237A ca Inter ta nọi qua vãư cạc thay âäøi cáưn cọ trong nhọm tên hiãûu âiãưu khiãøn ghi/âc ca hãû vi xỉí l våïi CPU 8088 åí chãú âäü MIN âãø sỉí dủng âỉåüc mảch 8237A lm DMAC Nhỉ trãn hçnh 8.1 â thãø hiãûn tỉång âäúi r , âãø thãø hiãûn âỉåüc chỉïc nàng DMA trong hãû ,bus âiãưu ca hãû vi xỉí l 8088 phi âỉåüc thay âäøi chụt êt âãø cọ âỉåüc cạc tên hiãûu cáưn thiãút cho DMAC v cạc bäü pháûn lkhạc hoảt âäüng .âọ chinhd l viãûc cạc tên hiãûu RD.WD v IO/M âỉåüc sỉí dủng âãø ta cạc tên hiãûu âiãưu khiãøn måïi IOR.IOW .MEMR.MEMW.tỉång thêch våïi cạc tên hiãûu ca DMAC 8237A -5. Hçnh 8.4 trçnh by mäüt kh nàng tảo ra cạc tên hiãûu âiãưu khiãøn nhỉ váûy dng mảch däưn kãnh 74LS257 . trong 74LS 257 gäưm 4 mảch däưn kãnh 2 âỉåìng . cạc tên hiãûu RD.WD v IO/M âỉåüc bäú trê sao cho khi âáưu vo ca mảch 74LS 257 l B=1 thç ta lm viãûc våïi thiãút bë ngoải nháûp våïi cạc xung IORv IOW ,ngỉåüc lải khi B=0 thç ta lm viãûc våïi bäü nhåï våïi cạc xung MEMR.MEMW. Trãn hçnh 8.4 ta cn tháúy tên hiãûu AEN ca DMAC cng âỉåüc dng âãø khoạ cạc tên hiãûu âiãưu khiãøn måïi do CPU tảo ra khi DMAC â nàõm quưn âiãưu khiãøn bus. Trong chãú âäü truưn kiãøu âc thç dỉỵ liãûu âỉåüc âc tỉì bäü nhåï räưi âỉa ra thiãt bë ngoải vi. Trong chãú âäü truưn kiãøu ghi thç dỉỵ liãûu âỉåüc âc tỉì thiãút bë ngoải vi räưi âỉa vo bäü nhåï . khi 8237A -5 lm viãûc åí chãú âäü kiãøm tra thç tuy âëa chè âỉåüc âỉa âãún bäü nhåï nhỉng DMAC khäng tảo ra cạc xung âiãưu khiãøn âãø tiãún hnh cạc thao tạc ghi/âc bäü nhåï hay thiãút bë ngoải vi . Ngoi ra mảch 8237 A-5 cn häù tråü viãûc trao âäøi dỉỵ liãûu giỉa cạc vng khạc nhau ca bäü nhåï v cng chè riãng trong chãú âäü lm viãûc ny , dỉỵ liãûu cáưn trao âäøi måïi phi 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 ny ta cọ thãø âc âỉåüc dỉỵ liãûu âọ trong thanh ghi tảm). Så âäư khäúi cáúu trục bãn trong ca mảch 8237A -5 âỉåüc thãø hiãûn trãn hçnh 8.5 Mả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 cọ täúc âäü truưn 1 MB/s cho mäùi kãnh , mäüt kãnh co thãø truưn mät mng cọ âäü di 64KB . • Giåïi thiãûu cạc chán tên hiãûu ca 8237A -5 +CLK[I]:tên hiãûu âäưng häư ca mảch .âãø mảch cọ thãø lm viãûc täút våïi hãû 8088 thç tên hiãûu CLK ca hãû thäúng thỉåìng âỉåüc âo trỉåïc khi âỉa vo CLK ca 8237A-5 +CS {I}:TÊN HIÃÛU CHN V CA 8237a-5 chán ny thỉåìng âỉåüc näúi våïi âáưu ra ca bäü gii m âëa chè .bäü gii m âëa chè ny khäng cáưn dng âãún âáưu vo IO/M vç bn thán DMAC â âỉåüc cung cáúp cạc xung âiãưu khiãøn måïi ca hãn thäúng . +RESET{I}:tên hiãûu näúi våïi tên hiãûu khåíi âäüng ca hãû thäúng . khi mảch 8237A -5 ÂỈÅÜC KHÅÍI ÂÄÜNG RIÃNG THANH GHI MÀÛT LẢ ÂỈÅÜC LÁÛP CN CẠC BÄÜ PHÁÛN SAU ÂAY BË XOẠ : thanhghi lãûnh thanh ghi trảng thại thanh ghi u cáưu DMA thanh ghi tảm thåìi mảch láût byte âáưu /byte cúi (Firsst/Last) +READY{I}:tên hiãûu sàơn sng , näúi våïi READY ca hãû thäúng âãø gáy ra cạc chu k âåüi âäúi våïi cạc thiãút bë ngoải vi v cạc bäü nhåï cháûm . +HLDA {I}:tên hiãûu bạo cháúp nhán u cáưu treo tỉì CPU +-DRQ 3 {I}:cạc tên hiãûu u cáưu treo tỉì thiãút bë ngoải vi . cỉûc tênh ca cạc tên hiãûu ny cọ thãø láp trçnh âỉåüc . sau khi khpåíi âäüng cạc tên hiãûuny âỉåüc âënh nghé a l cạc tên hiãûu kêch hoảt mỉïc cao . +DBO-BD7{I,O}:tên hiãûu hai chiãưu näúi âãún bus âëa chè v bus dỉỵ lliãûu ca hãû thäúng cạc tên hiãûu ny âỉåüc dng khi láp trçnh cho DMAC v khi DMAC hoảt âäüng cạc chán ny chỉïa 8 bit âëa chè cao A8-A15 ca mng nhåï dỉỵ liãûu lëch cáưn chuøn . trong chãú âäü chuøn dỉỵ liãûu giỉỵa cạc vng ca bäü nhåï tải cạc chán ny cọ cạc dỉỵ liãûu âỉåüc chuøn . +IOR {I,O}V IOW{I,O}: l cạc chán tên hiãûu hai chiãưu dng trong khi láûp trçnh cho DMAC v trong cạc chu k âc v ghi . +EOP{I,O}:L TÊN HIÃÛU HAI CHIÃƯU .KHI L ÂÁƯU VO NỌ ÂỈÅÜC DNG ÂÃØ BÀÕT BÜC DMAC kãút thục quạ trçnh DMA .khi l âáưu ra nọ âỉåüc dng âãø bạo cho bãn ngoi biãút mäüt kãnh no âọ â chuøn xong säú byte theo u cáưu , luc nay nọ thỉåìng dng nhỉ mäüt u cáưu ngàõt âãø CPU xỉí l viãûc kãút thục quạ trinh DMA +A0-A3{I,O}:l cạc tên hiãûu hai chiãưu dng âãø chn cạc thanh ghi trong 8237A 5 khi láûp trçnh v khi âc(âáưu vo), hồûc âãø chuqạ 4 bit âëa chè tháúp nháút ca âëa chè mng nhåï cáưn chuøn (âáưu ra) A4-A7[0]:cạc chán âãø chỉïa 4 bêt âëa chè pháưn cao trong byte âëa chè tháúp ca âëa chè mng nhåï cáưn chuøn HRQ[0]:tên hiãûu u cáưu treo âãún CPU. Tên hiãûu ny thỉåìng âỉåüc âäưng bäü våïi tên hiãûu CLK ca hãû thäúng räưi âỉåüc âỉa âãún chán HOLD ca 8088. DACK 0 DACK 3 [0]: l cạc tên hiãûu tr låìi cạc u cáưu DMA cho cạc kãnh. Cạc tên hiãûu ny cọ thãø âỉåüc láûp trçnh âãø hoảt âäüng theo mỉïc tháúp hồûc mỉïc cao.sau khi khåíi âäüng, cạc tê hiãûu ny âỉåüc âënh nghéa l cạc xung têch cỉûc tháúp. AEN[0]: tên hiãûu cho phẹp mảch näúi vo DB0-DB7 chäút láúy âëa chè ca vng nhåï cáưn trao âäøi theo kiãøu DMA. Tên hiãûu ny cng cho phẹp cáúm cạc mảch âãûm bụ âëa chè v dỉỵ liãûu hồûc mảch tảo tên hiãûu âiãưu khiãøn ca CPU näúi vo cạc bụ tỉån ỉïng khi DMAC hoảt âäüng. ADSTB[0]: xung cho phẹp chäút cạc bit âëa chè pháưn cao A8- A15 cọ màût trãn DB0-DB7. MM[0] v MEMỈ[0]: l cạc chán tên hiãûu do DMAC tảo ra v dng khi âc/ghi bäü nhåï trong khi hoảt âäüng. Cạc thanh ghi bãn trong ca DMAC 8237A-5 Cạc thanh ghi bãn trong DMAC 8237A-5 âỉåüc CPU 8088 chn âãø lm viãûc nhåì cạc bit âëa chè tháúp A0-A3. Bng 8.1 chè ra cạch thỉïc chn ra cạc thanh ghi âọ. Cạc thanh ghi trong bn trãn cọ thãø âỉåüc ghi.âcj hồûc chè ghi vo v chụng chỉïa cạc thäng tin khạc nhau liãn quan âãún cạch thỉïc lm viãûc v cạc thäng säú ca mäùi kãnh DMA. Trong bng 8.2 v 8.3 liãtë kã cạc thanh ghi trãn theo cạc quan âiãøm ỉïng dủng khạc nhau âãø dãù tra cỉïu âëa chè cho chụng khi láûp trçnh våïi DMAC 8237A-5 Bng 8.1. Âëa chè cạc thanh ghi bãn trong ca 8237A5 Bng8.2. Âëa chè cạc thanh ghi trong âãø ghi/ âc âëa chè v ssäú tỉì cáưn chuøn. Bng 8.3.Âëa chè cạc thanh ghi cho âiãưu khiãøn v trảng thại. Ta s giåïi thiãûu qua cạc âàûc âiãøm ca mäüt säú trong cạc thanh ghi kãø trãn. Thanh ghi âëa chè hiãûn thåìi: Âáy l thanh ghi 16 bêt dng âãø chỉïa âëa chè ca vng nhåï phi chuøn.Mäùi kãnh cọ riãng thanh ghi y âãø chỉïa âëa chè .Khi 1 byte âỉåüc truưn âi. Cạc thanh ghi ny tỉû däüng tàng hay gim tu theo trỉåïc nọ âỉåüc láûp trçnh nhỉ thãú no. Thanh ghi säú âãúm hiãûn thåìi: Thanh ghi 16 bêt ny dng âãø chỉïá säú byte m kãnh phi truưn( nhiãưu nháút l 16KB). Mäùi kãnh cọ thanh ghi säú byte ca mçnh. Cạc thanh ghi ny âỉåüc ghi bàòng säú âãúm nh nháút hån 1 so våïi säú byte thỉûc chuøn. Thanh ghi âëa chè cå såí v thanh ghi säú âãúm cå såí: Cạc thanh ghi ny âỉåüc dng âãø chỉïa âëa chè v säú âeems cho mäùi kãnh khi chãú âäü tỉû âäüng khåíi âáưu âỉåüc sỉí dủng. Trong chãú âäü ny mäüt quạ trçnh DMA kãút thục thç cạc thanh ghi âëa chè hiãûn thåìi v säú âãúm hiãûn thåìi âỉåüc nảp lải giạ trë c láúy tỉì thanh ghi âëa chè cå såí v thanh ghi säú âãúm cå såí Khi cạc thanh ghi âëa chè hiãûn thåìi v säú âãúm hiãûn thåìi âỉåüc láûp trçnh thç cạc thanh ghi âëa chè cå såí v thanh ghi säú âãúm cå såí cng âỉåüc láûp trçnh báút kãø chãú däü tỉû khåíi âáưu cọ âỉåüc sỉí dủng hay khäng. Thanh ghi lãûnh: Thanh ghi ny dng âãø láûp trçnh cho DMAC. Nọ bë xoạ khi khåíi âäüng hồûc khi ta sỉí dủng lãûnh xoạ ton bäü cạc thanh ghi. Dảng thỉïc ca thanh ghi lãûnh âỉåüc biãøu diãøn trãn hçnh 8.6. Cạc bêt ca thanh ghi ny quút âënh cạc phỉång thỉïc lm viãûc khạc nhau ca 8237A-5. Ta s gii thêch sau âáy nghéa ca cạc bit. Bit D0 cho phẹp DMAC dng kãnh 0 v kãnh 1 âãø chuøn dỉỵ liãûu giỉỵa 2 vng nhåï.Âëa chè ca byte dỉỵ liãûu åí vng âêch âỉåüc chỉïa trong thanh ghi âëa chè ca kãnh 1. Säú byte chuøn âỉåüc âãø trong thanh ghi âãúm ca kãnh 1.Byte cáưn chuøn lục âáưu âỉåüc âc tỉì vng gäúc vo thanh ghi tảm âãø räưi tỉì âọ nọ âỉåüc gỉíi âãún vng âêch trong bỉåïc tiãúp theo( hoảt âäüng nhỉ lãûnh MOVSB nhỉng våïi täúc âäü cao). Bit D1=1 dng âãø cho phẹp kãnh 0 giỉỵ ngun âëa chè trong chãú âäü truưn giỉỵ liãûu giỉỵa 2 vng nhåï. Âiãưu ny khiãún cho ton bäü cạc ä nhåï vng âêch âỉåüc nảp cng mäüt byte dỉỵ liãûu. Bit D2 cho phẹp DMAC hoảt âäüng hay khäng. Bit D3 quút âënh byte cáưn chuøn âỉåüc truưn våïi 4hay 2 chu kç âäưng häư. Bit D4 cho phẹp chn 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) hồûc chãú â ỉu tiãn ln phiãn( kãnh 0 lục âáưu cọ mỉïc ỉu tiãn cao nháút. Sau khi kãnh ny âỉåüc chn âãø chuøn dỉỵ liãûu thç nọ âỉåüc nháûn mỉïc ỉu tiãn tháúp nháút. Kãnh 1 lải tråí thnh kãnh cọ mỉïc ỉu tiãn cao nháút ) Bit D5 cho phẹp chn thåìi gian ghibçnh thỉåìng hay kẹo di cho tiãút bë ngoải vi cháûm. Cạc bit D6 v D7 cho phẹp chn cỉûc tênh têch cỉûc ca cạc xung DRQ0-DRQ4 v DACK0- DACK4. + thanh ghi chãú âäü: dng âàût chãú âäü lm viãûc cho cạc kãnh ca DMAC. Mäùi kãnh ca DMAC cọ mäüt thanh ghi chãú â riãng.Dảng thỉïc ca thanh ghi chãú âäü âỉåüc biãøu diãøn trãn hçnh 8.7. Trong chãú âäü DMA theo u cáưu. DMAC tiãún hnh chuøn dỉỵ liãûu cho âãún khi cọ tên hiãûu EOP tỉì bãn ngoi hồûc cho âãún khi khäng cn u cáưu DMA nỉỵa(DRQ tråí nãn khäng têch cỉûc) Trong chãú âäü DMA chuøn tỉìng byte, chỉìng no váùn cn u cu DMA(DRQ váùn l têch cỉûc.) thç DMAC âỉa ra HRQ=0 trong thåìi gian 1 chu kç bus sau mäùi láưn chuøn sang 1 byte. Sau âọ nọ lải âỉa ra HRQ=1. Cỉï nhỉ váûy DMAC v CPU ln phiãn nhau xỉỵ dủng bus cho âãún khi âãúm hãút(TC) Trong chãú âäü DMA chuøn c mng, c mäüt mng gäưm mäüt säú byte bàòng näüi dung bäü âãúm âỉåüc chuøn liãưn 1 lục. Chán u cáưu chuøn dỉỵ liãûu DRQ khäng cáưn phi giỉỵ âỉåüc åí mỉïc têch cỉûc sút trong quạ trçnh chuøn. Chãú âäü näúi táưn âỉåüc dng khi cọ nhiãưu bäü DMAC.âỉåüc dng trong hãû thäúng âãø måí räüng säú kãnh cọ thãø u cáưu DMA. + Thanh ghi u cáưu: u cáưu DMA cọ thãø âỉåüc thiãút láûp/ xoạ theo mún bàòng chỉång trçnh. Âiãưu ny ráút cọ låüi khi ta mún chuøn dỉỵ liãûu giỉỵa cạc vng khạc nhau ca bäü nhåï lục ny cạc kãnh liãn quan phi âỉåüc láûp trçnh åí chãú â chuøn c mng. Dảng thỉïc ca thanh ghi u cáưu âỉåüc biãøu diãøn trãn hçnh 8.8 7 6 5 4 3 2 1 0 X X X X X 1.Thiãút láûp u cáưu 00: chn kãnh 0 0: xọa theo u cáưu 01: chn kãnh 1 10: chn kãnh 2 11: chn kãnh 3 Hçnh 8.8 dảng thỉïc ca thanh ghi u cáưu + Thanh ghi màût nả riãng cho tỉìng kãnh: bàòng thanh ghi ny ta cọ thãø láûp trçnh âãø cáúm (cho Bit màût nả tỉång ỉïng = 1) thay cho phẹp hoảt âäüng (cho Bit màût nả tỉång ỉïng = 0) âäúi våïi tỉìng kãnh mäüt . Dảng thỉïc ca thanh ghi màût nả riãng l cho tỉìng kãnh âỉåüc biãøu diãùn trãn hçnh 8.9 . + Thanh ghi màût nả täøng håüp: våïi thanh ghi ny ta cọ thãø láûp trçnh âãø cáúm (cho Bit màût nả tỉång ỉïng = 1) thay cho phẹp hoảt âäüng (cho Bit màût nả tỉång ỉïng = 0) âäúi våïi tỉìng kãnh chè bàòng mäüt lãûnh . Dảng thỉïc ca thanh ghi màût nả 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 nả 00: chn kãnh 0 0: xọa theo màût nả 01: chn kãnh 1 10: chn kãnh 2 11: chn kãnh 3 (X: khäng quan tám) Hçnh 8.9. Dảng thỉïc ca thanh ghi màût nả riãng cho mäùi kãnh 7 6 5 4 3 2 1 0 X X X X 1.Láûp màût nả cho kãnh 3 1: Láûp màût nả cho kãnh 0 0: xọa màût nả cho kãnh 3 0 Xọa màût nả cho kãnh 0 1:Láûp màût nả cho kãnh 2 1: láûp màût nả cho kãnh 1 0: Xọa màût nả cho kãnh 2 0: xọa màût nả cho kãnh 1 Hçnh 8.10. Dảng thỉïc ca thanh ghi màût nả täøng håüp. - Thanh ghi trảng thại : Thanh ghi ny cho phẹp xạc âënh trảng thại ca cạc kãnh trong DMAC. Kãnh no â trãưn xong (âảt säú âãúm. TC) kãnh no âang cọ u cáưu DMA âãø trao âäøi dỉỵ liãûu. Khi mäüt kãnh no âọ âảt TC. Kãnh âọ s tỉû âng bë cáúm Dảng thỉïc ca thanh ghi trảng thại âỉåüc biãøu diãùn trãn hçnh 8.11. • Cạc lãûnh âàûc biãût cho DMAC 8237A - 5 Cọ 3 lãûnh âàûc biãût âãø âiãưu khiãøn hoảt âäüng ca DMAC 8237A - 5 . Cạc lãûnh ny chè thỉûc hiãûn bàòng cạc lãûnh OUT våïi cạc âëa chè cäøng xạc âënh thç theo thanh ghi m khäng cáưn âãún giạ trë củ thãø ca thanh ghi AL . 7 6 5 4 3 2 1 0 1. Kãnh 0 cọ u cáưu 1: Kãnh 0 âảt säú âãúm 1: Kãnh 1 cọ u cáưu 1: Kãnh 1 âảt säú âãúm 1: Kãnh 2 cọ u cáưu 1: Kãnh 2 âảt säú âãúm 1: Kãnh 3 cọ u cáưu 1: Kãnh 3 âảt säú âãúm Hçnh 8.11. Dảng thỉïc ca thanh ghi trảng thại. + Lãûnh xọa mảch láût byte âáưu/byte cúi (First/Lạt, F/L) : F/L l mäüt mảch láût bãn trong DMAC âãø chè ra byte no trong cạc thanh ghi 16 bit âãø chè ra byte no trong cạc thanh ghi 16bit (thanh ghi âëa chè hồûc thanh ghi säú âãúm âỉåüc chn lm viãûc .nãúu F/L=1 thi säú âọ l MSB , cn nãúu F/L=O ) thç säú âọ l LSB.mảch láût F/L tỉû âäüng thay âäøi trảng thại khi ta ghi /âc cạc thanh ghi âọ . khi khåíi âäüng xong thç F/L=O lãûnh xoạ ton bäü cạc thanh ghi : lãûnh ny cọ tạc âäüng nhỉ thao tạc khåíi âäüng . táút c cạc thanh ghji âãưu bë xoạ riãng thanh ghi màût nả täøng håüp thç âỉåüc láûp âãø cáúm cạc u cáưu trao âäøi dỉỵ liãûu . lãûnh xoạ thanh ghi màût nả täøng håüp :lãûnh ny cho phẹp cạc kãnh ca DMAC bàõt âáưu u cáưu trao âäøi dỉỵ liãûu . • láûp trçnh cho cạc thanh ghi âëa chè v thanh ghi säú âãúm: viãûc láûp trçnh cho cạc thanh ghi âëa chè v thanh ghi säú âãúm âỉåüc thỉûc hiẻn riãng cho mäùi kãnh . cáưn phi âënh trỉåïc giạ trë logic ca F/L âãø thao tạc chênh xạc âỉåüc våïi LSB v MSB ca cạc thanh ghi trãn . ngoi ra cn phi cáúm cạc u cáưu DMA ca cạc kãnh trong khi láûp trçnh cho chụng. Cọ thãø tn theo cạc bỉåïc sau âáy âãø láûp trçnh cho DMAC 8237A -5: + xoạ màût láût F/L +cáúm cạc u cáưu ca cạc kãnh +ghi LSB räưi MSB ca thanh ghi âëa chè +ghi LSB räưi MSB ca thanh ghi säú âãúm . • Näúi DMAC 8237A -5 våïi CPU 8088 åí chãú âäü MIN Viãûc phäúi ghẹp mảch 8237A-5 våïi 8088 âỉåüc thãø hiãûn trãn hçnh 8.12 Tên hiãûu ca 8237A AEN-=O khi CPU kiãøm soạt hoảt âäüng ca ton hãû . cạc bit âëa chè A 16 -A 19 v AO-A7 s âỉåüc chäút båíi U1 v U3 âãø âỉa ra bit âëa chè . cạc tên hiãûu âiãưu khiãøn dáøn xút tỉì CPU cng âỉåüc âỉa ra bus âiãưu khiãøn båíi mảch däưn kãnh U5 (74LS257). KHI DMAC nàõm quưn chè huy hãû thäúng thç AEN =1 s cáúm cạc chäút U3 vU4 måí thäng tỉì CPU ra bus . nhỉng lải cho phẹp chäút U2 v måí chäút U4 ca DMAC âãø cung cáúp cạc bit âëa chè A16-A19 v A8- A15.cạc bit âëa chè khạc l A0-A7 v cạc tên hiãûu MEMR.MEMR.IOR.IOW s âỉåüc láúy trỉûc tiãúp tỉì DMAC. Xung ADSSTB s cho phẹp måí mảch chäút U4 âãø âỉa cạc bit âëa chè A8-A15 . âỉåüc chäút tỉì bit D ca 8237A -5. Vç DMAC 8237A -5 chè cọ kh nàng cung cáúp cạc bit âëa chè A16-A19 âỉåüc ghi vo chäút U2 (74LS373) nhåì lãûnh OUT våïi âëa chè cäøng âỉåüc gii m nhåì mảch gii m âëa chè U6 , mảch gii m âëa chè ny âäưng thåìi cng cung cáúp xung chn v cho 8237A -5 .trãn hçnh 8.12 âãø cho viãûc gii thêch tråí nãn âån gin måïi chè biãøu diãùn cạc cạch tảo ta âëa chè cao nháút cho mäüt kãnh ta cọ thãø dng vi mảch chun dủng 74LS 670 âãø lm thanh ghi trang DMA cho c 4 kãnh ca DMAC . tat nhiãn ta phi näúi lải cạc tên hiãûu cho âụng . • Mäüt vê dủ truưn dỉỵ liãûu giỉa hai vng nhåï Viãûc dng chãú â DMA âãø chøyn dỉỵ liãûu giỉỵa cạc vng klhạc nhau ca bäü cho phẹp âảt âỉåüc täúc âäü truưn cao hån so våïi viãûc dng cạc lãûnh chuøn dỉỵ liãûu REP MOV SB ca CPU nãúu láúy vê dủ våïi trỉåìng håüp DMAC 8237A -5 v CPU 8088 5MH Z thç täúc âäü truưn ca DMAC cao hån cåỵ 2 láưn . Sau âáy l mäüt vê dủ sỉí dủng 8237A -5 âãø chuøn dỉỵ liãûu giỉa 2 vng nhåï . Gi thiãút ta phi chuøn säú mäüt säú byte säú liãûu tỉì vng nhåï cọ âëa chè l 10000H sang vng nhåï khạc cọ chè âáưu l 14000H trong mäüt hãû thäúng cọ så âäư pháưnDMAC v CPU dỉûa trãn hçnh 8.12. Ta cọ thãø dng chỉång trçnh Mem Trans.asm âãø gii quút cäng viãûc ny . Trong chỉång trçnh ny , âáưu tiãn ta gỉíi 4 bit âëa chè cao chäút U1 , sau âọ ta xoạ mảch láût F/L räưi gỉíi âëa chè ca vng gäúc v vng âêch ra cạc thanh ghi tỉång ỉïng ca kãnh o v kãnh 1.tiãúp theo ta chn chãú âäü cho mäùi kãnh . ta phi âỉa ra tỉì âiãưu khiãøn âãø cho DMAC lm viãûc oqr chãú âäü chuøn c mng .Kãnh 0 sau âọ âỉåüc cho phẹp hoảt âäüng v kêch hoảt âäüng bàòng chỉång trçnh . trong quạ trçnh chuøn dỉỵ liãûu ta kiãøm tra thanh ghi trảng thại âãø dng chỉång trçnh khi âảt säú âãúm (TC). • CHỈÅNG TRÇNH Mem Trans.asm m . CPU. 2.DMAC 82 37A -5 trong hãû vi xỉí l 80 88. 2.1.tên hiãûu HOLD v HLDA trong CPU 80 88. Hai tên hiãûu dng âãø u cáưu treo v tr låìi cháúp nháûn u cáưu treo trong chãú âäü MIN ca CPU 80 88 l HLDA.quan. âäü MIN Vi ûc phäúi ghẹp mảch 82 37A-5 våïi 80 88 âỉåüc thãø hiãûn trãn hçnh 8. 12 Tên hiãûu ca 82 37A AEN-=O khi CPU kiãøm soạt hoảt âäüng ca ton hãû . cạc bit âëa chè A 16 -A 19 v AO-A7 s âỉåüc. ghi bãn trong ca DMAC 82 37A-5 Cạc thanh ghi bãn trong DMAC 82 37A-5 âỉåüc CPU 80 88 chn âãø lm vi ûc nhåì cạc bit âëa chè tháúp A0-A3. Bng 8. 1 chè ra cạch thỉïc chn ra cạc thanh ghi âọ. Cạc thanh