實體層與傳輸媒介

線路編碼(line coding)

你想把位元 1011 送下一條電線。電線只能保持一個電壓——高或低。那麼隨時間,每個位元到底該變成什麼樣的電壓?這個配方就是線路編碼:把一串位元變成媒介上訊號高低起伏型態、並在另一端變回來的約定方案。發送端與接收端必須用同一份配方,否則一方的「高」會被另一方讀成胡言亂語。

最簡單的方案是 NRZ(不歸零):1 整個位元時間維持高電壓,0 維持低電壓。它很簡單,卻有個陰險的問題:送一長串相同位元——比如 0000000——電壓就一路平著,接收端沒有邊緣可以鎖住時脈,於是可能數錯經過了幾個 0。曼徹斯特編碼(Manchester encoding)靠在每個位元時間中央放一個轉變來解決:位元中央高轉低代表一個值,低轉高代表另一個值。如今每個位元都帶一個邊緣,接收端就能從資料本身還原時脈——代價是同樣位元率下需要兩倍的訊號轉變(因而更多頻寬)。

線路編碼是一種基頻技術——它直接塑造數位訊號,沒有載波(對照調變,調變把位元載到載波上)。好的線路碼要在幾項需求間取得平衡:足夠的轉變以維持收發端時脈同步、沒有長期直流偏壓(路徑上的變壓器與電容無法通過直流)、有效率地使用頻寬,有時還內建錯誤檢查。經典乙太網路採用曼徹斯特,正是看上它自我計時的特性;現代高速連結則用更聰明的編碼(如 4B/5B 或 64B/66B),在不讓頻寬加倍的情況下保證頻繁的轉變。

用簡單 NRZ 把 1011 編碼會得到 高-低-高-高——一段平坦處,長串時接收端可能數錯。用曼徹斯特,每個位元變成位元中央的一個邊緣(例如 1 為低轉高、0 為高轉低),所以即使 0000000 也產生穩定的邊緣序列可供計時。

像曼徹斯特這類自我計時的編碼,以頻寬換取保證的轉變來同步時脈。

線路編碼不是加密、也不是錯誤更正——它只是一種位元到訊號的對映。任何知道該方案(方案是公開的)的人都能把訊號解回原始位元。

又称
digital encodingNRZManchester encoding數位編碼