第六章——串并行通信与接口技术

串行通信涉及到的几个问题

(一)
全双工方式:一个通信系统中,对数据的两个传输方向采用不同的通道,系统可以同时进行发送和接受。
半全工方式:输入过程和输出过程使用同一通道,所以,两个不能同时进行。
单工方式:系统只能在一个方向上传输信息,即只能发送或只能接受。

(二)按时钟对通信过程的定时方式:
同步方式:收发双方采用同一个时钟信号来定时。在每组信息的开始要加上同步字符,在没有信息要传输时,必须填上空字符,因为同步传输不允许有间隙。
异步方式:收发双方不用统一的时钟进行计时,两个字符之间的传输间隔是任意的,靠起始位和停止位来识别信息帧。
第六章——串并行通信与接口技术
上图为标准的异步通信数据格式
步骤:
1.在传输前,输出线必须处于“1”状态,称为标识态;
2.传输开始,输出线由标识态变为“0”态,从而作为起始位;
3.起始位后面为5~8个信息位,信息位由低到高排列,即第1位为字符的最低位,在同一个传输系统中,信息位的数目是固定的;
4.信息位后面为校验位,若为奇校验,前面偶数个1,则该位为1,校验位也可不设置;
5.最后为停止位,取值为’“1”,可占1、1.5、2位;

在异步通信中,发送端需要用时钟来决定每一位对应的时间长度,接收端也需要用一个时钟来确定每一位的时间长度,前者叫发送时钟,后者叫接受时钟。这两个时钟的频率可以是位传输率的16倍、32倍或64倍,这个倍数称为波特率因子。
若取波特率因子为16,。通信时,接收端在检测到电平由高到低变化以后,便开始计数,计数时钟就是接受时钟。当计到8个时钟以后,就对输入信号进行采样,如仍为低电平,则确认这是起始位,而不是干扰信号。此后接收端每隔16个时钟脉冲对输入信号进行一次采样,指导各个信息位以及停止位都输入以后,采样才停止。

(三)
传输率就是指每秒传输多少位,串行传输率也常叫波特率(bps)

串行接口

采用串行通信方式的外设,要用串行接口和计算机主机系统连接。串行接口部件内部有4个主要寄存器,即控制寄存器、状态寄存器、数据输入寄存器和数据输出寄存器。
第六章——串并行通信与接口技术
控制寄存器:容纳CPU送来的各种控制信息,以决定接口的工作方式。
状态寄存器:每1个状态位都可用来指示传输过程中的某一种状态。
数据输入寄存器和串行输入并行输出移位寄存器配对使用:输入过程中,串行数据1位1位从外设进入接口的移位寄存器,当接受完1个字符以后,数据就从移位寄存器送到数据输入寄存器,再等待CPU来取走。
数据输出寄存器和并行输入串行输出移位寄存器配对使用:当CPU往数据输出寄存器中输出1个数据后,数据便传输到移位寄存器,然后转换成串行数据1位1位通过输出线送到外设。
控制寄存器和数据输出寄存器是只写的,状态寄存器和数据输入寄存器是只读的,,所以可用读信号和写信号来区分这两组寄存器,再用一位地址来区分2个只读寄存器和2个只写寄存器,因此,4个寄存器只用两个端口地址。

8251A的基本工作原理

(一)8251A的基本性能

(1)可编程实现同步或者异步工作方式,波特率不同;
(2)同步方式:5-8bits代表字符,可奇偶校验
(3)异步方式:5-8bits代表字符,1bits奇偶校验;自动增加启动位、停止位。

(二)8251A的功能结构

第六章——串并行通信与接口技术
接收缓冲器:从RXD引脚接受串行数据,并转换成并行数据;
接受控制电路:配合接收缓冲器工作的,它管理有关接受的所有功能(各种检测);
发送缓冲器:把来自CPU的并行数据加上响应的控制信息,然后转换成串行数据从TXD引脚发送出去;
发送控制电路:与发送缓冲器配合工作,控制和管理所有与串行发送有关的功能;
数据总线缓冲器:用来把8251A和系统数据总线相连,在CPU执行输入/输出指令时,由数据总线缓冲器发送和接受数据,此外,控制字、命令字和状态信息也通过数据总线缓冲器传输。
读/写控制逻辑电路用来配合数据总线缓冲器工作:用来通知8521A当前读写的是数据还是控制字/状态字。
调制/解调控制电路:实现8251A和调制/解调器的连接。在进行远程通信时,常常要解调器将串行接口送出的数字信号变成模拟信号,再发出去,接收端则要用调制器将模拟信号变为数字信号,再由串行接口转换为并行数据送往计算机主机。在全双工通信情况下,每个收发站都要连接调制/解调器。有了调制/解调控制电路,就提供了一组通用的控制信号,使得8251A可直接和调制/解调器相连。

8251A的对外信号

