編碼原理
用於數字基帶傳輸的碼型種類較多,Manchester碼是其中常用的一種。Manchester碼是一種用跳變沿(而非電平)來表示要傳輸的二進制信息(0或1),一般規定在位元中間用下跳變表示”1″,用上跳變表示”0″. 曼徹斯特編碼被被認為是一種自定時碼自定時意味著數據流的精確同步是可行的。每一個比特都準確的在一預先定義時間時期的時間中被傳送。
曼徹斯特編碼提供了一種簡單的方法在長時間段內沒有電平跳變的情況下,仍然能夠對任意的二進制序列進行編碼,並且防止在這種情況下同步時鐘信號的丟失以及防止低通模擬電路中低頻直流飄移所引起的比特錯誤。如果保證傳送的編碼交流信號的直流分量為零並且能夠防止中繼信號的基線漂移,那么很容易實現信號的恢復和防止能量的浪費。曼徹斯特碼具有豐富的位定時信息。
表示約定
對於以上電平跳變觀點有歧義:關於曼徹斯特編碼電平跳變,雷振甲編寫的《網路工程師教程》中對曼徹斯特編碼的解釋為:從低電平到高電平的轉換表示 1,從高電平到低電平
的轉換表示0,清華大學的《計算機通信與網路教程》《計算機網路(第4版)》採用如下方式:曼徹斯特編碼從高到低的跳變是 1 從低到高的跳變是 0 ,在維基百科網站中從低到高是0,從高到低是1,國外的網站有明確的表示方法。
第一種G. E. Thomas, Andrew S. Tanenbaum1949年提出的,它規定0是由低-高的電平跳變表示,1是高-低的電平跳變。
第二種IEEE 802.4(令牌匯流排)和低速版的IEEE 802.3(乙太網)中規定, 按照這樣的說法, 低-高電平跳變表示1, 高-低的電平跳變表示0。
由於有以上兩種不同的表示方法,所以有些地方會出現歧異。當然,這可以在差分曼徹斯特編碼(Differential Manchester encoding)方式中克服。
編碼套用
曼徹斯特編碼已經被許多高效率且被廣泛使用的電信標準所採用,例如乙太網電訊標準. 曼徹斯特編碼是一種超越傳統數字傳輸的信道編碼技術,由於其具有隱含時鐘、去除了零頻率信號的特性使得它在石油勘探測井中也得到廣泛的套用。
編碼流程
1. 首先I/O口輸出高電平。
2. 檢查數據是否傳送完成,如果是,跳到步驟7。
3. 檢查下一個數據位的值。
4. 如果是“1”,調用傳送1的函式ManchesterOne(T)。
5. 如果是"0",調用傳送0的函式ManchesterZero(T)。
6. 返回到步驟2。
7. I/O輸出為高電平並返回。
解碼步驟
1. 獲取數據流的波特率(或者已知數據流的波特率)。
2. 同步數據流的時鐘信號(實質是區分位幀邊沿和半位幀邊沿)。
3. 根據上面兩步對數據流進行解碼。