1. 程式人生 > >趣味講解信道編碼的發展歷程

趣味講解信道編碼的發展歷程

bubuko 糾錯碼 實現 傳輸速率 發現 一段 噪聲 檢驗 ID

  介紹下信道編碼的發展,希望能起到借鑒的作用。

  信道編碼,也叫差錯控制編碼,是所有現代通信系統的基石。幾十年來,信道編碼技術不斷逼近香農極限,波瀾壯闊般推動著人類通信邁過一個又一個頂峰。5G到來,我們還能突破自我,再創通信奇跡嗎?

  所謂信道編碼,就是在發送端對原數據添加冗余信息,這些冗余信息是和原數據相關的,再在接收端根據這種相關性來檢測和糾正傳輸過程產生的差錯。

技術分享圖片

這些加入的冗余信息就是糾錯碼,用它來對抗傳輸過程的幹擾。

技術分享圖片

  

  1948年,現代信息論的奠基人香農發表了《通信的數學理論》,標誌著信息與編碼理論這一學科的創立。根據香農定理,要想在一個帶寬確定而存在噪聲的信道裏可靠地傳送信號,無非有兩種途徑:加大信噪比或在信號編碼中加入附加的糾錯碼。

  這就像在嘈雜的酒吧裏,酒喝完了,你還想來一打,要想讓服務員聽到,你就得提高嗓門(信噪比),反復吆喝(附加的冗余信號)。

  但是,香農雖然指出了可以通過差錯控制碼在信息傳輸速率不大於信道容量的前提下實現可靠通信,但卻沒有給出具體實現差錯控制編碼的方法。

技術分享圖片

  

  人類在信道編碼上的第一次突破發生在1949年。

  R.Hamming和M.Golay提出了第一個實用的差錯控制編碼方案。

技術分享圖片

  

  受雇於貝爾實驗室的數學家R.Hamming將輸入數據每4個比特分為一組,然後通過計算這些信息比特的線性組合來得到3個校驗比特,然後將得到的7個比特送入計算機。 計算機按照一定的原則讀取這些碼字,通過采用一定的算法,不僅能夠檢測到是否有錯誤發生,同時還可以找到發生單個比特錯誤的比特的位置,該碼可以糾正7個比特中所發生的單個比特錯誤。這個編碼方法就是分組碼的基本思想,Hamming提出的編碼方案後來被命名為漢明碼。

  漢明碼的編碼效率比較低,它每4個比特編碼就需要3個比特的冗余校驗比特。另外,在一個碼組中只能糾正單個的比特錯誤。

  M.Golay先生研究了漢明碼的缺點,提出了Golay碼。

  Golay碼分為二元Golay碼和三元Golay碼,前者將信息比特每12個分為一組,編碼生成11個冗余校驗比特,相應的譯碼算法可以糾正3個錯誤;後者的操作對象是三元而非二元數字,三元Golay碼將每6個三元符號分為一組,編碼生成5個冗余校驗三元符號,這樣由11個三元符號組成的三元Golay碼碼字可以糾正2個錯誤。

  Golay碼曾應用於NASA的旅行者1號(Voyager 1),將成百張木星和土星的彩色照片帶回地球。

  在接下來的10年裏,無線通信性能簡直是跳躍式的發展,這主要歸功於卷積碼的發明。

  卷積碼是Elias在1955年提出的。

技術分享圖片

  

  卷積碼與分組碼的不同在於:它充分利用了各個信息塊之間的相關性。

  通常卷積碼記為(n,k,N)碼。卷積碼的編碼過程是連續進行的,依次連續將每k個信息元輸入編碼器,得到n個碼元,得到的碼元中的檢驗元不僅與本碼的信息元有關,還與以前時刻輸入到編碼器的信息元(反映在編碼寄存器的內容上)有關。同樣,在卷積碼的譯碼過程中,不僅要從本碼中提取譯碼信息,還要充分利用以前和以後時刻收到的碼組。從這些碼組中提取譯碼相關信息,,而且譯碼也是可以連續進行的,這樣可以保證卷積碼的譯碼延時相對比較小。通常,在系統條件相同的條件下,在達到相同譯碼性能時,卷積碼的信息塊長度和碼字長度都要比分組碼的信息塊長度和碼字長度小,相應譯碼復雜性也小一些。

技術分享圖片

  

  很明顯,在不到10年的時間裏,通信編碼技術的發展是飛躍式的,直到遇到了瓶頸。

  根據香農前輩的指示,要提高信號編碼效率達到信道容量,就要使編碼的分段盡可能加長而且使信息的編碼盡可能隨機。但是,這帶來的困難是計算機科學裏經常碰到的“計算復雜性”問題。

  還好,這個世界有一個神奇的摩爾定律。

  得益於摩爾定律,編碼技術在一定程度上解決了計算復雜性和功耗問題。而隨著摩爾定律而來的是,1967年,Viterbi提出了Viterbi譯碼算法。

