LDPC碼是麻省理工學院Robert Gallager於1963年在博士論文中提出的一種具備稀疏校驗矩陣的分組糾錯碼。幾乎適用於全部的信道,所以成爲編碼界近年來的研究熱點。它的性能逼近香農限,且描述和實現簡單,易於進行理論分析和研究,譯碼簡單且可實行並行操做,適合硬件實現。git
編輯算法
任何一個(n,k)分組碼,若是其信息元與監督元之間的關係是線性的,即能用一個線性方程來描述的,就稱爲線性分組碼。性能
低密度奇偶校驗碼圖(LDPC碼)本質上是一種線形分組碼,它經過一個生成矩陣G將信息序列映射成發送序列,也就是碼字序列。對於生成矩陣G,徹底等效地存在一個奇偶校驗矩陣H,全部的碼字序列C構成了H的零空間 (null space),即編碼
。spa
LDPC仿真系統圖設計
LDPC 碼的奇偶校驗矩陣H是一個稀疏矩陣,相對於行與列的長度,校驗矩陣每行、列中非零元素的數目(咱們習慣稱做行重、列重)很是小,這也是LDPC碼之因此稱爲低密度碼的緣由。因爲校驗矩陣H的稀疏性以及構造時所使用的不一樣規則,使得不一樣LDPC碼的編碼二分圖(Taner圖)具備不一樣的閉合環路分佈。而二分圖中閉合環路是影響LDPC碼性能的重要因素,它使得LDPC碼在相似可信度傳播(Belief ProPagation)算法的一類迭代譯碼算法下,表現出徹底不一樣的譯碼性能。code
當H的行重和列重保持不變或儘量的保持均勻時,咱們稱這樣的LDPC碼爲正則LDPC碼,反之若是列、行重變化差別較大時,稱爲非正則的LDPC碼。研究結果代表正確設計的非正則LDPC碼的性能要優於正則LDPC。根據校驗矩陣H中的元素是屬於GF(2)仍是GF(q)(q=2p),咱們還能夠將LDPC碼分爲二元域或多元域的LDPC碼。研究代表多元域LDPC碼的性能要比二元域的好。視頻
編輯blog
LDPC碼
LDPC ( Low-density Parity-check,低密度奇偶校驗)碼是由 Gallager 在1963 年提出的一類具備稀疏校驗矩陣的線性分組碼 (linear block codes),然而在接下來的 30 年來因爲計算能力的不足,它一直被人們忽視。1996年,D MacKay、M Neal 等人對它從新進行了研究,發現 LDPC 碼具備逼近香農限的優異性能。而且具備譯碼複雜度低、可並行譯碼以及譯碼錯誤的可檢測性等特色,從而成爲了信道編碼理論新的研究熱點。
Mckay ,Luby 提出的非正則 LDPC 碼將 LDPC 碼的概念推廣。非正則LDPC碼 的性能不只優於正則 LDPC 碼,甚至還優於 Turbo 碼的性能,是目前己知的最接近香農限的碼。
Richardson 和 Urbank 也爲 LDPC 碼的發展作出了巨大的貢獻。首先,他們提出了一種新的編碼算法,在很大程度上減輕了隨機構造的 LDPC 碼在編碼上的巨大運算量需求和存儲量需求。其次,他們發明了密度演進理論,可以有效的分析出一大類 LDPC 譯碼算法的譯碼門限。仿真結果代表,這是一個緊緻的譯碼門限。最後,密度演進理論還能夠用於指導非正則 LDPC碼 的設計,以得到儘量優秀的性能。
LDPC水印系統結構框圖
LDPC碼具備巨大的應用潛力,將在深空通訊、光纖通訊、衛星數字視頻、數字水印、磁/光/全息存儲、移動和固定無線通訊、電纜調製/解調器和數字用戶線(DSL)中獲得普遍應用。
M.Chiain 等對 LDPC 碼用於有記憶衰落信道時的性能進行了評估。B.Myher 提出一種速率自適應 LDPC 編碼調製的方案用於慢變化平坦衰落信道,經推廣還可用於 FEC-ARQ 系統。
Flarino 開發的集成了 V-DLPC 的 flash-OFDM 移動無線芯片組己可用於基於 IP 的移動寬帶網。VOCAL Technologies.Ltd 提出了一種用於 WLAN 的LDPC/Turbo 不對稱解決方案,即下行鏈路採用 LDPC 碼,上行鏈路採用 Turbo碼。研究代表採用該方案後用於IEEE802.11 a/b/gWLAN移動終端的電池壽命可延長至原來的4倍。
工業界也己經有 LDPC 編譯碼芯片問世。其中,處於領先地位的 Flarion公司 推出的基於 ASIC 的 Vector-LDPC 解決方案使用了約 260 萬門,最高能夠支持 50000的碼長,0.9 的碼率,最大迭代次數爲 10,譯碼器能夠達到 10Gbps 的吞吐量,其性能己經很是接近香農限,能夠知足目前大多數通訊業務的需求。AHA 公司、Digital Fountain公司也都推出了本身的編譯碼解決方案。
和另外一種近Shannon限的碼-Turbo碼相比較,LDPC碼主要有如下幾個優點:
1. LDPC碼的譯碼算法,是一種基於稀疏矩陣的並行迭代譯碼算法,運算量要低於Turbo碼譯碼算法,而且因爲結構並行的特色,在硬件實現上比較容易。所以在大容量通訊應用中,LDPC碼更具備優點。
2. LDPC碼的碼率能夠任意構造,有更大的靈活性。而Turbo碼只能經過打孔來達到高碼率,這樣打孔圖案的選擇就須要十分慎重的考慮,不然會形成性能上較大的損失。
Trubo碼編碼器結構
3. LDPC碼具備更低的錯誤平層,能夠應用於有線通訊、深空通訊以及磁盤存儲工業等對誤碼率要求更加苛刻的場合。而Turbo碼的錯誤平層在10量級上,應用於相似場合中,通常須要和外碼級聯才能達到要求。
4. LDPC碼是上個世紀六十年代發明的,如今,在理論和概念上再也不有什麼祕密,所以在知識產權和專利上再也不有麻煩。這一點給進入通訊領域較晚的國家和公司,提供了一個很好的發展機會。
而LDPC碼的劣勢在於:
1. 硬件資源需求比較大。全並行的譯碼結構對計算單元和存儲單元的需求都很大。
2. 編碼比較複雜,更好的編碼算法還有待研究。同時,因爲須要在碼長比較長的狀況才能充分體現性能上的優點,因此編碼時延也比較大。
3. 相對而言出現比較晚,工業界支持還不夠。
爲了分析方便,咱們通常用因子圖來表示一個LDPC碼。因子圖上全部的代碼點能夠分紅互不相關的兩類,咱們稱之爲信息點和校驗點。因子圖上的邊以必定的規律把它們鏈接起來,可是同一類中的代碼點不能用邊鏈接起來。事實上因子圖與用來定義碼字的奇偶校驗矩陣H是相對應的,即因子圖上的變量節點對應矩陣H的列向量,校驗節點對應因子圖上的行向量,而矩陣中非零元素就對應因子圖上的每一條邊。在定義新的碼字時,每一次構造的碼字在二進制矢量域中定義爲x=(x1,x2,…,xn)。當且僅當方程Hx=0時爲一碼字,也就是說,當且僅當每個校驗點的相鄰變量節點的異或值爲0時,對應的二進制矢量x=(x1,x2,…,xn)纔是一個碼字。假設因子圖上每個變量節點的度數是Y,每個校驗點的度數是P,節點的次數爲與該節點相聯邊的個數。若是Y,P相對於碼字總長n來講很小,則該因子圖對應的奇偶校驗矩陣是稀疏矩陣。
一個碼長n=6,碼率r=1/3,列重Y=2,行重P=3的校驗矩陣H和其對應的因子圖以下:
校驗矩陣 因子圖
校驗矩陣 | 因子圖 |
校驗矩陣
因子圖
非正規與正規LDPC碼
在LDPC碼的校驗矩陣中,若是行列重量固定爲(P,Y),即每一個校驗節點有P個變量節點參與校驗,每一個變量節點參與Y個校驗節點,咱們稱之爲正則LDPC碼。Gallager最初提出的Gallager碼就具備這種性質。從編碼二分圖的角度來看,這種LDPC碼的變量節點度數所有爲Y,而校驗節點的度數都爲P。咱們還能夠適當放寬上述正則LDPC碼的條件,行列重量的均值能夠不是一個整數,但行列重量儘可能服從均勻分佈。另外爲了保證LDPC碼的二分圖上不存在長度爲4的圈。咱們一般要求行與行以及列與列之間的交疊部分重量不超過1,所謂交疊部分即任意兩列或兩行的相同部分。咱們能夠將正則LDPC碼校驗矩陣H的特徵歸納以下:
1. H的每行行重固定爲P,每列列重固定爲Y。
2. 任意兩行(列)之間同爲1的列(行)數(稱爲重疊數)不超過1,即H矩陣中不含四角爲1 的小方陣,也即無4線循環。
3. 行重P和列重Y相對於H的行數M、列數N很小,H是個稀疏矩陣。
在正則LDPC碼的校驗矩陣中。行重和列重的均值保持不變,因此校驗矩陣中1的個數隨着碼長的增長而線性增加,整個校驗矩陣的元素個數則成平方增加。當碼長達到必定長度時,校驗矩陣H是很是稀疏的低密度矩陣。對於正則的LDPC碼,MacKay給出瞭如下兩個結論:
1. 對於任意給定列重大於3的LDPC碼,存在某個小於信道傳輸容量且大於零的速率r ,當碼長足夠長時,能夠實現以小於r且不爲零的速率無差錯的傳輸。也就是說任意給定一個不爲零的傳輸速率r,存在一個小於相應香農限的噪聲門限,當信道噪聲低於該門限且碼長足夠長的時候,能夠實現以r速率無差錯的傳輸。
2. 當LDPC碼的校驗矩陣H的列重Y不固定,而是根據信道特性和傳輸速率來肯定時,則必定能夠找到一個最佳碼,實如今任意小於信道傳輸容量的速率下無差錯的傳輸。
對於LDPC 碼的每一個變量節點來講,當它參與的校驗式越多,即度數Y越大,則它能夠從更多的校驗節點獲取信息,也就能夠更加準確的判斷出它的正確值。對於H的每一個校驗節點來講,當它涉及的變量節點越少,即度數P越小,則它能夠更準確的估計相關變量節點的狀態。這種狀況對於正則LDPc碼來講是一對不可克服的矛盾,因而Luby,Mitzemnacher等人就引入了非正則LDPC碼的概念。
在非正則LDPC碼的編碼二分圖中,兩個集合內部的節點度數再也不保持相同,即每一個變量節點參與的校驗式數目或每一個校驗式中含有的變量節點數目再也不保持均勻,而是有意設置部分突出的變量節點和校驗節點。在譯碼過程當中,那些參與較多校驗式的變量節點迅速獲得它們的正確譯碼信息,這樣它們就能夠給相鄰的校驗節點更加有效的機率信息,而這些校驗節點又能夠給與它們相鄰的次數少的變量節點更多的信息。整個譯碼的過程呈現出一種波狀效應,次數越高的變量節點首先得到正確信息,而後是次數較低的節點,而後依次往下,直到次數最低的變量節點。正是這種波狀效應,使得非正則LDPC碼得到比正則LDPC更好的譯碼性能。
二元域與多元域LDPC碼
對LDPC碼的定義都是在二元域基礎上的,MaKcay對上述二元域的LDPC碼又進行了推廣。若是定義中的域不限於二元域就能夠獲得多元域GF(q)上的LDPC碼。多元域上的LDPC碼具備較二進制LDPC碼更好的性能,並且實踐代表在越大的域上構造的LDPC碼,譯碼性能就越好,好比在GF(16)上構造的正則碼性能己經和Turbo碼相差無幾。多元域LDPC碼之因此擁有如此優異的性能,是由於它有比二元域LDPC碼更重的列重,同時還有和二元域LDPC碼類似的二分圖結構。
假設在域GF(2)和域GF(q)(q=2p)上構造的LDCP碼所對應的校驗矩陣分別是H2和Hq。H2中的元素是0或1,而Hq是由元素0,1,…,q-1構成,Hq中的每一個元素都是H2中p個元素的合成。若是設域GF(q)(q=2p)上的一個值a與一個1*p的二進制向量相關聯,那麼把這個向量代入Hq中,就能夠獲得Hq的二進制表示。對於二進制LDPC碼來講,若是它的校驗矩陣H的列重量足夠大,那麼它能夠任意地接近香農限,可是若是增長列重量會使得二分圖中節點之間短圈的數H急劇增長從而使BP算法的性能降低。而在GF(q)域上構造的LDPC能夠解決這個矛盾,它的檢驗矩陣H。能夠增長與之對應的二進制校驗矩陣HZ中列的平均重量,且它的二分圖結構並無改變,不會形成節點之間短圈數目的增長,從而使得譯碼性能獲得顯著的提升。這種多元域上的編碼構造會增長譯碼複雜度,可是相對於譯碼性能的提升來講這種增長是值得的。
對LDPC碼來講,不考慮碼長和次數分佈的狀況下,校驗矩陣的結構就成了影響其性能的重要因素,反映在二分圖上對編碼性能有重要影響的就是圖中環的長度分佈,須要採用必定的方法對校驗矩陣進行構造,得到好的編碼。
目前LDPC碼的構造方法主要能夠分爲兩大類:隨機或僞隨機構造方法和代數的構造方法。
隨機或僞隨機的構造方法主要考慮的是碼的性能,在碼長比較長(接近或超過10000) 時,性能很是接近香農限。代數的構造方法一般考慮的是下降編譯碼的複雜度,在碼長比較短的時候更有優點。
1. Gallager LDPC碼
用和乘積算法(SPA:Sum-pordcuct algorithm)進行譯碼取得最大後驗機率的譯碼性能的條件是二分圖中沒有小的環,即girth爲4的環,無4環的條件反映到二分圖中就是任意兩行中1的交迭數目不超過1個。無4環的二元高比特率LDPc碼能夠經過隨機生成行構成,通常來講,這種方法不能生成固定行重量的矩陣。
Gallaegr提出了一種替代的方法:採用隨機置換的方法來構造規則LDPC碼。對於碼長爲N的(j,k)正則碼,將M*N矩陣H經過j個大小爲(M/j)*N的子矩陣構成,每一個子矩陣自己也是LDPC矩陣,列重量爲1,行重量爲k,第一個子矩陣爲階梯型,即第1行的k個1的列號是從(i-1)*k l到1*k,而其餘子矩陣都是第一個子矩陣的隨機列置換,這樣每一個子矩陣每行都有k個1,每列都有1個1。這種構造方法要求M必須是j的整數倍。
(20,3,4)LDPC碼的校驗矩陣
Gallager曾給出了一個碼長爲20的規則(3,4)LDPC碼的校驗矩陣,如圖所示。圖中的第一個子矩陣就是一個階梯型矩陣,而第2個和第3個矩陣都是第一個子矩陣的列置換。
Gallager同時證實了隨機置換獲得的GaHager LDPC碼的最小漢明距離可以隨着碼長的增長而線性增長,並且在對稱無記憶信道中,採用最大似然譯碼時,其誤碼率隨着碼長的增長而呈指數形式降低,這說明隨機置換獲得的Gallager LDPC碼是一類至關好的碼。
可是,Gallager在構造LDPC碼時採用的是隨機置換,這就給實現帶來了麻煩,就須要大量的存儲單元來存儲校驗矩陣中這些1的位置。
2. 肯定性結構的LDPC碼
肯定性結構的LDPC碼也稱爲準循環LDPC碼。相對於隨機結構的矩陣是很容易得到的肯定性結構的矩陣,這種矩陣能夠經過更少的參數來定義LDPC碼。肯定性結構的LDPC碼的構造方法基於「陣列碼」(Array Code)。陣列碼是用來檢測和糾正突發差錯的二維碼。
經過三個參數定義LDPC碼。一個基本參數p和兩個整數j和k。令H爲jp*kp的矩陣,定義爲:
LDPC碼
其中這裏的I是p*p的單位陣,Bi.j是Ip*p的左循環移位Bm.n或右循環移位Bm.n的置換矩陣。顯然,H矩陣中1的分佈就只與循環位數Bm.n有關。對LDPC碼的分析就能夠轉換爲對Bm.n的分析。
將各小矩陣的循環移動位數寫成一個矩陣爲
LDPC碼
上面的校驗矩陣提供了一個能夠用於SAP譯碼的稀疏矩陣。並且,這個校驗矩陣結構上沒有四線循環。
LDPC碼編碼是在通訊系統的發送端進行的,在接收端進行相應的譯碼,這樣才能實現編碼的糾錯。LDPC 碼因爲其奇偶校驗矩陣的稀疏性,使其存在高效的譯碼算法,其複雜度與碼長成線性關係,克服了分組碼在碼長很大時,所面臨的巨大譯碼算法複雜度問題,使長碼分組的應用成爲可能。並且因爲校驗矩陣稀疏,使得在長碼時,相距很遠的信息比特參與統一校驗,這使得連續的突發差錯對譯碼的影響不大,編碼自己就具備抗突發錯誤的特性。
LDPC碼的譯碼算法種類不少,其中大部分能夠被歸結到信息傳遞〔Mesaseg Prpagation,MP)算法集中。這一類譯碼算法因爲具備良好的性能和嚴格的數學結構,使得譯碼性能的定量分析成爲可能,所以特別受到關注。MP算法集中的置信傳播(BP)算法是Gallager提出的一種軟輸入迭代譯碼算法,具備最好的性能。若是咱們首先理解並掌握了一些很簡單的硬判決算法後,對BP算法的理解會更加容易。同時,經過一些經常使用的數學手段,咱們能夠對BP譯碼算法做一些簡化,從而在必定的性能損失內得到對運算量和存儲量需求的下降。
LDPC碼具備很好的性能,譯碼也十分方便。特別是在GF(q)域上的非規則碼,在非規則雙向圖中,當各變量節點與校驗節點的度數選擇合適時,其性能很是接近香農限。從此,LDPC碼的研究方向主要有:
(1)碼的設計;
(2)選擇合適的硬件(以下降編譯碼的運算複雜性);
(3)LDPC碼應用於下一代通訊系統。目前,LDPC碼已成爲第四代移動通訊編碼技術中的首選。