微机原理--输入输出方法及常用的接口电路

上传人:大米 文档编号:568243739 上传时间:2024-07-23 格式:PPT 页数:234 大小:6.25MB
返回 下载 相关 举报
微机原理--输入输出方法及常用的接口电路_第1页
第1页 / 共234页
微机原理--输入输出方法及常用的接口电路_第2页
第2页 / 共234页
微机原理--输入输出方法及常用的接口电路_第3页
第3页 / 共234页
微机原理--输入输出方法及常用的接口电路_第4页
第4页 / 共234页
微机原理--输入输出方法及常用的接口电路_第5页
第5页 / 共234页
点击查看更多>>
资源描述

《微机原理--输入输出方法及常用的接口电路》由会员分享,可在线阅读,更多相关《微机原理--输入输出方法及常用的接口电路(234页珍藏版)》请在金锄头文库上搜索。

1、第8章 输入/输出方法及常用的接口电路 第8章 输入/输出方法及常用的接口电路 8.1 概述概述 8.2 I/O端口的编址及基本输入端口的编址及基本输入/输出方法输出方法 8.3 8255A并行接口电路并行接口电路 8.4 可编程计数可编程计数/定时器定时器8253/8254 8.5 串行通信及串行通信及8251串行接口电路串行接口电路 8.6 DMA控制器控制器8237A 8.7 多功能多功能I/O接口电路接口电路82380 2021/6/41第8章 输入/输出方法及常用的接口电路 8.1 概 述 图8.1主机通过I/O接口与外设交换信息2021/6/42第8章 输入/输出方法及常用的接口电

2、路 为什么主机与外设交换信息要通过接口电路呢?这主要由于:(1)外部设备不能直接和CPU数据总线相连,要借助于接口电路使外设与总线隔离,起缓冲、暂存数据的作用,并协调主机和外设间数据传送速度不配的矛盾。因为在微机系统中,数据总线是各种设备以及存储器传送信息的公共总线。任何设备(包括存储器)都不允许长期占用数据总线,而仅允许被选中的设备在读/写周期中(RD或WR为低电平)享用数据总线。2021/6/43第8章 输入/输出方法及常用的接口电路 图8.2经接口电路传送数据(a)经接口输入数据;(b)经接口输出数据2021/6/44第8章 输入/输出方法及常用的接口电路 (2)接口电路为主机提供有关外

3、设的工作状态信息及传送主机送给外设的控制命令。如输出时,CPU将信息送到接口以备输出;输入时,输入设备将数据送到接口寄存,以备CPU来读取。这些均由接口发出相应的信号来告诉外设或CPU。这些信号主要有“准备好”、“忙”、“闲”等。2021/6/45第8章 输入/输出方法及常用的接口电路 (3)借助于接口电路对信息的传输形式进行变换。一般CPU在处理数据时均以并行的方式处理,例如Z80-CPU以8位一个字节为处理单位,但有的外设只能接受串行的,即一位一位传送的数据方式,此时就需要有一个接口来处理并行或串行数据的转换。在此应指出接口(Interface)和端口(Port)的区别。端口(简称口)这个

4、术语实际上指那些在接口电路中完成信息的传送,并可由编程人员寻址进行读写的寄存器。若干个口加上相应的控制电路而构成接口。所以,一个接口往往含有几个端口。CPU可通过输入/输出指令向这些端口取或存信息。端口主要有两类:一类为状态口和命令口。状态口主要用来检测外设的工作状态。CPU通过输入指令来检测某一外设的工作状态,以决定下一步的操作,通常称此为输入(设备)状态字。2021/6/46第8章 输入/输出方法及常用的接口电路 所以说状态字是描写外设所处状态的。CPU可通过输出指令向某一外设发出控制命令以控制相应的外设,通常称此为输出(设备)控制字。所以说控制字是控制外设实际操作的命令。控制字中每一位所

5、具有的状态代表了某种操作命令。例如“启动(或停止)电机转动”,“步进电机转向”,“改变某种频率”等。另一类为数据口,它传送的是数据信息,如数字、字符及某种特定的编码等。2021/6/47第8章 输入/输出方法及常用的接口电路 图8.3外设通过接口与系统的连接2021/6/48第8章 输入/输出方法及常用的接口电路 8.2 I/O端口的编址及基本输入端口的编址及基本输入/输出方法输出方法 8.2.1 I/O端口的编址方法端口的编址方法 1. I/O端口的统一编址方式端口的统一编址方式统一编址是将I/O端口看成是存储器空间的一个组成部分,按照存储器单元的编址方法统一编排地址号。这样,CPU对I/O

6、端口的输入/输出操作如同对存储单元的读/写操作一样。对存储器的各种寻址方式也同样适用于对I/O端口。所有访问内存的指令同样都可用于访问I/O端口。统一编址的最大优点是无需专门的I/O指令,从而简化了指令系统的设计,并能省去相应I/O操作的对外引线。而且CPU可直接对I/O数据进行算术和逻辑运算。统一编址的不足之处在于I/O端口地址占用了一部分存储器空间,另外访内指令长度一般比专用的I/O指令长,从而取指周期较长,又多占了指令字节。2021/6/49第8章 输入/输出方法及常用的接口电路 2. I/O端口的独立编址方式端口的独立编址方式独立的I/O端口编址方式的特点是有一个与存储器地址空间完全独

7、立的I/O地址空间。在这个空间内,每一个I/O设备的端口有一个唯一对应的I/O端口地址。这种独立的编址方式要求CPU有专用的I/O指令(IN及OUT指令),用于CPU与I/O端口之间的数据传输。Intel公司研制开发的CPU产品通常都设有IN、OUT指令。因此,80x86CPU组成的系统一般都采用独立编址方式。如8086/8088CPU采用地址总线的低16位作为I/O端口的寻址地址线。因而IN、OUT指令可寻址216=65536(64K)个8位地址号的I/O端口,或32K个16位的I/O端口。80386DX的地址总线是32位,则就有直接访问4GB(232字节)的存储器空间或I/O空间的能力。8

8、0386以上的CPUI/O端口的地址号可以是双字(32位),指令中端口地址中的字传送到AX,端口地址+2中的高字则传送至EAX的高16位中。2021/6/410第8章 输入/输出方法及常用的接口电路 8086/8088CPU组成系统时有最大、最小两种工作方式。在不同的方式下,8086/8088CPU对I/O端口存取操作的控制命令有所不同。最小方式对I/O端口的控制操作。在最小方式下,CPU的读命令(RD)和写命令(WR)对存储器和I/O端口的访问是公用的。当存储器地址空间和I/O端口地址号两者不重叠时,则仅用RD和WR信号就能区分CPU的访内及访外操作。如果两者的地址号发生重叠时,除了RD、W

9、R信号外,还应与M/IO信号相配合来区分访内访外操作。当M/IO为低电平时为访外操作。2021/6/411第8章 输入/输出方法及常用的接口电路 最大方式对I/O端口的控制操作。在最大方式下,CPU是通过总线控制器8288分别产生存储器读/写命令和I/O读/写命令代替公用的M/IO信号。这样,对于独立编址的I/O端口而言,CPU只需通过总线控制器发出IORC或IOWC命令就可实现对I/O端口的读/写操作。大多数8位接口电路芯片中都有几个端口,通常各端口的地址号是连续排列的,则其中有奇地址也有偶地址。当8位接口芯片与8086CPU16位数据总线相连时,原则上讲,它既可以和数据总线的低8位相连,也

10、可以和数据总线的高8位相连。但应注意低8位数据总线只能传送I/O为偶地址的端口数据,而高8位数据总线只能传送I/O为奇地址的端口数据。2021/6/412第8章 输入/输出方法及常用的接口电路 I/O端口仅使用偶地址。端口仅使用偶地址。 图8.4只使用偶地址的I/O接口地址线连接方法2021/6/413第8章 输入/输出方法及常用的接口电路 I/O端口使用连续的地址。图8.58位接口与16位数据总线的连接方法2021/6/414第8章 输入/输出方法及常用的接口电路 8.2.2 I/O端口地址译码端口地址译码 1. 固定式端口地址译码固定式端口地址译码所谓固定式端口地址译码是指接口中用到的端口

11、地址不能更改。目前,各种I/O功能接口卡中大部分都采用固定地址译码。当接口芯片仅有一个端口地址时,则可采用门电路组成地址译码电路。当接口芯片中有多个端口,通常各端口的地址号是连续排列的,则采用译码器译码比较方便。译码器的型号很多,最常用的有3-8译码器,74LS138,8205;4-16译码器74LS154;双2-4译码器74LS139和74LS155等。用户可根据需要选用合适的译码器。2021/6/415第8章 输入/输出方法及常用的接口电路 表表 8.1 几种常用的通用译码器输入输出对应关系列表几种常用的通用译码器输入输出对应关系列表 2021/6/416第8章 输入/输出方法及常用的接口

12、电路 图8.6IMB-PC系统板I/O地址译码电路2021/6/417第8章 输入/输出方法及常用的接口电路 2. 开关式可选端口地址译码开关式可选端口地址译码 1)使用拨动开关或跨接开关在地址译码的基础上,通过线路板上的微型拨动开关DIP或跨接开关“跳线”连接。从而使得某个特定的I/O端口(或存储器)在一组线地址中选定当前所使用的译码地址,增加地址译码的灵活性。2021/6/418第8章 输入/输出方法及常用的接口电路 图8.7使用跳线开关选择I/O口译码地址2021/6/419第8章 输入/输出方法及常用的接口电路 2)使用比较器+地址开关译码图8.8由比较器组成的可选式译码电路2021/

13、6/420第8章 输入/输出方法及常用的接口电路 图8.8所示为由比较器74LS688与3-8译码器组成的I/O芯片地址可选的译码电路。8位比较器74LS688对两组8位的输入端P0P7和Q0Q7信号进行比较。其比较规则为:当P0P7Q0Q7时,P=1,输出高电平;当P0P7=Q0Q7时,P=0,输出低电平。2021/6/421第8章 输入/输出方法及常用的接口电路 应用时,可将P0P7与地址线及控制线相连,Q0Q7连接地址开关,而将比较器输出端P接到74LS138的控制端,如G2A上。根据比较器的特性,当输入端P0P7的地址与输入端Q0Q7的开关状态一致时,输出为低电平,打开译码器74LS1

14、38允许进行译码。因此,使用时可预置微型拨动开关DIP为某一值,得到一组所要求的口地址。图中让IOW和IOR信号参加译码,可分别产生8个读或写的端口地址。从图中连线可以看出,仅当A9=1(因Q6接+5V),AEN=0(因Q7接地)才使译码有效。2021/6/422第8章 输入/输出方法及常用的接口电路 8.2.3 基本的输入基本的输入/输出方法输出方法在微机系统中,微机与外设之间的信息传送,实际上是CPU与接口之间的信息传送。传送的方法,一般可分为3种方式:(1)程序控制的输入/输出方式。(2)程序中断的输入/输出方式。(3)直接存储器存取(DMA)方式。传送的方式不同,CPU对外设的控制方式

15、也不同,从而使接口电路的结构及功能也不同,CPU与外设接口的连接方法也不同。在微机与外设之间的信息传送是接口设计中极为重要的问题。2021/6/423第8章 输入/输出方法及常用的接口电路 1. 程序控制的输入程序控制的输入/输出输出程序控制的输入/输出方式是指在程序的编制中利用I/O指令来完成CPU与接口间交换信息的一种方式。何时进行这种信息传送是事先知道的,所以能把I/O指令插入到程序中所需要的位置。根据外设性质的不同,这种传送方式又可分为无条件传送及有条件传送两种。(1)无条件传送。当程序执行到I/O指令时,无条件地立即执行I/O指令相应的操作,如图8.9所示。2021/6/424第8章

16、 输入/输出方法及常用的接口电路 图8.9无条件数据传送2021/6/425第8章 输入/输出方法及常用的接口电路 (2)有条件传送。这种传送方式如图8.10所示。CPU在传送数据之前应检查外设是否已作好收发数据的准备(Ready)工作,若设备已“准备就绪”,则可接着进行数据传送。为用这种方式传送数据,一般要用3条有如下功能的指令来完成。将描述外设工作状态的信息(如“准备好”)状态字读入CPU相应的寄存器中。检测相应的状态位,以检查外部设备收发数据的准备工作是否“准备就绪”。若外部设备没有“准备就绪”,则重复执行、步骤,等待“准备就绪”;若外设“准备就绪”,则可执行预定的数据传送。2021/6

