微型計(jì)算機(jī)原理與接口技術(shù)-第7章_第1頁
微型計(jì)算機(jī)原理與接口技術(shù)-第7章_第2頁
微型計(jì)算機(jī)原理與接口技術(shù)-第7章_第3頁
微型計(jì)算機(jī)原理與接口技術(shù)-第7章_第4頁
微型計(jì)算機(jī)原理與接口技術(shù)-第7章_第5頁
已閱讀5頁,還剩68頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第7章

輸入/輸出系統(tǒng)

7.1輸入/輸出系統(tǒng)概述

一.概述

1.接口電路的作用

CPU數(shù)據(jù)→

輸出接口電路→

輸出設(shè)備

CPU←

輸入接口電路←

輸入設(shè)備數(shù)據(jù)接口:是CPU與外部設(shè)備交換信息的中轉(zhuǎn)站

I/O設(shè)備與總線之間的連接輸出接口電路輸出設(shè)備輸入接口電路輸入設(shè)備系統(tǒng)總線I/O接口電路2.接口電路的功能

應(yīng)具有數(shù)據(jù)暫存功能

應(yīng)有端口地址譯碼器

(便于使用IN,OUT指令讀寫數(shù)據(jù))

與外設(shè)之間有聯(lián)絡(luò)功能

有中斷管理能力

有數(shù)據(jù)轉(zhuǎn)換功能(并→

串,串→

并)3.關(guān)于端口的概念

“端口”是接口電路中,能與CPU交換信息(使用IN,OUT)的寄存器。

端口分類:數(shù)據(jù)口:存放CPU向外設(shè)輸出或外設(shè)輸入的數(shù)據(jù)??刂瓶?存放控制信息--控制接口電路、外設(shè)的工作。狀態(tài)口:存放狀態(tài)信息反映外設(shè)的狀態(tài)。注意:接口電路必須具有數(shù)據(jù)口。注:每個(gè)端口,系統(tǒng)都為它編了一個(gè)地址,系統(tǒng)只要給出某個(gè)地址,通過譯碼電路,就能找到相應(yīng)的I/O接口電路中的端口寄存器。問題:系統(tǒng)給出的地址是內(nèi)存單元地址還是I/O端口寄存器的地址?解決方案:合理安排I/O端口寄存器的編址方式。4.端口的編址方式

存儲器映像方式把端口和存儲單元等同看待,統(tǒng)一編址。特點(diǎn):凡訪問存儲單元的指令都可訪問

I/O端口,端口地址占用存儲空間。

I/O端口獨(dú)立編址特點(diǎn):I/O端口不占用存儲空間,

CPU要有專用的I/O指令。5.PC系列機(jī)的端口編址

PC系列機(jī)采用端口獨(dú)立編址;從8088~奔騰微處理器,設(shè)計(jì)時(shí)用A15~A0

低16位地址尋址I/O端口;所以,CPU的端口尋址能力為216=65536個(gè);基于微處理器的PC系列,實(shí)際使用A9~A0

做I/O地址;所以,PC系列機(jī)I/O端口地址最多為

210=1024個(gè)。這1024個(gè)口地址,系統(tǒng)本身(主板上,以及常規(guī)I/O接口)已經(jīng)占用了一部分。

端口地址(I/O空間)沒有分段的概念。

二.最常用的I/O指令1.直接尋址I/O指令設(shè)n為8位端口地址INAL,n;口地址為n的端口中取數(shù)→

ALOUTn,AL;AL內(nèi)容→口地址為n的端口寄存器INAX,n;(n)→

AL,(n+1)→

AHOUTn,AX;AL→

n口,AH→

n+1口如:INAL,61HOUT61H,AL2.DX間址的I/O指令

當(dāng)口地址n>8位二進(jìn)制數(shù)時(shí),用DX間址注意:I/O指令只能在端口和AL,AX,EAX之間交換信息,用DX間址,但不能使用方括號,

