数字信号和数位化编码的数据之间存在着自然的联系。数位化存储的数据表现为0和1的序列。由于数字信号能够在两个恒量之间交替变换,所以可以简单地把0赋予其中的一个恒量,而把1赋予另一个恒量。这里恒量的具体取值并不重要。如果是电子信号的话,这两个恒量数值相同,但符号相反。为了保持论述的普遍性,我们把它们分别称为“高电平”和“低电平”。
1. 不归零法编码
不归零法(Nonreturn to Zero, NRZ)可能是最简单的一种编码方案。它传送一个0时把电压升高,而传送一个1时则使用低电平。这样,通过在高低电平之间作相应的变换来传送0和1的任何序列。N R Z指的是在一个比特位的传送时间内,电压是保持不变的(比如说,不回到零点)。下图描述了二进制串1 0 1 0 0 11 0的NRZ传输过程。
NRZ编码虽然简单,但却存在一个问题。研究一下下图中的传输。它正在传送什么呢?
你可以回答说是“一个0的序列”。是的,但到底有多少个0呢?对于这个问题,你会回答说这取决于一个比特位的持续时间。现在假设我们告诉你1毫米线段对应于一个周期。那么你所要做的就是量出图中线段的长度,并转换为毫米。这一计算将告诉你线段中有多少个1毫米的分段,也就是0的个数。理论上这个方法是行得通的,但实际上却不然。假设有个人用尺子画出了一条包含1 0 0 0个1毫米分段的线段。那么总共有多长呢?答案是1米,但由于在测量和实际绘制时出现的误差,线段可能只是接近而不是刚刚好一米长。因此,当第二个人来测量这条线段时,他将得出一个比1 0 0 0个分段稍微多点或少点的答案。即使第一个人很幸运,他的测量准确无误,但第二个人度量时的不精确也将导致误差。
这会给数据传输带来什么影响呢?当一台设备传送一个比特的数字信号时,它将在一定的周期内,假定为T,产生一个持续的信号。一个内置的时钟负责定时。接收设备必须知道信号的周期,这样它才能在每个T时间单元内对信号进行采样。它也有一个负责定时的内置时钟。剩下的就是确保两个时钟使用同样的T。
下一个问题是:你家里所有的时钟总是保持一致的吗?我家可不是。不幸的是,任何物理设备都存在着设计上的局限性和缺陷。几乎可以肯定任何两个时钟都存在着微小的差别,这使得设备无法对传输信号作十分精确的采样。就好象我们在新年的第一天校正了两个时钟,但到了年底却发现它们已经有了轻微的差别。同样地,管弦乐队的音乐家们以同样的速度同时开始演奏,但如果他们不看指挥,也不注意听别人的拍子的话,他们的节奏将开始混乱。稍微的不和谐就将毁掉整个演奏,使它听起来就象作者和他的同事们正在表演一样。
就象指挥家确保演奏者的同步一样,通信设备也需要某种机制以使它们的定时保持一致。不变的信号不具备同步机制。但如果信号改变的话,这种改变就可以用来保持设备的同步。有些强制信号改变的编码方案就是基于这个原因。
2 .曼彻斯特编码
曼彻斯特编码(Manchester Code)用信号的变化来保持发送设备和接收设备之间的同步。也有人称之为自同步码( Self-Synchronizing Code)。为了避免上面第二个图中出现的情况,它用电压的变化来分辨0和1。它明确规定,从高电平到低电平的跳变代表0,而从低电平到高电平的跳变代表1。下图给出了比特串0 1 0 11 0 0 1的曼彻斯特编码。如图所示,信号的保持不会超过一个比特位的时间间隔。即使是0或1的序列,信号也将在每个时间间隔的中间发生跳变。这种跳变将允许接收设备的时钟与发送设备的时钟保持一致。曼彻斯特编码的一个缺点是需要双倍的带宽。也就是说,信号跳变的频率是NRZ编码的两倍。
3.差分曼彻斯特编码
曼彻斯特编码的一个变形称为差分曼彻斯特编码(Differential Manchester Encoding)。和曼彻斯特编码一样,在每个比特时间间隔的中间,信号都会发生跳变。区别在于每个时间间隔的开始处。0将使信号在时间间隔的开始处发生跳变。而1将使信号保持它在前一个时间间隔尾部的取值。因此,根据信号初始值的不同, 0将使信号从高电平跳到低电平,或从低电平跳到高电平。下图给出了比特串1 0 1 0 0 11 0的差分曼彻斯特编码。在这里,我们通过检查每个时间间隔开始处信号有无跳变来区分0和1。检测跳变通常更加可靠,特别是线路上有噪音干扰的时候。如果有人把连接的导线颠倒了,也就是把高低电平颠倒了,这种编码仍然是有效的(现在,你也许会问哪个神志清醒的人会把两根连接的导线颠倒呢。有几种可能的原因。其一是某人过于匆忙,其二是某人不小心搞错了。这种事情常有发生!)。