第6章 輸入輸出技術(shù)_第1頁
第6章 輸入輸出技術(shù)_第2頁
第6章 輸入輸出技術(shù)_第3頁
第6章 輸入輸出技術(shù)_第4頁
第6章 輸入輸出技術(shù)_第5頁
已閱讀5頁,還剩122頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第6章輸入輸出技術(shù)

6.1外設(shè)接口的基本模型6.2程序控制I/O方式6.3中斷方式6.4直接存貯器存取(DMA)方式

6.1外設(shè)接口的基本模型

1.應(yīng)答聯(lián)絡(luò)大多數(shù)外設(shè)與計(jì)算機(jī)進(jìn)行信息交換時(shí)都需要事先進(jìn)行聯(lián)絡(luò),只有雙方建立好聯(lián)絡(luò)關(guān)系(即握手成功)之后,雙方才能進(jìn)行信息交換。例如,欲將計(jì)算機(jī)內(nèi)部的數(shù)據(jù)輸出給外設(shè),常規(guī)的工作過程為:首先由CPU讀外設(shè)與系統(tǒng)連接的狀態(tài)端口,獲得外設(shè)的工作狀態(tài),CPU根外設(shè)狀態(tài)決定輸出數(shù)據(jù)的時(shí)刻。圖6.1外設(shè)接口基本模型2.端口地址當(dāng)計(jì)算機(jī)系統(tǒng)中有多個(gè)外設(shè)時(shí),CPU在某個(gè)時(shí)刻只能與一個(gè)外設(shè)打交道。為了確定此刻哪一個(gè)外設(shè)可以與計(jì)算機(jī)打交道,采取與內(nèi)存同樣的處理方法,利用二進(jìn)制編碼為外設(shè)編號(hào),該編號(hào)被稱為外設(shè)地址(又稱I/O地址),也即通過外設(shè)地址來識(shí)別不同的外設(shè)。3.輸入輸出方法外設(shè)與計(jì)算機(jī)間的信息交換可以用不同的輸入輸出方法完成?;镜妮斎胼敵龇椒ㄓ校撼绦蚩刂艻/O方式(無條件傳送方式與查詢方式)、中斷方式、直接存貯器存取(DMA)方式。

6.2程序控制I/O方式

6.2.1無條件傳送方式所謂無條件傳送方式是指可以在需要的時(shí)刻讓CPU直接與外設(shè)進(jìn)行輸入輸出操作,也即CPU僅需要通過I/O指令即可由接口獲取外設(shè)數(shù)據(jù)或?yàn)橥庠O(shè)提供數(shù)據(jù)。這種方式的實(shí)現(xiàn)很簡單,硬件上只需要提供CPU與外設(shè)連接的數(shù)據(jù)端口,而軟件上則只提供相應(yīng)的輸入或輸出指令即可。1.輸入接口設(shè)計(jì)對(duì)于簡單的輸入設(shè)備,在硬件上只需要設(shè)計(jì)一個(gè)數(shù)據(jù)輸入接口即可以將該外設(shè)與CPU連接起來。實(shí)現(xiàn)數(shù)據(jù)輸入接口的器件可選用三態(tài)門,如74LS244。圖6.2開關(guān)K與微機(jī)系統(tǒng)連接的接口電路如果希望完成如下任務(wù):當(dāng)開關(guān)接通時(shí),CPU執(zhí)行程序段ON;當(dāng)開關(guān)斷開時(shí),CPU執(zhí)行程序段OFF。下述指令的執(zhí)行可以完成該任務(wù):

MOVDX,0FFF7HINAL,DXANDAL,01HJZON;假定程序段ON與本程序段在同一內(nèi)存段中