即不能寫成:INAL,[DX]。INAL,DX;[DX]的端口內(nèi)容→

ALOUTDX,AL;AL→[DX]的端口寄存器INAX,DX;[DX]→

AL,[DX+1]→

AHOUTDX,AX;AL→

[DX],AH→

[DX+1]

的端口寄存器如:MOVDX,3F8HINAL,DX;從3F8H端口取數(shù)→

AL7.2微機(jī)系統(tǒng)與外設(shè)交換信息的方式微機(jī)系統(tǒng)與I/O端口的信息交換有四種方式:

無條件傳送查詢方式中斷方式DMA方式采用何種方式與接口的硬件電路有直接關(guān)系1.無條件傳送

輸入接口:八個(gè)三態(tài)門地址譯碼器IOR數(shù)據(jù)線外設(shè)8入出控控=0,出=入控=1,出為高阻入出控入出控控=1,出=入控=0,出為高阻…執(zhí)行IN指令之前,外設(shè)數(shù)據(jù)已經(jīng)準(zhǔn)備好。

輸出接口鎖存器地址譯碼器IOW數(shù)據(jù)線外設(shè)8

QCPD…...D7D0執(zhí)行OUT指令時(shí):AL內(nèi)容→

數(shù)據(jù)線,口地址→

地址線上,IOW=低,把數(shù)據(jù)鎖存到鎖存器中。【例】

假設(shè)微機(jī)系統(tǒng)外擴(kuò)了6位共陰極數(shù)碼管電路,要求每隔一秒完成一次“8”字左移,循環(huán)往復(fù),直到主機(jī)鍵盤按下任意鍵時(shí)停止。h共陰結(jié)構(gòu)abcdefghcom對應(yīng)關(guān)系(200H選中)D7-D0(201H選中)D0D7D6D5D4D3D2D1abcdefghCSCS7FH6位數(shù)碼管接口電路8位鎖存器(段選)8位鎖存器(位選)COMD7-D06位反相驅(qū)動器D0D520H00000111111001111111數(shù)碼管顯示原理

使用段選碼和位選碼進(jìn)行控制段選碼:顯示什么字符。6個(gè)數(shù)碼管的同名段共享連接,并且a接D0;b接D1、…;g接D6、h接D7。顯示字符“8”的段選碼是01111111B=7FH。

位選碼:選擇被點(diǎn)亮的數(shù)碼管(僅D5-D0有效)。點(diǎn)亮第6個(gè),位選碼為00100000B(20H)點(diǎn)亮第5個(gè),位選碼為00010000B(10H)點(diǎn)亮第4個(gè),位選碼為00001000B(08H)點(diǎn)亮第3個(gè),位選碼為00000100B(04H)點(diǎn)亮第2個(gè),位選碼為00000010B(02H)點(diǎn)亮第1個(gè),位選碼為00000001B(01H)[設(shè)計(jì)思路]

主要解決四個(gè)問題:(1)字符“8”的顯示控制問題,包括段選碼和位選碼;(2)時(shí)間間隔1秒鐘如何實(shí)現(xiàn);(3)每隔一秒鐘“8”如何左移一位顯示;(4)顯示過程如何結(jié)束

MOVDX,201HMOVAL,7FH;“8”的段選碼OUTDX,ALMOVDX,200HMOVAL,位選碼;初值=20HOUTDX,ALSHR位碼,1:SCAN:MOVAL,1INT16HJZSCAN

結(jié)束準(zhǔn)備【程序清單】.486DATASEGMENTUSE16ORIGINDB20H;數(shù)碼管位選碼初值TTTDW100;延時(shí)時(shí)間DATAENDSCODESEGMENTUSE16ASSUMECS:CODE,DS:DATABEG:MOVAX,DATAMOVDS,AX

;DS段賦值

MOVDX,201HMOVAL,7FHOUTDX,AL

;輸出“8”字型碼

