IO設計基本理論
1. IO接口和IO端口
- IO端口是IO接口内可由CPU進行讀寫操作的各種寄存器。可分為資料端口、狀态端口和控制端口。
2. IO端口的編址方式
- 統一編址:IO端口與存儲器共享一個位址空間;
- 獨立編址:IO端口與存儲器有互相獨立的位址空間。
3. IO輸入輸出的基本方式
無條件傳送:
- 預設IO裝置永遠處于準備好狀态,無需CPU讀取其狀态;
- 隻需要設計資料端口,無需設計狀态端口和控制端口;
程式查詢法:
- 程式中不斷查詢IO口狀态,當IO裝置準備好之後再進行操作;
- 優點:實作電路簡單;缺點:程式效率低。
IO中斷法:
- IO裝置準備好之後向CPU提出中斷,CPU在中斷相應程式中對IO進行操作。
- 最優的方法。
MDA法:
- 利用外部硬體操控IO裝置。
定時/計數器8253
1. 基本結構
- 内含三個獨立的計數器:計數器0、計數器1和計數器2;
- 每個計數器可以通過其方式控制寄存器進行單獨控制;
- 總共占用4個端口位址,每個計數器各占用一個端口位址,三個控制字共用一個端口位址;
- 每個計數器内部有四個寄存器:控制字、初值寄存器、計數寄存器、輸出鎖存器;
- 控制字為一個位元組,高2位控制選擇計數器,次2位控制讀寫規則,再次3位控制工作方式,最後1位控制資料類型:
-
當RL1
RL2為00時,為計數寄存器鎖存指令,将此時CE的值鎖存到OL中,接下來再讀相應計數器端口時可以讀走鎖存在OL中的值,讀完之後自動解鎖;
2. 工作方式分析:
(1)000 計數達到終值而中斷:
- 先向8253寫入方式控制字,再寫入時常數,此時OUT變低電平;
- 寫入時常數之後,下一個CLK脈沖CR内容被置入CE中;
- 在後續CLK脈沖中,進行CE減一計數,當計數到0時OUT輸出一個高電平(可用作中斷請求);
- GATE控制計數,當GATE=1時允許計數,當GATE=0時暫停計數。
(2)001 單脈沖形成:
- 先向8253寫入控制字,再寫入時常數,此時OUT為高電平;
- 當GATE端檢測到一個上升沿的時候,觸發單脈沖形成,OUT變低,且CR被置入CE中;
- 在後續CLK脈沖中,進行CE減一計數,當計數到0時OUT變高電平;
- 等待下一個GATE信号到,重複上述操作。
(3)*10 分頻器:
- 先向8253寫入控制字,再寫入時常數,此時OUT為高電平;
- 寫入時常數之後,下一個CLK脈沖CR内容被置入CE中,在後續CLK脈沖中,進行CE減一計數;
- 當CE減到01h時,在OUT端輸出一個負脈沖,并重新将CR置入CE中開始寫一個循環;
- 正常情況下,時常數為N,則輸出信号為時鐘的N分頻;
- GATE控制計數,當GATE=1時允許計數,當GATE=0時暫停計數。
(4)*11 方波産生器:
- 先向8253寫入控制字,再寫入時常數,此時OUT為高電平;
- 若置入的為奇數,将在CR置入CE時将其-1變成偶數;
- 時常數置入完畢的下一個CLK脈沖期間,CR置入CL并開始-2計數;當CE計數到0時OUT變低,同時再次将CR置入CE中進行-2計數,當CE為0時OUT再變高,進而生成方波;
- 正常情況下,時常數為N,則輸出信号為時鐘的N分頻方波信号;
- GATE控制計數,當GATE=1時允許計數,當GATE=0時暫停計數。
并行接口晶片8255A
1. 基本結構和概念
- 計算機接口的分類
并行接口:資料在多根線上同時傳送;
串行接口:資料按位順序在一根線上分時傳送。
- 8255A的端口:三個資料端口一個控制端口
有三個對應的端口資料寄存器:PA0-PA7,PB0-PB7,PC0-PC7;
端口C又可以分為高四位和第四位,分别位于A組和B組中,作為控制輔助;
總共占用四個端口位址:三個端口寄存器和一個控制寄存器。
2. 控制字管理
- 當A1A0為11時,表示通路控制寄存器;
- 可以通過控制字控制A組、B組工作方式,端口A、B方向,端口C高四位、低四位方向,端口C各位的值。
- 控制字各位的含義:
- 如果控制字最高位寫1,則是在選擇工作方式、如果寫0,則是在對PC口進行位管理;
3. 工作方式管理
- 方式0:基本的輸入/輸出;
- 方式1:有聯絡信号的輸入/輸出(PA、PB):
方式1輸入:
方式1輸出: