本书所设计的调制解调器是用来发送键盘产生的ASCII码的,这些ASCII码可由一些常用的代码构成,当然也可以用来表示人类的自然语言。因此,帧同步必须设计一种表示方法,即用一组二进制比特信息表示256个ASCII码,并且要能从连续的二进制码流中方便地分离出这些二进制比特信息组,并进一步得到ASCII码。
为此设计出以下的规则:
●当不发送ASCII码时,调制解调器发送连“0”码。
●任何要发送的ASCII码用一组二进制比特信息表示,一组二进制比特信息的开始和结尾均必须是“1”。
●任何两个ASCII码之间至少有两个连续的“0”码。
●一组二进制比特信息中间不能出现两个以上(包括两个)的连“0”码。
●对一组二进制比特信息的长短不做特别的要求。
这样,在接收端平时收到的是“0”,当收到一个“1”时,就开始接收一个ASCII码。当接收到两个连续的“0”后,接收ASCII码结束。然后就能根据接收到的一组二进制比特信息来查找到相应的ASCII码了。
为了尽量提高效率,对ASCII码进行的编码一般采用可变长度编码,对于在会话中出现概率大的ASCII码就用尽量短的一组二进制信息,比如字母“e”就用“11”编码,空格就用“1”编码;而出现概率小的ASCII码就用比较长的一组二进制信息来编码,比如“@”就用“1010111101”编码。这样会令系统的效率大为提高。
例如要发送的信息序列是“abc”,则编码如下:
(www.xing528.com)
目前采用的编码方案如表5-2所示。
表5-2 帧同步编码规则
(续)
设计如下的数组,数组中每一项是一个短整型数(占用16比特),代表一个ASCII编码。编码从最高位算起,当出现连续两个“0”比特时编码结束。
当发送某个ASCII字符时,就从VARICODE_TABLE[256]中取出相应的短整型数,每个符号周期发送这个短整型数的最高位,并把这个短整型数左移一位,当这个短整型数的值变成零时,该ASCII字符也就发送完毕了。当然,在发送一个ASCII字符之前和之后都要发送一个“0”码。发送过程如图5-18所示。
图5-18 发送帧同步编码的过程
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。