曼徹斯特編碼原理

在最近的項目中對曼徹斯特編碼進行了檢測,發現對曼徹斯特編碼的原理並不清楚,因此針對它來進行調研

曼徹斯特編碼(Manchester Encoding),也叫做相位編碼(PE)是一個同步時鐘編碼技術,被物理層用來編碼一個同步位流的時鐘和數據;常用於局域網傳輸。在曼徹斯特編碼中,每一位的中間有一跳變,位中間的跳變既作時鐘信號,又作數據信號,就是說主要用在數據同步傳輸的一種編碼方式。

(但在不同的書籍中,曼徹斯特編碼中,電平跳動表示的值不同,這裏產生很多歧義:
1、在網絡工程師考試以及與其相關的資料中,如:雷振甲編寫的《網絡工程師教程》中對曼徹斯特編碼的解釋爲:從低電平到高電平的轉換表示1,從高電平到低電平的轉換表示0,模擬卷中的答案也是如此,張友生寫的考點分析中也是這樣講的。
位中間電平從高到低跳變表示"0";
位中間電平從低到高跳變表示"1"。
2、在一些《計算機網絡》書籍中,如《計算機網絡(第4版)》中(P232頁)則解釋爲高電平到低電平的轉換爲1,低電平到高電平的轉換爲0,《數據通信與網絡(第三版)》,《計算機網絡(第4版)》採用如下方式:
位中間 電平從高到低跳變表示"1";
位中間電平從低到高跳變表示"0"。
在清華大學出版的《計算機通信與網絡教程》也是這麼說的,就以此爲標準,我們就叫這爲標準曼徹斯編碼。至於第一種,我們在這裏就叫它曼徹斯特編碼。)

————ps:這也太奇葩了,居然搞出兩套標準出來

 

【關於數據表示的約定】
  事實上存在兩種相反的數據表示約定。
  第一種是由G. E. Thomas, Andrew S. Tanenbaum等人在1949年提出的,它規定0是由低-高的電平跳變表示,1是高-低的電平跳變。
  第二種約定則是在IEEE 802.4(令牌總線)和低速版的IEEE 802.3 (以太網)中規定, 按照這樣的說法, 低-高電平跳變表示1, 高-低的電平跳變表示0。
  由於有以上兩種不同的表示方法,所以有些地方會出現歧異。當然,這可以在差分曼徹斯特編碼(Differential Manchester encoding)方式中克服.

(爲了應對不同的標準,採取了和稀泥的方法,搞了一個差分法出來,我也是醉了)

差分曼徹斯特編碼
在信號位開始時不改變信號極性,表示邏輯"1" 
在信號位開始時改變信號極性,表示邏輯"0" ;
注意】:如果在最初信號的時候,即第一個信號時:
如果中間位電平從低到高,則表示0;
如果中間位電平從高到低,則表示1;
後面的(從第二個開始)就看每個信號位開始時有沒有跳變來決定:
下面我們來舉個例子,來比較標準曼徹斯特編碼、曼徹斯特編碼、差分曼徹斯特編碼:

1.不歸零碼NRZ、雙極性不歸零碼BNRZ

不歸零碼在一個碼型傳輸過程中不會歸零,用“高電平”表示1,“零電平”表示0;

雙極性不歸零碼BNRZ同樣是不歸零碼,用“高電平”表示1,“負電平”表示0;

上述編碼信道密度高,但無法從碼型中提取同步信息,需要外同步,否則會累積誤差。

波形如下:

2.歸零碼RZ,BRZ

歸零碼RZ也使用“高電平”表示1,但在一個週期內,高電平需要歸零,“零電平”表示0,BRZ則“高電平”表示1,“負電平”表示0,一個週期內,正負電平都需要歸零。

3.曼徹斯特、差分曼徹斯特(雙相碼)

曼徹斯特又叫相位編碼,雙相碼,它包含自同步信息,碼型中同時包括數據和時鐘信息。

曼徹斯特:有兩種定義,一種是“低-高”表示1,“高-低”表示0,在802.3中定義,另一種是相反的,”高-低”表示1,“低-高”表示0;

可以看出,802.3版本的曼徹斯特碼波形可以由時鐘與數據異或XOR直接得到,而Thomas的版本則是異或非NXOR。

差分曼徹斯特:差分曼徹斯特也是根據跳變沿解碼,跳變與前一個跳變相同,表示0,相反表示1.

4.脈衝寬度編碼

應用於NFC應用的SWP接口採用了脈衝寬度編碼,一個碼型包括4個碼元,“1110”表示1,“1000”表示0,可以通過高電平碼元的寬度來進行譯碼。

當然,SWP還使用了特殊的電流傳輸技術,能使用一根線進行雙向信號傳輸。

5.NRZI

USB使用的是NRZI,電平翻轉表示邏輯0,電平不變表示邏輯1

可以看到,即使NRZI的波形完全翻轉,所表示的邏輯依然不變,這非常適合USB的差分傳輸中。

當然,NRZI也沒有同步信息,需要發送同步頭。



發佈了22 篇原創文章 · 獲贊 12 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章