17、/426第8章 输入/输出方法及常用的接口电路 图8.10有条件数据传送2021/6/427第8章 输入/输出方法及常用的接口电路 2. 程序中断的输入程序中断的输入/输出方式输出方式 程序控制的输入/输出方法是由CPU来查询外设的状态,CPU处于主动的地位;外设处于被动的地位;而程序中断的输入/输出则是外设处于主动地位,CPU处于被动地位。只有当外设要传送数据时才向CPU发出中断请求信号。实时性比程序控制的输入/输出要好得多。但它仍有缺点,主要是:为了能接受中断的请求信号,CPU内部要有一些线路来控制。利用中断输入/输出,每传送一次数据就要中断一次CPU。CPU响应中断后,每次都要执行“中断

18、处理程序”,而且在其中都要保护现场、恢复现场,这相当麻烦,浪费了很多不必要的CPU时间。故此种传送方式一般较适合于传送少量的输入/输出数据。对于大量的输入/输出数据可采用高速的直接存储器存取方式DMA。2021/6/428第8章 输入/输出方法及常用的接口电路 3. 直接存储器存取方式直接存储器存取方式(DMA) 图8.11典型的DMA传送流程图2021/6/429第8章 输入/输出方法及常用的接口电路 实现DMA传送的基本操作如下:外设可通过DMA控制器向CPU发出DMA请求;CPU响应DMA请求,把总线控制权交给DMA控制器,使系统转变为DMA工作方式;由DMA控制器发出I/O数据的存储地

19、址,并决定传送数据块的长度;执行DMA传送;DMA操作结束,并将控制权交还给CPU。2021/6/430第8章 输入/输出方法及常用的接口电路 8.3 8255A并行接口电路并行接口电路 8.3.1 8255A的结构与功能的结构与功能 图8.128255A内部结构框图及引脚排列(a)内部结构图;(b)引脚图2021/6/431第8章 输入/输出方法及常用的接口电路 1. 3 个并行输入个并行输入/输出端口输出端口(A口、口、 B口、口、 C口口)3个端口的功能全部由程序设定,每个端口都有自己的功能特点。A口、B口通常可当作独立的I/O口使用;C口也可以用作一般的I/O端口,但当A口、B口作为应

20、答式(选通式)I/O口使用时,它分为2个4位端口:A组C口(或上C口)和B组C口(或下C口),分别用来作为A口、B口应答式I/O工作时,提供输出控制信息及输入状态信息之用。各端口的功能如表8.2所示。2021/6/432第8章 输入/输出方法及常用的接口电路 表表 8.2 8255A端口功能表端口功能表 2021/6/433第8章 输入/输出方法及常用的接口电路 2. 读读/写控制逻辑写控制逻辑读/写控制逻辑的功能用于管理数据、控制字或状态字的传送。与此部分有关的信号为:片选信号CS和来自地址总线信息(A1、A0)以及有关控制信号,如RD、WR、RESET。其中:A1、A0:端口选择信号。82

21、55A内部共有4个端口:3个数据端口和1个控制端口。规定A1A0为00、01、10和11时,分别选中端口A、B、C和控制端口。A1A0和RD、WR、CS信号相配合可对各端口实现输入/输出操作,其功能见表8.3。当与8086系统16位数据总线的低8位(D7D0)相连时,8255A的A0、A1线分别与CPU的A1、A2地址线相连,而地址总线A0设置为“0”,从而8255A的端口地址为偶地址。RESET:复位信号,高电平有效。有效时将控制字寄存器清零,所有的端口均被置成输入方式。2021/6/434第8章 输入/输出方法及常用的接口电路 表表 8.3 8255A端口选择及操作功能表端口选择及操作功能

22、表 2021/6/435第8章 输入/输出方法及常用的接口电路 3. A组和组和B组控制电路组控制电路这两组接受来自CPU的读/写控制逻辑部分的信号和CPU发出的控制字,然后分别决定各端口的功能。A组控制电路控制A口及A组C口(PC7PC4),B组控制电路控制B口及B组C口(PC3PC0)。还可根据控制字的要求,对端口C的某位实现“置0”及“置1”的位操作。2021/6/436第8章 输入/输出方法及常用的接口电路 4. 数据总线缓冲器数据总线缓冲器这是一个双向三态的8位缓冲器,用于和系统的数据总线D7D0相连。输入输出的数据以及CPU发出的控制字及读入的状态字都是通过此缓冲器传送的。在808

23、6系统中,采用16位数据总线,通常8255A的D7D0是接于16位数据总线的低8位上。2021/6/437第8章 输入/输出方法及常用的接口电路 8.3.2 工作方式的选择及其功能工作方式的选择及其功能8255A有3种基本工作方式,而且对C口各位又可以进行按位操作。这些都由CPU输出到8255A来控制。8255A的控制字分为两种:一种是各端口的“工作方式选择控制字”。它可以使8255A的三个端口工作于不同的工作方式。方式选择控制字总是将三个端口分为两组来设定工作方式,即A口和C口的高4位(A组C口)作为一组,端口B和C口的低4位(B组C口)作为另一组。另一种控制字是“端口C按位置1/置0控制字

24、”。它可以使C口中的任何一位进行置“1”或置“0”操作。2021/6/438第8章 输入/输出方法及常用的接口电路 图8.138255A两种工作方式控制字格式(a)工作方式选择控制字;2021/6/439第8章 输入/输出方法及常用的接口电路 图8.138255A两种工作方式控制字格式(b)置位/复位控制字2021/6/440第8章 输入/输出方法及常用的接口电路 假设我们要求8255A的各个端口工作于如下方式:A口方式0输出;B口方式0输入;A组C口(PC4PC7)方式0输出;B组C口(PC0PC3)方 式 0输 入 , 则 相 应 的 方 式 选 择 控 制 字 为10000011B(83

25、H)。设8255A控制端口的地址为D6H,则在8086系统中,对8255A的初始化程序为MOVAL,83H;将控制字送入AL。OUT0D6H,AL;控制字写入到指定的控制端口中。2021/6/441第8章 输入/输出方法及常用的接口电路 对端口C的置位/复位功能主要用于通过C口某位输出高/低电平控制信号。当要通过置1/置0控制字对C口PC6位实现置0操作时,控制字为00001100B(0CH)。控制字的D0位用于区分是置1还是置0操作,但究竟对C口的哪一位进行相应操作则由控制字中的D3、D2、D1决定。现为PC6位,则对应为110代码。此时,对PC6置0操作的初始化程序为MOVAL,0CH;对

26、PC6位实现置0操作。OUT0D6H,AL2021/6/442第8章 输入/输出方法及常用的接口电路 1. 工作方式工作方式0方式0也叫基本输入/输出方式。它适用于无需应答(握手)信号的简单的无条件输入/输出数据的场合,即输入/输出数据处于准备好状态。这时CPU可以随时从端口中写入或读取数据。在这种方式下,A口、B口可以通过由CPU对8255A相应的方式选择控制字,规定为输入口或输出口;端口C也同样由方式选择控制字分别规定A组C口、B组C口为输入口或输出口。2021/6/443第8章 输入/输出方法及常用的接口电路 2. 工作方式工作方式1方式1也称为选通型(应答式)输入/输出方式。和方式0相

27、比,它最主要的特点是当A口、B口工作于方式1时,要利用A组C口、B组C口的端线作为A口、B口选通型工作时提供所需的选通信号或提供有关的状态信号之用。现分输入及输出两种情况说明。(1)方式1输入。当A口、B口工作于方式1输入时,端口C控制信号的定义如图8.14(a)所示。图中还给出了相应的方式选择控制字格式。C口所提供的控制信号说明如下:2021/6/444第8章 输入/输出方法及常用的接口电路 图8.148255A工作方式1及时序图(a)方式1输入;(b)方式1输出2021/6/445第8章 输入/输出方法及常用的接口电路 图8.148255A工作方式1及时序图(a)方式1输入;(b)方式1输

28、出2021/6/446第8章 输入/输出方法及常用的接口电路 3. 工作方式工作方式2 图8.158255A工作方式2及时序图后续2021/6/447第8章 输入/输出方法及常用的接口电路 图8.158255A工作方式2及时序图2021/6/448第8章 输入/输出方法及常用的接口电路 4. 8255A的状态字格式的状态字格式 图8.16几种状态字格式(a)、(b)方式1输入、输出状态字格式;(c)、(d)A组为方式2,B组为方式1的输入、输出状态字格式2021/6/449第8章 输入/输出方法及常用的接口电路 图8.16几种状态字格式(a)、(b)方式1输入、输出状态字格式;(c)、(d)A

29、组为方式2,B组为方式1的输入、输出状态字格式2021/6/450第8章 输入/输出方法及常用的接口电路 8.3.3 8255A应用举例应用举例例例 8.1利用8255A作为输出设备打印机的接口。其连接方法如图8.17(a)所示。当主机需要打印输出时,先测试打印机忙(Busy)信号。若打印机处于忙状态(如正在处理一个字符或正在打印一行字符),则Busy为高电平“1”,反之,则Busy为低电平“0”。当Busy=0时,则CPU可通过8255A向打印机输出一个字符,此时还需经PC6输出一个负脉冲选通信号,输出至打印机的STB端,用此负脉冲(宽度1s)将PA0PA7上的字符信息打入锁存于打印机输入缓

30、冲器中,由打印机进行处理。同时,打印机应送出Busy=1信号,表示打印机处于忙状态。一旦Busy=0,则表示打印机处理完毕,又可以接收一个新的字符数据。2021/6/451第8章 输入/输出方法及常用的接口电路 图8.178255A用作打印机接口及打印机时序(a)8255A与打印机的连接;(b)打印机时序2021/6/452第8章 输入/输出方法及常用的接口电路 为此,8255A端口A的8条并行数据线PA0PA7作为数据传送通路,A口应工作于方式0输出,端口B不用。端口C也工作于方式0,PC2作为Busy信号输入端,所以C口PC3PC0应设定为输入方式;PC6作为STB选通信号输出端,故PC7

31、PC4应设定为输出方式。现根据图8.17中8255A的寻址信号,8255A的端口地址为:端口A:0380H;端口B:0381H;端口C:0382H;控制寄存器端口:0383H。8255A接口的初始化及控制程序编制如下:2021/6/453第8章 输入/输出方法及常用的接口电路 ;8255初始化程序BEGIN:MOVAL,10000001B;送工作方式选择控制字至控制寄存器中。A、B、C口均为工作方式0。A口、B口为输出方式。PC4PC7为输出,;PC0PC3为输入。MOVDX,0383HOUTDX,ALMOVAL,00001101B;送C口置1/置0控制字,置PC6=1。OUTDX,AL;使S

32、TB初始状态为高电平。2021/6/454第8章 输入/输出方法及常用的接口电路 ;下面为控制程序,设欲打印的字符已存于CL中,经8255A的A口输出至打印机。CONP:MOVDX,0382H;从C口检测Busy=0否,若等于1,则等待;等于0则可送打印字符。LPST:INAL,DXH;读入C口值。ANDAL,04H;保留PC2(Busy)状态。JNZLPST;若Busy=1,则等待,等于0则向下执行。MOVAL,CL;将(CL)字符送A口。MOVDX,0380HOUTDX,ALMOVAL,0CH;送C口置1/置0控制字,置PC6=0,即使STB为低电平。2021/6/455第8章 输入/输出

33、方法及常用的接口电路 MOVDX,0383HOUTDX,ALMOVCX,XXH;为使STB宽度1s,送延时程序。EDLAY:DECCXJNZDELAYMOVAL,0DH;再使STB为高电平。;地址指向控制口。OUTDX,AL;向下执行后续程序。2021/6/456第8章 输入/输出方法及常用的接口电路 例例 8.2 利用8255A实现与10位A/D转换器和10位D/A转换器的接口。图8.18为8255A与A/D、D/A的接口相连方法。图中10位A/D变换由START输入一个正脉冲启动,开始将UA变换为数字量,BUSY变高。当A/D这次变换结束,BUSY变低告之CPU可从A/D变换器的D0D9端