LAST:MOVAL,ORIGINMOVDX,200HOUTDX,AL;輸出位選碼

CALLDELAY;延時(shí)1秒

SHRORIGIN,1JNCNEXTMOVORIGIN,20HNEXT:MOVAH,1INT16H;有鍵入?

JZLAST

;否

MOVAH,4CHINT21H;延時(shí)子程序DELAYPROCMOVAH,2DHMOVCX,0MOVDx,0INT21HREAD:MOVAH,2CHINT21HMOVAL,100MULDHMOVDH,0ADDAX,DXCMPAX,TTTJCREADRETDELAYENDPCODEENDSENDBEG2.查詢方式

用查詢方式交換信息,必先了解外設(shè)的狀態(tài)。

查詢方式輸入流程從狀態(tài)口讀取狀態(tài)信息數(shù)據(jù)準(zhǔn)備好?執(zhí)行IN指令,取出數(shù)據(jù)YN從狀態(tài)口讀取狀態(tài)信息外設(shè)空閑否?執(zhí)行OUT指令,輸出一個(gè)數(shù)據(jù)YN

查詢方式輸出流程查詢方式輸入接口示意圖地址譯碼器地址總線IOR鎖存器(8)三態(tài)緩沖器

(8)CPU數(shù)據(jù)線數(shù)據(jù)

輸入設(shè)備輸入選通信號RDQ+5V狀態(tài)標(biāo)志寄存器IOR地址譯碼器數(shù)據(jù)口選中接數(shù)據(jù)線D7位

查詢式輸入核心程序設(shè)狀態(tài)口地址=200H

數(shù)據(jù)口地址=201H

RSCAN:MOVDX,200HINAL,DXTESTAL,80HJZRSCANMOVDX,201HINAL,DX

查詢式輸出接口示意圖“0”為空閑鎖存器(8)數(shù)據(jù)IOW地址譯碼器地址總線IOR數(shù)據(jù)總線數(shù)據(jù)口選中ACK

輸出設(shè)備QD

+5V狀態(tài)標(biāo)志狀態(tài)口選中接數(shù)據(jù)線D0位R

查詢式數(shù)據(jù)輸出核心程序設(shè)狀態(tài)口地址=200H=數(shù)據(jù)口地址

TSCAN:MOVDX,200HINAL,DXTESTAL,1JNZTSCANMOVDX,200HMOVAL,某數(shù)

OUTDX,AL3.中斷控制方式

在有多個(gè)外設(shè)的系統(tǒng)中,多個(gè)外設(shè)要求CPU為它服務(wù)是隨機(jī)的若采用查詢方式工作,就不能保證系統(tǒng)實(shí)時(shí)地對外設(shè)的請求作出響應(yīng)為了提高CPU的效率,使系統(tǒng)有實(shí)時(shí)性能,導(dǎo)致了中斷處理技術(shù)的產(chǎn)生特點(diǎn):在外設(shè)沒有作好數(shù)據(jù)傳送準(zhǔn)備時(shí),CPU可執(zhí)行與傳送數(shù)據(jù)無關(guān)的其它指令當(dāng)外設(shè)作好傳送準(zhǔn)備后,主動向CPU請求中斷若CPU響應(yīng)這一請求,則暫停正在運(yùn)行的程序,轉(zhuǎn)入中斷服務(wù)程序,完成數(shù)據(jù)傳送待服務(wù)完畢后,自動返回原來運(yùn)行的程序4.直接存儲器存?。―MA)方式為什么要有DMA?什么是DMA?特點(diǎn):用硬件實(shí)現(xiàn)在外設(shè)與內(nèi)存間直接進(jìn)行數(shù)據(jù)交換,而不通過CPU

數(shù)據(jù)傳送速度的上限就取決于存儲器的工作速度速度快7.3DMA控制器1.DMA(DirectMemoryAccess):直接存儲器存取,習(xí)慣上稱DMA傳送。

