1.15k likes | 1.29k Views
微机接口技术. 体系独立的学科技术. 复习: 微机框图: 三部件、三总线 指令执行过程: 取指、取数、运算、存数 指令系统及汇编语言编程: IN 、 OUT. 请按本 PPT 及实验讲义顺序预习! 有些内容要查阅参考书; 与实验内容有关的部分:精读! 作业、实验报告必须手写!. 接口技术概述. 几个基本问题 : 1 、什么是接口电路? 2 、为什么外设与 CPU 间必须要有接口电路? 3 、接口电路功能 4 、接口电路最基本功能 5 、接口电路分类. 存储器与 CPU 连接呢?. 接口电路. 1 、什么是接口电路?
E N D
微机接口技术 体系独立的学科技术 复习: 微机框图:三部件、三总线 指令执行过程:取指、取数、运算、存数 指令系统及汇编语言编程:IN、OUT 请按本PPT及实验讲义顺序预习! 有些内容要查阅参考书; 与实验内容有关的部分:精读! 作业、实验报告必须手写!
接口技术概述 几个基本问题: 1、什么是接口电路? 2、为什么外设与CPU间必须要有接口电路? 3、接口电路功能 4、接口电路最基本功能 5、接口电路分类 存储器与CPU连接呢?
接口电路 1、什么是接口电路? Interface,CPU与外设间电路,简称I/O接口 微机系统中最复杂的部分, 接口设计:硬件电路设计、驱动程序设计。 2、为什么外设与CPU间必须要有接口电路? 外设种类繁多,速率不匹配:机械/电子 信号类型和电平幅度不匹配:数字/模拟 信号格式不匹配:位数不同,并/串 时序不匹配:特定工作原理/控制逻辑
接口电路功能 3、接口电路功能 (1)寻址 类似存储器找到地址 (2)输入/输出 类似存储器读或写 (3)数据转换 外设可用的格式 (4)联络 传送过程控制 (5)中断管理 一种实时的传送方式 (6)复位 使接口本身初始化 (7)可编程 工作方式可用软件设置 (8)错误检测 串口中,传输错误等 ……
接口电路最基本功能 4、接口电路最基本功能:由总线结构决定 端口译码:寻址,片选 输出锁存:锁存器 CPU输出数据出现在总线上的时间有限 输入缓冲:三态缓冲器 多个电路都挂在总线上 实际上存储器芯片也都具备上述三项基本功能! 要解决两个问题:1、引脚对接;2、时序配合
CPU引脚 8086为40脚DIP,80486为168脚PGA,…….. 七个方面的内容: 名称、功能、方向、 三态、有效(高/低/边缘)、多功能、驱动能力 按功能分三类:(早期CPU地址/数据复用) 地址:A0~A9~A16~A20~A32 数据:D0~D7~D15~D31 控制:RD、WR、IO/M NMI、INTR、INTA,……
8086引脚 AD0~AD15: 地址/数据(出/双向) A16/S3~A19/S6:地址/状态(出) /BHE/S7:高字节有效/状态(出) /RD:读控制(出) /WR:写控制(出) M/IO:存储器/IO选择(出) DT/R:数据发送/接收(出) /DEN:数据使能(出) ALE:地址锁存使能(出)
*8086的引脚 • AD0~AD15:地址/数据复用总线; • A16/S3~A19/S6:地址状态总线; • BHE/S7:高8位数据总线允许/状态复用引脚; • RD:读信号; • WR:写信号; • M/IO:存储器或I/O端口访问信号; • READY:读写准备就绪信号; • INTR:可屏蔽中断请求信号; • INTA:中断响应信号; • NMI:不可屏蔽中断请求信号,上升沿触发;
*8086的引脚(续) • ALE:地址锁存允许信号,将地址送上系统AB; • DT/R:数据发送/接收控制信号; • DEN:数据允许信号,将数据送上系统DB; • HOLD:总线请求信号,由另一主控模块发起; • HLDA:总线请求响应信号,由CPU应答; • TEST:测试信号,执行WAIT指令时决定是否继续等待; • RESET:复位; • MN/MX:最小/最大模式选择; • CLK:时钟
存储器举例 6264:8K×8位SRAM A0~A12: 地址线13根(入); I/O0~I/O7 : 数据线8根(双向); /CS1、CS2: 片选信号(入); /OE:输出允许(入); /WE:写控制(入); I/O接口电路的引脚类似
端口译码 用地址线确定要操作的端口。 片选:全译码、线译码、部分译码 RD/WR IO/M 译 码 电 路 74HC138 74HC139 …… A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 Y7 … Y0 /CS /CS 接口1 接口2
*全译码 • 所有地址线均参与译码 • 端口地址唯一 • 结构复杂 • 一般用在I/O空间较大的场合 • 高位地址线用于片选,低位地址线用于片内字选
*线选法 • 少数几根地址线经简单逻辑或将某地址线直接作为片选 • 没参加译码的地址线不论为0或为1均不影响片选结果 • 结构简单,但地址重叠,地址空间浪费 • 适用于I/O空间较小的场合 • 难以扩展
*部分译码法 • 某些最高位地址线不参加译码(即悬空,造成地址重叠)或以简单逻辑接入 • 低位地址线作为字选 • 剩余中间地址线接入译码器 • 最常用也最容易设计的方法 • 适用于I/O空间较大的场合
*输入输出指令 • 直接寻址(端口号小于100H) IN AL/AX , N OUT N , AL/AX • DX寄存器间接寻址(所有16位端口号) MOV DX , PORT IN AL/AX , DX OUT DX , AL/AX
*指令、总线与时钟周期 • 执行一条指令所需时间为指令周期,不同指令其周期不等长。 • 当CPU从存储器或I/O设备存取一次数据就需要一个总线周期。一个或多个总线周期组成一个指令周期。 • CLK周期即时钟周期T,一个总线周期至少由四个时钟周期T1、T2、T3、T4组成。
*总线周期 • 在T1期间送出地址; • 在其他三个T周期传送数据; • 如果无法在规定时间内完成传送,必须通过READY引脚发出请求信号,在T3与T4之间插入一个或数个等待周期Tw,直到READY有效。Tw也以T为单位。
接口电路分类 5、接口电路分类 按通用性分:专用接口、通用接口 按可编程性分:可编程接口、 不可编程接口 按外设传送数据格式分:并行接口、 串行接口 按工作对象分:面向CPU的外围接口、 面向外设的I/O接口 8253、8259、8255、8251、8237
外设与CPU传送的信息 存储器:程序、数据 (数据有各种不同的物理意义) I/O接口:信息,分三种: 数据信息:数字量、模拟量、开关量,双向 状态信息:由外设到CPU,输入 控制信息:由CPU到外设,输出 存储单元I/O端口 地址 端口号(端口地址)
I/O端口 CPU AB 存储器 I/O接口 I/O设备 DB CB 输入/输出 读/写 接口电路可抽象为三组寄存器(端口) 数据端口、状态端口、控制端口 I/O端口编址方式:统一编址、单独编址
CPU与外设信息传送控制方式 (1)无条件传送方式 (2)条件传送方式(查询方式) (3)中断传送方式 (4)直接存储器存取(DMA)方式 必须理解清楚:硬件、软件配合的过程
无条件方式 输出 输入 74HC273 74HC244 锁存器 三态 缓冲器 DB DB 输出数据 输入数据 0 0 74HC138 端口译码 AB 1 端口译码 AB 1 /IOW /IOR 0 0 注意:端口译码有效为低或高? 软件原理:一条IN或OUT指令 典型应用:按键/开关输入,LED显示输出
条件方式(输入) 输入软件流程 硬件框图 读状态 0 0 /IOR N 准备好? 1 Y 输 入 设 备 锁 存 器 三 态 缓 冲 器 输入数据 DB D7 F0 F1 端口译码 保存数据 AB STB R Q +5V D 1 SCAN:IN AL,0F1H TEST AL,80H JZ SCAN IN AL,0F0H MOV BUF,AL /IOR 0 状态寄存器 0
条件输入流程改进 必须考虑:与硬件配合、与其它操作配合。 数据准备好所花时间与指令执行时间比较。 一个子程序(OTHER) 其它操作 其它操作 一个子程序(INPUT) 主程序: MAIN: …… CALL OTHER CALL INPUT …… JMP MAIN 读状态 读状态 N N 准备好? 准备好? Y Y 输入数据 输入数据 保存数据 保存数据
条件方式(输出) 硬件框图 输出软件流程 输 出 设 备 锁 存 器 DB 其它操作 0 0 /IOW 1 读状态 端口译码 AB ACK 1 R 设备忙? Q D 0 /IOR Y +5V 0 N 去DB 输出数据 与条件输入一样的流程改进请同学们思考。
中断方式(输入) 为提高CPU利用率,并实时处理随机事件 硬件框图 软件原理 0 0 /IOR 主程序 1 输 入 设 备 锁 存 器 三 态 缓 冲 器 中 断 子 程 序 DB INTR 端口译码 AB STB R 1 Q +5V D Q 0 /IOW IMR IRR 0 D D0 状态寄存器改为中断请求寄存器 输出较少使用中断方式。
DMA方式 前三种方式都要CPU干预,传送时间长; 实际数据是放在存储器中的。 CPU AB 存储器 I/O接口 DMAC DB CB 适用于高速大量的数据传送
共性问题讨论 1、如何确定外设准备好? 2、几种方式的优先级? 3、软件中设置I/O缓冲区问题:与缓冲器区分! 接口与系统的连接:P13图1-11 接口技术的发展: 从非标准化到标准化,从硬件到软件; 内嵌CPU,智能化; 新总线标准; 软件接口标准化;
端口译码实验(1) 5V 74HC138 需连线 Y4Y5 0 1 A3 0 0 A4 1 1 A5 PR A B C E1 D Q L0R(LED) CLK Y4 Y5 R 0 74HC74 A9A8,A7A6A5A4,A3A2A1A0 Y0 1 0 1 0 0 0 0 X X X 280~287 …… Y4 1 0 1 0 1 0 0 X X X 2A0~2A7 Y5 1 0 1 0 1 0 1 X X X 2A8~2AF …… Y7 1 0 1 0 1 1 1 X X X 2B8~2BF 0 A6 1 A7 0 A8 1 A9 /IOW /IOR 0
端口译码实验(2) 流程图 2A0和2A8输出数据任意; 用IN或OUT指令均可; 延时时间长则LED闪烁; 延时时间短则 示波器上可观察到波形。 2A0端口输出 延时 2A8端口输出 延时 为调试程序方便一般要有 按任意键结束程序的功能 N 有按键? Y 结束
并行口实验(1) VCC CLR 273 需连线 L0R L1R L2R L3R L4R L5R L6R L7R Q1 ~ Q8 D0 ~ D7 DB 验证无条件和条件传送原理 2A8 CLK 问题: 为什么LED显示、 开关(按键)输入 可以用无条件方式? /IOW 0 244 1A1 1A4 2A1 2A4 1Y1 ~ 2Y4 K0 K1 K2 K3 K4 K5 K6 K7 DB 2A0 1/G 2/G /IOR 0
并行口实验(2) 从2A0输入 无 条 件 方 式 流 程 图 暂存到BL 编写控制硬件的程序必须 注意程序执行时间与硬件 工作速度的配合。 从2A8输出 到屏幕显示 从2A0输入 Y 与BL相等? 不做此判断则现象如何? N 暂存到BL 注意:按键输入的抖动现象 软件办法消除 从2A8输出 到屏幕显示 其它操作 改为查询方式: 用K7作为状态位 N Y 有按键? 结束
数码LED动态扫描(1) 1、硬件原理图 VCC a 1 CLR 273 Q1 ~ Q8 D0 ~ D7 DB f b g 字型 e c . h 0 反相 2A8 d CLK /IOW DP …… SA VCC CLR 273 LED7 Q8 ~ Q1 D0 ~ D7 DB LED0 位型 2A0 CLK /IOW 静态显示:8个锁存器 动态显示:2个锁存器
数码LED动态扫描(2) 2、一般软件流程(八位显示) 指针位型初始化 位型输出全1 关显示 查字型表 注意: 亮度不均问题 输出字型 输出位型 指针加1 位型左移 1ms~2ms 延时 N Y 8位完? 返回
数码LED动态扫描(3) 主程序 软件流程 一位显示子程序: 3、实验程序 数据结构 段初始化 字型表: LED DB 3FH,06H,…,71H 显示数据表: BUF DB 8 DUP(?) 显示指针:初值0 LPTR DW ?;0~7 显示位型:初值01H LBIT DB ?;02H,04H….80H 指针加1 指针初始化 位型左移 位型初始化 关显示 调用显示 子程序 查字型表 其它操作 输出字型 键盘输入 N 输出位型 有按键? Y 返回 返回 不存在亮度不均问题
键盘扫描(1) VCC 1、硬件原理 VCC CLR 273 KB0 Q1 Q2 Q3 D0 ~ D7 DB F E D C B A 9 8 KB1 行输出 7 6 5 4 3 2 1 0 2A0 KB2 CLK /IOW KEY7 KEY5 KEY3 KEY1 244 2A4 2A1 1A4 1A1 1Y1 ~ 2Y4 KEY6 KEY4 KEY2 KEY0 DB 列输入 2A8 1/G 2/G /IOR 3行×8列
键盘扫描(2) 2、一般软件流程(三行全部扫描) 行输出全0 消除抖动 读入列值 延时(20ms) 拼键值 Y 列值全1? 等待键松开 再输出行值 行输出全0 返回 读入列值 读入列值 一行输出0 Y 读入列值 列值相同? N 列值全1? N N Y 列值全1? 返回 消抖 延时(20ms) Y 下一行 返回 N 行扫完? Y 100ms 10ms 10ms 返回
键盘扫描(3) 3、实验程序 数据结构: BUF DB 8 DUP(?);键盘输入缓冲区(环形) KPTR DW ?;键盘输入缓冲区指针(0~7) KBIT DB ?;行输出位型(01H,02H,04H) KROW DB ?;按键行值 KCOL DB ?;按键列值 KCNT DB ?;按键消抖计数 KEY DB ?;按键键值(00H~07H,08H~0FH,10H~17H) 子程序与主程序传递参数用 主程序用 子程序用 常数: CNTMAX EQU 80H ;按键消抖计数最大值, 可根据其它操作时间长短调整