JMPOFF圖6.3三態(tài)門作為數(shù)據(jù)輸入接口的一般連接模式2.輸出接口設(shè)計(jì)作為無條件傳送方式實(shí)現(xiàn)數(shù)據(jù)輸出的例子,下面給出CPU對(duì)發(fā)光二極管的控制。圖6.4為發(fā)光二極管與微機(jī)系統(tǒng)連接的接口電路。鎖存器作為發(fā)光二極管與微機(jī)系統(tǒng)數(shù)據(jù)總線連接的中間接口,接收來自CPU的輸出數(shù)據(jù)。當(dāng)鎖存器的CP端出現(xiàn)上升沿信號(hào)時(shí),數(shù)據(jù)總線上的數(shù)據(jù)被鎖存于鎖存器內(nèi)部并輸出。圖6.4發(fā)光二極管與微機(jī)系統(tǒng)連接的接口電路反相器對(duì)鎖存器起保護(hù)作用,當(dāng)發(fā)光二極管發(fā)亮?xí)r,反相器提供足夠大的吸入電流,以保護(hù)鎖存器不受損壞。對(duì)于圖中電路,CPU執(zhí)行下述指令可以使兩個(gè)發(fā)光二極管發(fā)亮:

MOVDX,0000HMOVAL,81HOUTDX,AL而CPU執(zhí)行下述指令可以使兩個(gè)發(fā)光二極管不發(fā)亮:

MOVDX,0000HMOVAL,00HOUTDX,AL圖6.5鎖存器作為數(shù)據(jù)輸出接口的一般連接模式6.2.2查詢方式1.查詢方式的實(shí)現(xiàn)當(dāng)外設(shè)已處于準(zhǔn)備好數(shù)據(jù)的狀:①在中斷處理程序中要有開中斷指令。

②要設(shè)置足夠大的堆棧。

③要正確地操作堆棧。

圖6.6典型的查詢方式工程流程圖6.7查詢方式實(shí)現(xiàn)I/O傳送示例

(a)外設(shè)與微機(jī)接口電路;(b)外設(shè)工作時(shí)序DAOUT:MOVAX,0D200HMOVDS,AXMOVBX,0;初始化內(nèi)存首地址

MOVCX,1000;初始化計(jì)數(shù)器

MOVDX,02F9HMOVAL,01HOUTDX,AL;初始化選通信號(hào)NEXT:MOVDX,02FAHWAT:INAL,DXANDAL,80HJNZWAT;狀態(tài)查詢環(huán)

MOVDX,02F8HMOVAL,OUTDX,AL;數(shù)據(jù)輸出

MOVDX,02F9HMOVAL,00HOUTDX,AL圖6.8幾種輪詢控制流程CALLDLY100μs;DLY100μs為100μs的延遲子程序MOVAL,01HOUTDX,AL;產(chǎn)生選通信號(hào)INCBX;修改內(nèi)存指針LOOPNEXT;輸出次數(shù)的循環(huán)控制RET2.多外設(shè)的查詢控制在微機(jī)系統(tǒng)中,希望以查詢方式與微機(jī)進(jìn)行信息交換的外設(shè)可能有多個(gè)。查詢方式是一種同步機(jī)制,它以輪詢的方式依次對(duì)各個(gè)外設(shè)進(jìn)行服務(wù)。輪詢的順序確定了外設(shè)的優(yōu)先級(jí),而輪詢的順序又是根據(jù)外設(shè)的重要性確定。通常是相對(duì)重要的和速度快的外設(shè)先被查詢、服務(wù),而相對(duì)不重要的和速度慢的外設(shè)后被查詢、服務(wù)。6.3中斷方式

6.3.1中斷概念所謂中斷是指某事件的發(fā)生引起CPU暫停當(dāng)前程序的運(yùn)行,轉(zhuǎn)入對(duì)所發(fā)生事件的處理,處理結(jié)束又回到原程序被打斷處接著執(zhí)行這樣一個(gè)過程。

1.中斷源2.中斷過程中斷方式的實(shí)現(xiàn)一般需要經(jīng)歷下述過程:中斷請(qǐng)求—→中斷響應(yīng)—→斷點(diǎn)保護(hù)—→中斷源識(shí)別—→中斷服務(wù)—→斷點(diǎn)恢復(fù)—→中斷返回1)中斷請(qǐng)求①信號(hào)形式應(yīng)滿足CPU要求。②中斷請(qǐng)求信號(hào)應(yīng)被有效地記錄,以便CPU能夠檢測到它。③一旦CPU對(duì)某中斷源的請(qǐng)求提供了服務(wù),則該中斷源的請(qǐng)求信號(hào)應(yīng)及時(shí)撤消。2)中斷響應(yīng)