DMA傳送:利用硬件完成高速外設(shè)與系統(tǒng)RAM之間的信息交換。2.DMAC:DMA控制器。它是實(shí)現(xiàn)DMA傳送的核心芯片。3.專用術(shù)語:DMA讀傳送:在DMAC控制下,

讀取RAM的內(nèi)容I/O端口。DMA寫傳送:I/O端口信息系統(tǒng)RAM某單元。存儲單元讀/寫傳送:在DMAC控制下,實(shí)現(xiàn)系統(tǒng)

RAMRAM。注意:在PC系列機(jī)中禁止RAMRAM傳送。4.DMA傳送的過程HOLDCPUHLDAHRQDREQ

DMACHLDADACKI/O接口RAM總線保持請求總線響應(yīng)DMA請求DMA響應(yīng)ABDBCBHOLDCPUHLDAHRQDREQ

DMACHLDADACKI/O接口RAM總線保持請求總線響應(yīng)DMA請求DMA響應(yīng)ABDBCB

系統(tǒng)的三總線分別受到CPU和DMAC的控制。

CPU可以向地址總線、數(shù)據(jù)總線、控制總線上發(fā)送信息,DMAC也可以向地址總線、數(shù)據(jù)總線、控制總線上發(fā)送信息,但同一時(shí)間,三總線只能受一個(gè)器件的控制,所以,兩者之間必須有聯(lián)絡(luò)信號:HOLDCPUHLDAHRQDREQ

DMACHLDADACKI/O接口RAM總線保持請求總線響應(yīng)DMA請求DMA響應(yīng)ABDBCB高速外設(shè),通過其接口電路向DMAC發(fā)出“DMA請求”信號(請求DMAC為其傳送數(shù)據(jù))。DMAC檢測到有DMA請求之后,即向CPU提出總線保持請求(請求CPU脫離總線)。HOLDCPUHLDAHRQDREQ

DMACHLDADACK

I/O接口RAM總線保持請求總線響應(yīng)DMA請求DMA響應(yīng)ABDBCBCPU執(zhí)行完當(dāng)前指令的當(dāng)前總線周期之后脫離系統(tǒng)總線,并向DMAC發(fā)出“總線保持響應(yīng)”信號。DMAC收到“總線響應(yīng)”信號之后,接管系統(tǒng)總線的

控制權(quán),并向I/O接口發(fā)出DMA響應(yīng)信號。HOLDCPUHLDAHRQDREQ

DMACHLDADACKI/O接口RAM總線請求總線響應(yīng)DMA請求DMA響應(yīng)ABDBCB在這之后,由DAMC控制系統(tǒng)總線,進(jìn)行DMA傳送。

a.若進(jìn)行DMA讀傳送:DMAC把RAM地址地址總線上

DMAC發(fā)出存儲器讀命令和I/O寫命令

b.若進(jìn)行DMA寫傳送

DMAC把RAM地址地址總線上

DMAC發(fā)出I/O讀命令和存儲器寫命令

HOLDCPUHLDAHRQDREQ

DMACHLDADACK

I/O接口RAM總線請求總線響應(yīng)DMA請求DMA響應(yīng)ABDBCB預(yù)定的字節(jié)數(shù)全部傳送完畢,DMAC脫離系統(tǒng)總線,CPU再次控制系統(tǒng)總線,完成被中斷指令的后繼總線周期。5.DMA傳送與中斷方式的比較響應(yīng)時(shí)間:CPU接到“中斷請求”后要等到當(dāng)前指

令執(zhí)行完畢才響應(yīng),而CPU接到DMAC的“總線請

求”后,只要當(dāng)前指令的當(dāng)前總線周期執(zhí)行完畢就

響應(yīng)!數(shù)據(jù)傳送速度:DMAC傳送比中斷傳送要快!

中斷服務(wù)程序:

保護(hù)現(xiàn)場

(I/O端口)CPUCPURAM

