數字信號和數位化編碼的數據之間存在着自然的聯系。數位化存儲的數據表現為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。檢測跳變通常更加可靠,特別是線路上有噪音干擾的時候。如果有人把連接的導線顛倒了,也就是把高低電平顛倒了,這種編碼仍然是有效的(現在,你也許會問哪個神志清醒的人會把兩根連接的導線顛倒呢。有幾種可能的原因。其一是某人過於匆忙,其二是某人不小心搞錯了。這種事情常有發生!)。