胡東偉
(中國(guó)電子科技集團(tuán)公司第五十四研究所 石家莊 050080)
2017年12月,第5代移動(dòng)通信新無(wú)線(5G New Radio, 5G NR)標(biāo)準(zhǔn)[1]的發(fā)表,標(biāo)志著第5代移動(dòng)通信(5G)的正式誕生。相比于第4代移動(dòng)通信標(biāo)準(zhǔn)--長(zhǎng)期演進(jìn)(Long Term Evolution, LTE)而言,5G采納了很多的新技術(shù)。調(diào)制和編碼是無(wú)線通信的兩大支柱性技術(shù)。相比于LTE,5G的編碼技術(shù)亦有著很多的看點(diǎn)。
5G的編碼采用LDPC碼和Polar碼[2]。LDPC碼具有較長(zhǎng)的編碼塊長(zhǎng)度,主要用于數(shù)據(jù)的傳輸;Polar碼具有較短的編碼塊長(zhǎng)度,主要用于信令的傳輸。Polar碼作為一種全新的編碼方式,受到了較大的關(guān)注。然而,5G的LDPC碼具有更大的靈活性--它的最短信息比特塊長(zhǎng)度只有20 bit,最長(zhǎng)可達(dá)8448 bit。如果將5G LDPC碼應(yīng)用在其他場(chǎng)合,則它不但可用于長(zhǎng)碼塊的數(shù)據(jù)傳輸,亦可用于短碼塊的信令傳輸。
其次,5G LDPC碼最低碼率可低至1/5。這是目前進(jìn)入實(shí)際使用的、最低碼率的編碼,具有非常接近香農(nóng)極限的性能。這在深空通信、衛(wèi)星通信中,具有重要意義。在深空通信中,性能的提高意味著更遠(yuǎn)的傳輸距離,或無(wú)需昂貴的低溫射頻前端[3,4]。
再次,5G LDPC碼具有速率自適應(yīng)的特點(diǎn)[5]。這是LDPC編碼史上一次巨大的進(jìn)步。傳統(tǒng)上,由于LDPC碼為分組編碼,被視為難以實(shí)現(xiàn)速率自適應(yīng)[6]。這是LDPC碼相對(duì)于卷積碼、Turbo碼的一大劣勢(shì)。5G LDPC碼以其獨(dú)特的編碼方式,實(shí)現(xiàn)了速率自適應(yīng)。這給了該碼使用上的極大便利性和靈活性。
由于5G NR標(biāo)準(zhǔn)頒布的時(shí)間還不長(zhǎng),直接針對(duì)5G NR標(biāo)準(zhǔn)的LDPC譯碼器研究尚不多。文獻(xiàn)[7]主要在譯碼的調(diào)度算法上進(jìn)行了改進(jìn);文獻(xiàn)[8]是一個(gè)采用歸一化最小和(Normalized Minimum Sum,NMS)算法和分層調(diào)度的譯碼器完整ASIC實(shí)現(xiàn)方案;文獻(xiàn)[9]給出了塊并行架構(gòu)和行并行架構(gòu)的實(shí)現(xiàn)細(xì)節(jié)。與這些文獻(xiàn)相比,本文所提架構(gòu)具有以下特點(diǎn):第一,基于SoC架構(gòu),采用基于處理器的調(diào)度方案,可實(shí)現(xiàn)更靈活的調(diào)度;第二,支持多種譯碼算法,特別地,本文硬件實(shí)現(xiàn)了log-bp譯碼算法;第三,在移位器的實(shí)現(xiàn)方法上,本文別具一格。
本文首先介紹5G LDPC碼的編碼器結(jié)構(gòu),然后比較該碼在各種譯碼算法下的性能,并進(jìn)一步分析各種譯碼算法的校驗(yàn)子通道實(shí)現(xiàn)結(jié)構(gòu)和復(fù)雜度。在此基礎(chǔ)上,提出了5G LDPC碼譯碼器的整體實(shí)現(xiàn)結(jié)構(gòu),并給出了FPGA實(shí)現(xiàn)結(jié)果。
5G LDPC碼在一個(gè)基本編碼器基礎(chǔ)上,通過(guò)速率自適應(yīng)打孔得來(lái)。
5G的基本編碼器結(jié)構(gòu)分為兩種,分別由兩個(gè)基本圖(Base Graph, BG)來(lái)定義。兩種基本編碼器都是準(zhǔn)循環(huán)編碼。準(zhǔn)循換子碼塊大小 Zc如表1所示。表1中 Z 即為可選擇的準(zhǔn)循換子碼塊長(zhǎng)度Zc。在編碼過(guò)程中,需要用到循環(huán)右移單位矩陣。 n階循環(huán)右移單位矩陣為將Zc×Zc的單位矩陣的每一行,循環(huán)右移 n 位所得。如圖1給出了Zc=4時(shí),1階和2階的循環(huán)右移單位矩陣的取值。
當(dāng)采用基本圖1時(shí),信息碼塊長(zhǎng)度為 2 2Zc,編碼字長(zhǎng)度為 66Zc,編碼碼率為1/3;當(dāng)采用基本圖2時(shí),信息碼塊長(zhǎng)度為1 0Zc, 編碼字長(zhǎng)度為5 0Zc,編碼碼率為1/5。 Zc為表1中,使得2 2Zc或 1 0Zc大于待編碼信息碼塊長(zhǎng)度的最小值。當(dāng)信息碼塊的長(zhǎng)度不是剛好為2 2Zc或 1 0Zc時(shí),在信息碼塊后補(bǔ)填充位0,并在編碼完成后去除。填充后的信息碼塊記為c。
表1 準(zhǔn)循換子碼塊長(zhǎng)度取值
5G的自適應(yīng)打孔,可根據(jù)物理層幀結(jié)構(gòu)可承載的比特?cái)?shù)目,自適應(yīng)截取編碼后碼字的發(fā)送比特?cái)?shù)目,并可根據(jù)混合差錯(cuò)重傳(HARQ)要求,截取編碼后碼字的不同段。記基本編碼器完成后的碼字長(zhǎng)度為 N ,下層幀結(jié)構(gòu)可承載的比特?cái)?shù)目為NE,版本號(hào)為r vid∈{0,1,2,3}。將編碼后碼字放入一個(gè)長(zhǎng)度為Nc的 循環(huán)緩沖區(qū)內(nèi)。如圖3所示。Nc的長(zhǎng)度由上層信令指定, Nc≤N 。當(dāng)Nc<N時(shí),只截取編碼塊的前 Nc個(gè)比特放入循環(huán)緩沖區(qū)。最后速率自適應(yīng)打孔的輸出,就是從該循環(huán)緩沖區(qū)內(nèi),從第Ns比特開始,取出NE個(gè)比特。Ns由版本號(hào)r vid指定。 Nc和Ns具體取值請(qǐng)參閱5G NR標(biāo)準(zhǔn)[1]。由這種速率自適應(yīng)打孔方式可見,我們可實(shí)現(xiàn)任意速率的最 終編碼。這給我們的應(yīng)用提供了極大的靈活性。
圖1 n階循環(huán)右移單位矩陣示意圖
圖2 基本圖1和基本圖2的圖形顯示
圖3 速率自適應(yīng)打孔示意圖
表2 譯碼算法
基本譯碼方式為,首先對(duì)打孔后的接收信號(hào)進(jìn)行解打孔,然后利用標(biāo)準(zhǔn)的LDPC譯碼方式進(jìn)行譯碼。表2的偽代碼給出了譯碼過(guò)程[10-13]。其中 yi為接收數(shù)據(jù), L(qi)為 變量節(jié)點(diǎn)對(duì)數(shù)似然比,L(rji)為校驗(yàn)節(jié)點(diǎn)j 向變量節(jié)點(diǎn)i傳遞的外信息,σ2為信道噪聲方差。
上述計(jì)算過(guò)程的核心在于變量節(jié)點(diǎn)對(duì)校驗(yàn)節(jié)點(diǎn)的更新算法A lg orithm(·)。不同的更新算法有不同的性能[14]。表3給出了4種不同的更新方式。表中Vji表 示與校驗(yàn)節(jié)點(diǎn)j 相連的所有的、除去變量節(jié)點(diǎn)i以 外的所有變量節(jié)點(diǎn)。α 和 β 為常數(shù),s gn(·)為符號(hào)函數(shù)。 tanh(x)=(ex-e-x)/(ex+e-x) , tanh-1(·)為t anh(·)的逆函數(shù)。
圖4給出了5G LDPC碼在兩種基本圖下,在這4種譯碼算法下的性能。由圖4可見,在所有碼率下,log-bp(BP)譯碼算法的性能非常好,且較MSA, Offset MSA(OMSA), Normalized MSA(NMSA)的性能要好得多。MSA算法的性能最差,較log-bp算法有接近2 dB的差別。OMSA和NMSA算法性能介于BP算法和MSA算法性能之間。低碼率時(shí),OMSA算法性能較NMSA好;高碼率時(shí),NMSA算法性能較OMSA好。1/5碼率時(shí),log-bp算法譯碼門限可以達(dá)到Eb/N0≈0 dB(SNR ≈-4 dB)。低碼率時(shí),OMSA算法性能較log-bp算法要差0.5 dB左右。這在深空通信、衛(wèi)星通信等極限通 信條件下,是不可忽略的。
典型的準(zhǔn)循換LDPC碼譯碼器為很多并行通道,每個(gè)通道執(zhí)行一個(gè)校驗(yàn)子的計(jì)算,即表3中的計(jì)算。本節(jié)主要分析以上4種算法的通道結(jié)構(gòu)和復(fù)雜度。
MSA, Offset MSA和Normalized MSA算法只涉及到取絕對(duì)值和大小比較操作,較簡(jiǎn)單。根據(jù)以上HBG1和HBG2的定義,5G LDPC碼的每個(gè)校驗(yàn)子,最多與19個(gè)變量節(jié)點(diǎn)相連。因此,可設(shè)計(jì)這3種算法的校驗(yàn)子計(jì)算通道結(jié)構(gòu)如圖5所示。圖5中,校驗(yàn)子通道連接在處理器的數(shù)據(jù)總線上。當(dāng)計(jì)算某校驗(yàn)子時(shí),處理器依次寫入與該校驗(yàn)子相連的各個(gè)變量節(jié)點(diǎn)值。當(dāng)寫入第1個(gè)(地址為0)變量節(jié)點(diǎn)時(shí),通道復(fù)位。在寫入的過(guò)程中,通道內(nèi)部依次比較得出絕對(duì)值最小變量節(jié)點(diǎn)、絕對(duì)值次小變量節(jié)點(diǎn)以及他們的地址;并且,通道內(nèi)計(jì)算所有節(jié)點(diǎn)的符號(hào)乘積,保存每個(gè)變量節(jié)點(diǎn)的符號(hào)。由于最多只有19個(gè)變量節(jié)點(diǎn),符號(hào)位使用19個(gè)寄存器保存即可。當(dāng)輸入完畢后,處理器開始讀出計(jì)算結(jié)果,即每個(gè)變量節(jié)點(diǎn)的外信息。讀出時(shí),根據(jù)地址選擇符號(hào)位,選擇絕對(duì)值最小或次小值,相乘合并為輸出外信息值。與MSA算法相比,Offset MSA和Normalized MSA只是在輸出時(shí),做一點(diǎn)特別計(jì)算。通道結(jié)構(gòu)可設(shè)計(jì)成可配置實(shí)現(xiàn)這3種算法,且α 和 β 值可配置。
表3 變量節(jié)點(diǎn)對(duì)校驗(yàn)節(jié)點(diǎn)更新方式
圖4 不同算法的性能
圖5 MSA, Offset MSA和Normalized MSA算法的校驗(yàn)子計(jì)算通道結(jié)構(gòu)
根據(jù)表3中的公式,log-bp算法計(jì)算較復(fù)雜。但是,仔細(xì)分析該計(jì)算公式可發(fā)現(xiàn),log-bp算法的計(jì)算,具有迭代的性質(zhì)。也就是,假如定義兩個(gè)輸入節(jié)點(diǎn)的log-bp計(jì)算為B P(l1,l2),即[15]
則有
于是,如果以B P(l1,l2)為基本計(jì)算節(jié)點(diǎn),則可構(gòu)造如圖6所示的計(jì)算過(guò)程。圖中每個(gè)圓圈代表一個(gè)BP(l1,l2)計(jì)算節(jié)點(diǎn)。計(jì)算分為前向迭代計(jì)算(記結(jié)果為)和反向迭代計(jì)算(記結(jié)果為)。最后校驗(yàn)節(jié)點(diǎn)對(duì)變量節(jié)點(diǎn)產(chǎn)生的外信息輸出為前向、反向計(jì)算相遇處的計(jì)算結(jié)果,即
根據(jù) t anh(·)函 數(shù)的定義,式(1)中B P(l1,l2)的計(jì)算可進(jìn)一步簡(jiǎn)化為
其中,
結(jié)合式(4)和式(5),即得到基本計(jì)算節(jié)點(diǎn)BP(l1,l2)的計(jì)算。式(5)中的后兩項(xiàng)對(duì)數(shù)部分,可通過(guò)查表實(shí)現(xiàn)。由于函數(shù) ln(1+exp(-x))下降較快,仿真發(fā)現(xiàn),這兩個(gè)表格只需8個(gè)條目大小就足夠。因此,這兩個(gè)查找表可直接用組合邏輯實(shí)現(xiàn)。式(5)的實(shí)現(xiàn)復(fù)雜度不高。
然而,在式(3)的計(jì)算過(guò)程中,需要存儲(chǔ)輸入對(duì)數(shù)似然比值和前向迭代的計(jì)算結(jié)果。根據(jù)5G NR標(biāo)準(zhǔn),每個(gè)校驗(yàn)子最多與19個(gè)變量節(jié)點(diǎn)相連,因此至少需要38個(gè)8位(假設(shè)每個(gè)變量位寬為8位)存儲(chǔ)器來(lái)保存輸入數(shù)據(jù)和前向計(jì)算結(jié)果。這造成了log-bp的實(shí)現(xiàn)復(fù)雜度較高。圖7給出了log-bp算法的通道實(shí)現(xiàn)結(jié)構(gòu)。圖中Mem即為存儲(chǔ)輸入對(duì)數(shù)似然比和前向迭代計(jì)算結(jié)果的存儲(chǔ)器。為方便處理器讀取計(jì)算結(jié)果,輸出采用一個(gè)存儲(chǔ)器進(jìn)行緩沖。表4給出了log-bp算法與MSA, Offset MSA和Normalized MSA算法的通道實(shí)現(xiàn)復(fù)雜度。表中的數(shù)值為在Altera Stratix IV EP4SGX290HF35C2 FPGA上的實(shí)現(xiàn)結(jié)果。
(1) 從圖4的仿真性能來(lái)觀察,在低信噪比時(shí),MSA, Offset MSA和Normalized MSA算法性能較log-bp算法性能相差較大,因此log-bp算法的實(shí)現(xiàn)不可缺少,主要用于信噪比極低的極限情況下。
(2) Log-bp算法的前向、反向迭代過(guò)程計(jì)算較慢,因此,log-bp算法譯碼的吞吐率較低;相比較而言,采用MSA, Offset MSA和Normalized MSA算法的譯碼器,計(jì)算過(guò)程較快。所幸的是,從應(yīng)用的角度來(lái)說(shuō),log-bp算法主要處理極限通信的情況,對(duì)吞吐率要求不高;而采用MSA, Offset MSA和Normalized MSA算法的譯碼器對(duì)吞吐率要求較高,但他們的通道結(jié)構(gòu)簡(jiǎn)單,可采用更多的并行通道。
(3) 倘若一個(gè)變量節(jié)點(diǎn)被打孔,它的Lin(qi′j)為零,根據(jù)表3中的計(jì)算公式,則該行校驗(yàn)子對(duì)所有變量節(jié)點(diǎn)產(chǎn)生的外信息均為零,因此該校驗(yàn)子的計(jì)算不用執(zhí)行。由于5G LDPC可通過(guò)打孔實(shí)現(xiàn)任意速率的編碼,因此譯碼時(shí),需要有靈活地控制調(diào)度方案,適應(yīng)不同碼率下的譯碼。
根據(jù)以上設(shè)計(jì)考量依據(jù),本文提出圖8所示的譯碼器總體架構(gòu)。圖中虛線框內(nèi)即為L(zhǎng)DPC譯碼器,他們連接到一個(gè)處理器(DSP)的總線上。譯碼器內(nèi)分為3大部分,log-bp譯碼加速器、高速譯碼加速器和數(shù)據(jù)存儲(chǔ)器。其中l(wèi)og-bp譯碼加速器與其他兩部分相互獨(dú)立。Log-bp譯碼加速器為24個(gè)圖7所示的并行通道。設(shè)置24個(gè)通道是因?yàn)?,總線寬度為64位,每個(gè)通道輸入輸出數(shù)據(jù)位寬為8位。24個(gè)通道分為3組,每組8個(gè)通道。根據(jù)圖7所示架構(gòu)及延時(shí),3組交錯(cuò)執(zhí)行,剛好能保證數(shù)據(jù)不間斷地寫入,不間斷地讀出。
圖6 Log-bp算法的計(jì)算過(guò)程
圖7 Log-bp算法通道實(shí)現(xiàn)結(jié)構(gòu)
表4 通道實(shí)現(xiàn)復(fù)雜度
高速譯碼加速器可執(zhí)行MSA, Offset MSA和Normalized MSA算法的譯碼,主要包括移位器和384個(gè)圖5所示的并行通道[16,17]。圖9給出了高速譯碼器的詳細(xì)結(jié)構(gòu)。在處理器調(diào)用高速譯碼之前,處理器首先(或通過(guò)外部DMA)將待譯碼數(shù)據(jù)放在數(shù)據(jù)存儲(chǔ)器內(nèi),然后配置高速譯碼器循環(huán)塊大小 Zc。Zc的配置將使得高速譯碼器內(nèi)只有Zc個(gè)通道開啟工作。然后,處理器向高速譯碼器寫入一個(gè)控制命令,啟動(dòng)一個(gè)循環(huán)塊的校驗(yàn)子計(jì)算。該控制命令包含的信息為數(shù)據(jù)存儲(chǔ)器地址和移位器偏移量。高速譯碼器收到該命令后,按照控制命令的地址,一個(gè)時(shí)鐘從數(shù)據(jù)存儲(chǔ)器內(nèi)讀出Zc個(gè)通道的輸入數(shù)據(jù)對(duì)數(shù)似然比和外信息,進(jìn)行循環(huán)移位、計(jì)算、反移位,然后將外信息結(jié)果寫回該地址。整個(gè)過(guò)程耗費(fèi)12+2d 個(gè)時(shí)鐘。d 為校驗(yàn)子上連接的變量節(jié)點(diǎn)個(gè)數(shù)。寫回完成后,處理器可控制進(jìn)行下一塊Zc個(gè)校驗(yàn)子的譯碼。如此完成一次譯碼和多次譯碼迭代。在上述過(guò)程中,處理器很容易判斷哪些數(shù)據(jù)已被打孔,從而直接忽略。數(shù)據(jù)存儲(chǔ)器分為輸入數(shù)據(jù)存儲(chǔ)器和外信息存儲(chǔ)器兩組,每組的位寬均為3072 bit,可以保證一個(gè)時(shí)鐘同時(shí)讀取(或?qū)懭?384個(gè)通道的輸入數(shù)據(jù)和(或)外信息。
圖8 譯碼器總體架構(gòu)
圖9 高速譯碼加速器架構(gòu)
圖9中,384個(gè)通道的加速器只有 Zc個(gè)通道開啟。移位器必須實(shí)現(xiàn)Zc個(gè)通道數(shù)據(jù)的循環(huán)移位。根據(jù)表1, Zc可以有多達(dá)51個(gè)取值,最大取值384。要實(shí)現(xiàn)51種情形下的任意循環(huán)移位,且循環(huán)移位范圍可達(dá)到384,移位器的實(shí)現(xiàn)較復(fù)雜。本文推薦以下圖10(a)所示的移位器實(shí)現(xiàn)方案。圖10(a)中,假設(shè)Zc<384, 輸入數(shù)據(jù)din的 下部Zc個(gè)數(shù)據(jù)有效,上部384-Zc個(gè)數(shù)據(jù)無(wú)效。輸入數(shù)據(jù)首先同時(shí)輸入子循環(huán)移位器和一個(gè)延遲器。子循環(huán)移位器向上移位384-Zc個(gè)數(shù)據(jù),將din的有效數(shù)據(jù)抵到最頂端。然后,在第2級(jí),移位后的 din和 延遲后的din聯(lián)動(dòng),進(jìn)行指定的 n階循環(huán)移位。這里的循環(huán),是將圖10中上部子循環(huán)移位器移出的數(shù)據(jù),移入下部的子循環(huán)移位器的輸入。最后,整個(gè)移位器的輸出為下部子循環(huán)移位器的輸出,其最低Zc個(gè)數(shù)據(jù)有效。圖10(b)給出了子循環(huán)移位器的實(shí)現(xiàn)。由于子循環(huán)移位器最大需要移位384位,這需要通過(guò)3級(jí)流水的多路器實(shí)現(xiàn),每一級(jí)中間通過(guò)寄存器隔開(圖中未示出寄存器)。3級(jí)流水多路器分別為6選1、8選1和8選1多路器。多路器的選擇參數(shù) n0, n1和 n2通 過(guò)n 變換得來(lái)。n=64n0+8n1+n2。圖10所示的移位器,在控制器的控制下,既執(zhí)行讀出數(shù)據(jù)的正向移位,也執(zhí)行寫 回?cái)?shù)據(jù)的反向移位。
圖10 移位器架構(gòu)
表5 譯碼器的FPGA實(shí)現(xiàn)結(jié)果
表6 譯碼器吞吐率(Mbps)
表5給出了圖8所示架構(gòu)在FPGA上的實(shí)現(xiàn)結(jié)果,不包括DSP。從這些數(shù)據(jù)可以看到,高速譯碼加速器(含數(shù)據(jù)存儲(chǔ)器)耗費(fèi)的資源非常多,達(dá)到了EP4SGX290HF35C2 FPGA資源的74%。高速譯碼加速器耗費(fèi)的資源是log-bp譯碼加速器的大約15倍。二者可達(dá)到的時(shí)鐘速率均較高,可達(dá)到100 MHz左右。
表6給出了不同碼率下,采用基本圖2,譯碼器時(shí)鐘為100 MHz,譯碼器平均迭代15次時(shí)的吞吐率。如果將譯碼器做成ASIC芯片,時(shí)鐘速率可以成倍提高,相應(yīng)地吞吐率也成倍提高。例如,當(dāng)碼率為9/10時(shí),100 MHz時(shí)鐘已經(jīng)可以達(dá)到1 Gbps吞吐率。假若采用1 GHz時(shí)鐘,則吞吐率將達(dá)到10 Gbps。這個(gè)吞吐率很高,甚至可以在光纖通信系統(tǒng)中使用[18]。
5G LDPC碼具有低碼率、高性能和速率自適應(yīng)的特點(diǎn),具有非常大的靈活性。除了用在地面移動(dòng)通信系統(tǒng)中外,亦可以用在深空通信、衛(wèi)星通信甚至光纖通信中。本文分析了5G LDPC碼的構(gòu)造和性能之后,提出其譯碼器的總體架構(gòu):將譯碼器分為高速譯碼器和低信噪比譯碼器,并進(jìn)行了設(shè)計(jì)實(shí)踐,給出了譯碼器的FPGA綜合結(jié)果和吞吐率分析結(jié)果。本文的工作將對(duì)從事5G研發(fā),或更廣泛地,從事通信系統(tǒng)研發(fā)的人員,有一定的參考意義。