第六章——串并行通信与接口技术
(一)8251ACPU之间的连接信号
(1)片选信号
CS :是CPU的一部分地址信号通过译码后得到的,代表是否选中芯片。
(2)数据信号
D7~D0:8251A有8根数据线,与系统的数据总线相连,也传送CPU对8251A的编程命令和8251A送往CPU的状态信息。
(3)读/写控制信号
RD :有效时通知8251A,CPU当前正从8251A读取数据或状态信息。
WR :有效时同时8251A,CPU当前正在往8251A写入数据或控制信息。
C/D :区分读写的是数据信息还是控制/状态信息。
第六章——串并行通信与接口技术
8251A只用两个连续的端口地址,数据输入端口和数据输出端口合用一个偶地址,状态端口和控制端口合用一个奇地址,在具体系统中,用1位地址线区分奇地址端口和偶地址端口,16位系统中用A1。
(4)收发联络信号
TxRDY:发送器准备好信号TxRDY告诉CPU,8251A已准备好发送一个字符,因而可往8251A传输一个数据。
TxE:发送器空信号TxE有效时,表示此时8251A发送器中并-串转换器空,指示了一个发送动作的完成。
RxRDY:接收器准备好信号RxRDY用来表示当前8251A已从外设或调制/解调接受到一个字符,正在等待CPU取走。
SYNDET:同步检测信号标志位。

(二)8251A外设之间的连接信号
(1)数据信号
TxD:输出数据,CPU送往8251A的并行数据转换为串行数据后,通过TxD送往外设。
RxD:接收外设送来的串行数据,数据进入8251A后转换为并行方式。
(2)和外设的联络信号
DTR :数据终端(8251A)准备好信号
DSR :数据设备(外设)准备好信号,是对DTR 的应答信号,告诉对方可以通信(外设发数据给8251A)
RTS :请求发送信号
CTS :清除发送信号,是对RTS 的应答信号,表示可以进行通信(8251A发送数据)
上述联络信号本质为CPU与外设的联络,8251A起媒介作用。

8251A的编程

(一)8251A的初始化
8251A有一奇一偶两个端口地址,偶地址端口对应数据输入/输出寄存器,奇地址端口对应状态寄存器、模式寄存器、控制寄存器和同步字符寄存器。
初始化步骤:
(1)芯片复位后,第一次用奇地址端口写入的值作为模式字送入模式寄存器。
(2)如果模式字中规定了8251A工作在同步模式,那么,那么,CPU接着往奇地址端口输出的就是同步字符,同步字符被写入同步字符寄存器。若此前规定同步字符为两个,则按先后次序分别写入第一个同步字符寄存器和第2个同步字符寄存器。
(3)此后,只要不是复位命令,不管是同步模式还是异步模式,由CPU往奇地址端口写入的值都将作为控制字送到控制寄存器,而往偶地址端口写入的值都将作为数据送到数据发送缓冲器中。
流程图
第六章——串并行通信与接口技术

(二)模式寄存器的格式
第六章——串并行通信与接口技术
对8251A进行初始化时,要按模式寄存器的格式来设置模式字。

(三)控制寄存器的格式
第六章——串并行通信与接口技术
上图为控制寄存器的格式,一般写入x0110111。

(三)状态寄存器的格式
第六章——串并行通信与接口技术
当需要检测8251A的工作状态时,经常要用到状态字。
当CPU往8251A输出1个字符以后,状态位TxRDY会自动清0,与此类似,当CPU从8251A输入1个字符时,状态位RxRDY会自动清0。

8251A编程举例

(一)异步模式下的初始化程序举例
模式字和控制字都必须写入奇地址端口,这里假设为42H。
设置模式字时,设定了字符用7位二进制数表示,带1个偶校验位、2个停止位,波特率因子为16,故模式字应为11111010,即0FAH。
设置控制字时,设置为00110111,即37H。
第六章——串并行通信与接口技术
(二)同步模式下的初始化程序
模式字为00111000,即38H。用两个同步字符,采用内同步模式,用偶校验,用7位作为数据位。
2个同步字可相同也可不同,他们必须紧跟在模式字后面写入奇地址端口。
控制字为10110111,即B7H。
第六章——串并行通信与接口技术
(三)利用状态字进行编程
功能:先对8251A进行初始化,再对状态字作测试,以便输入字符。本程序段可用来输入80个字符。
这里规定8251A的控制和状态端口地址为42H,数据输入和数据输出端口地址为40H。字符输入后,放在BUFFER标号所指的内存缓冲区中。
第六章——串并行通信与接口技术
注释:
1.异步模式下的初始化;
BEGIN:
1.42H的端口读取1个字节送到AL中(状态寄存器);
2.测试该字节的第1位,RxRDY;
3.如果等于0的话,则8251A未收到数据还没有,跳到BEGIN继续查询;
4.40H的端口读取一个字节到AL;
5.将BUFFER的有效地址送到DX;
6.将AL中的内容送到内存;
7.内存指针加1;
8.42H的端口读取1个字节到AL(状态寄存器);
9.检测三个错误位;
10.如果不等于0,跳到ERROR;
11.否则继续循环,直到CX等于0;

输出举例:
第六章——串并行通信与接口技术
注释:
1.查询TxRDY,是否可以发送数据;
2.从堆栈中将AX弹出;
3.将AL的数据发送到端口中;