CPU對(duì)內(nèi)部中斷源提出的中斷請(qǐng)求必須接受,而對(duì)外部中斷源提出的中斷請(qǐng)求是否響應(yīng)取決于外中斷源類型及響應(yīng)條件。不同的微機(jī)對(duì)可屏蔽中斷請(qǐng)求有不同的響應(yīng)條件,8086(88)系統(tǒng)的響應(yīng)條件為:①指令執(zhí)行結(jié)束;②CPU處于開中斷狀態(tài)(即IF=1);③沒有發(fā)生復(fù)位(RESET)、保持(HOLD)和非屏蔽中斷請(qǐng)求(NMI);④開中斷指令(STI)、中斷返回指令(IRET)執(zhí)行完,需要再執(zhí)行一條指令,才能響應(yīng)INTR請(qǐng)求。圖6.9微機(jī)系統(tǒng)中實(shí)現(xiàn)中斷的基本模型圖6.10有中斷產(chǎn)生的情況下CPU運(yùn)行程序的軌跡3)斷點(diǎn)保護(hù)4)中斷源識(shí)別常用的中斷源識(shí)別方法有:①軟件查詢法。

②中斷矢量法。

6)斷點(diǎn)恢復(fù)7)中斷返回3.中斷優(yōu)先級(jí)及嵌套圖6.11中斷源識(shí)別的軟件查詢法(a)硬件接口;(b)軟件查詢流程①不同優(yōu)先級(jí)的多個(gè)中斷源同時(shí)提出中斷請(qǐng)求時(shí),CPU應(yīng)首先響應(yīng)最高優(yōu)先級(jí)的中斷源提出的請(qǐng)求;②CPU正在對(duì)某中斷源服務(wù)時(shí),若有優(yōu)先級(jí)更高的中斷源提出請(qǐng)求,則CPU應(yīng)對(duì)高優(yōu)先級(jí)的中斷作出響應(yīng),即高優(yōu)先級(jí)的中斷請(qǐng)求可以中斷低優(yōu)先級(jí)的中斷服務(wù)。目前采用的解決中斷優(yōu)先級(jí)控制的方案有:①軟件查詢。

②硬件鏈?zhǔn)絻?yōu)先級(jí)排隊(duì)電路。③硬件優(yōu)先級(jí)編碼比較電路。④利用可編程中斷控制器(PIC)。

圖6.12中斷嵌套示意圖6.3.2中斷系統(tǒng)1.8086(88)中斷系統(tǒng)8086(88)中斷系統(tǒng)可以容納最多256個(gè)中斷源,所有中斷源統(tǒng)一編碼,每個(gè)中斷源用一個(gè)字節(jié)型編碼標(biāo)識(shí),該編碼稱為中斷向量碼,它是CPU識(shí)別中斷源的標(biāo)記。1)中斷源類型256個(gè)中斷源分為兩大類:(1)內(nèi)部中斷它由CPU內(nèi)部事件及執(zhí)行軟中斷指令產(chǎn)生。已定義的內(nèi)部中斷有:①除法錯(cuò)中斷。②單步中斷。③斷點(diǎn)中斷。④溢出中斷。⑤軟件中斷。(2)外部中斷它是由外部中斷源產(chǎn)生對(duì)CPU的請(qǐng)求而引發(fā)的。8086(88)中斷系統(tǒng)將外部中斷源又分為兩種。①非屏蔽中斷。②可屏蔽中斷。2)中斷響應(yīng)過程在8086(88)系統(tǒng)中,中斷控制是由CPU與中斷控制器共同完成的,這使得中斷過程簡化:①中斷請(qǐng)求;②中斷響應(yīng);③中斷處理:圖6.13中斷響應(yīng)過程圖6.14中斷響應(yīng)時(shí)CPU查詢中斷源的順序3)中斷向量表8086(88)微機(jī)系統(tǒng)在內(nèi)存的最低端開辟了1KB的存貯區(qū)作為中斷向量表。該表以四字節(jié)為一組構(gòu)造而成,共分為256組,按中斷向量碼的序號(hào)排列,如圖6.15所示。圖6.15中斷向量表2.80386(Pentium)中斷系統(tǒng)

