吳 丹,郭夢琪,2
(1.中國電子科技集團公司第五十四研究所,河北 石家莊 050081;2.通信網信息傳輸與分發技術重點實驗室,河北 石家莊 050081)
在硬件開發實現工作中,完成編譯碼模塊開發實現后需要對其性能進行測試,以驗證實現工作的正確性。如果搭建實驗平臺進行測試,需要使用收發2套設備,并且需要利用衰減器或信道模擬器調節信噪比,測試流程復雜且耗時較長。本文基于Xilinx公司推出的ZYNQ-7000系列芯片,開發了一套編譯碼通用測試平臺,僅需要一個ZYNQ系列開發板即可對所實現的編譯碼模塊性能進行快速測試。
ZYNQ集成了ARM Crotex-A9處理器和FPGA,將二者的功能整合到一塊板卡上,為小型化、靈活性和可擴展性提供了解決方案[1-2]。在設計過程中,將需要進行高速運算的編譯碼模塊和噪聲產生模塊放置于FPGA上實現,將信噪比配置、誤碼率計算和運算控制等涉及到需要靈活修改和控制的功能放置于ARM上實現,使得2部分各自發揮最佳用途。
為了應對5G標準對高速率、低延時的要求,低密度奇偶校驗(Low-Density Parity Check,LDPC)碼從眾多信道編碼方案中脫穎而出,于2016年10月進入5G標準,成為數據信道編碼方案[3]。測試平臺所使用的被測碼字即為5G NR標準下的LDPC碼。LDPC碼性能接近于香農極限[4],其誤碼平層低、譯碼復雜度低、適合并行譯碼、支持高吞吐量傳輸[5-9]。高斯白噪聲的產生為測試平臺設計的重點。首先由Mersenne Twister算法產生均勻分布的隨機數,Mersenne Twister算法產生的隨機數具有隨機性好、速度快和周期長的特點[10];然后由Box Muller算法從均勻分布隨機數生成高斯分布隨機數[11],從而產生高斯白噪聲。
本文通過所設計的測試平臺實現數據處理全部流程后,計算得到的誤碼率結果與Matlab浮點理論仿真結果僅有0.2 dB的差距,驗證了該測試平臺的正確性和可靠性。同時,該測試平臺具有通用性和可擴展性,可以將編譯碼模塊替換成任意設計的編譯碼方案,甚至可以替換為期待測試的調制解調方案,對硬件實現的信道編碼模塊甚至調制解調模塊的快速性能測試具有重要意義。
測試平臺數據傳輸架構如圖1所示。ZYNQ主要由FPGA處理器和ARM處理器組成。FPGA處理器簡稱可編程邏輯(Programmable Logic,PL)側,ARM處理器簡稱處理器系統(Processing System,PS)側。PL側更適合實現高速邏輯運算,PS可以對PL的運算流程進行控制,并對運算完成的數據進行處理。PL和PS之間通過AXI接口實現高帶寬、低延遲的連接[12]。

圖1 ZYNQ測試平臺數據傳輸架構Fig.1 Data transmission architecture based on ZYNQ test platform
在本文設計的編譯碼測試平臺中,PS和PL之間傳輸的數據主要為信噪比和錯誤數,通過BRAM控制器完成。PS向PL設置本次測試的信噪比,PL運算完成后返回錯誤比特數,在PS進行誤碼率計算。數據處理的詳細流程如圖2所示。首先在PL側生成隨機比特,比特數為LDPC碼的信息位長度,然后進行LDPC編碼以及星座映射。根據PS傳來的信噪比計算噪聲方差,生成I/Q兩路不同的高斯白噪聲,將高斯白噪聲添加至星座映射后的符號上。接下來,在接收端進行星座解映射、LDPC譯碼和錯誤比特數計算。最終將得到的錯誤比特數返回PS,并產生中斷信號。PS端收到中斷后得知該幀運算完成,讀取錯誤比特數并計算誤碼率。

圖2 ZYNQ測試平臺數據處理流程Fig.2 Data processing flow based on ZYNQ test platform
本文測試的LDPC碼為5G NR標準下的LDPC碼,該LDPC碼是準循環LDPC碼,其校驗矩陣可以通過基矩陣表示[13-14]。例如,對于校驗矩陣H,將其分割成6個尺寸為Z×Z子矩陣,Z稱為擴展因子,在此示例中Z=3。

(1)
H中的每個子矩陣都具有準循環特性,零矩陣用-1表示,單位矩陣用0表示,其他正整數表示單位矩陣循環右移的數目,通過此方法可以得到基矩陣:
(2)
5G NR標準下規定了2種基矩陣形式,如表1所示,基矩陣1為46行28列,最低碼率為1/3,基矩陣2為42行52列,最低碼率為1/5。基矩陣由系統列和校驗列組成,基矩陣1的系統位列數kb為22,基矩陣2相對更適合更短碼長及更低碼率,其系統位列數kb根據實際的信息位長度可以選擇10,9,8,6。

表1 5G NR標準下2種基矩陣參數Tab.1 Parameters of BG1 and BG2 in 5G NR standard
根據以上設計原則,5G NR-LDPC碼的信息位長度與系統位列數kb和擴展因子Z相關,其數值為二者的乘積。擴展因子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碼的碼塊長度和碼率靈活可變,可以通過信息位縮短和校驗位打孔實現。編碼后得到的信息比特和校驗比特如圖3所示,前2列信息比特由于高列重必須被打孔,信息比特的末端可以通過填0進行縮短,校驗比特的末端可以被打掉,實現碼率的靈活變化。

