串并行通信和接口技术本章要点串行通信的几种方式8251A的编程结构和功能结构8251A和CPU的信号连接以及和外设的信号连接低档接口芯片和高档数据总线的连接8251A的模式寄存器、控制寄存器和状态寄存器的格式8251A的初始化流程8251A的使用8255A和CPU的信号连接以及和外设的信号连接8255A的三种工作方式和设置方法8255A的C端口置0/置16.1接口的功能以及在系统中的连接I/O设备和总线的连接6.1.1接口的功能基本功能:1、在系统和I/O设备之间传输信号2、提供缓冲作用,以满足接口两边的时序要求1.寻址功能1)、识别区别存储器和I/O的信号(M/IO)2)、识别片选信号(CS)3)、选择接口中的寄存器(由地址决定)2.输入输出功能根据读写信号判断传输方向(读写都是对CPU而言的)传输数据、控制和状态信息3.数据转换功能把CPU的并行数据转换成一些外设所需的串行数据;把外设的串行信息转换成并行数据送往CPU。4.联络功能当接口从总线上接收一个数据后,把一个数据送到总线上后,发一个就绪信号,通知CPU:数据传输已经完成,从而可以准备进行下一次传输。5.中断管理功能对于中断控制器而言:1、发送中断请求和接收中断响应2、发送中断类型号3、优先级管理功能6.复位功能接收复位信号7.可编程功能可以用软件使其工作于不同的方式用软件来设置控制信号8.错误检测功能当前多数可编程接口芯片能检测下列两类错误:传输错误接口和设备之间的连线常常受各种干扰,从而引起传输错误,所以一般传输信息时,接口采用奇偶校验位对传输错误进行检测。覆盖错误当计算机输入数据时,实际上是从接口的输入缓冲寄存器取数。如果计算机还没有取走数据,输入缓冲器寄存器由于某种原因又被装上了新的数据,那么就会产生一个覆盖错误。在输出时,也会有类似的情况。6.1.2接口与系统的连接接口可分为两个部分,因此信号也分为两部分1、和I/O设备相连2、和CPU通过系统总线相连典型的I/O接口和外部连接M/IO,R/W信号要用于译码。一般接口都有多个寄存器,因此还需要用低位地址信号结合读写信号来实现接口内部寄存器的寻址。写信号读信号A0被访问的寄存器010A011B100C101D6.2串行接口和串行通信串行接口串行通信涉及的几个问题6.2.1串行接口串行接口部件有4个主要寄存器,即:控制寄存器状态寄存器数据输入寄存器数据输出寄存器。6.2.2串行通信涉及的几个问题全双工方式和半双工方式同步方式和异步方式传输率1.全双工方式和半双工方式全双工方式(a):接收和发送用不同的通路。半双工方式(b):输入和输出使用同一通路。2.同步方式和异步方式传输方式:同步通信:将许多字符组成一个信息组,字符可以一个接一个地传输,但是在每组信息(帧)的开始加上同步字符,在没有信息要传输时,要填上空字符,因为同步传输不允许有间隙。异步通信:异步通信时,两个字符之间的传输间隔是任意的,所以每个字符的前后都要用一些数位作为分隔位。同步方式和异步方式比较:同步方式的信息有效率高。对时钟定位(同步)要求好,因此电路复杂。同步方式需传输时钟信号。异步方式对时钟的要求较低,发送方和接收方的时钟频率不必完全一致,只要比较接近但不超过一定的允许范围。标准的异步通信数据格式在异步通信中,除了传输字符外,还需要传输起始位、停止位、校验位等。传输开始时,输出线由“1”变为“0”,然后按规定的信息位长度、校验位长度和停止位长度取数据。起始位、信息位、停止位、校验位的长度在编程时设定。发送时钟、接收时钟时钟频率/波特率=波特率因子假设波特率为16,当计数到8时,就对输入信号进行采样,如果还是低电平,就认为是起始位。然后每隔16个时钟就采样一次,分别作为信息、校验位和停止位。当下一次出现“1”到“0”的跳变时,重新开始。当接收时钟和发送时钟差别太大,就会发生错误。一般情况下,设备可以检测到以下三类错误:奇偶校验错误、覆盖错误和信息帧格式错误。在同步传输中,一个字符也可以对应5-8位。在传输前,必须编程定义好传输字符的位数。在传输时,按规定好的位数划分为一个时间片,发送端在一个时间片发送一个字符,接收端还在一个时间片接收一个字符。整个系统中采用统一的时钟。同步传输时,一个信息帧中包含许多字符,每个信息帧用同步字符作为开始,一般将同步字符和空字符用一个代码。接收端可以识别同步字符。但由带来问题:当同步字符出错时,从而引起整个信息帧的丢失。所以,一般用多个同步头。比较同步和异步的传输效率:同步通信速度快。3.串行通信的传输率例1、异步传输过程:设每个字符对应1个起始位、7个信息位、1个奇偶校验位和1个停止位,如果波特率为1200bps,那么,每秒钟能传输的最大字符数为1200/10=120个。例二.同步传输:用1200bps的波特率工作,用4个同步字符作为信息帧头部,但不用奇偶校验,那么,传输100个字符所用的时间为7(100+4)/1200=0.6067s,这就是说,每秒钟能传输的字符数可达到100/0.6067=165个。可见,在同样的传输率下,同步传输时实际字符传输率要比异步传输时高。6.3可编程串行通信接口8251A8251A的基本性能8251A的基本工作原理8251A的对外信号8251A的编程8251A编程举例8251A的使用实例6.3.18251A的基本性能可以工作在同步或异步方式。在同步方式时(0~64Kbps),能用5、6、7或8位代表字符能自动检测同步字符允许奇偶校验。在异步方式下(0~19.2Kbps)能用5、6、7或8位代表字符,用1位作为奇偶校验。能增加1个启动位能增加1个、1.5个或2个停止位。6.3.28251A的基本工作原理8251A的编程结构8251A的功能结构8251A的发送和接收1.8251A的编程结构编程结构中包括:1个数据输入缓冲寄存器和1个数据输出缓冲寄存器1个发送移位寄存器和1个接收移位寄存器;1个控制寄存器和1个状态寄存器;1个模式寄存器和2个同步字符寄存器。控制寄存器用来控制8251A的工作,内容由程序设置的状态寄存器则在8251A的工作过程中位执行程序提供一定的状态信息。模式寄存器的内容决定了8251A到底工作在同步模式还是工作在异步模式,还决定了所接收和发送的字符的格式,模式寄存器的内容也是由执行程序设置的。8251A的2个同步字符寄存器用来容纳同步方式中所用的同步字符接收移位寄存器将到达RXD端的串行数据接收之后进行移位,变为8位并行数据,传送到数据输入缓冲寄存器,然后通过数据总线传送到CPU,这就是数据通过8251A输入到计算机的过程在计算机通过8251A输出数据的过程中,CPU通过数据总线将数据送到8251A的数据输出缓冲寄存器,再传输到发送移位寄存器。移位寄存器用移位的办法将并行数据变为串行数据,然后,从TXD端送往外设部件。2.8251A的功能结构接收控制电路配合接收缓冲器工作,它的功能包括:复位后寻找启动位。消除假启动干扰。对接收到的信息进行奇偶校验。检测停止位,并按照检测结果建立状态位。发送控制电路的功能:在发送缓冲器的配合下,控制和管理所有与串行发送有关的功能。在异步方式下,为数据加上起始位、校验位和停止位。在同步方式下,插入同步字符和校验位。读写控制逻辑电路的功能:接收WR#,向8251A写入数据和控制字接收RD#,从8251A读取数据或状态字接收C/D#,以区别是数据,还是状态字或控制字。接收CLK,完成内部定时。接收RESET,使8251A处于空闲状态。8251A的内部工作原理3.8251A的发送和接收(1)异步接收方式当8251A工作在异步方式准备接收一个字符时,就在RXD线上检测是否为低电平,没有字符信息是,RXD位高电平。8251A将RXD线上检测到的低电平作为起始位,并启动接收控制电路中的内部计数器进行计数,计数脉冲就是8251A的接收器时钟脉冲RXC。在异步接收时,有时会遇到,8251A在检测起始位时,过半数位传输时间后,没有再次测得低电平,而测得高电平,此时,8251A就会把刚才检测到的信号看成干扰脉冲,于是重新开始检测RXD线上是否又出现低电平。(2)异步发送方式当程序对控制寄存器中的允许发送为TXEN置1,并且,在CTS信号有效的情况下,便开始发送过程。在发送时,发送器为每个字符加上1个起始位,并按照编程要求加上奇偶校验位以及停止位。以上信息总是在发送时钟TXC的下降沿时从8251A发出,数据传输的波特率为发送时钟频率的1、1/16或1/64,具体决定于编程时给出的波特率因子。下图为8251A工作在异步方式时的数据传输格式(3)同步接收方式8251A首先搜索同步字符。具体说,8251A检测RXD线,每当RXD线上出现上出现一个数据位时,就把它接收下来并把它送入串-并转换器中的移位寄存器移位,然后送到接收控制电路,将移位得到的内容与其中的同步字符寄存器的内容比较,如果不相等,则接收下一位数据,并重复上述比较过程,当相等时,8251A的SYNDET引脚输出高电平,以告示同步字符已经找到,同步已实现。(4)同步发送方式要在程序中将控制寄存器的TXEN位置1,并在CTS有效的情况下,才开始发送过程。此时,发送器先根据编程要求发送1个或2个同步字符,然后发送数据库。根据编程时的要求可以加奇偶校验位。在同步发送时,会遇到:8251A正在发送数据,而CPU却来不及提供新的数据给8251A,这时,8251A的发送器会自动插入同步字符,于是,就满足了在同步发送时不允许数据之间存在间隙的要求下图为8251A工作在同步方式时的数据传输格式6.3.38251A的对外信号8251A和CPU之间的连接信号8251A与外部设备之间的连接信号8251A与CPU和外设的连接关系1.8251A和CPU之间的连接信号(1)片选信号CS#为低电平时,8251A被选中(2)数据信号D7~D0与系统的数据总线相连(3)读写控制信号RD#为读信号。WR#为写信号。C/D#为控制/数据信号。C/D#、RD#、WR#的编码和对应的操作C/D#RD#WR#具体的操作001CPU从8251A读数据010CPU往8251A写数据101CPU读取8251A的状态110CPU向8251A写控制字在8251中,数据输入端口和数据输出端口合用一个偶地址,而状态端口和控制端口合用一个奇地址。方法:利用地址线A1来区分奇地址端口和偶地址端口。当A1=0时,选中了偶地址端口,再与RD#或WR#配合,就实现了数据的读写;当A1=1时,选中了奇地址端口,再与RD#或WR#配合,就实现了状态信息的读取或控制信息的写入。地址线A1的电平变化符合C/D#端信号的要求,因此将二者接在一起。(4)收发联络信号TXRDY为发送器准备好信号TXE发送器空信号RXRDY接收器准备好信号SYNDET同步检测信号2.8251A与外部设备之间的连接信号(1)数据信号TXD发送器数据信号端RXD接收器数据信号端(2)收发联络信号DTR#数据终端准备好信号DSR#数据设备准备好信号RTS#请求发送信号CTS#清除请求发送信号6.3.48251A的编程8位接口和16位数据总线的连接问题8251A的初始化模式寄存器的格式控制寄存器的格式状态寄存器的格式1.关于8位接口芯片和16位数据总线的连接问题解决方法:硬件上,将总线的A1与芯片的A0相连软件上,用连续的偶地址代替奇偶地址2.8251A的初始化8251A初始化的约定:复位后,用奇地址写入的值送模式寄存器。若为同步模式,接着往奇地址端口输出的字节为同步字符。此后,除复位命令,往奇地址写入的值将送到控制寄存器,往偶地址端口写入的值送到数据输出寄存器。8251A的初始化流程图3.模式寄存器的格式下图为8251A模式寄存器的格式(a)异步模式;(b)同步模式4.控制寄存器的格式5.状态寄存器的格式8251和Modem的连接(a:异步b:同步)6.3.58251A编程举例异步模式下的初始化程