第 2 章 总线与接口芯片
DESCRIPTION
第 2 章 总线与接口芯片. 1 、总线概述 2 、总线的仲裁、定时和数据传送模式 3 、常用总线标准及其主要参数 4 、 I/O 端口编址与译码 5 、 8254 可编程定时器 / 计数器. 2.1 总线概述. 1. 总线定义:总线就是各种信号线的集合,总线是计算机中传输数据信号的通道,即是计算机各部件之间传送数据、地址和控制信息的公共通路。 2 总线特点:分时、共享。. 总线的分类 1. 按相对于 CPU 或其它芯片的 位置 ,总线可分为: 片内总线 (Internal Bus) 片外总线 (External Bus) 。 - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/1.jpg)
第第 22 章 章 总线与接口芯片总线与接口芯片1 、总线概述2 、总线的仲裁、定时和数据传送模式3 、常用总线标准及其主要参数4 、 I/O 端口编址与译码5 、 8254 可编程定时器 / 计数器
![Page 2: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/2.jpg)
2.12.1 总线概述总线概述1. 总线定义:总线就是各种信号线的集合,总线是计算机中传输数据信号的通道,即是计算机各部件之间传送数据、地址和控制信息的公共通路。
2 总线特点:分时、共享。
![Page 3: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/3.jpg)
总线的分类1. 按相对于 CPU 或其它芯片的位置,总线可分为:片内总线 (Internal Bus)
片外总线 (External Bus) 。前者是 CPU 内部寄存器之间和算术逻辑部件 ALU与控制部件之间传输数据所用的总线,即芯片内部的总线;后者是 CPU 与内存 RAM 、 ROM 和输入 / 输出设备接口之间进行通讯的通路。
![Page 4: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/4.jpg)
2. 按总线的功能可分为:地址总线( ABus )、数据总线( DBus )、控制总线( CBus )。地址总线上传送地址信号,总线主控用地址信号指定
其需要访问的部件(如外设、存储器单元)。
总线主控发出地址信号后,总线上的所有部件均感受到该地址信号,但只有经过译码电路选中的部件才接收主控的控制信号,并与之通信。
地址总线是单向的,即地址信号只能由总线主控至从控。地址总线也是三态的,非主控部件不能驱动地址总线。
![Page 5: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/5.jpg)
数据总线
数据总线上传送数据信息,数据总线是双向的,数据信息可由主控至从控(写),也可由从控至主控(读)。
数据总线是三态的,未被地址信号选中的部件,不驱动数据总线(其数据引脚为高阻)。
数据总线的根数称为总线的宽度。 16 位总线,指其数据总线为 16 根。
![Page 6: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/6.jpg)
控制总线
控制总线上传送一个部件对另一个部件的控制信号。
在总线上,可以控制其他部件的部件称为总线主控或主控 (bus master) ,被控部件称为从控 (slave)
根据不同的使用意义,有的为双向 , 有的为三态,有的非三态
![Page 7: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/7.jpg)
3. 按总线的层次结构可分为:(1) CPU 总线,包括地址线 (CAB) 、数据线 (CD
B) 和控制线 (CCD) ,它用来连接 CPU 和控制芯片。
(2) 存贮总线, 包括地址线 (MAB) 、数据线 (MDB) 和控制线 (MCD) ,用来连接存储控制器和 DRAM 。
(3) 系统总线,也称为 I/O 通道总线,包括地址线(SAB) 、数据线 (SDB) 和控制线 (SCB) (即数据总线、地址总线和控制总线 )
(4) 外部总线: 用来连接外设控制芯片,如主机板上的 I/O 控制器和键盘控制器。包括地址线 (XAB) 、数据线 (XDB) 和控制线 (XCB) 。
![Page 8: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/8.jpg)
4. 按总线在微机系统中的位置可分为: (1) 机内总线 : 上面介绍的各类都是机内总线。
(2) 机外总线( Peripheral Bus — 外设总线) : 指与外部设备接口的总线,实际上是一种外设的接口标准。
![Page 9: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/9.jpg)
二、微机系统总线简介二、微机系统总线简介PC 系列机上采用的总线标准:ISA 工业标准体系结构 ( Industrial Standard Architecture)EISA 扩展工业标准体系结构 (Extended Industrial Standard Architecture)VESA 视频电气标准协会 ( 又称 VL-bus ) (Video Electronics Standards Association)PCI 外部设备互连 (Peripheral Component Interconnect)USB 通用串行总线 (Universal Serial Bus)AGP 图形加速端口 ( 显卡专用线 )(Accelerated Graphics Port)
![Page 10: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/10.jpg)
表 2.1.1 ISA 、 EISA 、 PCI 总线比较
ISA 总线 ·24 位地址线可直接寻址的内存容量为 16MB·8/16 位数据线· 最大位宽 16 位 (bit)· 最高时钟频率 8MHz· 最大稳态传输率 16MB/s
EISA 总线 ·32 位地址域直接寻址范围为 4GB·32 位数据线· 最大时钟频率 8.3MHz· 最大稳态传输率 33MB/s
PCI 总线 ·32 位 /64 位地址 / 数据复用· 总线时钟频率 33.3MHz/66MHz· 最大数据传输速率 133MB/s· 时钟同步方式· 与 CPU 及时钟频率无关· 总线宽度 32 位( 5V ) /64 位( 3.3V )
![Page 11: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/11.jpg)
其他总线简介其他总线简介 由于目前的一些新型接口标准,如 US
B 、 IEEE1394 等,允许同时连接多种不同的外设,因此也把它们称为外设总线。此外,连接显示系统的新型接口 AGP ,由于习惯上的原因(原来的显示卡插入 ISA 或者 PCI 总线插槽中),也被称为 AGP 总线,但是实际上它应该是一种接口标准。
![Page 12: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/12.jpg)
1. IEEE 1394 总线 IEEE 1394 是一种串行接口标准,这种接口标准允许把计算机、外部设备、各种家用电器非常简单地连接在一起。从 IEEE 1394 可以连接多种不同外设的功能特点来看,也可以称为总线,即一种连接外部设备的机外总线。
IEEE 1394 的原型是运行在 Apple Mac 电脑上的 Fire Wire( 火线 ) ,由 IEEE 采用并且重新进行了规范。它定义了数据的传输协定及连接系统,可用较低的成本达到较高的性能,以增强电脑与外设(如硬盘、打印机、扫描仪),与消费性电子产品(如数码相机、 DVD播放机、视频电话等)的连接能力。
![Page 13: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/13.jpg)
由于要求相应的外部设备也具有 IEEE1394 接口功能才能连接到 1394 总线上,所以直到 1995年第 3季度 Sony推出的数码摄像机加上了 IEEE接口后, 1394 才真正引起广泛的注意。
机外总线将改变当前电脑本身拥有众多附加插卡、连接线的现状,它把各种外设和各种家用电器连接起来。电脑也成为一种普通的家电。
![Page 14: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/14.jpg)
2.USB 总线 USB(Universal Serial Bus) 称为通用串行总线,是由
Compaq 、 DEC 、 IBM 、 Intel 、 Microsoft 、 NEC和 NT(北方电讯 )七大公司共同推出的新一代接口标准。它和 IEEE 1394 一样,也是一种连接外围设备的机外总线。 根据 USB规范, USB 传送速度可达 12Mb/s(每秒 12兆位 ) ,除了可以与键盘、鼠标、 MODEM等常见外设连接外,还可以与 ISDN(综合业务数据网 ) 、电话系统、数字音响、打印机 /扫描仪等低速外设连接。
从性能上来看, USB 在很多方面不如 IEEE 1394 ,但是由于 USB 有着 IEEE 1394 无法比拟的价格优势,在一段时间内 USB将与 IEEE 1394 共存,分别管理低速和高速外设。
有关 UBS更详细内容将在串行接口章节中介绍。
![Page 15: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/15.jpg)
3. AGP ( Accelerated Graphics Port )AGP 是一种为了提高视频带宽而设计的总线规范。因为它是点对点连接,即连接控制芯片和 AGP 显示卡,因此严格说来, AGP 不能算是总线,而是一种接口标准,它在主内存与显示卡之间提供了一条直接的通道,使得3D 图形数据不通过 PCI 总线,而直接送入显示子系统。这样就能突破由于 PCI 总线形成的系统瓶颈,从而实现了以相对低价格来达到高性能 3D 图形的描绘功能以提高计算机对图像的处理能力。目前的主板产品大多支持AGP 。本章第三节将进一步介绍 AGP 的有关技术指标。
![Page 16: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/16.jpg)
总线的主要参数1. 总线的带宽总线的带宽指的是一定时间内总线上可传送的数据量,即我们常说的每秒钟传送多少MB(兆字节 ) 的最大稳态数据传输率。
2. 总线的位宽总线的位宽指的是总线能同时传送的数据位数,即我们常说的 32 位、 64 位等总线宽度的概念。
3. 总线的工作时钟频率 总线的工作时钟频率以 MHz 为单位。工作频率越高则总线工作速度越快,也即总线带宽越宽。
总线位宽越宽、总线工作时钟频率越高则总线带宽越大。当然,单方面提高总线的位宽或工作时钟频率都只能部分提高总线的带宽,并容易达到各自的极限。只有两者配合才能使总线的带宽得到更大的提升。
![Page 17: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/17.jpg)
2.2 2.2 总线的仲裁、定时和数据传送模总线的仲裁、定时和数据传送模式式
§2.2.1 总线的仲裁连接到总线上的功能模块有主动和被动两种形态。如 CP
U 模块,它在不同的时间可以用做主方,也可用做从方;而存储器模块只能用做从方。主方可以启动一个总线周期,而从方只能响应主方的请求。每次总线操作,只能有一个主方占用总线控制权,但同一时间里可以有一个或多个从方。
![Page 18: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/18.jpg)
除 CPU 模块外, I/ O 功能模块也可提出总线请求。为了解决多个主设备同时竞争总线控制权的问题,必须具有总线仲裁部件,以某种方式选择其中一个主设备作为总线的下一次主方。
对多个主设备提出的占用总线请求,一般采用优先级或公平策略进行仲裁。例如,在多处理器系统中对各 CPU 模块的总线请求采用公平的原则来处理。
对 I/ O 模块的总线请求采用优先级策略。被授权的主方在当前总线业务一结束,即接管总线控制权,开始新的信息传送。
主方持续控制总线的时间称为总线占用期。
![Page 19: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/19.jpg)
仲裁方式分为集中式仲裁和分布式仲裁两类。2.2.1.1 集中式仲裁 (1) 链式查询方式
![Page 20: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/20.jpg)
主要特点是:总线授权信号 BG 串行地从一个 I/O接口传送到下一个 I/ O 接口。假如 BG 到达的接口无总线请求,则继续往下查询;假如 BG 到达的接口有总线请求, BG 信号便不再往下查询。这意味着该 I/ O 接口就获得了总线控制权。排列在链首的设备具有最高优先级,在链末的设备优先级越低。因此,链式查询是通过安排接口设备的先、后位置来实现优先级排队的。
![Page 21: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/21.jpg)
链式查询方式的优点:只用很少几根线就能按一定优先次序实现总线仲裁,并且这种链式结构很容易扩充设备。缺点 1 :对询问链的电路故障很敏感,如果第 i 个设备的接口中有关链的电路有故障,那么第 i 个以后的设备都不能进行工作。缺点 2 :优先级是固定的,如果优先级高的设备出现频繁的请求时,那么优先级较低的设备可能长期不能使用总线。
![Page 22: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/22.jpg)
(( 22 ) 计数器定时查询方式) 计数器定时查询方式工作原理:总线上的任一设备要求使用总线时,通过 BR线发出总线请求。中央仲裁器接到请求信号以后,在 BS线为“ 0”的情况下让计数器开始计数,计数值通过一组地址线发向各设备。每个设备接口都有一个设备地址判别电路,当地址线上的计数值与请求总线的设备地址相一致时,该设备将 BS线置“ 1”,获得了总线使用权,此时中止计数查询。
![Page 23: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/23.jpg)
优点:每次计数可以从“ 0”开始,也可以从中止点开始。如果从“ 0”开始,各设备的优先次序与链式查询法相同,优先级的次序是固定的。如果从中止点开始,则每个设备使用总线的优先级相等。计数器的初值也可用程序来设置,这就可以方便地改变优先次序 缺点:增加了连线数量
![Page 24: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/24.jpg)
(( 33 ) 独立请求方式) 独立请求方式每一个共享总线的设备均有一对总线请求线 BRi和总线授权线 BGi。当设备要求使用总线时,便发出该设备的请求信号。中央仲裁器中有一个排队电路,它根据一定的优先次序决定首先响应哪个设备的请求,给设备以授权信号 BGi。
![Page 25: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/25.jpg)
优点 1 :仲裁请求响应时间快。优点 2 :对优先次序的控制相当灵活。它可以预先固定,例如 BR0优先级最高, BRl 次之……BRn 最低;也可以通过程序来改变优先次序;还可以用屏蔽 (禁止 )某个请求的办法,不响应来自无效设备的请求。当代总线标准普遍采用独立请求方式。
![Page 26: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/26.jpg)
分布式仲裁分布式仲裁不需要中央仲裁器,每个潜在的主方功能模块都有自己的仲裁号和仲裁器。 当它们有总线请求时,把它们唯一的仲裁号发送到共享的仲裁总线上,每个仲裁器将仲裁总线上得到的号与自己的号进行比较。如果仲裁总线上的号大,则它的总线请求不予响应,并撤消本身的仲裁号。最后,获胜者的仲裁号保留在仲裁总线上。
是以优先级仲裁策略为基础的一种仲裁方式。
![Page 27: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/27.jpg)
总线的定时
1 .同步定时2 .异步定时3 .半同步定时4 .分离方式定时
![Page 28: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/28.jpg)
11 .同步定时.同步定时在同步定时协议中,事件出现在总线上的时刻由总线时钟信号来确定。总线周期是固定的,每次传送一旦开始,主、从设备都必须严格按照时间规定完成相应的动作。
![Page 29: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/29.jpg)
现代微机中的 PCI 总线就是同步方式总线。全部系统模块由单一时钟信号控制。优点 1 :电路设计比较简单;优点 2 :完成一次传输的时间很短, 它不允许主从设备间有等待,适合于高速设备的数据传输。缺点:它不能满足高 /低速设备在同一系统中的使用。否则,只能按最慢的设备来确定总线周期长短或频带,这样高速设备只能按照低速设备的速度来进行数据传输,使整个系统性能下降。
![Page 30: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/30.jpg)
22 .异步定时.异步定时数据采用“应答式”传输。无系统时钟信号,而是靠“请求”( REQ )和“应答”( ACK )两根信号线来协调传输过程。
![Page 31: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/31.jpg)
连接任何外部设备都不需要考虑该设备的速度,它根据模块的响应速度自动调整响应时间。异步方式的应答关系完全互锁, REQ 和 ACK两个信号是有制约关系的。主设备的请求使 REQ有效,由从设备的 ACK 来响应; ACK 有效,允许主设备撤消 REQ, 只有 REQ撤消,最后才撤消 ACK ;只有 ACK已经撤消,才允许下一传输周期的开始,这保证了数据传输的可靠性。
![Page 32: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/32.jpg)
优点:总线周期长度可变。不把响应时间强加到功能模块上,因而允许快速和慢速的功能模块都能连接到同一总线上。缺点 1 :增加总线的复杂性和成本。缺点 2 :不管从模块的速度,每完成一次传输,主、从模块之间的互锁控制信号都要经过 4 个步骤,即请求、响应、撤消请求和撤消响应,它的传输延迟是同步传输的两倍。因此,异步方式比同步方式要慢,总线的频带窄,总线传输周期长。
![Page 33: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/33.jpg)
33 .半同步定时.半同步定时
综合同步和异步传送的优点,是两者混合的传送方式。
从总体上看,它是一个同步系统,仍用系统时钟来定时,利用某个脉冲的上升沿或下降沿判断某一个信号的状态,使得传输操作与时钟同步。
为了克服同步方式的缺点,它允许两个速度不同的设备使用像异步方式那样的传输。为此,设置了一条“等待” (WAIT) 或“就绪” (READY) 信号线。
![Page 34: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/34.jpg)
对可以严格按照时钟规定进行传送的两个高速设备的传输,等待信号无效,依然按照同步方式传输。
如果从模块是慢速设备,没有准备好数据传输,从模块会使得WAIT 信号有效或 READY 信号无效,系统用一个适当的状态时钟沿检测这个信号线。如果是 WAIT 有效( 或 READY 无效 ) ,就自动将总线周期延长一个时钟周期,强制主模块等待。下一个时钟周期继续检测这个信号线,直到检测到 WAIT 信号无效 ( 或 READY 信号有效 ) 才不再延长总线周期。这种方法像异步方式那样能使不同速度的设备同时在系统中做数据传输。
但 WAIT 信号不是互锁的,而是单方向的状态传递,这是和异步方式的不同之处。
![Page 35: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/35.jpg)
44 .分离方式定时.分离方式定时
在总线读周期的寻址阶段,到数据传送阶段,有一个短暂的时间间隔,用于从模块执行读命令(取出数据)。此时的总线是空闲的。
可以想办法把这总线的空闲时间也利用起来。
![Page 36: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/36.jpg)
将读周期分为两个分离的子周期。第一个子周期为寻址阶段,当有关的从模块从总线上得到主模块发出的地址、命令及有关信息后,立即和总线断开,以便其他模块可以使用总线。
等到从模块准备好数据后,启动第二个子周期,由该模块申请总线,获准后,将数据发送给原来请求数据的主模块。两个子周期均采用同步方式传送,在占用总线的时候,进行高速的信息传输。
分离式传输很适合有多个主模块 ( 如多个处理器或多个 DMA 设备 ) 的系统。
![Page 37: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/37.jpg)
总线数据传送模式总线数据传送模式当代的总线标准大都能支持以下四类模式的数据传送: 1.读、写操作 读操作是由从方到主方的数据传送;写操作是由主方到从方的数据传送。一般,主方先以一个总线周期发出命令和从方地址,经过一定的延时再开始数据传送总线周期。为了提高总线利用率,减少延时损失,主方完成寻址总线周期后可让出总线控制权(分时方式),以使其他主方完成更紧迫的操作。然后再重新竞争总线,完成数据传送总线周期。
![Page 38: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/38.jpg)
2.块传送操作 只需给出块的起始地址,然后对固定块长度的数据一个接一个地读出或写入。对于 CPU( 主方 )— 存储器 ( 从方 )而言的块传送,常称为突发式传送,其块长一般固定为数据线宽度 ( 存储器字长 ) 的 4倍。例如一个 64 位数据线的总线,一次突发式传送块长可达 256 位。
![Page 39: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/39.jpg)
3.写后读、读修改写操作 只给出地址一次,或进行先写后读操作,或进行先读后写操作。前者用于校验目的,后者用于多道程序系统中对共享存储资源的保护。这两种操作和突发式操作一样,主方掌管总线直到整个操作完成。
4.广播、广集操作 一般而言,数据传送只在—个主方和一个从方之间进行。但有的总线允许一个主方对多个从方进行写操作,这种操作称为广播。与广播相反的操作称为广集,它将选定的多个从方数据在总线上完成 AND 或 OR操作,用以检测多个中断源。
![Page 40: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/40.jpg)
2.3 2.3 常用总线标准及其主要参数常用总线标准及其主要参数总线标准的内容机械规范: 规定总线的根数、插座形状、引脚排列等。
功能规范: 规定总线中每根线的功能。 从功能上,总线分成三组:地址总线、数据总线、控制总线。
电气规范: 规定总线中每根线的传送方向、有效电平范围、负载能力等。
时间规范: 规定每根线在什么时间有效,通常以时序图的方式进行描述。
![Page 41: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/41.jpg)
采用标准总线的优点便于采用模块化设计方法 , 简化系统设计
• 厂家面向总线设计各种插件板,产品具有通用性,• 用户可灵活选购必要的插件板构成所需的系统。
便于系统的扩充和升级• 一个插件板只要满足总线标准,• 就可连接到带有这种总线标准的计算机系统中。• 加插功能卡 扩充系统功能• 研制新的插件板 更新系统功能
![Page 42: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/42.jpg)
总线体系结构单总线体系结构 指微机中所有模块都连接在单一总线上。
• 如早期的 IBM PC 、 XT 机:采用 IBM PC/XT 总线
多总线体系结构 指微机中采用多种总线, 各模块按数据传输速率的不同,连接不同的总线上。
• 如 Pentium 微机 : 内部有 ISA 、 PCI 、 AGP 等。
![Page 43: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/43.jpg)
总线的发展趋势
不断提高传输速率
几 MB/s 几百 MB/s
不断降低功耗
电源 5.0V 3.0V 1.6V ;
采用休眠技术
智能化、层次化
支持即插即用 ;
多总线结构
![Page 44: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/44.jpg)
1 、 ISA 总线 ISA ( Industry Standard Architecture 工业标准体系结构)总线是早期比较有代表性的总线。
IBM 公司推出 PC/XT 和 PC/AT 个人计算机后,IEEE ( Institute of Electronic and Electronic Engineers 电气电子工程师协会)在 1987年定义了工业标准体系结构( ISA ),将 PC/XT 总线定义为 8 位 ISA ,将 PC/AT 总线定义为 16位 ISA 。
![Page 45: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/45.jpg)
ISA 总线具有以下特点:既支持 8 位数据操作,也支持 16 位数据操作;可以将 PC/AT 总线和 PC/XT 总线的运行速度提升至 8MHz ;提供了 1KB 的 I/O空间、 15级的硬件中断、 7级的 DMA 通道、 8 个设备的负载能力;
总线中的地址、数据线采用非多路复用形式,使系统的扩展设计更为简便;
是一种多主控设备总线,除主 CPU 外, DMA 控制器、 DRAM刷新控制器、带处理器的智能卡都可成为 ISA 的主控设备;
由于 IBM PC 机广泛流行,可供选择的 ISA 插件卡品种较多,这有利于用户根据需要快速构成相应的微型计算机应用系统。
![Page 46: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/46.jpg)
2 、 EISA 总线 EISA ( Extended Industry Standard Archit
ecture 扩展的工业标准体系结构)总线是扩展的 ISA 总线。 1989年,以 Compaq 公司为代表的 9 家公司,在 ISA 总线的基础上,联合推出了 EISA 总线。在当时,尽管数据总线宽度被增加到 32 位,但 EISA 总线的时钟速度仍然维持在 8MHz ,这导致了这种互连结构标准逐渐地被减少使用。但是,更新以后的 VESA局部总线和 PCI 总线均工作在更高的速度之下,它们现在可以在 33MHz 的频率下工作。
![Page 47: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/47.jpg)
EISA 总线的特点( 1 )用于 32 位微机中,可寻址 4GB 的存储空间,也支持 64KB 的 I/O 端口寻址。
( 2 )具有 32 位数据线,保证了系统性能的提高,使最大数据传输速率达 33 MB/S 。
( 3 )支持多处理器结构,支持多主控总线设备,具有较强的 I/O 扩展能力和负载能力。
( 4 )具有自动配置功能,可以根据配置文件自动地初始化,配置系统板和多扩展卡。
( 5 )扩展了 DMA 的范围和传输速度,支持 7 个DMA 通道, DMA 数据传输既可在 ISA 方式下也可在 EISA 方式下进行。
( 6 )采用同步数据传送协议,可支持常规的一次传送,也可支持突法方式即高速分组传送。
![Page 48: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/48.jpg)
3 、 VESA 总线 VESA ( Video Electronics Standards Association 视频电子标准协会)总线是一种 32 位接口的局部总线,通常称为 VL 总线。
VESA 局部总线工作频率可以达到 33MHz ,常用在需要高速数据传输的系统。
与 EISA 总线一样, VESA局部总线也是 ISA 总线的扩展,不同之处在于 VESA 局部总线没有在 16 位 ISA 总线连接器上增加任何器件,而是在 16 位 ISA 总线连接器的后面增加了第 3 个连接器,即 VESA 连接器。
VESA局部总线上的连线与 EISA 总线卡非常相似, VESA 局部总线还包括一个 32 位地址和数据总线,用于将存储器和 I/O 设备连接到微处理器上。
![Page 49: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/49.jpg)
4 、 PCI 总线 PCI ( Peripheral Component Interconnect 外部组件互连)总线是目前最常用的系统总线。该总线是专门为 Pentium 系列芯片设计的。
PCI V2.0 版本支持 32/64 位数据总线,总线时钟为 25~ 33MHz ,数据传输率达 132~ 264MB/s 。
1995 年推出的 PCI V2.1 版本支持 64 位数据总线,总线速度为 66MHz ,最大数据传输率达528MB/s 。
![Page 50: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/50.jpg)
PCI 总线的特点采用数据线和地址线复用结构,目标设备可用 47 引脚,总线主控设备可用 49 引脚。
提供 5V 和 3.3V两种工作信号环境,可在两种环境中根据需要进行转换。
允许 32 位与 64 位器件相互协作。允许 PCI局部总线扩展卡和元件进行自动配置,提供了即插即用的能力。
PCI 总线独立于处理器,它的工作频率与 CPU 时钟无关,可以支持多机系统。
PCI 总线具有良好的兼容性,可支持 ISA 、 EISA 、 MCA 、 SCSI 、 IDE 等多种总线。
![Page 51: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/51.jpg)
5 、 AGP 总线 为了解决高速视频或高品质画面的显示,
Intel 公司在 1997年推出了高速图形接口的局部总线标准—— AGP 总线。 AGP 总线是对 PCI总线的扩展和增强,但 AGP 接口只能为图形设备独占,不具有一般总线的共享特性。采用 AGP 接口允许显示数据直接取自系统主存储器,而无需先预取至视频存储器中。
![Page 52: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/52.jpg)
AGP 总线的主要特点如下:( 1 )具有双重驱动技术,允许在一个总线周期内传输两次数据。
( 2 )在总线上可实现地址 / 数据多路复用,把 32 位的数据总线给图形加速器使用。
( 3 )通过内存请求流水线技术对各种内存请求进行排队来减少延迟,一个典型的排队可处理 12 个以上的请求,大大加快了数据传输的速度。
( 4 )把图形接口绕行到 AGP 通道上,解决了 PCI带宽问题,使 PCI 有更多的能力负责其它数据传输。
![Page 53: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/53.jpg)
其他总线介绍USB 总线1. USB 总线的特点 USB 的全称是通用串行总线( Universal Seri
al Bus ),它是一种支持即插即用的新型串行接口。 USB 要比标准串行接口快得多,其数据传输率可达 4Mbps~ 12Mbps 。 USB除了具有较高的数据传输率外,它还可以为外设提供支持。
![Page 54: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/54.jpg)
USB 总线具有以下特点:( 1 )为所有的 USB 外设提供了单一的、易于操作的连接类型。
( 2 )排除了对鼠标、调制解调器、键盘和打印机不同接口的需求。
( 3 )支持热插拔。( 4 )支持 PNP ( Plag and Play )即插即用。( 5 )在设备供电方面提供了灵活性。( 6 ) USB 传输线能够提供 100mA 的电流,而带电源的 USB Hub 使得每个接口可以提供 500 mA 的电流。
![Page 55: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/55.jpg)
( 7 ) USB V1.1规范提供全速 12Mbit/s 的模式和低速 1.5Mbit/s 的模式, USB V2.0规范提供高达 480Mbit/s 的数据传输速率,可以适应各种不同类型的外设。
( 8 )针对突然发生的非连续传输设备,如音频和视频设备, USB 在满足带宽的情况下才进行该类型的数据传输。
( 9 )为了适应各种不同类型外围设备的要求, USB提供了 4 种不同的数据传输类型。
( 10 ) USB 使得多个外围设备可以跟主机通信,最多支持 127 个设备。由于电脑的 USB 接口有限,必须使用 USB HUB增加分支,根据规范 USB Hub 最多可提供 7 个分支。
![Page 56: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/56.jpg)
IEEE1394
IEEEl394 是一种高性能的串行总线。应用范围主要是那些带宽要求超过 100Kbit/s 的硬盘和视频外设。利用同样的四条信号线, IEEE1394即可以同步传输,也可以支持异步传输。这四根信号线分为差模时钟信号线对和差模数据线对。
IEEE1394规范得到了很好的定义,而且基于 IEEE规范的产品也出现在了市场上。目前, IEEE1394解决方案的价位被认为可以同 SCSI磁盘接口相竞争,但它不适用于一般的桌面连接。
![Page 57: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/57.jpg)
IEEE1394 的特点 IEEEl394 是一种新型的高速串行总线,它具有以下显著的特点:
( 1 )高传输速率( 2 )采用同步传输和异步传输两种数据传输模式。
( 3 )可以实现即插即用并支持热插拔 上述特点使它可广泛地应用于多媒体声卡、图像和视频产品、打印机、扫描仪的图像处理等方面,尤其是磁盘阵列、数字照相机,显示器和数字录像机等。
![Page 58: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/58.jpg)
IBM PC/XT 总线插槽引脚信号 电源及其他 10 根: OSC CLK 5V 12V GND
状态线 3 根 : I/O CH CK
I/O CH RDY
CARD SLCTD
地址线 20 根• A0~A19 地址总线,• 单向输出,由 CPU 或 DMAC 发出
数据线 8 根• D0~D7 数据总线,双向输出
控制线 21 根
IBM PC/XT 总线插槽引脚信号
GNDRESET
+5VIRQ2
-5VDRQ2
-12V
+12VGND
MEMWMEMR
IOWIOR
DACK3DRQ3
DACK1DRQ1
DACK0CLOCK
IRQ7IRQ6IRQ5IRQ4IRQ3
DACK2T/C
ALE+5V
OSCGND
I/O CH CKD7D6D5D4D3D2D1D0I/O CH RDYAENA19A18A17A16A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0
![Page 59: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/59.jpg)
总线控制器 8288 发出 :
ALE 地址锁存允许信号MEMR 存储器读控制信号 MEMW 存储器写控制信号IOR I/O 端口读控制信号IOW I/O 端口写控制信号
外设发向 8259A:
IRQ2~IRQ7 中断请求信号
IBM PC/XT 总线插槽引脚信号
GNDRESET
+5VIRQ2
-5VDRQ2
-12V
+12VGND
MEMWMEMR
IOWIOR
DACK3DRQ3
DACK1DRQ1
DACK0CLOCK
IRQ7IRQ6IRQ5IRQ4IRQ3
DACK2T/C
ALE+5V
OSCGND
I/O CH CKD7D6D5D4D3D2D1D0I/O CH RDYAENA19A18A17A16A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0
![Page 60: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/60.jpg)
与 DMAC 有关的信号 AEN 地址允许信号, 由 DMAC 发出,
切除 CPU 对总线的控制 为 1 时, DMAC 控制总线 为 0 时, CPU 控制总线
DRQ1~ DRQ3 通道 1~3 DMA请求信号 DACK0~ DACK3 通道 0~3 DMA响应信号 T/C 计数结束信号
RESET 复位驱动信号,单向输出
IBM PC/XT 总线插槽引脚信号
GNDRESET
+5VIRQ2
-5VDRQ2
-12V
+12VGND
MEMWMEMR
IOWIOR
DACK3DRQ3
DACK1DRQ1
DACK0CLOCK
IRQ7IRQ6IRQ5IRQ4IRQ3
DACK2T/C
ALE+5V
OSCGND
I/O CH CKD7D6D5D4D3D2D1D0I/O CH RDYAENA19A18A17A16A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0
![Page 61: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/61.jpg)
假设 ( DS )=3000H, (BX)=500CH, (3500CH)=9AH 执行 MOV A
L, [ BX ]
T1 T2 T3 T4
A19~A0
D7~D0
ALE
CLK
MEMR
信号变化过程: ① A19~A0 上出现有效信号 0011 0101 0000 0000 1100( 由 CPU 发出 )
② ALE 上出现正脉冲信号 ③ MEMR 变低 ④ D7~D0 上出现有效信号1 0 0 1 1 0 1 0 ( 由内存送出 )
⑤ MEMR变高 , 数据进入 AL
![Page 62: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/62.jpg)
例 假设 ( DS )=4000H, ( DI )=301EH, (AL)=87H
MOV [ DI ] , AL
T1 T2 T3 T4
ALE
A19~A0
CLK
MEMW
D7~D0
信号变化过程 ① A19~A0 上出现有效信号 0100 0011 0000 0001 1110 ( 由 CPU 发出 )
② ALE 上出现正脉冲信号 ③ MEMW 变低 ④ D7~D0 上出现有效信号 1 0 0 0 01 1 1 ( 由 CPU 发出 )
⑤ MEMW 变高 , 数据写入 43000H 内存单元
![Page 63: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/63.jpg)
22 .. 4 I/O4 I/O 端口编址与译码端口编址与译码1 、 I / O 端口的寻址方式2 、 I / O 端口地址译码
![Page 64: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/64.jpg)
11 、、 II // OO 端口的寻址方式端口的寻址方式I/O 端口:通常把 I/O 接口电路中能被 CPU 直接访问的寄存器或某些特定的器件称为端口, I/O 端口的编号称为端口地址。
I/O 接口寄存器或部分端口线与 I/O 设备直接相连,完成数据、状态及控制信息的交换。这样 I/O操作实际上转化为对 I/O 端口的操作,即 CPU 所访问的是与 I/O 设备相关的端口,而不是 I/O 设备本身。
![Page 65: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/65.jpg)
端口地址编址方式统一编址:从存储空间中划出一部分地址空间分配给 I/O 设备,而把 I/O 接口中的端口当作存储器单元一样进行访问。优点:1 、对 I/O 接口的操作与对存储器的操作完全相同,任何存储器操作指令都可以用来操作 I/O 接口,而不必使用专用的 I/O 指令。
2 、可以使外设数目或 I/O 寄存器数目几乎不受限制,而只受总存储容量的限制,从而大大增加系统的吞吐率。
3 、使微机系统的读写逻辑简单。
![Page 66: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/66.jpg)
缺点:1 、占用了存储器的一部分地址空间,使可用内存空间减少了。
2 、访问内存的指令一般较长,执行速度慢。3 、为了识别一个 I/O 端口,必须对全部地址线译码,这样不仅增加了地址译码电路的复杂性,而且使执行外设寻址的操作时间相对增加。
![Page 67: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/67.jpg)
独立编址:将 I/O 端口单独编址而不和存储空间合在一起,即两者的地址空间是相互独立的, I/O结构不会影响存储器的地址空间。处理器对 I/O 端口和存储单元的不同寻址是通过不同的读写控制信号 IOR 、 IOW 和 MEMR 、 MEMW 来实现的。优点:1 、 I/O 端口地址不占用存储器地址空间。由于系统需要的 I/O 端口寄存器一般比存储器单元要少得多,比如设置 256 到 1024 个端口对一般微机系统已经足够,因此选择 I/O 端口只需用 8 到 10 根地址线即可。
2 、由于 I/O 地址线较少,因此 I/O 端口地址译码简单,寻址速度快。
![Page 68: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/68.jpg)
缺点:1 、专用 I/O 指令类型少,远不如存储器访问指令丰富,使程序设计灵活性较差。
2 、 I/O操作通常只能在累加器和 I/O 端口之间进行,处理能力不如存储器影像方式强。
3 、要求处理器提供存储器读 / 写及 I/O 端口读 /写两组控制信号,增加了控制逻辑的复杂性,而且对 CPU 芯片引脚线的数目需求多。
![Page 69: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/69.jpg)
I/O 端口地址分配Intel 系列 PC 微机 I/O 地址线有 16 根,对应的 I/
O 端口编址可达 64K字节。但由于 IBM 公司当初设计微机主板及规划接口卡时其端口地址译码采用的是非完全译码方式,即只考虑了低 10 位地址线 A9-A0 ,而没有考虑高 6 位地址线 A15-A10 ,故其 I/O 端口地址范围是 0000-03FFH ,PC 系统微机系统支持的端口数目是 1024 个。
![Page 70: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/70.jpg)
系统板上接口芯片的端口地址
040~ 05FH060~ 06FH070~ 07FH0F0~ 0FFH
定时器并行接口芯片(键盘接口)RT/CMOS RAM协处理器
020~ 03FH0A0~ 0BFH
中断控制器 1中断控制器 2
000~ 01FH0C0~ 0DFH080~ 09FH
DMA控制器 1DMA控制器 2DMA 页面寄存器
端口地址I/O芯片名称
![Page 71: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/71.jpg)
I/O 接口名称 端口地址游戏控制卡 200~20FH
并行口控制卡 1并行口控制卡 2
370~37FH270~27FH
串行口控制卡 1串行口控制卡 2
3F8~3FFH2F0~2FFH
原型插件板 ( 用户可用) 300~31FH
同步通信卡 1同步通信卡 2
3A0~3AFH380~ 38FH
单显 MDA彩显 CGA彩显 EGA/VGA
3B0~3BFH3D0~3DFH3C0~3CFH
硬驱控制卡软驱控制卡
1F0~1FFH3F0~3F7H
PC网卡 360~36FH
![Page 72: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/72.jpg)
设计、选定 I/O 端口地址时要注意: (1)凡是被系统配置占用了的端口地址不能使用。 (2) 从原则上讲,未被系统占用的地址用户都可以使用,但对计算机厂家申明保留的地址,不要使用,以免发生 I/O 端口地址重叠和冲突造成所设计的产品与系统不兼容。
(3) 通常,用户可使用 0300H~ 031FH ,这是PC 系列微机留作实验卡用的。在用户可用的 I/O 地址范围内,为了避免与其他用户开发的接口控制卡发生地址冲突,最好采用地址开关。
![Page 73: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/73.jpg)
22 、、 II // OO 端口地址译码端口地址译码1.固定式端口地址译码 从编程角度看,接口内部主要包括一个或多个 CPU 可以进行读 /
写操作的寄存器,又称为 I/O 端口。 各 I/O 端口由端口地址区分。
1001 0101 (状态端口 )
0110 1010( 数据端口 )
1100 0110( 控制端口 )
地址译码
数据缓冲
控制电路
外
设
AB
DB
CB
C
P
U
![Page 74: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/74.jpg)
按存放信息(数据、状态、控制)的不同, I/O
端口可分为三种类型
数据端口:用于存放 CPU 与外设间传送的数据
信
状态端口:用于暂存外设的状态信息控制端口:用于存放 CPU 对外设或接口的控制信息, 控制外设或接口的工作方式。
CPU 对外设输入 / 输出的控制,是通过对接口电路中各 I/O 端口的读 / 写操作完成。
![Page 75: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/75.jpg)
( 1 )译码电路的构成
74LS138 译码器
门电路:与门、非门、或门、与非门、或非门等
译码器: 2-4 线译码器 74LS139
3-8 线译码器 74LS138
4-16 线译码器 74LS154 等
可用门电路、译码器或者两者的组合实现。
A Y0B Y1C Y2 Y3 G1 Y4 G2A Y5G2B Y6 Y7
![Page 76: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/76.jpg)
( 2)设计译码电路的方法 用门电路、译码器或两者组合实现满足此取值情况的电路。
1. 端口的选通信号通常为低电平有效
2. 除端口的地址信号 A15~A0 参加译码外,
(控制信号 IOW 、 IOR 、 IO/M 、 AEN 也可参加译码 )
译码电路
A0A1
A14A15
IORIOWAEN
译码电路示意图
![Page 77: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/77.jpg)
1)地址译码电路的作用作用:地址+控制信号 接口芯片的选择信号。常用控制信号: SBHE、 、 AEN、 、 SBHE :控制端口奇偶地址。
:控制是 8位还是 16位的 I/O端口。 AEN = 0:避免在 DMA期间,由 DMA控制器对这些以非 DMA方式传
送的端口执行 DMA 操作。 :控制对端口的读。 :控制对端口的写。2)地址译码电路的输出信号
输出信号:低电平有效。I/O地址译码方法
片间选择:高位地址+控制信号 片选信号。片内端口选择:低位地址直接与接口芯片地址线相连。
逻辑组合
IOR IOWI/OCS16
译码电路
I/OCS16
IOR
IOW
![Page 78: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/78.jpg)
设计端口地址为 218H 的译码电路
分析 CPU执行 IN/OUT 指令时,发出端口的地址信号 MOV DX, 218H
IN AL, DX 或 OUT DX, AL对应 218H 端口的地址信号为(取 A9~A0 ): A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 ( 地址信号 ) 1 0 0 0 0 1 1 0 0 0 B
2 1 8 H
只要满足此地址取值的译码电路均可
![Page 79: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/79.jpg)
方法一、用门电路实现 218H的地址译码
数 据 线 DB
RD
WR
CS
端口译码电路
0
A9A8A7A6A5A4A3A2A1A0AEN
IORIOW
I/O接口
PC总线
D0~D7
D0~D7
100001100
0
0
&
译码电路部分满足:只当地址信号 A9~ A0 为:A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
1 0 0 0 0 1 1 0 0 0
即 218H 时,输出 0 ,使I/O 接口的 CS 有效否则输出 1 ,使 I/O 接口的 CS 无效
![Page 80: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/80.jpg)
(2) 用集成译码模块进行端口地址译码 若接口电路中需要使用多个端口地址时,采用集成译码器译码比较方便。译码器的型号很多,如 3-8 译码器 74LS138 、 4-16 译码器 74LS154 ;双 2-4 译码器 74LS139 和 74LSl55等。
![Page 81: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/81.jpg)
采用实际芯片:
PC 总线
RDWR
CS
I/O 接口
D0~
D7数 据 线 DB
端 口译码电路
0
A9A8A7A6A5A4A3A2A1A0
AEN+5VIOR
IOW
D0~
D7100001100
0
0
&
&
≥1
0
0
74LS30
74LS20
74LS32
74LS30 为 8 输入与非门74LS20 为 4 输入与非门74LS32 为 2 输入或门
当地址信号为:A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
1 0 0 0 0 1 1 0 0 0
即地址为 218H
或门 74LS32 输出 0 ,使 I/O 接口的 CS 有效。
![Page 82: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/82.jpg)
当端口地址信号为:A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
1 0 0 0 0 1 1 0 0 0
即 218H时 , Y0输出 0,使 I/O接口的 CS有效
方法二、用译码器、门电路组合实现 218H的地址译码
74LS1383-8 译 码器
218HA Y0
B Y1C Y2 G1 Y3 Y4 G2A Y5 Y6G2B Y7
0000110000
100
&
A0A1A2
AENA3A4A5A6A7A8A9
IORIOW
PC 总线
CS
I/O 接口
D0~
D7
&RDWR
数 据 线 DBD0~
D7
端 口译码电路
![Page 83: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/83.jpg)
译码器译码器74LS138 译码器:
G1
G2A
G2B
CB
A
Y0
Y7
•
•
•
•译码输出
译码输入
译码使能
![Page 84: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/84.jpg)
74LS13874LS138 真值表真值表 使能端 输入端 输 出 端
G1 #G2A #G2B C B A
#Y0 #Y1 #Y2 #Y3 #Y4 #Y5 #Y6 #Y7
0 1 1 0
1 1 0 1 0 01 0 01 0 01 0 01 0 01 0 01 0 01 0 0
0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1
1 0 1 1 1 1 1 1
1 1 0 1 1 1 1 1
1 1 1 0 1 1 1 1
1 1 1 1 0 1 1 1
1 1 1 1 1 0 1 1
1 1 1 1 1 1 0 1
1 1 1 1 1 1 1 0
![Page 85: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/85.jpg)
2.开关式可选端口地址译码 适用场合:要求接口卡的端口地址能适应不同的地址分配场合,或为系统今后扩充留有余地。
这种译码方式可以通过开关使接口卡的 I/O 端口地址根据要求加以改变而无需改正电路、其电路结构形式有如下几种。
(1) 用比较器模块和地址开关进行地址译码常用的比较器有 4 位比较器 74LS85 、 8 位比较器 74LS688 。比较器可以对两个数据比较出大于、小于或等于三种结果。在地址译码中仅使用比较相等的功能 ,大于、小于则不使用。
![Page 86: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/86.jpg)
![Page 87: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/87.jpg)
(2) 使用跳线的可选式译码电路根据需要,要改变译码器的译出地址,可以用跳线或跳接开关对译码器的输入地址进行反相或不反相的选择,如 83 页 图 2-16 所示。
如果改变跳线的连接方向,则有多达 1024 种地址选择。
![Page 88: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/88.jpg)
习题:使用 74LS20/30/32和 74LS04设计 I/O端口地址为 3D8H的只读译码电路。
![Page 89: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/89.jpg)
若要产生 3D8H端口地址,则译码电路的输入地址线就应具有如表所示的值。
按照表中地址线的值,采用门电路就可以设计出译码电路,如图所示。
8D3十六进制
1 0 0 01 1 0 10 0 1 1二进制
A3 A2 A1 A0A7 A6 A5 A40 0 A 9 A8地址线
![Page 90: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/90.jpg)
A1
A0
AEN IOR
A9
A8
A7
A6
A5
A4
A3
A2≥1
&
& 74LS04
74LS20
74LS32
74LS30
Y
![Page 91: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/91.jpg)
更改上例端口地址为更改上例端口地址为 2E2H2E2H 的译码电路的译码电路
Y(读)
Y(写)
A1
A0
AEN
IORIOW
111
11
1
≥1
≥1
≥1
A9
A8
A7
A3
A2
74LS30
74LS20
74LS32
&
&
图 带读 / 写控制的门电路译码电路
0010 1110 0010
![Page 92: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/92.jpg)
I/O 端口地址译码电路设计地址范围: n 根地址线未参与译码,译出地址含 2n个
A9
&1A
8
1
A7A6A5A4A3
1111
&
A2A1A0AE
NIOR
1
Y
74LS30
74LS20
74LS32
1 )固定式端口地址译码门电路译码法——单个地址或地址范围 例:图中译码输出地址 2FH (只读、 AEN= 0 ) 试分析将图中的 A1、 A2去掉后,译码输出的
地址译码器(以 74LS138 为例)译码法——多个地址或
地址范围
三——八译码器 74LS138 的逻辑功能:
当其 3 个译码控制端都为有效,即: G1 = 1 , G2A = G2B = 0 时,它的 8 个译码输出端( Y0 ~ Y7 )有且只有一个为有效(低电平),有效引脚的编码由输入选择信号 C 、 B 、 A 决定;即: CBA = i ,则 Yi = 0 ( i = 0 ~ 7 )
![Page 93: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/93.jpg)
例: PC机系统板上的端口地址译码电路(为每个接口芯片分配一个含有 32个地址的地址范围)
各芯片的地址: 8237 : 00H ~ 1FH 8259 : 20H ~ 3FH
8253 : 40H ~ 5FH 8255 : 60H ~ 7FH
写 DMA 页面寄存器: 80H ~ 9FH
写 NMI 屏蔽寄存器: A0H ~ BFH
1
A7
A6
A5
1
A9
A8
AEN
ABC
G2A
G2B
G1
Y0
Y1
Y2
Y3
Y4
Y5
1
IOW
DMACS
T/C CSPPICS
INTRCS
WRTNMIREG
WRTDMAPG
(8237)(8259)(8253)
(8255)
( 写 DMA 页面寄存器 )
( 写 NMI 屏蔽寄存器 )
(74LS138)
![Page 94: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/94.jpg)
2)可选式端口地址译码比较器+地址开关原理:当比较器输出有效(相等)时,译码输出
有效。分析 S0、 S2闭合时译码输出地址
S0
S1
S3
S2
DIP
VccA=B
B3
B2
B0
B1
A3
A2
A0
A1
A9
A8
A6
A7
74LS85
A=BA<BA>B
ABC
G2A
G2B
G1
Y0
Y1
Y6
Y7
(74LS138)
…
A4
A3
A2
A5
AEN
……Y6 : 158H ~ 15BH Y7 : 15CH ~ 15FH
Y0 : 140H ~ 143H Y1 : 144H ~ 147H
若要求 Y3的地址为 24CH~ 24FH ,如何设置开关;若要求为 32CH~ 32FH呢?
32CH ~ 32FH :该电路无法实现24CH ~ 24FH : S0 、 S3 断开; S1 、S2 闭合
NOTE :由开关控制的地址才能
改变
![Page 95: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/95.jpg)
使用跳接开关
A9
&
A8
A3
…
1
&
AEN
1 Y
74LS30
74LS20
74LS32
1
1
1A2
1…A0
1
异或门+地址开关原理:若要求异或门的输出 C = 1 ,则两个输入端逻辑电平反,即:若开关 S
闭合,则 Ai = 1 ;否则, Ai = 0 若要求异或门的输出 C = 0 ,则两个输入端逻辑电平相同,即:若开关 S 闭合,则 Ai = 0 ;否则, Ai = 1
=1
Vcc
Ai
S
C
![Page 96: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/96.jpg)
芯片 74LS136 :内含 4 个异或门,各异或门与引脚的关系
=11 32
=14 65
=19 810
=112
111
3
3 11
6 8 3 11
6 8 3 6 8
A3 … A6 … A10A7
AENA11
IORIOW
512 13
910 4 1 10 4 113 10 4 12
2
512
9 2
59
S0 S1 S2 S3 S4 S5 S6 S7 S8 S9
+5V
74LS136
ABCG2AG2B G1
Y0 74LS138
A2 A1 A0
Y7…
Y0 ~ Y7 地址
170H ~ 177H
S0 、 S2 、 S5 、 S6 、 S9 闭合 S9 常开; IOR 、 IOW
要求 Y0~ Y7的地址为 328H~ 32FH ,如何设置开关?
若利用异或门输出控制 138 的 G2A,电路怎样改动??
![Page 97: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/97.jpg)
82548254 可编程定时器/计数器可编程定时器/计数器在微机系统或智能化仪器仪表的工作过程中,经常在微机系统或智能化仪器仪表的工作过程中,经常需要使系统处于定时工作状态,或者对外部过程需要使系统处于定时工作状态,或者对外部过程进行计数。定时或计数的工作实质均体现为对脉进行计数。定时或计数的工作实质均体现为对脉冲信号的计数,如果计数的对象是标准的内部时冲信号的计数,如果计数的对象是标准的内部时钟信号,由于其周期恒定,故计数值就恒定地对钟信号,由于其周期恒定,故计数值就恒定地对应于一定的时间,这一过程即为应于一定的时间,这一过程即为定时定时,如果计数,如果计数的对象是与外部过程相对应的脉冲信号(周期可的对象是与外部过程相对应的脉冲信号(周期可以不相等),则此时即为以不相等),则此时即为计数计数。。
定时与计数的关系定时的本质就是计数,只不过这里的
“数”的单位是时间单位。
![Page 98: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/98.jpg)
在微机系统中,常常需要为在微机系统中,常常需要为 CPUCPU 和外部设备提和外部设备提供供时间基准时间基准以实现定时或延时控制。如定时中断、以实现定时或延时控制。如定时中断、定时检测、定时扫描等, 或对外部事件进行计定时检测、定时扫描等, 或对外部事件进行计数并将计数结果提供给数并将计数结果提供给 CPUCPU 。 。
实现定时或延时控制有三种方法:实现定时或延时控制有三种方法:软件软件定时、不可编程硬件定时器、可编程硬件定时器定时、不可编程硬件定时器、可编程硬件定时器。。软件定时软件定时让让 CPUCPU 执行一段程序段,由于执行每执行一段程序段,由于执行每条指令都需要时间,因此执行一个程序段就需要条指令都需要时间,因此执行一个程序段就需要一定的时间,通过改变指令执行的循环次数就可一定的时间,通过改变指令执行的循环次数就可以控制定时时间。这种软件定时方式计时不够准以控制定时时间。这种软件定时方式计时不够准确,尤其是当确,尤其是当 CPUCPU 内部有多个并行处理时更为内部有多个并行处理时更为明显。同时,由于它占用了明显。同时,由于它占用了 CPUCPU ,因而降低了,因而降低了CPUCPU 的利用率。 的利用率。
![Page 99: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/99.jpg)
不可编程的硬件定时器不可编程的硬件定时器采用中小规模器件(如采用中小规模器件(如 NENE
555555 ),外接定时元件——电阻和电容。这种方),外接定时元件——电阻和电容。这种方式实现的定时电路简单,通过改变电阻和电容可式实现的定时电路简单,通过改变电阻和电容可使定时在一定范围内变化。但是,这种定时电路使定时在一定范围内变化。但是,这种定时电路在连接好硬件后,定时值就不易用软件来控制和在连接好硬件后,定时值就不易用软件来控制和改变,由此产生了改变,由此产生了可编程的硬件定时器电路可编程的硬件定时器电路。所。所谓可编程的硬件定时器电路就是其谓可编程的硬件定时器电路就是其工作方式工作方式、、定定时值时值和和定时范围定时范围可以很方便地由软件来确定和改可以很方便地由软件来确定和改变。变。
![Page 100: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/100.jpg)
1. 软件延时
不用硬件,但占用大量 CPU 时间
2. 不可编程的硬件定时
电路简单,但不易更改
3. 可编程的硬件定时
软硬件结合,可灵活定时
![Page 101: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/101.jpg)
可编程定时器/计数器 8254
8254 是 8253 的提高型 (Super Set) ,它具备 8253 的全部功能。凡是用 8253 的地方都可用 8254代替,而原来的硬件连接和驱动软件都不必做任何修改。在微机方面, PC/XT 机中用的是 8253 ,而 PC/AT 及以后的系统中用的是 8254 。 下面以 8254-2 为例(最高频率为 10MHZ )来讨论。
1
2
3
4
5
6
7
8
9
10
11
12
24
23
22
21
20
19
18
17
16
15
14
13
Vcc
WR
RD
CS
A1
A0
CLK2
OUT2
GATE2
CLK1
OUT1
GATE1
D7
D6
D5
D4
D3
D2
D1
D0
CLK0
OUT0
GATE0
GND
8254
![Page 102: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/102.jpg)
82548254 可编程定时器/计数器的功能与结构可编程定时器/计数器的功能与结构( 1 ) 8254- 2 的基本功能1 、有三个独立的 16 位计数器;2 、每个计数器可按二进制或十进制( BCD )计数;
3 、每个计数器可编程工作于 6 种不同的工作方式;4 、 8254- 2每个计数器允许的最高频率为 10M
HZ ( 8253 为 2MHZ , 8253- 5 和 8254- 5为 5MHZ , 8254 为 8MHZ )
5 、 8254 有读回命令( 8253没有),除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容。
![Page 103: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/103.jpg)
82548254 的内部结构框图的内部结构框图
数据总线缓冲器
读 / 写控制逻辑
控制字寄存器
CLK0
GATE0
OUT0
计数器 0
CLK2
GATE2
OUT2
计数器 2
CLK1
GATE1
OUT1
计数器 1
CS
D0-D7
内部总线
RDWRA0A1
![Page 104: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/104.jpg)
82548254 的基本组成框图的基本组成框图
![Page 105: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/105.jpg)
![Page 106: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/106.jpg)
计数器的内部结构
16 位初始值寄存器
GATE
CLK
OUT
16 位减 1 计数器
输出锁存器
控制逻辑
D7-D0
缓冲器
WR
RD
D7-D0
![Page 107: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/107.jpg)
数据传送格式:1 、只传送低 8 位,高 8 位清 0 ;2 、只传送高 8 位,低 8 位清 0 ;3 、先低后高;
![Page 108: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/108.jpg)
计数器的内部结构
内部数据线
计数初值寄存器 (16 位 )
减 1 计数器 (16 位 )
计数值锁存器 (16 位 )
锁存命令
GATECLK OUT
内部数据线
![Page 109: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/109.jpg)
初始化编程时 : 计数初值 → 计数初值寄存器 → 减 1 计数器
内部数据线
计数初值寄存器 (16 位 )
减 1 计数器 (16 位 )
计数值锁存器 (16 位 )
锁存命令
GATECLK OUT
内部数据线
计数器的内部结构
![Page 110: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/110.jpg)
当 GATA=1 时 , CLK 的下降沿使计数器减 1, 当计数值减到 0 ( 或某个值—由工作方式确定 ) 时 , OUT 有输出。
内部数据线
计数初值寄存器 (16 位 )
减 1 计数器 (16 位 )
计数值锁存器 (16 位 )
锁存命令
GATECLK OUT
内部数据线
计数器的内部结构
![Page 111: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/111.jpg)
计数初值 = f c l k / f o u t
收到锁存命令后 , 当前计数值 → 计数值锁存器 ( 以便读出检查 ), 而计数器仍然做减 1 计数
内部数据线
计数初值寄存器 (16 位 )
减 1 计数器 (16 位 )
计数值锁存器 (16 位 )
锁存命令
GATECLK OUT
内部数据线
计数器的内部结构
![Page 112: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/112.jpg)
计数器 0 ~ 2 即三个计数器 / 定时器通道 ,每个通道包括:
8 位控制字寄存器16 位计数初值寄存器减一计数器输出锁存器
作定时器用:其 CLK 端上的输入脉冲应是标准的、精确的、周期的
作计数器用:对其 CLK 端上的脉冲计数,脉冲可以是非周期的
采用减一计数器,为 0 时,从 OUT 端上输出一个脉冲 定时时间 = 时钟脉冲周期 X预置的计数初值 每个通道: CLK 计数脉冲或标准脉冲输入端
OUT 计数值为 0 时输出一个脉冲GATE允许端,当 GATE=1 时允许计数
![Page 113: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/113.jpg)
每个计数器均包括:8 位控制寄存器,通过对它编程可选择不同的工作方式;
16 位初值寄存器 CR 和 16 位输出锁存器 OL ,它们占用同一个 I/0 端口地址, CPU 可以用输出指令向 CR预置初值,用输入指令读回 OL 的数值,CR 和 OL 都没有计数功能,只起锁存作用;
16 位计数工作单元 CE执行计数操作,其操作方式由控制寄存器控制,最基本的操作是接受 CR来的初值,对 CLK 信号减 1 计数,把结果送到OL 中锁存。
![Page 114: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/114.jpg)
( 3 ) 8254 的引脚及其功能数据总线缓冲器 D7 ~ D0
8 位 三态 双向 读 / 写控制逻辑
CS :片选信号 低电平有效 RD :读信号 低电平有效 WR :写信号 低电平有效 A1 A0 :端口选择信号
1
2
3
4
5
6
7
8
9
10
11
12
24
23
22
21
20
19
18
17
16
15
14
13
Vcc
WR
RD
CS
A1
A0
CLK2
OUT2
GATE2
CLK1
OUT1
GATE1
D7
D6
D5
D4
D3
D2
D1
D0
CLK0
OUT0
GATE0
GND
8254
![Page 115: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/115.jpg)
82548254 的外部引脚的外部引脚面向系统总线的信号有:1. 数据总线 D7~ D0 :三态输出 / 输入线。用于将
8254 与系统数据总线相连,是 8254 与 CPU 接口数据线,供 CPU 向 8254 进行读 / 写数据、传送命令和状态信息。
2. 片选线 CS :输入信号,低电平有效。当 CS 为低电平时, CPU 选中 8254, 可以向 8254 进行读/ 写;当 CS 为高电平时, CPU 未选中 8254 。 CS 由 CPU 输出的地址码经译码产生。
3. 读、写信号 RD 和 WR :输入信号。它们由 CPU发出,用于对 8254 寄存器进行读 / 写操作。
![Page 116: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/116.jpg)
4. 地址线 A1 和 A0 :它们一般分别接到系统地址总线的 A1 和 A0 上。用于选择 8254 内部寄存器,以便对它们进行读 / 写操作。
![Page 117: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/117.jpg)
口地址译码器
A9
A2
AEN
D7~D0
IOR
IOW
A1
A0
D7~D0
RD
WR
A1
A0
CS
8254
8254 与系统总线的连接
I/O 口地址分 2 段A9~A2 参加译码,译码 输出负脉冲。使 CS=0 , 选中 8254
A1,A0 直接与芯片 A1,A0
相连,选择片内寄存器 执行 IN 时从选中的内部 寄存器读执行 OUT 时向选中的内 部寄存器写
![Page 118: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/118.jpg)
8254 内部寄存器 / 计数器口地址
在 CS=0 前提下 A1 A0
选中
0 0 0# 计数器0 1 1# 计数器1 0 2# 计数器1 1 控制寄存器
设 8254 与系统总线如上图联接 : 口地址 =40H~43H ,“选中” 8254 ,则 0#~2# 计 数器口地址 =40H~42H ,控制口地址 =43H 。口地址 =2FCH~2FFH ,“选中” 8254 ,则 0#~2# 计数器口地址 =2FCH~2FEH ,控制口 地址 =2FFH 。
![Page 119: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/119.jpg)
82548254 的引脚及其功能的引脚及其功能三个计数器 0 ~ 2 ,一个控制寄存器 当 A1A0分别为 00 01 10 11时分别选中三个计数器和控制字寄存器 在 8088/8086系统中, CPU的 A1、 A0分别与 8254的 A1、 A0相连 在 8086系统中,仅使用 80x86数据总线的低 8位 D7 ~ D0CS RD WR A1 A0 操作0 1 0 0 0 计数初值写入计数器 00 1 0 0 1 计数初值写入计数器 10 1 0 1 0 计数初值写入计数器 20 1 0 1 1 向控制寄存器写控制字0 0 1 0 0 读计数器 0 当前计数值0 0 1 0 1 读计数器 1 当前计数值0 0 1 1 0 读计数器 2 当前计数值0 0 1 1 1 无操作1 X X X X 禁止使用0 1 1 X X 无操作
![Page 120: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/120.jpg)
82548254 的操作方式和编程的操作方式和编程1 、控制字的设置 3 个计数器的控制寄存器公用一个 I/O 地址,即 TIM+3
(A1A0= 11 时 ) 。控制字节的格式为:
BCDM0M1M2RL0RL1SC0SC1
D0D1D2D3D4D5D6D7
000: 方式 0001: 方式 1x10: 方式 2x11: 方式 3100: 方式 4101: 方式 5
00: 寄存器锁存 ,CPU 读01: 只读 / 写计数器低字节10: 只读 / 写计数器高字节11: 先读 / 写计数器低字节
后读 / 写计数器高字节
00: 选计数器 001: 选计数器 110: 选计数器 211: 读回命令
0: 二 进 制 计 数 , 初 值为 0000H-0FFFFH
1: BCD 计 数 , 初 值 为 0000-9999
![Page 121: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/121.jpg)
对 8254 的 3 个控制寄存器设置控制字,需对相同地址 TIM+3执行 3条 OUT 指令才能完成。假设INIC0、 INIC1和 INIC2分别是要置入计数器 0 、1 和 2 的控制字节,设置时要用下列指令:
MOV DX , TIM+3
MOV AL , INIC0
OUT DX , AL
MOV AL , INIC1
OUT DX , AL
MOV AL , INIC2
OUT DX , AL
![Page 122: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/122.jpg)
工作方式控制字
SC1, SC0— 计数器选择
D7 D6 D5 D4 D3 D2 D1 D0
SC1 SC0 RL1 RL0 M2 M1 M0 BCD
SC1 SC0 计数器0 0 CNT0
0 1 CNT1
1 0 CNT2
1 1 读回命令
![Page 123: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/123.jpg)
D7 D6 D5 D4 D3 D2 D1 D0
SC1 SC0 RL1 RL0 M2 M1 M0 BCD
RL1 RL0 操作方式0 0 计数器锁存操作(供 CPU 读)0 1 只读 / 写计数器低 8 位1 0 只读 / 写计数器高 8 位1 1 先读 / 写底 8 位,再读 / 写高 8 位
![Page 124: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/124.jpg)
例如,向计数器 0 置入的控制字节的高 4 位为 0011 ,那么以后向 CR预置初值时,每次必须写两条输出指令,如下:
MOV DX , TIM
MOV AL , INIOL
OUT DX , AL
MOV AL , INIOH
OUT DX , AL
其中 INIOL 和 INIOH 分别是要置入计数器 0 中计数寄存器 CR 的低位字节和高位字节的初值。 TIM 是计数器0 的 CR 和 OL 地址。
![Page 125: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/125.jpg)
同样,从 OL 读数时,也必须相继安排两条输入指令,如下:
MOV DX , TIM
IN AL , DX
MOV AH , AL
IN AL , DX
XCHG AH , AL
这样, AX 内容就是 l 6 位的 OL值。如果控制字节的 RL1 和 RL0两位设置为只读 / 写低位字节或只读 / 写高位字节,每次只需用一条OUT 指令或 IN 指令来写入或读出指定的一个字节的内容。
![Page 126: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/126.jpg)
M2M1M0— 工作方式选择
M2 M1 M0 工作方式0 0 0 方式 0
0 0 1 方式 1
X 1 0 方式 2
X 1 1 方式 3
1 0 0 方式 4
1 0 1 方式 5
D7 D6 D5 D4 D3 D2 D1 D0
SC1 SC0 RL1 RL0 M2 M1 M0 BCD
![Page 127: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/127.jpg)
D7 D6 D5 D4 D3 D2 D1 D0
SC1 SC0 RL1 RL0 M2 M1 M0 BCD
BCD—计数方式选择
0 16 位二进制计数
1 4 位十进制( BCD )码计数
![Page 128: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/128.jpg)
82548254 的工作方式的工作方式
方式 0 计数结束中断方式
方式 1 可编程单脉冲形成方式
方式 2 分频器
方式 3 频率可编程的方波发生器
方式 4 由软件触发的选通信号发生器
方式 5 硬件触发的选通信号发生器
![Page 129: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/129.jpg)
方式方式 0 0 计数结束中断方式计数结束中断方式( 1 )结果特点:计数器减 1 为 0 时, OUT升高,向 CPU 发中断请求。( 2 )过程特点1 、控制字写入: OUT=0,当控制字写入控制字寄存器后,输出端 OUT变成低
电平。并且在计数值减到 0 之前一直保持低电平。2 、计数值写入: OUT 不变,仍然为低电平( OUT=0 )3 、启动方式:写入计数值。写入计数值后,必须在下一个 CLK 时钟脉冲到来
时,计数初值才由 CR 传送到 CE 。4 、计数期间: OUT 为低电平( OUT=0)
5 、计数为 0 时: OUT升高( OUT=1 ),向 CPU 发中断请求(如果使用中断的话)。直到 CPU 写入新的控制字或计数值时,才能使 OUT=0 ;
6 、计数期间写入新的计数值:如果计数值是一个字节,则在写入后的下一个时钟脉冲新的计数值由 CR 送入 CE ,开始新的计数如果计数值是两个字节,则写入第一个字节时终止计数,写入第二个字节后的下一个时钟脉冲时新的计数值由 CR 送入 CE,启动计数器按新的计数值开始计数。
7 、 GATE 的作用: GATE=0 时,禁止计数,计数器停止; GATE=1 时允许计数,此时计数器从刚才断的地方开始连续计数。
8 、计数值有效期限:计数值一次有效。
![Page 130: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/130.jpg)
1. 方式 0 :计数结束中断
① ② ④③ ⑤
GATE
OUT
CLK
03 124
4方式 0WR
①
设定工作方式
②
设定计数初值
③
计数值送入计数器
④
计数过程
⑤
计数结束
![Page 131: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/131.jpg)
当控制字写入控制字寄存器时,则使 OUT 输出端变低,在写入计数初值后, 计数器开始计数(此时 GATE 信号必须为高),计数结束后 OUT 输出端变高。特点: 1. 计数器只计一遍。当计数到 0 时,并不 恢复计数初值,不开始重新计数,
且输出一直保持为高。只有在写入下一个计 数值时, OUT 变低,开始新的计数。
2. 8254 内部是在 CPU 写计数器的 WR 信号上升沿 , 将此值写入计数器的计数初值寄存器,在 WR 信号上升沿后的下个 CLK脉冲,才将计数值由计数初值寄存器送至计数器,开始计数。如果设置计数初值为 N ,则输出信号 OUT 是在写入计数值后经过 N+1 个 CLK脉冲才变高的。这个特点在方式 1 、方式 2 、方式 4 和方式 5 时也同样的。
![Page 132: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/132.jpg)
特点: 3. 在计数过程中,可由门控信号 GATE控制暂停。 GATE=0, 计数暂停, GATE变高后,接着计数。
![Page 133: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/133.jpg)
特点: 4. 在计数过程中,可改变计数值。在写入新的计数之后,计数器按新的值重新开始计数。
![Page 134: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/134.jpg)
特点 5
8254 内部没有中断控制电路,也没有专用的中断请求引线,因此 , 若要用于中断,则可用 OUT 信号作为中断请求信号,但需要有外接的中断优先权排队电路与中断向量产生电路。
在 PC 机中,用 8259A 作中断优先权排队电路与中断向量产生电路。
![Page 135: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/135.jpg)
方式方式 0 0 计数结束中断方式计数结束中断方式
GATE 为高时,写入计数值 n 后,在下一个时钟脉冲的下降沿开始减 1 计数,此时 OUT 为低
当计数值为 0 时, OUT变为高,该上升沿可用来触发中断 在计数期间, GATE变为低,将暂停计数,当 GATE变为高时,继续减 1 计
数 计数值 n 一次写入,仅一次有效
可用来触发中断
GATE 为低暂定计数
4 3 2 1 0
5 4 3 2 1 0
CLK
WRn
OUT
WRm
GATE
OUT
n=4
m=5
A+B=mA B
![Page 136: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/136.jpg)
方式方式 1 1 可编程单稳态输出方式可编程单稳态输出方式(1) 结果特点:输出单拍负脉冲,脉冲宽度可编程设定(2) 过程特点1 、控制字写入: OUT=12 、计数值写入: OUT=1( 不变 )3 、启动方式: GATE 上跳沿。启动后的下一个 CLK脉冲使 OUT变低电平 (OUT=0) ,即延迟一个时钟周期
4 、计数期间: OUT 为低电平( OUT=0)5 、计数为 0 时: OUT变为高电平( OUT=1)6 、计数期间写入新的计数值:不影响原计数 , 只有当下一个 GAT
E 上跳沿到来时,才使用新的计数值。7 、 GATE 的作用: GATE=0 或 GATE=1 时,不影响计数,但若
出现上跳沿,则重新启动计数器,按最新计数初值开始计数。若在计数尚未结束时,就出现了上跳沿,则重新计数,因此使输出负脉冲的宽度延长。
8 、计数值有效期限:计数值多次有效。计数初值写入 CR 后,在没有新的计数值写入 CR 之前,原计数初值在 CR 中保持不变。以后每触发一次, CR 中保存的这个计数初值就装入 CE 一次。
![Page 137: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/137.jpg)
当控制字写入控制字寄存器后, OUT 输出保持为高,当 CPU 写完计数值后,计数器并不开始计数,直到 GATE 信号启动之后的下一个输入 CLK脉冲的下降沿开始计数), OUT 输出端变低。在整个计数过程中, OUT 都维持为低,直到计数为 0 时,输出变为高,输出一个单脉冲。
特点: 1. 若设置的计数值为 N ,则输出的单脉冲宽度即为 N 个输入脉冲间隔。
2. 当计数到 0 后,可再次由外部触发启动,输出一个同样宽度的单拍脉冲,而不用再次送计数值。
![Page 138: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/138.jpg)
特点: 3. 在计数过程中,外部可发门控信号进行再触发,在触发脉冲上升沿后的下一个 CLK脉冲的下降沿,计数器将重新开始工作。
![Page 139: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/139.jpg)
特点: 4. 在计数过程中, CPU 可改变计数初值,这时计数过程不受影响,计数到 0 后输出为高。若再次触发启动,则计数器将按新的计数值计数。所以改变计数值是下次有效的。
![Page 140: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/140.jpg)
方式方式 1 1 可编程单稳态输出方式可编程单稳态输出方式
写入计数值 n 后,需 GATE 的上升沿才触发计数器在下一个时钟脉冲的下降沿开始减 1 计数,一旦开始计数, OUT 为低
当计数值为 0 时, OUT变为高,即计数期间, OUT 为低,脉宽为 n 在计数期间, GATE 的下降沿不影响计数,但 GATE 的上升沿,将中止计数,
重新置计数值 n ,并开始计数,这将加宽单稳输出的脉宽 计数值 n 一次写入,仅一次有效
在 OUT 上得到的负脉冲宽度为n 个时钟脉冲 ( 单稳 )
其间可用 GATE 来加宽脉冲的宽度
4 3 2 4 3 2 1 0
n=4
4 3 2 1 0
CLK
WRn
GATE
OUT
OUT
GATE
![Page 141: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/141.jpg)
方式方式 2 2 分频器分频器( 1 )结果特点:产生连续的负脉冲信号,负脉冲宽度等于一个时
钟周期。脉冲周期可由软件设定,脉冲周期=计数值 × 时钟周期( 2 )过程特点1 、控制字写入: OUT=12 、计数值写入: OUT=13 、启动方式:两种。一种是硬件启动: GATE 上跳沿启动;二是软件启动:写入计数值启动(此时 GATE=1)
4 、计数期间: OUT 为高电平( OUT=1) ,但在 CE 由 1 到 0 的计数中, OUT 输出一个负脉冲,宽度为一个时钟周期。
5 、计数为 0 时: OUT 为高电平( OUT=1) ,开始下一个周期的计数
6 、计数期间写入新的计数值:影响随后的脉冲周期。7 、 GATE 的作用: GATE=0 时, OUT=1 ,停止计数; GATE 上跳沿时,启动计数器,重新开始; GATE=1 时不影响计数器工作。
8 、计数值有效期限:计数值重复有效。在这种方式下当计数器的值减到 0 时, CR 的计数初值自动重新装入 CE ,实现循环计数。
![Page 142: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/142.jpg)
当控制字写入控制字寄存器后, OUT 输出为高。在写入计数值后,计数器将立即自动对输入脉冲 CLK 计数。在计数过程中, OUT 一直保持为高,直到计数器减到 1 时, OUT变低,经过一个 CLK 后, OUT恢复为高,计数器重新开始工作。
特点: 1. 不用重新设置计数值,计数器能够连续工作,输出固定频率的脉冲。
![Page 143: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/143.jpg)
特点: 2. 计数过程可由门控信号 GATE 控制。当 GATE变低时,暂停计数;在 GATE变高后的下一个 CLK脉冲使计数器恢复初值,重新开始计数。
![Page 144: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/144.jpg)
特点: 3. 在计数过程中可以改变计数值,这对正在进行的计数过程没有影响, 但在计数到 1 输出变低后,下一个计数周期,计数器将按新的计数值计数。所以改变计数值是下次有效的。
![Page 145: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/145.jpg)
方式方式 2 2 分频器 分频器 CLK
GATE
4 3 2 1 0(4) 3 2 1 0(3) 2 1 0OUT
0(3) 3 2 1 0(3) 2 1 0(3) 2 1
OUT(n=3)
WRn n=4 m=3
GATE 为高并写入计数值 n 后,在下一个时钟脉冲的下降沿开始减 1 计数,此时 OUT
为高 当计数值为 1 时, OUT变为低,当计数值为 0 时, OUT变为高,且重置初值,继续
计数,周而复始 在计数期间,即计数值为 0 前,如写入新的计数值m ,将在本计数周期结束后有效。
即改变输出频率 在计数期间, GATE变为低,将中止计数,当 GATE变为高时,重置初值,并计数 计数值 n 一次写入,连续有效
![Page 146: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/146.jpg)
方式方式 3 3 频率可编程的方波发生器频率可编程的方波发生器( 1 )结果特点:产生连续方波,方波的重复周期=计数值 ×CLK脉冲周期( 2 )过程特点1 、控制字写入: OUT 为高电平( OUT=1 )2 、计数值写入: OUT 为高电平( OUT=1 )3 、启动方式:两种。一种是硬件启动: GATE 上跳沿启动;二是软件启动:写
入计数值启动(此时 GATE=1)4 、计数期间:若计数值 N 为偶数,则在前 N/2 计数期间, OUT 输出高电平
( OUT=1 ) ,后 N/2 计数期间, OUT 输出低电平( OUT=0 );若计数值N 为奇数,则在前( N+ 1 ) /2 计数期间, OUT 输出高电平( OUT=1 ) ,后( N- 1 ) /2 计数期间, OUT 输出低电平( OUT=0 ) 。
5 、计数为 0 时: OUT 输出高电平( OUT=1) ,从而完成一个周期,然后 CR值自动装入 CE ,开始下一个周期的计数
6 、计数期间写入新的计数值:不影响当前输出周期,等到计数值减到 0 后或 GATE 有上跳沿后,将把 CR 的内容重新装入 CE 中,开始以新的周期输出方波。
7 、 GATE 的作用: GATE=0 时,停止计数, OUT=1 ; GATE= 1 时不影响计数器工作,计数进行; GATE 有上跳沿时,下一个 CLK 时钟使 CR装入 CE,开始新的计数。
8 、计数值有效期限:计数值重复有效。
![Page 147: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/147.jpg)
同频率发生器,区别在于,方波频率发生器在计数过程中输出一半时间为高,一半时间为低。即其输出是 N ( N
为计数值)个 CLK脉冲的方波。特点: 1. 若计数值为偶数,在装入计数值后,每个 CL
K脉冲使计数值减 2 ,当计数到 0 时,一方面输出改变状态,一方面重新装入计数值开始新的计数。
![Page 148: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/148.jpg)
若计数值为奇数,装入计数值后,第一个 CLK脉冲使计数器减 1 ,以后每 个 CLK 使计数器减 2 。所以,若计数值 N 为奇数,则( N+1)/2 个 CLK脉冲为高电平,( N-1)/ 个 CLK脉冲为低电平。
![Page 149: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/149.jpg)
特点: 2. GATE 信号能使计数过程重新开始。GATE=0 ,计数停止,当 GATE=1 后,计数器将重新装入计数初值,重新开始计数。
![Page 150: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/150.jpg)
特点: 3. 若在计数期间写入新的计数值,并不影响现行计数过程。但若此时收到 GATE 信号,则计数器将在下一个 CLK脉冲时装入新的计数值并开始计数。
![Page 151: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/151.jpg)
方式方式 3 3 频率可编程的方波发生器 频率可编程的方波发生器
GATE 为高时,写入偶计数值 n 后,在下一个时钟脉冲的下降沿起 OUT 为高,并开始减 2 计数,计数值为 0 时, OUT变为低,且重置初值后继续减 2 计数,计数值为 0 时, OUT变为高,周而复始
GATE 为高时,写入奇计数值m 后,在下一个时钟脉冲的下降沿起 OUT 为高,并先减 1然后减 2 计数,计数值为 0 时, OUT变为低,且重置初值后先减 3然后减 2 计数,计数值为 0 时, OUT变为高,周而复始
写入偶计数值, OUT 上可得对称的方波;写入奇计数值,可得相似对称的方波
计数值 n 一次写入,连续有效
基本对称的矩形波
方波
CLK
OUT(n=4)
OUT(m=5)
![Page 152: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/152.jpg)
方式方式 4 4 软件触发选通软件触发选通( 1 )结果特点:计数器减为 0 时,输出一个时钟周期的负脉冲( 2 )过程特点1 、控制字写入: OUT 输出高电平( OUT=1 )2 、计数值写入: OUT 输出高电平( OUT=1 )3 、启动方式:写入计数值。写入计数值后,再过一个 CLK 时钟周期,减 1 计数器 CE获得计数初值,开始减 1 计数
4 、计数期间: OUT 输出高电平( OUT=1 ) 。5 、计数为 0 时:计数器减到 0 后,输出一个负脉冲,宽度为 1 个
时钟周期。然后,又自动变为高电平,并一直维持高电平。通常将此负脉冲作为选通信号
6 、计数期间写入新的计数值:立即有效。写入新计数值后,在下一个时钟周期时,新计数值被装入 CE ,开始以新的计数值计数。如果写入的计数值是两个字节,那么写入第一个字节时,计数不受影响,写入第二个字节时的下一个 CLK 时钟脉冲使 CR 的新值装入 CE ,并以新的计数值开始重新计数。
7 、 GATE 的作用: GATE=0 时,禁止计数, GATE= 1 时允许计数,此时计数器从暂停的地方开始连续计数。 GATE 信号不影响 OUT 的状态。
8 、计数值有效期限:计数值一次有效。只有在输入新的计数值后才能开始新的计数过程。
![Page 153: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/153.jpg)
在这种方式下,当写入控制字后,输出为高,当写入计数值后立即开始计数。计数到 0 后,输出变低,经过一个 CLK周期,输出又变高,计数器停止计数。这种计数方式是一次性的,当输入新的计数值后,才能开始新的计数。
特点: 1. CPU 写入计数值的下一个 CLK脉冲,将计数值装入计数器,在下一个 CLK脉冲开始计数,即在装入计数值后的第 N+1 个脉冲,才输出一个负脉冲。
![Page 154: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/154.jpg)
特点: 2. GATE=0 ,禁止计数, GATE=1 ,允许计数。因此要做到软件触发, GATE必须保持为高。但 GATE 不影响输出。
![Page 155: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/155.jpg)
特点: 3. 若在计数期间写入新的计数值,则按新的计数值重新开始计数。
![Page 156: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/156.jpg)
例:计数器 0 工作模式 4 ,初始化计数器,使装入计数器 10 s 后产生选通信号 ( 设时钟频率 2MHz,8254 端口地址为 50H~53H) 。解: n+1=T/ TCLK=10/0.5=20
n=19=13HMOV AL, 18H
OUT 53H, AL
MOV AL, 13H
OUT 50H, AL
0 0 0 1 1 0 0 0
通道 0 只写低 8 位 方式 1 二进制计数
![Page 157: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/157.jpg)
方式方式 4 4 软件触发选通 软件触发选通
GATE 为高时,写入计数值 n 后,在下一个时钟脉冲的下降沿开始减 1 计数,此时 OUT 为高。即由软件触发选通。(方式 0 中 OUT 为低)
当计数值为 0 时, OUT变为低,保持一个时钟脉冲宽度后, OUT变为高,该脉冲可用作触发脉冲。(方式 0 中是一上升沿)
在计数期间, GATE变为低,将中止计数,当 GATE变为高时,重置初值,并计数
计数值 n 一次写入,仅一次有效
一个时钟脉冲宽度仅一次有效
上升沿允许计数,但重置初值
下降沿中止计数
4 3 2 1 0
4 4 3 2 1 0
CLK
OUT
GATE
OUT
WRn=4
WRn=4
![Page 158: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/158.jpg)
方式方式 5 5 硬件触发选通硬件触发选通( 1 )结果特点:计数器减为 0 时,输出一个时钟周期的负脉冲( 2 )过程特点1 、控制字写入: OUT 输出高电平( OUT=1 )2 、计数值写入: OUT 输出高电平( OUT=1 )3 、启动方式: GATE 上跳沿。当 GATE 端有上跳沿信号后,下一
个 CLK脉冲使 CR 的计数初值装入 CE ,从而开始计数过程4 、计数期间: OUT 输出高电平( OUT=1 ) 。5 、计数为 0 时:计数器减到 0 时, OUT 输出端输出一个 CLK周期的负脉冲,然后 OUT恢复输出高电平
6 、计数期间写入新的计数值:不影响本次计数,但影响 GATE 上跳沿启动后的计数过程。一旦 GATE 重新启动,将按新的计数初值开始计数
7 、 GATE 的作用:无论 GATE=0还是 GATE= 1 均不影响计数过程,而当 GATE 有上跳沿时将重新启动计数过程,按最新计数值开始计数。
8 、计数值有效期限:计数值多次有效。当计数器的计数值减到 0后,将自动重新装入计数值(由 CR装入 CE ),但并不开始计数,而是在 GATE 信号的上跳沿才开始计数
![Page 159: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/159.jpg)
在这种方式下,当写入控制字后,输出为高,当写入计数值后,计数器并不立即开始计数,而是由门控信号的上升沿触发启动。计数到 0 后,输出变低,经过一个 CLK周期,输出又变高,计数器停止计数。等到下一次门控信号的触发才能开始新的计数。
特点: 1. CPU 写入计数值的下一个 CLK脉冲,将计数值装入计数器,在下一个 CLK脉冲开始计数,即在装入计数值后的第 N+1 个脉冲,才输出一个负脉冲。
![Page 160: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/160.jpg)
特点: 2. 若在计数过程中使用 GATE 信号,则使计数器重新开始计数。但 GATE 不影响输出。
![Page 161: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/161.jpg)
特点: 3. 若在计数期间改变计数值,只要没有门控信号的触发,不影响计数过程,计数到 0 后,若有门控信号触发,则按新的计数值开始计数;若未计数到 0 ,即有门控信号触发,则立即按新的计数值重新开始计数。
![Page 162: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/162.jpg)
方式方式 5 5 硬件触发选通 硬件触发选通
写入计数值 n 后,并不触发选通,需 GATE 的上升沿到后的下一个时钟脉冲的下降沿开始减 1 计数,此时 OUT 为高
当计数值为 0 时, OUT变为低,保持一个时钟脉冲宽度后, OUT变为高,且重置初值,等下一个 GATE 的上升沿到后的下一个时钟脉冲的下降沿才触发减 1 计数。即硬件触发选通
在计数期间, GATE 的上升沿将重置初值并触发减 1 计数
重置初值,并触发计数
4 3 2 1 0
4 3 4 3 2 1 0
一个时钟脉冲宽度
中止计数
CLK
GATE
OUT(n=4)
OUT(n=4)
GATE
![Page 163: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/163.jpg)
82548254 工作方式小结工作方式小结方式 0 — 计数结束产生中断
① 控制字写入后 OUT 即变为低电平,当计数器为 0 时,输出 OUT变为高电平,并停止现行操作。
② 计数初值写入后在下一个 CLK下降沿才送入计数器,因此计数值为 N+1 。
③ 当 GATE变为低电平时计数停止,再变为高电平时计数继续进行。
④ 若计数过程中重新送入初值,则按新值重新计数。
CLK
OUT4 3 2 1 0 FF
方式 0 时序图
CW N=4WR
![Page 164: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/164.jpg)
82548254 工作方式工作方式方式 1 — 可编程的单脉冲形成
写入控制字后 OUT 变为高电平, GATE 上升沿后,下一个CLK 的下降沿使得 OUT 为低电平并开始计数,回零时OUT 变为高电平。
GATE再来一次上升沿后会再次使 OUT 变为低电平,计数器以初值重新计数。
再次给通道写入时间常数,不影响现行操作过程, GATE再次触发后才按新的时间常数操作。
方式 1 时序图OUT
3 2 1 0
CLK
CW N=3WR
FFFE3 2
GATE
![Page 165: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/165.jpg)
82548254 工作方式工作方式方式 2 — 分频器
写入控制字后 OUT 为高电平,输入时间常数后,下一时钟开始计数,减到 1 时输出变为低电平,经过一个 CLK 输出变为高电平,计数重新开始。
GATE=1 计数进行, GATE=0 计数停止,且下一个 CLK 下降沿计数器重新赋初值, GATE 变为高电平,计数重新开始。
计数期间送入新值,本周期继续进行,下一个周期按新值计数操作。
方式 2 时序图OUT
3 2 1
CLK
CW N=3WR
GATE
3 2 1 3 2 1
![Page 166: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/166.jpg)
方式 3 — 频率可编程的方波发生器写入控制字后 OUT 为高电平 , 输入时间常数后,下一时钟开始
计数,计到一半时输出变为低电平,计到终值时变为高电平,并开始下一次计数过程。
若 N 为偶数,高低电平持续时间相等;若为奇数,则高电平持续时间为( N+1 ) /2 ,低电平持续时间为( N-1 ) /2 。
GATE=1 计数进行, GATE=0 计数停止, OUT 为高,计数器重新赋初值, GATE 变高,在下一个 CLK 下降沿计数重新开始。
计数期间送入新值,本周期继续进行,下一个周期按新值计数。
OUT3 2 1方式 3 时序图
CLK
CW N=4WR
3 2
GATE
4 4 1
![Page 167: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/167.jpg)
1s=1000ms 1ms=1000us 1us=1000ns 1018 艾 ( 可萨 ) E
1015 拍 ( 它 ) P 1012 太 (拉 ) T 109 吉 (咖 ) G 106 兆 M 103 千 k 10-3 毫 m 10-6 微 μ 10-9 纳 (诺 ) n 10-12 皮 ( 可 ) p 10-15 飞 (母托 ) f 10-18 阿 (托 ) a
![Page 168: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/168.jpg)
频率:物质在 1秒内完成周期性变化的次数叫做频率,常用 f表示。物理中频率的单位是赫兹( Hz ),简称赫,也常用千赫( kHz )或兆赫( MHz )或 GHz做单位。 1kHz=1000Hz , 1MHz=1000KHz 1GHz=1000MHz 。
频率 f 是周期 T 的倒数,即 f =1/ T 。 计数初值 N = f c l k / f o u t;即: N=TOUT/TCLK
例:计数器工作模式 3 ,计数器初值 15 ,时钟脉冲频率为 2MHz ,确定 OUT 端输出方波的特性。解: TCLK=1/2MHz=500ns;
TOUT=TCLK×N=500×15= 7500ns= 7.5 s
计数器初值 15 为奇数,输出方波高电平宽度: TC
LK × (N+1)/2=4s输出方波低电平宽度: TCLK ×(N-1)/2=3.5s
![Page 169: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/169.jpg)
82548254 工作方式工作方式方式 4 — 由软件触发的选通信号发生器
写入控制字后 OUT 为高电平,输入时间常数后,下一个时钟周期开始计数,计数器为 0 时,输出一个周期负脉冲,并停止现行操作。
GATE=1 允许计数, GATE=0禁止计数, GATE 不影响输出。
计数期间送入新的时间常数,则下一个时钟按新值重新计数
OUT3 2 1方式 4 时序图
CLK
CW N=3WR
GATE
0 FF FEFDFC
![Page 170: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/170.jpg)
方式 5—— 由硬件触发的选通信号发生器写入控制字后 OUT 变为高电平,输入时间常数后由 GATE 上升沿启动计数。计数为 0 时输出一个时钟的负脉冲,并停止现行操作。
计数过程中,若 GATE又来一个上升沿,则下一个时钟计数器重新赋值计数
计数过程中写入时间常数,当前周期不受影响,只有下一个 GATE 上升沿才启动新值计数
OUT3 2 1 0方式 5 时序图
CLK
CW N=3WR
FF FE 3 2
GATE
1 0
![Page 171: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/171.jpg)
方式 方式 0 0 与方式 与方式 4 4 的比较(软件控制)的比较(软件控制) 相同点都是软触发,无自动重装入能力写入控制字及初值后,若 GATE=H , CE开始减计数 当 CE = 0 时, OUT改变电平状态
不同点不同点 方式 方式 0 0 在计数期间 在计数期间 OUT = LOUT = L ,计数结束 ,计数结束 OUOU
T = HT = H
方式 方式 4 4 在计数期间在计数期间 OUT=HOUT=H ,计数结束,计数结束 OUT=OUT=负负脉冲脉冲
OUTOUT
OUTOUT
![Page 172: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/172.jpg)
方式 方式 1 1 与方式 与方式 5 5 的比较(硬件触发)的比较(硬件触发) 相同点
写入控制字及初值后,若 GATE 输入上升沿脉冲触发, CE开始减计数 , 当 CE = 0时 , OUT改变电平状态
不同点不同点 方式 方式 1 1 在计数期间 在计数期间 OUT = LOUT = L ,计数结束,计数结束 OUT = OUT =
HH
方式 方式 5 5 在计数期间在计数期间 OUT=HOUT=H ,计数结束,计数结束 OUT=OUT=负负脉冲脉冲
计数期间计数期间
GATEGATE
OUTOUT
计数期间计数期间
GATEGATE
OUTOUT
![Page 173: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/173.jpg)
方式 方式 2 2 与方式 与方式 3 3 的比较(波形输出)的比较(波形输出) 相同点均输出连续周期波形,预置初值可自动重装入 不同点方式 2 输出连续负脉冲周期波形方式 3 输出连续方波周期波形
方式 方式 33
方式方式 22
![Page 174: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/174.jpg)
方式 1 方式 4 方式 5
功能 都是单脉冲发生器
启动方式 硬件启动 软件启动 硬件启动
输出 负脉宽 =N TCLK 负脉宽 =TCLK
初值重装 在计数过程中( OUT=0期间) GATE 从 0→1
时初值重装
计数过程中( OUT=1期间) GATE 从 0 → 1 时初值重装
![Page 175: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/175.jpg)
方式 0 方式 2 方式 3
功能 计数结束 , 输出正跃变 脉冲发生器 方波发生器
启动方式 都是软件启动
输出 启动后延时 (N+1)TCLK
输出正跃变负脉宽 =TCLK
周期 =N T CLK
N=偶数 ,
输出 1:1
方波
初值重装 计数结束 , 初值自动重装
![Page 176: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/176.jpg)
6 种工作方式输出波形的对比
方式 0
方式 1
方式 2
方式 3
方式 4
方式 5
0
N 0
N 0/N1 1 0
N N/2N/2 0/N 0
N 0
N 0
软件启动
软件启动
软件启动
软件启动
硬件启动
硬件启动
N
![Page 177: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/177.jpg)
计数瞬时值和状态信息的读取 计数瞬时值和状态信息的读取 ⑴计数锁存命令计数过程中,读取某一瞬间的计数值。不允许破坏
计数的正常进行,而且要保证不能因在计数时读而出错。
读数分两步完成:1 :把计数工作单元 CE 的值锁存入 OL锁存器,
CE继续计数;2 :用输入指令读入 OL锁存器的内容。首先用输
出指令向控制寄存器的地址发“计数锁存命令”字来实现。
![Page 178: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/178.jpg)
“计数锁存命令”字格式如下:
其中:SCl 、 SC0 的 3 种组合 00 、 01 和 10 分别指向计数器 0 、1 和 2 ;D5 、 D4 位的 00 是计数锁存命令字的特征标志位;其余 4 位可为任意值。
D7 D6 D5 D4 D3 D2 D1 D0
SC1 SC0 0 0 X X X X
![Page 179: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/179.jpg)
例如 :下列 3条指令执行后,将把计数器 1 的 CE 内容锁存入 OL :
MOV DX , TIM+ 3 MOV AL , 01000000B OUT DX , AL若前面初始化时,置计数器 1 为先读 / 写低字节后读 / 写高字节方式,那么,完成了上述操作之后 , 要用下列两条 IN 指令读入锁存器 OL 的内容:
MOV DX , TIM+ 1 IN AL , DX MOV AH , AL IN AL , DX XCHG AH , AL 这时, AX 的内容就是发出计数锁存命令瞬间的计数值。
![Page 180: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/180.jpg)
⑵读回命令:向控制寄存器地址发读回命令 (Read-Back Command) 可以锁存计数值和状态信息,比计数锁存命令功能更强。
读回命令的格式如下:
D7D6= 11 是读回命令的特征标志。CNT2 、 CNT1 和 CNT0 分别对应计数器 2 、 1 和 0 ,将
指定该位对应的计数值和 / 或状态信息锁存待读。这3 位是互相独立的,可以同时 1 位、 2 位或 3 位为 1 ,意味着可以同时命令 1 个以上的计数器和 / 或状态信息锁存待读。
D7 D6 D5 D4 D3 D2 D1 D0
1 1 COUNT STATUS CNT2 CNT1 CNT0 0
![Page 181: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/181.jpg)
COUNT 位:“计数值锁存”命令标志位。该位为 0表示由 D3D2D1指明的计数器的计数值分别在对应的 OL 内锁存。
CPU 对相应的计数器执行输入指令不仅能读入锁存的值,还可对这个锁存器起到“解锁”的作用。
STATUS (D4) 位:对每个计数器的状态寄存器读状态,0 有效。读回命令还可用于对计数器状态信息的锁存。
D7 D6 D5 D4 D3 D2 D1 D0
1 1 COUNT STATUS CNT2 CNT1 CNT0 0
![Page 182: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/182.jpg)
状态信息经读回命令锁存后, CPU 对相应的计数器执行输入指令可以读回一个字节的状态信息,格式如下:
其中: D5~ D0位应与写入的方式控制字相同。D7:该计数器的 OUT 端的状态( 1 为高电平)。D6:指明置入 CR (计数寄存器)的初值是否已装入 CE (减法计数器)。如果 CR值已装入 CE ,则该位为 0 。
D7 D6 D5 D4 D3 D2 D1 D0
OUTPUT NULL COUNT RW1 RW0 M2 M1 M0 BCD
![Page 183: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/183.jpg)
允许在读回命令字中设置 D5和 D4位同时为 0 。这意味着计数值和状态信息都要读回。这时,计数值和状态信息都被锁存起来。
计数值的读入和状态字节的读入都用输入指令,而且 I/O 地址相同,都是对应的计数器地址。区别它们的方法是输入次序:第 1 次读入的一定是状态字节;接着的一条或两条输入指令将读入锁存的计数值。 (取决于置方式字时指定的是一个字节还是两个字节的读 / 写 )
![Page 184: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/184.jpg)
66条读回命令按次序发出的操作条读回命令按次序发出的操作 读回命令字 命令的功能 依次序操作结果11000010 锁存计数器 0 的计数值
和状态信息计数器 0 的计数值和状态信息被锁存
11100100 锁存计数器 1 的状态字节
计数器 1 的状态信息字节被锁存
11101100 锁存计数器 2 、 1 的状态字节
计数器 2 的状态字节被锁存,但计数器 1 的状态字节已在上条命令时被锁存,此条命令不起作用
11011000 锁存计数器 2 的计数值 计数器 2 的计数值被锁存
11000100 锁存计数器 1 的计数值和状态字节
计数器 1 的计数值被锁存,状态字节仍然是上次锁存的值
11100100 锁存计数器 1 的状态字节
这条命令不起作用
![Page 185: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/185.jpg)
82548254 的应用实例的应用实例8254 的初始化编程步骤 必须先进行初始化,先写入控制字,再写入计数初值。写入控制字
即: 指定计数器通道规定计数器工作方式规定计数器计数格式规定写计数器的方式(如是 16位计数,则先低字节,后高字节)
写入计数器初值 初值可以是 8位,一次写入 也可以是 16位,分二次写入
![Page 186: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/186.jpg)
例例 11 :设:设 82548254 的端口地址为:的端口地址为: 0F8H0F8H~~ 0FEH0FEH ,若用计,若用计数器数器 00工作在方式工作在方式 11 ,按二―十进制计数,计数值为,按二―十进制计数,计数值为 55080H080H ,进行初始化编程。,进行初始化编程。
控制字为:控制字为: 00110011B=33H00110011B=33H
初始化程序:初始化程序:MOV DX,0FEH MOV DX,0FEH
MOV ALMOV AL ,, 33H33H
OUT DXOUT DX ,, AL ;AL ; 写入控制字节写入控制字节
MOV DX,0F8HMOV DX,0F8H
MOV ALMOV AL ,, 80H80H
OUT DXOUT DX ,, ALAL
MOV ALMOV AL ,, 50H50H
OUT DXOUT DX ,, ALAL
![Page 187: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/187.jpg)
例 2 :某 8086 微机系统中, 8254 的三个计数器端口地址分别为 3F0H , 3F1H , 3F2H ,控制字寄存器端口地址为 3F3H ;要求通道 0 工作于方式 3 ,且计数初值n = 1234 则初始化程序为:
MOV AL , 00110111B ; 控制字:通道 0 ;先读写低字节后高字节;方式 3 ;
BCD 计数MOV DX , 3F3H ;控制端口OUT DX , AL ;送控制字MOV DX , 3F0H ;通道 0 口MOV AL , 34H ;计数值低字节OUT DX , AL ;写低字节MOV AL , 12H ;计数值高字节OUT DX , AL ;写高字节
![Page 188: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/188.jpg)
习题:设习题:设 82548254 的端口地址为:的端口地址为: 04H04H ~~ 0AH0AH ,若,若用计数器用计数器 22 工作在方式工作在方式 22 ,按二进制计数,计数,按二进制计数,计数值为值为 02F0H02F0H ,进行初始化编程。,进行初始化编程。
控制字为:控制字为: 10110100B=0B4H10110100B=0B4H
初始化程序:初始化程序:
MOV ALMOV AL ,, 0B4H0B4H
OUT 0AHOUT 0AH ,, ALAL
MOV ALMOV AL ,, 0F0H0F0H
OUT 08HOUT 08H ,, ALAL
MOV ALMOV AL ,, 02H02H
OUT 08HOUT 08H ,, ALAL
![Page 189: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/189.jpg)
读取读取 82548254 通道中的计数值通道中的计数值 82548254 可用控制命令来读取相应通道的计数值,由于计数可用控制命令来读取相应通道的计数值,由于计数值是值是 1616 位的,而读取的瞬时值,要分两次读取,所以在读取位的,而读取的瞬时值,要分两次读取,所以在读取计数值之前,要用锁存命令,将相应通道的计数值锁存在锁存计数值之前,要用锁存命令,将相应通道的计数值锁存在锁存器中,然后分两次读入,先读低字节,后读高字节。当控制字器中,然后分两次读入,先读低字节,后读高字节。当控制字中,中, DD55DD44=00=00 时,控制字的作用是将相应通道的计数值锁存时,控制字的作用是将相应通道的计数值锁存的命令,锁存计数值在读取完成之后,自动解锁。的命令,锁存计数值在读取完成之后,自动解锁。如要读通道如要读通道 11 的的 1616 位计数器,编程如下:地址位计数器,编程如下:地址 F8HF8H ~~ FEHFEH 。。
MOVMOV AL AL ,, 40H40H ;;OUTOUT 0FEH 0FEH ,, AL AL ;锁存计数值;锁存计数值ININ AL AL ,, 0FAH0FAHMOVMOV CL CL ,, AL AL ;低八位;低八位ININ AL AL ,, 0FAH0FAH ;;MOVMOV CH CH ,, AL AL ;高八位;高八位
![Page 190: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/190.jpg)
例例 33 :: CPUCPU 为为 80868086 ,用,用 82548254 的计数器的计数器 00 ,每隔,每隔 2ms2ms 输出一个输出一个负脉冲,设负脉冲,设 CLKCLK 为为 2MHZ2MHZ ,完成软件设计。,完成软件设计。时间常数的计算:已知时钟频率时间常数的计算:已知时钟频率 FF 及定时时间及定时时间 tt ,求计数初值,求计数初值 NN ::
设用方式设用方式 22 ,时间常数:,时间常数:
控制字:控制字: 00110011 0100――――0100――――二进制二进制端口地址:端口地址: CH0――00HCH0――00H ;控制端口——;控制端口—— 06H06H
tF
N 1
FtN
3
63
104
102102
N
![Page 191: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/191.jpg)
初始化编程:初始化编程: MOV ALMOV AL ,, 34H 34H ;; 00110100B00110100B
OUT 06HOUT 06H ,, ALAL
MOV AXMOV AX ,, 40004000
OUT 00HOUT 00H ,, AL AL ;先送低八位;先送低八位 MOV ALMOV AL ,, AHAH
OUT 00HOUT 00H ,, AL AL ;再送高八位;再送高八位
思考:若定时思考:若定时 20ms20ms (即输出(即输出 50HZ50HZ 的方波,设为的方波,设为工作方式工作方式 22 ),), CLKCLK 改为改为 4MHZ4MHZ ,, CPUCPU 为为 80808686 ,软硬件设计又该如何?,软硬件设计又该如何?
![Page 192: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/192.jpg)
例 4 :设定时器 0 、定时器 1 工作于方式 2 ,外部提供一个时钟 , 频率 f =2MHZ 。要求定时器 1每 5ms产生一个脉冲,定时器 0每 5s产生一个脉冲。
1). 一个定时器的最大定时时间: 65536/ ( 2*106) =0.032768 s=32.768ms
2). 将定时器 1 的 CLK1 接 2MHZ 时钟,计数初值:
3).将定时器 1 的 OUT1 端接到定时器 0 的 CLK0端 , 定时器 0 的计数初值 :
100001025 6111 msftn
100052005
200105
1
00
30
sfn
HZms
f
![Page 193: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/193.jpg)
![Page 194: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/194.jpg)
例 5 :利用 8254 对某一脉冲进行计数。原理如图。将计数器 0 设置为方式 3, 计数初值为十进制 5 ,开关 K作为 CLK0 时钟输入, OUT0 连接 IRQ 。8254初始化后,每按 5 次开关 K (即向 CLK0输入 5 个脉冲), OUT0 向 CPU 发出一次中断请求信号。中断服务程序将在屏幕上显示计数完毕的提示。
![Page 195: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/195.jpg)
BCDM0M1M2RL0RL1SC0SC1
D0D1D2D3D4D5D6D7
000: 方式 0001: 方式 1x10: 方式 2x11: 方式 3100: 方式 4101: 方式 5
00: 寄存器锁存 ,CPU 读01: 只读 / 写计数器低字节10: 只读 / 写计数器高字节11: 先读 / 写计数器低字节
后读 / 写计数器高字节
00: 选计数器 001: 选计数器 110: 选计数器 211: 无效
0: 二 进 制 计 数 , 初 值为 0000H-0FFFFH
1: BCD 计 数 , 初 值 为 0000-9999
![Page 196: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/196.jpg)
8254初始化编程:MOV DX , TIM+3
MOV AL , 00010110B ;设置计数器 0 为方式 3
OUT DX , AL
MOV DX , TIM
MOV AL , 00000101B ;设置计数初值为05
OUT DX , AL
![Page 197: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/197.jpg)
例 6 :设系统提供一个 10MHZ 的时钟信号,试用8254-2 的计数器 2 输出周期为 1秒的标准时钟。解:将计数器 2 设置为方式 2, 使其在 1秒钟内产生一个负脉冲。
![Page 198: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/198.jpg)
将计数器 2 设置为方式 2, 使其在 1秒钟内产生一个负脉冲。那么,
计数初值= fclk÷fout2=10000000÷1=10000000
此值大于 216,因此必须使用两个计数器级连,其中,第一个计数器为第二个计数器产生较低频的CLK 信号。先把计数器 0 设置为方式 3 ,为计数器 2 的 CLK2提供 5KHZ 时钟。
fclk÷fout0=10000000÷5000=2000
计数器 0 的初值是 2000 。fout0÷fout2=5000÷1=5000
计数器 2 的初值是 5000
![Page 199: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/199.jpg)
初始化程序如下:MOV DX , TIM+3MOV AL,00110111B ;设计数器 0 为方式 3 ,使用 16 位
BCD 码计数OUT DX , ALMOV AX , 2000HMOV DX , TIMOUT DX , AL ; 给计数器 0 送低位初值MOV AL , AHOUT DX , AL ; 给计数器 0 送高位初值MOV DX , TIM+3MOV AL , 10110101B ;设置计数器 2 为方式 2 , 16 位
BCD 码初值OUT DX , AL ; MOV AX , 5000H ; MOV DX , TIM+2OUT DX , AL ;给计数器 2 送低位初值MOV AL , AHOUT DX , AL ;给计数器 2 送高位初值
![Page 200: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/200.jpg)
8254 的初始化编程总结1. 对 8254 一个计数器的初始化编程步骤 :
向控制寄存器写入方式选择命令字 目的 : 选择一个计数器 , 并确定其工作方式 和计数值(计数初值)的读 / 写顺序。
向选择的计数器写入计数初值。 注意 : 如果方式选择命令字 D0=0, 则初值 应是二进制 , 否则初值应是 BCD 码数。
2. 当计数初值 ≤ 9999 时 , “初值”选为二进制或 BCD 码都可以; 当计数初值 > 9999 时 , “初值”只能选二进制。
![Page 201: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/201.jpg)
3. 程序中如何表示 BCD 码数 ?
设初值 =(1234)10
则 MOV AX, 1234H 是正确的写成 MOV AX, 1234 是错误的4. 方式选择命令 , 锁存命令 , 读出命令必须写入 控制口。5. 关于锁存命令,当程序员要了解计数器的当前计数值时 , 先向控制口写入锁存命令 , 然后从选择的计数器端口读取当前计数值。
6. 关于读出命令,读出命令也是锁存命令 , 如果在锁存计数值 的同时 , 也锁存状态 , 那么在随后对计数器读出时 , 先读出的是状态字 , 后读的是计数值。
![Page 202: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/202.jpg)
习题:设某 8254 计数器 1 工作于方式 0 ,按 BCD 方式计数,计数初值为 400 。计数器 0- 3 以及控制寄存器的端口地址依次为 80H-83H ,试写出 8254 的初始化程序。
![Page 203: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/203.jpg)
解1 、控制字:控制字为 01110001B ,写入控制寄存器,端口地址为 83H
2 、计数值:计数初值为 400, 由于采用 BCD 计数,故应按 BCD 码方式组成,即 0400H ,送入计数器 1 的数据端口,地址是 81H 。 16 位数送两次,先送低 8 位 00H ,后送高 8 位 04H 。
3 、初始化程序:MOV AL, 71H
OUT 83H,AL
MOV AL, 00H
OUT 81H, AL
MOV AL,04H
OUT 81H, AL
![Page 204: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/204.jpg)
习题:某 8088 系统采用 8254精确控制一个发光二极管闪亮,系统要求启动 8254 后使发光二极管点亮 2秒,熄灭 2秒,亮灭 50 次后停止闪动,系统工作结束。现有一个时钟脉冲源,频率为 2MHZ ,试说明各有关计数器的工作方式。
![Page 205: 第 2 章 总线与接口芯片](https://reader036.vdocuments.site/reader036/viewer/2022082316/568151c4550346895dbff958/html5/thumbnails/205.jpg)
解: 1 、计数器 0 :方式 2 , CLK0 接 2MHZ 信号源,输出 OUT0产生 250HZ (周期为 4MS )的脉冲序列。
2 、计数器 1 :方式 3 , CLK1 接 OUT0 的 250HZ脉冲信号,输出 OUT1产生周期为 4秒的方波,经过一个反向驱动器去控制一个发光二极管。
3 、计数器 2 :方式 0 ,输入 CLK2 接 OUT1 的周期为 4秒的方波,输出 OUT2 向 CPU产生中断