260 likes | 444 Views
第六章 输入 / 输出接口. 课时数: 5 - 6. 第 六 章 主 要 内 容. 一、 I/O 接口概述 二、 常用的 I/O 数据传输控制方式 三、基本输入 / 输出接口. I/O 接口的功能与分类 ( P264 、 P266 、 P267 ) I/O 接口的硬件组成及结构 ( P211 ). 直接程序控制方式 ( P277 ) : 无条件 / 同步 、 条件 / 查询 中断控制方式 ( P282 ) 直接存储器存取( DMA )控制方式 ( P283 ).
E N D
第六章 输入/输出接口 课时数:5-6
第 六 章 主 要 内 容 一、I/O接口概述 二、 常用的I/O 数据传输控制方式 三、基本输入/输出接口 • I/O接口的功能与分类(P264、P266 、P267) • I/O接口的硬件组成及结构(P211) • 直接程序控制方式(P277) :无条件/同步、条件/查询 • 中断控制方式(P282) • 直接存储器存取( DMA )控制方式(P283) 键盘接口(P286)、数码管显示接口(P293) 、并行打印机接口(P293)
第 六 章 习 题 (P305) 4、 8、9 思考: 1~3、5~7、10、11、14 2005.5.13交作业
I/O接口的功能与分类(P264、P266) 微机系统的外部设备种类繁多,其信号类型、信号形式、数据格式、数据传输率及传输方式都可能完全不同。 因此接口通常应该具备以下功能:数据缓冲、 设备选择、信号转换、接收、解释并执行CPU命令、中断管理、程控等。 接口电路的分类方法很多,按数据传送方式可分为串行和并行接口;按同步方式可分为同步和异步接口;按灵活性可分为可编程和不可编程接口;按通用性可分为通用和专用接口。 是软件与硬件的结合
数据信息 主 机 外 设 DB 状态信息 AB 控制信息 CB 端口 I/O接口的硬件组成与结构(P267) 数据缓冲 /锁存器 总线驱动 状态 寄存器 地址译码 控制 寄存器 控制逻辑 接外设一侧 接CPU一侧 • 有关端口(PORT)的概念: 、 存储器映像或IO独立编址 • 主机(CPU)可读写 、8位长 • 一个外设可能有多个端口,一个端口也可能属于多个外设; • 有关信息交换的概念: • 外设的各种信息(P265)都是通过系统的DB进行交换的;
I/O端口的地址分配与地址译码(P270) • 地址空间的分配 • 译码电路的设计 • 译码电路的实现 80X86系列微处理器使用低16位地址信号访问I/O端口,编址可达64K个字节端口(或者32K个字端口)。除去已用的和保留的,用户通常可使用的地址范围是300H~31FH。 (与扩展存储器的地址译码方式非常类似) • 相关控制信号 可以与高位AB一起译码,或直接作使能/控制信号使用 对8086CPU:M//IO、/RD、/WR、/BHE等 对ISA总线:/IOR、/IOW、/IOCS16、AEN(低有效)等 • 地址信号 低位AB选择芯片(或模块)内部的具体端口; 高位AB与控制信号一起译码形成片选; 地址固定式、地址可调式(开关与比较器、可编程逻辑器件)
A9 A7 A6 A5 A4 A9 A7…A4 A15 A14 A13 A12 A11 译码输出 A10 A8 • 需要用到的控制线: IOR,AEN A3 A2 A1 A0 AEN 面向ISA总线的02F0H读端口地址译码电路 MOV DX,02F0H IN AL,DX • 将给定的端口地址表示为二进制: 0000 0010 1111 0000 (都是低有效)
面向ISA总线的77AH可读可写端口的地址译码电路(P274)面向ISA总线的77AH可读可写端口的地址译码电路(P274) A 74LS30 10 & A 9 A 注意/IOR和/IOW信号的用法! 8 A 6 A 5 A 4 A 3 1 A ≥ 1 74LS04 A 15 & A 14 A 13 1 ≥ A 12 A 74LS20 11 & A 7 A 2 A 74LS32 0 1 1 ≥ ≥ AEN 1 ≥ R 77AH IOR 1 ≥ W 77AH IOW
V CC A I 0 A=B A 1 I A>B … A I 7 A<B B 0 O A>B B 1 O … A<B B O 7 A=B 用比较器实现的可选式译码电路(P276) 151211 8 7 4 3 0 0001 0000 0000 0000 0001 0011 1101 1111 • A1~A0用于选择芯片内部端口,这里可不用参与译码; • A15~A10固定不变,可通过门电路译码形成使能信号; • A9~A2可由用户设置:利用比较器与拨动(跳线)开关. 注:这里没有考虑控制信号 A 2 A 3 … A 开关 9 S 0 S 1 … S 7 & A 12 V CC 1 ≥ A 15 1 ≥ A 14 1 ≥ A 1 ≥ 13 1 ≥ A 11 A 10
输入缓冲电路(P272) 74LS245 2 18 A B 0 0 3 17 A B 1 1 4 16 输入端口 A B 2 2 微处理 5 15 A B 3 3 6 14 A B 器系统 4 4 7 13 A B 5 5 8 12 A B 6 6 9 11 A B 7 7 IOR 19 DIR=1 A B , → E 端口地址译码 1 DIR=0 B A , → DIR • 当地址信号及读控制信号有效时,缓冲器中的三态门才会打开,外部数据可送至系统数据总线。 • 否则三态门处于高阻状态,不影响总线上其它设备的读写操作。
输出锁存电路(P273) 74LS273 • 当地址信号及写控制信号有效时,锁存器被选中,数据才能送至指定端口。 • 此后即使系统撤销数据,锁存器的输出也可以一直保持以等待慢速设备读取。 2 3 D Q 0 0 5 4 D Q 输出端口 1 1 6 7 D Q 微处理 2 2 9 8 D Q 3 3 12 13 D Q 器系统 4 4 15 14 D Q 5 5 16 17 D Q 6 6 19 18 D Q 7 7 IOW 11 CLK 端口地址译码 1 CL R +5V
DB 数据输入 缓冲器端口 开关组 AB M/IO 数据输出 锁存器端口 RD LED组 WR 无条件程序控制(同步控制)方式(P277) 一种最简单的I/O控制方式,CPU可以随时根据需要无条件地读写I/O端口。 • 外设要求:简单,数据变化缓慢,操作时间固定,如一组 开关或LED显示管。外设被认为始终处于就绪状态; • 接口特点:结构简单(通常只需要数据端口),适用面较窄; 端口 译码器
数据端口读选通 输入数据 数据缓冲器 (输入端口) 锁 存 器 R +5V (1bit) 状态缓冲器 (输入端口) D Q READY 状态端口读选通 数据端口写选通 数据锁存器 (输出端口) D +5V Q R ACK 状态缓冲器 (输入端口) 状态端口读选通 条件程序控制(程序查询)方式(P279) ④ 一种CPU主动、外设被动的I/O操作方式,很好地解决了CPU与外设之间的同步问题。 DB(数据、状态) 输 入 设 备 ① ③ • 外设要求:应具有必要的联络(握手)信号如READY、ACK等; ② 输入选通 • 接口特点:避免了对端口的“盲读”、“盲写” ,数据传送的可靠性高,并且硬件接口相对简单。缺点是CPU工作效率低,I/O响应速度慢; ③ DB(数据、状态) 输 出 设 备 ④ ② ① 输出选通 在有多个外设的系统中,CPU的查询顺序由外设的优先级确定,实时性差。 BUSY(1bit) ⑤ ⑥
DB C P U D0 D7~D0 D3~D0 状态端口读选通 控制端口写选通 2 4 3 数据端口读选通 DATA READY START A0 8路模拟量输入 多路开关 … A7 1路模拟量 查询式8路模拟数据采集系统 D0 D1 D2 D3 A/D转换器 DSTOR DB 8 DUP(?) START: MOV DI,OFFSET DSTOR ;取输入数据缓冲区的偏移地址 MOV CX,8;一共要采集8次(路)数据 MOV DL,0F8H ;DL=需要送出的控制字 AGAIN: MOV AL,DL AND AL,0F7H ;令D3(START)=0,停止A/D转换 OUT 4,AL CALL DELAY ;等待ADC停止工作 MOV AL,DL OUT 4,AL ;送出控制字,选择模拟量A0 ,启动A/D POLL: IN AL,2;输入状态信息 SHR AL,1;D0-> CF JNC POLL;若ADC未READY,程序循环等待 IN AL,3 ;否则,输入数据 STOSB ;将数据存入DI所指的缓冲区 INC DL ;准备选择下一路模拟输入 LOOP AGAIN
端口译码 AB DB DB 端口译码 WR 中断屏蔽触发器 Q D READY 中断请求触发器 Q D R +5V INTA 中 断 控 制 方 式(P283) 一种CPU被动而外设主动的I/O操作方式,较大地提高了CPU的工作效率,并使系统具有了实时处理功能。 • 外设要求:应具有必要的联络(握手)信号如READY等; • 接口特点:避免了CPU 反复低效率的查询,适用于CPU任务繁忙、而数 据传送不太频繁的系统中。缺点是硬件电路和处理过程都比较复杂; 数据缓冲 外 设 • 中断可被响应的条件: • 中断请求触发器置位; • 中断屏蔽触发器清零; • CPU内部开放中断; • CPU未处理更高级中断; • CPU现行指令执行完; 控制端口 INTR
请求 响应 DMA (直接存储器存取)控制方式(P283) 特点:数据不通过CPU,而由DMAC直接完成存储 单元或IO端口之间的数据传送。 DB HOLD CPU HLDA AB MEM I/O DMAC
键 盘 接 口(P285) • 线性键盘 • 矩阵键盘 • 非编码键盘:CPU处理按键的操作,减低 了CPU的效率。 • 编码键盘:使用专用的单片机处理按键操 作,缓减了CPU的负担。 每一个按键需要占用I/O端口的一根口线。 所有按键按行、列排列,较节约I/O口线
采用行扫描法的8×8矩阵键盘(P285) +5V MOV BL,0 ;键值 MOV CL,0FEH ;扫描码 MOV DL,8 ;扫描次数 OUT … ;列输出CL IN … ;读行状态 CMP AL,0FFH ;判断按键 JNZ FROW ;计算键值 ADD BL,8 ;调整键值 ROL CL,1 ;调整扫描码 LOOP… ;扫描下一列 FROW: SHR AL,1 JNC PROC ;转键处理 INC BL ;下一行,键值加1 JMP FROW 10k Ω 0 8 16 第 行 0 10k 17 Ω 1 9 第 行 1 8 位 10k Ω 并行 18 2 10 第 行 2 输入 …… 端口 10k Ω 第 行 7 MOV DX,OUTPORT MOV AL,00H OUT DX,AL MOV DX,INPORT IN AL,DX CMP AL,0FFH …… 第 列 第 列 第 列 第 列 第 列 0 1 2 3 7 8 位 并行 输出 端口 CALL DELAYY ;20ms 行扫描法步骤: 1.判断是否有键按下:各列同时输出“0” 2.确认按键的位置:去抖动后,各列轮流输出“0”
教材P287页勘误 WAIT: MOV AL,00H MOV DX,OUTPORT OUT DX,AL MOV DX,INPORT IN AL,DX CMP AL,0FFH JZ WAIT DELAY: CALL DELAYY MOV BL,0 MOV CL,0FEH MOV DL,8 FCOL: MOV AL,CL MOV DX,OUTPORT OUT DX,AL ROL CL,1 MOV DX,INPORT IN AL,DX CMP AL,0FFH JNZ FROW ADD BL,8 DEC DL JNZ FCOL JMP DONE FROW: SHR AL,1 JNC PROC INC BL JMP FROW PROC:…… DONE:…… 设键号=0,计数器=列数 行扫描初值=11111110B 输出扫描值,使某一行为低电平 否 是否有一行接地? 扫描值循环左移一位,使下一列为低电平 是 读进行值 键号+8,计数值-1 行值循环右移一位 键号+1 否 全部扫描完? 是 否 键盘命令处理 是 进位位为0? 结束 图6.26 行扫描法程序流程
采用行反转法的8×8矩阵键盘 +5V …… 1. A口输出全0(“00H”)。 2. B口输入如为全1(“0FFH”)则表明无键按下,退出;否则继续向下,B口读入值包含按键所在列信息(如“0FEH”表示按键在第7行) 。 3. B口输出(2)中读入的数据(如“0FEH”)。 4.A口输入按键所在行信息(如“10H”表示按键在第4行)。 5.根据(2)及(4)中读入的信息计算按键编码。 10k Ω 10k Ω 8位并口 A 10k Ω …… 10k Ω 8位并口 B
微 机 键 盘 接 口(P288) • 微机键盘工作原理 • 键盘内单片机可自动识别键的按下与释放,并自动生成相应的扫描码(因此严格地说微机键盘仍属于非编码键盘); • 扫描码以中断方式、通过PS/2接口串行发送至主机; • 主机通过09H号中断获取的扫描码存放在0040:001EH~0040:003CH共30个字缓冲单元(FIFO)中。 • 主机将扫描码转换为反映键功能的ASCII码; • 常用的与微机键盘输入有关的中断调用 • 21H号DOS功能调用的01H、06H、07H、08H、0AH、0BH、0CH号功能都可用于接收单个字符或字符串; • 16H号BIOS中断调用可一次读取字符的16位扩充ASCII码
数码管显示接口(P293) 一、显示器结构 共阴结构:输入控制端为高电平时,对应的LED亮 共阳结构:输入控制端为低电平时,对应的LED亮 二、显示方式 • 静态显示:显示位数少时使用 • 各位(8段)输入控制端分别与接口电路的输出端相连,占用I/O端口资源多; • 各段(LED)恒定地导通或截止; • 动态显示:显示位数多时使用 • 各位共享输入控制端,占用I/O端口资源少; • 需同时进行位选(选中被点亮的位)和段选(输入控制端确定各LED的发光情况) • 各位轮流显示一遍的总时间不能过长(不大于20ms);
6×8数码管动态显示原理 D 7 D 带锁存功能的并行输出端口 6 D D ~D 5 0 7 D 4 D 3 D 2 D 1 D 0 段选有效 位选有效 4 3 位 1 2 0 位 位 5 位 位 位 D 5 带锁存功能的并行输出端口 D 4 D ~D 0 5 D 3 D 2 D 1 D 0
并行打印机接口框图(P298) 输出数据 写数据 数据信息8 寄存器 D ~D 数 0 7 I S A 据 输入数据 读数据 收 缓冲器 打 集 DIR 发 控制信息4 电 器 写控制 极 控制寄存 印 驱 AEN 命 动 A ~A 令 状态寄存 0 9 器 译 机 读控制 (2) 器 IOR 码 器 IOW 状态信息5 状态寄存 复位 (1) 器 读状态 IRQ
并行打印机接口时序图(P298) BUSY ACK 5 s μ DATA 数据有效 数据有效 STROB 5 s μ MOV DX,379H WAIT:IN AL,DX TEST AL,80H ;查询状态 JE WAIT ;忙,等待 MOV DX,378H;不忙,发数据 MOV AL,DAT OUT DX,AL MOV DX,37AH;发选通信号 MOV AL,09H CALL DELAY OUT DX,AL MOV AL,08H ;撤销选通信号 OUT DX,AL 1. CPU查看BUSY状态信号 2. 当BUSY=“0”时,CPU发送需打印的数据 3. CPU发控制信号/STROB锁存数据,该信号至少维持5μs 4. /STROB信号导致BUSY信号变为高电平 5. 打印机在接受完数据后发出/ACK状态信号,该信号至少维持5μs 6. /ACK信号导致BUSY信号变为低电平