Pentium及80386、80486,在程序運(yùn)行過程中由于某種事件的發(fā)生而迫使處理器暫停該程序的運(yùn)行,轉(zhuǎn)去對(duì)事件進(jìn)行處理,待事件處理完以后,再回到原程序接著原狀態(tài)繼續(xù)運(yùn)行。1)分類在80286以后的處理器中均將廣義中斷分為中斷和異常兩大類。(1)中斷由外部事件引起的中斷稱為外部中斷。表6.1中斷及其向量碼2)中斷或異常的響應(yīng)過程(1)優(yōu)先級(jí)80386之后的處理器有許多中斷和異常發(fā)生,它們的優(yōu)先級(jí)如表6.2所示。表6.2中斷和異常的優(yōu)先級(jí)(2)實(shí)地址模式下的響應(yīng)過程

Pentium在實(shí)地址模式下對(duì)中斷或異常的響應(yīng)過程與8086(88)的十分相似,但更加靈活。①獲得向量碼。②進(jìn)行斷點(diǎn)保護(hù)。③獲得查表值。查表值=基地址+中斷向量碼×4

圖6.16實(shí)模式下中斷向量表圖6.17保護(hù)模式下的中斷描述符表圖6.18錯(cuò)誤碼格式3)保護(hù)模式下中斷響應(yīng)過程在保護(hù)模式下,每個(gè)中斷源或每個(gè)異常都事先構(gòu)造好自己的中斷描述符。①中斷描述符表。②錯(cuò)誤碼。③響應(yīng)過程。(i)由IDTR的基地址和中斷向量碼、處理器計(jì)算出查表值:查表值=基地址+中斷向量碼×8(ii)由中斷描述符中規(guī)定的選擇符,在GDT(全局描述符表)或LDT(局部描述符表)中查到代碼段描述符。(iii)由段描述符取出基地址(線性基地址),將其與中斷描述符中的偏移量結(jié)合在一起,構(gòu)成中斷服務(wù)程序的入口地址,即:中斷服務(wù)入口=段線性基地址+偏移量

(iv)斷點(diǎn)保護(hù)。

圖6.19中斷響應(yīng)過程圖6.20核心堆棧保存的斷點(diǎn)信息6.3.3中斷控制器82591.8259內(nèi)部結(jié)構(gòu)8259內(nèi)部結(jié)構(gòu)如圖6.21所示,它的工作過程如下:①中斷請(qǐng)求輸入端IR0~I(xiàn)R7接收外部中斷源的請(qǐng)求信號(hào);②外部中斷源的請(qǐng)求狀態(tài)鎖存在中斷請(qǐng)求寄存器IRR(8位)的相應(yīng)位(即置1),并與中斷屏蔽寄存器IMR(8位)相“與”,送給優(yōu)先級(jí)判決電路;

④控制電路接收到中斷請(qǐng)求有效信號(hào)后,向CPU輸出INT信號(hào);⑤CPU接受INT信號(hào),在中斷允許(IF=1)的情況下,發(fā)出響應(yīng)信號(hào);⑥8259接收信號(hào),在第1個(gè)INTA周期,先設(shè)置ISR的相應(yīng)位,并恢復(fù)IRR的相應(yīng)位,然后,主控8259送出級(jí)聯(lián)地址CAS0~CAS2加載至從屬8259上;⑦單獨(dú)使用的8259或是由CAS0~CAS2選擇的從屬8259,在第2個(gè)INTA周期,將中斷向量碼輸出至數(shù)據(jù)總線;⑧CPU讀取中斷向量碼,轉(zhuǎn)移到相應(yīng)的中斷處理程序;⑨中斷結(jié)束時(shí),通過在中斷處理程序中向8259送一條EOI(中斷結(jié)束)命令,使ISR相應(yīng)位復(fù)位;或8259選擇自動(dòng)結(jié)束中斷方式時(shí),由8259在第2個(gè)信號(hào)的后沿自動(dòng)將ISR相應(yīng)位復(fù)位。圖6.218259內(nèi)部結(jié)構(gòu)圖2.8259引腳功能8259是具有28個(gè)引腳的集成芯片,如圖6.22所示,各引腳功能如下:

