1、8086的兩種工作方式
1)兩種工作方式
爲了便於組成不同規模的系統,在8086芯片中設計了兩種工作模式,即最小模式和最大模式。
2)如何設定工作方式
8086 CPU的MN/MX#(Minimum/Maximum Mode Control)管腳,是最大最小模式控制信號(標號33),它決定8086工作在哪種工作模式。如果MN/MX#接+5V,則CPU工作在最小模式;MN/MX#接地,CPU工作在最大模式。
MN/MX#管腳爲信號輸入管腳,在設計系統時,根據選擇的工作模式,將該信號直接連接+5V或地。
3)兩種工作方式的主要特點
最小模式:系統中只有8086一個處理器,所有的控制信號都是由8086產生。往往用在組成基於8086 CPU的最小系統。
最大模式:系統中包含一個以上的處理器,比如包含協處理器8087或I/O處理器8089。在系統規模比較大的情況下,系統控制信號不是由8086直接產生,而是通過與8086配套的總線控制器8288等形成
2.8086的信號分類:
8086的信號大致可以分爲三部分:地址、數據或狀態信號,控制信號和系統信號;
3、最小模式下的管腳定義
8086管腳圖見圖,圖中第24~31號管腳具有兩種定義。括弧中表示的是最大模式下的管腳定義。
1) 地址/數據(或狀態)信號:
AD15~AD0 (Address Data Bus):
地址/數據複用信號(標號2~16、39),雙向,三態。在總線週期的T1狀態(地址週期)AD15~AD0上出現的是低16位的地址信號A15~A0;在T3狀態(數據週期)AD15~AD0 上出現的是數據信號D15~D0。
A19/S6~A16/S3 (Address/Status):
地址/狀態複用信號(標號35~38),輸出。在總線週期的T1狀態(地址週期)A19/S6~A16/S3上出現的是地址的高4位。在T2~T4狀態,A19/S6~A16/S3上輸出狀態信息。
S6:指示8086當前是否與總線相連。S6=0表示8086連在總線上。
S5:表示中斷允許標誌狀態。S5=1表示中斷允許標誌IF=1(對可屏蔽中斷請求起作用)。S5=0表示IF=0,禁止可屏蔽中斷。
S4 和S3用來指出當前使用的段寄存器。S4、S3代碼組合對應的含義如表2-2所示:
.• BHE#/S7 (Bus High Enable/Status):數據總線高8位使能和狀態複用信號(標號34),
輸出。在總線週期T1狀態,如果BHE#有效,表示數據線上高8位數據是有效的。在T2~T4狀態BHE#/S7 輸出狀態信息S7。S7在8086中未做實際定義。
8086有16位數據線。BHE#用來作爲數據總線高8位的使能信號。AD0除了傳輸數據或地址信息還作爲低8位數據的選通信號,這裏,BHE#信號和AD0信號的組合,可以用來通知連接在總線上的存儲器和I/O接口,CPU將進行哪一種格式的數據操作。
(2). 控制與系統信號:
ALE(Address Latch Enable):地址鎖存使能信號(標號25),輸出,高電平有效。
用來作爲地址鎖存器的鎖存控制信號。8086的AD15~AD0是地址/數據複用信號,地址信息僅在T1狀態有效,爲了使地址信號在整個讀寫週期都有效,通常要用ALE把地址信號鎖存在地址鎖存器當中。
•DEN# (Data Enable):數據使能信號(標號26),輸出,三態,低電平有效。用於數據總線驅動器的控制信號。
•DT/R#(Data Transmit/Receive): 數據驅動器數據流向控制信號(標號27),輸出,三態。在8086系統中,通常採用8286或8287作爲數據總線的驅動器,用DT/R#信號來控制數據驅動器的數據傳送方向。當DT/R#=1時,數據驅動器進行數據發送;DT/R#=0時,數據驅動器進行數據接收。
• M/IO# (Memory/Input and Output):存儲器或I/O控制信號(標號28),輸出,三態。
M/IO#輸出爲高電平,指示CPU正在執行存儲器訪問指令,進行和存儲器之間數據交互;如果爲低電平,表示CPU正在執行I/O 指令,進行和I/O接口之間數據傳輸。
• RD#(Read):讀信號(標號32),輸出,三態。RD#信號有效,表示CPU執行一個對存儲器或I/O端口的讀操作,在一個讀操作的總線週期中,RD#在T2~T3狀態中有效,爲低電平。
• WR#(Write):寫信號(標號29),輸出,三態。WR#信號有效,表示CPU執行一個對存儲器或I/O端口寫操作,在寫操作總線週期中,WR#在T2~T3狀態中有效,爲低電平。
• NMI(Non-Maskable Interrupt):非屏蔽中斷請求(標號17),輸入,上升沿有效。
NMI不受中斷允許標誌的影響。當CPU檢測到NMI有一個正沿觸發的信號以後,CPU執行完當前指令便響應中斷類型號爲2的非屏蔽中斷請求。
非屏蔽中斷是不受中斷允許標誌IF的影響的,不能用軟件進行屏蔽
• INTR(Interrupt Request):可屏蔽中斷請求(標號18),輸入,高電平有效。如果INTR信號有效,當CPU的中斷允許標誌IF=1時,CPU結束當前指令後,響應INTR中斷。
與非屏蔽中斷不一樣,可屏蔽中斷要根據中斷允許標誌的設置來判斷CPU是否能響應中斷請求。當INTR信號有效,同時中斷允許標誌IF爲1的時候,CPU纔會響應中斷去執行一箇中斷處理子程序。需要注意的是,不論是非屏蔽中斷還是可屏蔽中斷,CPU都是在每條指令的最後一拍去採樣中斷請求信號的。如果有中斷請求,又符合中斷響應條件,CPU將在執行完當前指令之後進入中斷響應週期。也就是說在指令執行中是不可以中斷的
• HOLD(Hold Request):總線保持請求(標號31),輸入,高電平有效。當系統當中除CPU之外的另一個總線主模塊(如DMA)要求使用總線時,該總線主模塊通過HOLD信號向CPU發出總線請求。如果CPU允許讓出總線,就在完成當前總線週期後,在T4狀態通過HLDA管腳發出應答信號,響應總線的請求。
DMA即“直接存儲器訪問”。在DMA方式下,外部設備利用專用的控制電路直接和存儲器進行高速的數據傳送,而不經過CPU。這樣,傳輸時就不必進行CPU執行程序過程中完成的地址增量、計數器減量,以及在中斷方式下CPU保護現場、恢復現場之類的操作,大大提高了數據傳送的速度。
在利用DMA方式進行數據傳輸時,DMA控制系統總線,因此在DMA開始工作之前,首先要向CPU發出申請總線的請求,令CPU讓出總線。這個請求是由DMA設置HOLD信號有效產生的。
• HLDA:總線保持響應信號,輸出,高電平有效。HLDA有效時表示CPU響應了其他總線主的總線請求,一旦HLDA有效,CPU的數據/地址控制信號變爲高阻狀態,而請求總線的總線主(DMA)獲得了總線權。
• MN/MX#(Minimum/Maximum Mode Control):最大最小模式控制信號(標號33),輸入。決定8086工作在哪種工作模式。如果MN/MX#=1(+5V),CPU工作在最小模式。MN/MX#=0(接地),CPU則工作在最大模式。
• CLK(Clock):時鐘信號(標號19),輸入。爲CPU和總線控制邏輯提供定時。要求時鐘信號的佔空比爲33%。
• RESET(Reset):復位信號(標號21),輸入,高電平有效。復位信號有效時,CPU結束當前操作並對標誌寄存器FLAG 、IP、DS、SS、ES及指令隊列清零,並將CS設置爲FFFFH。當復位信號撤除時,(即電平由高變低時)CPU從FFFF0H開始執行程序。
• READY(Ready):準備好信號(標號22),輸入,高電平有效。爲了CPU能和不同速度的存儲器或I/O接口進行連接,設計了READY信號。CPU在每個總線週期的T3狀態對READY進行採樣。當READY信號有效時表示存儲器或I/O準備好發送或接收數據。CPU執行典型的總線週期,在4個T狀態內完成總線操作。 如果存儲器或I/O的速度較慢,不能與CPU的速度相匹配,可令READY爲低。CPU在T3採樣到READY爲低電平以後,便在T3之後插入Tw,延長讀寫週期,使CPU能和較慢速度的存儲器或I/O接口相匹配。
• TEST#(Test):測試信號(標號23),輸入,低電平有效。TEST#信號和WAIT指令結合起來使用,在CPU執行WAIT指令時,CPU便一直處於空轉狀態,進行等待。只有當8086檢測到TEST#信號有效時,才結束等待狀態,繼續執行WAIT之後的指令。
• GND:GND 爲地。
• VCC:VCC爲電源,接+5V。
4.最大模式下
1) 在最大模式下與最小模式不同的管腳定義
QS1、QS0(Instruction Queue Status):指令隊列狀態信號(標號25、24),輸出。QS1,QS0組合起來表示前一個時鐘週期中指令隊列的狀態,這組信號的設置爲的是可以從外部對8086指令隊列的動作進行跟蹤。用於對芯片的測試。
S2#、S1#、S0#(Bus Cycle Status):總線週期狀態信號(標號28、27、26),輸出。這三個信號的組合表示當前執行的總線週期的類型。在最大模式下,用這三個信號作爲總線控制器8288的輸入,產生存儲器、I/O的讀、寫等控制信號。S2#、S1#、S0#的組合意義參見表2-8:
LOCK#( Lock):總線封鎖信號(標號29),輸出。用來封鎖其它總線主的總線請求,當LOCK#爲低電平時,系統中其他總線主就不能佔用總線。LOCK#信號是由指令前綴LOCK產生的。在LOCK前綴後的指令執行完之後,硬件上便撤銷了LOCK#信號。
RQ#/GT1#、RQ#/GT0#( Request/Grant):總線請求信號/總線請求允許信號(標號31、30),雙向。CPU以外的兩個處理器可以分別用其中之一來請求總線並接受CPU對總線請求的允許。其中RQ#/GT0#優先級高於RQ#/GT1#。