微機原理複習整理
第一章 微型計算機系統概述
1. 微型計算機系統組成
- 微處理器:運算器、控制器、暫存器
- 微型計算機:輸入輸出介面、匯流排、記憶體
微型計算機系統:由硬體和軟體共同組成的完整的計算機系統
2. 系統匯流排
- 地址匯流排AB
-
- 輸出將要訪問的記憶體單元或I/O埠的地址
-
- 地址線的多少決定了系統直接定址儲存器的範圍
- 資料匯流排DB
-
- CPU讀操作時,外部資料通過資料匯流排送往CPU
-
- CPU寫操作時,CPU資料通過資料匯流排送往外部
-
- 資料線的多少決定了一次能夠傳送資料的位數
- 控制匯流排CB
- 協調系統中各部件的操作,有輸出控制、輸入狀態等訊號
控制匯流排決定了系統匯流排的特點,例如功能、適應性等
3. 基於8088CPU的PC微機系統結構
4. 微處理器(CPU)內部結構
指令處理單元(控制器):對機器指令譯碼,產生指令執行所需的控制信號,並按照指令規定的時序將控制訊號傳送到CPU內部各器件或傳送到匯流排。
算術邏輯單元(運算器):接收到控制器發出的各種運算控制訊號後,執行相應運算,並影響相應標誌位。
暫存器組:CPU內用於暫時存放資料、地址的儲存單元,CPU從記憶體讀取指令、在記憶體中讀寫資料,均需要這些暫存器完成定址、暫存的功能。其中標誌暫存器能夠間接影響程式執行流程
- 8088的內部結構從功能分成兩個單元
- 匯流排介面單元BIU——管理8088與系統匯流排的介面,負責CPU對儲存器和外設進行訪問
- 執行單元EU——負責指令的譯碼、執行和資料的運算
- 兩個單元相互獨立,分別完成各自操作
兩個單元可以並行執行,實現指令取指和執行的流水線操作
8088 CPU 外部特性與IBM PC匯流排結構
1. 8088的兩種組態模式
- MN/MX*接高電平為最小組態模式
MN/MX*接低電平為最大組態模式
2. 8088最小組態的引腳訊號
1. 資料和地址引腳
- AD7~AD0
- 地址/資料分時複用引腳,雙向、三態
- 在訪問儲存器或外設的匯流排操作週期中,這些引腳在第一個時鐘週期輸出儲存器或I/O埠的低8位地址A7~A0
- 其他時間用於傳送8位資料D7~D0
- A15~A8(Address)
中間8位地址引腳,輸出、三態
這些引腳在訪問儲存器或外設時,提供全部20位地址中的中間8位地址A15~A8 - A19/S6~A16/S3(Address/Status)
- 地址/狀態分時複用引腳,輸出、三態
- 這些引腳在訪問儲存器的第一個時鐘週期輸出高4位地址A19~A16
- 在訪問外設的第一個時鐘週期全部輸出低電平無效
- 其他時間輸出狀態訊號S6~S3
- S6始終為低;
- S5為標誌暫存器的中斷允許標誌的狀態位,它在每一個時鐘週期開始時被修改;
- S4和S3用以指示是哪一個段暫存器正在被使用,00為ES,01為SS,10為CS,11為DS。
在DMA方式時這4條線處於高阻狀態
2. 讀寫控制引腳
- ALE(Address Latch Enable)
- 地址鎖存允許,輸出、三態、高電平有效
ALE引腳高有效時,表示複用引腳:AD7~AD0和A19/S6~A16/S3正在傳送地址資訊
- 由於地址資訊在這些複用引腳上出現的時間很短暫,所以系統可以利用ALE引腳將地址鎖存起來
- IO/M*(Input and Output/Memory)
I/O或儲存器訪問,輸出、三態
該引腳輸出高電平時,表示CPU將訪問I/O埠,這時地址匯流排A15~A0提供16位I/O口地址
- 該引腳輸出低電平時,表示CPU將訪問儲存器,這時地址匯流排A19~A0提供20位儲存器地址
- WR*(Write)
- 寫控制,輸出、三態、低電平有效
- 有效時,表示CPU正在寫出資料給儲存器或I/O埠
- RD*(Read)
- 讀控制,輸出、三態、低電平有效
- 有效時,表示CPU正在從儲存器或I/O埠讀入資料
- READY
- 儲存器或I/O口就緒,輸入、高電平有效
- 在匯流排操作週期中,8088CPU會在第3個時鐘週期的前沿(下降沿)測試該引腳
如果測到高有效,CPU直接進入第4個時鐘週期
如果測到無效,CPU將插入等待週期Tw - CPU在等待週期中仍然要監測READY訊號,有效則進入第4個時鐘週期,否則繼續插入等待週期Tw
- DEN*(Data Enable)
- 資料允許,輸出、三態、低電平有效
- 有效時,表示當前資料匯流排上正在傳送資料,可利用他來控制對資料匯流排的驅動
- DT/R*(Data Transmit/Receive)
- 資料傳送/接收,輸出、三態
- 該訊號表明當前總線上資料的流向
高電平時資料自CPU輸出(傳送)
低電平時資料輸入CPU(接收)
- SS0*(System Status 0)
最小組態模式下的狀態輸出訊號
它與IO/M和DT/R一道,通過編碼指示CPU在最小組態下的8種工作狀態:
3. 中斷請求和響應引腳
- INTR(Interrupt Request)
- 可遮蔽中斷請求,輸入、高電平有效
- 有效時,表示請求裝置向CPU申請可遮蔽中斷
- 該請求的優先級別較低,並可通過關中斷指令CLI清除標誌暫存器中的IF標誌、從而對中斷請求進行遮蔽
- INTA*(Interrupt Acknowledge)
- 可遮蔽中斷響應,輸出、低電平有效
- 有效時,表示來自INTR引腳的中斷請求已被CPU響應,CPU進入中斷響應週期
- 中斷響應週期是連續的兩個,每個都發出有效響應訊號,以便通知外設他們的中斷請求已被響應、並令有關裝置將中斷向量號送到資料匯流排
- NMI(Non-Maskable Interrupt)
- 不可遮蔽中斷請求,輸入、上升沿有效
- 有效時,表示外界向CPU申請不可遮蔽中斷
- 該請求的優先級別高於INTR,並且不能在CPU內被遮蔽
當系統發生緊急情況時,可通過他向CPU申請不可遮蔽中斷服務
4. 匯流排請求和響應引腳
- HOLD
- 匯流排保持(即匯流排請求),輸入、高電平有效
- 有效時,表示匯流排請求裝置向CPU申請佔有匯流排
- HLDA(HOLD Acknowledge)
- 匯流排保持響應(即匯流排響應),輸出、高電平有效
- 有效時,表示CPU已響應匯流排請求並已將匯流排釋放
- 此時CPU的地址匯流排、資料匯流排及具有三態輸出能力的控制匯流排將全面呈現高阻,使匯流排請求裝置可以順利接管匯流排
- 待到匯流排請求訊號HOLD無效,匯流排響應訊號HLDA也轉為無效,CPU重新獲得匯流排控制權
- RESET
- 復位請求,輸入、高電平有效
- 該訊號有效,將使CPU回到其初始狀態;當它再度返回無效時,CPU將重新開始工作
8088/86復位後
CS=FFFFH、IP=0000H,
所以程式入口在實體地址FFFF0H
CLK(Clock)
時鐘輸入5. 其它引腳
- MN/MX*(Minimum/Maximum)
組態選擇,輸入 TEST*
測試,輸入、低電平有效6. 8088的基本匯流排時序
- 匯流排時序描述CPU引腳如何實現匯流排操作
- 描述匯流排操作的微處理器時序有三級:
指令週期 → 匯流排週期 → 時鐘週期 - 指令週期是指一條指令經取指、譯碼、讀寫運算元到執行完成的過程。若干匯流排週期組成一個指令週期
- 匯流排週期是指CPU通過匯流排操作與外部(儲存器或I/O埠)進行一次資料交換的過程
- 8088的基本匯流排週期需要4個時鐘週期
- 匯流排操作中如何實現CPU與記憶體、介面晶片間的時序同步是關鍵
- 同步時序:
各部件都以系統時鐘訊號為基準
當相互不能配合時,快速部件(CPU)插入等待狀態等待慢速部件(I/O和儲存器) 非同步時序:
CPU與外設介面通過應答聯絡訊號實現同步操作7. 8088最小組態的匯流排時序
- 儲存器讀匯流排週期
- 儲存器寫匯流排週期
- I/O讀匯流排週期
I/O寫匯流排週期
8. 8088最大組態中的引腳定義
- 有些控制訊號不相同,主要是用於輸出操作編碼訊號,由匯流排控制器8288譯碼產生系統控制訊號:
- LOCK*——匯流排封鎖訊號
- S2、S1、S0*——3個狀態訊號
- QS1、QS0——指令佇列狀態訊號
RQ/GT0、RQ/GT1——2個匯流排請求/同意訊號
9. 8088最大組態的匯流排形成
系統地址匯流排
- 採用三態透明鎖存器74LS373和三態單向緩衝器74LS244
- 系統資料匯流排
通過三態雙向緩衝器74LS245形成和驅動 - 系統控制匯流排
主要由匯流排控制器8288形成
MEMR、MEMW、IOR、IOW、INTA*
第五章 半導體儲存器及介面
1. 半導體儲存器的分類
- 讀寫儲存器RAM:SRAM.DRAM,NVRAM
- 只讀儲存器ROM
- 掩膜ROM:資訊製作在晶片中,不可更改
- PROM:允許一次程式設計,此後不可更改
- EPROM:用紫外光擦除,擦除後可程式設計;並允許使用者多次擦除和程式設計
- EEPROM(E2PROM):採用加電方法線上進行擦除和程式設計,也可多次擦寫
Flash Memory(快閃記憶體):能夠快速擦寫的EEPROM,但只能按塊(Block)擦除
2. 半導體儲存器晶片的內部結構
- 每個儲存單元具有一個唯一的地址,可儲存1位(位片結構)或多位(字片結構)二進位制資料
- 儲存容量(bits)與地址、資料線個數有關:
晶片的儲存容量=2^M×N
=儲存單元數×儲存單元的位數
- 地址譯碼電路結構
單譯碼,雙譯碼 片選和讀寫控制邏輯
片選端CS或CE
有效時,可以對該晶片進行讀寫操作
輸出OE
控制讀操作。有效時,晶片內資料輸出
該控制端對應系統的讀控制線
寫WE
控制寫操作。有效時,資料進入晶片中
該控制端對應系統的寫控制線4. 隨機存取儲存器
- 靜態RAM(SRAM)
- SRAM的基本儲存單元是觸發器電路
- SRAM一般採用“字結構”儲存矩陣
- SRAM晶片2114外部特性:
10根地址線A9~A0
4根資料線I/O4~I/O1
片選CS
讀寫WE - SRAM晶片6264外部特性
28個引腳:
13根地址線A12~A0
8根資料線D7~D0
片選CS1、CS2
讀寫WE、OE*
- 動態RAM
- 每個儲存單元存放一位,晶片內每個位單元具有獨立地址
- 需要8個儲存晶片構成一個位元組單元,每個
- DRAM晶片4116外部特性
-
- 7根地址線A6~A0,
-
- 1根資料輸入線DIN,
-
- 1根資料輸出線DOUT,
-
- 行地址選通RAS*,
-
- 列地址選通CAS*,
-
- 讀寫控制WE*.
- DRAM 4116的重新整理:採用“僅行地址有效”方法重新整理
- DRAM晶片2164外部特性
-
8根地址線A7~A0
1根資料輸入線DIN
1根資料輸出線DOUT
行地址選通RAS
列地址選通CAS
讀寫控制WE*5. 只讀儲存器
- EPROM 2716
- 11根地址線A10~A0
8根資料線DO7~DO0
片選/程式設計CE/PGM
讀寫OE
程式設計電壓VPP
- EPROM 2764
- 13根地址線A12~A0
8根資料線D7~D0
片選CE
程式設計PGM
讀寫OE*
程式設計電壓VPP
- EEPROM
用加電方法,進行線上(無需拔下,直接在電路中)擦寫(擦除和程式設計一次完成) - EEPROM 2717A
- 11根地址線A10~A0
8根資料線I/O7~I/O0
片選CE
讀寫OE、WE
狀態輸出RDY/BUSY
- EEPROM 2864A
- 13根地址線A12~A0
8根資料線I/O7~I/O0
片選CE
讀寫OE、WE*
6. 半導體儲存器與CPU的連線
- 儲存晶片的資料線
- 若晶片的資料線正好8根:
一次可從晶片中訪問到8位資料,全部資料線與系統的8位資料匯流排相連 - 若晶片的資料線不足8根:一次不能從一個晶片中訪問到8位資料,“位擴充”
- 儲存晶片的地址線
- 晶片的地址線通常應全部與系統的低位地址匯流排相連
- 定址時,這部分地址的譯碼是在儲存晶片內完成的,我們稱為“片內譯碼”
- 儲存晶片的片選端
- 儲存系統常需利用多個儲存晶片擴充容量,也就是擴充了儲存器地址範圍
- 進行“地址擴充”,需要利用儲存晶片的片選端對多個儲存晶片(組)進行定址
- 這個定址方法,主要通過將儲存晶片的片選端與系統的高位地址線相關聯來實現
- 這種擴充簡稱為“地址擴充”或“字擴充”
譯碼和譯碼器
全譯碼
- 所有的系統地址線均參與對儲存單元的譯碼定址
- 包括低位地址線對晶片內各儲存單元的譯碼定址(片內譯碼),高位地址線對儲存晶片的譯碼定址(片選譯碼)
- 採用全譯碼,每個儲存單元的地址都是唯一的,不存在地址重複
- 譯碼電路可能比較複雜、連線也較多
部分譯碼
- 只有部分(高位)地址線參與對儲存晶片的譯碼
- 每個儲存單元將對應多個地址(地址重複),需要選取一個可用地址
- 可簡化譯碼電路的設計
- 但系統的部分地址空間將被浪費
線選譯碼
- 只用少數幾根高位地址線進行晶片的譯碼,且每根負責選中一個晶片(組)
- 雖構成簡單,但地址空間嚴重浪費,必然會出現地址重複
- 一個儲存地址會對應多個儲存單元
- 多個儲存單元共用的儲存地址不應使用
- 儲存晶片的讀寫控制線
- 晶片OE*與系統的讀命令線相連
當晶片被選中、且讀命令有效時,儲存晶片將開放並驅動資料到匯流排 - 晶片WE*與系統的寫命令線相連
當晶片被選中、且寫命令有效時,允許匯流排資料寫入儲存晶片
7. 儲存晶片與CPU的配合
- 匯流排驅動
- CPU的匯流排驅動能力有限
- 單向傳送的地址和控制匯流排,可採用三態鎖存器和三態單向驅動器等來加以鎖存和驅動
- 雙向傳送的資料匯流排,可以採用三態雙向驅動器來加以驅動
- 時序配合
分析儲存器的存取速度是否滿足CPU匯流排時序的要求
如果不能滿足:考慮更換晶片,匯流排週期中插入等待狀態TW8. 8086儲存器組織
- 定址空間(20位地址線)
220=1M bytes的儲存器定址空間
分段的概念 - 分段組織
段暫存器的16位值左移4位,得到的20位值加上16位的偏移量。 - 字與位元組訪問
AD0 訊號和BHE訊號組合,選擇奇偶位元組或字。
第6章 基本輸入輸出介面
I/O介面概述
- I/O介面是位於系統與外設間、用來協助完成資料傳送和控制任務的邏輯電路
- PC機系統板的可程式設計介面晶片、I/O匯流排槽的電路板(介面卡)都是介面電路
- 訊號轉換
對訊號的形式和資料的格式進行變換
微機直接處理:數字量、開關量、脈衝量 - 資料緩衝
對輸入輸出資料進行緩衝和鎖存
輸出鎖存緩衝環節,輸入鎖存緩衝環節 - 對I/O埠進行定址
與CPU和I/O裝置進行聯絡
I/O介面的典型結構
1. 介面電路的內部結構
- 資料暫存器
儲存外設給CPU和CPU發往外設的資料 - 狀態暫存器
儲存外設或介面電路的狀態 控制暫存器
儲存CPU給外設或介面電路的命令2. 介面電路的外部特性
- 面向CPU一側的訊號:用於與CPU連線、主要是資料、地址和控制訊號
面向外設一側的訊號:用於與外設連線、提供的訊號種類繁多、功能定義、時序及有效電平等差異較大
3. 介面電路晶片的分類
- 通用介面晶片
支援通用的資料輸入輸出和控制的介面晶片 - 面向外設的專用介面晶片
針對某種外設設計、與該種外設介面 面向微機系統的專用介面晶片
與CPU和系統配套使用,以增強其總體功能4. 介面電路的可程式設計性
3. I/O埠的編址
- 資料暫存器、狀態暫存器和控制暫存器佔有的I/O地址常依次被稱為資料埠、狀態埠和控制埠,用於儲存資料、狀態和控制資訊
- 兩類編排形式
- I/O埠獨立編址
優點:
-
- I/O埠的地址空間獨立
-
- 控制和地址譯碼電路相對簡單
-
- 專門的I/O指令使程式清晰易讀
缺點:
-
- I/O指令沒有儲存器指令豐富
- I/O埠與儲存器統一編址
優點:
-
- 不需要專門的I/O指令
-
- I/O資料存取與儲存器資料存取一樣靈活
缺點:
-
- I/O埠要佔去部分儲存器地址空間
-
程式不易閱讀(不易分清訪存和訪問外設)
4. 8088/8086的輸入輸出指令
輸入指令
IN AL,i8 ;位元組輸入,直接定址
IN AL,DX ;位元組輸入,間接定址
IN AX,i8 ;字輸入,直接定址
IN AX,DX ;字輸入,間接定址
輸出指令
OUT i8,AL ;位元組輸出,直接定址
OUT DX,AL ;位元組輸出,間接定址
OUT i8,AX ;字輸出,直接定址
OUT DX,AX ;字輸出,間接定址
1. 8088/8086的I/O埠
- 8086用於定址外設埠的地址線為16條,埠最多為216=65536(64K)個,埠號(埠地址)為0000H ~ FFFFH
- 每個埠地址對應一個位元組空間
- 定址方式
- 直接定址:只用於定址00H ~ FFH前256個埠,運算元i8表示埠號
- 間接定址:可用於定址全部64K個埠,DX暫存器的值就是埠號,對埠號大於FFH的埠只能採用間接定址方式
- 資料交換
- 如果輸入輸出一個位元組,使用AL暫存器
如果輸入輸出一個字,使用AX暫存器
5. I/O地址的譯碼
6. 資料傳送方式
- 程式控制下的資料傳送:通過CPU執行程式中的I/O指令來完成傳送,又分為:無條件傳送、查詢傳送、中斷傳送
- 直接儲存器存取(DMA)——傳送請求由外設向DMA控制器(DMAC)提出,後者向CPU申請匯流排,最後DMAC利用系統匯流排來完成外設和儲存器間的資料傳送
I/O處理機——CPU委託專門的I/O處理機來管理外設,完成傳送和相應的資料處理
1. 無條件傳送方式及其介面
- 在CPU與慢速變化的裝置(或簡單裝置)交換資料時,可以認為它們總是處於“就緒”狀態,隨時可以進行資料傳送
適合於簡單裝置,如LED數碼管、開關等
next: mov dx,8000h ;DX指向資料埠
in al,dx ;從輸入埠讀開關狀態
not al ;反相
out dx,al ;送輸出埠顯示
call delay ;調子程式延時
jmp next ;重複
2. 查詢傳送方式及其介面
- CPU需要先了解(查詢)外設的工作狀態,然後在外設可以交換資訊的情況下(就緒)實現資料輸入或輸出
- 對多個外設的情況,則CPU按一定順序依次查詢(輪詢)
- 查詢傳送的特點是:工作可靠,適用面寬,但傳送效率低
//查詢輸入介面程式示例
mov dx,8000h ;DX指向狀態埠
status: in al,dx ;讀狀態埠
test al,01h ;測試標誌位D0
jz status ;D0=0,未就緒,繼續查詢
inc dx ;D0=1,就緒,DX指向資料埠
in al,dx ;從資料埠輸入資料
//查詢輸出介面程式示例
mov dx,8000h ;DX指向狀態埠
status: in al,dx ;讀取狀態埠的狀態資料
test al,80h ;測試標誌位D7
jnz status ;D7=1,未就緒,繼續查詢
inc dx ;D7=0,就緒,DX指向資料埠
mov al,buf ;變數buf送AL
out dx,al ;將資料輸出給資料埠
//查詢方式的EEPROM程式設計
next: mov al,55h ;寫入內容=55H
mov [bx],al ;寫入儲存單元
nop ;空操作指令,起延時作用
nop
next1: in al,dx ;查詢狀態口
test al,01h ;測試D0
jz next1 ;D0=0,晶片還在寫入
inc bx ;D0=1,寫畢,指標移動
loop next ;迴圈至全部位元組寫完
3. 中斷傳送方式
- 中斷請求 =>中斷響應=>關中斷=>斷點保護=>中斷識別=>現場保護=>中斷服務=>恢復現場=>開中斷=>中斷返回
- 中斷傳送是一種效率更高的程式傳送方式
- 進行傳送的中斷服務程式是預先設計好的
中斷請求是外設隨機向CPU提出的
4. DMA傳送方式
- CPU對DMA控制器進行初始化設定
- 外設、DMAC和CPU三者通過應答訊號建立聯絡:CPU將匯流排交給DMAC控制
- DMA傳送
DMA讀儲存器:儲存器 → 外設
DMA寫儲存器:儲存器 ← 外設 - 自動增減地址和計數,判斷傳送完成否
傳送方式的比較
- 無條件傳送:慢速外設需與CPU保持同步
- 查詢傳送: 簡單實用,效率較低
- 中斷傳送:外設主動,可與CPU並行工作,但每次傳送需要大量額外時間開銷
- DMA傳送:DMAC控制,外設直接和儲存器進行資料傳送,適合大量、快速資料傳送
第7章 中斷控制介面
1. 8088中斷系統
- 8088的中斷系統採用向量中斷機制
- 能夠處理256箇中斷
- 用中斷向量號0~255區別
可遮蔽中斷還需要藉助專用中斷控制器Intel 8259A實現優先權管理
1. 8088的中斷型別
- 內部中斷:除法錯中斷、指令中斷、溢位中斷、單步中斷
外部中斷:非遮蔽中斷、可遮蔽中斷
2. 8088的中斷響應過程
- 8088各種中斷源的優先權,實際上是指被識別出來的先後
多種中斷同時請求時,最先響應的則可能是單步中斷或NMI中斷
3. 8088的中斷向量表
- 中斷向量:中斷服務程式的入口地址(首地址)
- 邏輯地址含有段地址CS和偏移地址IP(32位)
- 每個中斷向量的低字是偏移地址、高字是段地址,需佔用4個位元組
- 8088微處理器從實體地址00000H開始,依次安排各個中斷向量,向量號也從0開始
- 256箇中斷佔用1KB區域,就形成中斷向量表
向量號為N的中斷向量的實體地址=N×4
2. 內部中斷服務程式
1. 內部中斷服務程式
編寫80H號中斷服務程式
功能:顯示以“0”結尾字串的功能
,利用顯示器功能呼叫INT 10H,
字串緩衝區首地址為入口引數,
DS:DX(段地址:偏移地址)傳遞引數
intoff dw ?//偏移
intseg dw ?//段基址
intmsg db ‘A Instruction Interrupt !’//字串
db 0dh,0ah,0
//儲存中斷向量
mov ax,3580h//AH=35H,AL=中斷向量號
int 21h //DOS功能呼叫INT 21H
mov intoff,bx ;儲存偏移地址
mov intseg,es ;儲存段基地址
//設定中斷向量
//設定中斷向量(DOS功能呼叫INT 21H)
push ds
mov dx,offset new80h
mov ax,seg new80h
mov ds,ax
mov ax,2580h//AH=25,AL=中斷向量號
int 21h
pop ds
//呼叫中斷服務程式,設定入口引數: //DS=段地址(已設定)
//; DX=偏移地址
mov dx,offset intmsg
int 80h ;呼叫80H中斷服務程式
//主程式結束
mov dx,intoff
mov ax,intseg
mov ds,ax
mov ax,2580h
int 21h
mov ax,4c00h
int 21h
//進入中斷服務程式
new80h proc
sti ;開中斷
push ax ;保護暫存器
push bx
push si
mov si,dx
//顯示字串
new1:mov al,[si]
cmp al,0
jz new2
mov bx,0
mov ah,0eh
int 10h
inc si
jmp new1
//退出中斷服務程式
new2: pop si ;恢復暫存器
pop bx
pop ax
iret ;中斷返回
new80h endp
3. 8259A中斷控制器
1. 8259A的內部結構和引腳
- 中斷控制
- 中斷請求暫存器IRR
儲存8條外界中斷請求訊號IR0~IR7的請求狀態
Di位為1表示IRi引腳有中斷請求;為0表示無請求 - 中斷服務暫存器ISR
儲存正在被8259A服務著的中斷狀態
Di位為1表示IRi中斷正在服務中;為0表示沒有被服務 - 中斷遮蔽暫存器IMR
儲存對中斷請求訊號IR的遮蔽狀態
Di位為1表示IRi中斷被遮蔽(禁止);為0表示允許
- 與處理器介面
- 中斷級連
- 一個系統中,8259A可以級連,有一個主8259A,若干個(最多8個)從8259A
- 級連時,主8259A的三條級連線CAS0~CAS2作為輸出線,連至每個從8259A的CAS0~CAS2
SP/EN在非緩衝方式下,規定該8259A是主片(SP=1)還是從片(SP=0)
3. 8259A的工作方式
- 設定優先權方式
- 普通全巢狀方式
- 特殊全巢狀方式
- 優先權自動迴圈方式
- 結束中斷處理方式
- 8259A利用中斷服務暫存器ISR判斷:
某位為1,表示正在進行中斷服務;
該位為0,就是該中斷結束服務。 - 自動中斷結束方式
- 普通中斷結束方式,配合全巢狀優先權方式使用
- 特殊中斷結束方式,配合迴圈優先權方式使用
- 遮蔽中斷源方式
- 普通遮蔽方式
將IMR的Di位置1,則對應的中斷IRi被遮蔽 - 特殊遮蔽方式
將IMR的Di位置1,對應的中斷IRi被遮蔽的同時,使ISR的Di位置0
- 中斷觸發方式
- 邊沿觸發方式
- 電平觸發方式
- 資料線連線方式
- 緩衝方式
8259A的資料線需加緩衝器予以驅動
8259A把SP/EN引腳作為輸出端,輸出允許訊號,用以鎖存或開啟緩衝器 非緩衝方式
SP/EN引腳為輸入端
若8259A級連,由其確定是主片或從片4. 8259A的程式設計
- 初始化命令字ICW
- 初始化命令字ICW最多有4個
- 8259A在開始工作前必須寫入
- 必須按照ICW1~ICW4順序寫入
- ICW1和ICW2是必須送的
- ICW3和ICW4由工作方式決定
中斷控制器的初始化程式段
//初始化主片8259A
mov al,11h ;寫入ICW1
out 20h,al
jmp intr1
intr1: mov al,08h ;寫入ICW2
out 21h,al
jmp intr2
intr2: mov al,04h ;寫入ICW3
out 21h,al
jmp intr3
intr3: mov al,1h ;寫入ICW4
out 21h,al
//初始化從片8259A
mov al,11h ;寫入ICW1
out 0a0h,al
jmp intr5
intr5: mov al,70h ;寫入ICW2
out 0a1h,al
jmp intr6
intr6: mov al,02h ;寫入ICW3
out 0a1h,al
jmp intr7
intr7: mov al, 01h ;寫入ICW4
out 0a1h,al
- 操作命令字OCW
- OCW共有3個:OCW1~OCW3
- 寫入時沒有順序要求,需要哪個OCW就寫入那個OCW
應用注意事項
- 利用上升沿做為中斷請求IRQ的有效訊號
- IRQ0~IRQ7的中斷向量號依次為08H~0FH,IRQ8~IRQ15依次為70H~77H
採用普通全巢狀優先權方式,中斷優先權從高到低順序為IRQ0~IRQ2、IRQ8~IRQ15、IRQ3~IRQ7,且不能改變
5. 外部中斷服務程式
/*8259A的IRQ0(向量號為08H)中斷請求來自定時器8253,每隔55ms產生一次
本程式的08H號中斷服務程式,每次中斷顯示一串資訊,顯示10次
*/
intmsg db ‘A 8259A Interrupt !’
db 0dh,0ah,0
counter db 0
mov ax,3508h
int 21h
push bx ;儲存偏移地址
push es ;儲存段基地址
//設定中斷向量
cli
push ds
mov dx,offset new08h
mov ax,seg new08h
mov ds,ax
mov ax,2508h
int 21h
pop ds
//設定中斷暫存器
in al,21h
push ax
and al,0feh ;允許IRQ0
out 21h,al
mov counter,0 ;設定中斷次數初值
sti ;開中斷
//迴圈等待中斷
start1: cmp counter,10
jb start1 ;中斷10次退出
//子程式結束
cli
pop ax
out 21h,al
pop dx
pop ds
mov ax,2508h
int 21h
sti
mov ax,4c00h
int 21h
//進入中斷服務程式
new08h proc
sti ;開中斷
push ax ;保護暫存器
push bx
push ds
mov ax,data
mov ds,ax ;設定資料段DS
//中斷處理
inc counter
mov si,offset intmsg ;顯示資訊
call dpstri
//
mov al,20h
out 20h,al
pop ds ;恢復暫存器
pop bx
pop ax
iret ;中斷返回
new08h endp
//顯示字串
dpstri proc ;顯示字串子程式
push ax
push bx
dps1: lodsb
cmp al,0
jz dps2
//顯示字串
mov bx,0
mov ah,0eh
int 10h
jmp dps1
dps2: pop bx
pop ax
ret
dpstri endp
第8章 定時計數控制介面
8253/8254定時計數器
- 3個獨立的16位計數器通道
- 每個計數器有6種工作方式
- 按二進位制或十進位制(BCD碼)計數
- 計數器結構分析
- 計數初值存於預置暫存器;
- 在計數過程中,減法計數器的值不斷遞減,而預置暫存器中的預置不變。
- 輸出鎖存器用於寫入鎖存命令時,鎖定當前計數值
- 計數器的3個引腳
- CLK時鐘輸入訊號——在計數過程中,此引腳上每輸入一個時鐘訊號(下降沿),計數器的計數值減1
- GATE門控輸入訊號——控制計數器工作,可分成電平控制和上升沿控制兩種型別
OUT計數器輸出訊號——當一次計數過程結束(計數值減為0),OUT引腳上將產生一個輸出訊號
8253/8254的工作方式
- 方式0 計數結束中斷
- 方式1 可程式設計單穩脈衝
- 方式2 頻率發生器(分頻器)
- 方式3 方波發生器
- 方式4 軟體觸發選通訊號
- 方式5 硬體觸發選通訊號
- 注意
- 處理器寫入8253的計數初值只是寫入了預置暫存器,之後到來的第一個CLK輸入脈衝(需先由低電平變高,再由高變低)才將預置暫存器的初值送到減1計數器。
從第二個CLK訊號的下降沿,計數器才真正開始減1計數。
8253/8254的程式設計
第9章 DMA控制介面
DMA控制器8237A
- 每個8237A晶片有4個DMA通道,就是有4個DMA控制器
- 每個DMA通道具有不同的優先權
- 每個DMA通道可以分別允許和禁止
- 每個DMA通道有4種工作方式
- 一次傳送的最大長度可達64KB
多個8237A晶片可以級連,擴充套件通道數
1. 8237A的內部結構和引腳
- 請求與響應訊號
- DREQ0~DREQ3:DMA通道請求
- HRQ:匯流排請求
- HLDA:匯流排響應
- DACK0~DACK3:DMA通道響應
- DMA傳送控制訊號
- A0~A7:地址線。輸出低8位儲存器地址。
DB0~DB7:資料線。輸出高8位儲存器地址 - ADSTB:地址選通
- AEN:地址允許。
- MEMR*:儲存器讀
- MEMW*:儲存器寫
- IOR*:I/O讀
- IOW*:I/O寫
- READY:準備好
- EOP*:過程結束。DMA傳送過程結束,輸出一個低有效脈衝。
- 處理器介面訊號
- DB0~DB7:資料線。
- A0~A3:地址線。
- CS*:片選
- IOR*:I/O讀。讀取8237A內部暫存器。
- IOW*:I/O寫。寫入8237A內部暫存器。
- CLK:時鐘。控制晶片內部操作和資料傳輸。
- RESET:復位。使8237A處於初始狀態。
8237A的兩種工作狀態
- 空閒週期:
作為介面電路,受CPU控制的工作狀態 有效週期:
作為DMAC控制DMA傳送的工作狀態
2. 8237A的工作時序·空閒週期
DMA傳送時序- S1狀態——輸出16位儲存器地址
AEN輸出高電平,表示DMA傳送 - S2狀態——輸出DMA響應訊號和控制訊號
DMA讀:MEMR和IOW有效
DMA寫:IOR和MEMW有效 - S3和Sw狀態——檢測資料傳送是否能夠完成,決定是否插入等待狀態Sw
S4狀態——完成資料傳送
3. 8237A的工作方式
- DMA傳送方式
- 單位元組傳送方式:一次傳送一個位元組,效率略低,
DMA傳送之間CPU有機會重新獲取匯流排控制權 - 資料塊傳送方式:一次請求傳送一個數據塊,效率高,
整個DMA傳送期間CPU長時間無法控制匯流排 - 請求傳送方式
DREQ訊號有效就連續傳送資料
DREQ訊號無效,DMA傳送被暫時中止,8237A釋放匯流排,CPU可繼續操作 - 級連方式
- DMA傳送型別
· DMA讀 · DMA寫 · DMA檢驗 - DMA通道的優先權方式
- 固定優先權方式——優先權固定:0,1,2.。。
- 迴圈優先權方式——優先權迴圈變化
自動初始化方式
4. 8237A的暫存器
通道暫存器(4個通道分別具有):基地址暫存器、基位元組數暫存器、現行地址暫存器、現行位元組數暫存器。
狀態、命令暫存器:命令暫存器、狀態暫存器、請求暫存器、方式暫存器、遮蔽暫存器、臨時暫存器