第3章 IO地址譯碼_第1頁
第3章 IO地址譯碼_第2頁
第3章 IO地址譯碼_第3頁
第3章 IO地址譯碼_第4頁
第3章 IO地址譯碼_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第3章 基本的I/O接口本章內(nèi)容提要: 什么叫接口技術(shù)? 接口具有哪些功能? 接口與CPU如何交換數(shù)據(jù)? I/O端口及其編址方式 I/O地址譯碼電路原理3.1 I/O接口概述一一、接口(、接口(InterfaceInterface) 就是就是CPUCPU與外界的連接電路與外界的連接電路, ,或者說是與外或者說是與外界進行信息交換的界面。界進行信息交換的界面。CPU接口接口I/O設(shè)備設(shè)備I/OI/O設(shè)備設(shè)備: : 鍵盤、顯示器、打印機、硬盤、鍵盤、顯示器、打印機、硬盤、 光驅(qū)、控制設(shè)備、測量設(shè)備、光驅(qū)、控制設(shè)備、測量設(shè)備、 通訊設(shè)備通訊設(shè)備接口接口: 硬件硬件 支撐作用;支撐作用; 軟件軟件 驅(qū)

2、動控制驅(qū)動控制。什么叫接口技術(shù)?什么叫接口技術(shù)? 采用硬件與軟件相結(jié)合的方法,研究微處理器如何與采用硬件與軟件相結(jié)合的方法,研究微處理器如何與外界進行最佳連接,實現(xiàn)高效可靠的信息交換的一門技術(shù)外界進行最佳連接,實現(xiàn)高效可靠的信息交換的一門技術(shù)。舉例:顯示卡接口總線接口串行接口并行接口USB接口鍵盤接口硬盤接口為什么要引入接口?1.微機和I/O設(shè)備的信息類型和格式可能不一樣。2.微機和I/O設(shè)備信號傳輸處理的速度可能不匹配。3.不用接口,I/O直接接CPU,隨著外設(shè)增加,會大大降低CPU的效率。4.I/O直接接CPU,會使外設(shè)硬件結(jié)構(gòu)過于依賴CPU,對外設(shè)本身發(fā)展不利。I/OI/O設(shè)備與I/OI

3、/O接口1.I/O接口受CPU控制,I/O設(shè)備受I/O接口控制。2.為增加通用性,I/O接口的接口電路一般均具有可編程功能。3.微機的應(yīng)用離不開與外部設(shè)備接口的設(shè)計、選用和連接。說明:2. 接口組成(1)接口硬件(2)接口軟件(設(shè)備驅(qū)動程序) 初始化程序段:設(shè)置接口工作方式及初始條件。傳送方式處理程序段:CPUCPU針對不同的I/OI/O設(shè)備有不同的處理方式。 主控程序段:完成接口任務(wù)的程序。程序終止與退出程序段:接口電路硬件保護及操作系統(tǒng)中數(shù)據(jù)恢復(fù)。 輔助程序段:提供人- -機對話手段。 數(shù)據(jù)緩沖功能:通過寄存器或鎖存器實現(xiàn)。存放數(shù)據(jù)的寄存器或鎖存器稱之為數(shù)據(jù)口。 接受和執(zhí)行CPU命令功能:

4、存放CPUCPU命令代碼的寄存器稱之為命令口,存放執(zhí)行狀態(tài)信息的寄存器稱之為狀態(tài)口。 設(shè)備選擇功能:CPUCPU通過地址譯碼選擇不同外設(shè)。即CPUCPU通過地址譯碼選擇不同I/OI/O接口。 信號轉(zhuǎn)換功能:協(xié)調(diào)總線信號與I/OI/O設(shè)備信號。轉(zhuǎn)換包括信號的邏輯關(guān)系、時序配合和電平轉(zhuǎn)換。 可編程功能:增加接口的靈活性和智能性。3、接口的功能1 1、接口信息、接口信息 數(shù)據(jù)信息數(shù)據(jù)信息: 如如:數(shù)字量、模擬量、開關(guān)量數(shù)字量、模擬量、開關(guān)量; 狀態(tài)信息狀態(tài)信息: 表示外設(shè)是否準備好信號。表示外設(shè)是否準備好信號。 如:如:READY、BUSY、ACK 控制信息控制信息: 表示啟動、停止外設(shè)之類的信號表

5、示啟動、停止外設(shè)之類的信號. (STROBE)3.1.13.1.1 CPU與I/O之間的接口信息CPU地址數(shù)據(jù)控制數(shù)據(jù)控制狀態(tài) I/O設(shè)備接口電路一、I/O端口1.接口電路中的端口是能被CPU直接存取訪問的寄存器。2. CPU通過端口地址向接口電路中的寄存器發(fā)送命令,讀取狀態(tài)和傳送數(shù)據(jù)。3.一個接口可以有幾個端口。 如命令口、狀態(tài)口和數(shù)據(jù)口,分別對應(yīng)于命令寄存器、狀態(tài)寄存器和數(shù)據(jù)寄存器。 3.1.2 I/O端口及其訪問方式狀態(tài)寄存器數(shù)據(jù)寄存器命令寄存器CPU發(fā)送傳送讀取30h31h32hCPU對I/O端口的訪問舉例:1.統(tǒng)一編址 從存儲器空間劃出一部分地址空間給I/O設(shè)備,把I/O接口中的端口

6、當(dāng)作存儲器單元一樣進行訪問。 優(yōu)點: 不設(shè)置專門的I/O指令,指令類型多,功能齊全。 缺點: 1、占用了存儲器的地址空間,使存儲器容量減小。 2、另外指令長度比專門I/O指令要長,因而執(zhí)行速度較慢。3.1.3 I/O端口的編址方式2.獨立編址 這種方式是接口中的端口地址單獨編址,而不與存儲空間合一起。 如:IBM-PC系列、Z-80系列機 主要優(yōu)點: 1、I/O端口地址不占用存儲器空間; 2、I/O指令短,執(zhí)行速度快; 3、I/O操作和存儲器操作層次清晰,程序的可讀性強。3 3、IntelIntel系列微機I/OI/O編址 Intel系列微處理器支持I/O獨立編址方式和I/O統(tǒng)一編址(存儲器映

7、象編址)方式。I/O統(tǒng)一編址時,I/O地址不能緩存。Intel系列微機系統(tǒng)僅支持I/O獨立編址方式。1. I/O指令中端口地址的寬度 IBM-PC系列采用I/O(input/output)指令訪問端口,實現(xiàn)數(shù)據(jù)的I/O傳送。在I/O指令中可采用單字節(jié)地址或雙字節(jié)地址尋址方式。 單字節(jié)地址指令單字節(jié)地址指令 其指令格式為: IN AL, PORT ;輸入 OUT PORT, AL ;輸出 這里,PORT是一個8位的字節(jié)地址,則最多可訪問256個端口。例如: IN AL, 60H ;60H為系統(tǒng)板8255A的PA端口地址 OUT 61H, AL ;61H為系統(tǒng)板8255A的PB端口地址三、獨立編址

8、方式的端口訪問 雙字節(jié)地址作為端口地址雙字節(jié)地址作為端口地址 MOV DX, H IN AL, DX ;8位傳送 MOV DX, H OUT DX,AL ;8位傳送 這里, H 為16位的兩字節(jié)地址。則最多可尋址216=64K個端口。例如:例如:MOV DX,300H ;300H為擴展板8255A的PA端口IN AL,DX MOV DX,301H ; 301H為擴展板8255A的PB端口OUT DX,AL 所謂對端口的訪問就是CPU對端口的讀/寫,將端口的數(shù)據(jù)傳送存儲器。例如:例如:輸入時 MOV DX,300H ;I/O端口 IN AL,DX ;從端口讀數(shù)據(jù)到AL MOV DI,AL ;將數(shù)

9、據(jù)從AL存儲器輸出時 MOV DX,301H ;I/O端口 MOV AL,SI ;從內(nèi)存取數(shù)到AL OUT DX,AL ;數(shù)據(jù)從AL端口2. I/O2. I/O端口訪問端口訪問 C語言有強大的I/O操作功能,利用c語言可方便地設(shè)計操作界面,同時也可以對外設(shè)進行直接控制. I/O命令 端口輸出 outportb(port,value)/從port端口輸出字節(jié)型數(shù)據(jù) value outportw (port,value)/從port端口輸出字型數(shù)據(jù)value 端口輸入:Value=inportb(port) /從port端口輸入字節(jié)型數(shù)據(jù), 并存儲在 value變量中;Value=inportw(

10、port) /從port端口輸入字型數(shù)據(jù), 并存儲在value變量中;注意: PASCAL語言,Turbo C語言都有類似的I/o命令.3. C3. C語言語言I/OI/O語句語句3.2 I/O3.2 I/O數(shù)據(jù)傳輸方式數(shù)據(jù)傳輸方式 無條件傳送方式(同步傳送) 條件傳送方式(查詢方式); 中斷傳送方式 直接存儲器存取(DMA)傳送方式 條件是己知的情況; 外部設(shè)備是準備好的; 不用查詢外設(shè)的狀態(tài)信息; 直接使用IN或OUT指令完成數(shù)據(jù)傳送一、無條件傳送方式(同步傳送)緩沖器CE地址譯碼器IO/MRD數(shù)據(jù)總線數(shù)據(jù)來自外設(shè)8位地址總線(a)(a)無條件輸入無條件輸入8位緩沖器CE地址譯碼器IO/M

11、WR數(shù)據(jù)總線數(shù)據(jù)到外設(shè)地址總線(b)無條件輸出 先查詢外設(shè)的狀態(tài)信息是否準備好; 準備好,就傳送數(shù)據(jù); 否則,繼續(xù)查詢.二、條件傳送方式(查詢方式)輸出設(shè)備數(shù)據(jù)鎖存器(8)數(shù)據(jù)總線數(shù)據(jù)口選中WRIO/M狀態(tài)標志QDR+5V接數(shù)據(jù)總線DO位0為空閑ACKIO/MRD狀態(tài)口選中地址譯碼器地址總線準備好為“1”三、中斷傳送方式 由外設(shè)向由外設(shè)向CPUCPU發(fā)出中斷請求;發(fā)出中斷請求; CPUCPU暫停原程序執(zhí)行,轉(zhuǎn)入中斷服務(wù);暫停原程序執(zhí)行,轉(zhuǎn)入中斷服務(wù); 完成后返回原程序繼續(xù)執(zhí)行。完成后返回原程序繼續(xù)執(zhí)行。主程序執(zhí)行子程序轉(zhuǎn)向返回繼續(xù)執(zhí)行優(yōu)點: CPU不用等待外設(shè),提高CPU的利用率。四、DMA傳

12、送方式由外設(shè)與計算機內(nèi)存直接進行數(shù)據(jù)交換,而不是通過CPU,即DMA傳送;在DMA傳送期間,DMA控制器接管了總線控制權(quán),而CPU處在停機方式,即處于等待狀態(tài);在DMA傳送完成后,CPU再恢復(fù)對總線的控制權(quán),進入工作狀態(tài)。RAMCPU外設(shè)DMA控制器I/ODMACRAMCPUDREQHRQHLDADACKDMAR/W3.3 I/O端口地址分配及地址譯碼一、I/O接口硬件分類I/O接口的硬件分成兩類:1. 系統(tǒng)板上的I/O芯片 如: 定時/計數(shù)器、中斷控制器、DMA 控制器,并行接口等。2. I/O擴展槽上的接口控制卡 如: 軟驅(qū)卡、硬驅(qū)卡、圖形卡、聲卡、打印卡、串行通信卡等。 表表3.1 3.

13、1 系統(tǒng)板上接口芯片的端口地址系統(tǒng)板上接口芯片的端口地址 I/O芯片名稱芯片名稱 端口地址端口地址DMA控制器1 00001FHDMA控制器2 0C00DFH DMA頁面寄存器 08009FH中斷控制器1 02003FH中斷控制器2 0A00BFH 定時器 04005FH并行接口芯片(鍵盤接口) 06006FHRT/CMOS RAM 07007FH 協(xié)處理器 0F00FFH表表3.2 .2 擴展槽上接口控制卡的端口地址擴展槽上接口控制卡的端口地址 I/0 I/0接口名稱接口名稱 端口地址端口地址游戲控制卡 20020FH并行口控制卡1 37037FH并行口控制卡2 27027FH串行口控制卡1

14、 3F83FFH串行口控制卡2 2F02FFH原型插件板(用戶可用) 30031FH同步通信卡1 3A03AFH同步通信卡2 38038FH單顯MDA 3B03BFH彩顯CGA 3D03DFH彩顯EGG/VGA 3C03CFH硬驅(qū)控制卡 1F01FFH軟驅(qū)控制卡 3F03F7HPC網(wǎng)卡 36036FH二、I/O端口地址分配1. PC微機I/O地址線有16根,對應(yīng)的I/O端口編址可達64K字節(jié)。2. 其端口地址譯碼是采用非完全譯碼方式,即只考慮了低10位地址線A0A9,而沒 有考慮高6位地址線A10A15。3.I/0端口地址范圍是0000H003FFH,總共只有1024個端口。三、I/O端口地址

15、選用的原則凡是被系統(tǒng)配置占用了的地址一律不能使用;未被占用的地址,用戶可以使用。但申明保留的地址,不要使用。用戶可使用300H-31FH地址。3.3.2 I/O3.3.2 I/O端口地址譯端口地址譯碼碼一、一、I/OI/O地址譯碼電路原理地址譯碼電路原理 譯碼電路的輸入信號譯碼電路的輸入信號 I/OI/O地址譯碼電路不僅僅與地址地址譯碼電路不僅僅與地址信號有關(guān),而且與控制信號有關(guān)信號有關(guān),而且與控制信號有關(guān) . .例如,例如, 用用AENAEN信號控制非信號控制非DMADMA傳送;傳送; 用用IOR_IOR_和和IOW_IOW_信號控制對端口的讀信號控制對端口的讀/ /寫等。寫等。 用用I/O

16、CSI/OCS1616信號控制信號控制8 8位或位或1616位位I/OI/O端端口口GND32RESDRV33+5V34IRQ935-5V36DREQ237-12V38-0WS39+12V40GND41-SMEMW42-SMEMR43-IOW44-IOR45-DACK346DREQ347-DACK148DREQ149-REFSH50SYSCLK51IRQ752IRQ653IRQ554IRQ455IRQ356-DACK257TC58ALE59+5V6014.3MHZ61GND62-IOCHCK1D72D63D54D45D36D27D18D09IOCHRDY10AEN11A1912A1813A17

17、14A1615A1516A1417A1318A1219A1120A1021A922A823A724A625A526A427A328A229A130A031J?PC62A0二、二、I/OI/O地址譯碼電路中的地址線分配方法地址譯碼電路中的地址線分配方法 高位地址線與CPU的控制信號進行組合,經(jīng)譯碼電路產(chǎn)生I/O接口芯片CS的片選。 低位地址線不參加譯碼,直接連到I/O接口芯片,進行I/O接口芯片的片內(nèi)端口尋址,即寄存器尋址。地址線地址線 0 0 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 控控 制制 片片 選選 片內(nèi)端口尋址片內(nèi)端口尋址 1.固定式端口地址譯碼 固定式是指接口中用

18、到的端口地址不能更改。例例1 1:設(shè)計I/O端口地址為2F8H的只讀譯碼電路。 分析: 若要產(chǎn)生2F8H端口地址,則譯碼電路的輸入地址線就應(yīng)具有如表2.3所示的值。 三、I/O端口地址譯碼電路設(shè)計 表2.3 譯碼電路輸入地址線的值地址線 0 0 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 二進制 0 0 1 0 1 1 1 1 1 0 0 0 十六進制 2 F 8 固定式端口地址譯碼123U3A74LS321274LS0412345611128U474LS3012345611128U474LS301274LS0474LS0412VCCA9A1A2A3A4A5A6A7A0A8AE

19、NIOR-VCCVCC2F8H例例2 2: 使用74LS138設(shè)計一個系統(tǒng)板上接口芯片的I/O端口地址譯碼電路,并且讓每個接口芯片內(nèi)部的端口數(shù)目為32個。 分析:由于系統(tǒng)板上的I/O端口地址分配在0000FFH范圍內(nèi),只使用低8位地址線。 表3.4 譯碼電路輸入地址線的值地址線 0 0 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 位功能 控 制 片 選 片內(nèi)端口尋址 十六進制 0 H 0 7 H 0 1F H I/O I/O芯片名稱芯片名稱 端口地址端口地址DMA控制器1 00001FHDMA控制器2 0C00DFH DMA頁面寄存器 08009FH中斷控制器1 02003FH

20、中斷控制器2 0A00BFH 定時器 04005FH并行接口芯片(鍵盤接口) 06006FHRT/CMOS RAM 07007FH協(xié)處理器 0F00FFHA1B2C3E14E25E36Y015Y114Y213Y312Y411Y510Y69Y77U374LS13874LS138譯碼電路多端口地址譯碼電路2.可選式端口地址譯碼例3: 設(shè)計擴展板上的I/O端口地址譯碼電路,要求讓擴展板上每個接口芯片的內(nèi)部端口數(shù)目為4個,并且,端口地址可選。例如,選擇地址范圍為300H31FH. 分析: 對于DIP開關(guān),有兩種狀態(tài):合(ON)和斷(OFF)。 對于比較器有兩點要考慮,一是比較的對象,二是比較的結(jié)果。A

21、0A1A2A3A9AENABCGG2BG2AY0Y1Y2Y3Y4Y5Y6Y7P0P7 74LS688比較器Q0Q7 .DIP+5VIOR/IOW.P=Q74LS138譯碼輸出AENA9J10A8A7A6A4A5A3J1274LS30U2INS8250CS2U2I/OI/O地址譯碼電路地址譯碼電路EDAEDA設(shè)計設(shè)計 現(xiàn)在通過邏輯電路來實現(xiàn)一個簡單的I/O譯碼電路實例,以系統(tǒng)的10位I/O地址(A0A9)的外設(shè)地址空間280H2BFHen硬件描述語言硬件描述語言VHDLVHDL方法設(shè)計方法設(shè)計library ieee;use ieee.std_logic_1164.all;entity iode

22、coder is port ( a: in std_logic_vector(3 to 9); aen,iow,ior: in std_logic; y: out std_logic_vector(7 downto 0) );end entity iodecoder;iodecoderA3-9AENIOWIORY0-7譯碼器端口描述庫(librarylibrary)、程序包(package)調(diào)用關(guān)鍵字實體(entity)部分 端口(port)端口信號名 (in,out、inout、buffer)端口模式 (Bit、integer、booleanstd-logic、std-logic-vecte

23、r)端口數(shù)據(jù)類型 architecture iodecoder_body of iodecoder issignal en: std_logic;signaly_temp: std_logic_vector (7 downto 0); begin y_temp(7 downto 0) = 11111110“ when a(3 to 5) = 000 else 11111101 when a(3 to 5) = 100 else 11111011 when a(3 to 5) = 010 else 11110111 when a(3 to 5) = 110 else 11101111 when

24、a(3 to 5) = 001 else 11011111 when a(3 to 5) = 101 else 10111111 when a(3 to 5) = 011 else 01111111 when a(3 to 5) = 111; en = not (not a(6) and a(7) and (not a(8) and a(9)and (not aen) and (not (iow and ior); process(en) begin if (en = 0) theny = y_temp; else y = 11111111;end if;end process;end arc

25、hitecture iodecoder_body;結(jié)構(gòu)體結(jié)構(gòu)體(architecture)描述實體的結(jié)構(gòu)或行為。描述實體的結(jié)構(gòu)或行為??梢圆捎眯袨槊枋觥⒔Y(jié)構(gòu)可以采用行為描述、結(jié)構(gòu)描述或數(shù)據(jù)流描述。描述或數(shù)據(jù)流描述。一個實體可以有多個結(jié)構(gòu)一個實體可以有多個結(jié)構(gòu)體。體。數(shù)據(jù)對象:存放指定類型的一些值的容器。有四種:常量(constant)變量(variable)信號(signal)文件(file)條件信號賦值語句 目標信號=表達式1 when 條件1 else表達式2 when 條件2 else. 表達式n when 條件n else進程語句I/OI/O地址譯碼電路仿真地址譯碼電路仿真電路設(shè)計完成后需要驗證設(shè)計邏輯上的正確性,驗證的方法主要有兩種:功能仿真和下載代碼到芯片測試。通常功能仿真的方法簡單直觀,這里通過使用modelsim軟件來仿真,通過觀察輸入輸出和內(nèi)部的信號波

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論