34、上获得稳定的数字量。D/A变换器是由STB负脉冲将加在D0D9上的10位数字量锁存于D/A变换器内部,并且将其变换成模拟电压输出。2021/6/457第8章 输入/输出方法及常用的接口电路 图8.188255A与A/D、D/A转换器的接口2021/6/458第8章 输入/输出方法及常用的接口电路 为了实现8255A与这两个芯片如图所示的连接,应将8255的A组和B组均初始化工作在方式0之下。而且A口和C口的高4位初始化为输入;B口和C口的低4位初始化为输出。只有这样才能满足如图连接上的要求。这时的方式控制字应为:10011000B,即98H。故为了启动A/D变换,应从C口的PC2送出一正脉冲,

35、这可利用位操作控制字来完成。初始化时应先将PC2输出置为0。当要启动A/D变换时,可选送00000101B控制字到控制寄存器,置PC2=1;再对C口送00000100B置PC2=0,实现对A/D的启动。以同样的原理,D/A转换在初始化时将PC3输出为高,利用位操作字同样可以形成D/A变换器的负锁存脉冲。2021/6/459第8章 输入/输出方法及常用的接口电路 若8255A与CPU系统的地址信息连接仍同图8.17所示,则对8255A的初始化编程如下:MOVDX,0383H;送方式选择控制字到8255控制寄存器。MOVAL,98HOUTDX,ALMOVAL,00000100B;使PC2输出初始时

36、为低电平。OUTDX,AL2021/6/460第8章 输入/输出方法及常用的接口电路 在初始化8255A之后,若要启动A/D变换一次,并将变换的10位数字量放在DX的低10位中,其高6位应为0,其程序可以如下编写:MOVDX,0383HMOVAL,00000101B;PC2=1,使START为高电平,启动A/D转换。OUTDX,ALMOVAL,00000100BOUTDX,AL;置PC2=0,使START为低。DECDX;(DX)=0382,指向C口。2021/6/461第8章 输入/输出方法及常用的接口电路 WAIT:INAL,DX;等待A/D转换结束(PC4=0)。ANDAL,20HJNZ

37、WAITINAL,DX;由C口读取A/D转换的D9、D8位。ANDAL,0C0HMOVCL,AL;D9、D8位值暂存CL的D7、D6中。DECDX;(DX)=0380H,指向A口。DECDXINAL,DX;由A口读取D7D0位转换值。MOVAL,AL;D7D0位值存DL中。ROLCL,1;CL中D7、D6值移至D1、D0位中完成10位A/D转换值;的装配,存DX中。ROLCL,1MOVDH,CL2021/6/462第8章 输入/输出方法及常用的接口电路 在完成上述指令时,10位A/D变换器的数字量就存放在DX中。同时,A/D变换器处于就绪状态,可以接收下一次变换的启动信号。至于D/A变换器,情

38、况就更简单一些。首先将要变换的10位数字量写入8255A的B口和C口的PC0、PC1,C口的两位应为数字量的高二位,B口的8位为数字量的低8位。然后,利用位操作控制字产生一个负的STB锁存脉冲就可以了,程序从略,读者可以自己完成此程序的编写。2021/6/463第8章 输入/输出方法及常用的接口电路 8.4 可编程计数可编程计数/定时器定时器8253/8254 8.4.1 8253的组成与功能的组成与功能 图8.198253/8254内部结构框图及引脚图(a)结构框图;(b)引脚图2021/6/464第8章 输入/输出方法及常用的接口电路 1. 3 个独立的个独立的16位计数器位计数器 图8.

39、208253/8254计数器内部逻辑框图2021/6/465第8章 输入/输出方法及常用的接口电路 2. 控制命令寄存器控制命令寄存器此寄存器用来保存来自CPU送入的控制字。每个计数器都有一个控制命令寄存器,用于保存该计数器的控制信息。控制字将决定计数器的工作方式、计数形式及输出方式,亦能决定应如何装入计数器初值。8253的3个控制寄存器只占用一个地址号,而靠控制字中最高二位来指定当前的控制字是发给哪个计数器的。控制寄存器只能写入,不能读出。2021/6/466第8章 输入/输出方法及常用的接口电路 3. 读读/写逻辑写逻辑读/写逻辑的任务是接收来自CPU的控制信号,完成对8253各计数寄存器

40、的读/写操作。这些控制信号包括读信号RD、写信号WR、片选信号和片内寄存器寻址信号A0、A1。2021/6/467第8章 输入/输出方法及常用的接口电路 4. 数据总线缓冲器数据总线缓冲器这是一个双向、三态8位缓冲器。它用于8253和系统数据总线连接。CPU通过数据总线缓冲器将控制命令字和计数值写入8253计数器,或者从8253计数器中读取当前计数值。8253的8位数据线D0D7通常与系统数据总线D0D7相连。8253共占用4个I/O地址。当A1A0=00时,为计数器0中的CR和OL寄存器的共用地址。同时,当A1A0=01和10时,分别为计数器1和2的CR和OL的共用地址。当A1A0=11时,

41、是3个计数器内的3个控制寄存器的共用的地址号。但CPU给哪一个计数器送控制字,这由控制字格式中最高两位(计数器选择位)SC1、SC0的编码来决定。2021/6/468第8章 输入/输出方法及常用的接口电路 表表 8.4 8253端口的地址分配端口的地址分配 2021/6/469第8章 输入/输出方法及常用的接口电路 8.4.2 8253的控制字、的控制字、 读读/写操作和初始化编程写操作和初始化编程1. 8253的控制字格式的控制字格式 图8.218253控制字格式2021/6/470第8章 输入/输出方法及常用的接口电路 2. 8253的读的读/写操作写操作(1)读操作。所谓读操作是指读出某

42、计数器的计数值至CPU中。有两种读数方法。先使计数器停止计数(在GATE端加低电平或关闭CLK脉冲):根据送入的控制字中RL1、RL0的状态,用一条或两条输入IN指令读CE的内容,通常第一次读低字节(LSB),第二次读出高字节。实际上,CPU是通过输出锁存器OL中读出的,因为在计数过程中OL的内容是跟随CE内容变化的。此时由于CE不再计数,故可稳定地读出OL(即CE)的内容。2021/6/471第8章 输入/输出方法及常用的接口电路 在计数过程中不影响CE的计数而读取计数值:这称为“飞读”方法。为达此目的,应先对8253写入一个具有锁存功能的控制字,即D5D4位(RL1、RL0)应取00,而其

43、余位不变。这样就可将当前的CE内容锁存入OL中,然后再用两条输入指令将OL中的内容取到CPU中,从而实现“飞读”。当CPU读取了计数值后,或对计数器重新初始编程后8253会自动解除锁存状态,OL中的值又随计数器CE值变化。2021/6/472第8章 输入/输出方法及常用的接口电路 (2)写操作。所谓写操作是指CPU对8253写入控制字或写入计数初值。8253中3个计数器的控制寄存器地址号是共用的,并由控制字中D7D6位(SC1、SC0)的状态来确定是哪一个计数器的控制字,从而计数初值会分别写入各对应的端口计数器CR中。8253投入工作之前,CPU要对它进行初始化编程。初始化编程的步骤为:写入计

44、数器的控制字,规定其工作方式及相应功能;2021/6/473第8章 输入/输出方法及常用的接口电路 写入计数初值。当计数初值为8位,则控制字中RL1,RL0应取01,只写入CR的低8位,CR的高8位会自动置0;若是16位计数,而低8位是0,则应取RL1、RL0为10,只写入高8位,低8位会自动置0。若是16位的计数初值,则LR1,LR0=11,应分两次写入初值,先写低8位,再写入高8位。由于计数器采用递减方式计数,因此如果计数初值为0000H,则是最大的计数初值。若选择0计数器,工作在方式3,计数初值为2354H,十进制计数方式;或选择1计数器,工作在方式2,计数初值为18H,二进制计数方式。

45、并设8253端口地址为4043H。2021/6/474第8章 输入/输出方法及常用的接口电路 则根据上述各计数器的功能,其初始化编程如下:;对0计数器初始化编程MOVAL,37H;对0计数器送控制字。OUT43H,ALMOVAL,54H;送初值的低8位。OUT40H,ALMOVAL,23H;送初值的高8位。OUT40H,AL2021/6/475第8章 输入/输出方法及常用的接口电路 ;对1计数器初始化编程。MOVAL,01010100B;对1计数器送控制字。OUT43H,ALMOVAL,18H;计数初值送低8位。OUT41H,AL当采用“飞读”的方法读取1计数器的计数值时,可采用如下程序片段:

46、MOVAL,01000100B;对1计数器送锁存控制字。OUT43H,ALINAL,41H;读低8位。MOVCL,AL;读取的计数值存于CL中。当计数值为16位时,则“飞读”时还应读取高8位锁存器中的计数值。2021/6/476第8章 输入/输出方法及常用的接口电路 8.5.3 8253的工作的工作方式及其时序图方式及其时序图 1.方式方式0计数结束计数结束 产生中断方式产生中断方式 图8.22方式0时序波形图2021/6/477第8章 输入/输出方法及常用的接口电路 说明:WR有效,表示CPU执行OUT指令,写入控制字CW或计数初值。LSB表示写入到CR低位字节内容。OUT波形下面的数字表示

47、计数单元CE的内容,N代表不确定的值。N后面的上下两行数字,上行表示CE的高8位内容,下行为低8位内容。数之间的短垂线表示此时刻(CLK下降沿)发生数值变化。门控信号GATE的上升沿有效。即每出现一次上升沿才意味着有一个触发信号,与上升沿之后的高电平持续时间长短无关。8253利用CLK脉冲的上升沿瞬间检测GATE端的电平,此瞬间是什么电平就确认此时为什么电平。2021/6/478第8章 输入/输出方法及常用的接口电路 (1) GATE为高电平,由WR启动计数。图中设控制字CW=10H,置入CR的计数值为0004H(仅写入到低位字节,LSB=4)。当写入控制字后,OUT输出变为低电平。置入CR初

48、值后,利用第1个CLK下降沿将(CR)送至CE中,再经过4个CLK下降沿,(CE)减1到0,计数结束,OUT变为高电平并一直保持到重新写入控制字或重新写入新的计数值为止。图中的说明也适用于其它工作方式。2021/6/479第8章 输入/输出方法及常用的接口电路 (2)在计数过程中,由门控信号GATE控制是否暂停计数。当GATE由高电平变为低电平期间暂停计数,CE内容不变。当GATE再变高电平后就接着计数。(3)在计数过程中改变计数值。在计数过程中,若计数值为8位计数,则在写入新的计数值后,计数器将按新的计数值重新开始计数。如果是16位计数,则在写入第一个字节后,计数器停止计数。在写入第二个字节

49、后计数器按照新的数值开始计数。2021/6/480第8章 输入/输出方法及常用的接口电路 2. 方式方式1可编程可编程 单次脉冲方式单次脉冲方式 图8.23方式1时序波形图2021/6/481第8章 输入/输出方法及常用的接口电路 3. 方式方式2分频分频 工作方式工作方式 图8.24方式2时序波形图2021/6/482第8章 输入/输出方法及常用的接口电路 4. 方式方式3方波发生器方波发生器 图8.25方式3时序波形图2021/6/483第8章 输入/输出方法及常用的接口电路 5. 方式方式4软件软件 触发选通方式触发选通方式 图8.26方式4时序波形图2021/6/484第8章 输入/输

50、出方法及常用的接口电路 6. 方式方式5硬件硬件 触发选通方式触发选通方式 图8.27方式5时序波形图2021/6/485第8章 输入/输出方法及常用的接口电路 表表 8.5 GATE信号功能表信号功能表 2021/6/486第8章 输入/输出方法及常用的接口电路 8.5.4 8253与系统的连接应用举例与系统的连接应用举例 图8.288253与8088总线的连接2021/6/487第8章 输入/输出方法及常用的接口电路 图8.28示出了8253用作方波发生器与8088总线的接口方法。图中仅用了A7A2作为8253片选地址线,产生片选信号Y0与8253的CS端相连。CS信号与A1、A0地址线相