圖3 5G NR-LDPC碼縮短與打孔示意Fig.3 Illustration of 5G NR-LDPC code word shortening and puncturing
高斯白噪聲的產生為測試平臺的重點。產生高斯白噪聲分為2步:第1步為生成[0, 1]均勻分布的隨機數,第2步為由均勻分布的隨機數產生高斯分布的隨機數。均勻分布的隨機數由Mersenne Twister算法產生。
2.2.1 隨機數產生原理
Mersenne Twister算法由Matsurnoto等[10]于1998年提出。若生成數據位寬為w,那么Mersenne Twister算法可以生成0~2w-1的整數,將所生成的數據除以2w-1后,可生成[0,1]區間內均勻分布的隨機數。在本測試平臺中實現的Mersenne Twister算法位寬為64。Mersenne Twister算法基于以下遞推公式實現:
(4)

為了提高運算速度,矩陣A取為:
(5)
那么計算xA相當于移位運算:
(6)
式中,a=(aw-1,aw-2,…,a0);x=(xw-1,xw-2,…,x0)。于是,遞推式(4)可以通過比特移位、按位與、按位或、按位異或操作得到。生成隨機數的步驟如下[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相乘);
④ 與調和矩陣相乘,提升統計特性[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為調和參數;AND,OR,XOR,?,?為按位操作運算。
2.2.2 隨機數的檢驗
為了測試根據Mersenne Twister算法進行Verilog實現所生成的隨機數是否滿足均勻分布的統計特性,需要對產生的隨機數進行檢驗。隨機數統計特性的檢驗一般包括參數檢驗、均勻性檢驗和獨立性檢驗[16]。
參數檢驗是指生成隨機序列的均值、方差、二階矩與理論值是否有顯著的差異。通過Modelsim軟件采集生成樣本200 000個,計算得到均值為:
(7)
二階矩為:
(8)
方差為:
(9)
對于[0,1]均勻分布的隨機變量,其均值、二階矩和方差的理論值分別為:1/2,1/3和1/12,則統計檢驗量:
(10)
(11)
(12)
給定顯著水平參數α=0.05,查找標準正態數值表得到λ:P{|ui|>λ}=α,當|u1|≤1.960時,生成的隨機序列通過均值檢驗;當|u2|≤1.960時,生成的隨機序列通過二階矩檢驗;當|u3|≤1.960時,生成的隨機序列通過方差檢驗[17]。
均勻性檢驗是檢測生成的隨機序列是否均勻地分布于[0,1]。采用卡方檢驗方法,將[0,1]區間分為m個小區間,總樣本數為n,Ri落入第k個小區間的數目為nk,Ri落入每個小區間的概率為1/m,則第k個小區間的理論頻數為:
(13)
統計量為:
(14)
取m=500,根據式(14)計算得到V=506.445。給定顯著水平參數α=0.05,當|V|≤551.950時[18],生成的隨機序列通過卡方檢驗。
獨立性檢驗是檢驗序列中隨機數之間是否具有相關性。如果2個隨機變量獨立,那么它們的相關系數為0。相關性檢驗計算前后相距為k的樣本的相關系數ρk為:
(15)
統計量為:
(16)
取k=15,根據式(15)~(16)計算得到W=0.564 68。給定顯著水平參數α=0.05,當|W|≤1.960時[17],生成的隨機序列通過相關系數檢驗。
綜上所述,通過Verilog實現生成的隨機序列通過了參數檢驗、均勻性檢驗和獨立性檢驗,滿足[0,1]均勻分布的統計特性。MT算法產生隨機數的隨機性好、速度快,周期長達219 937-1,適合用于高斯白噪聲的生成。
2.2.3 均勻分布生成高斯分布
采用Mersenne Twister算法生成均勻分布的隨機數后,可以通過Box Muller算法將其轉換為高斯分布的隨機數。令M為[0,1]均勻分布的隨機變量:
(17)
式中,σ2為方差。N為另一個[0,1]均勻分布的隨機變量,定義Θ=2πN。于是,可以得到2個相互獨立的高斯分布隨機變量[11]:
C=PcosΘ,
(18)
D=PsinΘ,
(19)
通過上述方法即可生成均值為0,方差為σ2的高斯白噪聲,其統計特性如圖4所示。

圖4 高斯分布統計特性Fig.4 Statistical characteristics of Gaussian distribution
本文通過2個不同碼率的LDPC碼驗證該測試平臺的正確性。第1個LDPC碼采用基矩陣2,系統位列數kb=10,擴展因子Z=144,信息位和校驗位均為1 376,碼率為1/2。第2個LDPC碼碼率更高,采用基矩陣1,系統位列數kb=22,擴展因子Z=384,信息位為8 448,校驗位為1 536,碼率為22/26。譯碼算法采用歸一化最小和算法,歸一化因子為0.75。在ZYNQ測試平臺實現了如圖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實現代碼為定點運算。從對比結果可以看出,采用QPSK調制或16QAM調制,測試平臺實測值與Matlab理論仿真值僅有0.2 dB的差距,驗證了該測試平臺的正確性和可靠性。

圖6 誤碼率性能對比(QPSK)Fig.6 Comparison of BER performance (QPSK)

圖7 誤碼率性能對比(16QAM)Fig.7 Comparison of BER performance (16QAM)
本文基于ZYNQ實現了一套編譯碼通用測試平臺,該平臺可以對不同的編譯碼方案進行測試,并且可以對信噪比和調制方式進行修改,具有靈活性和通用性。測試的碼字為5G NR標準中的LDPC碼,高斯白噪聲通過Mersenne Twister算法結合Box Muller算法產生,所實現的Mersenne Twister算法可以通過隨機數檢驗。經過XC7Z100測試平臺實現數據處理全部流程后,資源占用率在50%以下,得到的誤碼率結果與Matlab浮點理論仿真結果僅有0.2 dB的差距。此實例驗證了該測試平臺的正確性和可靠性。