D0~D7:雙向數(shù)據(jù)線,與系統(tǒng)數(shù)據(jù)總線相連,接收CPU發(fā)來的命令字,給CPU提供中斷向量碼與內(nèi)部寄存器狀態(tài)。

A0:地址輸入線,與系統(tǒng)地址總線中某位相連,用來選擇8259內(nèi)部寄存器。:片選輸入信號(hào),由系統(tǒng)中地址譯碼器控制,低電平有效。:寫和讀控制信號(hào),輸入,與系統(tǒng)控制總線中的(外設(shè)寫)和(外設(shè)讀)信號(hào)相連。

INT:中斷請(qǐng)求輸出信號(hào),可接入CPU的INTR引腳。:中斷響應(yīng)輸入信號(hào),接收CPU送出的

信號(hào)。

CAS0~CAS2:級(jí)聯(lián)地址,在8259級(jí)聯(lián)時(shí)使用。:雙功能線。

IR0~I(xiàn)R7:中斷請(qǐng)求輸入端,接收可屏蔽中斷源的請(qǐng)求信號(hào),信號(hào)形式可以是上升沿,也可以是高電平。圖6.228259引腳圖3.8259工作方式1)中斷結(jié)束方式(1)非自動(dòng)結(jié)束方式①一般中斷結(jié)束命令(EOI)。②特殊中斷結(jié)束命令(SEOI)。(2)自動(dòng)結(jié)束方式2)緩沖方式①非緩沖方式。②緩沖方式。

3)嵌套方式①一般嵌套方式。②特殊全嵌套方式。4)屏蔽方式屏蔽方式也是用于8259進(jìn)行優(yōu)先級(jí)控制的,它也有兩種形式:①一般屏蔽方式。②特殊屏蔽方式。5)優(yōu)先級(jí)規(guī)定①固定優(yōu)先級(jí)。

②循環(huán)優(yōu)先級(jí)。

4.8259命令字1)初始化命令字初始化命令字用于初始設(shè)定8259的工作狀態(tài)。①ICW1。規(guī)定8259的連接方式(單片或級(jí)聯(lián))與中斷源請(qǐng)求信號(hào)的有效形式(邊沿或電平觸發(fā))。命令字格式如圖6.23所示,利用A0=0,D4=1尋址。②ICW2。③ICW3。

圖6.23ICW1格式圖6.24ICW2格式圖6.25ICW3格式圖6.26ICW4格式2)操作命令字①OCW1。

②OCW2。

③OCW3。

圖6.27OCW1格式圖6.28OCW2格式圖6.29OCW3格式5.8259級(jí)聯(lián)1)級(jí)聯(lián)結(jié)構(gòu)8259采用兩級(jí)級(jí)聯(lián),級(jí)聯(lián)結(jié)構(gòu)如圖6.30所示。