51、配合决定了0、1、2计数器及控制寄存器的地址号分别为40H、41H、42H、43H。要求2计数器用作方波发生器产生40kHz方波输出。已知CLK2时钟端输入信号频率为2MHz。根据上述要求2计数器应设置成方式3工作状态,按双字节传送的50分频计数值应为0032H。此时,2计数器的初始化程序如下:2021/6/488第8章 输入/输出方法及常用的接口电路 MOVAL,10110110B;对2计数器送控制字。OUT43H,ALMOVAL,32H;对送50分频计数值0032H的低8位。OUT42H,ALXORAL,AL;送高8位值为00H。OUT42H,AL在实际应用中,常需要对脉冲的周期、相位、脉

52、冲的宽度进行测量,这时需要一些标准信号的输入,这些都可以通过对8253的控制来完成。2021/6/489第8章 输入/输出方法及常用的接口电路 图8.298253在系统板上的连接2021/6/490第8章 输入/输出方法及常用的接口电路 计数器0用作系统的定时,为系统的电子钟提供一个恒定的时间基准。计数器0的输出OUT0与8259中断控制器的IQR0相连,作为最高级别的可屏蔽0级中断。系统BIOS初始化编程设定计数器0工作于方式3,计数初值设定为0(即为最大初始值65536),控制字为36H。这样,每隔55ms产生一次0级中断。在中断服务程序中,由16位的计数单元对中断次数计数,当计数单元产生

53、进位时,表示所经过的时间约为1h(即655361/18.23600s),其误差可由程序中加以修正,以消除积累误差。另外,计数器0还用于对软盘驱动器的马达启/停时间进行管理,每开放一定时间,再令其关闭。其初始化程序片断如下:2021/6/491第8章 输入/输出方法及常用的接口电路 MOVAL,00110110B;对计数器0设置控制字,方式3。;二进制计数。先写CRL,再写CRH。OUT43,ALMOVAL,0;设定初始值(最大初始值)。OUT40H,AL;写入计数器0中的计数寄存器低8位。OUT40H,AL;写入计数器0中的计数寄存器高8位。2021/6/492第8章 输入/输出方法及常用的接

54、口电路 计数器1用作对动态RAM的刷新定时,其输入时钟CLK1同样为1.931 816 MHz方波。计数器1输出的定时信号接在8237DMA芯片的一个DMA请求端DRQ0,用来发出请求信号,负责对动态存储器刷新。它每隔15.12ms产生一个脉冲宽度为840ns的负脉冲输出信号对动态存储器进行刷新操作。此时计数初值为12H,控制字为54H,相应的初始化程序片断如下:MOVAL,54H;对计数器1设置控制字,二进制计数,只写CRL。OUT43H,AMOVAL,12H;为刷新DRAM,设置分频系数。OUT41H,AL;写入计数器1中的计数寄存器低8位(CRL)。2021/6/493第8章 输入/输出

55、方法及常用的接口电路 计数器2在此有两个作用:其一是作为与音频盒式磁带机接口,其二是产生扬声器的频率信号,并与8255A的B口的PB1位共同控制扬声器的发声,其电路连接见图8.29所示。当8255A的PB1为高电平时,在BIOS中提供了扬声器发声程序,此程序把声音频率相应的计数值送入计数器2,用以产生音频信号。现以通过改变8253计数器2的计数值,本例中,每敲一键,计数器的计数初值减100H,音调增高从而改变扬声器发出的音调,其相应的编程如下:CODESEGMENTASSUMECS:CODE,DS:CODE,ES:CODE,SS:CODEORG100H2021/6/494第8章 输入/输出方法

56、及常用的接口电路 START:JMPBEGINORG-SNDDW533H;BIOS初始化8253时,对通道2设置的计数初值。SAVE-IDDW1133H;定义最初的计数值,最低音调。BEGIN:PUSHCS;赋DS段址。POPDSMOVBX,10H ;发声次数。NEW-SOUND:MOVAL,0B6H;设置通道2控制字,方式3,先写CRL,后写CRH,;二进制计数。OUT43H,ALMOVAX,SAVE-ID;设定初始计数值。SUBAX,100H;每次计数值减100H。MOVSAVE-ID,AXOUT42H,AL;写入通道2的CRL。MOVAL,AHOUT42H,AL;写入通道2的CRH。20

57、21/6/495第8章 输入/输出方法及常用的接口电路 INAL,61H;读入8255端口B的值。MOVAH,ALXORAL,03H;8253通道2选通,扬声器打开。OUT61H,ALMOVCX,0FFFFH;延时。DELAY:LOOPDELAYMOVAL,AH;关闭扬声器。OUT61H,ALMOVAH,00H;通过键盘读字符。INT16HDECBX;计数器减1。JNZNEW-SOUNDMOVAL,0B6H;恢复扬声器初始音调。2021/6/496第8章 输入/输出方法及常用的接口电路 OUT43H,ALMOVAX,ORG-SNDOUT42H,ALMOVAL,AHOUT42H,ALMOVAH,

58、4CH;返回DOS。INT21HCOOEENDSENDSTART2021/6/497第8章 输入/输出方法及常用的接口电路 8.5.5 8254可编程计数可编程计数/定时器定时器 其主要差别是:(1)允许最高计数脉冲(CLK)的频率不同。8253的最高频率为2MHz,而8254允许的最高计数脉冲频率可达10MHz(8254为8MHz,8254-2为10MHz)。(2)8254每个计数器的内部都有一个状态寄存器和状态锁存器,而8253是没有的。(3)8254多一个读回命令字,用以读出当前计数单元CE的内容和状态寄存器的内容,而8253没有此读回命令字。2021/6/498第8章 输入/输出方法及

59、常用的接口电路 图8.308254的锁存命令和读回命令格式(a)锁存命令格式;(b)读回命令格式2021/6/499第8章 输入/输出方法及常用的接口电路 图8.31CPU读状态锁存器内容命令格式其中D5D0内容和写入到计数器的控制字的对应位相同。D7输出位反映了该计数器输出引脚信号OUT的状态。若OUT为高电平,则D7=1;若OUT为低电平,则D7=0,D6位指示时间常数寄存器CR中的内容是否已装入到计数单元CE中。若已装入CE中,则D6=0;若CPU向计数器写入控制字及计数初值后,但CR内容仍未装入CE中,则D6=1。2021/6/4100第8章 输入/输出方法及常用的接口电路 8.5 串

60、行通信及串行通信及8251串行接口电路串行接口电路 8.5.1 串行通信的基本概念串行通信的基本概念1. 串行通信与并行通信串行通信与并行通信 图图 8.32 通信的两种基本方式通信的两种基本方式(a) 串行通信;串行通信; (b) 并行通信并行通信 2021/6/4101第8章 输入/输出方法及常用的接口电路 2. 串行通信中的数据传送模式串行通信中的数据传送模式(1)单工、半双工、全双工的数据传送模式。单工(Simplex)通信模式。仅能进行一个方向的数据传送。如A作为发送器,B能作为接收器。半双工(HalfDuplex)通信模式。它能够在设备A和设备B之间交替地进行双向数据传送。即数据可

61、以在一个时刻从设备A传送到设备B,而另一时刻也可以从设备B传送到设备A,但不能同时进行。全双工(FullDuplex)通信模式。通信设备A或B均能在发送的同时又能接收数据。即设备A向设备B发送数据的同时,设备B也可以向设备A发送数据。2021/6/4102第8章 输入/输出方法及常用的接口电路 图8.33数据传送模式(a)单工;(b)半双工;(c)全双工2021/6/4103第8章 输入/输出方法及常用的接口电路 3. 比特率与波特率比特率与波特率数据传送的速率通常用比特率(bitrate)表示。比特率是指每秒能传输的比特(bit)数,单位为bit/s(bps-bitpersecond)。在数

62、据通信中,还有另外一个常用术语波特率(Baudrate),波特率是指每秒能传输的符号(也称离散状态)数。若每个符号所含信息量等于1比特,则波特率等于比特率。在计算机中,一个“符号”的含义为高、低两种电平,即符号所含信息量刚好等于1比特。因此,在计算机数据传输中常将比特率称为波特率。2021/6/4104第8章 输入/输出方法及常用的接口电路 计算机数据传输的速率是120字符/s,而每个字符假如为10个比特(bit)位,则其传输的波特率为10bit/字符120字符/s=1200bit/s=1200波特每一位的传输时间Td就是波特率的倒数,在本例中则为Td=1/1200=0.833ms国际上规定了

63、一个标准波特率系列,即110、300、600、1200、1800、2400、4800、9600和19200波特。串行接口的打印机通常采用110波特,也有采用150波特和300波特,字符显示器终端设备使用的波特率1200以上。当使用调制解调器在公共电话线上进行远程数据通信时常使用1200波特,线路质量好的城市和地区可达2400波特。2021/6/4105第8章 输入/输出方法及常用的接口电路 4. 串行通信中的异步传送与同步传送串行通信中的异步传送与同步传送(1)异步传送。图8.34异步传送数据格式(a)有空闲位;2021/6/4106第8章 输入/输出方法及常用的接口电路 图8.34异步传送数

64、据格式(b)无空闲位2021/6/4107第8章 输入/输出方法及常用的接口电路 起始位。每个字符的开始必须是持续一个比特时间的逻辑“”电平,标志着每一个字符的开始。数据位。有58位,紧跟着起始位之后,是字符中的有效数据位。传送数据时,先送低位,后送高位数据。奇偶校验位。仅占一位。可根据需要设置奇校验或偶校验,也可以不设校验位。停止位。1位或1.5位,或2位。并规定为逻辑“1”状态。2021/6/4108第8章 输入/输出方法及常用的接口电路 (2)同步传送。图8.35同步方式所采用的数据格式(a)单同步;(b)双同步;(c)SDLC;(d)HDLC2021/6/4109第8章 输入/输出方法

65、及常用的接口电路 同 步 传 送 中 , 最 常 用 的 是 SDLC/HDLC数 据 格 式 。 SDLC(SynchronousDataLinkControl)是IBM公司推出的同步数据链控制规程,而HDLC(HighLevel Data Link Control)是ISO推荐的高级数据链路控制规程。这两种规程除了某些术语和细节不同外,基本原理相同。图8.36为SDLC/HDLC数据格式。各部分功能说明如下:图8.36SDLC/HDLC数据格式2021/6/4110第8章 输入/输出方法及常用的接口电路 SDLC/HDLC标志符,格式01111110。其作用是作为信息传输的边界符,在两个标

66、志符间的信息称为一帧,在一帧信息传送前先送该标志符,表示一帧开始,一帧信息传输结束,紧接着应再送一标志符,作为一帧结束的标志。为了实现标志符编码的唯一性,采用了“0”比特插入/删除技术,以保证接收站能正确识别数据场信息中含有与标志符代码相同的数据信息。其方法是:在发送数据场信息时,如遇到连续5个“1”,则自动插入“0”。接收端在连续收到5个“1”后就自动将其后的“0”删除,以便恢复信息原有的含义。例如,当CPU将数据TFFEH=0111111111111110B送至发送端后,发送器自动插入“0”变为:01111101111101110B,此信息由接收器接收,并删除“0”后恢复成原信号TFFEH

67、。2021/6/4111第8章 输入/输出方法及常用的接口电路 地址场,简称A场。SDLC规定A场为一个字节长;HDLC规定A场可以为任意字节长度。当地址场字节第1(D0)位为“0”,则后跟字节为地址场信息,否则为最后一个地址场信息。 控制场,简称C场。SDLC规定C场为一个字节长;HDLC规定C场为一个字节或2个字节长。SDLC/HDLC的所有场都是从最低有效位(D0)开始传送。2021/6/4112第8章 输入/输出方法及常用的接口电路 信息场,简称场。它紧跟C场之后,其长度可以从0位(无信息)到存储器可容纳的最大位数。帧校验位,简称FC场。SDLC/HDLC均采用16位循环冗余校验(Cy

68、clicRedundancyCheck)CRC校验码,其生成多项式为X16+X12+X5+1。除F场和自动插入的“0”比特外,所有的信息都参加CRC计算。从SDLC/HDLC数据格式中看出,传送的数据信息越长,通信效率越高。2021/6/4113第8章 输入/输出方法及常用的接口电路 5. 信号的调制和解调信号的调制和解调如果要利用电话信道进行远距离传输的话,直接采用数字信号是不能实现的。因为电话信道主要用以传输人的话音信息,在此频带范围以外的直流成分和其它频率分量将因不能通过电话信道传输数字信号。必须采取一些措施,把数字信号转换成适于传输的模拟信号,而在接收端再将模拟信号转换成数字信号。前一