送中斷結(jié)束命令恢復(fù)現(xiàn)場

IRET

由此看出,中斷傳送是由軟件完成的,執(zhí)行一次中斷服務(wù)程序,就完成一字節(jié)的I/O寫傳送。而DMA傳送是由硬件完成的,每傳送一個(gè)字節(jié)只占用CPU的一個(gè)總線周期。中斷請求分為內(nèi)部中斷和外部中斷。

DMA請求的方式也有兩種:

硬件DMA請求和軟件DMA請求。一片8237有4個(gè)DMA通道。一.8237內(nèi)部結(jié)構(gòu)8237提供4種DMA傳送方式:

單字節(jié)讀/寫傳送數(shù)據(jù)塊讀/寫傳送請求傳送級連傳送

一次DMA傳送的最大字節(jié)數(shù)是64K8237每個(gè)通道只能訪問64KRAM,PC系列機(jī)由于增加了“頁面寄存器”,所以一個(gè)通道能訪問16兆內(nèi)存。7.3.18237ADMA控制器控制寄存器請求寄存器狀態(tài)寄存器屏蔽寄存器請求觸發(fā)器屏蔽觸發(fā)器方式寄存器基地址寄存器當(dāng)前地址寄存器基本字節(jié)寄存器當(dāng)前字節(jié)寄存器通道0暫存寄存器

通道1

通道2

通道3READYDREQ0DACK0DREQ1DACK1DREQ2DACK2DREQ3DACK3HRQHLDACLKAENADSTBDB7~DB0A3~A0A7~A4IORMEMRIOWMEMWHOLDHLDACLK8237A的內(nèi)部結(jié)構(gòu)框圖二.8237內(nèi)部寄存器組分二類:一類是4個(gè)通道共用的,

一類是每個(gè)通道專用的。

1.控制寄存器(共用)

寄存器初始化命令字,命令字格式如下頁圖:

D7D6D5D4D3D2D1D00:禁止存儲器到存儲器傳送1:允許存儲器到存儲器傳送存儲器到存儲器傳送時(shí):0:源地址不保持1:源地址保持不變0:啟動8237工作1:停止8237工作0:正常時(shí)序1:壓縮時(shí)序0:DACK低電平有效1:DACK高電平有效0:DREQ高電平有效1:DREQ低電平有效0:不擴(kuò)展寫信號1:擴(kuò)展寫信號0:固定優(yōu)先級1:循環(huán)優(yōu)先級8237A控制寄存器格式

注意:系統(tǒng)機(jī)加電后,由BIOS完成DMAC的初始化,控制命令字=0,即:各個(gè)通道禁止RAMRAM,允許讀/寫傳送,使用正常時(shí)序,不擴(kuò)展寫信號,DMA請求高電平有效,DMA應(yīng)答信號低電平有效,各通道的DMA請求是固定優(yōu)先級,即:DREQ0最高,REQ3最低。用戶沒有必要也不應(yīng)當(dāng)改變控制寄存器的內(nèi)容。2.方式寄存器(共用)寄存方式字,選擇各通道的傳送方式。方式字格式,如下頁圖:D7D6D5D4D3D2D1D0通道選擇:00選擇通道001:選擇通道110:選擇通道211:選擇通道3傳送類型的選擇:00校驗(yàn)傳送01:寫傳送10:讀傳送11:無意義通道傳送方式選擇:00:請求傳送方式01:單字節(jié)傳送方式10:數(shù)據(jù)塊傳送方式11:級聯(lián)方式地址增減方式選擇

0:地址加11:地址減1自動重裝功能選擇:0:禁止

1:允許8237A方式寄存器格式8237DMAC規(guī)定4種傳送方式,即:

單字節(jié)讀/寫傳送,數(shù)據(jù)塊讀/寫傳送,

單字節(jié)請求讀/寫傳送,級聯(lián)傳送。