2)級(jí)聯(lián)方式下8259的中斷響應(yīng)3)級(jí)聯(lián)方式下8259的特殊操作有幾項(xiàng)操作應(yīng)該特別注意:①初始化時(shí),主控器與從屬器的ICW3應(yīng)以不同格式填寫;主控器的嵌套方式必須選擇為特殊全嵌套方式,從屬器的嵌套方式必須選擇為一般嵌套方式。②當(dāng)結(jié)束來自從屬8259的中斷時(shí),中斷處理程序中要發(fā)送兩個(gè)EOI命令,一個(gè)發(fā)給相關(guān)的從屬8259(由I/O地址確定),一個(gè)發(fā)給主控8259。圖6.308259級(jí)聯(lián)結(jié)構(gòu)6.3.4中斷方式的實(shí)現(xiàn)1.連接8259表6.38259內(nèi)部寄存器的尋址控制方式圖6.318259在系統(tǒng)中的連接2.編寫中斷初始化程序1)初始化8259因?yàn)?259的內(nèi)部寄存器尋址與命令字的寫入順序有關(guān),所以,對(duì)8259的初始化一定要按規(guī)定的順序進(jìn)行,見圖6.32所示。下面是一段對(duì)8259初始化的程序(假定8259連接電路如圖6.31所示,占用的I/O地址為FF00H和FF02H):SET59A:MOVDX,0FF00H;8259的地址A0=0

MOVAL,13H;寫ICW1,邊沿觸發(fā),單片,需要ICW4OUTDX,ALMOVDX,0FF02H;8259地址A0=1MOVAL,48H;寫ICW2,設(shè)置中斷向量碼OUTDX,ALMOVAL,03H;寫ICW4,8086/88模式,自動(dòng)EOI,非緩沖,一般嵌套OUT

DX,ALMOVAL,0E0H;寫OCW1,屏蔽IR5、IR6、IR7(假定這3個(gè)中斷輸入未用)OUTDX,ALMOVAL,0OUTDX,AL;寫OCW1,將00H寫入IMRINAL,DX;讀IMRORAL,AL;判斷IMR內(nèi)容為00H否JNZIMRERRMOVAL,0FFHOUTDX,ALINAL,DXADDAL,1JNZIMRERR圖6.328259的初始化順序

CPU對(duì)8259的IMR讀出時(shí),可利用I/O地址直接尋址,而要讀出ISR、IRR或中斷狀態(tài)寄存器時(shí),則需要先設(shè)置命令字OCW3。下面是CPU讀出ISR內(nèi)容的一段程序:

MOVDX,0FF00H;8259的地址A0=0MOVAL,0BHOUTDX,AL;寫OCW3INAL,DX;讀出ISR內(nèi)容放入AL中2)設(shè)置中斷向量表①直接寫中斷向量表。利用寫指令,直接將中斷處理程序的首地址寫入內(nèi)存地址為4*n的區(qū)域中。程序如下:

INTITB:MOVAX,0MOVDS,AX;將內(nèi)存段設(shè)置在最低端

MOVSI,0120H;n=48H,4*n=120HMOVAX,OFFSETCLOCK;獲取中斷處理程序首地址之段內(nèi)偏移地址

MOV[SI],AX;段內(nèi)偏移地址寫入中斷向量表4*n地址處

MOVAX,SEGCLOCK;獲取中斷處理程序首地址之段地址

MOV[SI+2],AX;段地址寫入中斷向量表4*n+2地址處②利用DOS功能調(diào)用。若系統(tǒng)運(yùn)行在DOS環(huán)境下,可利用DOS功能調(diào)用設(shè)置中斷向量表,調(diào)用格式為:功能號(hào)25H→AH

中斷向量碼→AL

中斷處理程序首地址之段地址:偏移地址→DS:DXINT21H程序如下:MOVAH,25HMOVAL,48HMOV

DX,SEGCLOCKMOVDS,DXMOVDX,OFFSETCLOCKINT21H3.編寫中斷處理程序1)中斷嵌套8086(88)中斷系統(tǒng)將所有中斷源分為三類,即INT、NMI及

INTR,并規(guī)定CPU對(duì)INT與NMI圖6.33可嵌套的中斷處理程序流程2)改變中斷優(yōu)先級(jí)在中斷處理程序中寫進(jìn)如下一段程序,可實(shí)現(xiàn)在該中斷處理程序結(jié)束后將IR7定義為優(yōu)先級(jí)最高:

MOVDX,0FF00H;8259的地址A0=0MOVAL,0C6H;設(shè)置指定(特殊)循環(huán)優(yōu)先級(jí)及OCW2尋址信息

