第八章 串行通信及接口电路
第一节 串行通信的基本概念
在计算机领域内,有两种数据通信方式:并行通信和串
行通信。随着计算机网络化和微机分级分布式应用系统
的发展,通信的功能越来越重要。通信是指计算机与外
界的信息传输,既包括计算机与计算机之间的传输,也
包括计算机与外部设备,如终端、打印机和磁盘等设备
之间的传输。
第五章我们已经讲了并行通信,而随着通信技术和计
算机网络技术的发展、Internet网的普及,计算机远程通
信已渗透到国民经济的各个领域,而远程通信绝大多数
采用串行通信的方式,所以了解和研究串行通信中的概
念和技术有非常重要的意义。
一、串行通信的特点
数据在单条一位宽的传输线上,一比特接一比特地按
顺序传送的方式称为串行通信。
如图(a)所示的并行通信中,一个字节(8位)数据是
在8条并行传输线上同时由源传到目的地;而在图(b)
所示的串行通信方式中,数据是在单条1位宽的传输线上
一位接一位地顺序传送。这样一个字节的数据要分8次由
低位到高位按顺序一位位地传送。由此可见,串行通信
的特点如下:
1、节省传输线,这是显而易见的。尤其是在远程通信
时,此特点尤为重要。这也是串行通信的主要优点。
2、数据传送效率低。与并行通信比,这也这是显而易
见的。这也是串行通信的主要缺点。
例如:传送一个字节,并行通信只需要1T的时间,而串
行通信至少需要8T的时间。
由此可见,串行通信适合于远距离传送,可以从几米
到数千公里。对于长距离、低速率的通信,串行通信往往
是唯一的选择。并行通信适合于短距离、高速率的数据传
送,通常传输距离小于30米。特别值得一提的是,现成的
公共电话网是通用的长距离通信介质,它虽然是为传输声
音信号设计的,但利用调制解调技术,可使现成的公共电
话网系统为串行数据通信提供方便、实用的通信线路。
二、串行通信的一些基本概念和常用术语
1、串行数据在传输线上的形式和标准
串行数据在传输时通常采用调幅(AM)和调频(FM)两
种方式传送数字信息。远程通信时,发送的数字信息,如
二进制数据,首先要调制成模拟信息。
⑴ 调幅方式
幅度调制是用某种电平或电流来表示逻辑“1”,称为
传
号(mark);而用另一种电平或电流来表示逻辑“0”,
称
为空号(space)。出现在传输线上的mark/space的 串行
数据形式如图所示。
使用mark/space形式通常有四种标准,TTL标准、RS-232
标准、20mA电流环标准和60mA电流环标准。
① TTL标准:用+5V电平表示逻辑“1”;用0V电平表示逻辑
“0”,这里采用的是正逻辑。
② RS-232标准:用-5V— -15V之间的任意电平表示逻辑“1”
;用+5V — +15V电平表示逻辑“0”,这里采用的是负逻辑。
③ 20mA电流环标准。线路中存在20mA电流表示逻辑1,不
存在20mA电流表示逻辑0。
④ 60mA电流环标准。线路中存在60mA电流表示逻辑1,不
存在60mA电流表示逻辑0。
⑵ 调频方式
频率调制方式是用两种不同的频率分别表示二进制中的逻
辑1和逻辑0,通常使用曼彻斯特编码标准和堪萨斯城标准。
①曼彻斯特编码标准,它的数据形式如图所示。这种标
准兼有电平变化和频率变化来表示二进制数的0和1。从图中
可看出。每当出现一个新的二进制位时,就有一个电平跳
变。如果该位是逻辑1,则在中间还有一个电平跳变;而逻
辑0仅有位边沿跳变。所以逻辑1的频率比逻辑0的频率大一
倍。曼彻斯特编码标准通常用在两台计算机之间的同步通信。
② 堪萨斯城标准,它的数据形式如图所示。它用频率
为1200Hz中的4个周期表示逻辑0;而用频率为2400Hz中的
8个周期表示逻辑1。
2、局域网中常用的数字编码技术
在局域网中常用的数字信号编码有以下3种,如图所示。
⑴ NRZ 编码
NRZ 编码又称为不归零编码,常用正电压表示“1”,
负
电压表示“0”,而且在一个码元时间内,电压均不需要
回
到零。其特点是全宽码,即一个码元占一个单元脉冲的
宽度。
⑵曼彻斯特(Manchester)编码
在曼彻斯特编码中,每个二进制位(码元)的中间都有
电压跳变。用电压的正跳变表示“0”,电压的负跳变表
示
“1”。由于跳变都发生在每一个码元的中间位置(半个
周
期),接收端就可以方便地利用它作为同步时钟,因此
这种曼彻斯特编码又称为自同步曼彻斯特编码。目前最
广泛应用的局域网—以太网,在数据传输时就采用这种
数字编码。
⑶ 微分曼彻斯特编码
这种编码是曼彻斯特编码的一种修改形式,其不同之处
时:用每一位的起始处有无跳变来表示“0”和“1”,
若有跳
变则为“0”,无跳变则为“1”;而每一位中间的跳变
只用来
作为同步的时钟信号,所以它也是一中自同步编码,
自同步曼彻斯特编码和微分曼彻斯特编码的每一位都是
用不同电平的两个半位来表示的,因此始终保持直流的
平衡。不会造成直流的累积。
3、数据传输率
数据传输率是指单位时间内传输的信息量,可用比特率
和波特率来表示。
⑴比特率:比特率是指每秒传输的二进制位数,用bps
(bit/s)表示。
⑵ 波特率,波特率是指每秒传输的符号数,若每个符号
所含的信息量为1比特,则波特率等于比特率。
在计算机中,一个符号的含义为高低电平,它们分别代
表逻辑“1”和逻辑“0”,所以每个符号所含的信息量刚
好为
1比特,因此在计算机通信中,常将比特率称为波特率,
即:
1波特(B)= 1比特(bit)= 1位/秒(1bps)
例如:电传打字机最快传输率为每秒10个字符/秒,每个
字
符包含11个二进制位,则数据传输率为:
11位/字符×10个字符/秒=110位/秒=110波特(Baud)
计算机中常用的波特率是:110、300、600、1200、
2400、4800、9600、19200、28800、33600,目前最高可
达56Kbps.
⑶ 位时间Td
位时间是指传送一个二进制位所需时间,用Td 表示。
Td = 1/波特率 = 1/B
例如:B=110波特/秒 , 则Td = 1/110 ≈
4、发送时钟和接收时钟
在串行通信中,二进制数据以数字信号的信号形式出现
,不论是发送还是接收,都必须有时钟信号对传送的数
据进行定位。在TTL标准表示的二进制数中,传输线上高
电平表示二进制1,低电平表示二进制0,且每一位持续
时间是固定的,由发送时钟和接收时钟的频率决定。
⑴ 发送时钟
发送数据时,先将要发送的数据送入移位寄存器,然
后在发送时钟的控制下,将该并行数据逐位移位输出。通
常是在发送时钟的下降沿将移位寄存器中的数据串行输
出,每个数据位的时间间隔由发送时钟的周期来划分,
参见图所示。
⑵ 接收时钟
在接收串行数据时,接收时钟的上升沿对接收数据采样,
进行数据位检测,并将其移入接收器的移位寄存器中,最
后组成并行数据输出,如图所示。
⑶ 波特率因子
接收时钟和发送时钟与波特率有如下关系:
F = n × B
这里F 是发送时钟或接收时钟的频率;
B 是数据传输的波特率;
n 称为波特率因子。
设发送或接收时钟的周期为Tc,频率为F的位传输时间
为Td,则:
Tc = 1/F , Td = 1/B
得到: Tc = Td /n
在实际串行通信中,波特率因子可以设定。在异步传送
时,n = 1,16,64,实际常采用n = 16,即发送或接收时
钟的频率要比数据传送的波特率高n倍。在同步通信时,
波特率因子n必须等于1。
三、串行通信的连接方式
串行通信中,两个设备之间连接的数据通路有三种方
法,如图所示。
1、单工(simplex)连接
这种连接方式仅能进行一个方向的数据传输,如图
(a)中,A设备只能发送,B设备只能接收,即数据传输只
能从A传送到B。
2、半双工(half-duplex)连接
两个设备A、B之间可交替地进行双向数据传送,但不
能同时发送或同时接收。在某一时刻A作为发送器,B作
为接收器,数据由A传送到B;而在另一时刻,B作为发
送器,A作为接收器,数据从B传送到A,如图(b)所
示。
图 串行通信的连接方式
3、全双工(full-duplex)连接
两个设备A、B之间可同时进行数据传送,如图
(c)
所示。半双工连接时,A、B设备之间只需要一根传输线
,而全双工连接时, A、B设备之间需要两根传输线。为
了实现全双工传输,A设备和B设备必须有独立的发送器
和接收器。在同一时刻,可以从A向B传送和B向A传送,
这相当于有两个独立的单工连接。
四、信号的调制和解调
1、概述
计算机通过串行口发送出去或接收到的信息一般只能
是调幅制的数字信息。采用TTL标准、RS-232或20mA电
流环等标准的调幅制数字信息,只适合于近距离的通信。
远程有线通信大都数是通过电话线传输的,而电话线只能
传输调频制的音频信息。因此,在两台计算机进行远距离
传送时,发送端将信息送上电话线之前,要用调制器
(modulation )将数字信息转换为模拟信息,然后通过
电话线传输到接收方,而接收方要用解调器
(demodulation)
检测电话线上的模拟信息,再将其转换为数字信息,再通
过接口送入接收方的计算机。
2、调制解调器(modem)的基本原理
一般的modem都具有调制和解调双重功能,利用调制和
解调两个过程完成数字信号在模拟通道(例如电话线)上
的传输。所谓调制过程就是用数字信号去控制载波信号的
参数;解调过程则是检测载有数字信号的载波信号参数的
变化,将数字信号分离出来。载波信号通常可表示为:
其中:A为幅度,ω 为角频率,φ 是初始相位。
数字信号可分别对载波信号的这三个参数进行控制,以
实现幅度调制(ASK)、频率调制(FSK)和相位调制(
PSK)三种调制方式。参见图所示。
目前,在调制解调器中常用的调制技术是频率调制,即
频移键控方式。
图是频移键控方式的基本原理。数字信号1和0分别
调制成不同频率的模拟信号。图中S1、S2是两个电子模
拟开关,分别控制两个不同频率的模拟信号,开关接通,
则该频率的模拟信号送到运算放大器的反相输入端。而
电子开关由被传输的数字信号控制。当数字信号为0时,
开关S2接通,送出频率为f2的模拟信号;当数字信号为1
时,开关S1接通,送出频率为f1的模拟信号,经运算放大
器合成后,输出就是经调制后的两种频率的模拟信号。通
常f1为2400Hz的正弦信号(数字1),f2为1200Hz的正弦
信号(数字0)。
在接收端用解调器检测调制后的模拟信号,再将它转换成
数字信号,这样就实现了调制和解调的过程。
3、调制解调器的基本功能
⑴调制解调器应有调制和解调的功能,这是显而易见的,
正如上面所述的。
⑵调制解调器一般应具有呼叫和应答功能,使之能像电
话线那样,具有线路接通、线路接续和拆除的功能。
呼叫和应答有人工和自动两种方式。人工方式的呼叫
和应答过程均由人工控制完成;而自动方式是利用具有
自动呼叫和应答功能的调制解调器来完成的。
⑶ 大多数调制解调器具有自动差错校正和速率转换功能
。在调制解调器内部附有硬件电路提供MNP差错校正协
议(Microcom Networking Protocol),这个协议有两个主
要功能:差错校正和速率转换,另外还具有;流量控制
功能。
4、调制解调器的基本组成
如图所示,调制解调器一般由基带处理、调制解
调和信道形成3大部分组成,其中调制解调是其核心,此
外还有均衡和取样判决两部分。
5、调制解调器的应用
调制解调器主要用于远距离通信,在远距离通信时,调
制解调器的连接如图 所示。
图中数据终端设备DTE(Data Terminal Equipment)和数
据通信设备DCE(Data Communication Equipment)通过
串行接口RS-232C连接。 DTE设备通常就是计算机,DCE
设备通常指Modem。两个DCE设备之间用电话线连接,以
实现远距离通信。
5、调制解调器的速率转换、常用控制信号和状态信号
⑴ Modem的传输速率
Modem按传输速率可分为低速、中速和高速三类。传输
速率低于2000波特为低速Modem,传输速率在2000至9600
波特之间的为中速Modem,传输速率高于9600波特的称为
高速Modem。目前Modem的最高速率为56Kbps。
⑵ Modem的常用控制信号
从计算机通过RS-232C接口送给Modem的控制信号有:
① 数据终端设备准备好信号DTR(Data Terminal Ready)。
当数据终端设备(DTE)接通电源并进入工作状态后,就向
数据通信设备DCE发出DTR信号。此信号从DTE→DCE。
②请求发送信号RTS(Request To Send)。当数据终端设备准
备发送数据时,就向数据通信设备发出RTS信号。数据终
端设备在收到数据通信设备的允许发送信号CTS后,数据
发送才开始进行。此信号从DTE→DCE。
⑶ Modem的常用状态信号
从Modem通过RS-232C接口送给计算机的状态信号有:
① 数据通信设备准备好信号DSR(Data Set Ready)。在数据
通信设备接通电源并进入工作状态后,即向数据终端设备
发出DSR信号。DTR设备收到DCE设备的DSR信号后,即
发出请求发送信号RTS,开始进行通信。
此信号从DCE → DTE 。
② 允许发送信号CTS(Clear To Send)。这是数据通信设
备收到数据终端设备发来的RTS信号后,则先启动发送功
能,然后向数据终端设备发出CTS信号,允许数据终端设
备开始发送数据。此信号从DCE → DTE。
③ 数据载波检测信号DCD(Data Carrier Detected)。当数
据通信设备检测到线路上出现有效载波信号后,就向数
据终端设备发出DCD信号。此信号从DCE → DTE。
④ 振铃指示信号RI(Ring Indicat)。当数据通信设备接收
到电话交换设备的振铃信号(Ring Signal)时,则输出RI
信号给数据终端设备。此信号从DCE → DTE。
五、串行通信中常用的传输介质
数据通信中,传输介质是必不可少的,所谓传输介质
是指数据传输的物理载体,介质的特性将直接影响到数
据传输的性能指标。在有线传输介质中,主要包括平行
线、双绞线、同轴电缆和光导纤维。
1、平行线(Parallel Line)
平行传输线主要是指电话线,通常传输音频模拟信号,
也可以用来传输经过调制的速率不太高的数字信号。当
前随着Internet的迅速发展,PC机用户可以通过MODEM
和普通的电话线拨号上网,实现远距离通信。
2、双绞线(Twisted Pair Line)
双绞线是由呈螺旋排列的两根绝缘导线组成的,两根
导线相互扭绞在一起,可使线对之间的电磁干扰减至最
小。双绞线既可传输模拟信号,也可传输数字信号。一
般情况下,在100米内的传输速率可达10Mb/s。如果在一
定距离内加入中继器(Repeater),则传输距离可以延长。
在局域网中,双绞线是一种廉价的传输介质。
在局域网中使用的双绞线有屏蔽双绞线STP和无屏蔽
双绞线UTP两类,每一类中又分若干等级。如UTP分为三
种:3类UTP(传输带宽为16MHz)、4类UTP(传输带宽
为20MHz)和5类UTP(传输带宽为100MHz)。在100Mb/s
的高速局域网中,通常使用5类UTP或STP作为传输介质。
3、同轴电缆(Coaxial Cable)
同轴电缆由内、外导体组成,内导体是单股或多股线,
外导体是圆柱形的,通常由编织线组成,并围裹内导体。
内外导体之间有绝缘材料固定,外导体外面再由一层塑
料来覆盖。
在局域网中主要使用两种同轴电缆,一种是50Ω电缆,
即特性阻抗为50Ω的同轴电缆,主要用于基带信号传输。
所谓基带信号是指以数字信号位流形式进行的传输,不
用任何调制,是一种广泛用于局域网的信号传输技术,
其传输速率可达1-20Mb/s。
另一种同轴电缆是特性阻抗为75Ω的公用天线电视(
CATV)电缆,既可用于传输模拟信号,也可用于传输数
字信号。这种电缆的传输带宽可达300-400MHz,可用于
宽带信号的传输。
4、光导钎维(Fiber)
光导钎维简称光纤,是一种能传送光波的介质。它的
内层是具有较高折射率的光导玻璃纤维,外层包裹着一
层折射率较低的材料,利用不断的全反射来传送被调制
的光信号。实际上,光纤在覆盖可见光和部分红外线谱
(即1014-1015Hz)的范围内起着波导的作用。
在光纤系统中,发送端用电信号对光源进行光强控制,
从而将电信号转化为光信号;接收端用光检波二极管再
把光信号还原为电信号。光纤不易受电磁干扰和噪声的
影响,可进行远距离、高速率的数据传输,并具有很好
的保密性能,是一种最有发展前途的通信介质。
5、无线介质
无线介质实际上是一种无线传输,通常通过通信卫星
来实现。无线传输真正的介质是自由空间,通信卫星只
起到中继作用。在通信卫星上有多个信号转发器,可将
来自地面上的信号经放大和频率变换后,再发回地球上
它所覆盖的范围内,从而实现数据传输。
一般情况下,适当布局3颗地球同步通信卫星即可覆盖
整个地球。国际上对通信卫星的使用轨道和频段达成协
议,规定上行频段为,下行频段为
GHz,上行与下行频段带宽均为500MHz,通常称为
4/6GHz波段,但目前该波段的使用已经非常拥挤。协议
中还分配了另外两个波段,即12/14GHz和20/30GHz波段
,这两个波段由于频率高,设备昂贵,目前使用还不太
拥挤。
一个典型的通信卫星在4/6GHz波段将500MHz分配给
12个信号转发器,每个转发器有36MHz带宽,因此具有
很强的数据传输能力。由于同步卫星在离地球36000公里
的高空,信号转发时,传输距离很远,所以会产生较大
的延迟,一般在250ms-300ms之间,典型值为270ms,延
迟值比地面上微波线路要大。因此,卫星传输适合于远
距离、大容量、长报文的数据传输,其传输线路可靠性
高,数据传输的质量也好。
六、串行通信的检错和纠错
信息的正确性对计算机的可靠工作具有极其重要的意
义,但在信息的存储与传输过程中,常可能由于某种干
扰或其他不可靠因素的存在而发生差错。
在串行通信中,由于线路长和噪声干扰的存在,会导
致信息传输过程中出现错误。为保证信息传输的正确性
,必须对传输的数据信息进行差错检查和校正,即检错
和纠错。检错是如何发现传输中的错误,而纠错是发现
错误后如何消除错误。在基本通信协议中,一般采用奇
偶检验或方阵码检错,以反馈重发方式纠错。在高级通
信协议中,一般采用循环衷冗余码(CRC)检错,以自
动纠错方式来纠错。
1、奇偶校验
奇偶校验是最简单最常用的校验方法。它的基本原理
是在所传输的有效数据中附加冗余位(即检验位)。利
用冗余位的存在,使整个信息位(包括有效位和检验位)
中“1”的个数具有奇数或偶数的特性。整个信息位经过
线
路传输后,若原来所具有的“1”的个数的奇偶性发生了
变
化,则说明出现了传输错误,可由专门的检测电路检测
出来。这种利用信息位中“1”的个数的奇偶性来达到检
验
目的的编码称为奇偶校验码。使整个信息位“1”的个数
为
奇数的编码叫奇校验码;而使整个信息位“1”的个数为
偶
数的编码叫偶校验码。附加的信息位称为奇偶校验位,简
称校验位。需要传送的数据位本身称为有效信息位。
通常将一个校验过程分为编码和解码两个过程。下面
以偶校验为例说明其编码和解码的过程。
编码:发送器将某一数据发送前,统计有效信息位中
“1”的个数,若为奇数,则在附加的校验位处填“1”;
若为
偶数,则在校验位处填“0”,以使整个信息位“1”的个
数为
偶数,这一过程也称为配校验位。发送器完成这一过程是
由硬件自动进行的,配好后,则发送出器出去,具体实现
的电路如图所示,所产生的校验位加在有效信息位的
后面,即第8位(有效信息位是7位)。图中最后一位是停
止位,表示一个字符数据的结束。
例1:有效信息位是1011101,采用偶校验,则附加的校
验位是1。最后得到的信息是10111011
例2:有效信息位是1011011,采用奇校验,则附加的校
验位是0。最后得到的信息是10110110
解码:接收器在接收数据时,将接收到的整个信息位(
包括校验位)经由专门的检测电路统计。对于例1,若
“1”
的个数仍为偶数,则认为接收的数据是正确的;否则,
表明有差错出现,应停止使用这个数据,要求重新发送,
或作其他专门处理。
接收器的检测也是由硬件自动完成的,参见图,
最后由硬件给出奇偶校验结果供计算机检测。
2、方阵码校验
方阵码校验是奇偶校验与“检验和”的综合。例如,
每
个7位编码的字符后附加1位奇偶校验位,以使整个字符
的“1”的个数为偶数或奇数。若干个字符组成一个数据
块,
列成方阵,再在纵向按位加,产生一个字符的检验字符
,并将它附在数据的末尾。这一检验字符是所有数据字
符“异或”的结果,反映了整个数据的奇偶性。方阵检
验
字符的生成原理如图所示,图中采用偶校验。在数据
接收过程中,数据块读出产生一个检验字符,并与发送
来的检验字符进行比较,若两者不同,说明出现差错,
则以反馈重发来纠错。若两者相同,表示接收数据正确。
字符代码 奇偶位(偶校验位)
0 0 1 0 1 1 1 0
0 1 0 0 0 0 0 1
1 0 1 0 1 1 0 0
1 1 1 1 0 0 0 0
1 1 0 0 0 0 1 1
1 1 1 1 0 0 0 0 ← 检验字符
图 方阵检验字符生成原理
3、CRC校验
CRC(Cyclic Rendundancy Cheek)是循环冗余校验的
缩写字母,它是利用编码原理,对传送的二进制码序列
以一定的规则产生一定的校验码,并将校验码放在二进
制序列之后,形成符合一定规则的新的二进制码序列
(称为编码),并将新的二进制码序列发送出去。在接
收时,就根据信息和校验码之间所遵循的规则进行检测
(称为译码),从而检测出传输过程中是否发生差错。
CRC校验是对整个数据块进行校验,所以同步串行通信
都采用CRC校验。
⑴ 模2运算
所谓模2相加就是两个二进制数相加的结果被2除,并
以所得的余数作为和数,即进行半加不进位。“模”是
取
余数的意思。模2加相当于作异或运算。
例3:1+1=2,它被2除后,余数为0,所以1+1的模2加
法,其结果应为0,记作1+1=0(mod 2)或记作1⊕1= 0 。
⑵ 二进制代码的多项式运算
根据模2加法的运算规则,二进制多项式的加法等于二
进制多项式的减法。
例4:有两个多项式M1(x)和M2(x)
则有 M1(x)+M2(x) = M1(x)-M2(x)
而进行多项式乘法和除法,则跟普通代数多项式的乘
法和除法一样,例如对除法有:
M1(x)/ M2(x) = Q(x) + R(x)/ M2(x)
其中, Q(x) 为商, R(x)为余数。若能除尽,则余数
R(x)等于0 。
例5: M1(x) = x7+x6+1 , M2(x) = x7+x5+x2+1
则 M1(x) + M2(x) = x6+x5+x2
M1(x) - M2(x) = x6+x5+x2
⑶ 线性分组码和循环码
①二进制码的多项式表示
二进制码可以表示成二进制多项式,例如,二进制码
10101101,其代码多项式M(x)为:
M(x) = A7x7+A6x6+A5x5+A4x4+A3x3+A2x2+A1x1+A0x0
= 1x7+0x6+1x5+0x4+1x3+1x2+0x1+1x0
= x7+x5+ x3+x2+1
这里x的指数i仅表示各比特在多项式中的位置,如i=0
表示第0位,i=7表示第7位等。
从上式可看出,二进制多项式的系数取值只能是0或1。
一个8位比特组,可以用7次多项式来表示,以次类推,n
位的比特组可以用n-1次多项式来表示。
② 线性分组码和循环码的组成
在一个长度为k的二进制信息序列后,附加上一定规则
的校验位r(r = n – k)后,组成了长度为n的二进制信息序
列,称为n位循环码,如图所示。
n位循环码
k位 r位
信息段 校验段
图8. 16 n位循环码
这种码又称为(n,k)码。如果r个校验位中,每一位
都由k个信息位中的某几位线性模2相加得到,则这样的循
环码又称为线性分组码。
例6:信息位为3位(k=3 ),设每一段加4个校验位
(r=4)
,其二进制多项式T(x)可写成:
T(x) = xrB(x)+R(x)
= x4(B6x2+B5x1+B4x0) + (B3x3+B2x2+B1x1+B0x0)
= B6x6+B5x5+B4x4+ B3x3+B2x2+B1x1+B0x0
按如下规则编成一个(7,3)循环码:
B3= B6 ⊕B4
B2= B6 ⊕B5⊕B4
B1= B6 ⊕B5
B0= B5 ⊕B4
式中B6 、B5、B4为信息段多项式的系数, B3 、B2、B1
和B0是校验段的多项式系数。按上述规则输出的码字可
列表如下:
表8-1: 例6(7,3)循环码的编码
从表中可以得出下面两个性质:
ⅰ 封闭性:任意两个码字的对应位按模2相加,得到的结
果仍是8个码字中的一个码。这称为“封闭性”,是线性
码
的一个重要性质。
ⅱ 循环性:如果将一个线性码的一个码字循环右移一位,
所得到的码仍是这8个线性码中的一个码字,所以这种线
性码称为循环码。
k位信息位对应于一个(k-1)次的多项式B(x),r位校
验位(又称冗余位)对应一个(r-1)次的多项式R(x)。
由k位信息位后面加上r位校验位组成n=k+r位的码字,码
字对应于(n-1)次的多项式T(x),这里
T(x) = xrB(x) + R(x)
例7:信息位:1011001 B(x) = x6+x4 + x3 + 1
冗余位:1010 R(x) = x3+x1
则码字:10 110011010 T(x) = x4B(x) + R(x)
= x10+x8 + x7 + x4+x3 + x1
⑷冗余位如何产生
由信息位产生冗余位的编码过程,就是已知B(x) 求R(x)
的过程。在CRC码中可以由一个特定的r次多项式G(x)(
其最高项 xr的系数恒为1),然后用xrB(x)去除以 G(x),
得到的余式就是R(x)。所以G(x)称为生成多项式。要指出
的是,这些多项式中的运算都是模2运算,即模2加和模2
减,它们都是不考虑加法进位和减法借位的运算。
其中余式R(x)的系数就是冗余位,看下面的例子。
例8:例7中B(x) = x6+x4 + x3 + 1(即信息位是1011001)
若G(x) = x4+x3 + 1(对应代码11001),即r=4,则
x4B(x) = x10 + x8 + x7 + x4( 对应代码为10110010000)
其由模2除法求R(x)的过程如下:
1101010
11001 10110010000
11001
11110
11001
11110
11001
11100
11001
1010
得到的余数为1010,这就是冗余位,对应的余式
R(x) = x3 + x
⑸ CRC校验原理
由于R(x) 是xrB(x)除以G(x)的余式,那么下列关系式必
然满足:
xrB(x) = G(x) Q(x) + R(x)
其中Q(x)是商式。可将上式改写为:
xrB(x) - R(x) = G(x) Q(x)
根据模2运算规则有xrB(x) + R(x) = xrB(x) - R(x) ,所以
上式可写为:
xrB(x) + R(x) = G(x) Q(x)
再改写为: [xrB(x) + R(x)] / G(x) = Q(x)
即 T(x) /G(x) = Q(x)
由此可见,信道上发送的码字多项式T(x) = xrB(x) + R(x)
,若传输过程无错,则接收方收到的码字也对应于此多
项式,即收到的码字多项式也能被G(x)整除。因此,接收
端的校验过程就是将接收到的码字多项式除以G(x)的过程
。若得到的余式为零则认为传输无差错;若余式不为零
则 传输有差错。
⑹ 码字多项式和生成多项式
① 码字多项式T(x) = xrB(x) + R(x) 是生成多项式G(x)的
倍数,即它能被G(x)除尽;码字多项式T(x) 中的高次项
多项式xrB(x) 的系数仍是原信息码,而低次项多项式R(x)
是余数多项式,它的各项系数作为校验码(冗余位),
即CRC校验码。 CRC校验码可以是16位或32位。
② 生成多项式G(x)
生成多项式的位数越多其校验能力越强,但并不是任何
一个r + 1位的二进制数都可以做生成多项式。目前广泛使
用的生成多项式主要有以下四钟:
CRC12= x12 + x11 + x3 + x2 + 1
CRC16= x16 + x15 + x2 + 1 (IBM公司)
CRC16= x16 + x12 + x5 + 1(CCITT)
CRC32= x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7
+ x5 + x4 + x2 + x + 1(目前以太网中广泛采用)
例9:已知(7,3)循环码,生成多项式
G(x)= x4 + x3 + x2 + 1 ,设信息码为B = 101,求
CRC校验码。
解:由题义,可知k=3,r=4,n=7,校验位是4位
信息多项式B(x)= x2 + 1 ,提阶后的信息多项式为:
x4 B(x) = x6 + x4
即 Q(x) = x2 + x + 1 R(x) = x + 1
所以4位校验码是0011
第二节 串行通信协议
一、概述
在数据通信中还有一个十分重要的问题就是同步问题。
为使发送、接收的信息准确,发、收两端的动作必须相
互协调配合。倘若两端互不联系、协调,则无论怎样提
高发送和接收动作的时间精度,它们之间也会有极微量
的误差。随着时间的增加,就会有误差积累,最终会产
生失步。发、收动作一旦失步,就不能正确传输信息,
结果会产生差错。因此,整个计算机通信系统能否正确
工作,在很大程度上取决于发、收两端能否很好地同步。
所谓“同步”就是互相通信的双方协调发送和接收之间的动
作。为了实现同步,互相通信的双方必须就数据传输方
式、同步控制方式、差错处理、应答方式和信号格式等
问题作出共同遵守的一组规定,这种规定称为通信协议。
目前串行通信中数据传输的同步方法有两种,即异步方
式和同步方式,相应的有异步通信协议和同步通信协议。
二、异步通信协议
1、串行异步通信时的数据格式
异步方式通信ASYNC(Asynchronous Data Communication),
又称起止式异步通信,是计算机通信中最常用的数据
信息传输方式。它是以字符为单位进行传输的,字符之
间没有固定的时间间隔要求,而每个字符中的各位则以
固定的时间传送。收、发双方取得同步的方法是采用在
字符格式中设置起始位和停止位。在一个有效字符正式
发送前,发送器先发送一个起始位,然后发送有效字符
位,在字符结束时再发送一个停止位,起始位至停止位
构成一帧。串行异步传输时的数据格式如图所示。
从图中可以看到以下几点:
⑴ 起始位:起始位必须是持续一个比特时间的逻辑“0”
电
平,标志传送一个字符的开始。
⑵ 数据位:数据位为5-8位,它紧跟在起始位之后,是被
传送字符的有效数据位。传送时先传送字符的低位,后
传送字符的高位。数据位究竟是几位,可由硬件或软件
来设定。
⑶ 奇偶位:奇偶校验位仅占一位,用于进行奇校验或偶
校验,也可以不设奇偶位。
⑷ 停止位:停止位为1位、位或2位,可有软件设定。
它一定是逻辑“1”电平,标志着传送一个字符的结束。
⑸ 空闲位:空闲位表示线路处于空闲状态,此时线路上
为逻辑“1”电平。空闲位可以没有,此时异步传送的效
率
为最高。
例1:试画出用异步协议传送字符“E”的波形图。要求
加
偶校验位和一位停止位。
解:字符“E”的ASCII码为45H,即1000101,其传送的
波
形图如图所示。
2、串行异步通信时的数据接收
串行异步通信时,接收方不断地检测或监视串行输入
线上的电平变化,当检测到有效起始位出现时,便知道
接着是有效字符位的到来,并开始接收有效字符,当检
测到停止位时,就知道传输的字符结束了。经过一段随
机时间间隔之后,又进行下一个字符的传送过程。
通常接收端的采样时钟周期要比传输字符的位周期短,
常用的采样时钟频率为位频率的16倍,采取这种措施是
为了提高抗干扰能力,参看图所示。从图中可知,传
输字符的位周期Td等于采样时钟周期Tc的16倍。接收器的
采样时钟的每个上升沿对输入信号进行采样,检验接收
数据线上的低电平是否保持8或9个连续的时钟周期,以
确定传输线上的低电平是否是真的起始位。这样就可以
避免噪声干扰引起的误操作,从而删除假的起始位。相
当精确地确定起始位的中间点,从而提供一个时间基准,
从这个基准开始,每隔16个Tc对其余数据位采样,以确
保传输数据的正确性。
保传输数据的正确性,如图所示。一个字符的数据为8位,校验位1
位,停止位1位,其采样的时间基准可确保采样时刻在每一位的中间。
接收端为实现采样数据的基准,可以执行以下步骤:
⑴ 在接收端设置一采样时钟频率计数器,当检测到起始
位下降沿时,将其清零,并开始对采样时钟计数,即每
来一个时钟,计数器加1。
⑵ 当计数器计到8时,表示已到达起始位的中间位置,此
时采样值为0,说明是真正的起始位,同时将计数器清零;
若采样值不为0,则说明一开始检测到的下降沿不是真正
的起始位前沿,而是一次干扰,此次检测应作废,计数
器清零,并重新开始检测起始位。
⑶ 检测到真正的起始位后,计数器清零,以后每次计到
16时,便采样收到的信号波形(即每一位的中间),将
采到的数值暂存起来,同时将计数器清零,重新计数,
直至最后的停止位被采样。
⑷ 如果停止位采样正确(为1),则字符被接收,并由暂
存器装入寄存器。若停止位采样值为0,说明同步或传输
有问题,此次采样所得字符作废,不被接收。
3、异步通信的特点
⑴ 起止式异步通信协议传输数据对收发双方的时钟同步
要求不高,即使收、发双方的时钟频率存在一定偏差,只
要不使接收器在一个字符的起始位之后的采样出现错位现
象,则数据传输仍可正常进行。因此,异步通信的发送器
和接收器可以不用共同的时钟,通信的双方可以各自使用
自己的本地时钟。
⑵ 实际应用中,串行异步通信的数据格式,包括数据位的
位数、校验位的设置以及停止位的位数都可以根据实际需
要,通过可编程串行接口电路,用软件命令的方式进行设
置。在不同传输系统中,这些通信格式的设定完全可以
不同;但在同一个传输系统的发送方和接收方的设定必
须一致,否则将会由于收、发双方约定的不一致而造成
数据传输的错误与混乱。
⑶ 串行异步通信中,为发送一个字符需要一些附加的信
息位,如起始位、校验位和停止位等。这些附加信息位
不是有效信息本身,它们被称为额外开销或通信开销,
这种额外开销使通信效率降低。例如一个字符由7位组成,
加上一位起始位、一位校验位和一位停止位 ,发送一个
字符必须发送10位,而其中只有7位是有效的,其余3位
不是有效的,使通信能力的30%成了额外开销。所以异步
通信适用于传送数据量较少或传输要求不高的场合。对
于快速、大量信息的传输,一般采用通信效率较高的同
步通信方式。
⑷ 串行异步通信依靠对每个字符设置起始位和停止位的
方法,使通信双方达到同步。
三、同步通信协议
1、同步方式通信的特点
⑴ 异步方式中并不要求收、发两端对传输数据的每一位
均保持同步,而仅要求在一个字符的起始位后,使其中
的每一位同步。而同步方式通信则要求对传送数据的每
一位都必须在收、发两端严格保持同步,即所谓“位同
步”
。因此,同步方式中,收、发两端需用同一个时钟源作
为时钟信号。
⑵ 同步方式传送的字符没有起始位和停止位,它不是用
起始位表示字符的开始,收发双方的同步方法可分为
外同步法和内同步法。外同步法是在发送数据之前向接收
端发送一串时钟脉冲,接收端按这个时钟频率调整自己
的时序,使接收时钟频率锁定在接收到的时钟频率上,
并作为同步时钟来接收数据。内同步法是接收端从接收
到的数据信息波形本身提取同步的方法。
⑶ 同步通信协议分为面向字符和面向比特两种。
⑷同步通信时,字符数据不允许有空隙。当线路空闲或
没有字符可发送时,可发送收、发双方约定的同步字符。
⑸ 同步通信传输效率高,适合于快速、大量数据的传送。
2、同步通信协议概述
如上所说,同步通信协议可分为两类:
⑴ 面向字符的同步通信协议,这类协议目前有两种:
① BM—国际标准化组织ISO提出的基本型同步通信协
议;
② BSC —IBM公司提出的二进制同步通信协议。
⑵ 面向比特的同步通信协议
① HDLC —国际标准化组织ISO提出的高级链路控制协
议;
② SDLC —IBM公司提出的同步数据链路控制协议;
③ ADCCP —美国国家标准化协会ANSI提出的先进数
据通信协议;
④ 第二级—国际电报电话咨询委员会CCITT提出
的协议;
⑤ DDCMP— 美国DEC公司提出的数字数据通信信息协
议。
3、面向字符的同步通信协议
这种协议较早在二十世纪60年代就开始发展,目前仍在
使用,其典型代表是IBM公司提出的二进制同步通信协议
BSC,下面简单介绍一下这种通信协议。
⑴ 面向字符的同步通信协议BSC的帧格式
该协议以若干字符组成一个信息块一起发送,一个信
息块称为一帧,用一些特殊定义的字符来定界一帧的开
始、结束和分隔不同的段以及控制整个信息交换过程。
此种协议的一般帧格式如图所示。
⑵ 特殊定义的字符
SYN是同步字符,每帧开始有若干个SYN。接收端一
SYN SYN SOH 标题 STX 数据块 ETB或ETX 块校验
图 面向字符的同步通信协议的帧格式
旦检测到同步字符SYN,就知道一帧开始了。
SOH(Start of Header)表明标题的开始,称为序始符。
标题中可以包括源地址、目的地址和路由指标等信息。
STX(Start of Text)称为文始符,标志着传送数据正
文的开始。
数据块是传送正文的内容。
ETB(End of Transmission Block)称为组终符
ETX(End of Text)称为文终符。ETB用在正文很长,
需分成若干个数据块,在不同帧中传送的情况,除最后
一个数据块后用 外,其余数据块后都用ETB。
块校验是对前面从SOH开始,直到ETX(或ETB)进行
检验产生的校验码,可以用奇偶校验,也可以用CRC校
验。除上面提到的特殊字符外,还有一些其它字符起着
通信控制作用,参见下表。
名 称 ASCII码 名 称 ASCII码
序始符SOH 0000001 送毕符EOT 0000101
文始符STX 0000010 询问符ENQ 0000101
组终符ETB 0010111 确认符ACK 0000110
文终符ETX 0000011 否认符NAK 0010101
同步符SYN 0010110 转义符DLE 0010000
面向字符的同步通信协议与异步通信协议相比,由于
不需要在每个字符的前后加起始位和停止位,所以传输
效率明显提高,尤其是当传输较长数据时效果更明显。
这种协议与特定的字符编码集关系密切,所以不利于
兼容,并且实现起来也比较麻烦,为了克服这些缺点,
产生了面向比特的同步通信协议。
4、面向比特的同步通信协议
面向比特的同步通信协议也可叫做面向位的同步通信协
议,它有很多种,主要是SDLC、HDLC和ADCCP。这些
协议大同小异,只有一些微小的差别,他们在一帧所传
输的数据位不必是字符的整数倍,只要不超过规定的数
据位总长度,可以为任意长度的比特位。此外,也不需
要用特定定义的字符,而是用规定的比特模式来定界一
帧的开始、结束以及定义控制信息,故称为面向比特的
同步通信协议。这些协议中最著名和常用的是高级数据
链路控制协议HDLC和同步数据链路控制协议SDLC,这
两种协议有几乎相同的帧格式,参见图。下面我们对
HDLC协议作简单介绍。
四、高级数据链路控制协议HDLC
1、HDLC的帧格式
HDLC在链路上以帧作为传输信息的基本单位,帧格
式的内容由5个部分组成,如图所示。
⑴ 标志场 F
HDLC以帧为单位传输,每一帧以一个标志字符开始,
且以同一字符结束。这个标志字符使用唯一的8比特系
列01111110。
⑵ 地址场A
在标志场后是8比特的地址场,用于指明次站的地址。对
于命令帧,用作接收该帧的次站地址;对于响应帧,用于
作出应答的次站地址,次站一般情况下是单站。在用广播
方式发送时,次站是群站,地址段为11111111,则表示为
广播地址。
地址场可扩展为16比特,以扩大寻址范围,SDLC协议
与HDLC协议的差别就是它的地址场为16位。
⑶ 控制场C
地址场后面是控制场,共有8比特,用于表示命令和响
应的类别和功能。
HDLC的帧分为三类,根据该场的前两位来区分。第一
位为0,表示是信息帧I,若第一位为1,表示是监控帧S或
无编号帧U。S帧和U帧的区别取决于第二位,第二位为0是
监控帧,第二位为1是无编号帧,如图(b)所示。
控制场也可以扩展为16位,但基本格式不变,仅将N(S)
和N(R) 从3比特扩展为7比特。
控制场中的P/F(Poll/Final)位是探询/结束位,对于
主
站为探询位,P为1时,要求次站给出响应;对于次站为
表示最后帧位,F为1表示次站响应的最后帧,预告传输
将结束。
⑷ 信息场I
信息场中包含要传送的数据,其长度是任意的 。三类
帧中,只有信息帧中含有信息场。实际应用中受有关站
点缓冲区容量的限制和链路差错特性的限制,通常给出
最大长度。
⑸ 帧校验场FCS
帧校验场用于差错校验,通常采用16位CRC校验,校
验范围是从地址段开始到信息段,标志场和自动插入的
“0”位不参加CRC校验。
2、“0”比特插入和删除技术
01111110作为标志字节出现在帧格式的开始和结束,
若在信息场或其他场中也有这种字符,就无法区别。为
了保证标志字节的唯一性,使之不与其他场中的信息混
淆,采用了“0”比特插入和删除技术。
发送方在发送标志字符外的所有信息(包括地址场、
控制场和校验场)时,只要遇到连续5个二进制“1”,
就
自动插入一个“0”。当接收方接收数据时(标志场除外)
,
如果连续收到5个二进制“1”,就自动地将其后的一个
“0”
删除,以恢复信息的原有形式。
例2:CPU要输出数据7F3A,写出用HDLC帧格式的发送
和接收过程。
解:发送过程如下:
7F3A = 0111111100111010
0111111100111010 到发送器
01111101100111010 由发送器插入“0”位后
发送
接收过程如下:
01111101100111010 到接收器
0111111100111010 接收器删除插入的“0”
位
后到接收方的CPU
这种“0”比特插入和删除技术是由接口硬件自动完
成
的。
3、HDLC网络拓扑
HDLC通信网络都是由一个主站和一个或多个次站组
成的,其连接的网络拓扑形式有三种:星形、总线形和
环形,如图所示。图中A站是主站,其主要功能是发
送命令(包括数据信息)帧,接收响应帧,并负责对整
个链路的控制;其余是次站,其主要功能是接收由主站
发来的命令帧、向主站发送响应帧,并配合主站参与差
错校验后的恢复等链路控制。
六、串行通信的信息格式和同步方式小结
串行通信的数据传输分为异步方式和同步方式两种,
异步方式通信的信息格式如图所示。
同步方式通信分为面向字符和面向比特两种,面向
字符的同步方式通信又分为内同步和外同步两种,如图
所示。
面向比特的同步方式通信的信息格式如图所示。
第三节 串行接口的基本结构
和工作原理
串行接口主要用于外围设备与计算机之间的串行
数据传输与通信连接。串行通信分为异步方式和同
步方式,相应地支持这两种通信方式的接口电路在
结构和功能上也可分为串行异步接口和串行同步接
口,或称为通用异步收发器UART(Universal
Asynchronous Receiver/Transmitter)和通用同步收发
器USRT( Universal Synchronous Receiver/Transmitter)。
另外还有一种既可以实现异步通信又能实现同步通信
的接口,称为通用异步同步收发器USART。这两种接口
不管是异步接口还是同步接口都是面向字符的。本节介
绍UART和USRT的基本结构和工作原理,至于USART则
是他们两者的组合。
一、通用异步收法器UART
1、串行接口的基本功能
串行接口与输入输出设备之间是以串行方式传送数据,
而串行接口与CPU之间是以并行方式传送数据,如图
所示。从图中可以看出,串行接口的功能应有以下几点:
⑴ 实现串行和并行数据格式之间的转换。在串行输入时
,从一条线上接收串行输入数据,并把它转换成并行数
据,准备让CPU读走。串行输出时,串行接口接收从
CPU来的要输出的并行数据,并将它转换成串行数据输
出到外设。
⑵ 数据缓冲功能。输入时,要有输入缓冲功能;输出时
要有输出缓冲功能。
⑶ 控制功能。接收CPU的命令,输出接口的状态等。
CPU I/O串行 I/O
接口 外设
图 串行接口与CPU和外设的连接
3、UART的基本结构
典型的UART接口的基本结构如图所示。
从图中可以看出,UART接口包括:
⑴ 输出缓冲寄存器,它接收CPU从数据总线上送来的并
行数据,并加以保存。
⑵ 输出移位寄存器,它接收从输出缓冲器送来的并行数
据,以发送时钟的速率把数据逐位移出,即将并行数据
转换为串行数据输出。
⑶ 输入移位寄存器,它以接收时钟的速率把出现在串行
数据输入线上的数据逐位移入,当数据装满后,并行送
往输入缓冲寄存器,即将串行数据转换成并行数据。
⑷ 输入缓冲寄存器,它从输入移位寄存器中接收并行数
据,然后由CPU取走。
⑸ 控制寄存器,它接收CPU送来的控制字,由控制字的
内容,决定通信时的传输方式以及数据格式等。例如采
用异步方式还是同步方式,数据字符的位数,有无奇偶
校验,是奇校验还是偶校验,停止位的位数等参数。
⑹ 状态寄存器。状态寄存器中存放着接口的各种状态信
息,例如输出缓冲区是否空,输入字符是否准备好等。
在通信过程中,当符合某种状态时,接口中的状态检测
逻辑将状态寄存器的相应位置“1”,以便让CPU查询。
3、UART接口的工作过程
⑴ 发送、接收时的并串转换和奇偶校验电路
如图所示,发送数据时, UART接口要将CPU来的
并行数据转换成串行数据,并对有效数据“包装”,即
加上
起始位、产生奇偶校验位和停止位,再发送出去。
接收数据时, UART接口要将串行输入的数据转换成
并行数据,同样要对有效数据进行“包装”(去掉起始
位、
校验位和停止位)和奇偶校验,然后等待CPU取走。实
现这一过程的硬件电路如图所示。
⑵ 发送、接收的工作过程
发送数据的过程是:有效数据由CPU写入接口中的输
出缓冲寄存器,再送到输出移位寄存器。同时将状态寄存
器中的“发送准备好”位置“1”,并发出中断请求信号
(用
中断方式时),表示接口可以接收CPU写入下一个有效
数据。在输出移位寄存器中。由发送控制逻辑对有效数
据进行“包装”,即加上起始位、奇偶校验位和停止位。
经
包装后的数据由输出移位寄存器按选定的传输率逐位移
出,变成串行数据发送到串行输出线上去。
接收数据的过程是:接收控制电路不断地监视串行数
据输入线上的电平,一旦出现持续一个位周期的低电平
(指异步方式),则开始采样有效数据位,并使数据进
入输入移位寄存器。采样重复进行,直至采样到停止位。
此时接收控制逻辑要对接收的数据进行格式检查,若不
正确,则将状态寄存器中的相应位置“1”;若格式正确,
则将有效数据位并行传送到输入缓冲器。然后,将状态
寄存器中的“接收数据准备好”位置“1”;若接口处于中
断
允许状态,则还向CPU发出中断请求信号。CPU可以通过
查询或中断方式读取输入缓冲寄存器中的有效数据。
UART发送和接收的功能框图见所示。
二、通用同步收发器USRT
典型的串行USRT的基本结构如图所示。从图中可
以看出,接收时钟是从接收数据流中分离出来的,以确
保接收数据频率与发送端的发送数据频率稳定地同步。与
串行异步接口UART相似,串行USRT接口中也包含常用的
移位寄存器和缓冲寄存器,以实现串行、并行数据格式的
转换。由于每个字符没有起始位和停止位,故需要有检测
同步字符的逻辑电路,即同步检测器,达到字符同步的方
法随通信协议的不同而不同。一旦同步字符被检出,双
方就能达到同步,而且接收器能够在正确的边界点上把
随后的数据位分割为一个一个的字符。
为了更好地实现对输入和输出数据的缓冲,在同步接
口中使用了多个缓冲寄存器。典型的安排是三个寄存器
排成一队列,称为先进先出FIFO寄存器。数据自动地通
过缓冲器流动,使得CPU仅与发送FIFO的输入端寄存器
和接收FIFO的输出端寄存器接口。而输出移位寄存器与
发送FIFO的输出端寄存器接口,输入移位寄存器与接收
FIFO的输入端寄存器接口,如图所示。这样,每当
有一个新字符要发送时,输出移位寄存器就从与它接口
的FIFO输出端寄存器再装入。由于有了FIFO寄存器,
CPU一次可将几个字符预先装入FIFO寄存器,以实现恒
定的字符流输出;类似地,接收FIFO电路允许CPU一次
取走几个字符的数据。FIFO中寄存器的个数可以为1、2
或更多,这就是所谓FIFO的深度。
三、串行通信接口的实现
1、串并与并串转换
计算机内部数据是并行传送的,当计算机与串行外设
连接时,输出时要将并行数据转换成串行数据;输入时
要将串行数据转换成并行数据。这种串并、并串的数据
转换可用软件实现,也可用硬件实现。由于硬件实现速
度较快,所以在大多数情况下都由硬件实现。常用的8位
串行数据转换成并行数据的移位寄存器是74LS164(或
74HC595);8位并行数据转换成串行数据的移位寄存器
是74LS165(或74HC594)。
2、不可编程的串行I/O接口
⑴不可编程的UART。这类芯片可实现UART的功能,并
且不需要编程,如美国西部公司生产的TR1602,日本NEC
公司生产的µPD369,美国Intersil公司生产的IM6402,美国
AMI公司生产的AMI1753/1883,美国国家半导体公司生产
的MM5303等。
⑵不可编程的USRT。这类芯片可实现USRT的功能,如
日本的µPD379,SMC微系统公司的COM5025等。
由于不可编程的I/O接口功能单一,使用起来灵活性差,
所以现在已很少有人使用,而大多使用可编程的串行I/O
接口,以增强功能,扩大接口的灵活性。
3、可编程的串行I/O接口
随着大规模集成电路技术的发展,生产半导体芯片的公
司纷纷推出可编程的支持面向字符的异步或同步串行I/O
接口芯片,以及面向比特的同步I/O接口芯片。这些芯片
的特点是可以编程的,用户通过编程可以设置芯片的工
作方式和各种参数。用它们构成串行通信接口时,只需
附加地址译码器和数据驱动器、波特率发生器以及电平
转换器等简单电路。有的芯片,例如INS8250芯片内部还
集成了波特率发生器,用它组成串行接口适配器时,电
路更简单。有的芯片,例如Intel8251,既是异步方式接口,
也是同步方式接口,是通用同步异步收发器USART。
⑴ 可编程的UART和USRT
参见表8-2所示,是常用的可编程的UART和USRT。
⑵ 可编程的USART
可编程的USART如表8-3所示。
4、可编程的串行通信协议控制器
这类芯片可以实现同步通信中面向比特的协议,典型
的芯片如表8-4所示。
第四节 串行通信的物理接口标准
串行通信的物理接口包括实现机械与电气连接插件和
实现电气特性转换及协议功能的通信适配器,它属于
ISO/OSI体系结构中的最低层 — 物理层。该层的主要内
容是数据终端设备DTE与数据通信设备DCE之间的连接。
串行通信的物理接口就是DTE与DCE之间的接口,接口
规定了他们要共同遵循的某些约定,包括连接电缆的机
械、电气特性、信号功能及传送过程的定义等。这些接
口标准可分为两大类:一类是用于公用电话网或专用线
路进行数据通信的DTE/DCE标准,如、、
等;另一类是用于公用数据网进行通信的DTE/DCE接口
标准,如、、等,参见表8-5所示。本节主
要介绍目前最常用的RS-232C接口标准,兼顾一些其它
的标准。
一、EIA RS-232C接口标准
1、概述
EIA RS-232C接口标准是美国电子工业协会EIA与BELL
等公司一起开发、于1969年公布的接口标准,适合于数
据终端设备DTE与数据通信设备DCE之间的连接与通信。
另一个与EIA RS-232C基本相同的标准是国际电报电话咨
询委员会CCITT的。
图表示了RS-232C在一个典型的通信系统中的使用
环境。其中CRT终端经电话线与远程计算机通信。 CRT
终端和计算机都是DTE设备,而DCE设备就是调制解调
器,连接两个DCE设备的是公共电话线路。这里RS-232C
所涉及的仅是DTE与DCE之间的相互连接时有关机械的、
电气的以及功能方面的规定和标准。即它是解决DTE和
DCE之间的本地接口问题,并不涉及两个DCE之间的通
过电话网的连接问题。
RS-232C接口的最高传输率为,传输电缆长
度一般不超过15米。
2、接口特性
RS-232C接口标准包括机械接口特性、电路功能特性
以及电气信号特性等几方面,下面就此作简单介绍。
⑴ 机械接口特性
RS-232C接口连接器(指针和插座)采用标准的D型
25针连接器,即DB-25连接器,其机械图(正视图)如
图所示。
⑵ 电路的功能特性
RS-232C的25芯连接器引脚功能定义如表8-6所示。其25
个引脚仅定义了22个,这22个信号分成两组:一个主信
道组、一个辅信道组。在多数情况下仅使用主信道组的
信号线。
在通常的微机通信中, RS-232C接口的连接电缆经常
使用的信号线只有9根,如表8-7所示。
在表8-7中所列的常用接口信号中,最常用的是发送数
据线TXD、接收数据线RXD以及信号地。为了保证数据
通信的可靠进行,还有几个联络控制信号DTR、DSR、
RTS、CTS、DCD和RI,他们的具体解释在本章第一节中
已介绍过。
⑶电气信号特性
RS-232C采用负逻辑,将-5V — -15V规定为逻辑“1”
,
+5V — +15V规定为逻辑“0”。 RS-232C电路的终边负
载
电容不能超过2500PF(微微法拉),这是RS-232C电缆
不能超过15米的一个重要原因。
⑷ 电平转换电路
RS-232C电平与通常的TTL电平不兼容,所以两者之间
必须加电平转换电路。通常使用的芯片是MC1488和MC
1489,前者将TTL电平转换成RS-232C电平,后者可将
RS-232C电平转换成TTL电平,如图所示。
现在有一种新的可完成TTL与RS-232C电平双向转换的
芯片MAX232,工作电压只需5V就可以,而MC1488/1489
工作电压需要±15V。图是MAX232的内部逻辑框图,
从图中可知,一个MAX232芯片可以连接两对收发线。
MAX232把TTL/CMOS电平(0-5V)转换成RS-232C电平
(+10V— -10V),还可以完成相反的转换。
3、RS-232C接口的连接方式
RS-232C传输距离短,一般小于15米,当进行15米以上
的远距离通信时,一般要加调制解调器。
⑴远距离通信的连接
若在通信双方的Modem之间采用专用电话线进行通信,
则需使用图所示的连接;若在通信双方的Modem之间
采用普通电话交换线进行通信,则还要增加RI和DTR两根
信号线进行联络,如图所示。
远距离通信时,RS-232C解决的仅是DTE设备与DCE设
备之间的连接。
⑵ 近距离通信的连接
近距离通信时, RS-232C解决的是DTE设备与DTE设备
之间的连接。
① 简化连接方式
通信双方可直接连接,无需Modem,故只需很少几根
线。最简单的为三根线连接法,如图所示,此时假设
DSR、CTS已设置为接通状态。该连接方式可实现全双工
通信。
② 反馈连接方式
例如计算机与输出设备(如打印机)可采用此连接,
如图所示。
③ 交叉连接方式
例如,同一型号的计算机
之间可采用交叉连接,如
图所示。
二、RS-423A、 RS-422A和RS-449
接口标准
RS-232C虽使用很普遍,由于采用非平衡传输方式,易
受地线干扰,传输距离短,速率慢。为了实现在更远距离和
更高速率上的直接连接,在EIA在RS-232C的基础上,制定了
更高性能的接口标准,如RS-423、 RS-422和RS-449,这些
标准克服了RS-232C的缺点,并与之完全兼容。
1、 RS-423A
RS-423A全称是“不平衡型电压数字接口电路的电气特
性”,该标准的主要优点是在接收端采用了差分输入。
RS-423A的接口电路如图所示,在电气特性上它与
RS-232C兼容。在传输距离为10米时,传送速率可达300
Kbps;在传输距离为1000米时,传送速率可达3Kbps。
2、RS-422A
RS-422A也称为“平衡型电压数字接口电路的电气特性”
,
采用平衡输出的发送器和差分输入的接收器,如图所示。
由于RS-422A线路是完全平衡的,所以它比RS-423A有更
高的可靠性,传送更快更远。一般情况下, RS-422A线路不
使用公共地线,这使得通信双方由于地电位不同而对通信线
路产生的干扰减至最小。
当采用普通双绞线时, RS-422A可在1000米内进行
100Kbps的通信;在短距离(200米)内,可达到200Kbps
以上的传输率;在10米内则可达到10Mbps的速率,因此
这种接口标准被广泛地应用在计算机本地网络上。
3、RS-449
RS-449全称是“使用串行二进制交换的数据终端设备
和
数据通信设备的通用37针和9针接口”。 RS-449主要是关
于机械连接和功能方面的标准规范,而它的电气特性则
由RS-423A 和RS-422A规定。EIA准备用RS-449、 RS-423
A和RS-422A这三个标准替代RS-232C,但也许是使用习
惯上的原因,目前RS-449还代替不了RS-232C,而是两种
标准并存的局面,且RS-232C还占主导地位。表8-8列出
了RS-422A、 RS-423A和 RS-232C的电气特性参数。
RS-449规定了两种连接器,一种是37脚,如表8-9所示;
另一种是9脚,如表8-10所示。
RS-449可以不使用调制解调器,它比RS-232C传输速率
高,通信距离长。采用普通双绞线时,数字通信可达90
Kbps,传送距离可达1200米。由于用平衡信号差电路传
输,所以噪声也低。
三、 RS-485标准接口
使用RS-422A进行全双工通信需要四条线(两对线),
使线路成本增加。RS-485适用于收发双方共用一对线进
行通信,也适用于多个点之间共用一对线路进行总线方
式联网,通信只能是半双工的,线路如图所示。
由于共用一条线路,在任何时刻,只允许一个发送器发
送数据,其它发送器必须处于关闭(高阻)状态,这是
通过发送器芯片上的发送控制端实现的。例如,当该端
为高电平时,发送器可以发送数据,而为低电平时,发
送器的两个输出端都呈高阻状态。,好象与线路断开
那样。
在不用调制解调器的情况下,100Kbps波特率可传送达
1200米;9600bps时可传送15千米;10Mbps时则只能传送
15米。
四、20mA电流环串行接口
1、原理
产生20mA电流回路的原理如图所示。图中由4根
线组成,其中2根组成输入电流回路,2根组成输出电流
回路。根据数据码的逻辑“1”和“0”,使回路中电流
形成通
和断,数据为逻辑“1”时,回路中有20mA电流流过,
数据
为逻辑“0”时,回路中没有20mA电流流过。这是一种
异步
串行接口,每次发送数据时必须以无电流为起始,作为
每一个字符的起始位。
20mA电流回路方法的最大优点是低阻传输线,对电气
噪声不敏感,而且易于实现光电隔离,在长距离通信时
比RS-232C要好。目前在工业控制现场通信中仍广泛应用。
2、实用的20mA电流环接口
如图所示。这是一个加光电隔离的电流环发送和接
收电路。在发送端将TTL电平转换成电流环信号,当输
入为逻辑“1”时,接口中有20mA电流;输入为逻辑
“0”时,
接口中没有20mA电流。在接收端,将电流又转换成TTL
电平信号。
3、采用集成芯片构成的 20mA电流环接口
如图所示,集成芯片采用SN75452,TTL输入高电
平时,电路中有电流,接收端通过光电隔离器将20mA转
换成TTL高电平输出。
第五节 可编程串行通信接口8251A
Intel 8251A 是通用同步/异步收发器USART ,是专为
Intel 微处理器设计的,可用作CPU和串行外设的接口电
路。
一、8251A的基本性能
⑴ 可用于同步和异步传送。
⑵ 同步传送:5-8位/字符,内部或外部字符同步,自
动插入同步字符。
⑶ 异步传送: 5-8位/字符,时钟速率为通信速率的1、
16、64倍。
⑷ 可产生中止字符(Break Character);可产生1、、
或2位的停止位;可检查假启动位;自动检测和处理中止
字符。
⑸ 波特率:异步:;同步:DC-64K。
⑹ 完全双工、双缓冲器发送和接收。
⑺ 误差检测:具有奇偶、溢出和帧错误等检测电路。
⑻ 全部输入输出与TTL电平兼容;单一+5V电源;单一
TTL电平时钟;28脚双列直插式封装。
⑼ 与Intel 8080、8085、8088CPU兼容。
二、 8251A的结构与引脚功能
1、 8251A的引脚
8251A有28条引脚,引脚分配如图所示。引脚的功
能说明将在后面介绍。
2、 8251A的结构和工作原理
8251A的结构方块图
如图所示。由图中
可看出8251A可分为5个
部分。
⑴ 接收器
接收器实现有关接收的
所有工作。它接收在RXD
上出现的串行数据并按规
定格式转换成并行数据,
存放在接收缓冲器中,以
等待CPU取走。它由接收
缓冲器、串并转换电路和
接收控制电路三部分组成。
在8251A 工作于异步方式并被启动接收数据时,接收器
不断地采样RXD线上的电平变化。当采样到有低电平出现
时,则有可能是起始位的到来,但还不能确定它是真正的
起始位,因为有可能是干扰脉冲造成的假起始位信号。此
时接收器启动一个内部计数器,其计数脉冲就是接收时
钟。当计数到一个位周期的一半(若设定波特率因子为16
时,则为计数到第8个时钟)时,如果采样RXD仍为低电
平,则认为是真的起始位,而不是噪声干扰;否则如果此
时在RXD上采样为高电平,就认为出现了噪声干扰信号,
而不是真的起始位。这就是8251A所具有的对假起始位的
鉴别能力。
8251A采样到真的起始位后便开始对有效数据位的采样
并进行字符装配。具体地说,就是每隔16个时钟采样一次
RXD,然后将采到的数据送至移位寄存器,经过移位操
作,并经奇偶校验和去掉停止位,就得到了转换成并行
格式的数据,存入接收缓冲器。然后将状态寄存器中的
RXRDY位置“1”,并在RXRDY引脚上输出有效信号,
表
示已接收到一个有效数据字符。对于少于8位的数据字符
,则将它们的高位填“0”。
在同步接收方式下,8251A采样RXD 线,每出现一个
数据位就把它移位接收进来,然后把接收寄存器与同步
字符(由初始化程序设定)寄存器比较,看其内容是否
相等。若不等,则8251A重复上述过程;若相等,则将
状态寄存器中的SYNDET位置“1”,并在SYNDET引脚
上
输出一个有效信号,表示已找到同步字符。实现同步后,
接收器与发送器之间就开始进行有效数据的同步传输。接
收器不断地采样RXD线,并把接收到的数据位送到移位寄
存器中。每当收到的数据到达设定的一个字符的位数时,
就将移位寄存器中的数据送到接收缓冲寄存器,并且使状
态寄存器中的RXRDY位置“1”,并在RXRDY引脚上输出
有
效信号,表示已收到了一个数据字符。
⑵ 发送器
发送器也 是由发送缓冲器、并串转换和发送控制电路三
部分组成。
在异步方式下,当控制命令寄存器中的TXEN位被置位且
CTS信号有效时,才能开始发送过程。发送器接收CPU送来
的并行数据,加上起始位,并根据规定的奇偶校验方式加上
校验位,最后根据格式规定加上停止位,由TXD输出线发送
出去。
另外,在异步方式下发送器的另一个功能是发送中止字
符(Break Character)。中止符是通过在线路上发送连续
的“0”(2帧以上)来构成的。由于在异步方式下1帧的
末
尾一定是停止位(“1”),所以在正常发送时连续发送
“0”
的时间不会达1帧以上。因此特规定:若发送“0”的时
间在
2帧以上,则为发送中止字符。只要在编程时将8251A的
控制命令寄存器的SBRK位置“1”,则8251A就发送中止
字
符。8251 A也具有能检测对方发送中止字符的功能,当
检测到中止字符时,则使对应的状态位置“1”,并在相
应
的引脚上输出有效信号。
在同步方式下,也要在TXEN位被置位和CTS信号有效
的情况下,才能开始发送过程。发送器首先根据初始化
程序对同步格式的设定,发送一个同步字符或两个同步
字符,然后发送数据块。在发送数据块时,如果初始化
程序设定为有奇偶校验,则发送器会对数据块中每个数
据字符加上奇偶校验位。另外,在同步发送时,如果
CPU来不及把新的数据提供给8251A,此时8251A会自动
地插入同步字符。于是,就满足了在同步发送时不允许
数据间有间隙的要求。
⑶ 数据总线缓冲器
数据总线缓冲器用来把8251A和系统数据总线相连,在
CPU执行输入输出指令期间,通过数据总线缓冲器发送
和接收数据。此外,控制和状态信息也通过数据总线缓
冲器来传输。
⑷ 调制解调器控制电路
调制解调器控制电路提供了四个用于和Modem或其他数
据终端设备接口时的控制信号:DTR、DSR、RTS和CTS
,
通过它们可以有效地实现数据通信过程的联络与控制。
⑸ 读写控制逻辑电路
读写控制逻辑电路实现对CPU输出的控制信号的译码,
以实现相应的读写功能。
三、8251A对外接口信号
8251A是CPU与外设之间的接口电路,其对外的接口信
号可分为两组,一组是与CPU的接口信号,另一组是与
外设之间的接口信号。如图所示。
1、 8251A与CPU之间的接口信号
⑴ 复位信号RESET
当这个引脚上出现一个6倍时钟宽的高电平时,芯片被
复位,使芯片处于空闲状态。此空闲状态一直保持到编
程设定了新状态才结束。通常此复位端与系统的复位线
相连。
⑵ 数据线D7-D0
双向8位数据线,与CPU数据总线相连。CPU通过D7-
D0向8251A写数据和控制字,以及读数据和状态字。
⑶ 读写控制信号
① 片选信号CS,它是由地址信号经译码形成的。该引
脚为低电平时,芯片被选中,芯片可以与CPU之间传输
数据;反之,芯片未被选中,芯片的8根数据线处于高阻
状态。
② 读控制信号RD,低电平有效。该信号有效时,CPU
从芯片读取数据或状态信息。
③ 写控制信号WR,低电平有效。该信号有效时,CPU
往芯片写取数据或控制信息。
④ 控制/数据选择信号C/D,此信号用于决定CPU对
8251A
的操作是读写数据还是读写状态或控制信息。
当C/D=1时,CPU对8251 A的操作是读状态或写控制信息; C/D=0
时,CPU对8251 A的操作是读写数据。通常将此端与地址线的最地
位(A0)相连。于是8251A占有两个端口地址。偶地址是数据端口,
奇地址是控制端口。这四个信号的关系如表8-11所示。
表8-11:8251A的读/写控制真值表
CS C/D RD WR 操 作
0 0 0 1 CPU从8251A读数据
0 0 1 0 CPU往8251A写数据
0 1 0 1 CPU从8251A读状态
0 1 1 0 CPU往8251A写控制命令
0 × 1 1 D7-D0为高阻状态
1 × × × D7-D0为高阻状态
⑷ 收发联络信号
① 发送器准备好信号Tx RDY,输出,高电平有效。当
8251A除于允许发送状态(即Tx EN被置位,CTS为低电
平)并且发送缓冲器为空时,则Tx RDY输出高电平,表
明当前8251A已作好了发送准备,因而CPU可以往 8251A
传送一个数据字符。在中断方式下, Tx RDY可作为向
CPU发出的中断请求信号;在查询方式下,则Tx RDY作
为状态寄存器中的一位状态信息供CPU检测。当8251A
从CPU接收了一个数据字符后, Tx RDY输出线变为低电
平,同时TxRDY状态位被复位。
② 发送器空信号Tx E,输出,高电平有效。当它有效
时,表示发送器中输出移位寄存器空。在同步方式下,若
CPU不能及时输出一个新字符给8251,则TxE变为高电平,
同时发送器在数据输出线上插入同步字符,以填补传输
空隙。 Tx E也是状态寄存器中的一位状态信息。
③ 接收器准备好信号 Rx RDY,输出,高电平有效。当
它有效时,表明8251A已经从串行输入线接收了一个数据
字符,正等待CPU取走。所以在中断方式时, Rx RDY可
作为向CPU发出的中断请求信号;在查询方式时,
Rx RDY作为状态寄存器中的一位状态位,供CPU检测。
一旦CPU读走这个数据字符, Rx RDY输出线变为低电平
,同时Rx RDY状态位被复位。如果CPU不能及时取走这
个数据字符,新接收的数据将覆盖原有的数据,使一个
数据丢失,这称为出现“超越错”,并反映在状态字中。
这
也告诉我们,必须确保CPU能够及时读出已接收的数据。
④ 同步或中止符检测信号SYNDET/BRKDET。该信号端
在同步方式时既可作为输入信号,也可作为输出信号,这
取决于对8251A初始化是设定为内同步还是外同步。若为
内同步,则由芯片内部电路搜索同步字符,一旦找到,就
由该端输出一个高电平,同时将状态寄存器的SYNDET位
置“1”;若为外同步,则当片外检测电路检测到同步字符
后,
就可以从该端输入一个高电平信号,使8251A在下一个接
收时钟(Rx C)的下降沿开始装配字符。此时,要求输入
的高电平至少应维持一个Rx C周期,直到下一个Rx C下降
沿的出现。
在异步方式下,该端作为“中止符”检测输出端,即当
8251A检测到对方发送的中止符时,则从该端输出一个高
电平,同时将状态寄存器的SYNDET(/BRKDET)位置
“1”
。中止符的信号格式规定前面已介绍,此处不再重述。
⑸ 时钟信号CLK,这是为芯片内有关电路工作提供的时
钟输入端。这个时钟的频率与数据速率并无直接关系,但
是为了电路工作可靠,在同步方式下最好使这个时钟频率
比数据速率大30倍以上。在异步方式下,则最好大倍。
2、8251A与外设之间的接口信号
有四个Modem控制信号DTR、DSR、RTS和CTS前面已有
介绍,这里不再重述。另外还有四个信号,如下所述。
⑴ 接收器时钟Rx C,它控制接收器接收数据的速率。在
同步方式时,接收方的Rx C应与发送方的Tx C使用同一个
时钟,且Rx C 的频率等于波特率;而在异步方式下, Rx C
可由本地的时钟发生器提供, Rx C的频率可编程设定为波
特率的1、16或64倍。
⑵ 发送器时钟Tx C,它控制发送器发送数据的速率。其频
率的规定与接收器时钟Rx C相同。
⑶ 接收数据线RxD,由外部输入。
⑷ 发送数据线TxD,向外部输出。
四、8251A的编程
8251A的编程包括两个部分,一个是方式选择控制字,另
一个是操作命令控制字。前者用来定义8251A的工作方式,
它必须紧接在复位后由CPU写入;后者用来指定芯片的实
际操作,只有在写入了方式字后,才能由CPU写入。
1、方式选择控制字
方式选择控制字的格式如图所示。由图可看出,最
低两位B2 B1确定是同步方式还是异步方式, B2 B1= 00为
同步方式; B2 B1 ≠00为异步方式,此时B2 B1 的三种组合
设定了波特率因子为1、16或64。
L2 L1两位规定每个字符的数据位位数; EP和PEN用来
确定奇偶校验的性质;S2 S1两位在同步方式时用于确定
是内同步还是外同步,以及是单同步字符还是双同步字
符,在异步方式时用于规定停止位的位数。
2、操作命令控制字
操作命令控制字的格式如图所示,它直接让8251A
实现某种操作或进入规定的工作状态。
TxEN位是发送允许(启动)位, TxEN=1,发送器才能
通过TxD线向外部串行发送数据;
DTR位是数据终端准备好信号控制位, DTR=1, DTR
引线输出有效信号;
RxE位是接收器允许位, RxE=1,接收器才能通过RxD
线从外部串行接收数据;
SBRK位是发送中止符位, SBRK=1,通过TxD线连续
发送“0”信号(2帧以上),正常通信时SBRK位应保持
为
“0”;
ER位是错误标志位, ER=1,将状态寄存器中三个错误
标志PE、OE和FE清零;
RTS位是请求发送信号控制位, RTS=1, RTS引线输
出有效信号;
IR位是内部复位控制位, IR=1,使8251A复位,并回
到接收方式选择控制字的状态;
EH位只对同步方式有效,EH=1表示开始搜索同步字符
,因此对于同步方式,一旦使接收器允许(RxE=1),必
须同时使EH=1。
3、状态字
CPU可以在8251A工作过程中利用输入指令读取当前
8251A的状态字,从而可以检测接口和数据传输的工作状
态。 8251A状态字的格式如图所示。
⑴ 三个错误标志位PE、OE和FE, PE=1是奇偶校验错;
OE=1是“超越错”;FE=1是“帧格式错”,它只对异步
方式
有效。出现这三种错误时都不中止8251A的工作,它们可
以用操作命令字中的ER位来复位。
⑵ RxRDY、TxE和SYNDET/BRKDET位与同名引脚的状
态含义相同,此处不再重述
⑶ DSR位是数据通信设备准备好状态位, DSR=1表示
调制解调器或其他外设已处于准备好状态,此时DSR输入
信号有效。
⑷ TxRDY是发送准备好位,它与输出引脚TxRDY的含义
有所不同。 TxRDY状态位为“1”只反映当前发送缓冲器
已
空,而TxRDY输出引脚为“1”,除发送缓冲器已空外,
还
需要以CTS=0和TxEN=1为条件,即存在如下逻辑关系:
输出引脚TxRDY为“1”=发送缓冲器空
·(CTS=0)·(TxEN=1)
在数据发送过程中, TxRDY状态位与TxRDY引脚的状态
总是相同的。通常TxRDY状态位提供CPU查询,而TxRDY
引脚的输出信号作为给CPU的中断请求信号。
4、8251A的初始化及数据传送流程图
8251A的初始化及数据传送流程图如图所示。由此
图可见, 8251A的初始化变编程必须在复位操作之后,先
图 8251A初始化
和数据传送流程图
设置方式选择控制字。如果设定在异步方式,则马上要
输出操作命令字进行设置,然后才能进行数据传送;在
数据传送过程中,也可使用操作命令字进行某些操作设
置或读取8251A的状态;在数据传送结束时,若使用IR位
为“1”的内部复位命令使8251A复位,则它又可重新接收
方式选择字,从而改变工作方式完成其他任务。当然也
可在一次数据传送结束后不改变工作方式,则此时就不
需要进行内部复位以及重新设置工作方式。
如果设定8251A工作在同步方式,那么在输出方式选择
控制字后,应紧跟着输出一个同步字符或两个同步字符,
然后再输出操作命令字,后面的操作与异步方式相同。
5、编程举例
⑴ 异步方式下的初始化编程
设定8251A工作于异步方式,波特率因子为64,每字符
7个数据位,偶校验,2位停止位,则方式选择控制字为
11111011=FBH;
操作命令字的设定,例如使8251A的发送器允许,接
收器允许,使状态寄存器中的3个错误标志位复位,使数
据终端准备好信号DTR输出低电平,则操作命令字应为
00010111=17H;
若8251A的口地址为50H、51H,则本例初始化程序如
下:
mov al, 0FBH ;输出方式选择字
out 51H, al
mov al, 17H ;输出操作命令字
out 51H, al
⑵ 同步方式下的初始化编程举例
8251A工作于同步方式,双同步字符,内同步;偶校
验,每字符7个数据位。方式选择字为38H 。
操作命令字,使发送器允许,接收器允许,使错误标
志复位。
mov al, 38H;输出方式选择字
out 51H, al
mov al, 16H;输出两个同步字符16H
out 51H, al
out 51H, al
mov al, 97H;输出操作命令字
out 51H, al
五、8251A的应用
1、利用8251A实现与终端的串行通信
终端通常包括显示器和键盘两部分,所以计算机与终
端之间需进行双向通信。以8251A为主要部件构成的计算
机串行接口与终端的连接如图所示。
图中8251A的接收时钟和发送时钟由8253提供;它的时
钟信号CLK接系统主时钟。 8251A与终端通过RS-232C口
连接,因此用了电平转换芯片MC1488和NC1489。
在本例中,通信双方都是DTE设备,因此发送数据线
TXD和接收数据线RXD交叉连接,其它信号线采用“自环
”
连接,如图所示。
下面采用查询方式编程,口地址为D0H和D1H。程序参
见书上P217页。
2、利用8251A实现双机通信
利用8251A实现相距较近的两台微机通信,其硬件连接
如图所示。由于是近距离通信,因此不用Modem,两
台微机直接通过RS-232C相连即可,且通信双方均作为数
据终端设备DTE。由于采用RS-232C接口标准,所以需要
加接电平转换电路。
此外,通信时认为对方已准备好,所以可不使用四根联
络信号,仅使8251A的CTS接地即可。
甲乙两机可进行半双工或全双工通信。CPU与接口之间
可按查询方式或中断方式进行数据传送。本例采用半双
工通信,查询方式,异步传送。下面给出发送端与接收
端的初始化及控制程序。
发送端和接收端的初始化程序和控制程序参见书上P218
、219页。
3、串行通信实验(自发自收)
⑴ 硬件连接如图所示。
8251A插在通用插座上,8253用于产生8251的发送和接
收时钟,发送数据线TxD于接收数据线RxD连接在一起。
⑵ 编程
从键盘输入一个字符,将其ASCII码加1后发送出去,
再接收回来在屏幕上显示,实现自发自收。这样发送字
符A,则接收到的字符为B。
⑶ 实验提示
① 图中8251的口地址为数据口2B8H,控制口2B9H。
② 8253工作在方式3(方波发生器),计数时的计数
初值=时钟频率/(波特率×波特率因子)。时钟频率为
1MHz,波特率选1200,波特率因子选16,则计数器初值
为1 ×106/1200 ×16≈52。
③ 8253口地址为280H-283H。
④ 收发采用查询方式
⑷ 参考程序:
Data segment
mes1 db ‘you can play a key on the keyboard!’,0dh,0ah,24h
Data ends
code segment
assume cs:code, ds:data
out1 proc near ;向外发送一字节的子程序
out dx, al
pushcx
mov cx, 40h
gg: loop gg ;延迟
pop cx
ret
out1 endp
start:mov ax, data
mov ds, ax
mov dx, 283h ;设置8253计数器0的工作方式
mov al, 16h ;00010110B,方式3,二进制计数
out dx, al
mov dx, 280h
mov al, 52 ;给8253计数器0送初值
out dx, al
mov dx, 2b9h ;初始化8251
xor al, al
mov cx, 03 ;向8351控制口送3个0
delay:call out1
loop delay
mov al, 40h ;向8251控制口送方式选择控制字40H,使其复位
callout1
mov al, 4eh ;设置1个停止位,8个数据位,波特率因子为16
callout1
mov al, 27h ;向8251送操作命令控制字,允许其发送和接收
callout1
lds dx, offset mes1 ;显示提示信息
mov ah, 09
int 21h
waiti: mov dx, 2b9h
in al, dx
testal, 01 ;发送是否准备好?
jz waiti ;否,则转waiti
mov ah, 01 ;是,从键盘读入一字符
int 21h
cmp al, 27 ;若为ESC,则结束
jz exit
mov dx, 2b8h ;不是ESC,则发送一个字符
inc al
out dx, al ;发送
mov cx, 40h
s51:loop s51 ;延迟
next:mov dx, 2b9h
in al, dx
test al, 02 ;检查接收是否准备好?
jz next ;没有,等待
mov dx, 2b8h
in al, dx ;准备好,接收
mov dl, al
mov ah, 02 ;将接收到的字符显示在屏幕上
int 21h
jmp waiti
exit:mov ah, 4ch ;退出
int 21h
code ends
end start