編碼原理
用于數字基帶傳輸的碼型種類較多,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.根據上面兩步對數據流進行解碼。