張恒皞,叢惠平,趙旦峰
1.哈爾濱工程大學(xué)信息與通信工程學(xué)院,黑龍江哈爾濱150001
2.中國人民解放軍91033部隊(duì),山東青島266071
移動(dòng)通信系統(tǒng)具有可靠和高效的特點(diǎn),對(duì)于具有時(shí)變特性的無線信道,需要能在不同信道條件下進(jìn)行可靠數(shù)據(jù)傳輸?shù)膫鬏敺桨浮5兔芏绕媾夹r?yàn)(low density parity check,LDPC)碼是一種能夠逼近香農(nóng)信道容量極限的信道編碼[1],已經(jīng)被廣泛應(yīng)用于衛(wèi)星電視通信[2]、移動(dòng)無線通信[3]、無線局域網(wǎng)[4]等領(lǐng)域中??臻g耦合LDPC(SC-LDPC)碼是一種源于LDPC卷積碼的新型信道編碼[5],理論上被證明可以達(dá)到一般二元無記憶對(duì)稱信道的信道容量[6]。相比于LDPC碼,空間耦合LDPC碼在特殊的耦合結(jié)構(gòu)下具有優(yōu)異的性能,在B5G/6G 移動(dòng)通信系統(tǒng)中具有廣闊的應(yīng)用前景。碼率兼容LDPC碼是指一組信息位長(zhǎng)度相同、碼率不同的LDPC碼,該組LDPC碼在不同的碼率下都有較好的性能,并能夠使用同一套編譯碼器實(shí)現(xiàn)[7]。文獻(xiàn)[8]通過對(duì)特殊的三邊型LDPC校驗(yàn)矩陣進(jìn)行擴(kuò)展和組合,實(shí)現(xiàn)碼率兼容空間耦合LDPC 碼,理論上可以實(shí)現(xiàn)任意碼率,但對(duì)校驗(yàn)矩陣要求較高,在給定的短耦合長(zhǎng)度下性能并不理想。文獻(xiàn)[9]通過修改LDPC碼的校驗(yàn)矩陣結(jié)構(gòu),在耦合邊緣處對(duì)矩陣的連接進(jìn)行不同的組合來現(xiàn)碼率兼容,可以實(shí)現(xiàn)遞歸編碼。文獻(xiàn)[10]采用打孔方式,將隨機(jī)打孔的碼率兼容LDPC碼進(jìn)行耦合,耦合長(zhǎng)度大時(shí)譯碼性能較好,但由于打孔操作是隨機(jī)的,具有不確定性,并且長(zhǎng)耦合長(zhǎng)度對(duì)資源的占用較大。文獻(xiàn)[11]提出了一種基于重復(fù)累加擴(kuò)展構(gòu)造LDPC碼的方案,并對(duì)其進(jìn)行耦合,通過對(duì)校驗(yàn)矩陣的變量節(jié)點(diǎn)進(jìn)行擴(kuò)展和耦合實(shí)現(xiàn)碼率兼容,復(fù)雜度較高。
針對(duì)以上情況,本文設(shè)計(jì)并實(shí)現(xiàn)了一種碼率兼容的空間耦合LDPC碼方案,并基于FPGA 進(jìn)行驗(yàn)證。通過構(gòu)造碼率兼容的基矩陣進(jìn)行耦合,實(shí)現(xiàn)碼率兼容的空間耦合LDPC碼。編碼器直接使用校驗(yàn)矩陣進(jìn)行系統(tǒng)編碼,譯碼器采用分層最小和譯碼算法,在保證性能的同時(shí)可以減少FPGA中資源的占用。
5G標(biāo)準(zhǔn)中增強(qiáng)移動(dòng)寬帶(enhanced mobile broadband,eMBB)場(chǎng)景下使用的LDPC碼,采用類Raptor 的擴(kuò)展型碼率兼容矩陣結(jié)構(gòu),在可以使用校驗(yàn)矩陣進(jìn)行系統(tǒng)編碼的同時(shí)實(shí)現(xiàn)碼率兼容[14],類Raptor 型LDPC碼校驗(yàn)矩陣結(jié)構(gòu)如圖1所示。
圖1 類Raptor 型LDPC碼矩陣結(jié)構(gòu)
圖中,子矩陣A與子矩陣E是由循環(huán)移位矩陣組成的矩陣陣列,子矩陣O為全零矩陣,子矩陣I為單位矩陣。矩陣A對(duì)應(yīng)信息位;矩陣D對(duì)應(yīng)校驗(yàn)位,具有雙對(duì)角線結(jié)構(gòu),用于遞歸編碼;核矩陣[A D]對(duì) 應(yīng)高碼率部分;矩陣[E I]對(duì)應(yīng)擴(kuò)展型碼率兼容的擴(kuò)展位;單位陣I對(duì)應(yīng)度為1的校驗(yàn)位。通過高碼率碼與單校驗(yàn)碼串行級(jí)聯(lián),實(shí)現(xiàn)從高碼率到低碼率的碼率兼容。由于子矩陣D與子矩陣I分別為雙對(duì)角線和單對(duì)角線結(jié)構(gòu),可以利用校驗(yàn)矩陣進(jìn)行遞歸編碼,無需生成矩陣,編碼過程描述如下:
式中上標(biāo)代表矩陣的循環(huán)移位系數(shù),無上標(biāo)表示矩陣的循環(huán)移位系數(shù)為0。由于二元LDPC碼的加法為模二加,將式(6)右側(cè)方程等號(hào)兩邊相加,有
通過式(7)可以求出v0,將其代入式(6),即可求出v1、v2、v3。由于子矩陣I是單對(duì)角線矩陣,利用信息位u和計(jì)算出的v,計(jì)算其余校驗(yàn)比特為
在部分校驗(yàn)子前項(xiàng)編碼算法中,式(4)說明了如何利用耦合基矩陣H0計(jì)算部分校驗(yàn)子前項(xiàng),因此,耦合基矩陣的設(shè)計(jì)對(duì)空間耦合LDPC碼的部分校驗(yàn)子編碼算法實(shí)現(xiàn)快速遞歸編碼具有重要意義。基矩陣H0若能利用信息位對(duì)應(yīng)部分和校驗(yàn)位對(duì)應(yīng)部分進(jìn)行遞歸編碼,則可快速計(jì)算出部分校驗(yàn)子前項(xiàng),實(shí)現(xiàn)SC-LDPC碼的遞歸編碼。因此,本設(shè)計(jì)參考類Raptor 校驗(yàn)矩陣結(jié)構(gòu),構(gòu)造可遞歸編碼的碼率兼容SC-LDPC碼的基矩陣H0,如圖2所示。
圖2 碼率兼容基矩陣結(jié)構(gòu)
基矩陣H0結(jié)構(gòu)圖中,每一個(gè)正方形代表大小為32 bit×32 bit 的循環(huán)移位單位矩陣,信息位長(zhǎng)為192 bit。圖中豎線陰影部分對(duì)應(yīng)類Raptor 矩陣中子矩陣A的信息位;斜線陰影部分對(duì)應(yīng)子矩陣D的校驗(yàn)位;黑色陰影部分對(duì)應(yīng)子矩陣E;灰色陰影部分對(duì)應(yīng)子矩陣I的校驗(yàn)位;空白部分對(duì)應(yīng)全零矩陣。圖中小矩形部分代表高碼率矩陣,大小為128 bit×320 bit,碼率為3/5;通過對(duì)此高碼率矩陣擴(kuò)展到大矩形部分,構(gòu)成大小為192 bit×384 bit、碼率為1/2的矩陣;再繼續(xù)擴(kuò)展,形成最終大小為256 bit×448 bit、碼率為3/7的矩陣,至此整個(gè)基矩陣H0構(gòu)造完畢?;仃嚹軌蚴褂眯r?yàn)矩陣進(jìn)行系統(tǒng)編碼,適用于SC-LDPC碼的部分校驗(yàn)子編碼方案;同時(shí)無需生成矩陣,有效減少了硬件資源占用。在本設(shè)計(jì)中,為了使校驗(yàn)矩陣更加稀疏,SCLDPC碼校驗(yàn)矩陣的耦合長(zhǎng)度設(shè)為最小,即約束長(zhǎng)度m=1,校驗(yàn)矩陣結(jié)構(gòu)如下:
式中H1為耦合約束關(guān)系矩陣,大小與基矩陣H0相同,通過H0與H1進(jìn)行耦合,構(gòu)造出SC-LDPC碼的校驗(yàn)矩陣。
利用5G 標(biāo)準(zhǔn)中的參數(shù)構(gòu)造對(duì)應(yīng)碼率的類Raptor 結(jié)構(gòu)校驗(yàn)矩陣,使用BP 譯碼算法與本文設(shè)計(jì)的SC-LDPC碼校驗(yàn)矩陣進(jìn)行性能仿真對(duì)比,在相同信息位長(zhǎng)、最大譯碼迭代次數(shù)為20次、不同碼率的情況下,誤碼率性能如圖3所示。圖中Eb/N0代表歸一化信噪比,BER(bit error rate)代表誤碼率??梢钥闯霰疚乃鶚?gòu)造的碼率兼容SCLDPC 碼校驗(yàn)矩陣具有更好的譯碼性能,并且在BER=10-6時(shí)沒有出現(xiàn)明顯的錯(cuò)誤平層。
圖3 誤碼率性能比較
根據(jù)部分校驗(yàn)子前項(xiàng)編碼算法,編碼器主要由控制模塊、部分校驗(yàn)子前項(xiàng)存儲(chǔ)模塊、碼字計(jì)算模塊、輸出碼字存儲(chǔ)模塊組成。編碼器結(jié)構(gòu)如圖4所示。
圖4 碼率兼容空間耦合LDPC 碼編碼器結(jié)構(gòu)
當(dāng)需要編碼的碼字信息位輸入到編碼器時(shí),編碼器將輸入的信息位存儲(chǔ)至寄存器中。當(dāng)信息位接收完畢,編碼器開始進(jìn)行編碼。編碼器的核心模塊為控制模塊和碼字計(jì)算模塊。
控制模塊對(duì)編碼過程進(jìn)行控制。當(dāng)碼字信息位和碼率指示信號(hào)輸入時(shí),控制模塊負(fù)責(zé)對(duì)這些信息進(jìn)行接收;當(dāng)信息接收完畢后,控制模塊根據(jù)碼率指示信號(hào),對(duì)不同的碼率情況進(jìn)行編碼運(yùn)算。校驗(yàn)矩陣為準(zhǔn)循環(huán)移位矩陣,輸入的信息位與校驗(yàn)矩陣相乘等價(jià)于對(duì)信息位進(jìn)行循環(huán)移位,因此編碼器根據(jù)輸入的碼率控制信號(hào)來確定不同循環(huán)移位單元的計(jì)算使能,實(shí)現(xiàn)SC-LDPC碼在不同碼率下的編碼。
圖5 編碼器碼字計(jì)算模塊時(shí)序仿真
將編碼器通過Verilog 硬件描述語言實(shí)現(xiàn),使用Modelsim 10.7軟件進(jìn)行時(shí)序仿真,如圖6所示。在Xilinx xc7k325tff900-2芯片上進(jìn)行實(shí)現(xiàn),編碼器資源占用如表1所示。
圖6 編碼器輸出結(jié)果時(shí)序仿真
表1 編碼器資源占用表
由于編碼器主要采用循環(huán)移位和異或運(yùn)算進(jìn)行編碼計(jì)算,計(jì)算產(chǎn)生的中間數(shù)據(jù)存儲(chǔ)在循環(huán)移位寄存器中,只有部分校驗(yàn)子前項(xiàng)需要在運(yùn)算前進(jìn)行讀取、在編碼完畢后需要進(jìn)行存儲(chǔ),因此需要少量的RAM 資源來存儲(chǔ)部分校驗(yàn)子前項(xiàng),編碼器整體資源占用較低。
由于本文構(gòu)造的SC-LDPC 碼校驗(yàn)矩陣屬于準(zhǔn)循環(huán)校驗(yàn)矩陣,從硬件實(shí)現(xiàn)的角度考慮,分層譯碼算法是一種十分適用于準(zhǔn)循環(huán)結(jié)構(gòu)校驗(yàn)矩陣的譯碼算法。一方面,分層譯碼將整個(gè)校驗(yàn)矩陣分成多個(gè)層,優(yōu)化了層間的消息傳遞,使迭代譯碼收斂速度更快;另一方面,分層譯碼只需要存儲(chǔ)校驗(yàn)節(jié)點(diǎn)信息,無需存儲(chǔ)變量節(jié)點(diǎn)信息,減少了資源占用[15]。假設(shè)校驗(yàn)矩陣的大小為M×N,將校驗(yàn)矩陣的M個(gè)校驗(yàn)方程分為T組,每組包括M/T行,分層譯碼算法的具體步驟描述如下:
1)初始化。
3)若伴隨式c?HT=0,則停止迭代,進(jìn)行譯碼輸出;否則m=m+1,然后轉(zhuǎn)至步驟4)。
4)若m>T,則l=l+1,m=m+1。如果l小于最大迭代次數(shù),則調(diào)至步驟2)繼續(xù)進(jìn)行迭代譯碼;否則終止迭代。
在SC-LDPC碼的其他譯碼方案中,文獻(xiàn)[16]提出了一種針對(duì)SC-LDPC碼的特殊結(jié)構(gòu)——修改優(yōu)化變量節(jié)點(diǎn)信息傳遞規(guī)則的譯碼方式,充分利用變量節(jié)點(diǎn)信息進(jìn)行更新運(yùn)算;文獻(xiàn)[17]提出了一種利用譯碼后驗(yàn)概率信息進(jìn)行節(jié)點(diǎn)更新的譯碼方式,增加了可靠性。在信息位長(zhǎng)192 bit,碼率為1/2,譯碼迭代次數(shù)為20次的情況下,文獻(xiàn)[16]、[17]以及本文提出的分層譯碼與BP譯碼算法性能如圖7所示。
可以看出,本文采用的分層譯碼方式與文獻(xiàn)[16]及[17]提出的譯碼算法相比,在短信息位長(zhǎng)時(shí)譯碼性能較好,沒有明顯的錯(cuò)誤平層,并且與BP譯碼算法的性能接近;在硬件實(shí)現(xiàn)中,可以將變量節(jié)點(diǎn)更新單元和校驗(yàn)節(jié)點(diǎn)更新單元合并,不需要存儲(chǔ)變量節(jié)點(diǎn)更新信息,節(jié)省硬件存儲(chǔ)資源占用。因此,選擇分層譯碼算法作為本文設(shè)計(jì)的SC-LDPC碼的譯碼算法方案。
圖7 本文譯碼方法與其他文獻(xiàn)譯碼方法性能仿真對(duì)比
根據(jù)分層最小和譯碼算法方案,結(jié)合SCLDPC 校驗(yàn)矩陣,采用分層譯碼方式,譯碼器輸入數(shù)據(jù)采用6 bit 量化,最高位為符號(hào)位,中間3 位是整數(shù)位,最后2位為小數(shù)位。譯碼器結(jié)構(gòu)如圖8所示。
圖8 碼率兼容空間耦合LDPC碼譯碼器結(jié)構(gòu)
譯碼器主要由矩陣參數(shù)控制模塊、碼字似然比初始化模塊、譯碼迭代控制模塊、節(jié)點(diǎn)更新計(jì)算模塊、校驗(yàn)節(jié)點(diǎn)概率信息存儲(chǔ)模塊、后驗(yàn)概率信息存儲(chǔ)模塊組成。其中,碼字似然比初始化模塊、校驗(yàn)節(jié)點(diǎn)概率信息存儲(chǔ)模塊與節(jié)點(diǎn)后驗(yàn)概率信息存儲(chǔ)模塊是譯碼器中的信息存儲(chǔ)模塊,主要由RAM 組成,用于數(shù)據(jù)的寫入和讀取;矩陣參數(shù)控制模塊由存儲(chǔ)著矩陣信息的ROM 組成,存儲(chǔ)著矩陣的行列地址索引以及循環(huán)移位系數(shù)等參數(shù)。
譯碼迭代控制模塊采用狀態(tài)機(jī)實(shí)現(xiàn),共有6 個(gè)狀態(tài),狀態(tài)轉(zhuǎn)移圖如圖9所示。CLEAR 狀態(tài)負(fù)責(zé)將節(jié)點(diǎn)信息RAM 進(jìn)行初始化;DECODE 狀態(tài)讀取矩陣相關(guān)參數(shù),初始化譯碼器的控制信號(hào);UPDATE 狀態(tài)進(jìn)行節(jié)點(diǎn)的信息更新;SAVE 狀態(tài)對(duì)更新后的節(jié)點(diǎn)信息進(jìn)行保存;OVER 狀態(tài)將譯碼結(jié)果輸出,輸出完畢后返回IDLE狀態(tài)。
圖9 譯碼器狀態(tài)轉(zhuǎn)移
節(jié)點(diǎn)更新計(jì)算模塊的主要功能是進(jìn)行變量節(jié)點(diǎn)的更新和校驗(yàn)節(jié)點(diǎn)的信息更新。此模塊主要步驟分為有符號(hào)加減法運(yùn)算、符號(hào)整理運(yùn)算、取絕對(duì)值最小值運(yùn)算和乘法運(yùn)算。首先,讀取層存儲(chǔ)模塊中的上一層校驗(yàn)節(jié)點(diǎn)信息以及上一次迭代產(chǎn)生的變量節(jié)點(diǎn)后驗(yàn)概率信息,進(jìn)行相減后得到更新的變量節(jié)點(diǎn)信息。之后,進(jìn)行校驗(yàn)節(jié)點(diǎn)信息的更新,主要分為符號(hào)位相乘(異或)、求絕對(duì)值的最小值和次小值、比較并取補(bǔ)碼值3個(gè)狀態(tài)。符號(hào)相乘和取模運(yùn)算是同時(shí)進(jìn)行的,輸入數(shù)據(jù)的最高位為符號(hào)位,將其進(jìn)行異或運(yùn)算,即符號(hào)相乘。求絕對(duì)值時(shí),當(dāng)數(shù)據(jù)符號(hào)為正,截掉符號(hào)位,保留其他位;當(dāng)符號(hào)為負(fù),將其他位取反后加一。因?yàn)樾r?yàn)矩陣的最大行重為8,所以求最小值和次小值運(yùn)算需要花費(fèi)3個(gè)時(shí)鐘,首先將8個(gè)輸入數(shù)據(jù)兩兩比較,分為絕對(duì)值大的一組和小的一組;再將絕對(duì)值小的一組中的4個(gè)數(shù)據(jù)兩兩比較,分為絕對(duì)值大的一組和絕對(duì)值小的一組;絕對(duì)值小的一組中比較出最小值,剩下的數(shù)據(jù)比較出次小值,然后將比較得出的值取補(bǔ)碼,校驗(yàn)節(jié)點(diǎn)信息更新完畢。最后將更新后的變量節(jié)點(diǎn)信息與校驗(yàn)節(jié)點(diǎn)信息相加,得到更新后的變量節(jié)點(diǎn)后驗(yàn)概率信息,分層譯碼中的一層譯碼結(jié)束,繼續(xù)進(jìn)行下一層譯碼。節(jié)點(diǎn)更新計(jì)算模塊時(shí)序仿真如圖10所示,結(jié)構(gòu)圖如圖11所示。
圖10 節(jié)點(diǎn)更新計(jì)算模塊時(shí)序仿真
將譯碼器通過Verilog 硬件描述語言實(shí)現(xiàn),使用Modelsim 10.7軟件進(jìn)行時(shí)序仿真,時(shí)序波形如圖12所示。在Xilinx xc7k325tff900-2芯片上進(jìn)行實(shí)現(xiàn),譯碼器資源占用如表2所示。
圖11 節(jié)點(diǎn)更新計(jì)算模塊結(jié)構(gòu)
圖12 譯碼器輸出波形時(shí)序
表2 譯碼器資源占用表
可以看出,譯碼器中的節(jié)點(diǎn)更新計(jì)算單元主要消耗LUT 資源,而后驗(yàn)概率信息與校驗(yàn)節(jié)點(diǎn)信息存儲(chǔ)模塊消耗了一部分RAM資源來進(jìn)行信息的存儲(chǔ),譯碼器整體資源占用較低。對(duì)譯碼器進(jìn)行性能仿真,并與軟件仿真結(jié)果進(jìn)行對(duì)比,結(jié)果如圖13所示。可以看出FPGA 中的結(jié)果與軟件仿真的結(jié)果具有0.5 dB左右的差異,一方面是由于輸入的信噪比經(jīng)過量化輸入到譯碼器中,存在量化誤差;另一方面是由于最小和譯碼在迭代更新計(jì)算過程中并沒有進(jìn)行和積運(yùn)算,而是用取最小值作為近似導(dǎo)致的。本文所設(shè)計(jì)的3種碼率在歸一化信噪比為3.5 dB時(shí)FPGA 仿真的誤比特率都可以達(dá)到10-5量級(jí),具有較好的譯碼性能。
圖13 BP 譯碼仿真與FPGA 測(cè)試性能對(duì)比
1)針對(duì)無線信道的時(shí)變特性,本文設(shè)計(jì)了一種碼率兼容的空間耦合LDPC碼,通過對(duì)高碼率的校驗(yàn)矩陣進(jìn)行擴(kuò)展,能夠?qū)崿F(xiàn)3種不同碼率的碼率兼容,可以適應(yīng)不同信道條件下的需求。
2)本文基于FPGA 完成了碼率兼容空間耦合LDPC碼的編碼器和譯碼器的設(shè)計(jì)。編碼器和譯碼器根據(jù)特殊的校驗(yàn)矩陣結(jié)構(gòu)實(shí)現(xiàn)碼率兼容,在保證編譯碼性能的同時(shí),具有較低的資源占用和較好的性能,在實(shí)際工程應(yīng)用中具有一定參考價(jià)值,可以為B5G/6G移動(dòng)通信系統(tǒng)提供可借鑒的傳輸編碼方案。