69、种转换称为调制,后一种转换称为解调。完成调制、解调功能的设备叫做调制解调器(Modem)。调制解调器的类型比较多,但基本可分为两类:异步调制解调器和同步调制解调器。2021/6/4114第8章 输入/输出方法及常用的接口电路 异步调制解调器适用于异步通信方式,它不提供同步时钟信号。常用的调制方法是频移键控(FSK,FrequencyShiftKeying)或称为两态调频。频移键控的基本原理是把“0”和“”的两种数字信号分别调制成两个不同频率的音频信号。图8.37频移键控调制原理2021/6/4115第8章 输入/输出方法及常用的接口电路 图8.38PSK相移键控调制原理(a)二进制0;(b)二

70、进制1;(c)PSK信号(101)2021/6/4116第8章 输入/输出方法及常用的接口电路 8.5.2 串行接口的基本结构与功能串行接口的基本结构与功能 1. 异步串行接口的基本结构与功能异步串行接口的基本结构与功能 图8.39异步串行接口的基本结构2021/6/4117第8章 输入/输出方法及常用的接口电路 (1)输出缓冲寄存器。它接收CPU从数据总线送来的并行数据,并加以保存。(2)输出移位寄存器。它接收从输出缓冲寄存器送出的并行数据,以发送时钟的速率把数据逐位移出。(3)输入移位寄存器。它以接收时钟的速率把出现在串行数据输入线上的数据逐位移入。当数据装满后,并行送往输入缓冲寄存器中。

71、2021/6/4118第8章 输入/输出方法及常用的接口电路 (4)输入缓冲寄存器。它从输入移位寄存器并行接收数据,然后由CPU取走。(5)控制寄存器。它接收由CPU送入的控制字,由控制字的内容决定通信时的数据格式以及传输方式等。(6)状态寄存器。其中存放着各种状态标志信息。在通信过程中,当符合某种状态时,接口中的状态检测逻辑将状态寄存器的相应位置“”,让CPU查询。2021/6/4119第8章 输入/输出方法及常用的接口电路 发送数据的过程是:CPU把要输出的数据写入输出缓冲寄存器,然后由接口电路中的发送控制逻辑根据预先写入控制字的内容对数据格式化,即加上起始位、奇偶校验位和停止位等成帧信息

72、。格式化后的数据由输出移位寄存器按选定的传输速率逐位移出,由串行数据输出线输出。2021/6/4120第8章 输入/输出方法及常用的接口电路 接收数据的过程是:串行口允许接收后,接收控制电路不断监视串行数据输入线上的电平,一旦出现持续一个位周期的低电平,则开始采样有效数据位,并逐位移入移位寄存器中。采样重复进行,直至采样规定的停止位为止。然后再将有效数据并行送入输入缓冲寄存器,并由接口电路中的差错检测逻辑对输入数据进行校验,再根据校验结果置状态寄存器相应标志位。如传送数据正确,则由CPU读取数据。在异步通信时,发送接收端都要用发送/接收时钟来决定每一信息位对应的时间宽度。发送/接收时钟(统称为

73、外部时钟)的频率可以是位传输率的16倍、32倍和64倍。这个倍数称为波特率因子。2021/6/4121第8章 输入/输出方法及常用的接口电路 若设每一位信息所占的时间为 Td,外部时钟周期为Tc,则有如下关系:其中K=16、32或64,称为波特率因子。由于每个数据(信号)位时间周期Td=KTc,所以每K个时钟脉冲读一次数据。为保证采集数据的正确,采集时间应取在数据位的中间时刻,就可避开信息上升或下降时可能产生的不稳定状态。2021/6/4122第8章 输入/输出方法及常用的接口电路 2. 同步串行接口的基本结构与功能同步串行接口的基本结构与功能 图8.40同步串行接口的基本结构2021/6/4

74、123第8章 输入/输出方法及常用的接口电路 8.5.3 可编程串行通信接口可编程串行通信接口Intel 8251A1. 8251A的结构、的结构、 基本功能及工作原理基本功能及工作原理 图图 8.41 8251A的结构框图与引脚图的结构框图与引脚图(a) 结构框图;结构框图; (b) 引脚图引脚图 2021/6/4124第8章 输入/输出方法及常用的接口电路 8251A可用于串行的异步或同步两种通信方式,其主要性能如下:(1)可用于同步和异步传送。(2)同步传送(58)位/字符;可选择内部或外部同步;可自动插入同步字符。(3)异步传送(58)位/字符;时钟速率为通信波特率的1、16或64倍;

75、可产生中止字符(BreakCharacter);可产生1、或2个位的停止位;可检查假启动位;自动检测和处理中止字符。(4)波特率:DC-19.2bit/s(异步);DC-64bit/s(同步)。2021/6/4125第8章 输入/输出方法及常用的接口电路 (5)全双工、双缓冲发送和接收器。(6)出错检测:具有奇偶、溢出和帧错误等检测电路。(7)全部输入输出与TTL电平兼容;单一的+5V电源;单一的TTL电平,28脚双列直插式封装。(8)与Intel8080、8085、8086、8088CPU接口兼容。2021/6/4126第8章 输入/输出方法及常用的接口电路 (1)接收器。它接收在芯片RxD

76、引脚上出现的串行数据并按规定格式转换成并行数据,存放在接收缓冲器中,以待CPU取走此数据。当8251A工作于异步方式时,接收器监视RxD线上的电平变化。平时没有数据传送时,RxD线上为高电平。当发现有低电平出现时,则认为有可能是某一字符起始位的到来,但还不能确定它就是真正的起始位,因为有可能是干扰脉冲造成的低电平而出现的假起始位信号。为检测是否是真的起始位信号,采用当在RxD线上发现有低电平后,接收器启动一个内部计数器用作接收时钟,其波特因子可选16、32或64,当计数到相当于一个数据位宽度的一半(如选择K=16倍,则为计数到第八个脉冲)时,如果采样到的RxD仍为低电平,就确认是真正的起始位出

77、现了,而不是噪声干扰信号,否则认为是假起始位信号。2021/6/4127第8章 输入/输出方法及常用的接口电路 当真正的起始位出现以后,8251A接收器同样以内部计数器的接收时钟频率每隔16个时钟脉冲周期采样一次RxD,然后将采样的数据送至移位寄存器,经过移位操作,并经奇偶校验检查和去掉停止位,就得到了变换成并行格式的数据,存入接收缓冲寄存器。同时输出RxRDY状态信号,表示已经收到一个可用的数据字符,CPU可以到缓冲器取走数据。对于少于8位的数据字符,8251A将它们的高位填“0”。2021/6/4128第8章 输入/输出方法及常用的接口电路 在同步接收方式下,8251监视RxD线,每出现一

78、个数据位就把它移位接收进移位寄存并与同步字符(由初始化程序设定)寄存器内容相比较,若不等则8251A重复执行上述过程,若相等,即找到了同步字符,则输出SYNDET信号,表示已找到同步字符。实现同步后,接收器与发送器之间就开始进行数据的同步传输。接收器不断对RxD线进行采样,并把收到数据位送到移位寄存器中。每当收到的数据达到设定的一个字符的位数时,就将移位寄存器中的数据并行送到接收缓冲寄存器中,并输出RxRDY信号,表示已收到一个数据字符。2021/6/4129第8章 输入/输出方法及常用的接口电路 (2) 发 送 器 。 在 异 步 方 式 下 , 只 有 当 程 序 设 置 了TxEN(Tr

79、ansmitterEnable允许发送)和CTS(ClearToSend,这是由外设发来的对CPU请求发送信号的响应信号)有效时,才能开始发送过程。发送器接收CPU送来的并行数据,加上成帧信息起始位、校验位(由初始化程序规定设置),最后加上相应的停止位,由TxD输出线发送出去。2021/6/4130第8章 输入/输出方法及常用的接口电路 在同步方式下,也要在程序置TxEN和CTS有效,才能开始发送过程。发送器首先根据初始化程序对同步格式的设定,发送一个一个同步字符(单同步)或者两个同步字符(双同步),然后发送数据块。在发送数据块时,如果初始化程序设定为有奇偶校验,则发送器会对数据块中每个数据字

80、符加上奇/偶校验位。在同步发送数据时,如果CPU来不及把新的数据提供给8251A时,发送器会自动插入同步字符。于是,就满足了在同步发送方式时不允许数据字符之间存在间隙的要求。如通信规程中有CRC校验,则发送器对所要传送的二进制码序列按特定的规则产生相应的校验码,并将其发送出去。2021/6/4131第8章 输入/输出方法及常用的接口电路 发送器的另一功能是发送中止符(Break)。中止符是由在通信线路上的连续的空白符(Space)组成。它是用来在全双工通信时中止发送终端的。只在8251A的命令寄存器D1(SBRK)位为“”,则8251A就一直发送中止符。2021/6/4132第8章 输入/输出

81、方法及常用的接口电路 (3)数据总线缓冲器。它用来与CPU的数据总线D0D7相连。其中含有3个缓冲器:状态字缓冲器。它用来存放8251A内部的工作状态,供CPU查询、测试之用;接收数据缓冲器。用来存放接收器已经装配完毕的字符,准备CPU来读取;发送数据/命令缓冲器。用来寄存CPU送入8251A的数据或命令。2021/6/4133第8章 输入/输出方法及常用的接口电路 (4)读/写控制逻辑电路。用以实现对CPU输出的控制信号译码,以控制实现如表8.6所示的读/写功能。表8.68251读/写控制功能表2021/6/4134第8章 输入/输出方法及常用的接口电路 2. 8251A与与CPU及外设的连

82、接及外设的连接 图8.428251A与CPU及外设的连接2021/6/4135第8章 输入/输出方法及常用的接口电路 (1)8251A与CPU之间的接口信号。8251A与CPU间的接口信号分为4种类型:数据信号D0D7:8251A的8条双向数据总线D0D7与CPU的数据总线对应相连。读/写和控制信号:RD为读数据信号,低电平有效,当CPU要从8251A中的读取数据或状态字时产生此低电平有效信号以通知8251A;WR为写数据信号,低电平有效,当CPU要向8251A写入数据或命令字时产生此信号告之8251A;控制/数据端C/D在CPU向8251A送数据信息时为低电平,在送控制字或读取状态字时此端为

83、高电平。2021/6/4136第8章 输入/输出方法及常用的接口电路 收发联络信号:TxRDY(TransmitterReady)发送准备好信号。当8251A处于允许发送状态(TxEN=“1”,CTS=“0”),而且发送缓冲器为空时,TxRDY输出为高电平,以通知CPU,当前8251A已作好发送准备,CPU可以向8251A传送一个数据字符。当CPU与8251A之间采用中断方式联系时,TxRDY可作为向CPU申请中断的请求信号;如果采用查询方式,则与TxRDY信号相对应的状态寄存器中的状态信息供CPU查询状态之用。当8251A从CPU中接收到一个字符后,TxRDY变为低电平。2021/6/413

84、7第8章 输入/输出方法及常用的接口电路 TxE(TransmitterEmpty)发送器空信号。当它有效(高电平)时,表示发送器中的并行缓冲器空。在同步方式时,若CPU来不及输出一个新字符,则TxE变为高电平,同时发送器在输出线上插入同步字符,以填补传输空隙。RxRDY(ReceiverReady)接收器准备好信号。当它高电平有效时,表明8251A已经从串行输入线接收了一个字符,正等待CPU将此数据取走。所以,在中断方式时,RxRDY可作为向CPU申请中断的请求信号;在查询方式时,RxRDY的状态位从CPU查询之用。2021/6/4138第8章 输入/输出方法及常用的接口电路 SYNDET(

85、SynchronousDetect)同步检测信号。仅用于同步方式。SYNDET引脚既可以作为输入,也可以作为输出,这取决于初始化程序对8251A设置的是内同步方式还是外同步方式。8251A被复位(RESET)时,SYNDET变为低电平。内同步方式时,SYNDET作为输出端。当8251A已经检测到所要求的同步字符后,此信号变高电平,以指出8251A已达到同步。在外同步方式时,SYNDET作为输入端用。当外设(调制解调器)完成对同步字符检测后,向此输入端送入一个正跳变信号,使8251A在下一个RxC的下降沿开始装配字符。此时要求SYNDET的高电平至少应维持一个RxC周期,直到下一个RxC的下降沿

