吳 丹,郭夢(mèng)琪,2
(1.中國(guó)電子科技集團(tuán)公司第五十四研究所,河北 石家莊 050081;2.通信網(wǎng)信息傳輸與分發(fā)技術(shù)重點(diǎn)實(shí)驗(yàn)室,河北 石家莊 050081)
在硬件開(kāi)發(fā)實(shí)現(xiàn)工作中,完成編譯碼模塊開(kāi)發(fā)實(shí)現(xiàn)后需要對(duì)其性能進(jìn)行測(cè)試,以驗(yàn)證實(shí)現(xiàn)工作的正確性。如果搭建實(shí)驗(yàn)平臺(tái)進(jìn)行測(cè)試,需要使用收發(fā)2套設(shè)備,并且需要利用衰減器或信道模擬器調(diào)節(jié)信噪比,測(cè)試流程復(fù)雜且耗時(shí)較長(zhǎng)。本文基于Xilinx公司推出的ZYNQ-7000系列芯片,開(kāi)發(fā)了一套編譯碼通用測(cè)試平臺(tái),僅需要一個(gè)ZYNQ系列開(kāi)發(fā)板即可對(duì)所實(shí)現(xiàn)的編譯碼模塊性能進(jìn)行快速測(cè)試。
ZYNQ集成了ARM Crotex-A9處理器和FPGA,將二者的功能整合到一塊板卡上,為小型化、靈活性和可擴(kuò)展性提供了解決方案[1-2]。在設(shè)計(jì)過(guò)程中,將需要進(jìn)行高速運(yùn)算的編譯碼模塊和噪聲產(chǎn)生模塊放置于FPGA上實(shí)現(xiàn),將信噪比配置、誤碼率計(jì)算和運(yùn)算控制等涉及到需要靈活修改和控制的功能放置于ARM上實(shí)現(xiàn),使得2部分各自發(fā)揮最佳用途。
為了應(yīng)對(duì)5G標(biāo)準(zhǔn)對(duì)高速率、低延時(shí)的要求,低密度奇偶校驗(yàn)(Low-Density Parity Check,LDPC)碼從眾多信道編碼方案中脫穎而出,于2016年10月進(jìn)入5G標(biāo)準(zhǔn),成為數(shù)據(jù)信道編碼方案[3]。測(cè)試平臺(tái)所使用的被測(cè)碼字即為5G NR標(biāo)準(zhǔn)下的LDPC碼。LDPC碼性能接近于香農(nóng)極限[4],其誤碼平層低、譯碼復(fù)雜度低、適合并行譯碼、支持高吞吐量傳輸[5-9]。高斯白噪聲的產(chǎn)生為測(cè)試平臺(tái)設(shè)計(jì)的重點(diǎn)。首先由Mersenne Twister算法產(chǎn)生均勻分布的隨機(jī)數(shù),Mersenne Twister算法產(chǎn)生的隨機(jī)數(shù)具有隨機(jī)性好、速度快和周期長(zhǎng)的特點(diǎn)[10];然后由Box Muller算法從均勻分布隨機(jī)數(shù)生成高斯分布隨機(jī)數(shù)[11],從而產(chǎn)生高斯白噪聲。
本文通過(guò)所設(shè)計(jì)的測(cè)試平臺(tái)實(shí)現(xiàn)數(shù)據(jù)處理全部流程后,計(jì)算得到的誤碼率結(jié)果與Matlab浮點(diǎn)理論仿真結(jié)果僅有0.2 dB的差距,驗(yàn)證了該測(cè)試平臺(tái)的正確性和可靠性。同時(shí),該測(cè)試平臺(tái)具有通用性和可擴(kuò)展性,可以將編譯碼模塊替換成任意設(shè)計(jì)的編譯碼方案,甚至可以替換為期待測(cè)試的調(diào)制解調(diào)方案,對(duì)硬件實(shí)現(xiàn)的信道編碼模塊甚至調(diào)制解調(diào)模塊的快速性能測(cè)試具有重要意義。
測(cè)試平臺(tái)數(shù)據(jù)傳輸架構(gòu)如圖1所示。ZYNQ主要由FPGA處理器和ARM處理器組成。FPGA處理器簡(jiǎn)稱可編程邏輯(Programmable Logic,PL)側(cè),ARM處理器簡(jiǎn)稱處理器系統(tǒng)(Processing System,PS)側(cè)。PL側(cè)更適合實(shí)現(xiàn)高速邏輯運(yùn)算,PS可以對(duì)PL的運(yùn)算流程進(jìn)行控制,并對(duì)運(yùn)算完成的數(shù)據(jù)進(jìn)行處理。PL和PS之間通過(guò)AXI接口實(shí)現(xiàn)高帶寬、低延遲的連接[12]。
圖1 ZYNQ測(cè)試平臺(tái)數(shù)據(jù)傳輸架構(gòu)Fig.1 Data transmission architecture based on ZYNQ test platform
在本文設(shè)計(jì)的編譯碼測(cè)試平臺(tái)中,PS和PL之間傳輸?shù)臄?shù)據(jù)主要為信噪比和錯(cuò)誤數(shù),通過(guò)BRAM控制器完成。PS向PL設(shè)置本次測(cè)試的信噪比,PL運(yùn)算完成后返回錯(cuò)誤比特?cái)?shù),在PS進(jìn)行誤碼率計(jì)算。數(shù)據(jù)處理的詳細(xì)流程如圖2所示。首先在PL側(cè)生成隨機(jī)比特,比特?cái)?shù)為L(zhǎng)DPC碼的信息位長(zhǎng)度,然后進(jìn)行LDPC編碼以及星座映射。根據(jù)PS傳來(lái)的信噪比計(jì)算噪聲方差,生成I/Q兩路不同的高斯白噪聲,將高斯白噪聲添加至星座映射后的符號(hào)上。接下來(lái),在接收端進(jìn)行星座解映射、LDPC譯碼和錯(cuò)誤比特?cái)?shù)計(jì)算。最終將得到的錯(cuò)誤比特?cái)?shù)返回PS,并產(chǎn)生中斷信號(hào)。PS端收到中斷后得知該幀運(yùn)算完成,讀取錯(cuò)誤比特?cái)?shù)并計(jì)算誤碼率。
圖2 ZYNQ測(cè)試平臺(tái)數(shù)據(jù)處理流程Fig.2 Data processing flow based on ZYNQ test platform
本文測(cè)試的LDPC碼為5G NR標(biāo)準(zhǔn)下的LDPC碼,該LDPC碼是準(zhǔn)循環(huán)LDPC碼,其校驗(yàn)矩陣可以通過(guò)基矩陣表示[13-14]。例如,對(duì)于校驗(yàn)矩陣H,將其分割成6個(gè)尺寸為Z×Z子矩陣,Z稱為擴(kuò)展因子,在此示例中Z=3。
(1)
H中的每個(gè)子矩陣都具有準(zhǔn)循環(huán)特性,零矩陣用-1表示,單位矩陣用0表示,其他正整數(shù)表示單位矩陣循環(huán)右移的數(shù)目,通過(guò)此方法可以得到基矩陣:
(2)
5G NR標(biāo)準(zhǔn)下規(guī)定了2種基矩陣形式,如表1所示,基矩陣1為46行28列,最低碼率為1/3,基矩陣2為42行52列,最低碼率為1/5?;仃囉上到y(tǒng)列和校驗(yàn)列組成,基矩陣1的系統(tǒng)位列數(shù)kb為22,基矩陣2相對(duì)更適合更短碼長(zhǎng)及更低碼率,其系統(tǒng)位列數(shù)kb根據(jù)實(shí)際的信息位長(zhǎng)度可以選擇10,9,8,6。
表1 5G NR標(biāo)準(zhǔn)下2種基矩陣參數(shù)Tab.1 Parameters of BG1 and BG2 in 5G NR standard
根據(jù)以上設(shè)計(jì)原則,5G NR-LDPC碼的信息位長(zhǎng)度與系統(tǒng)位列數(shù)kb和擴(kuò)展因子Z相關(guān),其數(shù)值為二者的乘積。擴(kuò)展因子Z的取值如表2所示。
表2 5G NR標(biāo)準(zhǔn)下擴(kuò)展因子Z取值Tab.2 Expansion factor Z in 5G NR standard
Z=a×2j,
(3)
式中,a和j分別有8種不同取值,對(duì)應(yīng)得到擴(kuò)展因子Z的51種不同取值。
5G NR-LDPC碼的碼塊長(zhǎng)度和碼率靈活可變,可以通過(guò)信息位縮短和校驗(yàn)位打孔實(shí)現(xiàn)。編碼后得到的信息比特和校驗(yàn)比特如圖3所示,前2列信息比特由于高列重必須被打孔,信息比特的末端可以通過(guò)填0進(jìn)行縮短,校驗(yàn)比特的末端可以被打掉,實(shí)現(xiàn)碼率的靈活變化。
圖3 5G NR-LDPC碼縮短與打孔示意Fig.3 Illustration of 5G NR-LDPC code word shortening and puncturing
高斯白噪聲的產(chǎn)生為測(cè)試平臺(tái)的重點(diǎn)。產(chǎn)生高斯白噪聲分為2步:第1步為生成[0, 1]均勻分布的隨機(jī)數(shù),第2步為由均勻分布的隨機(jī)數(shù)產(chǎn)生高斯分布的隨機(jī)數(shù)。均勻分布的隨機(jī)數(shù)由Mersenne Twister算法產(chǎn)生。
2.2.1 隨機(jī)數(shù)產(chǎn)生原理
Mersenne Twister算法由Matsurnoto等[10]于1998年提出。若生成數(shù)據(jù)位寬為w,那么Mersenne Twister算法可以生成0~2w-1的整數(shù),將所生成的數(shù)據(jù)除以2w-1后,可生成[0,1]區(qū)間內(nèi)均勻分布的隨機(jī)數(shù)。在本測(cè)試平臺(tái)中實(shí)現(xiàn)的Mersenne Twister算法位寬為64。Mersenne Twister算法基于以下遞推公式實(shí)現(xiàn):
(4)
為了提高運(yùn)算速度,矩陣A取為:
(5)
那么計(jì)算xA相當(dāng)于移位運(yùn)算:
(6)
式中,a=(aw-1,aw-2,…,a0);x=(xw-1,xw-2,…,x0)。于是,遞推式(4)可以通過(guò)比特移位、按位與、按位或、按位異或操作得到。生成隨機(jī)數(shù)的步驟如下[10]:
a←aw-1aw-2…a0(矩陣A的最后一行);
①i←0;x[0],x[1],…,x[n-1](任意非0初始值);
③x[i]←x[(i+m)modn] XOR(y?1)
(與矩陣A相乘);
④ 與調(diào)和矩陣相乘,提升統(tǒng)計(jì)特性[15]:
y←x[i]
y←yXOR(y?u)
y←yXOR((y?s)ANDb)
y←yXOR((y?t)ANDc)
y←yXOR(y?l)
輸出y;
⑤i←(i+1)modn;
⑥ 返回第②步。
其中,u,s,t,l,b,c為調(diào)和參數(shù);AND,OR,XOR,?,?為按位操作運(yùn)算。
2.2.2 隨機(jī)數(shù)的檢驗(yàn)
為了測(cè)試根據(jù)Mersenne Twister算法進(jìn)行Verilog實(shí)現(xiàn)所生成的隨機(jī)數(shù)是否滿足均勻分布的統(tǒng)計(jì)特性,需要對(duì)產(chǎn)生的隨機(jī)數(shù)進(jìn)行檢驗(yàn)。隨機(jī)數(shù)統(tǒng)計(jì)特性的檢驗(yàn)一般包括參數(shù)檢驗(yàn)、均勻性檢驗(yàn)和獨(dú)立性檢驗(yàn)[16]。
參數(shù)檢驗(yàn)是指生成隨機(jī)序列的均值、方差、二階矩與理論值是否有顯著的差異。通過(guò)Modelsim軟件采集生成樣本200 000個(gè),計(jì)算得到均值為:
(7)
二階矩為:
(8)
方差為:
(9)
對(duì)于[0,1]均勻分布的隨機(jī)變量,其均值、二階矩和方差的理論值分別為:1/2,1/3和1/12,則統(tǒng)計(jì)檢驗(yàn)量:
(10)
(11)
(12)
給定顯著水平參數(shù)α=0.05,查找標(biāo)準(zhǔn)正態(tài)數(shù)值表得到λ:P{|ui|>λ}=α,當(dāng)|u1|≤1.960時(shí),生成的隨機(jī)序列通過(guò)均值檢驗(yàn);當(dāng)|u2|≤1.960時(shí),生成的隨機(jī)序列通過(guò)二階矩檢驗(yàn);當(dāng)|u3|≤1.960時(shí),生成的隨機(jī)序列通過(guò)方差檢驗(yàn)[17]。
均勻性檢驗(yàn)是檢測(cè)生成的隨機(jī)序列是否均勻地分布于[0,1]。采用卡方檢驗(yàn)方法,將[0,1]區(qū)間分為m個(gè)小區(qū)間,總樣本數(shù)為n,Ri落入第k個(gè)小區(qū)間的數(shù)目為nk,Ri落入每個(gè)小區(qū)間的概率為1/m,則第k個(gè)小區(qū)間的理論頻數(shù)為:
(13)
統(tǒng)計(jì)量為:
(14)
取m=500,根據(jù)式(14)計(jì)算得到V=506.445。給定顯著水平參數(shù)α=0.05,當(dāng)|V|≤551.950時(shí)[18],生成的隨機(jī)序列通過(guò)卡方檢驗(yàn)。
獨(dú)立性檢驗(yàn)是檢驗(yàn)序列中隨機(jī)數(shù)之間是否具有相關(guān)性。如果2個(gè)隨機(jī)變量獨(dú)立,那么它們的相關(guān)系數(shù)為0。相關(guān)性檢驗(yàn)計(jì)算前后相距為k的樣本的相關(guān)系數(shù)ρk為:
(15)
統(tǒng)計(jì)量為:
(16)
取k=15,根據(jù)式(15)~(16)計(jì)算得到W=0.564 68。給定顯著水平參數(shù)α=0.05,當(dāng)|W|≤1.960時(shí)[17],生成的隨機(jī)序列通過(guò)相關(guān)系數(shù)檢驗(yàn)。
綜上所述,通過(guò)Verilog實(shí)現(xiàn)生成的隨機(jī)序列通過(guò)了參數(shù)檢驗(yàn)、均勻性檢驗(yàn)和獨(dú)立性檢驗(yàn),滿足[0,1]均勻分布的統(tǒng)計(jì)特性。MT算法產(chǎn)生隨機(jī)數(shù)的隨機(jī)性好、速度快,周期長(zhǎng)達(dá)219 937-1,適合用于高斯白噪聲的生成。
2.2.3 均勻分布生成高斯分布
采用Mersenne Twister算法生成均勻分布的隨機(jī)數(shù)后,可以通過(guò)Box Muller算法將其轉(zhuǎn)換為高斯分布的隨機(jī)數(shù)。令M為[0,1]均勻分布的隨機(jī)變量:
(17)
式中,σ2為方差。N為另一個(gè)[0,1]均勻分布的隨機(jī)變量,定義Θ=2πN。于是,可以得到2個(gè)相互獨(dú)立的高斯分布隨機(jī)變量[11]:
C=PcosΘ,
(18)
D=PsinΘ,
(19)
通過(guò)上述方法即可生成均值為0,方差為σ2的高斯白噪聲,其統(tǒng)計(jì)特性如圖4所示。
圖4 高斯分布統(tǒng)計(jì)特性Fig.4 Statistical characteristics of Gaussian distribution
本文通過(guò)2個(gè)不同碼率的LDPC碼驗(yàn)證該測(cè)試平臺(tái)的正確性。第1個(gè)LDPC碼采用基矩陣2,系統(tǒng)位列數(shù)kb=10,擴(kuò)展因子Z=144,信息位和校驗(yàn)位均為1 376,碼率為1/2。第2個(gè)LDPC碼碼率更高,采用基矩陣1,系統(tǒng)位列數(shù)kb=22,擴(kuò)展因子Z=384,信息位為8 448,校驗(yàn)位為1 536,碼率為22/26。譯碼算法采用歸一化最小和算法,歸一化因子為0.75。在ZYNQ測(cè)試平臺(tái)實(shí)現(xiàn)了如圖2所示的編譯碼及添加高斯白噪聲全部流程,芯片型號(hào)為XC7Z100。該測(cè)試平臺(tái)硬件板卡圖如圖5所示。
圖5 編譯碼通用測(cè)試平臺(tái)硬件板卡圖Fig.5 Hardware board of the universal encoding and decoding test platform
資源占用如表3所示,其中查找表的資源占用率最高,主要為編譯碼所占用。
表3 LDPC碼測(cè)試平臺(tái)資源占用Tab.3 Resource usage of LDPC test platform
圖6和圖7展示了測(cè)試平臺(tái)的實(shí)測(cè)誤碼率與Matlab仿真得到的理論誤碼率。Matlab仿真默認(rèn)采用Mersenne Twister算法生成高斯白噪聲。在Matlab仿真中采用全浮點(diǎn)運(yùn)算,測(cè)試平臺(tái)中Verilog實(shí)現(xiàn)代碼為定點(diǎn)運(yùn)算。從對(duì)比結(jié)果可以看出,采用QPSK調(diào)制或16QAM調(diào)制,測(cè)試平臺(tái)實(shí)測(cè)值與Matlab理論仿真值僅有0.2 dB的差距,驗(yàn)證了該測(cè)試平臺(tái)的正確性和可靠性。
圖6 誤碼率性能對(duì)比(QPSK)Fig.6 Comparison of BER performance (QPSK)
圖7 誤碼率性能對(duì)比(16QAM)Fig.7 Comparison of BER performance (16QAM)
本文基于ZYNQ實(shí)現(xiàn)了一套編譯碼通用測(cè)試平臺(tái),該平臺(tái)可以對(duì)不同的編譯碼方案進(jìn)行測(cè)試,并且可以對(duì)信噪比和調(diào)制方式進(jìn)行修改,具有靈活性和通用性。測(cè)試的碼字為5G NR標(biāo)準(zhǔn)中的LDPC碼,高斯白噪聲通過(guò)Mersenne Twister算法結(jié)合Box Muller算法產(chǎn)生,所實(shí)現(xiàn)的Mersenne Twister算法可以通過(guò)隨機(jī)數(shù)檢驗(yàn)。經(jīng)過(guò)XC7Z100測(cè)試平臺(tái)實(shí)現(xiàn)數(shù)據(jù)處理全部流程后,資源占用率在50%以下,得到的誤碼率結(jié)果與Matlab浮點(diǎn)理論仿真結(jié)果僅有0.2 dB的差距。此實(shí)例驗(yàn)證了該測(cè)試平臺(tái)的正確性和可靠性。