技術分享圖片

  

  在Viterbi譯碼算法提出之後,卷積碼在通信系統中得到了極為廣泛的應用,如GSM、 IS-95 、CDMA、3G、商業衛星通信系統等。

  但是,計算復雜性依然是一道邁不過的墻。

  盡管人們後來在分組碼、卷積碼等基本編碼方法的基礎上提出了許多簡化譯碼復雜性的方法,但是均因無比高聳的計算復雜性之墻阻擋而變得不可逾越。

  編碼專家們苦苦思索,試圖在可接受的計算復雜性條件下設計編碼和算法,以提高效率,但其增益與香農理論極限始終都存在2~3dB的差距。

  直到1993年,在日內瓦召開的 IEEE通信國際會議上,兩位當時名不見經傳的法國電機工程師C.Berrou和A.Glavieux聲稱他們發明了一種編碼方法,可以使信道編碼效率接近香農極限。

技術分享圖片

  

  這一消息太“轟動”了,因為幾乎所有的專家都認為這倆“棒槌”是來搗亂的。

  這麽多數學家都沒能突破,就你這兩個小角色也敢宣稱接近香農極限?不是存心搗亂嗎?一定是計算上出了錯誤吧?

  許多專家甚至懶得去讀完這篇論文。

  事實上,這兩位法國老兄的數學功底可能真的不怎麽樣,他們沒有試圖從數學上找突破口,因此他們的論文在會上被懷疑和忽略就不足為奇了。

  但是,專家們忽略了一個問題。憑著電機工程師的經驗,他們發現在電子學中經常用到的反饋概念似乎被數學家們忽略 。也許反饋能夠使我們繞過計算復雜性問題,於是他們就設計了一套新的辦法。

  首先他們擯棄了“純粹”的數字化概念。在典型的數字化方法中,總是先把某一電平設定為閾值。信號電平高於這一閾值就判決為“1”,低於就判決為“0”。在Turbo碼解碼過程中,某一特定比特的電平被量化為整數,例如從-127 到+127。其數值就作為判決該比特為“1”或“0”的可置信度的度量(例如-110意味該比特非常非常可能是“0”,而+40 意味該比特也許是“1”但把握不大)。

  其次,與其他系統不同,Turbo碼系統在發射端和接收端分別設置兩個編碼器和解碼器。其中一對編解碼器對特定的一段比特流進行奇偶校驗碼的加入和校驗計算,另一對編解碼器則在同一段碼流經過交織擾動後對其進行上述同樣操作。

技術分享圖片

  

  ▲Turbo編碼器結構。Turbo碼編碼器是由兩個或多個反饋的系統卷積碼編碼器通過一個隨機交織器並行連接而成,編碼後的校驗位經過刪余矩陣,從而產生不同碼率的碼字。

  由於這兩段碼流包含同樣的數據,如果沒有信道噪聲,解碼結果應該一致。但在噪聲幹擾下兩組結果會產生差別。通過上述對比特判決的可置信度信息的幫助,把這兩組結果彼此參照,可以得出第一次近似的結果。把這一結果“反饋”到解碼器前端,再進行叠代,經過幾次叠代兩個解碼器的結果就會互相接近(收斂)。這樣就繞過了計算復雜性問題。

技術分享圖片

技術分享圖片

  

  ▲Turbo碼的譯碼器有兩個分量碼譯碼器,譯碼在兩個分量譯碼器之間進行叠代譯碼,故整個譯碼過程類似渦輪(turbo)工作,所以又形象的稱為Turbo碼。

  當然這樣做也得付出代價。由於叠代解碼,必然會產生時延。所以對於實時性要求很高的場合,Turbo碼直接應用會受到限制。

  接下來,那些編碼專家們跌破了眼鏡。不可思議,當其他小組驗證了這兩位法國老兄的方案時,證明了結論是正確的。現在人們談論的已經是和香農極限相差0.1dB還是0.01dB了。

  一個通信編碼史上的革命性的時代到來了!兩位名不見經傳的電機工程師不顧科學權威認定的種種“極限”,在一片嘲笑聲中,另辟蹊徑,突破了理論壁壘。

  一開始,Turbo碼只是應用於一些特殊場合,比如衛星鏈路。後來,研究人員將它擴展到數字音頻和視頻廣播領域。

  緊接著,Turbo碼成為通信研究的前沿,全世界各大公司都聚焦在這個領域,包括法國電信、NTT、DoCoMo、索尼、NEC、朗訊、三星、愛立信、諾基亞 、 摩托羅拉和高通等等。

  Turbo碼成為了始於本世紀初的3G/4G移動通信技術的核心,直到今天4.5G,我們依然在采用。

  現在,編碼專家們都松了一口氣,總算解決了這個棘手的問題。也同時都嘆了一口氣,因為這已經接近香農極限了,發現似乎在這領域已經很難再突破了。

  收工,回家,帶娃。

  但是,在1999年,編碼界又發生了一件有趣的事。人們重燃起了對LDPC的興趣,盡管它已經被人們遺忘了幾十年。

  LDPC( low-density parity check),即低密度奇偶校驗碼。它於1962年由Gallager提出,然後,被人們遺忘了。直到Turbo碼被提出以後,人們才發現Turbo碼從某種角度上說也是一種LDPC碼。

