第五節(jié) 輸入輸出接口
如第六章所述,CPU要通過接口電路才能和外設(shè)交換信息.一般在接口電路中要有輸入輸出數(shù)據(jù)鎖存器和 緩沖器,要有狀態(tài)和控制命令寄存器,還要有地址譯碼器和控制電路,以及中斷控制邏輯電路.這樣才能解決 CPU與外設(shè)時(shí)序匹配問題,對(duì)外設(shè)實(shí)施控制,保證CPU于外設(shè)正確可靠的交換信息.
隨著大規(guī)模集成電路的發(fā)展,生產(chǎn)了許多通用的可編程接口芯片,這些接口芯片按數(shù)據(jù)傳送方式可分成 并行接口和串行接口兩大類.如Z80PIO,I8255,MC6821均為并行接口芯片,而Z80SIO,I8251,I8250,MC6850等 均為串行接口芯片,本結(jié)只討論并行接口芯片,有關(guān)串行接口芯片在接口電路一書中介紹.
可編程并行接口芯片,在實(shí)現(xiàn)方法上各廠家雖各有不同,但器件的基本結(jié)構(gòu)和基本功能大體相同,一般 有以下幾個(gè)功能:
(1)有兩個(gè)或兩個(gè)以上的含有鎖存器和緩沖器的數(shù)據(jù)端口.
(2)每個(gè)數(shù)據(jù)端口都有和CPU交換數(shù)據(jù)用的狀態(tài)和數(shù)據(jù)信息,也有與外設(shè)交換信息用的狀態(tài)和控制信息.
(3)通常每個(gè)數(shù)據(jù)端口還具有能用中斷方式與CPU交換信息所必需的電路.
(4)選片和控制電路.
(5)都有控制字寄存器,這些寄存器可由CPU寫入.即用程序可選擇端口,端口傳送方向,交換信息的方法等.
INTEL 8255A 是一個(gè)典型通用的可編程并行接口芯片,本節(jié)作詳細(xì)介紹.
8255A的內(nèi)部結(jié)構(gòu)如圖7-31所示.由以下幾部分組成:
1.數(shù)據(jù)總線緩沖器,這是一個(gè)雙向三態(tài)緩沖器,是8255A與系統(tǒng)總線的接口,CPU與8255A之間的數(shù)據(jù)傳送 ,狀態(tài)和命令傳送都通過它.
2.讀/寫控制邏輯,它與CPU的地址總線A1,A0以及有關(guān)控制信號(hào)相連(RD,WR,RESET,IO/M),由它控制把CPU的控制命令或輸出 數(shù)據(jù)送數(shù)據(jù)端口,或者將外設(shè)的狀態(tài)和輸入數(shù)據(jù)送CPU.CS片選信號(hào),CS=0時(shí)允許CPU與8255A交換信息.RD 和WR讀/寫信號(hào),RD=0時(shí),CPU讀入8255A的數(shù)據(jù)或狀態(tài).WR=0時(shí),CPU將數(shù)據(jù)或狀態(tài)送入8255A.RESET復(fù)位信號(hào), RESET=1時(shí),清除控制寄存器,并使所有端口為輸入方式.A1,A0端口尋址信號(hào),由此兩位選擇三個(gè)端口和一個(gè) 控制寄存器.表7-3說明了A1,A0和RD,WR及CS組合所實(shí)現(xiàn)的功能.
| A1 | A0 | RD | WR | CS | 功能 |
| 0 | 0 | 0 | 1 | 0 | 端口A->數(shù)據(jù)總線 |
| 0 | 1 | 0 | 1 | 0 | 端口B數(shù)據(jù)總線 |
| 1 | 0 | 0 | 1 | 0 | 端口C數(shù)據(jù)總線 |
| 0 | 0 | 1 | 0 | 0 | 數(shù)據(jù)總線端口A |
| 0 | 1 | 1 | 0 | 0 | 數(shù)據(jù)總線端口B |
| 1 | 0 | 1 | 0 | 0 | 數(shù)據(jù)總線端口C |
| 1 | 1 | 1 | 0 | 0 | 數(shù)據(jù)總線控制字寄存器 |
| * | * | * | * | 1 | 數(shù)據(jù)總線為三態(tài) |
| * | * | 1 | 1 | 0 | 數(shù)據(jù)總線為三態(tài) |
| 1 | 1 | 0 | 1 | 0 | 非法狀態(tài) |
3.數(shù)據(jù)輸入端口A,B,C是三個(gè)8位輸入輸出端口.端口A具有一個(gè)8位數(shù)據(jù)輸出鎖存和緩沖器,一個(gè)8位數(shù)據(jù)輸入鎖存器.端口A具有一個(gè)8位數(shù)據(jù)輸入/輸出鎖存緩沖器和一個(gè)8位數(shù)據(jù)輸入緩沖器.端口C具有一個(gè)8位 數(shù)據(jù)輸入緩沖器.通常端口A和B作為數(shù)據(jù)輸入輸出端口,端口C作為控制和狀態(tài)信息端口,在方式控制字的 控制下,端口C可分為兩個(gè)四位端口,每個(gè)端口包含一個(gè)四位鎖存器.
4.A組和B組控制電路,這是兩組根據(jù)CPU送來的控制字控制8255工作方式電路,A組控制端口A和端口C的 高4位,B組控制端口B和端口C的低4位.
§7.5.2 工作方式
8255A有三種基本的工作方式,他們是方式0(MODE 0),基本輸入/輸出方式;方式1(MODE 1),選通輸入/輸出方式;方式2(MODE 2),雙向傳送.
1.方式選擇控制字
使用8255A時(shí)要對(duì)8255進(jìn)行初始化編程,CPU向8255A的控制寄存器輸出一個(gè)方式選擇控制字,由它來決定8255A三個(gè)功能和工作方式.控制字的格式如圖7-32所示.可以分別選擇端口A和端口B的工作方式.端口C則分成兩部分,高四位隨端口A,低四位隨端口B,端口A可有三種工作方式,而端口B只能工作于方式0和方式1.
2.按位置位復(fù)位功能
端口C的每一位都可由輸出指令置位或復(fù)位,這一功能主要用于控制,實(shí)現(xiàn)這一功能的控制字格式見圖 7-33.要注意的是,端口C按位置位復(fù)位的控制字是寫到控制寄存器的地址.例如,下面幾條指令使端口C的 BIT 1置0,而使BIT 7置1,設(shè)控制寄存器地址為CNTRL.
MOV AL,02H
OUT CNTRL,AL ;置PC1為0
MOV AL,0FH
OUT CNTRL,AL ;置PC7為1


