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