微型計算機原理及應用學習筆記 數(shù)據(jù)傳送的控制方式
本文關鍵詞:計算機原理及應用
更多相關文章: 微型計算機原理及應用學習筆記 數(shù)據(jù)傳送的控制方式 山東自考網(wǎng) 政策 指南 試題 資料 論壇 考試 新聞
微型計算機原理及應用學習筆記 數(shù)據(jù)傳送的控制方式
作者:山東自考 來源:山東自考 點擊數(shù): 更新時間:2013-12-5 11:20:59
在計算機的操作過程中,最基本和最大量的操作是數(shù)據(jù)傳送。在微機系統(tǒng)中,數(shù)據(jù)主要在CPU、存儲器和I/O接口之間傳送,在數(shù)據(jù)傳送過程中,關鍵問題是數(shù)據(jù)傳送的控制方式,按照I/O控制組織的演變順序以及外設與主機并行工作的程度,微機系統(tǒng)中數(shù)據(jù)傳送的控制方式主要有兩種,即程序控制傳送方式和DMA傳送方式。
一、程序控制傳送方式
程序控制的數(shù)據(jù)傳送分為無條件傳送、查詢傳送和中斷傳送,這類傳送方式的特點是,以CPU為中心,數(shù)據(jù)傳送的控制來自CPU,通過預先編制好的輸人或輸出程序(傳送指令和I/O指令)實現(xiàn)數(shù)據(jù)的傳送。這種數(shù)據(jù)傳送方式的傳送速度較低,傳送路徑要經(jīng)過CPU內(nèi)部的寄存器,同時數(shù)據(jù)的輸入輸出的響應也較慢。
(一)無條件傳送方式
無條件傳送方式又稱“同步傳送方式”。主要用于外設的定時是固定的且是已知的場合,外設必需在微處理器限定的指令時間內(nèi)準備就緒,并完成數(shù)據(jù)的接收或發(fā)送。通常采用的辦法是:把I/O指令插入到程序中,當程序執(zhí)行到該I/O指令時,外設必定已為傳送數(shù)據(jù)作好了準備,于是在此指令時間內(nèi)完成數(shù)據(jù)傳送任務。無條件傳送是最簡便的傳送方式,它所需的硬件和軟件都較少。
一個無條件傳送的例子如圖6—9所示。這是一個同步傳送的數(shù)據(jù)采集系統(tǒng),圖中K5為繼電器(K5a為繼電器的8個控制觸點,K5b為繼電器的8個線圈),繼電器線圈L0、L1、…、L7控制8個觸點逐個接通,對8個輸入模擬量進行采樣,采樣輸入之模擬量送入一個4位10進制數(shù)字電壓表U1測量,把被采樣的模擬量轉(zhuǎn)換成16位BCD碼(4位10進制數(shù)),高8位和低8位通過兩個8位端口U2(端口地址為11H)和U3(端口地址為10H)送上系統(tǒng)的數(shù)據(jù)總線,CPU通過IN指令讀入轉(zhuǎn)換后的數(shù)字量。至于究竟采集哪一通道的模擬量,則由CPU通過U4(端口地址為20H)輸出控制信號,以控制繼電器線圈LO~L7中電流的通斷,繼而控制繼電器觸點的吸合,以實現(xiàn)對不同通道模擬量的采集(“0”使線圈L電流“斷”,“1”使線圈L電流“通”)。
以下程序可以用來實現(xiàn)圖6—9電路的數(shù)據(jù)采集。
START: MOV DX,,0100H ;01→DH,設置閉合第一個繼電器代碼
;00→DL,設置斷開所有繼電器代碼
LEA BX,DSTOR ; 輸入數(shù)據(jù)緩沖區(qū)的地址偏移量→BX
XOR AL,AL ;清AL及進位標志
AGAIN: MOV AL,DL
OUT 20H,AL ;斷開所有繼電器線圈
CALL NEAR DELAYl ;模擬繼電器觸點的釋放時間
MOV AL,DH
OUT 20H,AL 、 ;使L0吸合
CALL NEAR DELAY2 ;模擬觸點閉合及數(shù)字電壓表的轉(zhuǎn)換時間
IN AX,10H ;輸入
MOV [BX],AX
INC BX
INC BX
RCL DH,1 ;DH左移一位,為下一個觸點閉合作準備
JNC AGAIN. ;8個模擬量未輸入完,循環(huán)此段程序
(二)查詢傳送方式
查詢傳送方式又稱“異步傳送方式”。當CPU同外設工作不同步時,很難確保CPU在執(zhí)行輸入操作時,外設一定是“準備好”的;而在執(zhí)行輸出操作時,外設寄存器一定是“空”的。這樣為保證數(shù)據(jù)傳送的正確進行,提出了查詢傳送方式。當采用這種方式傳送前,CPU必須先對外設進行狀態(tài)檢測。完成一次傳送過程的步驟如下:
(1) 通過執(zhí)行一條輸入指令,讀取所選外設的當前狀態(tài)。
(2) 根據(jù)該設備的狀態(tài)決定程序去向,如果外設正處于“忙”或“未準備就緒”,則程序轉(zhuǎn)回重復檢測外設狀態(tài),如果外設處于“空”或“準備就緒”,則發(fā)出一條輸入/輸出指令,進行一次數(shù)據(jù)傳送。
一個查詢傳送的例子如圖6-10所示。這是一個采用模/數(shù)轉(zhuǎn)換器(A/D轉(zhuǎn)換器)對8個模擬量IN0~IN7采樣的數(shù)據(jù)采集系統(tǒng)。8個輸入模擬量經(jīng)過多路開關U5選擇后送人A/D轉(zhuǎn)換器U1,多路開關U5由控制端口U4(端口地址為04H)輸出的三位二進制碼(對應于b2b1b0位)控制,當b2blb0=000時選通IN0輸入A / D轉(zhuǎn)換器,當b2blb0=111時選通IN7輸入A/D轉(zhuǎn)換器,每次只送出一路模擬量到A/D轉(zhuǎn)換器。同時,由控制端口U4的b4位控制A/D轉(zhuǎn)換器的啟動(b4=1)與停止(b4=0)。當A/D轉(zhuǎn)換器完成轉(zhuǎn)換后,READY端輸出有效信號(高電平)經(jīng)過狀態(tài)端口U2(端口地址為02H)的bo位輸入到CPU的數(shù)據(jù)總線。然后,經(jīng)A/D轉(zhuǎn)換后的數(shù)據(jù)由數(shù)據(jù)端口U3(端口地址為03H)輸入CPU的數(shù)據(jù)總線。該數(shù)據(jù)采集系統(tǒng)中,采用了三個端口——數(shù)據(jù)口U3、控制口U4和狀態(tài)口U2。
根據(jù)上述要求,可編寫如下數(shù)據(jù)采集程序:
START: MOV DL,0F8H ;設置啟 動A/D轉(zhuǎn)換的信號
MOV DI,OFFSET DSTOR ;輸人數(shù)據(jù)緩沖區(qū)的地址偏移量→DI
AGAIN: MOV AL,DL
AND AL,OEFH ;使 D4 = 0
OUT 4,AL ;停止A/D轉(zhuǎn)換
CALL DELAY ;等待停止A/D操作的完成
MOV AL,DL
OUT 4,AL ;啟動A/D,且選擇模擬量INo
POLL: IN AL,2 ;輸入狀態(tài)信息
SHR AL,1
JNC POLL ;若未READY,程序循環(huán)等待
IN AL,3 ;否則,輸人數(shù)據(jù)
STOSB ;存至內(nèi)存
INC DL ;修改多路開關控制信號,指向下一個模擬量
JNE AGAIN ;8個模擬量未輸入完,循環(huán)
… … ;已完,執(zhí)行別的程序段
(三)中斷傳送方式
無條件傳送和查詢傳送的缺點是:CPU和外設只能串行工作,各外設之間也只能串行工作。為了使CPU和外設以及外設和外設之間能并行工作,以提高系統(tǒng)的工作效率,充分發(fā)揮CPU高速運算的能力,在計算機系統(tǒng)中引入了“中斷”機制,利用中斷來實現(xiàn)CPU與外設之間的數(shù)據(jù)傳送,這就是中斷傳送方式。
在中斷傳送方式中,通常是在程序中安排好在某一時刻啟動某一臺外設,然后CPU繼續(xù)執(zhí)行其主程序,當外設完成數(shù)據(jù)傳送的準備后,向CPU發(fā)出“中斷請求”信號,在CPU可以響應中斷的條件下,現(xiàn)行主程序被“中斷”,轉(zhuǎn)去執(zhí)行“中斷服務程序”,在“中斷服務程序”中完成一次CPU與外設之間的數(shù)據(jù)傳送,傳送完成后仍返回被中斷的主程序,從斷點處繼續(xù)執(zhí)行。
采用中斷傳送方式時,CPU從啟動外設直到外設就緒這段時間,一直仍在執(zhí)行主程序,而不是象查詢方式中處于等待狀態(tài),僅僅是在外設準備好數(shù)據(jù)傳送的情況下才中止CPU執(zhí)行的主程序,在一定程度上實現(xiàn)了主機和外設的并行工作。同時,如果某一時刻有幾臺外設發(fā)出中斷請求,CPU可以根據(jù)預先安排好的優(yōu)先順序,按輕重緩急處理幾臺外設同CPU的數(shù)據(jù)傳送,這樣在一定程度上也可實現(xiàn)幾個外設的并行工作。
中斷傳送方式的接口電路如圖6—11所示。這是一個輸入接口電路。當輸入設備準備好一個數(shù)據(jù)后,發(fā)出選通信號STB,該信號一路送數(shù)據(jù)鎖存器Ul,使輸入設備的8位數(shù)據(jù)送入鎖存器U1;另一路送中斷請求觸發(fā)器U2,將U2置“1”,若系統(tǒng)允許該設備發(fā)出中斷請求,則中斷屏蔽觸發(fā)器U3已置“l(fā)”,從而通過與門U7向CPU發(fā)出中斷請求信號INTR。若無其他設備的中斷請求,在CPU開中(即IF=1)的情況下CPU則在現(xiàn)行指令結(jié)束后,CPU響應該設備的中斷請求,執(zhí)行中斷響應總線周期,發(fā)出中斷響應信號,要求提出中斷請求的外設把一個字節(jié)的中斷類型碼送上數(shù)據(jù)總線,然后CPU根據(jù)該中斷類型碼轉(zhuǎn)而去執(zhí)行中斷服務程序,讀人數(shù)據(jù)(通過IN指令,打開三態(tài)緩沖器U4),同時復位中斷請求觸發(fā)器U2。中斷服務完成后,再返回被中斷的主程序。
二、DMA(直接存儲器存取)傳送方式
當某些外設,諸如磁盤、CRT顯示器、高速模數(shù)轉(zhuǎn)換器等要求高速而大量地傳送數(shù)據(jù)時,采用程序控制方式來傳送數(shù)據(jù)往往無法滿足速度的要求,就拿程序控制方式中傳送速度最快的中斷方式而言,每傳送一個字節(jié)(或一個字)都得把主程序停下來,轉(zhuǎn)而去執(zhí)行中斷服務程序,在執(zhí)行中斷服務程序前要做好現(xiàn)場保護,執(zhí)行完中斷服務程序后還得恢復現(xiàn)場。由于在程序控制方式中數(shù)據(jù)傳送過程始終受CPU的干預,CPU都需要取出和執(zhí)行一系列指令,每一字節(jié)(或字)數(shù)據(jù)都必需經(jīng)過CPU的累加器才能輸入輸出,這就從根本上限制了數(shù)據(jù)傳送的速度。為此提出了在外設和內(nèi)存之間直接地傳送數(shù)據(jù)的方式,即DMA傳送方式。
DMA(DirectMemoryAccess)是一種不需要CPU干預也不需要軟件介入的高速數(shù)據(jù)傳送方式。由于CPU只起動而不干預這一傳送過程,同時整個傳送過程只由硬件完成而不需軟件介入,所以其數(shù)據(jù)傳送速率可以達到很高。在DMA傳送方式中,對這一數(shù)據(jù)傳送過程進行控制的硬件稱為DMA控制器(DMAC)。
(一)DMA操作的基本方法
DMA操作的基本方法有三種:
1.周期挪用(CycleStealing)
利用CPU不訪問存儲器的那些周期來實現(xiàn)DMA操作,此時,DMAC可以使用總線而不用通知CPU也不會妨礙CPU的工作。這種方法的關鍵是如何識別合適的可挪用的周期,以避免同CPU的操作發(fā)生重疊。有的CPU能產(chǎn)生一個表示存儲器是否正在被使用的信號(例如M6800的VMA),有的CPU則規(guī)定在特定狀態(tài)下(例如Intel8080的T4、T5狀態(tài))不訪問存儲器,此時就可用于實現(xiàn)DMA操作。周期挪用并不減慢CPU的操作。但可能需要復雜的時序電路,而且數(shù)據(jù)傳送過程是不連續(xù)的和不規(guī)則的。
2.周期擴展
使用專門的時鐘發(fā)生器/驅(qū)動器電路,當需要進行DMA操作時,由DMAC發(fā)出請求信號給時鐘電路,時鐘電路把供給CPU的時鐘周期加寬,而提供給存儲器和DMAC的時鐘周期不變。這樣,CPU在加寬時鐘周期內(nèi)操作不往下進行,而這加寬的時鐘周期相當于若干個正常的時鐘周期,可用來進行DMA操作。加寬的時鐘結(jié)束后,CPU仍按正常的時鐘繼續(xù)操作。這種方法會使CPU的處理速度減慢,而且CPU時鐘周期的加寬是有限制的。因此用這種方法進行DMA傳送,一次只能傳送一個字節(jié)。 ’
3.CPU停機方式
在這種方式下,當DMAC要進行DMA傳送時,DMAC向CPU發(fā)出DMA請求信號,迫使CPU在現(xiàn)行的總線周期(機器周期)結(jié)束后,使其地址總線、數(shù)據(jù)總線和部分控制總線處于高阻態(tài),從而讓出對總線的控制權,并給出DMA響應信號。DMAC接到該響應信號后,就可以控制總線,進行數(shù)據(jù)傳送的控制工作,直到DMA操作完成,CPU再恢復對總線的控制權,繼續(xù)執(zhí)行被中斷的程序。注意,采用這種方法進行的DMA傳送期間,CPU處于空閑狀態(tài),會降低CPU的利用率,而且會影響CPU對中斷(包括不可屏蔽中斷)的響應和動態(tài)RAM的刷新,這是需要加以考慮的。但在實際應用中,這是最常用、最簡單的傳送方式,大部分DMAC都采用這種方式。
(二)DMA的傳送方式
通常,大部分DMAC都有三種DMA傳送方式:
1.單字節(jié)傳送方式
每次DMA傳送只傳送一個字節(jié)的數(shù)據(jù),傳送后釋放總線由CPU控制總線至少一個完整的總線周期。以后又測試DMA請求線DREQ,若有效,再進入DMA周期。在這種方式中要注意:①在DMA響應信號DACK有效前,DREQ必須保持有效;②若DREQ在傳送過程中一直保持有效,在兩次傳送之間也必需釋放總線。
2.成組傳送方式
一個DMA請求可以傳送一組信息,這一組信息的字節(jié)數(shù)由編程決定(在DMAC初始化時),只要在DACK有效之前DREQ保持有效即可。一旦DACK有效,不管DREQ是否有效,DMAC一直不放棄總線控制權,直到整個數(shù)組傳送完。
3.請求傳送方式
請求傳送方式又稱查詢傳送方式。該方式的傳送類似于成組傳送方式,但每傳送一個字節(jié)后,DMAC就檢測DREQ,若無效,則掛起;若有效,繼續(xù)DMA傳送,直到:①一組信息傳送結(jié)束;②外加信號強制DMAC中止操作。
(三)DMAC(DMA控制器)的基本功能
在DMA操作中,DMAC是控制存儲器和外設之間高速傳送數(shù)據(jù)的硬件電路, 是一種完成直接數(shù)據(jù)傳送的專用處理器,它必需能夠取代CPU和軟件在程序控制傳送中的各項功能,因此DMAC應該具有如下功能:
(1)能接受外設的DMA請求信號DREQ,并能向外設發(fā)出DMA響應信號DACK;
(2)能向CPU發(fā)出總線請求信號(HOLD或BUSRQ),當CPU發(fā)出總線響應信號(HLDA或BUSAK)后能接管對總線的控制權,進入DMA方式;
(3)能發(fā)出地址信息,對存儲器尋址并修改地址指針;
(4)能發(fā)出讀、寫等控制信號,包括存儲器訪問信號和I/O訪問信號;
(5)能決定傳送的字節(jié)數(shù),并能判斷DMA傳送是否結(jié)束;
(6)能發(fā)出DMA結(jié)束信號,釋放總線,使CPU恢復正常工作。
具有上述功能的DMAC工作示意圖如圖6-12所示。
該電路的工作過程如下:當輸入設備準備好一個字節(jié)數(shù)據(jù)時,發(fā)出選通脈沖STB,該信號一方面選通“數(shù)據(jù)緩沖寄存器”U2,把輸人數(shù)據(jù)通過U2送入“鎖存器”U3;另一方面將“DMA請求觸發(fā)器”U1置“1”,作為鎖存器U3的準備就緒信號READY,打開鎖存器U3,把輸入數(shù)據(jù)送上數(shù)據(jù)總線;同時DMA請求觸發(fā)器U1向DMAC發(fā)出DMA請求信號。然后,DMAC向CPU發(fā)出HOLD(總線請求)信號,CPU在現(xiàn)行總線周期結(jié)束后給予響應,發(fā)出HLDA信號,DMAC接到該信號后接管總線控制權,發(fā)出DMA響應和地址信息,并發(fā)出存儲器寫命令,把外設輸入數(shù)據(jù)(經(jīng)緩沖器U2、鎖存器U3暫存在系統(tǒng)數(shù)據(jù)總線上)寫到內(nèi)存,然后修改地址指針,修改計數(shù)器、檢查傳送是否結(jié)束,若未結(jié)束,則循環(huán)傳送直至整個數(shù)據(jù)塊傳送完。在整個數(shù)據(jù)塊傳送完后,DMAC撤除總線請求信號HOLD,在下一個T周期的上升沿,使HLDA變?yōu)闊o效。上述過程如圖6—13的波形圖所示。
本文編號:725006
本文鏈接:http://sikaile.net/wenshubaike/dxkc/725006.html