86、的出现。2021/6/4139第8章 输入/输出方法及常用的接口电路 片选信号CS,低电平有效,它由CPU的地址信号译码而形成。CS低电平有效,8251A被CPU选中。2021/6/4140第8章 输入/输出方法及常用的接口电路 (2)8251A与外部设备(调制解调器)之间的接口信号。DTR(DataTerminalReady)数据终端准备好。输出、低电平有效。这是当CPU对8251A输出命令字使控制寄存器D1位置“”,从而使DTR变为低电平,以通知外设,CPU当前已准备就绪。RTS(RequestToSend)请求发送。输出、低电平有效。此信号等效于DTR,CPU通过将控制寄存器的D5置“”

87、,可使RTS低电平有效,用于通知外设(调制解调器),CPU已准备好发送。2021/6/4141第8章 输入/输出方法及常用的接口电路 TxD(TransmitterData)发送器发送数据传输线。DSR(DataSetReady)数据装置准备好。输入、低电平有效。这是由外设(或调制解调器)送入8251A的信号,用以表示调制解调器或外设的数据已准备好。当DSR端出现低电平时会在8251A的状态寄存器的D7位反映出来。CPU可通过对状态寄存器进行读取操作,可查询D7位即DSR状态。CTS(CleartoSend)清除发送。输入、低电平有效。这是由外设(或调制解调器)送往8251A的低电平有效信号。

88、它是对RTS的响应信号。CTS有效,表示允许8251A发送数据。2021/6/4142第8章 输入/输出方法及常用的接口电路 RxD(ReceiverData)接收器接收数据的传输线。RxC(ReceiverClock)接收器接收时钟输入端。低电平有效,它控制8251A接收字符的速度。接收器在RxC的上升沿采样数据。在同步方式时,它由外设(或调制解调器)提供,RxC的频率等于波特率;在异步方式时,RxC由专门的时钟发生器提供,其频率是波特率(数据速率)的1、16或64倍,可由初始化时方式选择字设定。实际上,RxC和TxC往往连在一起,用同一个时钟源,如图8.41所示。TxC(Transmitt

89、erClock)发送器发送数据速率时钟输入端。TxC的频率与波特率之间的关系同RxC。数据在TxC的下降沿由发送器移位输出。2021/6/4143第8章 输入/输出方法及常用的接口电路 8.5.4 8251A初始化编程举例初始化编程举例 图8.43工作方式选择字格式2021/6/4144第8章 输入/输出方法及常用的接口电路 图8.448251A控制命令格式2021/6/4145第8章 输入/输出方法及常用的接口电路 图8.458251A状态字格式2021/6/4146第8章 输入/输出方法及常用的接口电路 图8.468251A的初始化编程流程图2021/6/4147第8章 输入/输出方法及常

90、用的接口电路 1. 异步方式下的初始化编程举例异步方式下的初始化编程举例例如,设定8251A为异步工作方式,波特率因子(发送、接收数据的时钟速率)为64,每字符有7个数据位,为偶校验,有2位停止位,全双工模式。根据上述通信方式,其方式选择字为11111011B(FBH);使接收 及 发 送 启 动 , 并 使 错 误 标 志 复 位 , 故 控 制 命 令 字 为00010101B(15H)。设8251A的控制端口的地址号为52H(C/D端口为高电平),数据端口的地址号为50H(C/D端为低电平)。则初始化程序如下:2021/6/4148第8章 输入/输出方法及常用的接口电路 MOVAL,0F

91、BH ;送方式选择字。OUT52H,AL;MOVAL,15H;送控制命令字。OUT52H,AL2021/6/4149第8章 输入/输出方法及常用的接口电路 2. 同步方式下的初始化编程举例同步方式下的初始化编程举例设8251A设定为同步工作方式,2个同步字符,采用内同步,SYNDET为输出引脚,偶校验,每个字符7个数据位。2个同步字符,它们可以相同,也可不同。本例为两个相同同步字符为23H。初始化编程如下:MOVAL,38H;设置工作方式、双同步字符偶校验、每字符7个数据位。OUT12H,ALMOVAL,23H;连续输出两个同步字符23H。OUT52H,AL;OUT52H,ALMOVAL,97

92、H;送位控制命令字,使接收器启动,发送器启动,使状态寄存器中的3个出错标志位复位,通知调制解调器CPU现已准备好进行数据传输。OUT52H,AL2021/6/4150第8章 输入/输出方法及常用的接口电路 8.5.5 串行总线标准串行总线标准RS-232C 图8.47RS-232C接口环境2021/6/4151第8章 输入/输出方法及常用的接口电路 1. 接口特性接口特性 图8.48BD-25连接器机械图2021/6/4152第8章 输入/输出方法及常用的接口电路 表表 8.7 RS-232C连接器引脚功能定义连接器引脚功能定义 2021/6/4153第8章 输入/输出方法及常用的接口电路 续

93、表2021/6/4154第8章 输入/输出方法及常用的接口电路 图8.49RS-232C常用引脚2021/6/4155第8章 输入/输出方法及常用的接口电路 2. 电气信号特性电气信号特性RS-232C采用负逻辑电平。规定:(1)MARK“传号”(逻辑1)控制线的断开状态规定为-3V-15V;(2)SPACK“空号”(逻辑0),及控制线的接通状态规定为+3V+15V;(3)噪声容限为(35)V;(4)当输入恰好为3V时,分别确定为空号和传号;当输入端开路时,终端定为传号。2021/6/4156第8章 输入/输出方法及常用的接口电路 图8.50RS-232C总线接收器和发送器的连接方法(a)RS

94、-232发送器、接收器;(b)全双工通信转换电路;(c)典型全双工通信转换电路2021/6/4157第8章 输入/输出方法及常用的接口电路 图8.50RS-232C总线接收器和发送器的连接方法(a)RS-232发送器、接收器;(b)全双工通信转换电路;(c)典型全双工通信转换电路2021/6/4158第8章 输入/输出方法及常用的接口电路 8.5.6 RS-499及及RS-423A、 RS-422A标准标准鉴于RS-232C应用的局限与不足,如数据传输速率局限于20kbit/s,传输距离限于15m之内。另外,接口各信号间会产生较强的串扰。为此,针对RS-232C的局限于不足,EIA颁布了3个新

95、标准:EIARS-499“采用串行二进制交换的数据终端设备和数据电路端设备的通用37针和9针接口”的两种连接器。在多通道通信中的主信道使用37针连接器,而辅信道只需使用9针连接器即可,并规定了机械连接和功能方面的标准规范。2021/6/4159第8章 输入/输出方法及常用的接口电路 EIA-423A与EIARS-422A主要是关于电气特性方面的接口标准。RS-423A由于采用非平衡接口电路(非平衡产生器和差分接收器),传输率可达300kbit/s,传输距离为10m(在300bit/s)到1000m(在3kbit/s),同时减少了信号串扰;RS-422A则采用平衡接口电路(平衡产生器和差分接收器

96、),传输率高达10Mbit/s,传输距离为10m(在10Mbit/s)到1000m(在100kbit/s),同时串扰显著减少。另外,RS-423A电气接口特性上与RS-232C兼容。所以,可以采用一根无源电缆,一头与RS-232C相匹配,另一头与RS-423A相匹配,将一个RS-232设备和一个RS-423A设备连接起来。2021/6/4160第8章 输入/输出方法及常用的接口电路 另一种可以进行长距离通信的接口是(20/60)mA电流环接口或用调制解调方法。所谓(20/60)mA电流环接口标准是以电流(20mA,或60mA)的“通”与“不通”两个状态表示逻辑上的“”与“0”,如图8.52(a

97、)所示。电流环中的电流一般用恒流源方法来产生,传输的距离达500m左右,允许的传输率9600bit/s。使用调制解调器大都可以通过一条电话线路实现全双工(同时在两个方向传送数据)通信。如图8.52(b)所示,例如用1180Hz表示标志(又称“传号”),用980Hz表示空白(又称“空号”),对于给定的通信系统,传送数据和接收数据的频率是事先约定的。2021/6/4161第8章 输入/输出方法及常用的接口电路 图8.51几种典型的RS-232C连接方式(a)全双向标准电缆;(b)三线经济方式2021/6/4162第8章 输入/输出方法及常用的接口电路 图8.51几种典型的RS-232C连接方式具有

98、多种自环的三线方式;(d)具有多种自环的零调制解调器2021/6/4163第8章 输入/输出方法及常用的接口电路 图8.51几种典型的RS-232C连接方式(e)具有双跨接的零调制解调器2021/6/4164第8章 输入/输出方法及常用的接口电路 图8.52采用(20/60)mA和调制解调器的两种通信方式(a)(20/60)mA电流环接口;2021/6/4165第8章 输入/输出方法及常用的接口电路 图8.52采用(20/60)mA和调制解调器的两种通信方式(b)采用调制解调器的通信方式2021/6/4166第8章 输入/输出方法及常用的接口电路 8.5.7 8251A应用举例应用举例 图8.

99、538251A作为键盘-显示器接口2021/6/4167第8章 输入/输出方法及常用的接口电路 1. 传送单个字符到传送单个字符到CRT的程序的程序STOCRT:MOVAL,5AH;送方式选择字,异步方式、波特率因子为16,每字符7位OUT0DAH,AL;数据位,奇校验1位停止位。MOVAL,37H;送控制命令字,启动接收器、发送器,使错误标志位复位,使DTR和RTS输出为低电平。OUT0DAH,ALSTATE:INAL,0DAH;从状态口读状态字。TESTAL,01H;检测TxRDY=1?如不是则等待。JZSTATE;继续检测。MOVAL,4AH;将字符“J”ASCIIdcg4AH送到AL。

100、OUT0D8H,AL;向数据口(D8H)送字符代码。JMPSTATE;重复地输出字符J到CRT。2021/6/4168第8章 输入/输出方法及常用的接口电路 2. 8251A接收由键盘输入的一个字符并送往接收由键盘输入的一个字符并送往CRT显示显示MOVAL,5AH;置方式选择字。OUT0DAH,ALMOVAL,37H;置控制命令字。OUT0DAH,ALSTATE1:INAL,0DAH;检测接收准备好,RxRDY=1?TESTAL,02H;如不是则等待,继续检测。JZSTATE1INAL,0D8H;从8251A数据口接收一个字符。MOVBL,AL;将这个字符暂存于BL寄存器。2021/6/41

101、69第8章 输入/输出方法及常用的接口电路 STATE2:INAL,0DLH;读取状态字。TEST01H;检测状态位TxRDY=1?。如不是则等待,继续检测。JZSTATE2MOVAL,BLOUT0D8H,ALJMPSTATE1;继续准备接收。2021/6/4170第8章 输入/输出方法及常用的接口电路 8.6 DMA控制器控制器8237A 8.6.1 DMA 8237A-5的结构和特性的结构和特性 图8.54DMA8237方框图2021/6/4171第8章 输入/输出方法及常用的接口电路 图8.55DMA8237引脚图1. 时序与控制逻辑块时序与控制逻辑块 2021/6/4172第8章 输入

102、/输出方法及常用的接口电路 2. 优先级编码逻辑优先级编码逻辑 图8.56循环优先级示意图2021/6/4173第8章 输入/输出方法及常用的接口电路 3. 命令控制逻辑命令控制逻辑 表表 8.8 控制和状态寄存器寻址信号控制和状态寄存器寻址信号 2021/6/4174第8章 输入/输出方法及常用的接口电路 4. 内部寄存器组内部寄存器组8237A-5内部寄存器组分成两大类:一类是通道寄存器,即每个通道都有的当前地址寄存器、当前字节数寄存器和基地址及基字节数寄存器;另一类是控制和状态寄存器。这些寄存器的寻址是由最低4位地址A3A0以及读写命令来区分的。这两类寄存器共占用16个端口,记作DMA+

