
















摘 要:針對現有均勻量化的連續消除列表(Successive Cancellation List,SCL)譯碼算法中存儲資源消耗大、布線延遲高的問題,提出了一種采用5 bit 非均勻量化方案的SCL 譯碼算法。該算法保留均勻量化中的對數似然比(Log-Like-lihood Ratio,LLR)迭代計算方法,采用5 bit 非均勻量化LLR,在LLR 計算模塊中設計查找表(Look-Up-Table ,LUT)轉為6 bit 均勻量化LLR 用于計算。仿真結果表明,提出的5 bit 非均勻量化SCL 譯碼相比于6 bit 均勻量化SCL 譯碼器,在碼率R = 1 / 2、列表寬度L = 2 和L = 4 時,誤幀率(Frame Erasure Rate,FER)性能損失在0. 1 dB 以內。在硬件資源消耗方面,與6 bit 均勻量化譯碼器相比,5 bit 非均勻量化方案譯碼器在L = 2 時觸發器(Flip-Flop,FF)和塊隨機存取存儲器(Block Random Access Memory,BRAM)存儲資源消耗分別減少了10. 9% 和22% ,吞吐量增加了24% ;L = 4 時FF 和BRAM 分別減少了10% 和18. 1% ,吞吐量增加了17. 5% 。
關鍵詞:極化碼;連續消除列表譯碼;非均勻量化;現場可編程邏輯門陣列
中圖分類號:TN911 文獻標志碼:A 開放科學(資源服務)標識碼(OSID):
文章編號:1003-3114(2024)06-1200-09
0 引言
Arikan[1]提出的極化碼是第一個被證實的可實現信道容量的編碼方案,用于實現二進制輸入離散無記憶信道的對稱容量,同時具有顯式構造。它具有規則的遞歸結構,可以用低復雜度的編碼和解碼算法實現。然而,傳統的連續消除(Successive Can-cellation,SC)譯碼算法在碼長有限長下的性能并不令人滿意。針對該問題,學者已經做了大量的研究,引入更加復雜的譯碼算法,以提高其性能,如連續消除列表(Successive Cancellation List,SCL)譯碼算法[2-3]、連續消除堆棧譯碼算法等[4]。對于實際應用,文獻[5-7]研究了SC 譯碼器的硬件實現架構,并提出了樹型、線型、重疊型、半平行4 種硬件架構,其中樹型結構常用于流水線設計,而半平行結構將高度并行的運算用有限的計算單元進行拆分計算,具有最大的資源復用率。文獻[8]研究了基于對數似然比(Log-Likelihood Ratio,LLR)的SCL 譯碼方案,同時設計了SCL 譯碼器的硬件實現架構。
量化方案的設計是極化碼譯碼器硬件實現中的一個關鍵問題。為了實現低復雜度、高吞吐量的極化碼譯碼器,許多學者進行了大量的量化方案研究。文獻[9]分析了極化碼量化對譯碼性能產生的影響,發現極化碼對量化具有魯棒性。文獻[10-12]基于優化等效信道容量、最大截止速率和均方誤差設計了3 種不同的均勻量化器,并表明6 bit 均勻量化SC 譯碼器可以接近浮點數SC 譯碼器的譯碼性能。文獻[13]提出了適用于SCL 譯碼器的LLR 與路徑度量值(Path Metrics,PM)均勻量化方案,在LLR 取6 bit 量化,PM 取8 bit 量化的情況下,與浮點數譯碼對比所產生的性能損失可以忽略不計。文獻[14]引入了應用于非均勻量化壓縮函數與截斷閾值,提出了8 bit 非均勻量化的方案。文獻[15]提出了一種2 ~4 bit 非均勻量化的SC 譯碼算法,用于類似于閃存、物聯網等不需要高譯碼精度的場景。目前,在大多數研究中對于LLR 的量化均采用6 bit均勻量化,而在實際硬件設計中,6 bit 均勻量化的LLR 值在各個模塊之間進行傳輸與存儲,仍然會導致譯碼器關鍵路徑存在較大延遲,存儲資源開銷較大等問題。
針對現有的問題,本文提出了一種6 bit 均勻量化與5 bit 非均勻量化相互轉換的量化方案。在譯碼器內部,LLR 以5 bit 非均勻量化的方式進行傳輸和存儲,而在LLR 計算模塊中,將5 bit 非均勻量化LLR 轉為6 bit 均勻量化LLR 再用于計算。通過提出的量化方案,在最小化譯碼性能損失的同時,顯著減少了硬件存儲資源的消耗,并提高了譯碼器的吞吐量。
1 極化碼原理
1. 1 系統模型
本文的系統模型如圖1 所示,由發送端、信道、接收端三部分構成。在發送端,用戶需要發送的信源信息uC 經過非系統極化碼編碼器編碼獲得編碼碼字xN1 ={x1,x2,…,xN},編碼碼字通過二進制相移鍵控調制后產生符號向量rN1 ={r1,r2,…,rN}。編碼后的符號向量rN1 通過加性高斯白噪聲(AdditiveWhite Gaussian Noise,AWGN)信道進行傳輸,在接收端得到初始信號yN1 = {y1,y2,…,yN},經過解調后得到初始浮點數表示形式的信道LLR 值LN1 = {L1,L2,…,LN},再經過LLR 量化器得到量化后的信道LLR 值L^ N1 ={L^ 1,L^ 2,…,L^ N},最后經過極化碼譯碼器解出用戶端發送信息u^ C。
1. 2 極化編碼
極化碼是一種利用信道極化現象構造的(N,K)線性分組碼。通過信道聯合與信道分裂,N 個子信道的信道容量呈兩極分化的趨勢,挑選出K 個信道容量最大的子信道作為信息位C,用于傳輸用戶需要傳輸的信息uC,剩余的N-K 位為凍結位CC,用于傳輸已知的信息0 或1。利用固定的編碼矩陣GN對信源信息uN1 =(u1,u2,…,uN)進行編碼,獲得編碼碼字:
式中:n=lb N,F?n 為二階極化核F= 1 0y1 1r 的 n 階克羅克內積。
采用均勻量化的SCL 譯碼器在q = 6 bit 時,與浮點數譯碼器相比誤幀率(Frame Erasure Rate,FER)性能幾乎一致,但6 bit 的LLR 量化寬度在硬件實現中仍然會消耗大量的存儲資源,制約著布線延遲,影響譯碼器吞吐量的提升。因此減小LLR 量化位寬,有效降低硬件復雜度的同時保持與6 bit 均勻量化方案相近的性能,是定點量化方案設計的關鍵目標。本文基于文獻[7]中的符號-數值型LLR表示形式提出一種5 bit 非均勻量化的方案,在不改變原有均勻量化的整體硬件架構與迭代計算公式的前提下,使用5 bit 非均勻量化方案的LLR 作為譯碼器內部傳輸、存儲與更新的信息,可以大幅降低存儲資源消耗、提升吞吐量,同時保持與6 bit 均勻量化方案幾乎一致的性能。其中,6 bit 均勻量化轉5 bit非均勻量化查找表(Look-Up-Table,LUT)如表1 所示,參考A 律13 折線壓縮方式,同時結合高斯近似信道構造結果,將6 bit 均勻量化后的數值絕對值[0,31]分為不均勻的4 個區間[0,3]、[4,7]、[8,15]、[16,31],并對這4 個區間分別按照1、1、1 /2和1 /4 的比例進行縮小。
而5 bit 非均勻量化轉6 bit 均勻量化LUT 如表2 所示,采用與6 bit 均勻量化轉5 bit 非均勻量化相反的操作,將該非均勻量化的數值絕對值[0,15]等分為4 個區間[0,3]、[4,7]、[8,11]、[12,15],并分別按照1、1、2 和4 的比例進行區間擴充。均勻量化與非均勻量化轉換均采用LUT 進行實現,其中一位符號位不參與LUT 運算。
3 SCL 譯碼器硬件設計與實現
在硬件實現中,經典的SC 類譯碼器的典型硬件結構為:FFT 結構、樹型結構、線型結構、半平行結構,其中半平行結構的資源復用率最高。為了降低SCL 譯碼器的硬件復雜度,本文采用半平行譯碼結構,實現碼長N = 1 024,碼率R = 1 /2,并行路數P=64 的SCL 譯碼器。
譯碼器的整體結構包括以下模塊:數據預處理模塊、LLR 計算模塊、LLR 量化轉換模塊、部分和更新模塊、路徑處理模塊、LLR 存儲單元和控制模塊,如圖2 所示。在譯碼開始前,數據預處理模塊需要對串行輸入的q bit 信道LLR 做并行化預處理,每2P 個信道LLR 值并行處理為一個位寬為2Pq 的并行信道LLR 值,并存入寬度為2Pq、深度為N/ (2P)的信道LLR RAM 中作為初始化信道LLR 值。譯碼開始時,首先,LLR 計算模塊根據輸入的信道LLR值與凍結位信息,計算得到內部LLR 值并存儲至內部LLR 存儲單元;然后,路徑處理模塊根據計算得到的內部LLR 值進行判決并計算PM 值,再對PM值排序得到L 條保留子路徑序號;最后,部分和更新模塊根據保留子路徑序號交換各條路徑部分和并執行部分和更新操作。重復上述操作,直至完成最后一比特譯碼,輸出PM 值最小的路徑作為最終譯碼結果。
3. 1 內部LLR 存儲單元
對于SCL 譯碼過程中每條路徑產生的內部LLR 值,都使用兩個雙端口SRAM1 和SRAM2 進行存儲,每個RAM 的寬度為Pq,深度為lb P +Σlb N-1i = lb P+22i-lb P-1 + 1,可以同時進行讀出和寫入。對于大于lb P+1 的層級,P 個處理單元(Processing Element,PE)需要分多個時鐘完成該層級的LLR 計算,需要分別存儲至SRAM1 和SRAM2 中,而對于其他層級,只需存儲至SRAM1 中即可。以N=8、P=2 的半平行結構SC 譯碼器為例,LLR 存儲單元的存儲結構如圖3 所示。首先,從S = 3 層開始讀取LLR,讀取分為兩個時鐘完成,第一個時鐘,讀取信道LLRSRAM 中的4 個LLR 值,計算得到兩個LLR 值,存儲到內部LLR SRAM1 中;第二個時鐘,讀取信道LLR SRAM 中剩余的4 個LLR 值,計算得到兩個LLR 值并存儲到內部LLR SRAM2 中。然后,讀取S=2 層LLR 值,從內部LLR SRAM1 和SRAM2 中分別讀取兩個LLR 值,輸入兩個PE 進行計算,得到兩個LLR 值并存儲至內部LLR SRAM1 中。最后,讀取S=1 層LLR 值,從內部LLR SRAM1 和SRAM2分別讀取兩個LLR 值,但內部LLR SRAM2 對應的位置為初始化0 值,不影響計算結果,此時計算結果為頂層LLR 值,用于路徑度量值的計算和判決。
3. 2 LLR 計算模塊
為了保證譯碼器各條路徑的并行計算,半平行譯碼結構SCL 譯碼器LLR 計算模塊中每條路徑都包含一個PE,每個PE 由P 個符號-數值型PE 組成,能夠同時執行式(8)中f 函數和式(7)中g 函數的計算。PE 的輸入信號包括f 函數使能信號f_en、左節點的譯碼值u^i-1 和兩個LLR 值LLR_a 和LLR_b,其中,LLR 值以1 bit 的符號位sgn 和q-1 bit 的數值位data 輸入到PE 中,并以相同的形式進行LLR 輸出。在LLR 計算過程中,g 函數的計算中有可能會產生數據溢出,對數據的溢出處理方式使用最大化處理。符號-數值型PE 結構如圖4 所示。
3. 3 路徑處理模塊
在LLR 計算模塊執行LLR 計算到第0 層后,使用式(9)對2L 條路徑的路徑度量值進行計算。為了保證實時性,路徑度量值的存儲采用寄存器進行存儲,方便存儲與讀取。同時路徑度量值采用lb N+q bit 的量化方案,確保不會因為PM 溢出而導致譯碼損失。2L 條路徑的路徑度量值PM 計算結束后需要對其進行排序,本文使用并行全比較排序器對2L 條路徑排序,該排序器具有高并行度、低延遲的特性,包括比較單元、累加單元和選擇單元三部分,如圖5 所示[17]。其中,比較單元中由4L2 個比較器組成,累加單元由2L 個累加器組成,選擇單元由2L 個多路選擇器組成。
3. 4 部分和更新模塊
在經過路徑處理模塊的PM 值計算與PM 值排序后,得到L 條保留子路徑,對L 條路徑的各個層級部分和進行更新,得到下一比特LLR 計算所需的g 節點的u^s。部分和更新采用樹型結構,并且在單個時鐘內完成部分和的更新,采用兩個位寬為N-1的寄存器CL 和CR 進行存儲。
4 結果與分析
4. 1 量化方案誤碼性能分析
仿真在AWGN 信道下,采用高斯近似法估計信道可靠性排序[18],對SCL 譯碼算法取量化位寬q =6 bit、q=5 bit 的均勻量化方案和q = 5 bit 的非均勻量化方案性能進行仿真,LLR 數值采用文獻[7]中的符號-數值型結構,第1 bit 為符號位,0 表示正數,1 表示負數,剩余的比特為數值位。在設計信噪比designSNR = 5 dB 時,碼率R = 1 /2 的LLR 為[-17,+17],6 bit 均勻量化與5 bit 均勻量化方案的量化步長分別為Δ=0. 531 1 和Δ=1. 062 1。當R =7 /10 時,LLR 為[-21. 5,+21. 5],兩個量化方案的量化步長分別為Δ=0. 672 和Δ=1. 344。
圖6 展示了碼長N = 1 024,碼率R = 1 /2 時,不同列表寬度L 的SCL 譯碼仿真結果。當L=4 時,傳統6 bit 均勻量化譯碼相比浮點數譯碼,FER 損失在0. 1 dB 以內。所提5 bit 非均勻量化與6 bit 均勻量化譯碼算法性能幾乎一致,比5 bit 均勻量化提升0. 1 dB。在L=2 時,所提非均勻量化方案與浮點數譯碼相比,在高信噪比區域性能損失有0. 15 dB,但是與6 bit 均勻量化性能接近。同時,圖7 給出了3 種不同量化譯碼相比于浮點數SCL 譯碼的FER 誤差曲線。
圖8 與圖9 展示了碼長N = 512 時SCL 譯碼算法仿真結果。在碼長N = 512,碼率R = 1 /2 時,同樣在信噪比較小時,所提5 bit 非均勻量化譯碼與浮點數性能接近。而當信噪比大于3. 2 dB 時,相比于6 bit 均勻量化譯碼性能損失有0. 1 dB。因為隨著信噪比的增大,信道LLR 值也增大,式(7)中的g 函數計算結果更容易接近邊界值-31 與31。此時,非均勻量化所進行的數據轉換更容易丟失信息。但是,所提非均勻量化譯碼依然與6 bit 均勻量化方案保持了類似性能。
圖10 給出了碼長N = 512,L = 4 的不同碼率R的SCL 譯碼仿真結果。在R = 2 /5 和7 /10 時,本文所提5 bit 非均勻量化譯碼與6 bit 均勻量化譯碼性能幾乎一致,與浮點數譯碼算法相比FER 損失約0. 1 dB。
4. 2 硬件綜合結果分析
本文中對SCL 譯碼器的硬件電路實現,采用Xilinx 公司Kintex Ultrascale 系列的xcku060-ffva1156-2-i芯片,使用Vivado 2021. 1 綜合后的綜合報告如表3所示,其中分別對比了SCL 譯碼器在列表寬度L = 2和L=4 采用6 bit 均勻量化與5 bit 非均勻量化的對比結果。由于在采用5 bit 非均勻量化的SCL 譯碼器中,在每條路徑的LLR 計算單元與PM 計算單元中分別加入5 bit 非均勻量化轉6 bit 均勻量化LUT和6 bit 均勻量化轉5 bit 非均勻量化LUT,所以相比于采用6 bit 均勻量化的SCL 譯碼器,LUT 資源消耗會有所增加,但觸發器(Flip-Flop,FF)資源和塊隨機存取存儲器(Block Random Access Memory,BRAM)資源會大幅減少。由表3 可以看出,在L =4 的情況下,5 bit 非均勻量化的SCL 譯碼器比6 bit 均勻量化的SCL 譯碼器,LUT 資源增加了3% ,但FF 資源和BRAM 資源分別減少了10% 和18. 1% 。在L = 2 的情況下,5 bit 非均勻量化的SCL 譯碼器比6 bit 均勻量化的SCL 譯碼器LUT 資源增加了1. 2% ,但FF資源和BRAM 資源分別減少了10. 9% 和22% 。
同時,吞吐量是衡量譯碼器性能的重要指標之一,其計算公式為:
根據表3 可以計算在N=1 024,R=1/2 情況下采用不同列表寬度、不同量化方案的SCL 譯碼器吞吐量。在L=4 的情況下,6 bit 均勻量化的SCL 譯碼器與5 bit 非均勻量化的SCL 譯碼器最高主頻分別為177 MHz 和203 MHz,二者譯碼一幀數據的時鐘周期均為10 264,根據式(13)可以分別計算得到均勻量化SCL 譯碼器與非均勻量化SCL 譯碼器的吞吐量為17. 65 Mbit/ s 和20 Mbit/ s。而在L=2 的情況下,6 bit均勻量化的SCL 譯碼器與5 bit 非均勻量化的SCL譯碼器最高主頻分別為183 MHz 和225 MHz,可以分別計算得到兩種采用不同量化方案的SCL 譯碼器的吞吐量為18. 26 Mbit/ s 和22. 45 Mbit/ s。綜合結果表明,在列表寬度L=4 和L = 2 時,本文提出的5 bit 非均勻量化SCL 譯碼器吞吐量相比傳統6 bit均勻量化SCL 譯碼器吞吐量分別提升了17. 65%和24% 。
5 結束語
本文針對6 bit 均勻量化SCL 譯碼器高存儲資源消耗與高布線延遲的問題,提出了一種采用5 bit非均勻量化的SCL 譯碼算法,并進行硬件電路實現與評估。該算法保留了原有6 bit 均勻量化SCL 譯碼算法中LLR 計算方法,同時使用5 bit 非均勻量化LLR 在內部各個模塊間進行傳輸,雖然損失了部分譯碼性能,但極大程度上減少了FF 和BRAM 資源的消耗,提升了譯碼器的吞吐量,是一種可實施的低硬件復雜度非均勻量化譯碼算法。
參考文獻
[1] ARIKAN E. Channel Polarization:A Method for Constructing Capacityachieving Codes for Symmetric BinaryinputMemoryless Channels[J]. IEEE Transactions on InformationTheory,2009,55(7):3051-3073.
[2] TAL I,VARDY A,YAO H W. List Decoding of PolarCodes[J]. IEEE Transactions on Information Theory,2015,61(5):2213-2226.
[3] CHEN K,NIU K,LIN J R. List Successive CancellationDecoding of Polar Codes[J]. Electronics Letters,2012,48(9):500-501.
[4] NIU K,CHEN K. Stack Decoding of Polar Codes [J].Electronics Letters,2012,48(12):695-697.
[5] LEROUX C,TAL I,VARDY A,et al. Hardware Architectures for Successive Cancellation Decoding of Polar Codes[C]∥2011 IEEE International Conference on Acoustics,Speech and Signal Processing (ICASSP). Prague:IEEE,2011:1665-1668.
[6] LEROUX C,RAYMOND A J,SARKIS G,et al. HardwareImplementation of Successivecancellation Decoders forPolar Codes[J]. Journal of Signal Processing Systems,2012,69:305-315.
[7] LEROUX C,RAYMOND A J,SARKIS G,et al. A Semiparallel Successivecancellation Decoder for Polar Codes[J]. IEEE Transactions on Signal Processing,2012,61(2):289-299.
[8] BALATSOUKASSTIMMING A,PARIZI M B,BURG A.LLRbased Successive Cancellation List Decoding of PolarCodes [J ]. IEEE Transactions on Signal Processing,2015,63(19):5165-5179.
[9] HASSANI S H,URBANKE R. Polar Codes:Robustness ofthe Successive Cancellation Decoder with Respect toQuantization[C]∥2012 IEEE International Symposiumon Information Theory Proceedings. Massachusetts:IEEE,2012:1962-1966.
[10]SHI Z M,NIU K. On Uniform Quantization for SuccessiveCancellation Decoder of Polar Codes[C]∥2014 IEEE 25thAnnual International Symposium on Personal,Indoor,andMobile Radio Communication(PIMRC). Washington D. C. :IEEE,2014:545-549.
[11]SHI Z M,CHEN K,NIU K. On Optimized Uniform Quantization for SC Decoder of Polar Codes[C]∥2014 IEEE80th Vehicular Technology Conference (VTC2014Fall).Vancouver:IEEE,2014:1-5.
[12]師爭明. 信道極化碼理論及其量化譯碼研究[D]. 北京:北京郵電大學,2015.
[13]ZHENG X,WANG J H,TANG B. Quantization of CRCaided Successive Cancellation List Decoder for Polar Codes[C]∥2018 2nd International Conference on Robotics andAutomation Sciences (ICRAS). Wuhan:IEEE,2018:1-5.
[14]DONG Y F,NIU K,DONG C. Nonuniform Quantizationof Successive Cancellation List Decoder for Polar Codes[C]∥2020 IEEE 31st Annual International Symposiumon Personal,Indoor and Mobile Radio Communications.London:IEEE,2020:1-6.
[15]KIM J,SHIN D J. A Nonuniformquantized SuccessiveCancellation Decoding of Polar Codes over AWGN Channels[J]. IEEE Access,2021,9:80221-80235.
[16]ZHAO J G,ZARKESHVARI F,BANIHASHEMI A H. OnImplementation of Minsum Algorithm and Its Modificationsfor Decoding LowDensity ParityCheck (LDPC)Codes[J]. IEEE Transactions on Communications,2005,53(4):549-554.
[17]師廷偉,金長江. 基于FPGA 的并行全比較排序算法[J]. 數字技術與應用,2013(10):126-127.
[18]TRIFONOV P. Efficient Design and Decoding of Polar Codes[J]. IEEE Transactions on Communications,2012,60(11):3221-3227.
作者簡介:
魏少圣 男,(2000—),碩士研究生。主要研究方向:信道譯碼、FPGA 設計。
熊啟金 男,(1997—),碩士研究生。主要研究方向:視頻編碼、FPGA 設計。
(* 通信作者)鄭紹華 男,(1976—),博士,副教授。主要研究方向:多媒體通信,人工智能。
陳平平 男,(1986—),博士,教授,博士生導師。主要研究方向:極化碼、LDPC 碼、物理層網絡編碼。
基金項目:國家自然科學基金面上項目(62171135)