糾錯碼(error correcting code),在傳輸過程中發生錯誤后能在收端自行發現或糾正的碼。
僅用來發現錯誤的碼一般常稱為檢錯碼。
為使一種碼具有檢錯或糾錯能力,須對原碼字增加多余的碼元,以擴大碼字之間的差別 ,即把原碼字按某種規則變成有一定剩余度(見信源編碼)的碼字,並使每個碼字的碼之間有一定的關系。關系的建立稱為編碼。碼字到達收端后,可以根據編碼規則是否滿足以判定有無錯誤。當不能滿足時,按一定規則確定錯誤所在位置並予以糾正。糾錯並恢復原碼字的過程稱為譯碼。檢錯碼與其他手段結合使用,可以糾錯。
糾錯技術之FEC(向前糾錯)
在工程實踐中並不存在理想的數字信道,數字信號在各種媒質的傳輸過程中就會產生誤碼和抖動,從而導致線路的傳輸質量下降。
為解決此問題,需要引入糾錯機制。實用的糾錯碼是靠犧牲帶寬效率來換取可靠性,同時也增加了通信設備的復雜度。糾錯技術是一種差錯控制技術,按照應用場景和側重點不同,可以分為兩類:
- 檢錯碼:重在發現誤碼,比如奇偶監督編碼。
- 糾錯碼:要求能自動糾正差錯,比如BCH碼、RS碼、漢明碼。
二者沒有本質區別,只是應用場合不同而側重的性能參數不同。FEC屬於后者。
FEC的特點及應用
FEC的全稱是前向糾錯,一種數據編碼的技術,數據的接收方可以根據編碼檢查傳輸過程中的誤碼。前向是指糾錯過程是單方向的,不存在差錯的信息反饋。
- 無需重傳,實時性高
- FEC啟動后,能夠容忍線路上更大的噪聲,但是有額外的帶寬開銷(用戶需要根據實際情況在傳輸質量和帶寬間做出選擇)
- 適合於數據到達對端后通過自身來查驗並糾正的業務,不適合於查驗有重傳機制的業務
- 可用於網絡狀況較差時的數據傳輸,如:在工程使用中,ONT距離遠,線路質量差,導致光功率預算裕量不足或線路誤碼率高,推薦開啟FEC
- 可用於要求時延較小的業務(因為此時如果采用重傳,則時延會增大)
通過在發射端對信號進行一定的冗余編碼,並在接收端根據糾錯碼對數據進行差錯檢測,如發現差錯,由接收方進行糾正。常見的FEC技術有漢明碼、RS編碼以及卷積碼等。
例如
GPON采用的FEC算法是RS(255,239)算法,完全遵從ITU-T G.884.3的要求。FEC碼字長255字節,由239字節的正常數據和16字節的冗余開銷構成。考慮多幀尾碎片開銷,GPON系統開啟FEC后,系統帶寬降低為原吞吐量的90%左右。GPON在傳輸層使用FEC算法,大約可以將線路傳輸的10-3誤碼降低到10-12。