各通道還有一個(gè)6位的方式寄存器。8237根據(jù)共用的方式寄存器D1、D0位,再截取D7~D2位相應(yīng)通道的方式寄存器中。

假設(shè):方式命令字=01

0

0

10

01

單字節(jié)傳送地址加1修改無自動重裝功能讀傳送通道

1表示:令CH1進(jìn)行單字節(jié)讀傳送,自動加1變址,沒有自動重裝功能。MOVAL,01001001BOUT方式寄存器口地址,AL基地址寄存器(16位)低16位RAM地址自動重裝功能選擇:方式寄存器

D4=1,允許

D4=0,禁止當(dāng)前地址寄存器(16位)系統(tǒng)地址總線A15~A0自動±1每個(gè)通道有一對。3.基地址寄存器和當(dāng)前地址寄存器(各通道專用)基地址寄存器(16位)低16位RAM地址自動重裝功能選擇:方式寄存器

D4=1,允許

D4=0,禁止當(dāng)前地址寄存器(16位)系統(tǒng)地址總線A15~A0自動±1初始化編程時(shí),低16位RAM地址基地址寄存器,后者自動轉(zhuǎn)存到當(dāng)前地址寄存器中?;刂芳拇嫫鳎?6位)低16位RAM地址自動重裝功能選擇:方式寄存器

D4=1,允許

D4=0,禁止當(dāng)前地址寄存器(16位)系統(tǒng)地址總線A15~A0自動±1進(jìn)行DMA讀/寫傳送時(shí),當(dāng)前地址寄存器的內(nèi)容系統(tǒng)地址線上,選中某一單元?;刂芳拇嫫鳎?6位)低16位RAM地址自動重裝功能選擇:方式寄存器

D4=1,允許

D4=0,禁止當(dāng)前地址寄存器(16位)系統(tǒng)地址總線A15~A0自動±1一個(gè)字節(jié)傳送完畢,當(dāng)前地址寄存器中的內(nèi)容自動+1

或–1(由方式寄存器D5的選擇而定)。

基地址寄存器(16位)低16位RAM地址自動重裝功能選擇:方式寄存器

D4=1,允許

D4=0,禁止當(dāng)前地址寄存器(16位)系統(tǒng)地址總線A15~A0自動±1預(yù)定字節(jié)傳送完畢,若方式寄存器D4位=1,則基地址寄存器中的內(nèi)容自動重裝當(dāng)前地址寄存器。4.基本字節(jié)寄存器和當(dāng)前字節(jié)寄存器(各通道專用)“欲傳送的字節(jié)數(shù)–1”基本字節(jié)寄存器(16位)自動重裝功能選擇自動–1當(dāng)前字節(jié)寄存器(16位)EOP

計(jì)數(shù)值由0–1時(shí),

引腳EOP=每通道有一對?!坝麄魉偷淖止?jié)數(shù)–1”基本字節(jié)寄存器(16位)自動重裝功能選擇自動–1當(dāng)前字節(jié)寄存器(16位)EOP

計(jì)數(shù)值由0–1時(shí),

引腳EOP=初始化時(shí)“欲傳送的字節(jié)數(shù)–1”基本字節(jié)寄存器,后者自動寫入當(dāng)前字節(jié)寄存器?!坝麄魉偷淖止?jié)數(shù)–1”基本字節(jié)寄存器(16位)自動重裝功能選擇自動–1當(dāng)前字節(jié)寄存器(16位)EOP

計(jì)數(shù)值由0–1時(shí),

引腳EOP=每傳送一個(gè)字節(jié),當(dāng)前字節(jié)寄存器自動–1。“欲傳送的字節(jié)數(shù)–1”基本字節(jié)寄存器(16位)自動重裝功能選擇自動–1當(dāng)前字節(jié)寄存器(16位)EOP

計(jì)數(shù)值由0–1時(shí),