103、00HDMA+0FH地址,可供CPU访问。2021/6/4175第8章 输入/输出方法及常用的接口电路 5. 数据及地址缓冲器组数据及地址缓冲器组缓冲器组包含以下3部分:(1)A3A0:最低4位地址线,是三态双向信号端。在芯片空闲周期(非DMA工作周期),CPU对芯片输出的低4位地址线。(2)A7A4:高4位地址线。此信号仅用于DMA服务时提供高4位地址。2021/6/4176第8章 输入/输出方法及常用的接口电路 (3)DB7DB0:8位双向数据线。在芯片空闲周期,CPU在读操作时(IOR有效),将内部寄存器的值送到系统总线上;在写操作时(IOW有效),由CPU对芯片内部寄存器编程。在DMA

104、工作周期,高8位的地址信息经数据缓冲器,经DB7DB0在ADSTB选通信号作用下锁存到外部地址锁存器中,再与A7A0(低8位地址信息)组成DMA传送的16位地址信息。在DMA的存储器到存储器的传送方式下,存储器读出的数据经数据总线送入数据缓冲器,然后在存储器写周期里,此数据经数据总线装入到所指定的存储器单元中。DMA8237芯片能提供16位地址信息,故对存储器的寻址范围为68KB。如要进一步扩大寻址范围,可在DMA系统中为每一个通道配置一个页面寄存器。如PC/XT的DMA系统中由于增加页面寄存器,每个通道的地址线为20条(A0A19),可寻址的范围达1MB。PC/AT的DMA系统可扩大至24条

105、(A0A23)每通道可寻址的范围为1.6MB。2021/6/4177第8章 输入/输出方法及常用的接口电路 8.6.2 DMA的工作方式、的工作方式、 操作类型及时序操作类型及时序 1. 8237 DMA的工作方式及传输操作类型的工作方式及传输操作类型(1)8237的4种工作方式。单字节传送方式。在这种方式下,每次仅传送一个字节数据。传送后,字节数寄存器减1,地址寄存器加1或减1(由初始化编程决定)。HRQ变为无效,8237释放系统总线,控制权返回给CPU。当前字节数寄存器从初始值减到0,还要再传输一个字节,又从0减到0FFFFH时,才发出有效EOP信号,结束DMA传输过程。通常,在DACK成

106、为有效之前,DREQ必须保持有效。每次传送后,DMA控制器把总线让给CPU至少一个总线周期,且立即开始检测DREQ输入,一旦DREQ为有效,再进行下一个字节的传送。2021/6/4178第8章 输入/输出方法及常用的接口电路 数据块传送方式。在这种方式下,一旦8237控制总线就将始终占用总线,连续地传送字节数据直到字节数寄存器减到零再减至0FFFFH时产生EOP信号为止。若需提前结束DMA传送也可由外部输入低电平有效的EOP信号来强迫终止DMA传送,总线控制才交还给CPU。这种方式最大能传送64KB的数据块,而且送DREQ只需维持到DACK有效,在传送期间就不再检测DREQ引脚信号。当数据块传

107、送结束,则终止操作或者是重新初始化。2021/6/4179第8章 输入/输出方法及常用的接口电路 请求传送方式。这种传送方式类似于数据块传送方式,所不同之处在于每传送一个字节之后,8237都将采样检测DREQ信号是否有效。若DREQ变为无效状态则放弃传输,一直到DREQ变为有效后又可开始从放弃的那一点开始DMA传输。当由于外设提供的DREQ信号变为无效而放弃DMA传送时,8237释放总线,CPU可以接着操作。在此种方式下,因为DMA放弃传送时,8237的工作现场的地址及字节数计数值会保存在当前地址寄存器及当前字节数寄存器中。这样,当进行DMA的外部设备新的数据块准备好后,可再次向8237发出D

108、REQ有效信号,8237接着原来的地址和字节计数值继续进行传输,直到字节数寄存器减到0,又减至0FFFFH计数结束或外输入EOP信号,才停止传送,退出DMA。2021/6/4180第8章 输入/输出方法及常用的接口电路 级联方式。图8.57两级DMA的级联方式2021/6/4181第8章 输入/输出方法及常用的接口电路 (2)DMA传送的类型。图8.58DMA的读/写总线周期(a)DMA读操作;(b)DMA写操作2021/6/4182第8章 输入/输出方法及常用的接口电路 图8.58DMA的读/写总线周期(a)DMA读操作;(b)DMA写操作2021/6/4183第8章 输入/输出方法及常用的

109、接口电路 (3)8237几个特殊操作的说明。图8.598237A-5正常时序与压缩时序(a)正常时序;(b)压缩时序2021/6/4184第8章 输入/输出方法及常用的接口电路 2. 8237 DMA工作时序工作时序图8.608237A状态变化流程图2021/6/4185第8章 输入/输出方法及常用的接口电路 8.6.3 内部寄存器的功能及端口寻址内部寄存器的功能及端口寻址8237A-5DMA芯片有16个端口地址(以地址符DMA+0、+1、+2、+0AH+0FH表示)代表了8种寄存器以可编程方法实现四个通道的DMA传输。其寄存器种类功用及端口地址分别说明如下: 1. 8237内部寄存器的功用内

110、部寄存器的功用(1)地址寄存器(DMA+0、+2、+4、+6)。每个通道各有一对16位的基地址寄存器和当前地址寄存器。在对芯片初始化编程时,由CPU同时写入相同的16位地址。若地址任意(字节边界),则可寻址64KB,否则以偶地址(字边界)可寻址128KB。2021/6/4186第8章 输入/输出方法及常用的接口电路 基地址寄存器预置后不再改变,且不能被读出。每个通道有一个16位的当前地址寄存器,它保存着在DMA传输地址值。每次传送后,地址自动加1或减1(取决于方式字寄存器D5位),且随时可被CPU读出。若通道选择为自动预置操作(取决于方式字寄存器D4位),则在结束成批数据传输后产生有效EOP信

111、号时,当前寄存器恢复到与基地址寄存器同值。CPU预置16位地址值时,按8位分两次写入地址寄存器,先写低8位,再写高8位。读操作也是分两次进行。2021/6/4187第8章 输入/输出方法及常用的接口电路 (2)字节寄存器(DMA+1、+3、+5、+7)。每个通道各有一对16位基字节寄存器和当前字节寄存器。在芯片初始化时,由CPU同时写入相同的初始值,但此初始值应比实际传输的字节数少1,最多传输64KB;若某通道的地址寄存器以字边界编程,则字节寄存器也应用字节数预置初始值,此时最多可传输64KB,即128KB。故字节寄存器也称字计数寄存器。基字节寄存器预置不再改变,且不能被读出。当前字节计数器在

112、每次DMA传输后,计数值自动减1,当该寄存器值由0减到FFFFH,产生有效的EOP信号,DMA传输结束。若通道选择为自动预置操作,则在EOP有效的同时,当前字节寄存器恢复到与基字节寄存器预置的初始值。同样,CPU按8位分两次读出或写入该寄存器。2021/6/4188第8章 输入/输出方法及常用的接口电路 (3)方式字寄存器(DMA+0BH)。图8.61工作方式控制字格式2021/6/4189第8章 输入/输出方法及常用的接口电路 (4)暂存寄存器(DMA+0DH)。当芯片编程选择操作方式为存储器到存储器传输时,通道0和通道1交换的数据保存在暂存寄存器(8位),待传输全部完成后,最后一个传输数据

