第七章 8086系統(tǒng)設(shè)計
由微處理器組成的微型計算機,一般包括CPU系統(tǒng),存儲器,定時電路,I/O接口電路以及連接各部分的系統(tǒng)n總線等幾大部分。而CPU系統(tǒng)除了核心器件微處理器之外,還應(yīng)有保證CPU正常運行及與存儲器和I/O接口相匹配的各種外圍芯片,如時鐘發(fā)生器,總線驅(qū)動和控制器,地址鎖存器,數(shù)據(jù)收發(fā)器及系統(tǒng)等待控制電路 等,有的還需要協(xié)處理器或I/O處理器組成多處理機系統(tǒng)。
本章首先介紹由8086CPU組成的CPU系統(tǒng),然后介紹組成微型機系統(tǒng)所需定時電路,接口電路及總線等。
第一節(jié) 8086的支持芯片
為了用8086處理器組成計算機系統(tǒng),Intel公司設(shè)計了一系列支持芯片,本節(jié)介紹組成系統(tǒng)所必須的支持芯片,它們是時鐘發(fā)生器/驅(qū)動器8284,8位輸入/輸出鎖存器8282/8283(或74LS373),8位總線收發(fā)器8286/8287 (或84LS245),總線控制器8288。
§7.1.1 8284時鐘發(fā)生器/驅(qū)動器
在8086CPU內(nèi)部沒有有時時鐘發(fā)生器,當(dāng)組成微型機系統(tǒng)時,所需的時鐘信號由外部時鐘發(fā)生器提供。 8284是專門為8086設(shè)計的時鐘發(fā)生器/驅(qū)動器。在8284中,不僅有時鐘信號發(fā)生器,還有復(fù)位信號RESET和 準(zhǔn)備好信號READY產(chǎn)生電路,這些電路分別向8086系統(tǒng)提供時鐘信號CLK,復(fù)位信號RESET和準(zhǔn)備好信號READY ,還可向外界提供晶振信號OSC以及外圍芯片所需的時鐘信號PCLK。
1.8284的引腳
8284是雙列直插式18腳組件,其引腳分配如圖7-1所示。其功能為:
X1,X2:晶振輸入端。
ASYNC:READY同步選擇輸入。ASYNC信號決定READY的同步方式。當(dāng)ASYNC為低電平時,提供兩級READY同步 ,若ASYNC為高電平時,提供一級READY同步。
EFI:外來時鐘輸入端。當(dāng)F/C接高電平時,由EFI端輸入外來時鐘。 輸入時鐘信號的頻率為系統(tǒng)時鐘CLK的三倍。
F/C:時鐘源選擇輸入端。若F/C 接低電平,則系統(tǒng)時鐘CLK由晶體振蕩器產(chǎn)生;若F/C接高電平,則CLK 由外來時鐘產(chǎn)生。
OSC:晶振輸出端。輸出頻率為晶振頻率,TTC電平。
CLK:提供給整個計算機系統(tǒng)的時鐘信號,所以稱為系統(tǒng)時鐘。CLK的頻率是晶體震蕩器頻率或EFI端輸入頻率 1/3,占空比為33%。
PCLK:為外設(shè)提供的輸出時鐘信號,頻率是CLK的1/2,占空比為50%。
RES:復(fù)位輸入端,低電平有效。用于產(chǎn)生8086的RESET信號。由于8284 內(nèi)部具有斯密特整形電路,因此RES可以是緩慢變化的脈沖信號,它經(jīng) 8284內(nèi)部電路整形而獲得較陡的復(fù)位信號RESET。
RESET:提供給8086及整個系統(tǒng)的復(fù)位信號,高電平有效,其寬度由RES 決定。
AEN1,AEN2 :對應(yīng)RDY1,RDY2的允許控制信號,低電平 有效。當(dāng)AEN1為低電平時,RDY1 起作用,AEN2為低電平時,RDY2 起作用。在單CPU系統(tǒng)中AEN應(yīng)接低電平,在多系統(tǒng)中,用這兩個信號。
RDY1,RDY2:RDY高電平有效的輸入信號。 可由系統(tǒng)總線的設(shè)備產(chǎn)生,它有效表示數(shù)據(jù)已收到或數(shù)據(jù)可以使用。
CSYNC:同步輸入信號。用來使多個8284同步,以提供同步的CLK信號。CSYNC為高電平時,內(nèi)部計數(shù)器復(fù)位 ;CSYNC為低電平時,才允許內(nèi)部計數(shù)器計數(shù)。
2。8284的內(nèi)部結(jié)構(gòu)及工作原理
8284內(nèi)部結(jié)構(gòu)如圖7-2所示。由CLK時鐘信號產(chǎn)生電路,RESET復(fù)位信號產(chǎn)生電路及READY信號產(chǎn)生電路等組成。
(1).時鐘電路 時鐘發(fā)生電路由晶體振動器和分頻器組成.當(dāng)F/C腳接低電平時,它選擇 晶體振蕩器作為頻率源,時鐘頻率由跨結(jié)接在X1,X2端晶體控制,振動器產(chǎn)生的脈沖 信號,經(jīng)三分頻后,成為占空比33%的時鐘CLK.同時振蕩器脈沖信號直接經(jīng)反相器 產(chǎn)生OSC信號輸出.CLK經(jīng)二分頻得到占空比為50%的PCLK信號.OSC和PCLK都可作為 外圍電路的時鐘.當(dāng)F/C接高電平時,它選擇外來脈沖信號源,由EFI端輸入,用和上述 相同的方法產(chǎn)生CLK,PCLK和OSC信號.
在多CPU結(jié)構(gòu)中,要求所有8086時鐘信號同步,要求多個8284同時同相位的工作,此時 一般在所有8284的EFI端接同一個外部時鐘,用CSYNC信號控制它們同步.在CSYNC為高 電平時,禁止CLK輸出,CSYNC為低電平時,又重新輸出CLK信號,如向多個8284輸出同一個 CSYNC信號,則各CPU都會嚴(yán)格同步,多CPU不能使用晶體振蕩器,不然各8284晶振稍有 差異,就不會同步.
(2).復(fù)位信號產(chǎn)生電路 系統(tǒng)的復(fù)位信號必須與時鐘信號同步,否則將使系統(tǒng)工作不 穩(wěn)定.8284內(nèi)部有一個斯密特整形電路和一個同步觸發(fā)器組成復(fù)位信號發(fā)生電路.當(dāng)復(fù)位 輸入信號加到RES端,經(jīng)過整形加到觸發(fā)器D端,在CLK信號下降使觸發(fā)器置1,產(chǎn)生同步復(fù)位 信號RESET的輸出.借助在一功能,可用單獨的RC網(wǎng)絡(luò)產(chǎn)生符合要求的加電復(fù)位信號.在 IBN PC/XT中,電源好信號PWRGOOF加到RES端.
(3).準(zhǔn)備好信號產(chǎn)生電路 為了使存儲器或者外設(shè)接口與CPU速度相匹配,需要給CPU 一個準(zhǔn)備好信號.READY產(chǎn)生電路是由倆個同步觸發(fā)器及一些門電路組成.輸給CPU的READY 信號是由8284提供的,8284的準(zhǔn)備好控制電路有兩組輸入信號,每一組都有允許信號AEN 和設(shè)備準(zhǔn)備好信號RDY,8284設(shè)置兩個準(zhǔn)備好信號輸入RDY1和RDY2是為了支持多總線 結(jié)構(gòu),使一個8086可連接兩組獨立的系統(tǒng)總線.因為每組系統(tǒng)總線可能會有自己的RDY線 為了仲裁總線的優(yōu)先級,RDY1和RDY2各帶有允許信號AEN1 和AEN2,AEN1和AEN2由用戶 設(shè)計的總線優(yōu)先級仲裁邏輯電路產(chǎn)生.
ASYNC為同步級的選擇信號,如設(shè)備準(zhǔn)備好信號RDY1和RDY2與CLK同步輸入,且能滿足 定時要求時,只需采用一級同步.這時將ASYNC置為高電平,被選擇的RDY1或RDY2只通過 同步觸發(fā)器FF2與CLK進行一級同步后作為READY信號輸出.若RDY1和RDY2為異步輸入或 不滿足定時要求,則需要進行二級同步.此時將ASYNC置為低電平,RDY1和RDY2需要通過 FF1和FF2與CLK進行二級同步后,才能作為READY信號輸出。 圖7-3是8284的工作波形圖.
§7.1.2 8282/8283地址鎖存器
由于8086CPU一部分地址線和數(shù)據(jù)線采用分時復(fù)用,但CPU與存儲器或I/O端口交換信息 時,CPU首先要發(fā)送存儲器或I/O端口的地址,隨后才能傳送數(shù)據(jù),而在大多數(shù)情況下,存 儲器或外圍芯片,要求在總線周期內(nèi)保持穩(wěn)定的地址信號,所以在數(shù)據(jù)占用總線之前, 必須將地址碼暫存起來.一般在每個總線周期的T1狀態(tài),用地址鎖存允許信號ALE的后沿 把地址信號鎖存于地址鎖存器.8086系列芯片8282鎖存器,8283(反相)鎖存器,或者74系列 74LS373,都是八D鎖存器,都可作為8086的地址鎖存芯片.
圖7-4表示8282/8283鎖存器的引腳.8282/8283鎖存器都是帶有三態(tài)緩沖的數(shù)據(jù)鎖存器.當(dāng)選通信號STB為高電平時,允許輸入的8位數(shù)據(jù)DI0~DI7通過 鎖存電路,即DO0~DO7跟隨著DI0~DI7,當(dāng)STB由高電平向低電平跳變時,就將輸入的數(shù)據(jù)鎖存起來,OE為三態(tài)緩沖器的允許輸出控制信號,當(dāng)OE為低電平時,內(nèi)部鎖存的數(shù)據(jù)從 DO0~DO7輸出,當(dāng)OE為高電平時,三態(tài)緩沖輸出DO0~DO7呈高阻狀態(tài).作為8086地址鎖存器時,一般STB端接ALE,OE端接地.
7.1.3 8286/8287八位并行雙向總線驅(qū)動器
由于CPU數(shù)據(jù)總線的負(fù)載能力有限,當(dāng)掛在數(shù)據(jù)總線上的設(shè)備較多時,為了使系統(tǒng)能 穩(wěn)定的工作,應(yīng)提高數(shù)據(jù)總線電流驅(qū)動的能力和承受電容負(fù)載的能力,為此要使用數(shù)據(jù) 功率放大器,并且要求這種功率放大器能夠雙向傳送數(shù)據(jù),這種放大器稱為數(shù)據(jù)收發(fā)器 或驅(qū)動器.
8086系列芯片8286(不反相)和8287(反相)及74LS245都是8位雙向總線驅(qū)動器,圖7-6 和圖7-7是8286/8287的引腳及內(nèi)部電路圖.
8286/8287有8路雙向緩沖電路,8286中的每一路雙向緩沖電路,是由兩個不反相的 三態(tài)緩沖電路反并聯(lián)組成,而8287具有反相的作用.OE和T是緩沖器控制信號輸入端.T 為傳送方向控制信號端,當(dāng)T爲(wèi)高電平時,數(shù)據(jù)從A向B方向傳送;當(dāng)T為低電平時,數(shù)據(jù)從 B向A放向傳送,該引腳一般接在8086的DT/R端,OE爲(wèi)允許輸出控制端信號,當(dāng)OE爲(wèi)高電平 時,緩沖器呈高阻狀態(tài),不允許數(shù)據(jù)通過,只有OE為低電平時,才允許數(shù)據(jù)傳送,OE一般接 在8086的DEN端.
§7.1.4 8288總線控制器
8086CPU工作于最大組態(tài)時,它不能提供總線控制信號,而由總線控制器8288對CPU 提供的狀態(tài)信息S2,S1,S0進行譯碼產(chǎn)生總線控制信號,所以在多CPU系統(tǒng),為了將幾個 CPU接到同一組系統(tǒng)總線上,或為了給8086提供幾組系統(tǒng)總線,都要使用8288總線控制器.
1.8288總線控制器的基本功能
(1)能對CPU輸入的狀態(tài)信號S2,S1,S0進行譯碼后輸出對應(yīng)的狀態(tài)命令,以確定CPU 執(zhí)行何種操作.見表7-1.
| S2 | S1 | S0 | 8086總線周期 | 8288輸出命令 |
| 0 | 0 | 0 | 中斷響應(yīng) | IORC |
| 0 | 0 | 10 | 讀I/O端口 | IORC |
| 0 | 1 | 0 | 寫I/O端口 | IOWC AIOWC |
| 0 | 1 | 1 | 暫停 | |
| 1 | 0 | 0 | 取指令代碼 | MRDC |
| 1 | 0 | 1 | 讀存儲器 | MRDC |
| 1 | 1 | 0 | 寫存儲器 | MWTC AMWC |
| 1 | 1 | 1 | 過渡狀態(tài) |
(2)可以選擇8228是工作于系統(tǒng)總線方式,還是I/O總線方式,以產(chǎn)生總線控制信號 或僅訪問I/P總線控制信號.
(3)可以使總線控制信號浮空,以允許DMA操作,或仲裁總線優(yōu)先權(quán).
(4)可以提供超前的學(xué)控制信號AIOWC和AMWC.這是專門為慢速存儲器或I/O設(shè)備而 設(shè)計.
(5)可使控制信號無效,作為多總線或多CPU結(jié)構(gòu)中實行存儲器保持邏輯的一種方式.
(6)可以產(chǎn)生地址鎖存信號ALE,及雙向總線驅(qū)動器的控制信號DEN和DT/R.
(7)產(chǎn)生簡單或級聯(lián)中斷邏輯所需的控制信號。
2.8288的引腳及內(nèi)部結(jié)構(gòu)
8288是20根引腳雙列直插式組件,其引腳及內(nèi)部結(jié)構(gòu)如圖7-8所示.它由四大部分 組成:狀態(tài)譯碼器,控制邏輯,命令信號發(fā)生器及控制信號器.
(1)輸入信號
S2,S1,S0:它們是總線周期狀態(tài)輸入信息,來自8086或8087的狀態(tài)信息輸出端. 8288對這些信息進行譯碼,在適當(dāng)?shù)臅r候產(chǎn)生命令和控制信號.
CLK:來自8284的時鐘輸入信號,用來同步命令信號和控制信號的時序.
AEN:總線命令允許控制信號.它是為子支持多總線結(jié)構(gòu)的輸入信號.在多總線 結(jié)構(gòu)中,8288與8289的AEN端相互聯(lián)絡(luò),以滿足多總線的同步條件.當(dāng)AEN變?yōu)榈碗娖降?時間大于115NS后,8288總線控制器的命令輸出端才開啟,而在115NS以內(nèi),8288不發(fā)任何命令,所以這段時間內(nèi)可以進行總線切換.若AEN為高電平,就會使輸出端變?yōu)楦咦锠顟B(tài)。若8288處于I/O總線工作方式(IOB為高),則AEN不會影響I/O輸出命令.
CEN:命令允許輸入信號.當(dāng)系統(tǒng)使用兩個以上8288芯片時,利用此信號對每個 8288的工作狀態(tài)進行控制.CEN為高電平時,允許8288輸出全部信號;CEN為低電平時,所有總線命令信號和DEN,PDEN被強制爲(wèi)無效.所以當(dāng)系統(tǒng)中有多片8288時,只有正在控制操作的8288上的CEN爲(wèi)高電平,其他的CEN爲(wèi)低電平,這個特性可用來實現(xiàn)存儲器分區(qū),消除系統(tǒng)總線設(shè)備和駐留總線設(shè)備之間的地址沖突,即用CEN輸入端的電平變化對8288起命令限器的作用.
IOB:I/O總線方式控制輸入信號,當(dāng)IOB為高電平時,8288工作于I/O總線方式 ,只用來控制I/O端口時,才會使IORC,INTA信號有效,而在訪問存儲器時,不進行任 何操作。在這種方式下,MCE/PDEN輸出PDEN信號,可用DT/R和PDEN信號控制I/O收發(fā)器 。在多CPU系統(tǒng)中,若某些外設(shè)從屬于某一個CPU,則使用I/O總線方式。此時不必考慮 AEN信號的狀態(tài),但是選用I/O總線方式時,由于沒有提供總線仲裁機構(gòu),所以不能用I/O命令來控制系統(tǒng)總線上的I/O設(shè)備。當(dāng)IOB接低電平時,8288工作于系統(tǒng)總線方式 ,可同時控制存儲器和I/O端口,MCE/PDEN輸出MCE信號。
(2)輸出信號
MRDC,MWTC:存儲器讀寫控制信號,低電平有效。MRDC有效表示存儲器將 數(shù)據(jù)送上數(shù)據(jù)總線;MWTC有效表示將數(shù)據(jù)總線上的數(shù)據(jù)寫入存儲單元。
IORC,IOWC:I/O設(shè)備讀寫信號,低電平有效。IORC有效表示I/O設(shè)備將數(shù)據(jù) 送上數(shù)據(jù)總線,IOWC有效表示將數(shù)據(jù)總線上的數(shù)據(jù)寫入I/O設(shè)備。
AMWC,AIOWC:存儲器和I/O設(shè)備超前寫信號。AMWC比MWTC約提前一個時鐘周期。AIOWC比IOWC提前一個時鐘周期。
INTA:中斷響應(yīng)信號,低電平有效。用它通知申請中斷的設(shè)備,并取回中斷 矢量。
ALE,DT/R:兩信號功能與8086單CPU系統(tǒng)對應(yīng)信號相同。
DEN:與8086CPU的DEN功能相同,相位相反。
MCE/PDEN:這是雙功能端。當(dāng)IOB接低電平時,輸出MCE信號。MCE在中斷響應(yīng) 總線周期的T1狀態(tài)有效,作為把中斷控制器8259A的級聯(lián)地址送上地址總線時的同步信號。在較大的微型計算機系統(tǒng)中,如果有8259A優(yōu)先級中斷主控器和8259A優(yōu)先級中斷從控制器,則可用MCE控制主控器,而用INTA控制從控器.當(dāng)IOB接高電平,該端輸出PDEN 信號,作為響應(yīng)I/O總線數(shù)據(jù)收發(fā)器的允許信號.
