完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>
標簽 > LDPC
LDPC是Low Density Parity Check Code英文縮寫,意思是低密度奇偶校驗碼,最早在20世紀60年代由Gallager在他的博士論文中提出。
LDPC碼最早在20世紀60年代由Gallager在他的博士論文中提出,但限于當時的技術條件,缺乏可行的譯碼算法,此后的35年間基本上被人們忽略,其間由Tanner在1981年推廣了LDPC碼并給出了LDPC碼的圖表示,即后來所稱的Tanner圖。1993年Berrou等人發現了Turbo碼,在此基礎上,1995年前后MacKay和Neal等人對LDPC碼重新進行了研究,提出了可行的譯碼算法,從而進一步發現了LDPC碼所具有的良好性能,迅速引起強烈反響和極大關注。經過十幾年來的研究和發展,研究人員在各方面都取得了突破性的進展,LDPC碼的相關技術也日趨成熟,甚至已經開始有了商業化的應用成果,并進入了無線通信等相關領域的標準。LDPC碼是通過校驗矩陣定義的一類線性碼,為使譯碼可行,在碼長較長時需要校驗矩陣滿足“稀疏性”,即校驗矩陣中1的密度比較低,也就是要求校驗矩陣中1的個數遠小于0的個數,并且碼長越長,密度就要越低。
LDPC是Low Density Parity Check Code英文縮寫,意思是低密度奇偶校驗碼,最早在20世紀60年代由Gallager在他的博士論文中提出。
發展歷史
LDPC碼最早在20世紀60年代由Gallager在他的博士論文中提出,但限于當時的技術條件,缺乏可行的譯碼算法,此后的35年間基本上被人們忽略,其間由Tanner在1981年推廣了LDPC碼并給出了LDPC碼的圖表示,即后來所稱的Tanner圖。1993年Berrou等人發現了Turbo碼,在此基礎上,1995年前后MacKay和Neal等人對LDPC碼重新進行了研究,提出了可行的譯碼算法,從而進一步發現了LDPC碼所具有的良好性能,迅速引起強烈反響和極大關注。經過十幾年來的研究和發展,研究人員在各方面都取得了突破性的進展,LDPC碼的相關技術也日趨成熟,甚至已經開始有了商業化的應用成果,并進入了無線通信等相關領域的標準。LDPC碼是通過校驗矩陣定義的一類線性碼,為使譯碼可行,在碼長較長時需要校驗矩陣滿足“稀疏性”,即校驗矩陣中1的密度比較低,也就是要求校驗矩陣中1的個數遠小于0的個數,并且碼長越長,密度就要越低。
應用熱點
LDPC碼即低密度奇偶校驗碼(Low Density Parity Check Code,LDPC),它由Robert G.Gallager博士于1963年提出的一類具有稀疏校驗矩陣的線性分組碼,不僅有逼近Shannon限的良好性能,而且譯碼復雜度較低, 結構靈活,是近年信道編碼領域的研究熱點,目前已廣泛應用于深空通信、光纖通信、衛星數字視頻和音頻廣播等領域。LDPC碼已成為第四代通信系統(4G)強有力的競爭者,而基于LDPC碼的編碼方案已經被下一代衛星數字視頻廣播標準DVB-S2采納。
譯碼算法
對同樣的LDPC碼來說,采用不同的譯碼算法可以獲得不同的誤碼性能。優秀的譯碼算法可以獲得很好的誤碼性能,反之,采用普通的譯碼算法,誤碼性能則表現一般。LDPC碼的譯碼算法包括以下三大類:硬判決譯碼,軟判決譯碼和混合譯碼。1. 硬判決譯碼將接收的實數序列先通過解調器進行解調,再進行硬判決,得到硬判決0,1序列,最后將得到的硬判決序列輸送到硬判決譯碼器進行譯碼。這種方式的計算復雜度固然很低,但是硬判決操作會損失掉大部分的信道信息,導致信道信息利用率很低,硬判決譯碼的信道信息利用率和譯碼復雜度是三大類譯碼中最低的。常見的硬判決譯碼算法有比特翻轉(bit-flipping, BF)算法、一步大數邏輯(one-step majority-logic, OSMLG)譯碼算法。2. 軟判決譯碼可以看成是無窮比特量化譯碼,它充分利用接收的信道信息(軟信息),信道信息利用率得到了極大的提高,軟判決譯碼利用的信道信息不僅包括信道信息的符號,也包括信道信息的幅度值。信道信息的充分利用,極大地提高了譯碼性能,使得譯碼可以迭代進行,充分挖掘接收的信道信息,最終獲得出色的誤碼性能。軟判決譯碼的信道信息利用率和譯碼復雜度是三大類譯碼中最高的。最常用的軟判決譯碼算法是和積譯碼算法,又稱置信傳播 (belief propagation, BP)算法。3. 與上述的硬判決譯碼和軟判決譯碼相比,混合譯碼結合了軟判決譯碼和硬判決譯碼的特點,是一類基于可靠度的譯碼算法,它在硬判決譯碼的基礎上,利用部分信道信息進行可靠度的計算。常用的混合譯碼算法有、加權比特翻轉(weighted BF, WBF)算法、加權OSMLG(weighted OSMLG, WMLG)譯碼算法。
LDPC初級之Decoder基礎
LDPC (Low-Density Parity-Check,低密度奇偶校驗) 強大的糾錯能力使其應用范圍越來越廣。LDPC可以簡單的分成編碼器(Encoder),信道模型(Channel model),解碼器(Decoder)三部分。其中Decoder在這三部分中最為簡單,為此,初級系列先介紹decoder,便于大家對LDPC有一個初步的了解。
如今LDPC的Decoder多采用sum-product decoding。而在介紹sum-product之前,有必要先介紹message-passing和bit-flipping decoding,了解它們對于了解sum-product,以及后續深入學習LDPC有很大的幫助。
Tanner Graph
直觀認識message-passing工作原理的最佳工具是Tanner Graph。每個parity-check matrix H都有一個對應的Tanner Graph。以一個例子說明Tanner Graph的構造原理,如下H矩陣:
(1)
H陣的每一行對應的都是一個parity-check,將第m行中每個“1”所處的第n列,即bit cn,歸納成一個組合
比如, , .因此,第m行的parity-check可以表述成:
其中是第m行中元素。
同時,定義
為第m行中除了第n列,其它元素為“1”的列。比如, , .
除了組合每行中的元素“1”的列位置,還需組合每列中元素“1”所處的行位置。定義:
為第n列(bit cn)所處元素為“1”的行。比如, , .
定義:
為第n列中除了第m行,其它對應元素為”1”的行。如:, .
了解這些,除了對創建Tanner Graph有幫助外,還對了解后續的bit-flipping, sum-product等幫助。
Tanner Graph由三種元素構成:
- bit nodes:代表H陣中的列,也就是codeword的每個bit;
- check nodes:代表H陣中的行,也就是parity-check約束;
- edge:如果Hmn=1,則第n個bit node和第m個check node之間會互連,即一條edge。
根據以上的H矩陣,其對應的Tanner Graph如下圖:
因為, 則check node z1與c1, c2, c4之間有edge。因為 ,則bit node c1與z1, z3之間有edge。
Message-Passing
Message-passing是指信息在相連的check nodes和bit nodes間傳遞。Bit-flipping和sum-product decoding都屬于message-passing,所不同的是,二者傳遞的信息不一樣。下面以BEC(Bit Erasure Channel)為例,介紹message-passing的工作原理,讓大家對其有一個直觀的了解。
所謂BEC,是指在其通道中傳輸的信號要么被接收器正確的接收,要么被通道erase掉,使得接收器沒有接收到此信號。由于接收到的信號都是正確的,因此Decoder只需要處理那些沒有接收到的未知信號即可。
回想Decoder判斷接收信號為codeword的基本原理,
以H陣的z1為例,則需滿足如下關系
假設bit c1=r1=”0”,c2=r2=”1”,c4在經過BEC通道時出錯,導致r4未知:r4=”x”,則可以推斷出c4=“1”,由此完成對c4在糾錯。因此,BEC的message-passingdecoding可以簡化如下:
1. 初始化:接收到信號(”x”代表對應bit被BEC erase)視為由bit nodes傳遞給相連check nodes的初始信息。
2. check nodes update: 如果傳遞到check node zm的信息中沒有”x”,則check nodes無需生成新信息;如果只有cn=”x”,則需根據
其中為mod 2求和, 為check node zm生成的信息,并將其傳遞給bit cn。如果有兩個及以上的bit node為”x”,則zm無法糾錯,.
3. bit nodes update: 如果bit nodes的狀態為”x”,則將其更新為接收到的信息。
4. 如果bit nodes沒有了”x”,則decoding結束;否則從步驟2處開始,繼續迭代。
Example:
由方程(1)中的H矩陣,編碼得到一個codeword c=[0 0 1 0 1 1]。經過BEC通道后,接收到的信號r=[0 0 1 x x x]。 Message-passing decoding的糾錯過程如下:
1. 初始化:bit nodes傳遞給check nodes的初始信息M=[0 0 1 x x x]。
2. Check nodes update:
由H矩陣及其Tanner Graph可知,z1與c1, c2, c4相連,其中M4=”x”,則check nodez1生成信息
z2與c2, c3, c5相連,其中M5=”x”,則check nodez2生成信息
z3與c1, c5, c6相連,其中M5=”x”,M6=”x”。因為有兩個未知信息,所以check nodez3無法糾錯,因此z3生成信息
z4與c3, c4, c6相連,其中M4=”x”,M6=”x”。則
3. Bit nodes update
因為M4=”x”,,則Bit node c4=”0”。
因為M5=”x”,, 則Bit node c5=”1”。
因為M6=”x”, ,,則Bit node c6=”x”。
Bit nodes update結束后,各Bit node的信息更新為M=[0 0 1 0 1 x]。因此重復Check nodes update,繼續迭代。
4. Check nodes update
z3與c1, c5, c6相連,其中M6=”x”。則
z4與c3, c4, c6相連,其中M6=”x”。則
5. Bit nodes update
目前只有M6=”x”, , 則Bit node c6的信息更新為1,M=[0 0 1 0 1 1]。
6. End
至此,所有bit nodes的信息都為0/1,不再有”x”,糾錯結束。
通過以上的分析,想必大家對message-passing decoding中的message和passing有了直觀的了解。BEC的特性決定了接收到的信息一定是正確的,所以其decoding的方法只是syndrome decoding。但是在BSC (Binary Symmetric Channel)和AWGN (Additive White Gaussian Noise)通道中,由于接收到的數據并不能明確知道其對錯,導致decoding的方法會與BEC有所不同。
盡管BEC的message-passing decoding方法非常簡單,但是其中也存在缺陷。請大家思考一個問題:什么情況下,無論進行多少次的迭代計算,BEC的message-passing decoding依然無法糾錯成功?后續的文章中會對此做專題分析。
Bit-Flipping Decoding
Bit-flipping是message-passing中的hard-decision算法,在bit nodes 和check nodes中,傳遞的信息是0/1。Check node依然利用syndrome decoding的方法來生成信息。與BEC中的message-passing decoding不同的是,由于每個接收到的bit信息都存在出錯的可能性,所以check nodes需要針對每個與之相連的bit node生成信息。具體decoding步驟如下:
1. 初始化:接收到信號視為由bit nodes傳遞給相連check nodes的初始信息。
2. check nodes update: check node zm根據接收到的信息,針對每個與之相連的bit node生成信息
其中 為mod 2求和。
3. bit nodes update: bit node接收與之相連的check nodes傳遞來的信息。如果接收到的大部分信息與原bit node值不同,則bit node值翻轉。
4. 如果bit nodes的值滿足syndrome decoding,則decoding成功;否則從2開始繼續迭代。
Example:
由方程(1)中的H矩陣,編碼得到一個codeword c=[0 0 1 0 1 1]。經過BSC通道后,接收到的信號r=[1 0 1 0 1 1]。 Bit-flipping decoding的糾錯過程如下:
1. 初始化:bit nodes傳遞給check nodes的初始信息M=[1 0 1 0 1 1]。
2. Check nodes update: check node z1接收來自bit node c1, c2, c4的信息,則
即反饋給c1的信息, 如下圖所示。
反饋給c2的信息
反饋給c4的信息
同理,依次計算出:
3. Bit nodes update:
bit node c1與check nodes z1,z3相連,如下圖所示。, 而。根據服從大多數的原則,c1的信息要翻轉,則 ;
bit node c2與check nodes z1,z2相連,
不滿足大多數的原則,保持不變;
bit node c3與check nodes z2,z4相連,
則保持不變;
bit node c4與check nodes z1,z4相連,
保持不變;
bit node c5與check nodes z2,z3相連,
保持不變;
bit node c6與check nodes z3,z4相連,
保持不變。
Bit nodes update完成后,M=[0 0 1 0 1 1]。
4. 驗證M是否滿足syndrome decoding.
同理,。因此糾錯成功,c=[0 0 1 0 1 1]為發送codeword.
通過對BEC中的Message-passing decoding,以及Bit-flipping decoding的介紹,了解各decoding方法中的message和passing后,對于message-passing的工作過程及基本原理會有一個直觀的影響。這對于掌握sum-product decoding會有很好的幫助。
為了早日實現5G,Qualcomm 積極致力于5G設計,以促進并加快其發展。想要真正讓5G NR和 5G愿景變成現實,就不得不說五大關鍵無線發明。
國內首顆,精準糾錯!德明利TWSC2985系列:支持4K LDPC技術的存儲芯片
TWSC 2985 系列SD6.0存儲芯片 國內首顆支持4K LDPC糾錯技術 增強糾錯、耐久可靠、性能升級 ? 隨著移動計算和AI技術對數據存儲需求的...
寫入驅動器為全機架大小,可同時對多張盤片進行寫入;包含多個驅動器的讀取驅動器機架也采用相同設計。讀寫驅動器機架都需要配備冷卻、電源和網絡連接。
如今SSD固態硬盤早已不是什么新鮮事物,但是說起選購來,可能很多朋友并不清楚同樣是1TB容量的SSD固態硬盤,在性能上到底有何差別,或許有些朋友能夠說出...
AccelerComm推出完全集成的PUSCH解碼器,為性能關鍵的信道加快5G NR
這一高度集成的解決方案基于公司的信道編碼和調制/解調IP產品組合,使5G基站能夠受益于AccelerComm一流的LDPC解碼器性能,同時最大限度地縮短...
LDPC碼(低密度奇偶校驗碼)的校驗矩陣具有非常強的稀疏性,也就是校驗矩陣里面“0”占了大多數,“1”的數量極少。“1”元素的分布非常稀疏,...
聯蕓成功實現基于4K LDPC糾錯的第三代Agile ECC 3閃存信號處理技術的開發和驗證 可極大延長NAND的使用壽命
追求存儲密度以降低存儲成本不斷推動著NAND閃存技術的發展。NAND閃存技術已經從最初的SLC時代,跨越MLC、TLC向QLC時代快速演進,并且從最初的...
一種輸出格式可控的多碼率LDPC編碼器實現 0 引 言 目前,LDPC碼已廣泛應用于深空通信、光纖通信、數字音視頻廣播等領域。由于有著較Turb...
編輯推薦廠商產品技術軟件/工具OS/語言教程專題
電機控制 | DSP | 氮化鎵 | 功率放大器 | ChatGPT | 自動駕駛 | TI | 瑞薩電子 |
BLDC | PLC | 碳化硅 | 二極管 | OpenAI | 元宇宙 | 安森美 | ADI |
無刷電機 | FOC | IGBT | 逆變器 | 文心一言 | 5G | 英飛凌 | 羅姆 |
直流電機 | PID | MOSFET | 傳感器 | 人工智能 | 物聯網 | NXP | 賽靈思 |
步進電機 | SPWM | 充電樁 | IPM | 機器視覺 | 無人機 | 三菱電機 | ST |
伺服電機 | SVPWM | 光伏發電 | UPS | AR | 智能電網 | 國民技術 | Microchip |
開關電源 | 步進電機 | 無線充電 | LabVIEW | EMC | PLC | OLED | 單片機 |
5G | m2m | DSP | MCU | ASIC | CPU | ROM | DRAM |
NB-IoT | LoRa | Zigbee | NFC | 藍牙 | RFID | Wi-Fi | SIGFOX |
Type-C | USB | 以太網 | 仿真器 | RISC | RAM | 寄存器 | GPU |
語音識別 | 萬用表 | CPLD | 耦合 | 電路仿真 | 電容濾波 | 保護電路 | 看門狗 |
CAN | CSI | DSI | DVI | Ethernet | HDMI | I2C | RS-485 |
SDI | nas | DMA | HomeKit | 閾值電壓 | UART | 機器學習 | TensorFlow |
Arduino | BeagleBone | 樹莓派 | STM32 | MSP430 | EFM32 | ARM mbed | EDA |
示波器 | LPC | imx8 | PSoC | Altium Designer | Allegro | Mentor | Pads |
OrCAD | Cadence | AutoCAD | 華秋DFM | Keil | MATLAB | MPLAB | Quartus |
C++ | Java | Python | JavaScript | node.js | RISC-V | verilog | Tensorflow |
Android | iOS | linux | RTOS | FreeRTOS | LiteOS | RT-THread | uCOS |
DuerOS | Brillo | Windows11 | HarmonyOS |