440 likes | 558 Views
第 七 章 输入输出接口. 主讲:刘英. 本章主要内容. 7.1 I/O 接口概述 7.2 I/O 端口的编址方式 7.3 I/O 端口地址的译码 7.4 输入 / 输出传送方式. 7.1 I/O 接口概述. 内容 I/O 接口概述 I/O 接口的典型结构. 7.1.1 I/O 接口概述. 7.1.1 I/O 接口概述. 为什么要接口电路 ? 微机的外部设备多种多样 外部设备 数据格式、工作速度差别很大 外设 不能 与 CPU 直接 相连,必须经过中间电路再与系统相连,这部分电路被称为 I/O 接口 电路。.
E N D
第 七 章 输入输出接口 主讲:刘英
本章主要内容 7.1 I/O接口概述 7.2 I/O端口的编址方式 7.3 I/O端口地址的译码 7.4 输入/输出传送方式
7.1 I/O接口概述 内容 • I/O接口概述 • I/O接口的典型结构
7.1.1 I/O接口概述 7.1.1 I/O接口概述 • 为什么要接口电路? • 微机的外部设备多种多样 • 外部设备数据格式、工作速度差别很大 • 外设不能与CPU直接相连,必须经过中间电路再与系统相连,这部分电路被称为I/O接口电路。
7.1.1 I/O接口概述 CPU 接口 电路 I/O 设备 • 什么是I/O接口(电路)? • I/O接口是位于系统与外设间、用来协助完成数据传送和控制任务的逻辑电路,接口就是CPU与外设的连接部件。 • PC机系统板的可编程接口芯片、I/O总线槽的电路板(适配器)都是接口电路 接口在CPU与外设之间
7.1.1 I/O接口概述 • I/O接口的主要功能? • 对传送数据提供缓冲、隔离和寄存(或锁存) • 对信号的形式和数据的格式进行转换 • 对I/O端口进行寻址 • 与CPU和I/O设备进行联络
7.1.1 I/O接口概述 • CPU和I/O设备间交换的信息 • 数据信息:外设的数据 • 数字量:如用二进制表示的字母、数字、BCD码和字符等 • 模拟量:如电流、电压、流量、压力和温度等 • 开关量:用一位二进制数来表示两个不同的状态 • 状态信息:I/O设备的状态,对于输入设备来说,用READY信号来标明待输入的数据是否准备就绪;对于输出设备来说,用BUSY信号来表示输出设备是否处于空闲状态。 • 控制信息:CPU的控制信息,如外设的启动信号和停止信号。
7.1.1 I/O接口概述 • 主要接口芯片 • 简单的输入/输出接口芯片 • 如锁存器74LS373、单向缓冲器74LS244、双向缓冲器(数据收发器)74LS245等。 • 可编程接口芯片:其功能可以由软件来选用控制。 • 如并行输入输出接口8255、串行输入输出接口8250/8251 、定时器/计数器8253、中断控制器8259、DMA控制器8237等。
7.1.2 I/O接口的典型结构 7.1.2 I/O接口的典型结构 • 典型I/O接口电路通常包括数据寄存器、控制寄存器、状态寄存器、数据缓冲器和读/写控制单元。
7.1.2 I/O接口的典型结构 • 数据寄存器是可读可写的寄存器,用来存放CPU与I/O设备交换的数据信息。 • 控制寄存器只能写不能读,用来存放CPU向外部设备发送的控制命令和工作方式命令字等。 • 状态寄存器能读不能写,用来存放外部设备当前的工作状态信息,供CPU查询。 • 数据缓冲器是CPU与I/O备数据信息交换的通道,它与CPU的数据总线DB连接。 • 读/写控制逻辑单元与CPU的地址总线AB、控制总线CB连接,接收CPU发送到I/O接口的读/写控制信号和端口选择信号,选择接口内部的寄存器进行读/写操作。
7.2 I/O端口的编址方式 • 概念 • 接口是每个外设或每种外设与微处理器相连时使用的电路。 • 在接口电路中,数据信息、状态信息和控制信息分别进入不同的寄存器,通常将这些寄存器和它们的控制逻辑统称为I/O端口。 • 为便于CPU访问,每一个端口都被赋予一个地址,称为I/O端口地址。
接口与端口 • 接口上可以包含唯一的端口,也可以包含几个端口。 • 对CPU程序来说,接口仅是一个笼统的概念,而接口中的各个端口寄存器是CPU程序与接口打交道的具体对象。 • 端口的地址和端口的数据是程序唯一可见的内容,而接口和外设在程序中是无法直接反映出来的。 • CPU以访问端口的形式来访问接口,进而CPU通过这些端口与该接口所连接的外部设备进行信息交换。
端口分为数据端口、状态端口和控制端口 • 为传递的数据提供缓冲、锁存等功能的称为数据端口。 • 用来保存设备和接口的状态信息,供CPU查询的称为状态端口。 • 用来保存CPU发出的命令,以控制接口与外部设备的执行动作的称为控制端口。 • I/O端口编址方式——两种方式 • 将存储器与外设端口统一编址 • 外设端口单独编址
7.2.1 存储器统一编址 • 1. 统一编址 • 把外设接口与内存统一进行编址。各占据统一地址空间的不同部分。一般I/O端口占用存储空间的高地址端。 • 优点 • 指令统一,灵活; • 访问控制信号统一,使用同一组的地址/控制信号。 • 缺点 • 内存可用地址空间减小; • 程序I/O操作不清晰。 地址空间(共1MB) 0 内存地址 (960KB) EFFFFH F0000H I/O地址 (64KB) FFFFFH
7.2.1 I/O独立编址 • 2. 独立编址 • 外设地址空间和内存地址空间相互独立。 • 优点:内存地址空间不受I/O编址的影响;使用I/O指令,程序清晰。 • 缺点:I/O指令功能较弱,使用不同的读写控制信号。 内存地址空间 I/O地址空间 00000H 0000H I/O空间 (64KB) FFFFH 内存空间 (1MB) FFFFFH
8088/8086 CPU的I/O编址方式 • 采用I/O独立编址方式(但地址线与存储器共用) • 地址线上的地址信号用 来区分: • 时为I/O地址 • I/O操作只使用20根地址线中的16根: A15 ~ A0 • 可寻址的I/O端口数为64K(65536)个 • I/O地址范围为0~FFFFH • IBM PC只使用了1024个I/O地址(0~3FFH)
把端口地址放在DX寄存器中,对该端口进行读写,可寻址的端口号为0~65535(FFFFH)把端口地址放在DX寄存器中,对该端口进行读写,可寻址的端口号为0~65535(FFFFH) • IN AL, DX • OUT DX, AL • 端口地址小于或等于FFH(255),可以用立即数表示端口地址。 • IN AL, 42H • OUT 43H, AL
7.3 I/O端口地址的译码 • I/O地址的译码方法与存储器地址的译码方法类似 • 常见的端口地址译码方法有三种:门电路组合法、译码器译码法、比较器比较法
A9 A8 A7 A6 A5 A2 A4 A3 AEN A1 A0 74LS03 3E7H ? 例:图中译码输出地址3E7H 试分析将图中的A1、A0去掉后,译码输出的地址 • 1、门电路组合法——单个地址或地址范围 1 1 1 1 1 0 1 0 地址范围:3E4H~3E7H 0 0 1 1
Vcc C B A Y1 Y0 Y2 Y3 Y5 Y6 Y7 Y4 G2B G2A G1 GND • 2、译码器(以74LS138为例)译码法——利用译码器芯片对地址进行译码 74LS138的逻辑功能: 若3个译码控制端均有效,即:G1=1,G2A=G2B=0时,8个译码输出端(Y0~Y7)有且只有一个有效(低电平),有效引脚的编码由输入选择信号C、B、A决定;即:CBA=i,则Yi=0(i=0~7)
74LS138 Y0 Y1 Y2 Y3 Y4 Y5 A5 A6 A7 A BC DMA CS(8237) INTR CS(8259) T/C CS(8253) PPI CS(8255) A8 A9 AEN G2B G2A G1 WRTDMAPG (写DMA页面寄存器) WRTNMIREG (写NMI屏蔽寄存器) Y6 Y7 IOW 例:PC机系统板上的端口地址译码电路
系统板上各芯片的地址 8237:000H~01FH 8259:020H~03FH 8253:040H~05FH 8255:060H~07FH 写DMA页面寄存器:080H~09FH 写NMI屏蔽寄存器:0A0H~0BFH 保留:0C0H~0DFH 保留:OE0H~0FFH
3、比较器比较法 • 原理:利用数码比较器把地址线上的地址同预定的地址相比较,进而确定地址是否相符。如果比较后两个地址相等,则表示地址总线送来的端口地址就是该端口的地址。 • 74LS688比较器:当P0~7≠Q0~7时,P=1,输出高电平。当P0~7=Q0~7时,P=0,输出低电平。
例:比较器比较法举例 228H~22FH 1 0 1 0 0 0 1 0 1 0 1 0 0 0 1 0
7.4 输入/输出传送方式 • 无条件传送方式 • 查询传送方式 • 中断传送方式 • DMA传送方式
7.4.1 无条件传送方式 • 若程序员能够确信一个外设已经准备就绪,就不必查询外设的状态而进行信息传输,这称为无条件传送方式。 • 适用于总是处于准备好状态的外设 • 以下外设可采用无条件传送方式: • 开关 • 发光器件(如发光二极管、7段数码管、灯泡等) • 继电器 • 步进电机 • 优点:软件及接口硬件简单 • 缺点:只适用于简单外设,适应范围较窄
无条件传送输入的例子: 无条件传送输出的例子: MOV DX, 160H IN AL, DX MOV DX, 160H MOV AL, [BX] OUT DX, AL
7.4.2 查询传送方式 • CPU通过执行程序不断读取并测试外设的状态,根据外设的工作状态控制外设的输入/输出,即查询方式。 • 适用于外设并不总是准备好,而且对传送速率、传送效率要求不高的场合。 • 在此传送方式下,一个数据传送到接口,其过程由3个环节组成: • CPU从接口中读取状态字 • CPU检测状态字的对应位是否满足“就绪”条件,如果不满足,则回到前一步读取状态字。 • 如执行输入方式时状态字表明外设已处于“就绪”状态,则传送数据。执行输出方式时状态字表明外设已处于“空闲”状态,则传送数据。
查询传送方式特点 • 通过查询实现CPU与外设间的同步联络 • CPU和外设串行工作 • 接口电路简单 • CPU使用率不高,用CPU的等待实现与外设的同步
7.4.3 中断传送方式 • 中断方式:当外设做好传送准备后,主动向CPU请求中断,CPU响应中断后在中断处理程序中与外设交换数据。若外设未准备好,CPU可以执行其他程序,提高了CPU的利用率。 • 中断过程大致分为: • 中断请求:由需要提供中断服务程序的设备提出; • 中断响应:CPU给设备发出一个中断应答信号; • 现场保护:保护执行中断服务程序前的各种信息; • 执行中断服务程序:完成特定的操作; • 退出中断服务程序:恢复现场。
中断传送方式的特点 • 中断传送是一种效率更高的程序传送方式 • 进行传送的中断服务程序是预先设计好的 • 中断请求是外设随机向CPU提出的 • CPU对请求的检测是有规律的:一般是在每条指令的最后一个时钟周期采样中断请求输入引脚
7.4.4 DMA传送方式 • 前面三种I/O方式都需要CPU作为中介: 外设CPU 内存 两个含义: 1)软件:外设与内存之间的数据传送是通过CPU执行程序来完成的(PIO方式); 2)硬件:I/O接口和存储器的读写控制信号、地址信号都是由CPU发出的(总线由CPU控制)。 • 缺点:程序的执行速度限定了传送的最大速度(约为几十KB/秒)—解决:DMA传输
DMA:Direct Memory Access——直接存储器访问 • DMA传输: 外设内存 • 外设直接与存储器进行数据交换 ,CPU不再担当数据传输的中介者; • 总线由DMA控制器(DMAC)进行控制(CPU要放弃总线控制权),内存/外设的地址和读写控制信号均由DMAC提供。 • 优点:数据传输由DMA硬件来控制,数据直接在内存和外设之间交换,可以达到很高的传输速率(可达几MB/秒)
DMA传送原理示意图 ② ⑥ ① CPU DMAC 外设接口 HOLD DRQ DACK HLDA ③ ④ ⑦ IOW IOW IOR IOR AEN AEN MEMR MEMR MEMW MEMW IOW AEN IOR 系统总线 ⑤ MEMW MEMR ① 外设发出DMA请求 ② DMAC向CPU申请总线 ③ CPU完成当前总线周期后响应,并释放总线控制权 ④ DMAC得到总线控制权,并发出DMA响应信号 ⑤ 由DMAC发出各种控制信号,控制外设与存储器之 间的数据传送 ⑥ 数据传送完后,DMAC撤销HOLD信号 ⑦ CPU释放HLDA信号,并重新控制总线 存储器
DMA控制器的工作过程 • 1)当外设准备好,可以进行DMA传送时,外设向DMA控制器发出“DMA传送请求”信号(DRQ); • 2)DMA控制器收到请求后,向CPU发出“总线请求”信号HOLD,表示希望占用总线; • 3)CPU在完成当前总线周期后会立即对HOLD信号进行响应。响应包括两个动作:一是CPU将数据总线、地址总线和相应的控制信号线均置为高阻态,由此放弃对总线的控制权。另一方面,CPU向DMA控制器发出“总线响应”信号(HLDA)。 • 4)DMA控制器收到HLDA信号后,就开始控制总线,并向外设发出DMA响应信号DACK;
DMA控制器的工作过程(续) • 5)DMA控制器送出地址信号和相应的控制信号,实现外设与内存或内存与内存之间的直接数据传送; • 例如,向I/O接口发出读信号,同时往地址总线上发出存储器的地址和存储器写信号和AEN信号,即可从外设向内存传送一个字节。 • 6)DMA控制器自动修改地址和字节计数器,并判断是否需要重复传送操作。当规定的数据传送完后,DMA控制器就撤销发往CPU的HOLD信号。CPU检测到HOLD失效后,紧接着撤销HLDA信号,并在下一时钟周期重新开始控制总线。
几种数据传送方式特点? • 无条件传送:慢速外设需与CPU保持同步 • 查询传送: 简单实用,效率较低,硬件开销小 • 中断传送:外设主动,可与CPU并行工作,但中断服务保护现场等需要额外时间开销,需要硬件开销进行中断管理 • DMA传送:DMAC控制,外设直接和存储器进行数据传送,适合大量、快速数据传送,需要硬件开销
7.5 简单I/O接口芯片 74LS244是一种三态输出缓冲器,无锁存功能。74LS244的内部驱动器分为两组,分别为4个输入端(1A1~1A4, 2A1~2A4)、4个输出端(1Y1~1Y4, 2Y1~2Y4),他们分别由使能1G#,当 2G#控制。当1G#=0时,(1Y1~1Y4)与(1A1~1A4)的电平相同;当2G#=0时,(2Y1~2Y4)与(2A1~2A4)的电平相同;当1G#=1(或2G#=1 )时, 1Y1~1Y4(或2Y1~2Y4)输出为高阻态。
数据锁存器74LS373 使能端G有效时(高电平有效),输入端(D端)数据进入锁存器;输出允许端OE#有效时(低电平有效),将锁存器中锁存的数据送到输出端Q;OE#=1时输出为高阻态。
74LS245是一种三态输出数据收发器,当使能端G#有效(低电平有效),且方向控制端DIR=0时,信号由B端向A端传输;当使能端G#=0,方向控制端DIR=1时,信号由A端向B端传输;当使能端C#=1时,A、B端均为高阻态。74LS245是一种三态输出数据收发器,当使能端G#有效(低电平有效),且方向控制端DIR=0时,信号由B端向A端传输;当使能端G#=0,方向控制端DIR=1时,信号由A端向B端传输;当使能端C#=1时,A、B端均为高阻态。
7.6 输入/输出接口综合应用例子 • 根据开关状态在7段数码管上显示数字或符号 • 共阳极7段数码管见教材P191 • 用74LS273作为输出接口,把数据送到7段数码管 • 74LS273的地址假设为F0H • 用74LS244作为输入口,读入开关K0~K3的状态 • 74LS244的地址假设为F1H • 当开关的状态分别为0000~1111时,在7段数码管上对应显示’0’~’F’ • (7段码表见下页)
写地址:F0H = 0000 0000 1111 0000 读地址:F1H = 0000 0000 1111 0001 74LS273 7406 Rx8 D0 Q0 | Q1 D7 Q2 Q3 Q4 CP Q5 Q6 Q7 a b c d e f g DP D0~D7 8个 反相器 译码电路 ≥1 IOW# & 74LS138 A7~A4 G G2A G2B C B A ≥1 Y0 +5V A15~A8 74LS244 K0~K3 D0 O1 I1 O2 I2 O3 I3 O4 I4 #E1 A3 A2 D1 Y1 A1 D2 A0 D3 ≥1 IOR#
相应程序段如下: …… Seg7 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,67H,77H,7CH,39H,5EH,79H,71H …… LEA BX, Seg7 ;取7段码表基地址 MOV AH, 0 GO: MOV DX, 0F1H ;开关接口的地址为F1H IN AL, DX ;读入开关状态 AND AL, 0FH ;保留低4位 MOV SI, AX ;作为7段码表的表内位移量 MOV AL, [BX+SI];取7段码 MOV DX, 0F0H ;7段数码管接口的地址为F0H OUT DX, AL JMP GO