§7.5.3 8255A的工作方式
1.方式0的功能
方式0是一種基本的輸入或輸出方式,在這種工作方式下,三個(gè)端口的每一個(gè)都可由程序設(shè)定為輸入或 輸出端口,但這種方式?jīng)]有規(guī)定固定的用于應(yīng)答式的聯(lián)絡(luò)信號(hào)線,基本功能為:有兩個(gè)8位端口和兩個(gè)4位 端口(C),因此,輸入輸出可有16種不同的組合;任何一端可作為輸入或輸出,輸出是鎖存的,輸入是不鎖存的. 在這種方式下,CPU可用輸入輸出指令讀或?qū)?可用作無條件傳送接口電路,也可用作條件接口傳送電路, 此時(shí)端口C某些位作端口A和B的控制或狀態(tài)位.方式0的輸入輸出時(shí)序如圖7-34所示.
輸入時(shí),當(dāng)外設(shè)準(zhǔn)備好一個(gè)數(shù)據(jù),CPU執(zhí)行一條輸入指令便可從8255讀入這個(gè)數(shù)據(jù).但RD的寬度要大于300ns,而且地址信號(hào)要超前RD信號(hào)TAR,這樣在RD有效后經(jīng)TRD時(shí)間,數(shù)據(jù)即可穩(wěn)定在數(shù)據(jù)總線上.
輸出時(shí),CPU用輸出指令將數(shù)據(jù)輸出到8255數(shù)據(jù)輸出鎖存器,并傳給外設(shè),要求WR寬度大于400ns,且地址信號(hào)要超前WR信號(hào)TAW,并在WR信號(hào)結(jié)束后保持TWA時(shí)間(TWA大于70ns).另外輸出數(shù)據(jù)必須在WR結(jié)束前TDW時(shí)間內(nèi)有效(大于100ns),并在WR信號(hào)結(jié)束后保持TWA時(shí)間(接口).
2.方式1的功能
這是一種選通的I/O方式,在這種方式時(shí),端口A和B仍作為數(shù)據(jù)的輸入輸出端口,但同時(shí)規(guī)定端口C的某些 位用作控制或狀態(tài)信息.在方式1工作時(shí),三個(gè)端口分成AB兩組,每組包含有8位數(shù)據(jù)口及三條控制和狀態(tài)線. 每組即可輸入也可輸出.當(dāng)端口A和B工作在方式1輸入時(shí),其控制字格式及信號(hào)連接如圖7-35所示.
其中各控制信號(hào)的意義如下:
STB(Strobe):選通輸入,低電平有效.這是由外設(shè)提供的輸入信號(hào),當(dāng)其有效時(shí),將輸入設(shè)備送來的數(shù)據(jù) 送入輸入鎖存器.
IBF:輸入緩沖器滿信號(hào),高電平有效,是8255的輸出信號(hào),當(dāng)其有效時(shí),表示數(shù)據(jù)已輸入至輸入鎖存器,他 由STB信號(hào)置位,RD信號(hào)上升沿復(fù)位.
INTR:中斷請(qǐng)求信號(hào),高電平有效,是8255的輸出信號(hào),向CPU申請(qǐng)中斷請(qǐng)求.當(dāng)STB,IBF和IBTE都為高電平 時(shí)被置為高,由RD信號(hào)下降沿清除.
INTE A:端口A中斷允許信號(hào),由PC4的置位復(fù)位控制,PC4=1時(shí)允許中斷.
INTE B:由PC2的置位復(fù)位控制.
方式1的輸入時(shí)序見圖7-36.當(dāng)外設(shè)準(zhǔn)備好數(shù)據(jù),用STB信號(hào)把數(shù)據(jù)送入輸入鎖存器.STB的寬度至少為500 ns,STB的下降沿經(jīng)過TSIB時(shí)間(TSIB<300ns),IBF信號(hào)有效,輸給外設(shè),阻止外設(shè)輸入新的數(shù)據(jù),也可供CPU 查詢.STB信號(hào)結(jié)束后經(jīng)TSIT向CPU發(fā)出INTR信號(hào).CPU響應(yīng)中斷并轉(zhuǎn)入中斷服務(wù)程序,執(zhí)行輸入指令發(fā)出RD信號(hào),把數(shù)據(jù)讀入CPU,并清除INTR,使IBF變?yōu)榈碗娖?
方式1輸出工作情況如圖7-37所示:
控制信號(hào)如下:
OBF(Output Buffer Full):輸出緩沖器滿信號(hào),低電平有效,送給外設(shè)信號(hào).當(dāng)有效時(shí),表示CPU已將數(shù)據(jù)送到輸出鎖存器,由WR上升沿置成低電平,ACK使其變高.
ACK(Acknowlege):外設(shè)送來的響應(yīng)信號(hào),低電平有效,表示數(shù)據(jù)已被外設(shè)取走.
INTR:中斷請(qǐng)求信號(hào),當(dāng)外設(shè)已取走數(shù)據(jù),向CPU中斷請(qǐng)求,要求CPU送下一個(gè)數(shù)據(jù),當(dāng)ACK,OBF和INTE均為 高電平時(shí),INTR變高,由WR的下降沿復(fù)位.
INTE A由PC6置位復(fù)位,INTE B由PC2置位/復(fù)位.
方式1的輸出時(shí)序如圖7-38.方式1用中斷方式輸出時(shí),由CPU響應(yīng)中斷開始,在中斷服務(wù)程序,CPU執(zhí)行輸出 指令時(shí)發(fā)出WR信號(hào),將數(shù)據(jù)送到輸出鎖存器,在WR的上升沿產(chǎn)生OBF信號(hào),由OBF將數(shù)據(jù)送到外設(shè),外設(shè)收到數(shù)據(jù) 后,發(fā)回ACK信號(hào),它使OBF變高,使INTR變高,又向CPU申請(qǐng)中斷.
3.方式2的功能
方式2可使外設(shè)在單一總線上即可接收數(shù)據(jù)也可發(fā)送數(shù)據(jù).只有端口A有這種功能,端口C提供5位控制狀態(tài) 信息。各控制信息信號(hào)的信息與方式1輸入輸出時(shí)信號(hào)意義相同.其中INTE A表示允許輸出中斷,由PC6置位/復(fù)位控制,INTE B允許輸入時(shí)中斷,由PC4置位/復(fù)位控制.
方式2的工作時(shí)序就是方式1的輸入時(shí)序與輸出時(shí)序的組合,輸入和輸出都可請(qǐng)求中斷.
當(dāng)端口A工作在方式2時(shí),端口B可工作在方式0或方式1,當(dāng)端口B工作在方式1時(shí),PC0是INTRB,PC1是IBFB或 OBFB,PC2是INTE B,可以用輸入指令讀入端口C,檢查各位的狀態(tài).
§7.5.4 8255A的應(yīng)用
在IBM PC/XT中,有一片8255A三個(gè)端口全部工作在方式0,起電路如圖7-40所示.
1.PA0~PA7在加電自檢時(shí)工作于輸出狀態(tài),輸出當(dāng)前部件的標(biāo)志信號(hào),若檢測到關(guān)鍵性故障停機(jī)時(shí),測量PA口的電平可確定發(fā)生故障的部件.PA口主要輸出下列被檢部件標(biāo)志:
PA2 PA1 PA0
0 0 1 BIOS累加和錯(cuò)
0 1 0 8253錯(cuò)
0 1 1 8237錯(cuò)
1 0 0 前16KB RAM錯(cuò)
1 0 1 8259錯(cuò)
1 1 0 CRT適配器
在正常的工作時(shí),CPU通過PA口讀取鍵盤輸入掃描碼.
2.PB口輸出系統(tǒng)內(nèi)部控制信號(hào),通過編程設(shè)置,可以控制系統(tǒng)內(nèi)部某些電路的動(dòng)作.
PB0輸出TIM2GATESPK信號(hào),送到8253的GATE2,控制8253通道工作.
PB1輸出SPKDATA信號(hào),控制揚(yáng)聲器發(fā)聲.
PB3輸出控制對(duì)系統(tǒng)開關(guān)DIP的讀取,當(dāng)PB3=0時(shí),允許PC口讀取DIP的低四位,PB3=1時(shí),允許PC口讀取DIP的高四位.
PB4輸出ENBRAMPCK信號(hào),是允許系統(tǒng)板RAM進(jìn)行奇偶校驗(yàn)信號(hào),送到奇偶校驗(yàn)電路.
PB5輸出ENABLE I/O CK信號(hào),送到NMI控制電路,PB5=0時(shí),允許I/O通道中奇偶校驗(yàn)結(jié)果送入NMI控制電路.
PB6和PB7是鍵盤接口電路的控制信號(hào).
3.PC口讀取系統(tǒng)內(nèi)部狀態(tài),其中PC0~PC3讀取系統(tǒng)配置開關(guān)DIP的設(shè)置狀態(tài),PC4讀取揚(yáng)聲器的狀態(tài),PC5 讀取8252的OUT2狀態(tài),PC6讀取I/O通道中奇偶校驗(yàn)狀態(tài),PC7讀取系統(tǒng)板上RAM奇偶校驗(yàn)的結(jié)果.
