910 likes | 1.02k Views
第七章 I/O 接口技术及接口芯片 7.1 系统与总线接口 7.1.1 总线技术 总线是一组公用导线,一些数据源中的任何一个都可以利用它传送数据到另一个或多个目的。总线是分时复用的,在特定时间周期内,总线只能为一个源专用,从属于一个源。也就是说,总线是一组能为多个部件分时共享的公共信息传送线路,分时和共享是总线的两个特点。.
E N D
第七章 I/O接口技术及接口芯片 • 7.1系统与总线接口 • 7.1.1总线技术 • 总线是一组公用导线,一些数据源中的任何一个都可以利用它传送数据到另一个或多个目的。总线是分时复用的,在特定时间周期内,总线只能为一个源专用,从属于一个源。也就是说,总线是一组能为多个部件分时共享的公共信息传送线路,分时和共享是总线的两个特点。 德 能 日 新
微处理器的外部结构表现为数量有限的输入输出引脚,这些引脚构成了微处理器级总线。微处理器通过微处理器级总线和其它逻辑线路连接组成微机的主机板系统,形成系统级总线,简称系统总线。存储器和I/O设备通过接口电路连接在系统总线上,形成一个完整的微型计算机系统。微处理器的外部结构表现为数量有限的输入输出引脚,这些引脚构成了微处理器级总线。微处理器通过微处理器级总线和其它逻辑线路连接组成微机的主机板系统,形成系统级总线,简称系统总线。存储器和I/O设备通过接口电路连接在系统总线上,形成一个完整的微型计算机系统。 • 总线分为地址总线,数据总线和控制总线。微处理器级总线和系统级总线之间的接口电路称为总线控制逻辑,总线控制逻辑中的驱动器和接收器是为了提高总线的驱动能力和承受负载的能力。 德 能 日 新
7.1.2 PC 系统总线 • PC机系统采用8086/8088微处理器。该处理器要用40个引脚的双列直插式陶瓷封袋,均要用分时复用的地址/数据总线,这些引脚具有两种功能。微处理器有两种工作方式:最小方式和最大方式。最小方式用于由单微处理器组成小系统,由8086/8088直接产生小系统所需的全部控制信号。最大方式用于多微处理器系统,8086/8088不直接提供用于存储器或I/O读写的读写命令等控制信号,只是将操作类型的状态信息输出,由总线控制器8088对状态信息进行译码而产生相应的控制信号。 德 能 日 新
7.1.3 总线技术接口 • 1.总线周期 • 正常的8088(86)总线周期,不管是读还是写,都用4个时钟周期(T)。 • 在T1期间地址与数据复用信号线送出相应地址AD0~AD7,同时送出地址锁存允许信号ALE。若利用ALE锁存有关地址信号,再加上其他不需要复用的地址信号A8~A19,即可在锁存器的输出端得到完整的20位地址信号A0~A19。一旦利用ALE的高电平锁存地址信号在此后的时钟周期里,利用有关的控制信号如IO/M, RD,WR等完成对内存或外设的读写操作。 德 能 日 新
当由于内存或外设速度慢,4个时钟周期不能正确的进行读写时,可以通过时钟发生器产生READY信号加到CPU上,可使CPU在T3和T4之间插入一个或若干个等待时钟周期Tw。当由于内存或外设速度慢,4个时钟周期不能正确的进行读写时,可以通过时钟发生器产生READY信号加到CPU上,可使CPU在T3和T4之间插入一个或若干个等待时钟周期Tw。 • 2.锁存器与驱动器 在形成8088(86)系统总线时,常用到具有三态输出的信号锁存器8282和8283。8282 和8283除前者是反向输出和后者是正向输出外,其它性能完全一样。对于数据总线,可采用双向驱动器。在构成系统总线时,常用8286 或8287。两者除8286是正向的,8287是反向的外,其它完全相同。 德 能 日 新
3.系统总线的形成 • (1)最小模式 • (2)最大模式 • 为了实现最大模式下工作,形成系统总线要使用厂家提供总线控制器8288 。 • 当系统总线形成以后,构成微型机的内存及各种接口就可以直接与系统总线相连接,从而构成所需微型机系统。 德 能 日 新
7.2 可编程定时器/计数器8253及使用 • 7.2.1定时器系统概述 • 每个微处理器厂家都研制并提供与本厂的微处理器配合工作的定时器/计数器接口芯片。微机系统在实时控制及数据采集中,都可以用这类器件完成,它可以作为计数器对外部事件的记数,也可以作为实时时钟对各种设备实现定时控制,早期的有Z—80CTC,Motorola的6840和6520,Intel公司80系列的8253等。 德 能 日 新
7.2.2 8253的内部结构和工作原理 • 8253有三个结构相同又相互独立的记数单元,我们称其为计数器0、计数器1和计数器2。 • 每个记数单元包括: • 一个8位的控制寄存器,用程序控制其工作方式。 • 一个16位的计数寄存器和16位的输出锁存器。 • 一个16位的计数工作单元,受控制寄存器控制。 德 能 日 新
8253与总线的连接线主要是: • D0—D7:双向数据线,用以传送数据 • (计数器的计数值)和控制字。 • CS:片选信号,低电平有效。只有当他 • 有效时,才能选中该芯片进行读写操 • 作。 • RD,WR:读写控制信号。 德 能 日 新
A1A0为8253计数器和控制寄存器选择信号: • A1 A0 • 0 0 选择计数器 0 • 0 1 选择计数器 1 • 1 0 选择计数器 2 • 1 1 选择控制寄存器 • A1A0与其它控制信号CS,RD,WR, • 完成对8253的寻址和读写操作。 德 能 日 新
CLK0~CLK2:是各计数器的时钟输入端。 • GATE0~GATE2:门控信号 ,是计数器的输入控制信号,用来控制计数器的工作。 • OUT0~OUT2:计数器输出信号,用来产生不同工作方式时的输出波形。 • 8253计数器最基本的操作是:接收由数据线传来的控制字和计数初值,对CLK时钟脉冲进行减一操作,其计数工作受GATE门控信号控制。最后输出由控制寄存器控制的操作方式所产生的相应信号。 德 能 日 新
7.2.3 8253的工作方式 • 1.8253的工作方式 • (1)方式0:记数结束产生中断 • (2)方式1:可编程单稳 • (3)方式2:频率发生器 • (4)方式3:方波发生器 • (5)方式4:软件触发选通 • (6)方式5:硬件触发选通 德 能 日 新
2.8253的控制字 • 8253的内部有一个8 位的控制寄存器,通过对其编程实现为三个计数器工作方式的控制,控制字格式为: • SC1、SC0 计数器选择 • (D7 D6) • 0 0 计数器0 • 0 1 计数器1 • 1 0 计数器2 • 1 1 非法 德 能 日 新
RL1、 RL0 计数长短选择 • (D5 D4) • 0 0 将计数器中的数据锁存与缓冲器 • 0 1 计数器低8位字节的读或写 • 1 0 计数器高8位字节的读或写 • 1 1 选低8位和高8位字节的读或写 德 能 日 新
M2 M1 M0 工作方式选择 • (D3 D2 D1) • 0 0 0 方式0 • 0 0 1 方式1 • X 1 0 方式2 • X 1 1 方式3 • 1 0 0 方式4 • 0 1 方式5 • BCD 位(D0)用来定义所使用的计数值是二进制代码还是BCD代码。因为每个计数器都是16位,允许使用二进制数0000H——FFFFH或十进制000——999。由于计数器为减一操作,当初始值为0是最大计数值。 德 能 日 新
3.8253的初始化 • 由于8253的每个计数器都有独立的地址,控制字中又有SC1、SC0两位指定计数器,就使的8253的编程初始化十分简单方便。 • 对计数器的编程可按任意顺序进行,并只对用到的计数器编程。当一个计数器长度不够时,可以将两个或三个计数器串连使用,即一个计数器的输出OUT信号做一个计数器的CLK时钟输入。还可将多个8253串联起来使用。 • 通常在使用中要用这个对计数器初始化。先写入控制字,接着写入计数值。两个字节的计数值先写入低字节,后写入高字节。 德 能 日 新
4.8253的寻址及连接 • (1)寻址 • 8253占用4个接口地址,地址由CS、A0、A1来确定。同时,再配合RD、WR 控制信号,可以实现对8053的各种读写操作。上述信号的组合功能由表7-1来说明。 德 能 日 新
表7-1 各寻址信号组合功能 CS A1 A0 RD WR 功 能 0 0 0 1 0 写计数器0 0 0 1 1 0 写计数器1 0 1 0 1 0 写计数器2 0 1 1 1 0 写方式控制字 0 0 0 0 1 读计数器0 0 1 0 0 1 读计数器1 0 1 1 0 1 无 效 德 能 日 新
当对8253的计数器进行读操作时,可以读出计数值,具体实现方法有如下两种:当对8253的计数器进行读操作时,可以读出计数值,具体实现方法有如下两种: • 1>使计数器停止计数时,先写入控制字,规定好RL1和RL0的状态——也就是规定读一个字节还是两个字节。若其编码为11,则一定读两次,先读出计数值低8位再读出高8位。若读一次同样会出错。 • 为了使计数停止计数,可用GATE门控信号或自己设计的逻辑电路。 德 能 日 新
2>计数过程中读计数值。这是读出当前的计数值并不影响正在计数的计数器的工作。2>计数过程中读计数值。这是读出当前的计数值并不影响正在计数的计数器的工作。 • 为作到这一点,首先写入85253一个特定的控制字:SC1、SC0 0 0 X X X X ,这是控制字的一种形式。其中两比特SC1和SC0与图6-40的定义一样。后面两位刚好定义RL1和RL0为0 0。将此控制字写入8253后,就可将选中的计数器的当前计数值锁存器中。而后,利用读计数器操作——两条输入指令即可把16位计数值读出。 德 能 日 新
(2)连接 • 主要解决8253与8088总线的连接。通过译码器,使的8253占用4个接口地址。 德 能 日 新
7.2.4 应用举例 • 设PC机中有一片8253 。其分配的I/O地址为040H~043H,加在计数器CLK端的系统中主频(4.77MHZ)的4分频脉冲信号(1.19318HHZ)。 • 计数器0用以产生实时时钟信号。 • 计数器1用以形成动态存储器(RAM)刷新 • 的定时信号。 • 计数器2用以产生驱动扬声器的信号,发出多种声音。 德 能 日 新
7.3 可编程并行接口8255 • 7.3.1 并行接口技术概述 • 8255是intel为其80系列微处理器生产的通用可编程并行输入输出接口。它具有很强的功能,在使用中可利用软件编程来指定它该完成的功能。因此,8255获得了广泛的应用。 德 能 日 新
1、外部引线 • Do~D7:双向数据信号线,用来传送数据和控制字。 • RD:读信号线,与其他信号线一起实现对8255接口的读操作。通常接系统总线的IOR 信号。 • WR:写信号线,与其他信号一起实现对8255的写操作,通常系统总线的IOW。 • CS:片选信号线,当它为低平(有效)时,才能选中该8255芯片,也才能对8255进行操作。 德 能 日 新
A0,A1:口地址选择信号线。8255内部有3个口A • 口,B口,C口和一个控制寄存器供软件编程选择。 • A0,A1的不同编码可分别选择上述3个口和一个控制 • 寄存器,具体规定如下: • A1 A0 选 择 • 0 0 A 口 • 0 1 B 口 • 1 0 C 口 • 1 1 控制寄存器 • 通常A0、A1分别接总线的A0、A1地址线(对 • 8088)。它们与CS一起共同决定8255的地址。 德 能 日 新
RESET: 复位输入信号,高电平有效复位8255。复位后,8255的A 口、B 口、C口均被定为输入。 • PA0 ~PA7:为A 口的输入输出信号线。该口时是输入还是输出或双向,是由软件编程来决定的。 • PB0~PB7:为B 口的输入输出信号线。可利用软件编程来规定它们是输入还是输出。 • PC0~PC7:有工作方式来决定,PC0~PC7可利用输入输出或 控制和状态线使用。 德 能 日 新
2、内部结构 • 8255有三个口,三个口均为8位。其中A口输出有锁存能力。输入亦有锁存能力。B口输入输出均有锁存能力。C口输出有锁存能力,输入没有锁存能力,在使用上要注意到这一点。 • 为了控制方便,将8255的三个口分成A、B两组。其中A 组包括A 口的8条线PA0~PA7和 C口的高4位 PC4~PC7。B组包括B口的8条线PB0~PB7 和C口的低4位 PC0~PC3。A组和B组分别由软件编程来加以控制。 德 能 日 新
7.3.3 8255的控制字和工作方式 • 1.8255的工作方式 • 8255有三种工作方式,这些工作方式 • 可用软件编程来指定。 • (1)工作方式0,又称为基本输入输出方式 • (2)工作方式1,即选通输入输出方式 • (3)工作方式2,又称双向输入输出方式 德 能 日 新
2.方式控制字及状态字 • 前面已叙述了可编程并行接口8255的工作方式。可以看到,8255由很强的功能,能够工作在各种工作方式下。在应用过程中,可以利用软件编程来指定8255的工作方式。也就是只要将不同的控制字装入芯片中的控制寄存器,即可确定8255的工作方式。 • (1)控制字 • 8255的控制字由8位二进制数构成, 德 能 日 新
(2)状态字 • 当8255的A 口,B 口工作在方式1或方式2时,可以通过读C 口的状态,利用所读的C 口的状态可以检测A口和B口的状态。 • 3.8255的寻址及连接使用 • 8255占外设编址的四个地址,即A口、B口、C口和控制寄存器各占一个外设接口地址。对同一个地址分别可以进行读写操作。例如,读A口可将A口的数据读出;写A口可将CPU的数据写入A口并输出。前面提到8255的片选信号及A0、A1的功能,再加上读写信号。即可方便的对8255进行寻址。这些信号的功能如表7-2所示。 德 能 日 新
表7-2 8255 的寻址 • CS A1 A0 IOR IOW 操 作 • 0 0 0 0 1 读A口 • 0 0 1 0 1 读B口 • 0 1 0 0 1 读C口 • 0 0 0 1 0 写A口 • 0 0 1 1 0 写B口 • 0 1 0 1 0 写C口 • 0 1 1 1 0 写控制寄存器 • 1 X x 1 1 D0~D7 三态 德 能 日 新
7.3.4 8255的应用举例 • 8255可编程接口芯片的初始化十分简单,只要将控制字写入8255的控制寄存器即可实现。现在举例说明8255的应用。首先利用8255来实现打印机的接口。 德 能 日 新
接口将数据传给打印机的输入端D0~D7。利用一个负的锁存脉冲(≥1us宽度)锁存于打印机内部,打印机进行处理。同时,打印机送出高电平的BUSY信号,表示打印机正忙。一旦BUSY变低,表示打印机又可以接收下一个数据。接口将数据传给打印机的输入端D0~D7。利用一个负的锁存脉冲(≥1us宽度)锁存于打印机内部,打印机进行处理。同时,打印机送出高电平的BUSY信号,表示打印机正忙。一旦BUSY变低,表示打印机又可以接收下一个数据。 • 为了与打印机接口,A组,B组均工作在方式0而用A口的PA0~PA7与打印机的D0~D7相连接,C口的PC6用作输出接STROBE,PC2为输入接打印机的忙信号BUSY。为此,应初始化A口为输出,C口的高4位为输出。C口的低4位为输入。B口保留,暂时未用。因此,在下面的初始化中用B口为输入。 德 能 日 新
MOV AL,10000011B • MOV DX,0383H • OUT DX,AL • 以上程序就是根据上述要求对8255进行的初始化程序。 • 若要将存于AL 中的字符送打印机打印出来,则可以用下面的简单 • 程序来完成: • MOV DX,0382H • XCHG AX,BX • PWAIT: IN AL,DX • AND AL,04H • JNZ PWAIT • XCHG AX,BX • MOV DX,0380H • OUT DX,AL • 上面的程序是首先判断打印机忙否?若忙则等待,不忙则将AL中的 • 字符送出打印。 德 能 日 新
7.4 可编程串行接口8250的使用 • 7.4.1 串行通信的基本概念 • 微型计算机与外设(包括其他微型计算机)之间的通信,通常应用两种形式的通信,即串行通信和并行通信。并行通信是构成一组数据的各位同时传送,例如8位数据或16位数据并行传送。串行通信是数据一位接一位顺序传送。并行通信用前面提到的并行接口可以实现。串行通信也已研制出许多可供使用的串行接口来实现。 德 能 日 新
并行与串行通信各有其优缺点。一般地说串行通信使用的线少,传送距离远,传送速率比较低。而并行却与此相反。并行与串行通信各有其优缺点。一般地说串行通信使用的线少,传送距离远,传送速率比较低。而并行却与此相反。 • 在串行通信中,经常采用两种最常用地通信方式,一种是同步通信,一种是异步通信。 德 能 日 新
1.同步通信 • 所谓同步通信是指在约定的波特率(每秒钟传送位数)下,发送端和接收端的频率保持一致(同步)。因为发送和接收每一位数据均保持同步,故传送信息的位数几乎不受限制,通常一次传送的数据有几十到几百个字节。这种通信的接收器和发送器比较复杂,成本比较高。 德 能 日 新
2.异步通信 异步通信是指收发端在约定的波特率下,不要求严格的同步,允许有相对的延迟。即两端的频率差别在1/10内,就能正确的实现通信。 德 能 日 新
异步通信传送一个字符由一位低电平的起始位开始,接着传送数据位,数据可以是5位,6位,7位或者8位,可由程序指定。在传送时,按低位在前,高位在后的顺序传送。数据位的后面可以加上一位奇偶校验位,也可以不加这一位,可由程序来指定。最后传送的是一位,一位半或两位高电平的停止位。这样,一个字符就传送完了。在两个字符传送的空闲期间,要由高电平1来填充。异步通信传送一个字符由一位低电平的起始位开始,接着传送数据位,数据可以是5位,6位,7位或者8位,可由程序指定。在传送时,按低位在前,高位在后的顺序传送。数据位的后面可以加上一位奇偶校验位,也可以不加这一位,可由程序来指定。最后传送的是一位,一位半或两位高电平的停止位。这样,一个字符就传送完了。在两个字符传送的空闲期间,要由高电平1来填充。 • 异步通信每传送一个字符,要增加大约20% 的附加信息位,这必然降低了传送速率。但是,这种通信方式可靠,实现容易,故广泛的应用于各种微型计算机系统中。 德 能 日 新
7.4.2 8250的初始化编程 • 8250可编程串行接口功能强,使用灵活,应用广泛。这里对它进行简要介绍,主要达到能够在应用中灵活使用它的目的。 • 1、引线及功能 • 2、内部寄存器 • (1)通信控制寄存器 • (2)通信状态寄存器 • (3)发送数据寄存器 • (4)接收数据寄存器 德 能 日 新
(5)除数锁存器 • (6)中断允许寄存器 • (7)中断标志寄存器 • (8)MODEM控制寄存器 • (9)MODEM状态寄存器 德 能 日 新
3、8250的寻址及连接 • 8250内部有10个与我们编程使用有关的寄存器,利用选片CS0,CS1和CS2可以选中该片8250。利用片上的A0A1A2三条地址线可以选择最多8个寄存器——三位地址线的不同编码。再利用通信控制字的最高位——除数锁定位(DLAB)来选中除数锁定寄存器。再加上有的寄存器是只写的,有的寄存器是只读的。这样还可以利用读写信号来加以选择。通过上述这些办法,可以顺利的对8250进行寻址。 德 能 日 新
4、初始化及其应用 • 8250初始化的顺序通常首先将通信控制字的D7=1即DLAB为1。在此条件下再将除数寄存器中该锁存的除数分底8位和高8位先后写入除数锁存器。此后,再按照寻址表中所规定的地址逐个的将控制字写入8250中。 德 能 日 新
下面是一个8250的初始化程序: • MOV DX,3FBH • MOV AL,80H • OUT DX,AL ;将通信控制寄存器D7=1即DLAB=1 • MOV DX,3F8H ; • MOV AL,60H ; • OUT DX,AL ;锁存除数低8位 • INC DX • MOV AL,0 • OUT DX,AL ;锁存除数高8位 • MOV DX,3FBH • MOV AL,0AH • OUT DX,AL ;初始化通信控制寄存器 • MOV DX,3FCH • MOV AL,03H • OUT DX,AL ;初始化MODEM控制器 • MOV AL,3F9H • MOV AL,0 • OUT DX,AL ;写中断允许寄存器 德 能 日 新
接在初始化程序之后,若采用查询方式发送数据,且要发送的数据放在BX中,要发送的数据顺序放在SEDATA 为首地址的内存区中,则程序可如下实现: • SEDPG: MOV DX,3FDH • LEA SI,SEDATA • WAITSE: IN AL,DX • TEST AL,20H • JZ WAITSE • PUSH DX • MOV DX,3F8H • MOV AL,[SI] • OUT DX,AL • POP DX • INC SI • DEC BX • JNZ WAITSE 德 能 日 新
同样,在初始化后,可以利用查询方式实现数据的接收。下面是由8250接收一个数据的程序 : • REVPG: MOV DX,3EFDH • WAITRE: IN AL,DX • TEST AL,1EH • JNZ ERROR • TEST AL,01H • JZ WAITRE • MOV DX,3F8H • IN AL,DX • AND AL,SX • AND AL,7FH 德 能 日 新
7.4.3 8250 的应用举例 • 由于串行接口可以进行长距离的通信,但连接较长的引线容易遭受外部的意外破坏,如雷击、短路等引起串行通信不能正常工作。通常可以通过测量端口的电压来判断串行接口电路是否正常,也可以通过软件的方法测试其是否正常工作。该程序采用查询方式,需将串口的收发端2、3 短接即可运行。 德 能 日 新
串口测试程序: • STACK SEGMENT PARA STACK 'STACK' • DB 500 DUP(0) • STACK ENDS • DATA SEGMENT • TEXT DB 'THE QUICK BROWN FOX JUMPS OVER LAZY' • DB 'DOG',0DH,0AH • LLL EQU $-TEXT • ERROR DB 'COM1 BAD!',0DH,0AH,'$' • DATA ENDS 德 能 日 新
CODE SEGMENT • ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK • BEG: PUSH DS • MOV AX,0 • PUSH AX • MOV AX,DATA • MOV DS,AX • MOV ES,AX • CALL I8250 • MOV CH,10 德 能 日 新
AGAIN: MOV CL,LLL • MOV BX,OFFSET TEXT • TSCAN: MOV DX,3FDH • IN AL,DX • TEST AL,20H • JZ TSCAN • MOV AL,[BX] • SEND: MOV DX,3F8H • OUT DX,AL 德 能 日 新