引腳EOP=當(dāng)前字節(jié)寄存器的值由0–1時(shí),引腳EOP=,表明預(yù)定的字節(jié)數(shù)傳送完畢。若方式寄存器D4=1,則完成計(jì)數(shù)值自動重裝當(dāng)前字節(jié)寄存器。5.先/后觸發(fā)器(共用)

地址寄存器、字節(jié)寄存器都是16位,而8237A與CPU之間的數(shù)據(jù)線只有8根,所以地址值(字節(jié)值)要分2次寫入。先/后觸發(fā)器規(guī)定了寫入地址寄存器中的初值,以及寫入字節(jié)寄存器中的初值的寫入順序。先/后觸發(fā)器為0,則先寫入的是低8位,后寫入的是高8

位,初始化時(shí):

使先/后觸發(fā)器為0

低8位RAM地址基本地址寄存器中8位RAM地址基本地址寄存器“欲傳送的字節(jié)數(shù)-1”其低8位基本字節(jié)寄存器“欲傳送的字節(jié)數(shù)-1”其高8位基本字節(jié)寄存器6.屏蔽寄存器(共用)

功能:屏蔽某一通道的DMA請求。

8237A有2個(gè)屏蔽寄存器—單通道屏蔽寄存器、多通道屏蔽寄存器

無用D2D1D01:使相應(yīng)通道的屏蔽觸發(fā)器為10:使相應(yīng)通道的屏蔽觸發(fā)器為0D1D0選中00011011CH0CH1CH2CH3

每寫入一次,只能預(yù)置一個(gè)通道的屏蔽觸發(fā)器。單通道屏蔽寄存器

多通道屏蔽寄存器(共用)D3D2D1D0無用選中CH0Di=1:使相應(yīng)通道的屏蔽觸發(fā)器為1Di=0:使相應(yīng)通道的屏蔽觸發(fā)器為0

寫入一次,可使4個(gè)通道的屏蔽寄存器分別置1或置0。

CH1CH2CH37.軟件請求寄存器(共用)無用1:使相應(yīng)通道的請求觸發(fā)器置10:使相應(yīng)通道的請求觸發(fā)器置0

D1D0選中00011011CH0CH1CH2CH3D2D1D0

硬件DMA請求:由引腳DREQ0~3的有效信號,使通道的“請求觸發(fā)器”置1。軟件DMA請求:由于預(yù)置“請求寄存器”,而從內(nèi)部使通道的“請求觸發(fā)器”置1。實(shí)驗(yàn)表明:某通道的屏蔽觸發(fā)器置1后,該通道的硬件、軟件DMA請求都將被屏蔽。8.狀態(tài)寄存器CH3CH2CH1CH0CH3CH2CH1CH0D7D4D3D0Di=1表示有DMA請求Di=1表示該通道DMA傳送結(jié)束三、8237A在PC系列機(jī)中的應(yīng)用1.用2片8237A級連提供7個(gè)DMA通道

HRQDREQ0DACK0DREQ1DACK1DREQ2DACK2DREQ3DACK3DACK0DACK1DACK2DACK3

HRQDREQ0DACK0DREQ1DACK1DREQ2DACK2DREQ3DACK3HRQ至CPUDACK5DACK6DACK7DREQ0DREQ1DREQ2DREQ3DMAC1DMAC2DREQ5DREQ6DREQ78237A的每個(gè)通道地址寄存器是16位,進(jìn)行DMA傳送時(shí),當(dāng)前地址寄存器的內(nèi)容系統(tǒng)地址線上。我們知道:16位地址可尋址64K內(nèi)存

20位地址可尋址1兆內(nèi)存

24位地址可尋址16兆內(nèi)存在PC/XT中,內(nèi)存為1兆,高四位地址由誰給出?

