1、1 数据通信 数据信号在各种各样的话路上传输:它们通过导线从一根电杆传到另一根电杆;它们经过地下电缆传送;它们通过微波设备从一个山头传到另一个山头;它们通过海底电缆,通过通信卫星,从一个洲传到另一个洲。为了把数字化机器信号变换为适合在这些设备中传输的信号形式 ,需要使用某种类型的数据变换设备。 向变换设备发送部分(即调制器)提供输入的数据设备可以是键盘、打印机、卡片阅读器、纸带终端计算机或磁带终端机。变换器接收部分(即解调器)的输出可以适用于纸带凿孔机、打印机、卡片凿孔机、磁带机、计算机或视频显示终端。一般地说 ,变换器的调制部分和解调部分合并成为一个双向数据发送接收机,通常称之为数据调制解调
2、器或数据传输机。 典型的全双工数据传输系统,包括始发端数据处理设备和由缓冲器和控制单元组成的接口部件。发端的接口部件以数据处理机的处理速度所确定的速率接收数据,将它们暂时存储起来,并以与数据调制解调器兼容的速率予以转发。在接收端,接口部件接受所收到的数据,将它们存储起来,再以适当的速率送到数据处理机中去。 来自发端接口部件的定时信号被加到数据调制解调器上,以使计算机与数传机同步。在接收端,从数据流中取出同步脉冲使计算机同步。 当有一台以上数传机接至一台计算机时,接口设备的容量是主要问题,因为它必须确定分配给每条线路的时隙。有各种类型的接口部件可以使用,如磁芯存储器、移位寄存器和时延线。然而并不
3、是所有的数据通信终端在数据处理机和数据调制解调器之间都使用接口。如果没有接口,那么输入、数据传输和输出这三个操作过程同时进行,而且速率相同。 由于数据信号的形式一般不适宜在各种传输设备上传送,通常对信号要进行编码。在理想情况下,传输媒介应当具有线性衰减和线性时延的特性。但实际情况根本不是这样,传输损伤总是存在,干扰了数据信号。相比之下,语 声通信可以容忍极不规则的传输情况。如果电话电路的衰耗严重或噪声大,说话人就会提高嗓音,自动予以弥补。如果讲的某些单词因传输困难而没听见,双方往往仍可听懂,因为语言有冗余度。数据信号则与之相反,除非有意加入,它本身没有冗余度,所以传输质量的不稳定只能得到非常有
4、限的补偿。另外,数据 信号对基本上不影响话音的其他传输质量下降很敏感。 为了减少不正常的传输情况,增加系统的信息容量,实现差错检测和消息保密,就要采用编码手段。数据发送端的编码仅仅是将所输入的数据信号重新排列成其他形式。在接收端则进行相反的过程(译码) ,恢复原来的数据信号。 2 所给的波形表示以数字形式输入到数据调制解调器的两类信息信号。波形 A 是二进制不归零( NRZ)信号,波形 B 是同一信号的归零( RZ)形式。波形 A 与波形 B 的区别是:波形 A 中传号或空号连续不新地出现,而波形 B 中脉冲幅度必须在两个连续信号之间回到空号电平上来。传号和空号的电压值是任意的,可以是正值或负
5、值,也可以是正负值兼而有之。 当研究数据从一个设备向另一个设备传输时 ,我们关心的主要问题之一是连线。而考虑连线时,数据流又是我们所关心的问题。我们是一次发送一个比特呢 ,或者是成组发送它们呢?如果要 成组发送,又如何做到这一点呢?通过链路来发送二进制数据的方法可以这样实现:要么采用并行方式,要么使用串行的模式。在并行模式中,在每一个时钟脉冲到来时 ,可同时发送多个比特。而在串行方式里,伴随每个时钟只发送一个比特。虽然只有一种并行发送数据的方法 ,但串行传输却有两类:同步传输和异步传输。 异步传输被如此称呼,是因为信号的定时并不重要。不同的是,信息是按事先约定的方式来接收和翻译的。只要遵照这些
6、约定,接收器件就能够恢复信息,而不理会它们在发送时的节拍。约定的基础是将比特流组合成字节。每一个组合通常含有 8个比特 ,它被作为一个单元在链路上发送。发送系统单独处理每个组合,当将组合准备停当就将它放到链路上,且与定时器没有关系。 没有了同步脉冲,接收机就不能利用定时信号去预测下一个组合什么时候到达。因此,为了通知接收机有新的组合到达,就得在每个字节的开始加上一个额外的比特。这个比特通常为 0,并被称为起始位。为了让接收机知道字节的结束,在字节的尾部又另加了一个或多个比特。这些比特通常为 1,被人们称为停止住。运用这种方法,每一个字节的长度至少增加到 10 个比特,其中有 8 个比特的信息,
7、以及 2 个或更多的比特,作为向接收机打 “招 呼 “的信号。此外,在每个字节传送之后,可能会有一段变化的间隙。这个时隙可用空闲信道或另加停止位来表示。 起始位、停止位和时隙告诉接收机每一个字节 的开始和结束,并让接收机按照数据流进行同步。这种机制被称为是异步的,因为在字节级上,发送器和接收器不需要同步。但是在每个字节内部,接收器仍需与流入的比特流同步。 这就是说,某种同步还是需要的,但仅限于在一个字节持续的期间内。在每一个新的字节开始时,接收机又重新进行同步。当接收机检测到一个起始位,它就将定时器置位,并在比特流入时开始记数。在接收了 n 比特之后,接收器就寻找停止住。一旦它检测到停止住,它
8、就忽略以后收到的脉冲,直到检测到下 一个起始位为止。 比起不添加控制信息就能运行的传输形式,异步传输由于增加了停 止住、 起始位和在比特流中插入时隙而显得慢一些。但由于具有便宜和高效两大优点,这使得它在如低速通信的一些场合成为一项诱人的选择。例如,终端与计算机的连接就是异步3 传输方式很自然的应用。用户每次只能敲一个字符,这在数据处理领域里是极慢的,而且在每个字符阔的间隙长短也难以预测。 在同步传输中,比特流合并成较长的“帧”,而帧可能含有多个字节。然而当字节被引入到传输链路的时候,在字节之间却没有间隙。将比特流分成字节的任务是由接收器在解码过程中完成的。换句话说,数据是以 1 和 0 组成的
9、无间断码串来传输的,而接受器将这个码 串分离成字节或字符,它需要将信息重新恢复。 对同步传输做了简要的说明。在字节之间我们画上了分隔线。事实上,这些分隔线并不存在,而发送器是将一长串的数据放到线路上的。如果发送器想以分离突发的形式发送数据,则突发数据群之间的间隙就必须用一种由 0 和 1 组成的特殊码序列来填充,而该序列表示空闲。接收器对收到的比特计数并将它们组合成 8 比特的单元。 由于没有间隙和起始 /停止住,因而就没有了内部机制去帮助接收器在码流中调整它的比特同步。因为所接收数据的准确性完全取决于接收器对流入比特精确计数的能力,因此定时交得极为重要。 同步传输的优势是速度。既然在发送端不
10、用再引入间隙和额外的比特,在接收端不用再去除这些,并由此知道链路传输更少的数据,因而同步传输比异步传输要快。因此,对于高速应用的场合,例如由一个计算机向另一个计算机传送数据,则同步传输就更为有用。字节同步被在数据链路层中实现。 在计算机及其显示器终端之间最为常见的串行接口是异步串行接口。这个接口之所以如此称呼,是因为无论在多长的时间区间里发送的数据和接收的数据是不同步的,因而没有必要采用特殊的手段使发送器和接收器的时钟同步。实际上,异步串行数据链路是一种古老的数据传输方式 ,它起源于电传打字机的时代。 串行数据传输系统已有很长的历史了,电话(人类语音)、莫尔斯电码、旗语,甚至土著美洲人从前用过
11、的烟火信号都可以视为串行数据传输。所有串行数据传输系统面临的首要问题都是如何把输入的数据流分开为单独的码元(即比特),以及怎样把这些码元组合成字符。例如,在莫尔斯电码中,字的点、划是由符号间的空格来分开的,而字符之间又是由字符间的空格分开的,这个空格是点、划间空格的三倍。 首先我们研究一下在异步串行数据链路中数据流是怎样分成单独的码元,以及码元是如何组成字符的。这类系统运行的核心原理既简 单又精巧。 异步串行数据链路被称为面向字符的,因为信息是以被称作字符的比特组的形式传送的。这些字符是一些固定的单元,每个单元都包含 7 个或 8 个信息比特加上 24 个控制比特,并通常与 ASCII 码的字
12、符一致。当传输开始,无信息发送时,线路处于空闲状态,而空闲状态习惯上被称为信号电平。通常它对应于逻辑 1 电平。 当发送器想要发送数据时 ,它首先将线路置成空号电平(即信号的反玛),此电平持续一个单元(码元)的问隔时间。此(空号)单元称为起始位,持续时间为 T 秒。4 然后发送器发送字符,一次一个比特地将相继的码元送上线路。每个码 元持续 T 秒,直到所有码元发完为止。此后,发送器计算得出一个奇偶校验位并将它在数据码元之后发出。最后,发送器送出一个停止位,其电平为信号电平(与空闲状态电乎相同),时长为 1 个或 2 个比特宽度。如果发送器需要,它又可发送另一个字符。 在异步串行数据链路系统的接
13、收端,接收器持续监视着线路,搜索着起始位。一旦检测到起始位并等到它结束,接收器就对随后的 N 个码元抽样,抽样点选在这些码元的中心处。抽样所用的时钟是由接收器本地产生的。当每一个输入的码元被抽样后,就用这些样值构成一个新的字符。当接收到的字符汇齐后,它的奇偶校验 位就由计算得出并与接收到的奇偶校验位进行比较。如果它们不等,则将奇偶校验错误标志置位,以标明传输错误。 对系统来说,最关键的问题是接收器的定时。接收器的本地时钟由起始位的下降沿启动,然后在码元的标称中心处对每个输入比特进行抽样。接收器的时钟自起始位的下降沿开始等待 T/2,而后每隔 T 秒抽样输入数据,直至抽样到停止位。如果接收器时钟与发送器时钟不同步,抽样则是不准确的。 对于每一个传送的字符,异步数据传输都需要起始位、奇偶校验位和停止住,这是它最明显的缺点。如果采用 7 比特字符,则总效率仅为 70%。一个不太明显 的缺点是由于数据链路面向字符的特性造成的。在数据链路中无论何时将 CRT 终端连接到计算机上,都不会出现什么问题,因为终端本身也是面向字符的。但是如果数据链路用于别处,比方说,将大量二进制数据转储到磁带上,则会产生麻烦。 5