微机接口技术.ppt_第1页
微机接口技术.ppt_第2页
微机接口技术.ppt_第3页
微机接口技术.ppt_第4页
微机接口技术.ppt_第5页
已阅读5页,还剩485页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机接口技术 2 第一章概述 1 1微机接口与接口技术1 2接口功能1 3接口的组成1 4接口电路的结构形式1 5CPU与接口交换数据的方式1 6分析与设计接口电路的基本方法 3 1 1微机接口与接口技术 1 接口技术 微机接口技术是采用软硬件结合方法 研究微处理器如何与其外部设备或电路进行最佳耦合与匹配 以在CPU与外部之间实现高效 可靠的信息交换的一门技术 外部设备或电路是指除CPU本身以外的存储器 I O设备 控制设备 测量设备 通信设备 多媒体设备 A D D A转换器等 2 接口 电路 接口 interface 就是CPU与外界的连接部件 电路 CPU据此与其外部进行数据交换 4 3 接口与总线的连接 外设通过各自的接口电路连到微机系统的总线上 选用某种外设 设计相应的接口电路 接到系统总线上 就可构成所要求的应用系统 在具体连接时 考虑到信号在总线上的停留时间短 总线的带负载能力不是无限的 DB上常用有三态和驱动能力的双向缓冲器 如74LS145 CB和AB常用三态驱动器 如74LS244 5 接口电路的作用在于 解决CPU与外设在信号线的功能定义 逻辑定义 高电平有效 低电平有效 脉冲上升沿 下降沿触发 和时序关系上的不兼容问题 解决CPU与外设的速度不匹配 避免CPU直接对外设实施控制 从而提高CPU的效率 使外设的硬件结构不依赖与CPU 有利于外设自身的发展 6 1 2接口功能 1 接收和执行CPU命令CPU控制命令 接口的命令寄存器 命令口 接口电路识别和分析命令代码 形成若干控制信号 I O设备 2 返回外设状态用于同CPU联络 接口常设有状态寄存器 状态口 提供数据口的 空 满 及外设 就绪 忙 闲 等状态信号 为CPU下一步操作提供判断依据 7 3 数据缓冲功能 用于解决主机与外设速度不匹配的矛盾 避免丢失数据 接口中设置数据缓冲寄存器或锁存器 数据口 暂时存放输入输出的数据 由于它们直接连在系统数据总线上 故必须具有三态特性 可见 CPU与外设之间有 控制 状态 数据 三种信息的传递 4 信号转换功能外设所需的控制信号和它的状态信号往往同微机的总线信号不兼容 因此 信号转换就成为接口设计中的一个重要任务 包括CPU的信号与外设的信号的逻辑关系上 时序配合上以及电平匹配上的转换 8 5 设备选择功能 微机系统中一般带有多个外设 而CPU在同 时间里只能与一台外设交换信息 这就要对接口进行选择 即所谓片选 而接口内还有若干不同的端口 CPU要与它们进行交互 还要进行片内的端口寻址 因此需要I O端口地址译码电路 通常 用CPU发送到ABUS的地址信号中的若干高位地址用于芯片选择 广义地说就是外设选择 若干低位地址进行芯片内部端口的选择 以选定与CPU交换信息的外设 9 6 数据宽度与数据格式的转换 CPU所处理的是并行数据 8位 16位或32位 而有的外设 如串行通信设备 磁盘驱动器等 只能处理串行数据 在这种情况下 接口就应具有数据 并 串 的变换能力 为此 在接口中要设置移位寄存器 有些外设与CPU在交换的数据 在交换过程中有一定的格式要求 如 串行通信中的起止式异步通信数据格式及面向字符的同步通信数据格式 这就要求接口有数据格式的转换功能 10 1 3接口的组成 一 硬件电路 11 二 软件编程 接口程序常包含以下程序段 1 初始化程序段 设置可编程接口芯片工作方式及初始条件 2 传送方式处理程序段 CPU与外设的数据交换可以有查询 中断 DMA等不同方式 必须要有相应的程序段保证其实现 比如 查询方式要检测外设或接口的状态 中断方式要修改中断向量 开放 屏蔽中断源 DMA方式要开放 屏蔽有关通道等 3 主控程序段 完成接口任务的程序段 如 实现数据采集 控制步进电机起停 方向 速度等 4 程序终止与退出程序段 包含对接口中硬件的保护程序段 如 芯片中某些引脚的电平高低 5 辅助程序段 包含人 机对话 菜单设计等 12 1 4接口电路的结构形式 1 固定式结构 用中 小规模集成电路IC逻辑芯片设计实现 具有固定的工作方式和功能的不可编程的接口电路 用于简单任务 2 半固定结构 指用GAL PAL构成的接口电路 它是把用户设计接口时设计的各种 与 或 逻辑表达式 通过专门的编程软件或编程器烧入GAL PAL而形成的接口电路 一旦烧入 其工作方式和功能也就固定了 13 3 可编程结构 采用大规模集成接口芯片构成的接口电路 工作方式和功能可通过编程来改变 使用灵活方便 适应面宽 4 智能型结构 采用专门的I O处理器或通用的单片机组成的接口电路 此微处理器可以对外设进行全面管理 使CPU得以解脱 从而大大提高了系统的效率 14 1 5CPU与接口交换数据的方式 程序控制方式 分为无条件传送方式和条件传送方式两类 无条件传送方式 同步方式 本传送方式所需的条件就是 CPU与外设准确同步 外设和CPU始终是准备好的 这是一种最简单的输入 输出控制方式 CPU直接执行程序中的I O指令来实现数据传送 一般只需要数据端口 查询方式 条件传送方式 由CPU通过I O指令询问指定设备的当前状态 进而决定是否进行数据传输的一种方式 程序查询方式流程可描述如下 15 程序查询方式流程 本方式多用于CPU不太忙且速度要求不高的场合 16 2 中断方式 本方式要求在CPU与外设之间设置中断控制器 当外设提出中断申请时 若CPU响应中断 则调用中断服务程序进行数据交换 本方式适于CPU较忙 如有多个外设需要与CPU交换数据或实时控制的场合 CPU省去了对外设状态查询和等待的时间 从而使CPU与外设可以并行地工作 因此大大提高了CPU的效率 17 3 直接存储器存取 DMA 方式 本方式由DMA控制器实现内存与外设 或外设与外设间的数据直接传送 数据传送的控制权在DMAC 不经过CPU 速度快 但由于要使用DMA芯片 增加了硬件的开销 本方式的控制流程如下 18 1 6分析与设计接口电路的基本方法 1 两侧分析法凡接口都有两侧 一侧是CPU 另一侧是外设 对CPU一侧 要弄清 CPU类型 数据总线的宽度 8位 16位 32值等 地址总线的宽度 16位 20位 24位 控制总线的逻辑定义 高电平有效 低电平有效 脉冲上升沿 下降沿 时序关系 控制总线往往因CPU不同 其定义与时序配合差别较大 故重点要放在控制总线的分析上 19 外设一侧主要弄清两个方面 一 外设的外部特性 包含外设所有信号线的功能和逻辑定义 由此可弄清接口需要向它提供哪些控制信号 它又能向接口反馈哪些报告工作情况的状态信号 这样 在接口硬件设计时 就提供这些信号线 保证外设的工作需要 二 外设的工作过程 以便在接口软件设计时 按该过程编写程序 可见 只要弄清了上述两点 接口的软硬件设计就没有什么问题了 20 2 硬软结合设计法经过两侧分析法对接口进行详细分析之后 就可进入接口的设计阶段 包含两方面 硬件设计 设计硬件接口来提供外设工作所需的各种信号线 要做2个工作 合理选用外围接口芯片 需要去了解这些芯片的功能 工作原理 外部特性 价格等 自行设计附加电路 针对所选的接口芯片不能完成的某些功能进行的相应电路的设计 如逻辑关系与电平转换 时序配合与驱动能力等 可采用反相器 缓冲器 与门 或门 驱动器等 21 软件设计 有以下两种方法 采用汇编语言 或高级语言 直接对低层硬件编程 这要求对接口芯片和外设的外部特性 接口芯片的编程命令有透彻的了解 对非标准设备的接口编程 通常用此法 采用DOS系统功能调用和BIOS调用编程 这种方法只对微机系统资源中的标准I O设备 如键盘 显示器 打印机 串行口等 的编程有效 22 第二章I O端口地址译码技术 2 1I O端口及其编址方式2 2I O端口地址分配2 3I O端口地址译码 23 一 I O端口和I O操作1 I O端口I O接口 Interface 电路中能被CPU直接访问的寄存器的地址称之为端口 PORT CPU通过这些端口发送命令 读取状态和传送数据 一个接口可有几个端口 如命令口 状态口 数据口等 编程时只需指明端口地址即可 2 I O操作I O操作是针对I O端口的 而不是对I O设备本身的 2 1I O端口及其编址方式 24 二 端口地址编址方式1 统一编址把I O端口与存储器进行统一的编址 这就不需要专门的I O指令 就把I O端口当作存储器单元一样进行访问 由于访存指令相当丰富 所以 既可用端口实现输入 输出 还可对端口内容进行处理 另外 能给端口有较大的编址空间 这对大型控制系统和数据通信系统是很有意义的 缺点是端口占用了存储器的地址空间 使存储器容量减小 另外指令长度比起专门I O指令要长 因而执行时间较长 25 2 独立编址这种方式是接口中的端口单独编址而不占用存储空间 大型计算机通常采用这种方式 有些微机 如IBM PC系列也采用这种方式 这种方式的优点 专门的I O指令对端口操作 可读性好 指令短 执行速度快 端口单独编址 不会与存储器地址相互混淆 26 三 独立编址方式的端口访问通过I O指令访问I O端口在汇编语言中有I O指令 用于I O端口与累加器 AX AL 之间的数据传送 在I O指令中有单字节地址或双字节地址寻址方式 用单字节作为端口地址 则最多可访问256 0 0FFH 个端口 若用双字节地址作为端口地址 则最多可寻址216 64K个端口 系统主板上的I O端口 采用单字节地址 在I O扩展槽上的接口控制卡上 采用双字节地址 I O指令格式为 输入INAX AL PORT DX输出OUTPORT DX AX AL这里 PORT是一个8位的字节地址 27 2 2I O端口地址分配 进行接口设计 必须了解系统的端口地址的分配情况 只能使用那些允许用户使用的空闲端口 28 一 I O接口硬件分类按照I O接口设备的配置情况 I O接口的硬件分成两类 1 系统板上的I O芯片 这些芯片大多是可编程的大规模集成电路 完成相应的接口操作 如定时 计数器 中断控制器 DMA控制器 并行接口以及利用单片机构成的键盘控制器等 2 I O扩展槽上的接口控制卡 这些控制卡 适配器 是由若干个集成电路按一定的逻辑组成的一个部件 如软驱卡 硬驱卡 图形卡 打印卡 串行通信卡等 29 二 I O端口地址分配 不同的微机系统对I O端口地址的分配不同 PC系统提供了16根I O地址线中的A9 A0这10根作为I O端口地址寻址 共1024个端口 又根据I O接口的硬件分类把它们分成两部分 1 前512个端口供系统板上的I O接口芯片使用2 后512个端口归扩展槽上I O接口控制卡使用PC AT系统作了一些改动 前256个端口 000 0FFH 供系统板上的I O接口芯片使用 后756 100 3FFH 为扩展槽上的I O接口控制卡使用 30 实际上有的I O接口可能仅用到其中的前几个地址 例如 8255A只用了60H 63H四个口地址 31 留给用户使用的是300H 31FH 32 2 3I O端口地址译码 每当CPU执行IN或OUT指令时 就进入了I O端口读 写周期 此时CPU首先给出端口地址 然后是I O读写控制信号IOR IOW以及其它一些控制信号有效 由端口地址同这些控制信号相结合来控制对I O端口的读 写操作 具体是针对众多端口中的哪个端口进行操作呢 这就需要一个选中信号来选定一个特定端口 这个选中信号必须由上述地址信号和控制信号逻辑组合而产生 33 一 I O地址泽码电路工作原理及作用 译码电路的输入信号I O地址译码电路的输入信号有两类 1 地址信号 A0 A9这10根地址线 2 控制信号 I O地址译码电路除了要接受所限定的地址信号之外 还要通常还需要考虑下面的一些控制信号 如 利用 等信号控制端口的读写 用AEN信号控制非DMA传送 AEN 0为非DMA操作 34 由上可见 在设计地址译码电路时 除了精心选择地址信号 还要考虑CPU对I O端口进行操作的有关控制信号 合理选用地址信号和控制信号去形成地址译码电路 注意 上述控制信号是8086的 若选用不同的CPU时 应先弄清控制信号的名称和功能 逻辑定义等才可使用 35 2 译码电路的输出信号译码电路的输出信号是一根低电平有效的选中线 当一个芯片被选中时 它内部的数据线打开 并与系统总线相连 于是接口电路与系统总线接通 36 二 I O地址译码方法 I O端口地址译码的方法灵活多样 可由地址和控制信号的不同组合去译码 一般原则是把地址分为两部分 一部分高位地址线 某些控制信号 片选信号 另一部分低位地址线实现I O接口芯片的片内端口寻址 即访问片内的寄存器 片内寻址所需的地址线根数由接口中的寄存器的个数决定 如 8255A包含4个寄存器 则需2根低位地址线 A1 A0 即可 37 三 I O端口地址译码电路设计译码电路的形式可分为固定式和可选式译码 若按译码电路采用的元器件来分 则可分为门电路译码和译码器译码 38 1 固定式端口地址译码 所谓固定译码是指接口中用到的端口地址不能更改 一般接口卡中大部分都采用固定式译码 1 用门电路进行端口地址译码这是最基本的端口地址译码方法 它一般多采用门电路 如与门 或门 与非门 或非门及反相器等 如74LS08 四2输入与门 74LS04 六反相器 74LS32 四2输入或门 74LS30 八输入与非门 等 39 例1 设计一个I O端口地址为316H的能执行读 写操作的单端口地址译码电路 分析 对应于地址316H的地址线A9 A0的值为1100010110B 由于是非DMA操作 所以必须使用控制信号AEN 且地址信号译码必须在AEN 0时有效 题目要求能进行读写两种操作 所以还必须有控制信号 0和 0 由于读写操作要作用到同一个端口上 但它们是相互独立的操作 需要生成各自的选中信号 因此 我们只能先用A9 A0 AEN这11个信号进行组合译码 产生一个端口的选中信号 然后 将此信号分别与读写信号组合 形成选中同一端口的两个读 写信号 40 根据分析 由于输出信号只在输入信号A9 A0 AEN 为110001011000时输出选中信号 读 0 所以不必列出真值表 可直接写出译码电路的逻辑表达式 同理可得 选用集成门电路 74LS30 八输入与非门 74LS20 双4输入与非门 由上两式可得所要求的地址译码电路 41 42 2 用译码器进行端口地址译码若接口电路中需要产生多个端口地址时 则采用译码器译码比较方便 译码器的型号很多 如3 8译码器74LS138 8205 4 16译码器74LS154 双2 4译码器74LS139和74LS155等 43 例2 书例P15 使用74LS138设计PC机系统板上的I O端口地址译码电路 实现接口芯片 DMAC 8237 PIC 8259 T C 8253 PIO 8255A 的片选 并且让每个接口芯片内部的端口数目为32个 分析 通过前几节课的学习 我们已知 设计对接口芯片进行片选的地址译码电路需要有关的若干高位地址信号和控制信号 正确的选出这些信号是关键 44 1 地址信号的分析与选择 PC机提供的用于I O端口寻址的地址信号是 A9A8A7A6A5A4A3A2A1A0 共10位 系统板上A9A8 00 片内需寻址32个口 共需要低位地址线5根 选A4A3A2A1A0 选A7A6A5作为译码器译码输入信号 45 2 控制信号的选择 用AEN信号来禁止译码电路在DMA方式下工作 非DMA操作时AEN 0 DMA操作时AEN 1 46 3 译码器的选用 采用3 8译码器74LS138 这也正合题目要求 3 8译码器所需的信号分析 3 8译码器允许信号的要求是 G1 1以及 即G1必须为高电平 后2个信号必须为低电平 这些要求必须用上述的地址和控制信号来满足 根据前面的分析 1 G1 A9 0 G2AA8 0 G2B 3 8译码器的译码输入信号 用A7A6A5担当 47 由上分析可得如下译码电路 48 2 可选式端口地址译码 这种译码电路能适应不同的地址分配场合 有利于系统扩充 其电路可由地址开关 译码器 比较器或异或门等元器件组成 49 比较器工作原理 常用的比较器有4位比较器74LS85 8位比较器74LS688 现用74LS85为例介绍 比较数据输入端 A0 A3 B0 B3接收2组进行比较的4位数据 比较方式选择控制端 A B AB和A B可为任意值 通常接低电平0 地 比较结果输出信号 FA B满足比较条件时FA B 1 否则FA B 0 50 例3 书P16 设计扩展板上的I O端口地址译码电路 要求扩展板上最多可寻址8个接口芯片 每个芯片的内部端口数目为4个 并且 端口地址可选 本例要求可选地址范围为300H 31FH 分析 1 地址信号的分析 由于片内端口有4个 所以选用2个低位地址线A1 A0用于片内端口寻址 2个二进制位可有4种取值 用A4A3A2信号作为译码输入信号并采用3 8译码器就能获得8个不同的片选信号 实现在扩展板上对8个接口芯片的片选 地址线A9A8A7A6A5可作为改变地址范围所需的信号 51 2 地址范围可选的处理实现分析 本例中要求的地址范围可选的含义是 该接口电路设计成功后 既能用于地址范围300H 31FH 也能用于其它地址范围 如 200H 21FH 具体做法是 把高4位A9A8A7A6接入比较器的A输入端 B输入端通过开关DIP接入四个预定的输入信号 若二者相等就会产生FA B 1信号 并把它作为译码器的G1信号来控制3 8译码器工作 本例把DIP接入的信号定为 B3B2B1B0 1100 这就保证只有在A9A8A7A6 1100时译码器才能工作 假如需要的地址范围是200H 21FH 那么 就只要把DIP的接入信号拨定为B3B2B1B0 1000即可 52 3 3 8译码器的G2A G2B分别接入A5和AEN 所要求的译码电路见图 53 返回例3 54 第三章定时 计数技术 3 1基本概念 微机系统常常需要为处理机和外设提供时间标记 或对外部事件进行计数 例如 分时系统的程序切换 定时采集外部数据信号 统计外部事件发生的次数 定时的本质是计数 把若干小片的计时单元进行计数累加 就可获得一段定长的时间 55 定时方法 软件定时 硬件定时 1 软件定时 用一小段循环程序来实现等待延时 因为各条指令执行时有自己规定的指令周期 主要用于短延时 此法不增加硬设备 但增加CPU的时间开销 2 硬件定时 采用可编程通用的定时 计数器或不可编程的单稳延时电路产生定时或延时 这种方法 不占用CPU的时间 定时时间长 使用灵活 故得到广泛应用 目前 通用的定时 计数器集成芯片种类很多 本章主要对Intel8253 5 8254 2可编程定时 计数器进行详细讨论 56 3 2可编程定时 计数器8253 5 8254 2 可编程定时 计数器芯片的引脚及功能都是兼容的 只是工作频率有差异 8253 5是5MHz8254 2是10MHz 57 一 外部特性与内部逻辑1 外部特性 24脚双列直插式芯片 5V电源供电 芯片内部有3个独立的计数器 又称 计数通道 每个计数器都有自己的时钟输入CLK 计数输出OUT和门控信号GATE 通过编程可将计数器设置成计数方式或定时方式 故称定时 计数器 记作 T C 其引脚分配见图 58 各引脚的功能定义如下 1 数据总线D7 D0 它们为三态输入 输出线 用于将8253与系统数据总线相连 供CPU对8253读写数据 命令和状态信息 2 片选信号CS 输入信号 低电平有效 3 读信号RD 输入信号 低电平有效 由CPU发出 用于对8253寄存器读操作 4 写信号WR 输入信号 低电平有效 59 5 地址线AlA0 接到系统地址总线的A1A0上 用于选择8253内部寄存器 以便对它们进行读写 8253内部寄存器与地址码AlA0的关系如表所示 书P32 60 6 时钟信号CLK 输入信号 三个计数器各有独立的时钟信号 CLK0 CLK1 CLK2 8253进行定时或计数工作时 每输入一个时钟信号CLK 便使定时或计数值减1 7 门选通信号GATE 输入信号 各计数器都有自己的门选通信号 GATE0 GATEl GATE2 用于禁止 允许或开始计数过程 对8253的6种不同工作方式 GATE信号的控制作用不同 61 8 计数器输出信号OUT 输出信号 各计数器输出信号分别为 OUT0 OUT1 OUT2 该信号在定时常数或计数值减为0时产生 指示定时或计数已到 本信号可作为外部定时 计数控制信号引入到I O设备 用来启动某种操作 开 关或启 停 也可作为定时 计数已到的状态信号供CPU检测 或作为中断请求信号使用 62 2 内部逻辑结构8253 8254内部有6个模块 其结构框图如下 1 数据总线缓冲器 三态 双向8位寄存器 用于将8253与系统数据总线D0 D7相连 CPU通过它向8253写入工作方式命令 向计数寄存器装入初值 读出计数器的初值或当前值 2 读 写逻辑 它根据由CPU发来的读 写信号和地址信号来选择读 写的计数器 并确定数据传输的方向为读出 写入 3 控制字寄存器 接受CPU送来的控制字 命令 控制字用于选择计数器及其工作方式 它只能写入 不能读出 4 计数器 8253 5有三个独立的计数通道 每个通道的内部结构完全相同 63 计数器内部逻辑 当前计数值锁存器 16位 锁存减1计数器在某一时刻的值 可供读出和查询 计数初值寄存器 16位 用于存放计数初值 定时常数 分频系数 可供读出和自动重装 当减1计数器值减到0时 自动把初值再装入减1计数器 重新开始计数 减1计数器 16位 在获取计数初值后 执行减1计数 每进入一个时钟脉冲CLK 计数器就减1 减到0时输出OUT信号 计数结束 可执行自动重装 不能对它执行读操作 64 二 计数初值由上述减1计数器的工作原理可知 计数过程中输入时钟信号 CLK 计数初值 C 输出信号 OUT 三者影响着整个计数过程 要想在输出端产生所需要的OUT信号 必须弄清它们之间的数量关系 C CLK OUT 2 计数初值 获得符合要求的输出信号所需要的时钟信号的个数 设输入信号CLK的频率为fclk 要求输出OUT信号频率fout 计数初值C为 C fclk fout fclk Tout 65 三 编程命令 芯片加电后 必须要进行初始化 这包含两个方面 1 向控制寄存器写入方式命令字 目的是 选择计数器确定工作方式指定计数初值的长度指定计数初值的装入顺序指定计数值的码制 2 向已选定的计数器按方式命令字的要求写入计数初值 66 1 方式命令字 67 68 2 读当前计数值 锁存后读操作8253内部逻辑提供当前计数值 锁存后读 操作功能 既可读出某时刻的计数值 又不影响计数器正常计数 方法 先发锁存命令 使方式字中的D7D6 指定的寄存器号 D5D4 00 其余位任意 锁存当前计数值到锁存器 然后 执行读操作 即可得到锁存器的内容 69 70 四 工作方式及特点8254芯片的每个计数通道都有六种工作方式 可从三个方面区分它们 输出波形不同 启动计数器的触发方式不同 计数过程中门控信号GATE对计数操作的影响不同 71 1 0方式 低电平输出 GATE信号上升沿继续计数 有如下三个特点 1 写入方式字后 相应的输出信号OUT就开始变成低电平 当计数器减到零时 OUT立即输出高电平 可利用它的上升沿作为IRQ信号 2 门控信号GATE为高电平时 计数器工作 当GATE为低电平时 计数器停止工作 其计数值保持不变 待GATE变为高电平时 从中止处继续计数 3 在计数器工作期间 如果重新写入新的计数值 则计数器将按新写入的计数值重新工作 72 73 2 方式1 低电平输出 GATE信号上升沿重新计数 在计数器工作期间 GATE的下降沿不影响计数 GATE上升沿使计数器重装计数初值并开始计数 在计数期间对计数器写入新的计数值 计数过程不受影响 直到计数值计满回零且门控信号再次出现上升沿后 才按新写入的计数值开始工作 方式字写入后 输出OUT就变成高电平 写入计数初值后 门控信号GATE上升沿使计数器工作 此时OUT变成低电平 直到计数值回零才变高 74 75 3 方式2 周期性负脉冲输出 频率发生器 方式2是自动重装时间常数的N分频器 有如下三个特点 1 方式2的方式字被写入计数器后 输出就保持高电平 直到计数值变为1时 OUT才为低电平并自动重装原计数值 低电平维持一个时钟周期后 输出又恢复高电平并开始新一次计数 于是 在OUT端输出一定频率的周期性负脉冲信号 可见这种方式是一个分频比为计数值的频率发生器 2 计数器工作期间 如果向它写入新的计数值 则计数器仍按原计数值计数 直到回零并在输出一个时钟周期的低电平之后 才按新的计数值计数 76 3 门控信号GATE为高电平时允许计数 若在计数期间 门控信号变为低电平 则计数器停止计数 待GATE恢复高电平后 计数器将按原设定的计数值重新开始计数 77 78 4 方式3 方波发生器 能自动重装 与方式2不同之处在于 在方式3 OUT输出的是占空比为1 1或近似1 1的周期性方波 当计数初值为偶数时 输出在前一半的计数过程中为高电平 在后一半的计数过程中为低电平 当计数初值为奇数时 前一半计数值多1 输出仍是前半高后半低 例如 若计数初值设为5 则在前3个时钟周期中 引脚OUT输出高电平 而在后2个时钟周期中则输出低电平 79 5 方式4 单次负脉冲输出 软件触发 方式4是由软件启动的闸门式计数方式 即由写入计数初值来触发计数器开始工作 其特点是 此方式设定后 OUT就开始变成高电平 写完计数值后 计数器开始计数 计数回零时 输出变为低电平 并维持一个时钟周期后恢复高电平 但计数器不再计数 输出也一直保持高电平不变 GATE为高电平时 允许计数器工作 为低电平时 计数停止 待其恢复高电乎后 计数器又重装原计数值并开始计数 计数器工作期间 若向计数器写入新的计数值 并不影响当前计数状态 直到当前计数值计完回零并输出一个负脉冲后 计数器才按新计数值开始计数 一旦计数完毕 计数器将停止工作 80 81 6 方式5 单次负脉冲输出 硬件触发 特点在于由GATE上升沿触发计数器开始工作 1 写入计数初值后 并不立即开始计数 而由GATE上升沿启动计数 回零后 在输出一个时钟周期的低电平后恢复高电平 2 在计数过程中 或计数结束后 如果门控再次出现上升沿 则计数器将从原设定的计数初值重新计数 其他特点基本与方式4相同 82 83 例 设计日计时器 日时钟 分析 作为计时器必须以一个标准的定时单位为基准 在它连续不断的产生的过程中 通过对它出现的次数累加来实现计时 因此 考虑用8253的方式3下输出的方波周期作为定时单位 我们选计数器0 方式3 计数初值65536 选CLK0 1 1931818MHz 它是PC机系统为外设提供的时钟信号PCLK的一半 于是 每65536个输入时钟信号产生一个输出信号 输出信号频率为fout0 CLK0 65536 18 2Hz 输出信号周期TOUT0 1 18 2 1000ms 54 945ms 这就是我们的定时单位 1天 24 60 60 1000ms 54 945ms 1573040 定时单位 3 38253 5 8254 2应用举例 84 要实现对定时单位即输出信号的个数的累加 必须要让CPU能识别出一个个的定时单位 唯一的办法就是当一个定时单位信号产生时让CPU产生一次中断 由中断处理程序执行加1而实现定时单位的累加 85 设计 硬件设计 硬件主要由8254和中断控制器8259A构成 原理框图如下 这是PC机实例 86 软件设计PC系统设计了中断08H服务程序来完成计时单位的累加 它主要工作是对BIOS数据资源区的两个字变量TIMEER LO和TIMER HI进行操作 每次中断对低字变量TIMER LO 地址40 6CH单元 加1 当该单元计满65536次而复位时 向高字变量TIMER HI 地址40 6EH单元 进1 直到TIMER HI 0018H TIMER LO 00B0H 即1573040 时 就已是一天 于是 清0而开始第二天的计时 日时钟定时中断服务程序的流程见书P42 注意 定时器0的OUT0引起的中断 其中断服务程序除了完成日时钟的计时之外 还要作两件事 一是控制软驱马达关闭时间 即软驱完成操作后 等待一段时间再关闭高速旋转的马达 二是调用定时报时中断1CH 这些与计时无关 都不作讨论 87 例 P45 设计一波特率时钟发生器 其输入时钟 1 19318MHz 波特率因子Factor 16 输出的波特率为8档 分别为110b s 150b s 300b s 600b s 1200b s 2400b s 4800b s 9600b s 要求用人机对话方式选择波特率 按ESC键则退出 分析 波特率 Baud 是每秒钟传输的数据位数 实际传输中 在时钟脉冲作用下 通过移位来实现收发器对1位数据的收发 波特率因子 每传输1位所需要的时钟脉冲的个数 收发时钟频率TxC Baud Factor 选用8253的输出方波作为串行通信的收 发时钟 则有TxC OUT 由于定时器的定时常数为 Tc CLK OUT 故可得 Tc CLK Baud Factor 依此式可求出各波特率对应的定时常数Tc 计算出的8个定时常数在程序中可用查表法或现场计算法获取 作为计数初值装入8253即可 88 设计 软件设计略 硬件设计 包括8253 8255和I O端口地址译码电路 由于题中并未给出端口地址 故地址译码电路省略 原理图如下 注 PC机总线插槽中OSC 晶体振荡器 输出引脚的振荡频率为14 31818MHz 必须经12分频才能得到1 19318MHz的输入时钟 89 第四章DMA技术 DMA传送方式是在DMA控制器的控制下 存储器与外设 外设与外设直接交换数据 CPU不干预该过程 由硬件完成 传输速度快 主要用于需要高速大批量数据传送的系统 以提高数据的吞吐量 如磁盘存取 图像处理 高速数据采集系统 同步通信中的收发信号等 90 4 2DMA传送的过程 进行DMA传送之前必须对DMAC进行初始化 包含 要传送的数据字节数 数据在存储器中的起始地址 传送方向 DMAC的通道号等信息送到DMAC 初始化完成后 外设就可申请DMA传送了 DMA传送过程包含如下几个阶段 1 申请阶段 91 2 响应阶段 CPU在每个总线周期结束时检测HRQ是否有效 此阶段使CPU一侧的三总线 浮空 DMAC获得总线控制权 成为系统的主控单元 3 数据传送阶段 4 传送结束阶段 92 以上过程说明了总线控制权在CPU和DMAC之间转移的全过程 最关键的是两组 握手 信号 DMAC与外设之间的握手信号 DREQ和DACK DMAC与CPU之间的握手信号 HRQ和HLDA 注 在DMA传送期间 HRQ和HLDA信号一直保持有效 直到DMA传送结束 HRQ撤销 HLDA随之失效 DMAC交出总线控制权 93 4 3DMA传送的方式 一 DMA操作类型数据传送 包含存储器 外设和存储器 存储器之间的数据传送 注意 DMA传送时的读 写操作都是面向存储器而言的 2 数据校验 这种方式不进行实际数据传送 但DMA的几个阶段仍然存在 3 数据检索 不进行数据传送 只是在指定的内存区中查找关键字节或关键位是否存在 94 二 DMA操作方式 指每次DMA操作所操作的字节数 有三种方式如下 单字节方式 每个DMA传送 或检索或检验 过程 只处理一个字节的数据 多字节传送时 由于DREQ持续有效 整个传送需要多个DMA传送过程 但相邻2个DMA过程之间将释放总线至少1 2个总线周期 当DMAC的字节计数器由0减为FFFFH时 产生终止信号T C 即内部的信号 95 2 连续方式 方式在PC机中不用 这种方式是一旦8237A获得总线控制权 就对一个数据块进行连续操作 DMAC始终占用总线 即便DREQ变为无效 也只是暂停操作 待DREQ有效时继续操作 而HRQ信号则一直保持有效 直到当前字节计数器由0减为FFFFH时 产生终止信号T C或由外部输入一个信号时 终止DMA操作 释放总线 96 3 请求方式 此方式在PC机中不用 这种方式以外部是否有DMA请求来决定 有则DMAC占有总线 出现下列情况之一则DMAC释放总线 DREQ无效 数据传送 检索 校验 完毕 产生T C计数结束信号 外部输入一个过程结束信号采用这种方式 可通过控制DREQ信号的有效或无效 把一批数据分成几次传送 但DMA的传送现场全部保留 待请求信号DREQ再次有效时 8237A接替原来的计数和地址值继续进行传送 97 4 4DMA控制器 DMAC在系统中有两种工作状态 主动态和被动态 在它取得总线控制权之前 受CPU控制而处于被动态 此时可对DMAC进行初始化编程和读取其状态信息时 在它取得三总线的控制权之后则处于主动态 由它发出地址和读 写信号控制存储器和外设之间的数据传输 98 1 8237A 5的外部特性 40引脚双列直插式组件 由于它的主控 受控双重身分 其外部引脚设置也具有独特之处 如 I O读写线 IOR IOW 和部分地址线 A0 A3 是双向的 具有存储器读写线MEMR MEEW 有16位地址输出线 DB0 DB7 A0 A7 99 DREQ0 3 外设对四个独立通道0 3的DMA请求 高或低电平有效 由程序选定 优先级 高DREQ0 DREQ3 DACK0 3 8237A 5给I O设备的应答信号 有效电平可高可低 在PC系列中为低电平有效 由编程选定 系统允许多个DREQ信号同时有效 但在同一时间 8237A只能有一个DACK有效 100 HRQ 总线请求 高电平有效 是由8237A控制器向CPU发出的要求接管系统总线的请求 HLDA 总线应答 高电平有效 由CPU发给8237A 5 它有效时 表示CPU已让出总线 IOR IOW I O读 写信号 双向 8237A为主态时是输出 对I O设备进行读 写控制 从态时是输入 由CPU向DMAC写命令 初始化参数或读回状态 101 MEMR MEMW 存储器读 写信号 单向输出 只用于8237A为主态时控制存储器读 写数据 CS 8237A 5的片选信号 低电平有效 在被动态时由地址总线经译码电路产生 A0 A3 低4位地址线 双向三态 从态时为输入 用于芯片内部寄存器与计数器寻址 主态时为输出 作为20位内存地址的低4位 A4 A7 单向输出地址线 8237A为主态时 作为20位访存地址的低8位中的高4位 102 DB0 DB7 双向三态双功能线 从态时为数据线 供CPU对8237A进行读 写操作时数据输入 输出 主态时为地址线 作为访存地址高8位 同时也为分时复用数据线 在M M传送方式时 DB0 DB7还作为数据的输入输出端 可见 8237A 5只提供16位地址线 A0 7 低8 DB0 7 高8 ADSTB 地址锁存器输入选通信号 输出 当DB0 DB7作为高8位地址时 ADSTB把这8位地址锁存到地址锁存器 高电平允许地址信号输入 低电平则锁存之 103 AEN 地址允许 输出 是高8位地址锁存器输出允许信号 高电平允许地址锁存器输出 低电平禁止输出 AEN还用来在DMA传送时禁止其他系统总线驱动器占用系统总线 READY 就绪信号 输入 高电平有效 慢速I O设备或存储器 若要求在S3和S4状态之间插入等待周期Sw时 则迫使READY为低电平 一旦等待周期满足要求 该信号变高电平 表示准备好 104 EOP 过程结束 双向 输出 在DMA传送时 每传送一个字节 字节计数寄存器减1 直至由0减为FFFFH时 产生计数终止信号负脉冲输出 表示传送结束 通知I O设备 若从外部在此湍加负脉冲 则能迫使DMA中止 强迫结束传送 不论内部终止或采用外部终止 当本信号有效时 终止DMA传送并复位内部寄存器 105 2 8237A 5内部寄存器及编程命令 8237A的内部逻辑结构可分为五大部分 定时和控制逻辑优先级控制逻辑命令控制逻辑地址 数据缓冲器寄存器组 106 与用户编程直接有关的是内部寄存器 将作为重点加以讨论 8237A内部有4个独立通道 每个通道各自独立拥有4个寄存器 基地址寄存器 当前地址寄存器 基字节计数寄存器 当前字节计数寄存器 通道共用的寄存器有 工作方式寄存器 命令寄存器 状态寄存器 屏蔽寄存器 DMA服务请求寄存器以及暂存寄存器等 107 我们从编程使用的角度来讨论上述寄存器的含义与格式 从图中的4根地址输入线A0 A3可知 8237A 5内部有16个端口可供CPU访问 记作DMA 0 DMA 15 在PC XT中 8237A占用的I O端口地址为00H 0FH 各寄存器的口地址分配如表所示 108 109 工作方式寄存器 DMA 11 注 块方式 PC机不能采用 因为在这种方式下进行块传送期间 CPU不能占用总线 所以别的DMA请求被禁止 这样系统动态存储器的刷新 磁盘控制器与内存间的数据传送均不能进行 110 询问传送方式 这是一种特殊的块传送方式 不同点在于每传送一个字节之后要检测 询问 DREQ是否有效 有效则继续传送 若无效 则立即 挂起 释放总线 但DMA的传送现场全部保留 待DREQ再次有效时 8237A接替原来的计数和地址值继续进行传送 DMA传送过程的结束可以是当前计数器减1 直至由0减为FFFFH时或由外部在EOP引脚施加负脉冲 此方式与块方式具有相同的问题 111 级联方式 这种方式不是数据传送模式 而是表示8237A用于多片连接方式 DMA读 内存 I ODMA写 I O 内存校验 是一种伪传送 仅对数据块内部的每个字节进行校验 而对存储器与I O接口的控制信号均被禁止 即无效 但在每一DMA周期后 地址增1或减1 字节计数器减1 直至产生EOP 校验过程结束 通过编程被设置为级联模式的为主片 第一级 它的DREQ和DACK引脚分别连接从片 第二级 的HRQ和HLDA引脚 主片在响应从片的DMA请求时 它不输出地址和读写控制信号 避免与从片中有效通道的输出信号相冲突 图 112 存储器 存储器 为数据块传送而设置 PC系列未用 这种传送占用通道0与通道1 通道0作为源 通道1作为目的 从以通道0的当前地址寄存器的内容指定的内存单元中读出数据 先存入8237A的暂存寄存器中 然后 从暂存寄存器取出数据 写到以通道1的当前地址寄存器的内容指定的内存单元中去 每传送一个字节 双方内存地址加1或减1 通道1的当前字节计数器减1 直至由0减为FFFFH时 产生EOP信号而终止传送 这种方式是采用软件请求的方法来启动DMA服务的 113 所谓 自动预置 是当出现EOP负脉冲时 把基值 地址 字节计数 寄存器的内容装入当前 地址 字节计数 寄存器中去 又从头开始同一操作 D5位决定每传送一个字节后存储器地址是 1还是 1 114 基地址寄存器 DMA 0 2 4 6 存放DMA传送的内存首址 只能写 在初始化时 由CPU以先低字节后高字节顺序写入 传送过程中内容不变 自动预置时使用 当前地址寄存器 DMA 0 2 4 6 存放DMA传送过程中的内存地址 在每次传送后自动增 减1 其初值同基地址寄存器 两者是由CPU同时写入 在自动顶置条件下 EOP信号使其内容重新置为基地址值 可读可写 115 基字节计数器 DMA 1 3 5 7 存放DMA传送的总字节数 在初始化时 由CPU以先低字节后高字节顺序写入 传送过程中其内容不变 只能写不能读 对基字节计数寄存器的预置应注意 欲传送N个字节 则需预置的字节总数值应为N 1 因为当前字节计数寄存器由0减为FFFFH时 产生计数终止信号EOP负脉冲输出 过程才结束 116 当前字节计数器 DMA 1 3 5 7 存放DMA传送过程中尚未传完的字节数 每次传送之后减1 当由0减为FFFFH时 产生计数终止信号EOP 表示传送完毕 可读可写 它的初值与基字节计数器的内容相同 两者是由CPU同时写入 自动预置时 信号EOP使其内容重新预置为基计数值 117 屏蔽寄存器 DMA 10 15 用于编程时禁止或允许通道的DREQ 屏蔽位置位则禁止本通道DREQ进入 若通道被编程为不自动预置 则当该通道遇到EOP信号时 对应的屏蔽位置位 屏蔽字有两种格式供选用 写一个屏蔽位的屏蔽字写四个屏蔽位的屏蔽字 只能写不能读 118 单个通道屏蔽寄存器 DMA 10 每次只能屏蔽一个通道 只能写不能读 格式如下 其中 D1D0位决定通道号 D2位置1 则禁止该通道的DREQ D2位置0 则允许该通道的DREQ 119 4个通道屏蔽寄存器可同时编程开通或屏蔽4个通道中的任意几个 120 请求寄存器 DMA 9 DMA请求可由I O设备发出 也可由软件产生 请求寄存器就是用于由软件来启动DMA请求的 M M传送就是利用软件DREQ来启动的 这种软件请求DMA传输操作必须是块字节传输方式 并且在传送结束后 EOP信号会清除相应请求位 因此 每执行一次软件请求DMA传送 都要对请求寄存器编程一次 使D2 1 D1D0 所选通道号 RESET信号消除整个请求寄存器 软件请求位是不可屏蔽的 该寄存器只能写 不能读 其格式如下 121 命令寄存器 DMA 8 它控制8237A的操作 其内容由CPU写入 复位信号RESET和清除命令可清除其内容 该寄存器只能写 不能读 各命令位的功能如下 122 D7 D6位 用于编程时规定DREQ和DACK的有效电平为高 低 D5位 控制写入的时刻 D5 0 采用滞后写 写入周期滞后读周期 D0 1 为扩展写 写入周期与读周期同时 至于何谓标准时序与压缩时序 何渭滞后写与扩展写 参看8237A 5的时序图 D4位 控制通道的优先权 D4 0 采用固定优先权 即DREQ0优先权最高 DREQ3优先权最低 D4 1 为循环优先权 即通道的优先权随着DMA服务的结束而发生变化 已服务过的通道优先权变为最低 而它下一个通道的优先权变成最高 如此循环下去 注意 任何一个通道开始DMA服务后 其他通道不能打断该服务的进行 123 D3位 选择工作时序 D1位 控制通道0的地址在M M整个传送过程中保持不变 这样可把同一个源地址存储单元的数据写到一组目标存储单元中去 D1 1 保持通道0地址不变 D1 0 不保持通道0地址不变 若D0 0 则D1位无意义D0位 M M传送禁止位 D0 1 允许M M传送 D0 0 禁止M M传送 D3 0 采用标准 正常 时序 有S3状态 D3 1 为压缩时序 无S3状态 124 125 状态寄存器 DMA 8 暂存寄存器 DMA 13 用于M M传送时 暂时保存从源地址读出的数据 RESET信号和总清除命令可将其清0 存放8237A的状态 供CPU使用 其包含的信息有 哪些通道已终止计数 哪些通道有DMA请求 该寄存器只能读出 不能写入 其格式如下 126 软命令8237A 5有三条待殊的 软命令 软命令 就是只要对特定的地址进行一次写操作 即让CS和内部寄存器地址与IOW同时有效 命令就生效 而与写入的具体数据

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论