1 / 115

微机接口技术

微机接口技术. 体系独立的学科技术. 复习: 微机框图: 三部件、三总线 指令执行过程: 取指、取数、运算、存数 指令系统及汇编语言编程: IN 、 OUT. 请按本 PPT 及实验讲义顺序预习! 有些内容要查阅参考书; 与实验内容有关的部分:精读! 作业、实验报告必须手写!. 接口技术概述. 几个基本问题 : 1 、什么是接口电路? 2 、为什么外设与 CPU 间必须要有接口电路? 3 、接口电路功能 4 、接口电路最基本功能 5 、接口电路分类. 存储器与 CPU 连接呢?. 接口电路. 1 、什么是接口电路?

yachi
Download Presentation

微机接口技术

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 微机接口技术 体系独立的学科技术 复习: 微机框图:三部件、三总线 指令执行过程:取指、取数、运算、存数 指令系统及汇编语言编程:IN、OUT 请按本PPT及实验讲义顺序预习! 有些内容要查阅参考书; 与实验内容有关的部分:精读! 作业、实验报告必须手写!

  2. 接口技术概述 几个基本问题: 1、什么是接口电路? 2、为什么外设与CPU间必须要有接口电路? 3、接口电路功能 4、接口电路最基本功能 5、接口电路分类 存储器与CPU连接呢?

  3. 接口电路 1、什么是接口电路? Interface,CPU与外设间电路,简称I/O接口 微机系统中最复杂的部分, 接口设计:硬件电路设计、驱动程序设计。 2、为什么外设与CPU间必须要有接口电路? 外设种类繁多,速率不匹配:机械/电子 信号类型和电平幅度不匹配:数字/模拟 信号格式不匹配:位数不同,并/串 时序不匹配:特定工作原理/控制逻辑

  4. 接口电路功能 3、接口电路功能 (1)寻址 类似存储器找到地址 (2)输入/输出 类似存储器读或写 (3)数据转换 外设可用的格式 (4)联络 传送过程控制 (5)中断管理 一种实时的传送方式 (6)复位 使接口本身初始化 (7)可编程 工作方式可用软件设置 (8)错误检测 串口中,传输错误等 ……

  5. 接口电路最基本功能 4、接口电路最基本功能:由总线结构决定 端口译码:寻址,片选 输出锁存:锁存器 CPU输出数据出现在总线上的时间有限 输入缓冲:三态缓冲器 多个电路都挂在总线上 实际上存储器芯片也都具备上述三项基本功能! 要解决两个问题:1、引脚对接;2、时序配合

  6. CPU引脚 8086为40脚DIP,80486为168脚PGA,…….. 七个方面的内容: 名称、功能、方向、 三态、有效(高/低/边缘)、多功能、驱动能力 按功能分三类:(早期CPU地址/数据复用) 地址:A0~A9~A16~A20~A32 数据:D0~D7~D15~D31 控制:RD、WR、IO/M NMI、INTR、INTA,……

  7. 8086引脚 AD0~AD15: 地址/数据(出/双向) A16/S3~A19/S6:地址/状态(出) /BHE/S7:高字节有效/状态(出) /RD:读控制(出) /WR:写控制(出) M/IO:存储器/IO选择(出) DT/R:数据发送/接收(出) /DEN:数据使能(出) ALE:地址锁存使能(出)

  8. *8086的引脚 • AD0~AD15:地址/数据复用总线; • A16/S3~A19/S6:地址状态总线; • BHE/S7:高8位数据总线允许/状态复用引脚; • RD:读信号; • WR:写信号; • M/IO:存储器或I/O端口访问信号; • READY:读写准备就绪信号; • INTR:可屏蔽中断请求信号; • INTA:中断响应信号; • NMI:不可屏蔽中断请求信号,上升沿触发;

  9. *8086的引脚(续) • ALE:地址锁存允许信号,将地址送上系统AB; • DT/R:数据发送/接收控制信号; • DEN:数据允许信号,将数据送上系统DB; • HOLD:总线请求信号,由另一主控模块发起; • HLDA:总线请求响应信号,由CPU应答; • TEST:测试信号,执行WAIT指令时决定是否继续等待; • RESET:复位; • MN/MX:最小/最大模式选择; • CLK:时钟

  10. 存储器举例 6264:8K×8位SRAM A0~A12: 地址线13根(入); I/O0~I/O7 : 数据线8根(双向); /CS1、CS2: 片选信号(入); /OE:输出允许(入); /WE:写控制(入); I/O接口电路的引脚类似

  11. 端口译码 用地址线确定要操作的端口。 片选:全译码、线译码、部分译码 RD/WR IO/M 译 码 电 路 74HC138 74HC139 …… A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 Y7 … Y0 /CS /CS 接口1 接口2

  12. *全译码 • 所有地址线均参与译码 • 端口地址唯一 • 结构复杂 • 一般用在I/O空间较大的场合 • 高位地址线用于片选,低位地址线用于片内字选

  13. *线选法 • 少数几根地址线经简单逻辑或将某地址线直接作为片选 • 没参加译码的地址线不论为0或为1均不影响片选结果 • 结构简单,但地址重叠,地址空间浪费 • 适用于I/O空间较小的场合 • 难以扩展

  14. *简单逻辑译码

  15. *线选译码的地址空间

  16. *部分译码法 • 某些最高位地址线不参加译码(即悬空,造成地址重叠)或以简单逻辑接入 • 低位地址线作为字选 • 剩余中间地址线接入译码器 • 最常用也最容易设计的方法 • 适用于I/O空间较大的场合

  17. *输入输出指令 • 直接寻址(端口号小于100H) IN AL/AX , N OUT N , AL/AX • DX寄存器间接寻址(所有16位端口号) MOV DX , PORT IN AL/AX , DX OUT DX , AL/AX

  18. CPU读/写时序

  19. *指令、总线与时钟周期 • 执行一条指令所需时间为指令周期,不同指令其周期不等长。 • 当CPU从存储器或I/O设备存取一次数据就需要一个总线周期。一个或多个总线周期组成一个指令周期。 • CLK周期即时钟周期T,一个总线周期至少由四个时钟周期T1、T2、T3、T4组成。

  20. *总线周期 • 在T1期间送出地址; • 在其他三个T周期传送数据; • 如果无法在规定时间内完成传送,必须通过READY引脚发出请求信号,在T3与T4之间插入一个或数个等待周期Tw,直到READY有效。Tw也以T为单位。

  21. *8086读周期时序

  22. *8086写周期时序

  23. *中断响应周期时序

  24. *总线保持/响应时序

  25. *复位时序

  26. *最小方式下的总线形成

  27. *三态锁存器8282

  28. *数据收发器8286

  29. 接口电路分类 5、接口电路分类 按通用性分:专用接口、通用接口 按可编程性分:可编程接口、 不可编程接口 按外设传送数据格式分:并行接口、 串行接口 按工作对象分:面向CPU的外围接口、 面向外设的I/O接口 8253、8259、8255、8251、8237

  30. 外设与CPU传送的信息 存储器:程序、数据 (数据有各种不同的物理意义) I/O接口:信息,分三种: 数据信息:数字量、模拟量、开关量,双向 状态信息:由外设到CPU,输入 控制信息:由CPU到外设,输出 存储单元I/O端口 地址 端口号(端口地址)

  31. I/O端口 CPU AB 存储器 I/O接口 I/O设备 DB CB 输入/输出 读/写 接口电路可抽象为三组寄存器(端口) 数据端口、状态端口、控制端口 I/O端口编址方式:统一编址、单独编址

  32. CPU与外设信息传送控制方式 (1)无条件传送方式 (2)条件传送方式(查询方式) (3)中断传送方式 (4)直接存储器存取(DMA)方式 必须理解清楚:硬件、软件配合的过程

  33. 无条件方式 输出 输入 74HC273 74HC244 锁存器 三态 缓冲器 DB DB 输出数据 输入数据 0 0 74HC138 端口译码 AB 1 端口译码 AB 1 /IOW /IOR 0 0 注意:端口译码有效为低或高? 软件原理:一条IN或OUT指令 典型应用:按键/开关输入,LED显示输出

  34. 条件方式(输入) 输入软件流程 硬件框图 读状态 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

  35. 条件输入流程改进 必须考虑:与硬件配合、与其它操作配合。 数据准备好所花时间与指令执行时间比较。 一个子程序(OTHER) 其它操作 其它操作 一个子程序(INPUT) 主程序: MAIN: …… CALL OTHER CALL INPUT …… JMP MAIN 读状态 读状态 N N 准备好? 准备好? Y Y 输入数据 输入数据 保存数据 保存数据

  36. 条件方式(输出) 硬件框图 输出软件流程 输 出 设 备 锁 存 器 DB 其它操作 0 0 /IOW 1 读状态 端口译码 AB ACK 1 R 设备忙? Q D 0 /IOR Y +5V 0 N 去DB 输出数据 与条件输入一样的流程改进请同学们思考。

  37. 中断方式(输入) 为提高CPU利用率,并实时处理随机事件 硬件框图 软件原理 0 0 /IOR 主程序 1 输 入 设 备 锁 存 器 三 态 缓 冲 器 中 断 子 程 序 DB INTR 端口译码 AB STB R 1 Q +5V D Q 0 /IOW IMR IRR 0 D D0 状态寄存器改为中断请求寄存器 输出较少使用中断方式。

  38. DMA方式 前三种方式都要CPU干预,传送时间长; 实际数据是放在存储器中的。 CPU AB 存储器 I/O接口 DMAC DB CB 适用于高速大量的数据传送

  39. 共性问题讨论 1、如何确定外设准备好? 2、几种方式的优先级? 3、软件中设置I/O缓冲区问题:与缓冲器区分! 接口与系统的连接:P13图1-11 接口技术的发展: 从非标准化到标准化,从硬件到软件; 内嵌CPU,智能化; 新总线标准; 软件接口标准化;

  40. *典型的IO接口与外部连接

  41. 端口译码实验(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

  42. 端口译码实验(2) 流程图 2A0和2A8输出数据任意; 用IN或OUT指令均可; 延时时间长则LED闪烁; 延时时间短则 示波器上可观察到波形。 2A0端口输出 延时 2A8端口输出 延时 为调试程序方便一般要有 按任意键结束程序的功能 N 有按键? Y 结束

  43. 并行口实验(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

  44. 并行口实验(2) 从2A0输入 无 条 件 方 式 流 程 图 暂存到BL 编写控制硬件的程序必须 注意程序执行时间与硬件 工作速度的配合。 从2A8输出 到屏幕显示 从2A0输入 Y 与BL相等? 不做此判断则现象如何? N 暂存到BL 注意:按键输入的抖动现象 软件办法消除 从2A8输出 到屏幕显示 其它操作 改为查询方式: 用K7作为状态位 N Y 有按键? 结束

  45. 数码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个锁存器

  46. 数码LED动态扫描(2) 2、一般软件流程(八位显示) 指针位型初始化 位型输出全1 关显示 查字型表 注意: 亮度不均问题 输出字型 输出位型 指针加1 位型左移 1ms~2ms 延时 N Y 8位完? 返回

  47. 数码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 返回 返回 不存在亮度不均问题

  48. 键盘扫描(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列

  49. 键盘扫描(2) 2、一般软件流程(三行全部扫描) 行输出全0 消除抖动 读入列值 延时(20ms) 拼键值 Y 列值全1? 等待键松开 再输出行值 行输出全0 返回 读入列值 读入列值 一行输出0 Y 读入列值 列值相同? N 列值全1? N N Y 列值全1? 返回 消抖 延时(20ms) Y 下一行 返回 N 行扫完? Y 100ms 10ms 10ms 返回

  50. 键盘扫描(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 ;按键消抖计数最大值, 可根据其它操作时间长短调整

More Related