Tài liệu Bài soạn vi xử lý - Chương 8: Vào /ra dữ liệu bằng dma
9 trang |
Chia sẻ: tranhong10 | Lượt xem: 1200 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Bài soạn vi xử lý - Chương 8: Vào /ra dữ liệu bằng dma, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
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 A8-A15 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 3 2 1 0
X
X
X
X
X
1.Thiãút láûp yãu cáöu 00: choün kãnh 0
0: xoïa theo yãu cáöu 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 .
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
7 6 5 4 3 2 1 0
X
X
X
X
1.Láûp màût naû cho kãnh 3 1: Láûp màût naû cho kãnh 0
0: xoïa màût naû cho kãnh 3 0 Xoïa màût naû cho kãnh 0
1:Láûp màût naû cho kãnh 2 1: láûp màût naû cho kãnh 1
0: Xoïa màût naû cho kãnh 2 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 6 5 4 3 2 1 0
1. Kãnh 0 coï yãu cáöu 1: Kãnh 0 âaût säú âãúm
1: Kãnh 1 coï yãu cáöu 1: Kãnh 1 âaût säú âãúm
1: Kãnh 2 coï yãu cáöu 1: Kãnh 2 âaût säú âãúm
1: Kãnh 3 coï yãu cáöu 1: Kãnh 3 âaût säú âãú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
Các file đính kèm theo tài liệu này:
- chuong 8.doc