113、被CPU编程读出,在DMA复位时被清除。(5)命令寄存器(DMA+8)。命令寄存器为8位,用于存放编程的命令字,以选择8237的操作方式。其各位的意义如图8.62所示。2021/6/4190第8章 输入/输出方法及常用的接口电路 图8.62命令字格式2021/6/4191第8章 输入/输出方法及常用的接口电路 (6)请求寄存器(DMA+9)。图8.63请求字格式2021/6/4192第8章 输入/输出方法及常用的接口电路 (7)屏蔽寄存器(DMA+0AH#,+0EH#,+0FH)。8237有3个作用不同,占有3个端口地址的屏蔽寄存器。写单个通道屏蔽寄存器(DMA+0AH)。芯片内有一个4位屏蔽

114、寄存器,每一个对应一个通道的屏蔽位。当屏蔽位置位时,该通道就禁止接受DREQ的DMA请求信号。反之,屏蔽位复位则允许DREQ的请求。当某一通道进行DMA传输后,产生EOP信号,则这一通道在禁止自动预置工作条件下的屏蔽位置“1”。必须再次编程,使该通道屏蔽位复位,才能进行下一次的DMA传输。2021/6/4193第8章 输入/输出方法及常用的接口电路 图8.64单个通道屏蔽字格式2021/6/4194第8章 输入/输出方法及常用的接口电路 清主屏蔽寄存器(DMA+0EH)。图8.65主屏蔽寄存器格式2021/6/4195第8章 输入/输出方法及常用的接口电路 写主屏蔽寄存器(DMA+0FH)。主

115、屏蔽寄存器若采用DMA+0FH端口地址号,可用写入一条主屏蔽命令分别对4个通道相应位进行复位(允许)及置位(禁止)DMA请求。应注意,当系统RESET复位或用软件置位(主清除命令DMA+0DH)时,主屏蔽寄存器各位均被置位,即禁止所有通道接受DMA请求。如果采用上述3个端口(DMA+0AH、+0EH、+0FH)之一对某一通道复位屏蔽位后,即可响应DMA请求。然而,只要该通道不采用自动预置操作,那么当本次DMA传输结束,产生一个有效的EOP信号后,其通道屏蔽位又被自动置位。所以,若要进行下一次DMA传输,必须再次初始化编程,使通道屏蔽位复位,才能允许下一次DMA传输。2021/6/4196第8章

116、 输入/输出方法及常用的接口电路 (8)状态寄存器(DMA+8)。图8.66状态字格式2021/6/4197第8章 输入/输出方法及常用的接口电路 2. 端口地址端口地址 表表 8.9 8237A-5端口地址、端口地址、 读读/写操作区分表写操作区分表 2021/6/4198第8章 输入/输出方法及常用的接口电路 表表 8.10 通道寄存器寻址信号表通道寄存器寻址信号表 2021/6/4199第8章 输入/输出方法及常用的接口电路 表表 8.10 通道寄存器寻址信号表通道寄存器寻址信号表 2021/6/4200第8章 输入/输出方法及常用的接口电路 8.6.4 8237A-5在系统中的应用在系

117、统中的应用 图8.67PC/ATDMA系统逻辑结构示意图(a)PC/ATDMA系统硬件逻辑结构示意图;(b)PC/ATDMA系统逻辑示意图2021/6/4201第8章 输入/输出方法及常用的接口电路 图8.67PC/ATDMA系统逻辑结构示意图(a)PC/ATDMA系统硬件逻辑结构示意图;(b)PC/ATDMA系统逻辑示意图2021/6/4202第8章 输入/输出方法及常用的接口电路 一个完整的DMA传输过程必须经过4个阶段,PC/ATDMA系统也是如此:(1) DMA请求。DMA控制器(8237)接受由I/O接口发来的DMA请求信号DREQ,并经判优后向总线裁决逻辑提出总线请求HRQ信号。(

118、2)DMA响应。由总线裁决逻辑对总线请求进行裁决。如CPU不再对DMA初始编程,则当CPU完成当前总线周期后予以响应,允许进行DMA传输。CPU放弃对总线的控制权,向8237DMA控制器发出总线应答信号HLDA。2021/6/4203第8章 输入/输出方法及常用的接口电路 (3)DMA传输。由DMA控制器控制总线,发出相应的地址与控制信息,按要传输的字节数直接控制I/O接口与RAM的数据交换。(4)DMA传输结束。当DMA传输结束时,DMA控制器产生计数终止信号EOP,并通过接口向CPU提出中断请求,以使CPU进行DMA传输正确性检查并重新获得对总线的控制权。在PC/ATDMA系统可支持7个通

119、道DMA传输。除通道2为软盘驱动器的接口和通道0留作SDLC通信适配器应用外,其余通道3、5、6、7均留作扩充使用。2021/6/4204第8章 输入/输出方法及常用的接口电路 表8.11PC/ATDMA通道的使用2021/6/4205第8章 输入/输出方法及常用的接口电路 从DMA芯片的4个通道(03通道)仍按8位数据最大传输64KB设计外,主DMA芯片的5、6、7号通道都是按16位数据最大传输64K字(即128KB)设计的。同时,两者都有寻址16MB空间的能力。CPU对08237A-5从DMA芯片编程端口地址为00H0FH,即DMA+0HDMA+15(设DMAEQU0)或DMA+00FH。

120、对应通道0、1、2、3的页面寄存器端口地址分别为87H、83H、81H、82H。2021/6/4206第8章 输入/输出方法及常用的接口电路 18237A-5主DMA芯片使用字边界,故CPU对此芯片编程端口也应使用字边界,其起始端口定义为C0H。每个端口地址间隔为2,故端口地址号为DMA1+2DMA1+30(设DMA1EQUC0H),或DMA1+0HDMA1+1EH。对应通道5、6、7页面寄存器端口地址分别为8BH、89H、8AH。DMA刷新页面寄存器端口地址为8FH。表8.12列出了PC/AT中DMA芯片端口地址数,表8.13给出了DMA系统涉及的I/O端口地址。2021/6/4207第8章

121、 输入/输出方法及常用的接口电路 表表 8.12 PC/AT中中DMA芯片端口地址芯片端口地址 2021/6/4208第8章 输入/输出方法及常用的接口电路 表表 8.13 PC/AT DMA和页面寄存器和页面寄存器I/O地址地址 2021/6/4209第8章 输入/输出方法及常用的接口电路 8.6.5 8237A-5的初始化编程的初始化编程(1)对通道方式字寄存器置入工作方式字;(2)将存储器中传输数据的起始地址分成两部为:先将低16位地址分低、高8位两次送入该通道的基地址/当前地址寄存器,再将高4位(A16A19)或高8位(A16A23)地址送入对应于该通道的页面寄存器中;(3)将本次DM

122、A传送的字节数的值减1,然后分低8位、高8位置入该通道的基字节/当前字节寄存器中;(4)开放该通道,由该通道的DREQ启动DMA传送过程。2021/6/4210第8章 输入/输出方法及常用的接口电路 下面,以PC/AT中软盘的DMA传输为例,给出系统上电自举时,ROM-BIOS对通道2初始化编程程序。;初始化DMA通道2;输入:;AL=DMA方式字节。;46H通道2,DMA写,单一传输(读软盘)。;4AH通道2,DMA读,单一传输(写软盘)。;42H通道2,DMA校验,单一传输(软盘校验)。; DH=要传输的扇区数。;ES:BX=RAM缓冲区首地区(段地址:偏移量)。;返回:;AX被破坏。;C

123、Y=1,初始化不成功。2021/6/4211第8章 输入/输出方法及常用的接口电路 ;CY=0,初始化成功。;程序中使用符号的定义。DMAEQU0;DMA通道起始端口地址。DMA-SETUPPROCNEAR;DMA初始化过程。PUSHCX;保存寄存器。CLI;关中断。OUTDMA+12,AL;清除先/后触发器。JMP$+2;为满足CPU对8237A-5连续写时序要求。;设备方式字寄存器。OUTDMA+11,AL;写入方式字寄存器。MOVAX,ES;取RAM段地址。MOVCL,4;循环左移4位。2021/6/4212第8章 输入/输出方法及常用的接口电路 ROLAX,CLMOVCH,AL;最高4

124、位保存在CH。ANDAL,0F0H;获取低16位地址。ADDAX,BXJNCJ33INCCH;进位加到高4位地址。;预置地址寄存器和页面寄存器。J33:PUSHAX;保存低16位地址。OUTDMA+4,AL;预置通道2地址寄存器。JMP$+2MOVAL,AHOUTDMA+4,AL;先低字节,后高字节。2021/6/4213第8章 输入/输出方法及常用的接口电路 MOVAL,CH;取最高4位地址。JMP$+2ANDAL,0FHOUT081H,AL;预置通道2对应的页面寄存器。;预置字节计数器。MOVAH,DH;取传输扇区数。SUBAL,AL;乘以256(AL=0)。SHRAX,1;右移,即变成乘

125、以128。PUSHAX;保存“扇区数与128的乘积”。MOVBX,6;设置GET-PARM入口参数。CALLGET-PARM;调用取基数子过程。MOVCL,AH;返回到AH为基数N,保存在CL。2021/6/4214第8章 输入/输出方法及常用的接口电路 POPAX;取出乘积值。SHLAX,CL;右移返回值次数。DECAX;传输字节值减1。PUAHAX;保存字节数。OUTDMA+5,AL;预置字节计数器。CMPAH,0CCHJNZC25MOVAL,033H;进行33H数据模式测试。JMPC26C25: CMPAH,0JZC27SUBAL,AL;进行00H数据模式测试错误,停机。C26:HLTC

126、27:;其它测试(略)。2021/6/4215第8章 输入/输出方法及常用的接口电路 8.6.6 DMAC与系统的接口电路与系统的接口电路 1. 用于将数据从存储器传送到用于将数据从存储器传送到I/O接口的电路设计接口的电路设计 图8.68使用DMA通道实现内存到I/O接口的电路2021/6/4216第8章 输入/输出方法及常用的接口电路 为实现上述的DMA传输,相应DMAC的初始化编程如下:MIODM:OUTDMA+0DH;送主清除命令,实现总清。MOVAL,40H;对通道1送基/当前地址寄存器初值低8位。OUTDMA+2,ALMOVAL,74H;接着送初值高8位。OUTDMA+2,ALMO

127、VAL,80H;最高8位(A16A23)送页面寄存器。OUTPAG,ALMOVAL,64H;对通道1送基/当前字节寄存器初值低8位。OUTDMA+3,ALMOVAL,0;接着送初值高8位。OUTDMA+3,ALMOVAL,59H;对通道1送工作方式字:读操作,单字节传送、地址递增、自动预置。OUTDMA+11,ALMOVAL,0;送命令字,允许工作、固定优先级。OUTDMA+8,AL;DACK低电平有效。OUTDMA+15,AL;写全部屏蔽寄存器,允许4个通道均可请求。2021/6/4217第8章 输入/输出方法及常用的接口电路 2. 用于将数据从用于将数据从I/O接口到内存的接口电路接口到内

128、存的接口电路 图8.69使用DMA通道实现I/O到内存接口的电路2021/6/4218第8章 输入/输出方法及常用的接口电路 8.7 多功能多功能I/O接口电路接口电路82380 8.7.1 82380内部功能块结构内部功能块结构 图8.7082380内部功能体系结构2021/6/4219第8章 输入/输出方法及常用的接口电路 8.7.2 DMA控制器控制器82380内部有一个8通道的32位DMA控制器,如图8.71所示。DMA控制器可以在如下设备之间进行数据传送:(1)I/O与I/O设备之间;(2)存储器与存储器之间;(3)存储器与I/O设备之间。可以利用8个通道中的7个(通道4除外)进行D

129、MA数据传送,并由3位的DMA确认总线(EDACK0EDACK2)输出一个3位二进制码表示目前正在服务的通道编码号。2021/6/4220第8章 输入/输出方法及常用的接口电路 图8.7182380DMA控制器结构框图2021/6/4221第8章 输入/输出方法及常用的接口电路 8.7.3 可编程中断控制器可编程中断控制器82380中含有中断控制器,其中相当于3片8259A的中断控制电路,分别称作中断层(bank)A、中断层B和中断层C。这三层串接起来产生一个总的向CPU申请的中断请求信号INT,接至CPU的INTR输入端。它共有5个内部中断请求及15个外部中断请求输入端IRQ。每个外部中断请

130、求端又可以扩展接一个8259A芯片作为从片,因此,最多可管理158=120个外部中断请求信号。2021/6/4222第8章 输入/输出方法及常用的接口电路 图8.7282380中断控制器功能框图2021/6/4223第8章 输入/输出方法及常用的接口电路 它由以下5个主要功能块组成:中断请求寄存器IRR(InterruptRequestRegister);优先权分解器PR(PriorityResolver);服务寄存器ISR(InServiceRegister);中断屏蔽请求IMR(InterruptMaskRequest);矢量寄存器VR(VectorRegister)。2021/6/422

131、4第8章 输入/输出方法及常用的接口电路 8.7.4 可编程定时可编程定时/计数器计数器82380内部有4个16位可编程定时/计数器,称为0、1、2、3。每个定时/计数器的功能与单片8253/8254类似。4个定时/计数器共用一个时钟信号CLKIN,每个定时/计数器都能在6种工作方式中的任一种方式下工作,而且时钟输入CLKIN可以不受系统时钟的约束。80386CPU可以在任何时刻锁定和访问定时器当前计数值。2021/6/4225第8章 输入/输出方法及常用的接口电路 图8.73可编程定时/计数器功能框图2021/6/4226第8章 输入/输出方法及常用的接口电路 8.7.5 82380与与80

132、386 CPU的连接的连接 图8.7482380与80386CPU的连接2021/6/4227第8章 输入/输出方法及常用的接口电路 (1)地址总线。三态双向信号A31A2直接连到80386的地址总线。82380地址总线能够寻址64 KB的I/O地址空间(地址号为00000000H0000FFFFH)和4 GB的物理存储器空间(地址号为00000000HFFFFFFFFH)。 在主控方式下(DMA操作期间),82380使用这些地址信息作为输出信号对I/O设备和存储器进行寻址。在从属方式下,CPU将82380当成内部寄存器进行寻址。2021/6/4228第8章 输入/输出方法及常用的接口电路 (

133、2)数据总线。数据总线D31D0在82380和系统之间提供一个32位三态双向接口。82380的数据总线的每个引线直接与80386局部数据总线上的对应引脚相连。在主控方式下,82380的数据总线在I/O设备与存储器间传送32位、16位或8位数据;在从属方式,82380对I/O操作只能是字节操作,CPU80386使用字节允许信号(BE0和BE3)对82380进行写操作时,D0D7和D8D15数据线上的数据相同,而对D16到D31的数据82380则不予理睬。当80386CPU从82380进行读操作时,82380在D0D7, D8D15, D16D23,D24D31这4个字节引脚上输出的字节数据相同。

134、2021/6/4229第8章 输入/输出方法及常用的接口电路 (3)时钟信号。82380和80386之间使用82380的CLK2输入进行同步。82380产生的CPURESET接至CPU的RESET端,以保证82380与80386之间内部的相位关系。(4)复位信号。RESET是一个同步输入信号,此信号有效时暂停任何操作过程,并把82380返回到预先规定的初始状态。此初始状态使82380进入从属工作方式,等待CPU80386对其进行初始化。复位时82380的所有输入引脚都处于无效状态,RESET信号的有效时间应大于15个CLK2周期。2021/6/4230第8章 输入/输出方法及常用的接口电路 (

135、5)总线周期的定义。要执行的总线周期的类型由三态双向信号W/R(写/读)、D/C(数据/命令)和M/IO(存储器/IO设备)进行定义。在主控方式下,这些信号由82380驱动,在从属方式下则由80386驱动。在从属方式下,D/C总是高电平。(6)地址状态信号。ADS是双向信号,用于检测总线上的有效地址(A31A2,BE3BE0)和总线周期的定义(W/R,D/C和M/IO)。在从属方式下,82380监视ADS和READY的输入信号,以确认下一个总线周期是不是一个流水线总线周期。在主控方式下,ADS由82380作为输出进行驱动。2021/6/4231第8章 输入/输出方法及常用的接口电路 (7)下一

136、个地址请求。只在主控方式下监视NA信号,以确认是否进入地址流水线总线周期。在从属方式下监视READY和ADS信号,而不用监视NA信号。NA低电平有效时,82380才能在当前总线周期结束之前先接收新地址和总线周期定义信号。一个内部正在进行总线请求和一个有效的NA信号就能使82380把下一个地址放置到总线上。2021/6/4232第8章 输入/输出方法及常用的接口电路 (8)传送确认。传送确认READY是输入信号,有效时确认结束当前总线周期。在主控方式下,它表明一个DMA总线周期结束。在从属方式下,82380监督这个输入和ADS输入去检测流水地址周期。82380的READY输入直接连到80386的READY输入。(9)中断请求。此INT信号用于告知80386CPU产生了一个或多个未决的内部或外部中断请求。这个信号直接同80386CPU的INTR可屏蔽中断请求线相连。如80386允许中断,则用一个中断响应周期响应INT信号。2021/6/4233第8章 输入/输出方法及常用的接口电路 部分资料从网络收集整理而来,供大家参考,感谢您的关注!

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号