




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第10章串行接口和DMA接口
10.1串行通信的基本概念串行通信定義
所謂串行通信就是一條信息的各位數(shù)據(jù)位在一個信道上按照固定的時間長度被逐位按順序傳送的通訊方式稱為串行通訊。D0D1D2D3D4D5D6D7t串行通信的信息傳送速度低慢,信息率低,但串行通信的成本低,適合遠距離傳輸。串行通信的數(shù)據(jù)傳送方式單工:接收方有接收器,發(fā)送方有發(fā)送器,數(shù)據(jù)只能一條信道單向傳送全雙工:接收方和發(fā)送方各有一組發(fā)送器和接收器,數(shù)據(jù)在兩條獨立的信道上同時進行雙向傳送半雙工:接收方和發(fā)送方各有一組發(fā)送器和接收器,數(shù)據(jù)在一條共享的信道上分時進行雙向傳送發(fā)送器接收器A站B站信號地單工發(fā)送器接收器接收器發(fā)送器A站B站信號地全雙工發(fā)送器接收器發(fā)送器接收器A站B站信號地半雙工串行通信的過程串口電話線調(diào)制解調(diào)器計算機串行通訊控制器調(diào)制解調(diào)器計算機串行通訊控制器串口將并行數(shù)據(jù)轉(zhuǎn)化為串行數(shù)據(jù),聯(lián)絡CPU和調(diào)制解調(diào)器的通信為調(diào)制解調(diào)器和串行通信控制器之間提供一個標準接口,規(guī)定連線的含義。將數(shù)字信號轉(zhuǎn)化為模擬信號將模擬信號轉(zhuǎn)化為數(shù)字信號為調(diào)制解調(diào)器和串行通信控制器之間提供一個標準接口,規(guī)定連線的含義。將串行數(shù)據(jù)轉(zhuǎn)化為并行數(shù)據(jù),聯(lián)絡CPU和調(diào)制解調(diào)器的通信串行通信相關概念波特率:每秒傳送的數(shù)據(jù)位數(shù)標準波特率:1103006001200180024004800960019200發(fā)送方發(fā)送1個比特位所用的時間長度稱為發(fā)送時鐘。接受方接受1個比特位所用的時間長度稱為接收時鐘。起始位發(fā)送的數(shù)據(jù)101001…
…接收的數(shù)據(jù)發(fā)送時鐘接收時鐘注意:串行通信中傳送距離隨著傳送速率的增加而減少。波特率因子:收發(fā)時鐘倍頻于波特率的倍數(shù)稱為波特率因子波特率因子可以是1,16,32,64。例如:如果波特率是300,波特率因子是16,則發(fā)送時鐘和接收時鐘的頻率是4800,接收時鐘16倍頻于波特率100接收時鐘接收的數(shù)據(jù)8個起始位中心16個位采樣16個位采樣檢測到起始位異步通信協(xié)議:數(shù)據(jù)以單個字符為單位在信道上傳輸,兩個字符之間的傳輸間隔是任意的,所以每個字符的前后要加上一些特殊的數(shù)位作為分割位。串行通信的工作方式空閑位停止位1,1.5或2位奇偶校驗數(shù)據(jù)位(5~8位)起始位不限有/無(先低后高位)1位0/101110/10/10/1…0/10/10LSBMSB第n個字符第n+1個字符起始位:1位,低電平,表示一個字符開始傳遞數(shù)據(jù)位:5~8位,先低位后高位校驗位:1位/0位,奇偶校驗停止位:1位、1.5位或2位,高電平,表示字符傳遞結束異步傳輸?shù)膸袷浇邮諘r鐘發(fā)送時鐘1起始位0發(fā)送的數(shù)據(jù)收發(fā)時鐘16倍頻于波特率接收的數(shù)據(jù)采用異步通信時,接收方總是在每個字符的起始位開始的時候進行一次時鐘的重新定位,因此當收發(fā)時鐘的偏差不大時,不會產(chǎn)生采樣錯誤,但是異步通信的無用比特位的比重很大。所以異步通信的特點是不要求雙方時鐘完全一致,但傳輸率比較低。同步通信協(xié)議:數(shù)據(jù)以字符組為單位的在信道上傳輸,發(fā)送方在傳送的字符組前要加上同步字符,接受方以同步字符作為接收的標志。發(fā)送方接收方同步字符同步字符字符字符字符…
…在同步傳輸中,由于收發(fā)雙方一次可以傳遞數(shù)據(jù)單位是一個字符組,這就要求接收方要經(jīng)過多次采樣來接收數(shù)據(jù),所以要求雙方時鐘完全一致,但是同步傳輸無用的信息量較少,所以傳送的效率高。因此同步通信的特點是發(fā)送率高,但發(fā)送雙方要求嚴格的相同時鐘周期。SYNSYNSOHTITLESTX正文ETX/ETBBCC幀信息各部分的含義:
SYN:同步字段,單同步加1個,雙同步加2個。
SOH:序始字段,它表示標題的開始,標題中一般包括源地址、目標地址和路由指示等信息。
TITLE:標題字段,包括用戶自定義的附加信息。
STX:文始字段,標示正文傳送的開始。
ETX/ETB:文終/組終字段,如果將正文分成很多個數(shù)據(jù)塊在不同的幀中傳送,每一個分數(shù)據(jù)塊后面用組終字符,最后一個分數(shù)據(jù)塊后面用文終字符。
BCC:效驗位字段,奇偶校驗或CRC校驗同步傳輸?shù)男畔袷酱型ㄓ嵔涌跇藴蔙S-232C接口標準RS-422A接口標準RS-485接口標準
RS-232C是美國電子工業(yè)協(xié)會制定的一種串行物理接口標準,現(xiàn)在在微機中廣泛的使用,它為數(shù)據(jù)終端設備DTE(計算機)和數(shù)據(jù)通信設備DCE(調(diào)制解調(diào)器)的連接提供了一個標準的接口。對于RS-232C接口我們從它的機械特性,電氣特性和功能特性三個方面介紹它。RS-232C接口的機械特性9針接口25針接口RS-232C接口的電氣特性
RS-232-C采用負邏輯規(guī)定邏輯電平,信號電平與通常的TTL電平不一致,規(guī)定-5~-15V表示1,+5~+15V表示0,所以需要在接收端和發(fā)送端進行電平的轉(zhuǎn)化。信號地+12V+5V-12V接收器發(fā)送器RS-232C電平TTL電平TTL電平MC1488MC1489MC1488和MC1489電平轉(zhuǎn)換器RS-232C接口的功能特性(信號線的定義)TxD:發(fā)送數(shù)據(jù),DTEDCERxD:接收數(shù)據(jù),DTEDCEDTR:DTE準備好,DTEDCEDSR:DCE準備好,DTEDCERTS:請求發(fā)送,DTEDCECTS:允許發(fā)送,DTEDCERI:振鈴指示,DTEDCECD:載波檢測,DTEDCESG:信號地DTE:數(shù)據(jù)終端設備(計算機)DCE:數(shù)據(jù)通信設備(調(diào)制解調(diào)器)10.2可編程串行接口控制器8251AIntel8251A是為Intel微處理器設計的可編程串行通信接口,是通用同步/異步接收發(fā)送器。通過編程,可工作在全雙工的串行通信的同步方式或異步方式下。在異步方式傳送時,可用5~8位表示字符,用1位作為奇/偶校驗,能自動為每個數(shù)據(jù)增加1個啟動位,增加1個、1.5個或2個停止位,波特率為0~19.2K。在同步方式傳送時,可用5~8位表示字符,自動插入同步字符,內(nèi)部能自動檢測同步字符,波特率為0~64K。D2D3RXDGNDD4D5D6D7TXCWRCSC/DRDRXRDYD1D0VCC
RXCDTRRTSDSRRESETCLKTXDTXECTSSYNDETTXRDY123456789101112131428272625242322212019181716158251A8251A的引腳連接8251A與CPU的連接信號內(nèi)部寄存器訪問控制信號,由于8251A只有8位數(shù)據(jù)線,將地址總線的A0接入8251A的C/D端,用來區(qū)分8251A的內(nèi)部寄存器。發(fā)送緩沖器準備好信號,8251A發(fā)送該信號給CPU表明發(fā)送緩沖區(qū)空,可以接收新字符。當CPU接到該信號后,就向8251A傳送一個新字符。并-串轉(zhuǎn)化器空信號,8251A發(fā)送該信號給CPU,表明并-串轉(zhuǎn)化器空,指示了一個發(fā)送字符過程的完成。接收緩沖器準備好信號,該信號表明8251A已從外設接到一個字符,接收緩沖區(qū)滿。當CPU接到該信號后,就從8251A取走一個字符。該信號僅用在同步傳輸下。作為輸出時,8251A工作于內(nèi)同步方式,當8251A檢測到所要求的同步字符后,該信號變?yōu)橛行щ娖?,同步傳輸開始;作為輸入時,8251A工作于外同步方式,從該引腿引入的正跳變,使8251A進入同步傳輸。8251A的引腳連接8251A與外設的連接信號8251A和調(diào)試解調(diào)器的收發(fā)聯(lián)絡信號發(fā)送器數(shù)據(jù)信號端用來輸出數(shù)據(jù)接收器數(shù)據(jù)信號端用來輸入數(shù)據(jù)接收時鐘發(fā)送時鐘8251A的編程結構指示傳輸過程中的某個錯誤或者當前的傳輸狀態(tài)決定接口的工作方式將輸入線上的串行數(shù)據(jù)轉(zhuǎn)化為并行數(shù)據(jù)。接收移位寄存器的并行數(shù)據(jù)隨時通過數(shù)據(jù)總線送至CPU接收數(shù)據(jù)總線的并行數(shù)據(jù)隨時送至移位寄存器。將并行數(shù)據(jù)轉(zhuǎn)化為串行數(shù)據(jù)通過輸出線送出。決定接口工作方式是同步傳輸還是異步傳輸,以及數(shù)據(jù)幀格式。在同步方式下,接收并存儲同步字符。8251A的端口地址在微機系統(tǒng)中,地址總線的A0端接入8251A的C/D端,當A0為0時訪問的是偶地址端口,當A0為1時訪問的是奇地址端口,即通過C/D端為0或者1來區(qū)分內(nèi)部寄存器。模式寄存器對應奇地址單元,即C/D端為1同步字符寄存器對應奇地址單元,即C/D端為1控制寄存器對應對于奇地址單元,即C/D端為1狀態(tài)寄存器對應對于奇地址單元,即C/D端為1數(shù)據(jù)輸入緩沖器對應偶地址單元,即C/D端為0數(shù)據(jù)輸出緩沖器對應偶地址單元,即C/D端為0如何用2個端口地址區(qū)分7個寄存器呢?8251A的初始化8251A初始化的約定:芯片復位后,第一次奇地址寫入的值作為模式字送模式寄存器。
若模式字規(guī)定8251A為同步傳輸模式,接著往奇地址端口輸出的字節(jié)為同步字符。此后除復位命令,往奇地址寫入的值將送到控制寄存器,從奇地址讀出的是狀態(tài)寄存器;
往偶地址端口寫入的值送數(shù)據(jù)輸出寄存器,從偶地址讀出數(shù)據(jù)輸入寄存器的值。
模式寄存器由于8251A可以工作在同步方式下,也可以工作在異步方式下,模式寄存器有兩種格式,當模式寄存器的最低兩位為0時,8251A工作于同步模式,該寄存器為同步模式寄存器。
SCSESDEPPENL2L1000–內(nèi)同步1–外同步數(shù)據(jù)位的位數(shù)00–5位01–6位10–7位11–8位同步模式0–無效驗位1–有效驗位0–奇效驗1–偶效驗0–2個同步字符1–1個同步字符1C/D當模式寄存器的最低兩位不全為0時,8251A工作于異步模式,該寄存器為異步模式寄存器。
1C/DS2S1EPPENL2L1B2B1停止位的數(shù)目:00–無意義01–1個停止位10–1.5個停止位11–2個停止位數(shù)據(jù)位的位數(shù)00–5位01–6位10–7位11–8位00-同步模式01-波特率因子110-波特率因子1611-波特率因子640–無效驗位1–有效驗位0–奇效驗1–偶效驗控制寄存器EHIRRTSERSBRKRXENDTRTXEN8251A芯片復位后,向奇地址端口寫完模式寄存器和同步字符后(如果是同步方式),以后除了復位命令外,寫入奇地址端口的值作為控制字送控制寄存器。1C/D發(fā)送允許使DTR引腿為低電平接收允許使TXD引腿為低電平,停止發(fā)送使狀態(tài)寄存器的出錯標志復位使RTS引腿為低電平進行內(nèi)部復位搜索同步字符異步模式下的初始化程序舉例:例:設8251A的端口地址是51H和52H,采用異步通信方式,7位數(shù)據(jù)位,2個停止位,偶效驗方式,波特率因子為16,寫出初始化8251A的程序段。MOVAL,0FAHOUT51H,AL設置模式寄存器111110102位停止位,偶效驗,7位數(shù)據(jù)位,波特率因子16MOVAL,37HOUT51H,AL設置控制寄存器00110111請求發(fā)送信號RTS有效,清除狀態(tài)寄存器的出錯標志,接收啟動,數(shù)據(jù)終端準備好信號DTR有效,發(fā)送啟動。同步模式下的初始化程序舉例:例:設8251A的端口地址是51H和52H,內(nèi)同步通信方式,同步字符的數(shù)目為2個,均為16H,7位數(shù)據(jù)位,偶效驗,寫出初始化8251A的程序段。MOVAL,38HOUT51H,AL設置模式寄存器001110002個同步字符,采用內(nèi)同步方式,偶效驗,7位數(shù)據(jù)位。MOVAL,0B7HOUT51H,AL設置控制寄存器10110111搜索同步字符,請求發(fā)送信號RTS有效,清除狀態(tài)寄存器的出錯標志,接收啟動,數(shù)據(jù)終端準備好信號DTR有效,發(fā)送啟動。MOVAL,16HOUT51H,ALOUT51H,AL兩個同步字符均為16H例:設8251A的端口地址是51H和52H,使8251A內(nèi)部復位,并且允許接收,又允許發(fā)送,則程序段為:…………MOVDX,51HMOVAL,00HOUTDX,AL;控制字,停止通信MOVAL,40HOUTDX,AL;控制字,置D6=1,使內(nèi)部復位MOVAL,0DEHOUTDX,AL;模式字,復位后首次訪問奇地址MOVAL,05H;控制字,置D0、D3=1,允許接收和發(fā)送OUTDX,AL
…………狀態(tài)寄存器8251A芯片復位后,向奇地址端口寫完模式寄存器和同步字符后(如果是同步方式),以后除了復位命令外,從奇地址端口讀出的值是狀態(tài)寄存器。1C/DDSRSYNDETFEOEPETXERXRDYTXRDY數(shù)據(jù)輸出緩沖器準備好輸出移位寄存器為空指示奇偶效驗錯誤指示覆蓋錯誤與SYNDET引腿電平相同指示DSR引腿為低電平數(shù)據(jù)輸入緩沖器準備好指示幀格式錯誤DSRSYNDETFEOEPETXERXRDYTXRDY狀態(tài)寄存器的TXRDY=1指示出數(shù)據(jù)輸出緩沖器準備好,即輸出緩沖器為空,CPU可以向8251A發(fā)送數(shù)據(jù);狀態(tài)寄存器的RXRDY=1指示出數(shù)據(jù)輸入緩沖器準備好,即輸入緩沖器滿,CPU可以從8251A讀取數(shù)據(jù);這兩個狀態(tài)位可以在程序設計時加以利用,實現(xiàn)對8251A數(shù)據(jù)發(fā)送過程和接收過程的控制。DSRSYNDETFEOEPETXERXRDYTXRDY狀態(tài)寄存器的PE、OE、FE位為1時分別指示出傳輸過程中的三種錯誤,在程序設計時可以加以利用,實現(xiàn)對數(shù)據(jù)傳輸過程中數(shù)據(jù)準確性的測試。系統(tǒng)復位送模式字送同步字符1同步模式?NY要同步字符2?送同步字符2YN送控制字內(nèi)部復位?YN讀狀態(tài)字N傳送數(shù)據(jù)傳輸結束?NN能傳輸嗎?Y傳輸出錯?Y結束Y利用狀態(tài)字進行編程的舉例:下面的程序段先對8251A初始化,然后對狀態(tài)寄存器的狀態(tài)位進行測試,本程序通過8251A接收80個字符。規(guī)定8251A的端口地址是51H,52H。即控制寄存器和狀態(tài)寄存器端口地址為51H,數(shù)據(jù)輸入寄存器和數(shù)據(jù)輸出寄存器的端口地址為52H。字符輸入后,放在BUFFER標號所指的內(nèi)存緩沖區(qū)中。程序的外循環(huán)每次循環(huán)接收一個字符,共循環(huán)80次;內(nèi)循環(huán)對狀態(tài)寄存器的RXRDY不斷測試,看8251A是否從外設接收到一個字符,如果接收到就讀入并送內(nèi)存緩沖區(qū);程序還對狀態(tài)寄存器的出錯指示位進行檢測,如果傳輸過程中出現(xiàn)錯誤就停止并調(diào)用出錯處理子程序。出錯處理子程序沒有具體給出。MOVAL,0FEH;設置模式字,異步模式,波特率因子為16OUT51H,AL;8個數(shù)據(jù)位,2個停止位,偶校驗MOVAL,37HOUT51H,AL;設置控制字,啟動收發(fā)器工作,清除出錯位MOVDI,0;變址寄存器初始化MOVCX,80;置循環(huán)次數(shù),共收取80個字符BEGIN:INAL,51H;讀取狀態(tài)寄存器TESTAL,02H;測試RXRDY是否為1JZBEGIN;如果RXRDY為0,則讀狀態(tài)字繼續(xù)測試INAL,52H;從數(shù)據(jù)輸入寄存器讀取字符
MOVDX,OFFSETBUFFERMOV[DX+DI],AL;將AL中字符送緩沖區(qū)INCDI;修改緩沖區(qū)指針DIINAL,51H;讀取狀態(tài)寄存器TESTAL,38H;測試出錯標志位,檢查傳輸有無錯誤
JNZERROR;如果有錯,轉(zhuǎn)入出錯處理程序LOOPBEGIN;如沒有錯,則繼續(xù)循環(huán)接收下1個字符JMPEXIT;如輸入滿80個字符,則結束ERROR:CALLERR_OUT;調(diào)用出錯處理程序EXIT:…例:雙機串口通信CPU8251ATxDRxDSGTxCRxC8251ATxDRxDSGTxCRxCCPU時鐘時鐘EIA/TTL變換EIA/TTL變換要求:在甲乙兩臺微機之間進行串行通信。甲機發(fā)送,乙機接收。要求把甲機上開發(fā)的應用程序(其長度為2DH)傳送到乙機中去。采用起止式異步方式,字符長度為8位,2位停止位,波特率因子為64,無校驗,波特率為4800。CPU與8251A之間用查詢方式交換數(shù)據(jù)??诘刂贩峙涫牵?09H為命令/狀態(tài)口,30AH為數(shù)據(jù)口。由于是近距離傳輸,硬件連接只需TxD、RxD和SG三根線連接就能通信,可以不設MODEM,同時是采用查詢I/O方式,故收/發(fā)程序中只需檢查發(fā)/收準備好的狀態(tài)是否置位,即可收發(fā)1個字節(jié)。軟件編程:接收和發(fā)送程序分開編寫,每個程序段中包括8251A初始化,狀態(tài)查詢和輸入/輸出幾部分。發(fā)送程序:(略去STACK和DATA段)CODESEGMENTASSUMECS:CODESENDPROCSTART:MOVDX,309H
MOVAL,00H
OUTDX,AL;控制字,停止通信
MOVAL,40H
OUTDX,AL;控制字,內(nèi)部復位NOPMOVAL,0CFHOUTDX,AL;模式字(異步,2位停止位,字符長度;為8位,無校驗,波特率因子為64)
MOVAL,31HOUTDX,AL;控制字(RTS、ER、和TxEN均置位)
MOVCX,2DH;傳送字節(jié)數(shù)
MOVSI,300H;發(fā)送區(qū)首址L1:MOVDX,309H
INAL,DX;狀態(tài)字
TESTAL,38H;查出錯標記位
JNZERR;ERR省略
ANDAL,01H;查狀態(tài)位D0(TxRDY)=1?
JZL1;發(fā)送未準備好,則等待
MOVDX,30AH;數(shù)據(jù)口
MOVAL,[SI];從發(fā)送區(qū)取1字節(jié)發(fā)送
OUTDX,AL
INCSI;修改內(nèi)存地址
DECCX;字書數(shù)減1JNZL1;未發(fā)送完,繼續(xù)MOVAX,4CHINT21H;已送完,回DOSSENDENDPCODEENDSENDSTART接收程序:(略去STACK和DATA段)CODESEGMENTASSUMECS:CODERECPROCSTART:MOVDX,309H
MOVAL,00H
OUTDX,AL;控制字,停止通信
MOVAL,40H
OUTDX,AL;控制字,內(nèi)部復位NOPMOVAL,0CFHOUTDX,AL;模式字(異步,2位停止位,字符長度;為8位,無校驗,波特率因子為64)
MOVAL,16HOUTDX,AL;控制字(ER、RxEN和DTR均置位)
MOVCX,2DH;接收字節(jié)數(shù)
MOVDI,400H;接收區(qū)首址L2:MOVDX,309H
INAL,DX;狀態(tài)字
TESTAL,38H;查出錯標記位
JNZERR;ERR省略
ANDAL,02H;查狀態(tài)位D1(RxRDY)=1?
JZL2;發(fā)送未準備好,則等待MOVDX,30AH;數(shù)據(jù)口INAL,DX
MOV[DI],AL;從發(fā)送區(qū)取1字節(jié)發(fā)送
INCDI;修改內(nèi)存地址
DECCX;字書數(shù)減1JNZL2;未發(fā)送完,繼續(xù)MOVAX,4CHINT21H;已送完,回DOSRECENDPCODEENDSENDSTART并行通信和串行通信的比較并行通信傳輸速度快,信息率高,不適合遠距離通信;串行通信傳輸速度慢,信息率低,適合遠距離通信。串行通信在傳遞一個字符的過程中,字符從哪里開始,從哪里結束有嚴格的信息幀的組織格式,串行通信有RS-232C等成熟的標準;并行通信在字符傳遞的過程中,沒有信息幀的組織格式,并行通信也沒有標準化。串行通信中嚴格的區(qū)分了異步通信和同步通信方式;在并行通信中也沒有對異步傳輸和同步傳輸作出嚴格的規(guī)定。實際上在并行通信中,如果CPU用一個時鐘信號管理接口和外設,那么這種并行傳輸看作是同步傳輸;如果CPU和接口與外設之間只有應答信號,這種并行傳輸看作是異步傳輸。10.3DMA控制接口8237A考慮外設與接口的數(shù)據(jù)傳輸方式:1)查詢方式:CPU通過程序讀取接口的狀態(tài)寄存器,查詢外設是否處于就緒狀態(tài),在該方式中CPU的絕大部分時間在循環(huán)等待,利用率極低。傳輸一個字符的過程中,CPU全程干預。2)中斷方式:當外設準備就緒后,發(fā)送中斷請求給CPU,要求CPU提供服務,在該方式中,CPU的利用率得到了極大的提高。在傳輸一個字符的過程中,CPU要進行中斷響應和中斷返回兩次干預。
雖然中斷技術使得CPU的利用率得到了極大的提高,但是對于大量數(shù)據(jù)的成批傳輸,該方式仍顯不足。例如一次傳遞1M字節(jié)的文件,CPU要進行100萬次的中斷服務,每次中斷服務都要經(jīng)過中斷響應,保存斷點,保存現(xiàn)場,處理服務子程序和中斷返回等過程,使CPU的利用率大幅下降。DMA的基本概念為了進一步提高CPU的利用率,人們提出了直接內(nèi)存訪文技術,即DirectMemoryAccess,簡稱DMA技術。在DMA方式下,外部設備利用專門的接口電路直接和內(nèi)存進行高速的數(shù)據(jù)交換,不需要CPU的干預。這樣在進行數(shù)據(jù)傳輸時就不需要像中斷那樣要進行保護斷點之類的一系列操作,使CPU的利用率得到大幅度的提高。利用DMA方式進行數(shù)據(jù)傳輸時,當然要利用系統(tǒng)中的數(shù)據(jù)總線,地址總線和控制總線,但是系統(tǒng)的總線是由CPU管理控制的。因此用DMA方式進行數(shù)據(jù)傳輸?shù)臅r候,接口電路需要向CPU發(fā)送總線請求,申請CPU讓出總線,即把總線控制權交給控制DMA傳輸?shù)慕涌陔娐?。這種能夠控制系統(tǒng)總線完成外設與內(nèi)存之間大量數(shù)據(jù)交換的接口電路就是DMA控制器。
基本的DMA控制器-外設準備進行DMA操作時,DMA控制器必須能夠接收外設發(fā)來的DMA請求信號,并向CPU發(fā)送總線請求信號。-CPU接收到總線請求信號后,如果同意放棄總線,向DMA控制器發(fā)送總線請求應答信號。-DMA控制器得到總線控制權后,能向地址總線發(fā)地址信號指示出寫入數(shù)據(jù)的內(nèi)存單元或者讀出數(shù)據(jù)的內(nèi)存單元,因此DMA控制器中必須有地址寄存器存放讀寫數(shù)據(jù)的起始內(nèi)存單元的地址。而且每傳送一個字節(jié),會自動對地址寄存器進行修改,指向下一個要傳送的字節(jié)。-DMA控制器應該能判斷DMA過程是否結束,即一次傳送的字節(jié)數(shù),因此DMA控制器必須有字節(jié)計數(shù)器,用來存放要傳遞的字節(jié)數(shù),并且每傳遞一個字節(jié)字節(jié)計數(shù)器自動減1。-DMA過程結束時,DMA控制器能向CPU發(fā)DMA中斷結束信號,交還總線控制權。DMA控制器的基本組成DMA接口主存CPUDMA
控制邏輯
中斷邏輯設備HLDA地址寄存器字節(jié)計數(shù)器HOLD中斷請求數(shù)據(jù)線地址線+1-1溢出信號DREQDACK數(shù)據(jù)緩沖寄存器DMA數(shù)據(jù)傳送的過程
如果外設向內(nèi)存?zhèn)魉鸵粋€數(shù)據(jù)塊(輸入過程),使用DMA方式時,系統(tǒng)按照下面的過程動作:1)外設向DMA發(fā)送一個DMA請求2)DMA控制器發(fā)總線請求,得到CPU的允許信號取得總線控制權3)DMA控制器中的地址寄存器的內(nèi)容送地址總線4)DMA控制器向外設發(fā)送確認DMA傳輸信號,用來通知外設將數(shù)據(jù)送到數(shù)據(jù)總線。5)數(shù)據(jù)總線上的數(shù)據(jù)送到地址總線所指示的內(nèi)存單元6)地址寄存器的值加1,指示下一個數(shù)據(jù)存放的內(nèi)存單元7)字節(jié)計數(shù)器的值減18)如字節(jié)計數(shù)器的值不為0,則回到第3步,否則DMA過程結束允許傳送?地址寄存器->地址總線數(shù)據(jù)->數(shù)據(jù)總線->主存
地址寄存器加1字節(jié)計數(shù)器減1數(shù)據(jù)塊傳送結束?向CPU申請中斷請求DMA請求否否是是DMA控制器預處理:主存起始地址傳送數(shù)據(jù)個數(shù)啟動設備DMADMA繼續(xù)執(zhí)行主程序后處理:中斷服務程序做DMA結束處理,如校驗等工作繼續(xù)執(zhí)行主程序CPU8237A是INTEL系列中的高性能DMA控制器:8237A內(nèi)部包括4個獨立的通道,可以同時在4個外設和存儲器之間進行DMA傳輸。
外設和存儲器之間的傳輸速度可達1.6MB/S
通過軟件編程可控制8237A工作在多種方式下,使用方便。DMA控制器一方面和其他接口一樣,接受CPU對它的讀/寫操作,包括向DMA控制器設置控制字,設置地址初值和計數(shù)初值以及讀取狀態(tài)字,這時稱它為總線從模塊;一方面,DMA控制器能夠控制系統(tǒng)總線,像CPU一樣操縱外設和存儲器之間的數(shù)據(jù)交換,這時稱它為總線主模塊。因此,對8237A的內(nèi)部結構和外部連接也是從兩方面分析。8237A主要功能8237A內(nèi)部結構8237A的引腿及其功能DMA控制器向CPU發(fā)送的總線請求信號CPU向DMA控制器發(fā)送的總線響應信號外設向DMA控制器發(fā)送的DMA請求信號DMA控制器向外設發(fā)送的DMA應答信號雙向最低4位地址線。當作為從模塊時,地址線A3~A0作為輸入端對8237A內(nèi)部寄存器進行尋址;作為主模塊時,將當前寄存器低字節(jié)低4位地址送地址總線。將當前地址寄存器的低字節(jié)的高4位地址送地址總線DMA過程結束信號,該信號位雙向。外部向DMA控制器輸入一個信號,DMA過程結束;當DMA控制器任一通道的字節(jié)計數(shù)器位0時輸出一個信號標識DMA過程結束。由I/O端口向內(nèi)存寫入數(shù)據(jù)時,即8237A工作在寫傳輸時有效。由內(nèi)存向I/O端口讀取數(shù)據(jù)時,即8237A工作在讀傳輸時有效。8位雙向數(shù)據(jù)線。當作為從模塊時,接收CPU從數(shù)據(jù)總線發(fā)來的控制字或?qū)顟B(tài)字輸出到數(shù)據(jù)總線。作為主模塊時,將當前地址寄存器的高8位送地址總線高8位8237A通道的工作模式(由通道的模式寄存器控制)-8237A的每個通道都可以工作在下面四種工作模式之一:單字節(jié)傳輸模式:通道被設置為此模式時,每完成一個字節(jié)的傳輸,字節(jié)計數(shù)器就減1,地址寄存器加1或減1,然后,8237A釋放系統(tǒng)總線,隨后立即檢測DREQ端,若有效則8237A將又立即CPU發(fā)總線請求,獲得總線控制權后,再次進行DMA傳輸。塊傳輸模式:通道被設置為此模式時,只有在字節(jié)計數(shù)器減為0時8237A才釋放系統(tǒng)總線。所以此模式可連續(xù)進行多個字節(jié)的傳輸。請求傳輸模式:與塊傳輸模式相似,不同的只是在每傳輸1個字節(jié)后8237A都對DREQ進行檢測,若DREQ變?yōu)闊o效電平則暫停傳輸,若DREQ有效時就將在原來的基礎上又繼續(xù)DMA傳輸。級聯(lián)傳輸模式:即幾個8237A通過級聯(lián)構成主從式DMA系統(tǒng)。主片設置為級聯(lián)模式,從片設置為所需的其它三種模式之一(最多可由5個8237A構成二級16個DMA通道的DMA系統(tǒng))。-8237A的每個通道都可以工作在自動預置模式下:自動預置是指在DMA傳輸過程中,當前字節(jié)計數(shù)器的值到達0時,當前地址寄存器和當前字節(jié)計數(shù)器自動從基地址寄存器和基本字節(jié)計數(shù)器中重新得到新值,進入下一個數(shù)據(jù)傳輸過程。8237A的模式寄存器傳輸類型00–校驗傳輸01–寫傳輸10–讀傳輸11–無意義通道選擇:00-選通道001-選通道110-選通道211-選通道3自動預制功能:0–禁止1–允許地址增減選擇0–地址減11–地址加1模式選擇:00–請求傳輸模式01–字節(jié)傳輸模式10–塊傳輸模式11–級聯(lián)傳輸模式D7D6D5D4D3D2D1D08237A的工作方式(由8237A的控制寄存器控制)-內(nèi)存到內(nèi)存?zhèn)鬏?237A可以將數(shù)據(jù)從內(nèi)存的一個區(qū)域傳輸?shù)搅硪粋€區(qū)域,即將源存儲區(qū)域的數(shù)據(jù)先送入8237A的暫存器,再送到目的存儲區(qū)域,每次傳輸需用兩個總線周期。在存儲器到存儲的傳輸中,規(guī)定:通道0:地址寄存器存放源地址,傳送一個字節(jié)地址寄存器加1(或減1)。通道1:地址寄存器和字節(jié)計數(shù)器存放目的地址和計數(shù)值。每傳送一個字節(jié)地址寄存器加1(或減1),字節(jié)計數(shù)器減1。注意:進行存儲器到存儲器的傳輸過程中,如果通道0的源地址寄存器的值保持不變,通道1目的地址寄存器的值仍進行加1或減1操作,即同一個數(shù)據(jù)傳輸?shù)秸麄€目的存儲區(qū)域。-通道優(yōu)先級的設定8237A的4個通道可接4個I/O設備,其優(yōu)先級管理方式有兩種:1)固定優(yōu)先級方式——優(yōu)先級由高到低為通道0、通道1、通道2、通道3。2)循環(huán)優(yōu)先級方式——通道的優(yōu)先級依次循環(huán)。當某個通道的DMA傳輸過程完成后,其優(yōu)先級變?yōu)樽畹?。例如某此傳輸前各通道?yōu)先級為2-3-0-1,通道2完成傳輸后,各通道優(yōu)先級變?yōu)?-0-1-2。-狀態(tài)及工作時序
8237A的工作過程可分為以下七個狀態(tài):SI狀態(tài):各通道沒有DMA請求的狀態(tài),也稱為空轉(zhuǎn)狀態(tài)SI。該狀態(tài)下8237A對CS和DREQ進行測試,判斷是否被CPU選中或者是否有DMA請求。S0狀態(tài):某一通道的DREQ有效,即此通道有DMA請求,則8237A通過引腿HRQ向CPU發(fā)出總線請求而進入總線請求狀態(tài)S0,S0狀態(tài)一般重復多次,直到CPU發(fā)出總線允許信號轉(zhuǎn)入S1狀態(tài)。S1狀態(tài):8237A傳送地址鎖存信號,以便鎖存S2狀態(tài)下輸出的高8位地址。S2狀態(tài):8237A由引腿DB7~DB0輸出高8位地址,在S1狀態(tài)下給出的地址鎖存信號作用下進入地址鎖存器,引腿A7~A0輸出低8位地址進地址總線低8位。SW狀態(tài):如果外設速度較慢則插入多個SW等待狀態(tài)。S3狀態(tài):將地址鎖存器中的高8位地址送地址總線高8位。如果數(shù)據(jù)塊的傳輸跨越了內(nèi)存的256個字節(jié),才需要該狀態(tài),否則不需要該狀態(tài)。S4狀態(tài):傳輸模式測試,如果是塊傳輸模式或請求傳輸模式則轉(zhuǎn)入S2狀態(tài)。在整個工作過程中每個狀態(tài)對應1個時鐘周期,8237A有兩種工作時序:1)普通工作時序:一次DMA傳輸經(jīng)歷S2-S3-S4共3個時鐘周期2)壓縮工作時序:一次DMA傳輸經(jīng)歷S2-S4共2個時鐘周期8237A的控制寄存器存儲器-存儲器傳輸中0:源地址變化1:源地址不變0:啟動8237A工作1:停止8237A工作0:普通時序1:壓縮時序D0D1D2D3D4D5D6D7DMA應答信號0:低電平有效1:高電平有效DMA請求信號0:高電平有效1:低電平有效0:不擴展寫信號1:擴展寫信號0:固定優(yōu)先級
1:循環(huán)優(yōu)先級0:存儲器-外設1:存儲器-存儲器8237A的狀態(tài)寄存器8237A狀態(tài)寄存器的低4位指示4個通道計數(shù)結束狀態(tài)。8237A狀態(tài)寄存器的高4位指示4個通道DMA請求狀態(tài)。D7D6D5D4D3D2D1D0通道0計數(shù)結束通道1計數(shù)結束通道3計數(shù)結束通道2計數(shù)結束通道2有DMA請求通道3有DMA請求通道1有DMA請求通道0有DMA請求通過讀取8237A的狀態(tài)寄存器,CPU可以了解到哪一個通道有DMA請求,哪一個通道的DMA過程結束了。請求標志的設置
8237A每一個通道的DMA請求即可以通過硬件發(fā)出,也可以通過軟件發(fā)出;硬件上是通過DMA控制器的DREQ引腳引入DMA請求的,軟件上是通過對DMA請求標志的設置引入DMA請求的。8237A的每一個通道都配有一個DMA請求觸發(fā)器,用來設置本通道的DMA請求標志。物理上4個請求觸發(fā)器對應著一個請求寄存器。D7D6D5D4D3D2D1D0DMA請求標志:0–
無DMA請求1–
有DMA請求不用通道選擇:00–通道001–通道110–通道211–通道3屏蔽標志的設置8237A的每一個通道都配有一個DMA屏蔽觸發(fā)器,用來設置本通道的DMA屏蔽標志。當一個通道的屏蔽標志為1時,不能響應任何DMA請求。物理上4個屏蔽觸發(fā)器對應一個屏蔽寄存器。D7D6D5D4D3D2D1D0屏蔽設置:0–
去處屏蔽1–
設置屏蔽不用通道選擇:00–通道001–通道110–通道211–通道3D7D6D5D4D3D2D1D0通道0設置屏蔽通道1設置屏蔽通道2設置屏蔽通道3設置屏蔽綜合屏蔽命令復位命令和清除先/后觸發(fā)器命令復位命令復位命令和RESET引腳的功能相同,使控制寄存器、狀態(tài)寄存器、DMA請求寄存器、暫存器以及先/后觸發(fā)器清0、使屏蔽寄存器復位。清除先/后觸發(fā)器命令先/后觸發(fā)器是用來控制DMA通道中地址寄存器和字節(jié)計數(shù)器的初值設置的。8237A只有8位數(shù)據(jù)線,一次只能傳輸一個字節(jié),而地址寄存器和字節(jié)計數(shù)器是16位,所以這些寄存器需要2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025國檢集團西北運營中心特種設備招聘(23人)筆試參考題庫附帶答案詳解
- 2025國家電投集團國家核電招聘27人筆試參考題庫附帶答案詳解
- 寵物營養(yǎng)學社會實踐試題及答案
- 汽車美容師內(nèi)部管理與效應評估試題及答案
- 第六單元課外古詩詞誦讀《潼關》教學設計 2024-2025學年統(tǒng)編版語文七年級上冊
- 2025中國葛洲壩集團易普力股份有限公司禹州分公司招聘22人(河南)筆試參考題庫附帶答案詳解
- 前沿科技與2024年計算機基礎考試結合試題及答案
- 2024遼寧鞍山市臺安興水經(jīng)營管理有限公司招聘46人筆試參考題庫附帶答案詳解
- 人教部編七年級下歷史第15課明朝的對外關系教學設計
- 2024浙江金華市浦江縣城市建設投資集團有限公司招聘合同制員工及考察人員筆試參考題庫附帶答案詳解
- 健康醫(yī)療大數(shù)據(jù)分析合同
- 《SLT 377-2025水利水電工程錨噴支護技術規(guī)范》知識培訓
- 2024-2025學年人教版(2024)七年級數(shù)學下冊第八章實數(shù)單元檢測(含答案)
- 膀胱癌部分切除護理查房
- 兒童心理健康與家庭教育關系
- 2025屆山東省臨沂市高三下學期一模考試英語試卷(含解析)
- 2025年河南水利與環(huán)境職業(yè)學院單招職業(yè)傾向性測試題庫學生專用
- 2025年人體捐獻協(xié)議
- 專題06+函數(shù)與導數(shù)領域中的典型壓軸小題全歸納與剖析課件
- 員工黃賭毒法制培訓
- 廣東省廣州市番禺區(qū)2023-2024學年八年級上學期期末英語試題(答案)
評論
0/150
提交評論