OUTDX,AL;寫OCW2蔽方式的設(shè)置用下述指令完成:

MOVDX,0FF00H;8259的地址A0=0MOVAL,68H;設(shè)置特殊屏蔽方式(SMM=1)及OCW3尋址信息OUTDX,AL;寫OCW3…MOVDX,0FF00H;8259的地址A0=0MOVAL,48H;設(shè)置SMM=0及OCW3尋址信息OUTDX,AL;寫OCW33)產(chǎn)生EOI命令例如,當(dāng)來自8259中斷輸入端IR6的中斷請(qǐng)求被CPU響應(yīng)時(shí),8259自動(dòng)設(shè)置ISR的數(shù)據(jù)位D6為1(即ISR6=1)。在IR6中斷處理程序中,CPU執(zhí)行以下指令,產(chǎn)生對(duì)8259的一般EOI命令:

MOVDX,0FF00H;8259的地址A0=0MOVAL,20H;設(shè)置一般EOI命令

OUTDX,AL;寫OCW2圖6.34特殊屏蔽方式示意圖4)舉例CLOCKPROCFARPUSHAXPUSHSIMOVAX,SEGTIMERMOVDS,AXMOVSI,OFFSETTIMERMOVAL,[SI];取50次計(jì)數(shù)

INCALMOV[SI],ALCMPAL,50;判斷1s到否?JNETRNEDMOVAL,0MOV[SI],ALMOVAL,[SI+1];取60s計(jì)數(shù)ADDAL,1DAAMOV[SI+1],ALCMPAL,60H;判斷1min到否?JNETRNEDMOVAL,0MOV[SI+1],ALMOVAL,[SI+2];取60min計(jì)數(shù)ADDAL,1DAAMOV[SI+2],ALCMPAL,60H;判斷1h到否?JNETRNEDMOVAL,0MOV[SI+2],ALMOVAL,[SI+3];取小時(shí)計(jì)數(shù)ADDAL,1DAA

MOV[SI+3],ALCMPAL,24H;判24h到否

JNETRNEDMOVAL,0MOV[SI+3],ALTRNED:POPSI

POPAXSTIIRETENDP

6.4直接存貯器存取(DMA)方式

6.4.1DMA工作過程

DMA方式之所以能夠?qū)崿F(xiàn)外設(shè)與計(jì)算機(jī)系統(tǒng)的高速信息交換,關(guān)鍵在于該方式的實(shí)現(xiàn)采用了專用控制器(稱之為DMA控制器)而CPU不參與控制,這使得DMA方式與其他I/O方式有了顯著的區(qū)別:DMA方式不是在程序控制下進(jìn)行的,而是以純硬件控制的方式進(jìn)行的。圖6.35DMA方式工作示意圖

DMA方式的實(shí)現(xiàn)過程如圖6.35所示,描述如下:①外設(shè)向DMAC發(fā)出DMA請(qǐng)求DREQ;②DMAC將此請(qǐng)求傳遞到CPU的總線保持端HOLD,向CPU提出DMA請(qǐng)求;③CPU在完成當(dāng)前總線周期后檢測HOLD,在非總線封鎖條件下,對(duì)DMA請(qǐng)求作出響應(yīng):一是CPU將地址總線、數(shù)據(jù)總線、控制總線置高阻,放棄對(duì)總線的控制權(quán);二是CPU送出有效的總線響應(yīng)信號(hào)HLDA加載至DMAC,告之可以使用總線;④DMAC接收到有效的總線響應(yīng)信號(hào)后,向外設(shè)送出DMA應(yīng)答信號(hào)DACK,通知外設(shè)做好數(shù)據(jù)傳送準(zhǔn)備,同時(shí)占用總線,開始對(duì)總線實(shí)施控制;⑤DMAC送出內(nèi)存地址和對(duì)內(nèi)存與外設(shè)的控制信號(hào),控制外設(shè)與內(nèi)存或內(nèi)存與內(nèi)存之間的數(shù)據(jù)傳送;⑥D(zhuǎn)MAC通過計(jì)數(shù)控制將預(yù)定的數(shù)據(jù)傳送完后,向CPU發(fā)出無效的HOLD信號(hào),撤消對(duì)CPU的DMA請(qǐng)求:⑦CPU收到此信號(hào)后,送出無效的HLDA,并重新開始控制總線,實(shí)現(xiàn)正常的總線控制操作。圖6.36不同I/O方式下的數(shù)據(jù)通路(a)程控或中斷方式下的數(shù)據(jù)傳送通路;(b)DMA方式下內(nèi)存與外設(shè)間數(shù)據(jù)傳送通路;(c)DMA方式下內(nèi)存與內(nèi)存間數(shù)據(jù)傳送通路6.4.2DMA控制器82371.8237的引線及功能

