信道編碼至糾錯技術之FEC(前向糾錯)
在工程實踐中並不存在理想的數字信道,數字信號在各種媒質的傳輸過程中就會產生誤碼和抖動,從而導致線路的傳輸質量下降。
為解決此問題,需要引入糾錯機制。實用的糾錯碼是靠犧牲帶寬效率來換取可靠性,同時也增加了通信設備的復雜度。糾錯技術是一種差錯控制技術,按照應用場景和側重點不同,可以分為兩類:
- 檢錯碼:重在發現誤碼,比如奇偶監督編碼。
- 糾錯碼:要求能自動糾正差錯,比如BCH碼、RS碼、漢明碼。
二者沒有本質區別,只是應用場合不同而側重的性能參數不同。FEC屬於后者。
FEC的特點及應用
FEC的全稱是前向糾錯,一種數據編碼技術,數據接收方可以根據編碼檢查傳輸過程中的誤碼。前向是指糾錯過程是單方向的,不存在差錯信息反饋。
- 無需重傳,實時性高
- FEC啟動后,能夠容忍線路上更大的噪聲,但是有額外的帶寬開銷(用戶需要根據實際情況在傳輸質量和帶寬間做出選擇)
- 適合於數據到達對端后通過自身來查驗並糾正的業務,不適合於查驗有重傳機制的業務
- 可用於網絡狀況較差時的數據傳輸,如:在工程使用中,ONT距離遠,線路質量差,導致光功率預算裕量不足或線路誤碼率高,推薦開啟FEC
- 可用於要求時延較小的業務(因為此時如果采用重傳,則時延會增大)
通過在發射端對信號進行一定的冗余編碼,並在接收端根據糾錯碼對數據進行差錯檢測,如發現差錯,由接收方進行糾正。常見的FEC技術有漢明碼、RS編碼以及卷積碼等。
數字信號在傳輸中往往由於各種原因,使得在傳送的數據流中產生誤碼,從而使接收端產生圖象跳躍、不連續、出現馬賽克等現象。所以通過信道編碼這一環節,對數碼流進行相應的處理,使系統具有一定的糾錯能力和抗干擾能力,可極大地避免碼流傳送中誤碼的發生。誤碼的處理技術有糾錯、交織、線性內插等。提高數據傳輸效率,降低誤碼率是信道編碼的任務。信道編碼的本質是增加通信的可靠性。但信道編碼會使有用的信息數據傳輸減少,信道編碼的過程是在源數據碼流中加插一些碼元,從而達到在接收端進行判錯和糾錯的目的,這就是我們常常說的開銷。這就好象我們運送一批玻璃杯一樣,為了保證運送途中不出現打爛玻璃杯的情況,我們通常都用一些泡沫或海棉等物將玻璃杯包裝起來,這種包裝使玻璃杯所占的容積變大,原來一部車能裝5000各玻璃杯的,包裝后就只能裝4000個了,顯然包裝的代價使運送玻璃杯的有效個數減少了。同樣,在帶寬固定的信道中,總的傳送碼率也是固定的,由於信道編碼增加了數據量,其結果只能是以降低傳送有用信息碼率為代價了。將有用比特數除以總比特數就等於編碼效率了,不同的編碼方式,其編碼效率有所不同。數字電視中常用的糾錯編碼,通常采用兩次附加糾錯碼的前向糾錯(FEC)編碼。RS編碼屬於第一個FEC,188字節后附加16字節RS碼,構成(204,188)RS碼,這也可以稱為外編碼。第二個附加糾錯碼的FEC一般采用卷積編碼,又稱為內編碼。外編碼和內編碼結合一起,稱之為級聯編碼。級聯編碼后得到的數據流再按規定的調制方式對載頻進行調制。
前向糾錯碼(FEC)的碼字是具有一定糾錯能力的碼型,它在接收端解碼后,不僅可以發現錯誤,而且能夠判斷錯誤碼元所在的位置,並自動糾錯。這種糾錯碼信息不需要儲存,不需要反饋,實時性好。所以在廣播系統(單向傳輸系統)都采用這種信道編碼方式。下圖是糾錯碼的各種類型:
1、RS編碼
RS碼即里德-所羅門碼(Reed和Solomon二人發明),它是能夠糾正多個錯誤的糾錯碼,RS碼為(204,188,t=8),其中t是可抗長度字節數,對應的188符號,監督段為16字節(開銷字節段)。實際中實施(255,239,t=8)的RS編碼,即在204字節(包括同步字節)前添加51個全“0”字節,產生RS碼后丟棄前面51個空字節,形成截短的(204,188)RS碼。RS的編碼效率是:188/204。
2、卷積碼
卷積碼非常適用於糾正隨機錯誤,但是,解碼算法本身的特性卻是:如果在解碼過程中發生錯誤,解碼器可能會導致突發性錯誤。為此在卷積碼的上部采用RS碼塊, RS碼適用於檢測和校正那些由解碼器產生的突發性錯誤。所以卷積碼和RS碼結合在一起可以起到相互補償的作用。卷積碼分為兩種:
(1)基本卷積碼:
基本卷積碼編碼效率為,η=1/2, 編碼效率較低,優點是糾錯能力強。
(2)收縮卷積碼:
如果傳輸信道質量較好,為提高編碼效率,可以采樣收縮截短卷積碼。有編碼效率為:η=1/2、2/3、3/4、5/6、7/8這幾種編碼效率的收縮卷積碼。編碼效率高,一定帶寬內可傳輸的有效比特率增大,但糾錯能力越減弱。
3、Turbo碼
1993 年誕生的Turbo 碼,單片Turbo 碼的編碼/解碼器,運行速率達40Mb/s。該芯片集成了一個32×32 交織器,其性能和傳統的RS 外碼和卷積內碼的級聯一樣好。所以Turbo碼是一種先進的信道編碼技術,由於其不需要進行兩次編碼,所以其編碼效率比傳統的RS+卷積碼要好。
4、交織
在實際應用中,比特差錯經常成串發生,這是由於持續時間較長的衰落谷點會影響到幾個連續的比特,而信道編碼僅在檢測和校正單個差錯和不太長的差錯串時才最有效(如RS只能糾正8個字節的錯誤)。為了糾正這些成串發生的比特差錯及一些突發錯誤,可以運用交織技術來分散這些誤差,使長串的比特差錯變成短串差錯,從而可以用前向碼對其糾錯,例如:在DVB-C系統中,RS(204,188)的糾錯能力是8個字節,交織深度為12,那么糾可抗長度為8×12=96個字節的突發錯誤。
實現交織和解交織一般使用卷積方式。交織技術對已編碼的信號按一定規則重新排列,解交織后突發性錯誤在時間上被分散,使其類似於獨立發生的隨機錯誤,從而前向糾錯編碼可以有效的進行糾錯,前向糾錯碼加交積的作用可以理解為擴展了前向糾錯的可抗長度字節。糾錯能力強的編碼一般要求的交織深度相對較低。糾錯能力弱的則要求更深的交織深度。
下圖是交織的原理圖:
DVB-C的卷積交織和解交織原理為:交織由I=12(I為交織深度)個分支構成。每個分支的延時逐漸遞增,遞增的單元數M=n/I=204/12=17(M為交織基數)。這里的數據單位為字節。0支路無延時,1支路延時17個符號周期,11支路則延時l7×11個符號周期。輸入端有一開關隨着時間推移依次連接各個延時支路,輸出端有一開關與輸入端一一對應,同步連接各延時支路。
一般來說,對數據進行傳輸時,在發端先對數據進行FEC編碼,然后再進行交積處理。在收端次序和發端相反,先做去交積處理完成誤差分散,再FEC解碼實現數據糾錯。另外,從上圖可看出,交積不會增加信道的數據碼元。根據信道的情況不同,信道編碼方案也有所不同,在DVB-T里由於由於是無線信道且存在多徑干擾和其它的干擾,所以信道很“臟”,為此它的信道編碼是:RS+外交積+卷積碼+內交積。采用了兩次交積處理的級聯編碼,增強其糾錯的能力。RS作為外編碼,其編碼效率是188/204(又稱外碼率),卷積碼作為內編碼,其編碼效率有1/2、2/3、3/4、5/6、7/8五種(又稱內碼率)選擇,信道的總編碼效率是兩種編碼效率的級聯疊加。設信道帶寬8MHZ,符號率為6.8966Ms/S,內碼率選2/3,16QAM調制,其總傳輸率是27.586Mbps,有效傳輸率是27.586*(188/204)*(2/3)=16.948Mbps,如果加上保護間隔的插入所造成的開銷,有效碼率將更低。
在DVB-C里,由於是有線信道,信道比較“干凈”,所以它的信道編碼是:RS+交積。一般DVB-C的信道物理帶寬是8MHZ,在符號率為6.8966Ms/s,調制方式為64QAM的系統,其總傳輸率是41.379Mbps,由於其編碼效率為188/204,所以其有效傳輸率是41.379*188/204=38.134Mbps。
在DVB-S里,由於它是無線信道,所以它的信道編碼是:RS+交積+卷積碼。也是級聯編碼。
下圖是DVB-C、DVB-S/S2、DTMB、DVB-T各自的信道編碼方式:
DVB-S/S2
ABS-S
DTMB
5、偽隨機序列擾碼
進行基帶信號傳輸的缺點是其頻譜會因數據出現連“1”和連“0”而包含大的低頻成分,不適應信道的傳輸特性,也不利於從中提取出時鍾信息。解決辦法之一是采用擾碼技術,使信號受到隨機化處理,變為偽隨機序列,又稱為“數據隨機化”和“能量擴散”處理。擾碼不但能改善位定時的恢復質量,還可以使信號頻譜平滑,使幀同步和自適應同步和自適應時域均衡等系統的性能得到改善。擾碼雖然“擾亂”了原有數據的本來規律,但因為是人為的“擾亂”,在接收端很容易去加擾,恢復成原數據流。實現加擾和解碼,需要產生偽隨機二進制序列(PRBS)再與輸入數據逐個比特作運算。PRBS也稱為m序列,這種m序列與TS的數據碼流進行模2加運算后,數據流中的“1”和“0”的連續游程都很短,且出現的概率基本相同。利用偽隨機序列進行擾碼也是實現數字信號高保密性傳輸的重要手段之一。一般將信源產生的二進制數字信息和一個周期很長的偽隨即序列模2相加,就可將原信息變成不可理解的另一序列。這種信號在信道中傳輸自然具有高度保密性。在接收端將接收信號再加上(模2和)同樣的偽隨機序列,就恢復為原來發送的信息。在DVB-C系統中的CA系統原理就源於此,只不過為了加強系統的保密性,其偽隨機序列是不斷變化的(10秒變一次),這個偽隨機序列又叫控制字(CW)。