技術分享圖片

  

  另一件讓人們感興趣的事是,LDPC碼發明較早,其基本專利到1999年就到期了,而Turbo碼要到2013年才到期。

  LDPC利用校驗矩陣的稀疏性,使得譯碼復雜度只與碼長成線性關系,在長碼長的情況下仍然可以有效的進行譯碼,因而具有更簡單的譯碼算法。隨著人們對 LDPC碼重新進行了研究,發現LDPC 以有效的進行譯碼,因而具有更簡單的譯碼算法。隨著人們對 LDPC碼重新進行了研究,發現LDPC 其極限性能距香農理論限僅相差0.0045dB。

  接著,LDPC在IEEE 802.11n 以及802.16的技術提案中被熱烈討論。DVB-S2也決議以LDPC替代Turbo碼。有人認為,LDPC是終極糾錯編碼,極有可能成為未來主流編碼技術。

  所以,一場關於Turbo碼和LDPC碼的爭論就拉開了。隨著5G標準化的到來,Turbo碼和LDPC碼像拳擊臺上兩名重量級選手,兩人都宣稱自己將是獲勝者,但裁判的結束哨聲卻一直未吹響。

  裁判很頭痛,這是一場幾乎無法打分的比賽。因為,之所以有爭論,無非是要證明,誰才更適合未來5G用例?誰才能更好滿足新的技術需求?

  眾所周知,2G的應用場景是語音和低速率數據業務,3G和4G的應用場景是語音和更高速率的數據業務。可以確定的是,Turbo碼和LDPC碼都能很好的滿足3/4G,甚至是4.5G用例。

  而5G用例呢?市場上還沒有出現,而且很多。不管是Turbo碼,還是LDPC碼,都無法確定誰才是最好的選擇。而且,由於兩者各有優缺點,要覆蓋全部5G應用,不太現實。

  正當Turbo碼和LDPC碼打拳擊賽之時,Polar碼沖上了拳臺,變成了一場摔角運動。

  很幸運,在編碼技術不斷打破記錄帶給我們驚喜時,另一項編碼領域裏的激動人心的研究已浮出水面。

  2007年,土耳其比爾肯大學教授E. Arikan基於信道極化理論提出的一種線性信道編碼方法,即Polar碼。該碼字是迄今發現的唯一一類能夠達到香農限的編碼方法,並且具有較低的編譯碼復雜度,當編碼長度為N時,復雜度大小為 O ( NlogN)。

技術分享圖片

  

  Polar碼的理論基礎就是信道極化。信道極化包括信道組合和信道分解部分。當組合信道的數目趨於無窮大時,則會出現極化現象:一部分信道將趨於無噪信道,另外一部分則趨於全噪信道,這種現象就是信道極化現象。無噪信道的傳輸速率將會達到信道容量 I (W ),而全噪信道的傳輸速率趨於零。

  Polar碼的編碼策略正是應用了這種現象的特性,利用無噪信道傳輸用戶有用的信息,全噪信道傳輸約定的信息或者不傳信息。

  這就像一個班上的同學,上學時間足夠長的話,差的學生大部分會跌到谷底,好的學生大部分會飛向雲巔,然後,拋棄那些學渣…

  Polar碼比Turbo碼和LDPC碼更接近信道容量,Polar碼可以保證5G任何場景的高性能通信。誇張的講,如果不考慮系統設計問題,編碼技術的歷史就應該到此終結了,終結在Polar碼的手裏。

  但是,編解碼的復雜性是Polar的問題,不過,在使用改進後SCL(Successive Cancelation List)譯碼算法時能以較低復雜度的代價,接近最大似然譯碼的性能。

  關鍵是,Polar碼還是太年輕了,發明得比較晚,很多研究還建立在理論基礎上,不像Turbo碼和LDPC碼已經廣泛應用於實際場景。只有等待時間來告訴我們,Polar碼到底是不是5G信道編碼的王者。

  回顧信道編碼歷史,波瀾壯闊。在幾十年並不漫長的歲月裏,一次又一次關鍵技術的歷史性突破,造就了今天人類通信奇跡。而當5G即將到來之時,更令人興奮的是,我們看到了各種優秀的編碼技術的湧現。毫不誇張的說,這是信道編碼技術的文藝復興時期。而開啟文藝復興之門的,不僅僅是信道編碼,5G將激發無線產業史無前例的創新活力。

趣味講解信道編碼的發展歷程