DMAC8237的外部引線圖如圖6.37所示。

A0~A3:雙向地址線,具有三態(tài)輸出。

A4~A7:三態(tài)輸出線。

DB0~DB7:雙向三態(tài)數(shù)據(jù)總線。

:雙向三態(tài)低電平有效的I/O寫控制信號(hào)。:雙向三態(tài)低電平有效的I/O讀控制信號(hào)。:三態(tài)輸出低電平有效的存貯器寫控制信號(hào)。

:三態(tài)輸出低電平有效的存貯器讀控制信號(hào)。

ADSTB:地址選通信號(hào),高電平有效的輸出信號(hào)。

AEN:地址允許信號(hào),高電平有效輸出信號(hào)。:片選信號(hào),低電平有效輸入信號(hào)。

RESET:復(fù)位信號(hào),高電平有效輸入信號(hào)。

READY:準(zhǔn)備好輸入信號(hào),當(dāng)DMAC工作期間遇上慢速內(nèi)存或I/O接口時(shí),可由它們提供READY信號(hào),使DMAC在傳送過程中插入時(shí)鐘周期SW,以便適應(yīng)慢速內(nèi)存或外設(shè)。此信號(hào)與CPU上的準(zhǔn)備好信號(hào)類似。

HRQ:保持請(qǐng)求信號(hào),高電平有效的輸出信號(hào)。

HLDA:保持響應(yīng)信號(hào),高電平有效的輸入信號(hào)。

DREQ0~DREQ3:DMA請(qǐng)求(通道0~3)信號(hào)。

DACK0~DACK3:DMA響應(yīng)信號(hào),分別對(duì)應(yīng)通道0~3。

CLK:時(shí)鐘輸入,用來控制8237的內(nèi)部操作并決定DMA的傳輸速率。:過程結(jié)束,低電平有效的雙向信號(hào)。

圖6.37DMAC8237引腳圖2.8237的工作時(shí)序8237內(nèi)部有三種狀態(tài),空閑狀態(tài)SI、請(qǐng)求狀態(tài)SO和傳送狀態(tài)S1~S4。隨著8237在系統(tǒng)中主、從屬性的改變,其內(nèi)部狀態(tài)的變換構(gòu)成了8237的工作時(shí)序,如圖6.38所示。圖6.388237工作時(shí)序3.8237的工作方式8237工作有兩種周期,即空閑周期和工作周期。1)空閑周期2)工作周期①單字節(jié)傳送方式。

②數(shù)據(jù)塊傳送。

③請(qǐng)求傳送。

④級(jí)聯(lián)方式。

圖6.398237級(jí)聯(lián)結(jié)構(gòu)圖3)傳送類型①接口到存貯器的傳送。

②存貯器到接口。

③存貯器到存貯器。

4)優(yōu)先級(jí)①固定優(yōu)先級(jí)。

②循環(huán)優(yōu)先級(jí)。5)傳輸速率4.8237的內(nèi)部寄存器8237有4個(gè)獨(dú)立的DMA通道,有許多內(nèi)部寄存器。表6.4給出這些寄存器的名稱、長度和數(shù)量。表6.48237的內(nèi)部寄存器1)基地址寄存器2)基字?jǐn)?shù)寄存器3)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論