在PC/AT中,內(nèi)存為16兆,高8位地址由誰給出?為此,在DMA接口電路中,以8237A為核心為每一通道增加了一個(gè)“頁面寄存器”,用來存放高4位(AT機(jī)中為高8位)地址。2.如何擴(kuò)充8237A的尋址范圍(增設(shè)頁面地址寄存器)地址鎖存器當(dāng)前地址寄存器頁面寄存器系統(tǒng)數(shù)據(jù)線初始化時(shí),寫入高8位RAM地址A19~A16地址驅(qū)動器中8位RAM地址低8位RAM地址A15~A8A7~A08237A某通道3.頁面寄存器口地址CH0CH1CH2CH3DMAC1DMAC2CH0CH1CH2CH3頁面寄存器口地址87H83H81H82H/8BH89H8AH7.3.28237A的初始化編程(1)命令字寫入控制寄存器。(2)屏蔽字寫入屏蔽寄存器,屏蔽要初始化的通道。(3)方式字寫入方式寄存器,為通道規(guī)定傳送類型及工作方式。(4)置0先后觸發(fā)器,為后繼的地址寄存器和字節(jié)寄存器規(guī)定寫入順序。(5)計(jì)算存儲單元的20位物理地址。(6)將物理地址的高8位存入頁面寄存器,

低16位→基本地址寄存器,字節(jié)數(shù)-1→基本字節(jié)寄存器。(7)解除屏蔽,準(zhǔn)備響應(yīng)DMA請求。4.DMA讀/寫傳送實(shí)驗(yàn)舉例按圖完成電路接線,采用“硬件DMA請求”的方式,將用戶程序數(shù)據(jù)段3行測試電文寫入到實(shí)驗(yàn)電路中的6116存儲器(它們是本實(shí)驗(yàn)的I/O端口寄存器),然后再將6116存儲器中的電文傳送到用戶程序的數(shù)據(jù)段緩沖區(qū),最后把緩沖區(qū)中的電文顯示在屏幕上,驗(yàn)證DMA讀寫傳送的結(jié)果,電文如下:THEQUICKBROWNFOXJUMPSOVERLAZYDOGA8~A1B8~B1GDIR74LS2456116D7~D0A10~A0CSWRRDQ10~Q02*74LS393清0端進(jìn)位脈沖+5VDMA按鍵總線B18DRQ1DMA請求電路IORIOWDACK1IOWIORDACK1清0電路2Kx8[程序清單]DISPMACROVARMOVAH,9MOVDX,OFFSETVARINT21HENDMSCANKEYMACROLOCALLLLLLL:MOVAH,1INT16HJZLLLMOVAH,0INT16HENDMDATASEGMENTTEXTDB'THEQUICKBROWNFOXJUMPSOVERLAZYDOG'DB0DH,0AHDB'THEQUICKBROWNFOXJUMPSOVERLAZYDOG'DB0DH,0AHDB'THEQUICKBROWNFOXJUMPSOVERLAZYDOG'DB0DH,0AH,'$'COUNTEQU$-TEXTBUFDBCOUNTDUP(?)MESGDB'TomakeaDMArequest!'DB'thenstrikeanyKey',0DH,0AH,'$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATABEG:MOVAX,DATAMOVDS,AXCALLI8237R;DMACH1讀出初始化

DISPMESG;給出操作提示

SCANKEYLAST1:INAL,08H;讀DMA狀態(tài)寄存器

ANDAL,02HJZLAST1;CH1傳送未結(jié)束,轉(zhuǎn)

CALLI8237W;DMACH1寫入初始化

DISPMESG;給出操作提示

SCANKEYLAST2:INAL,08H;讀DMA狀態(tài)寄存器

ANDAL,02HJZLAST2;CH1傳送未結(jié)束,轉(zhuǎn)

DISPBUF顯示DMA讀/寫傳送的最后結(jié)果

MOVAH,4CHINT21HI8237RPROC;DMACH1讀出初始化

MOVAL,05HOUT0AH,AL;置CH1屏蔽觸發(fā)器置1MOVAL,01001001B;CH1方式字:單字節(jié)讀傳送

OUT0BH,AL;自動加1變址、不自動預(yù)置

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論