黃虎+孔勇+李華+孫樂



【摘 要】設計了適合于現場可編程門陣列實現的多輸入多輸出系統的對角分層空時碼編譯碼算法。采用Verilog硬件描述語言在Xilinx Virtex4-VC4VSX55現場可編程門陣列開發板上實現了3×3對角分層空時編碼基帶處理系統。通過現場可編程門陣列仿真評估了采用迫零串行干擾抵消和最小均方誤差串行干擾抵消檢測算法時3×3對角分層空時編碼基帶系統的誤碼率性能。仿真分析和實驗表明了現場可編程門陣列對角分層空時編碼基帶處理系統設計的正確性和高效性。同時,還論證了在同樣條件下對角分層空時編碼系統的性能優于垂直分層空時編碼系統。
【關鍵詞】多輸入多輸出 對角分層空時編碼 串行干擾抵消 現場可編程門陣列 誤碼率
doi:10.3969/j.issn.1006-1010.2016.20.015 中圖分類號:TN911.23 文獻標志碼:A 文章編號:1006-1010(2016)20-0077-07
1 引言
未來移動通信的空中接口將采用多輸入多輸出(Multiple-Input Multiple-Output,MIMO)技術成倍地提高通信系統的容量和頻譜利用率[1]。Foschini所提出的貝爾實驗室分層空時(Bell Laboratories Layered Space-Time,BLAST)編碼方案是一種有效的MIMO處理算法[2]。BLAST系統的基本思想是把高速數據業務分解為若干個低速數據業務,通過普通并行信道編碼器編碼后,使用向量編碼器對其進行并行的分層編碼,編碼信號經調制后用多個天線發射,實現發射分集[3]。
根據分層后的天線映射方式和數據流的不同,BLAST可分為對角分層空時碼(Diagonally–Bell Laboratories Layered Space-Time,D-BLAST)與垂直分層空時碼(Vertically–Bell Laboratories Layered Space-Time,V-BLAST)結構。D-BLAST是將每一層的數據流在N根天線上依照次序循環地發送,即每一個數據層都是在發射矩陣的對角線上;而V-BLAST的映射關系是固定的,即每層數據流都在同一根天線上傳輸,每個數據層都對應于發射矩陣的某一行。D-BLAST的數據流在各發射天線上是遍歷的,其優點是D-BLAST具有較好的空時特性和層次結構,子信道的深衰落對它的影響要比V-BLAST小。
現場可編程門陣列(Field Programmable Gate Array,FPGA)具有架構靈活、算法高效、吞吐率高、可實現并行計算和動態配置等優勢,特別適合用于設計并驗證無線通信系統基站中的基帶處理部分功能。
為此,通過Xilinx FPGA開發平臺,設計了基于FPGA的D-BLAST系統結構、算法,實現了D-BLAST高效的編譯碼器和檢測,并對不同的檢測算法進行了分析和性能仿真,對研發D-BLAST類MIMO原型系統具有重要的參考價值。
2 MIMO D-BLAST系統模型
圖1為MIMO D-BLAST系統結構模型,QPSK調制后的信息流,經過串并變換、信道編碼和D-BLAST空時編碼后,分別通過N根天線發送出去,接收端為M根天線,M≥N。假設信道為準靜態的、平坦瑞利衰落信道,即信道傳輸矩陣H在發送L個符號的期間是恒定的,并且信道信息狀態可得到有效估計。這樣,接收信號和發送信號的關系表示為:
式(1)中,信道傳輸矩陣H為一個N行M列的矩陣,其中hi,j表示的是第j根發射天線到第i根接收天線的信道系數,hi,j服從單位方差、零均值的復高斯分布;X=[xi]T,i=1, 2, …, N表示N根發射天線所發射信號矢量;Y=[yi]T,i=1, 2, …, M表示M根接收天線上所收到信號矢量;n=[ni]T,i=1, 2, …, M表示M根接收天線上的噪聲矢量,ni服從高斯分布,均值為0,方差為σ2。
3 MIMO D-BLAST的FPGA實現
基于Xilinx的ML402的FPGA開發平臺,采用Virtex-4 XC4VSX55芯片和Verilog硬件描述語言實現了3×3 MIMO D-BLAST基帶系統的FPGA設計。該系統主要包含D-BLAST編碼模塊,對映射后的符號先進行串并轉換后再進行交織來實現D-BLAST編碼;MIMO檢測模塊對空間復用的數據流進行分離和檢測;D-BLAST譯碼模塊對檢測后的信息流進行D-BLAST空時譯碼,恢復原始比特流的估計值。
3.1 D-BLAST編碼
D-BLAST系統的基本思想是把高速數據業務分解為若干低速數據業務,通過普通的并行信道編碼器編碼后,使用交織編碼器對其進行并行的分層編碼,編碼后信號使用多個天線發射,實現發射分集[3]。在接收端,把多根接收天線同時接收的所有數據進行解交織,再通過并串變換最終輸出譯碼后的串行數據。V-BLAST編碼是對數據流進行串并變換,而D-BLAST與V-BLAST不同的是在串并變換后還要對數據流進行交織,因此D-BLAST的復雜度要比V-BLAST大,但是其性能卻要比V-BLAST好。圖2為D-BLAST結構圖。
如圖1所示,D-BLAST編碼器從并行信道編碼器輸出的碼元接收數據,再根據圖2所示的對角線方向來進行空間編碼,第1個信道編碼器輸出的開始N個碼元排在第1個對角線,第2個信道編碼器輸出的開始N個碼元排在第2條對角線上。一般第i個信道編碼器輸出的N個碼元排在第(i+(j-1)×N)條對角線,沒有排滿的空位置零[4,5]。空時碼元矩陣中的每一列就是編碼后的數據,通過N個發射天線同時發射。
如圖3所示,假設輸入信號c=[c1, c2, c3…]來自于QPSK星座圖Q,調制信號經串并變化后得到的矢量為uj[6]:
這樣,通過一個交織矩陣M,可以得到D-BLAST發射信號xj為:
D-BLAST編碼模塊主要就是實現對角分層循環發送功能,本文設計的是3×3系統,根據式(3)提出了一種易于FPGA實現的D-BLAST編碼算法。首先通過狀態機產生交織圖案,從而實現待編碼字與矩陣M的乘積。如圖3所示,D-BLAST編碼FPGA實現共包括4個模塊,分別為串并變換、時序控制模塊、狀態機和存儲器。FPGA硬件仿真對時序的要求很嚴格,因此采用了一個單獨的時序控制模塊來控制FPGA實現中的時序。先對調制信號c=[c1, c2, c3…]進行串并變換成uj=[uj1,…,ujk]存入寄存器RAM中,然后在時序控制模塊控制下產生一個狀態機,再利用狀態機來產生一個交織圖案,映射到寄存器中控制RAM輸出信號xj=[xj1,…, xjk],最終實現了D-BLAST的對角分層編碼。本設計的核心就是采用狀態機來實現傳輸符號的交織。
接收端根據特殊的結構方式與信號處理過程分離各子信號流,分別進行MIMO檢測、空時譯碼、信道解碼,再通過并串變換將各子信號流合并為原來的串行數據信息。
3.2 MIMO檢測
接收端首先要根據不同的準則接收信號進行MIMO檢測,從而確定每根天線的權值。MIMO檢測的準則主要有迫零(ZF)和最小均方誤差(MMSE)準則。
ZF算法是簡單的利用信道矩陣H的偽逆矩陣H+作為權值矩陣GZF。
可以看出ZF算法在檢測時損失了有用信息,影響了系統性能,MMSE算法用滿足下式的權值矩陣GMMSE代替ZF中的GZF。
其中,表示矩陣的共軛轉置,表示矩陣的Moore-Penrose偽逆,σ2為噪聲方差,IM是M×M維的單位矩陣,GMMSE的行矢量gi是接收天線對于發送信號ci所形成的權矢量。
ZF和MMSE這兩種算法的唯一不同之處就在于檢測矩陣GZF和GMMSE的求解。因為GZF=H+,而GMMSE=HH(HHH+σ2I)+,從上述兩個算法的檢測矩陣就可以看出,MMSE算法的復雜度比ZF算法的復雜度大,但MMSE算法由于考慮了噪聲的影響,性能要比ZF算法好。
ZF和MMSE檢測算法同時分離出M個子數據流,檢測過程中任一個子數據流都將受到其他M-1個子數據流的干擾。為此,引入串行干擾抵消算法后的ZF和MMSE稱為ZF-SIC(Zero Forcing-Successive Interference Cancellation,迫零串行干擾抵消)接收機和MMSE-SIC(Minimum Mean-Squared Error-SIC,最小均方誤差串行干擾抵消)接收機,可以進一步提高系統的性能[7]。引入SIC后,對M個子數據流按照一定的順序依次檢測,計算各子數據流的信號估值并硬判決,之后再在下一個信號的檢測中抵消掉硬判決的值,循環往復,直到檢測完所有的子數據流。
為改善系統的性能,對MIMO D-BLAST檢測的FPGA實現分別采用了ZF-SIC和MMSE-SIC這2種不同的檢測方法。因此,該MIMO檢測器的FPGA實現設計共包括4個功能模塊:輸入輸出模塊、檢測矩陣模塊、譯碼模塊和時序控制模塊。本設計中采用流水線操作進行并行處理來提高運算速度,功能模塊框圖如圖4所示:
(1)輸入輸出模塊
輸入輸出模塊是與系統其他功能模塊的接口。輸入模塊接收信道矩陣H和接收信號R然后送入檢測矩陣模塊進行運算。輸出模塊接收譯碼模塊輸出的信號存儲在寄存器中,等待同一時刻的所有信號譯碼完成后輸出譯碼數據。
(2)檢測矩陣模塊
在MIMO-DBLAST檢測中,FPGA實現最重要的就是檢測矩陣G的求解,而求解檢測矩陣時最關鍵的就是矩陣求逆。矩陣求逆的算法如下所示:
其中H∈Cn×m,而H的前k列表示為Ak∈Cn×k,Hj代表H的第j列,則H=Am,Ak=(Ak-1,Hk)。
根據上面的矩陣求逆算法可以得到圖5所示的FPGA實現流程圖。本文FPGA設計采用了迭代運算、加法運算和乘法運算,采用復用的方式來減少資源占用,除法運算采用查表的方式來提高運算速度。如圖5所示,首先初始化得到A1+,然后用一個計數器K來控制迭代次數,當k 檢測矩陣模塊首先根據ZF-SIC和MMSE-SIC算法特點選擇相應的檢測矩陣GZF和GMMSE,然后完成上述矩陣求逆子模塊,把求逆的輸出存入寄存器中,根據式(4)和式(5)進行相應檢測矩陣的運算。當完成檢測矩陣G計算后送入譯碼模塊,同時輸出一個使能信號enb送入譯碼模塊。 (3)譯碼模塊 計算出檢測矩陣G后,開始進行接收信號譯碼。譯碼主要是通過逐步檢測相消法來進行子流的區分和檢測。串行干擾抵消檢測器通過M次迭代實現所有M個子數據流的檢測。每次檢測出一個子數據流,然后將其從接收信號向量中減掉,如此循環,直到檢測完最后一個子數據流[8]。其具體算法如下所示: 譯碼模塊首先接收輸入模塊的用戶信號R,存入緩存中等待檢測矩陣的使能信號enb。當enb變高后,同時接收到檢測矩陣送入的數據進行譯碼處理。譯碼處理部分總共包含6個子模塊,分別完成公式(11)~(17)的計算。即首先計算ki、wki、ski和,再把判決的值送入輸出模塊同時反饋回去譯碼模塊,同時接收信號再減去對剩余信號的干擾,如此不斷循環直到最后一個信號譯碼完成。圖6為譯碼模塊的FPGA實現流程圖。
檢測矩陣模塊和譯碼模塊需要進行大量的運算,加法運算和乘法運算采用復用的方式來減少資源占用,除法運算采用查表的方式來提高運算速度。
3.3 D-BLAST譯碼
接下來進行D-BLAST譯碼,D-BLAST譯碼是按照對角線型方向來進行譯碼的,實際上是如圖2所示編碼的逆過程。由于在編碼端對信號串并變換后再進行交織,因此接收端的D-BLAST譯碼是與發射端的編碼相對應的操作,先進行解交織,然后再進行并串變換。
首先信號乘以解交織矩陣M-1,得到:
然后將并串變換后得到串行信號流=[1,2,3…]。
根據式(7),譯碼的重點是如何獲得解交織矩陣M-1,然后與信號進行乘法運算。D-BLAST譯碼的設計實現共4個模塊,包括存儲器模塊、狀態機控制模塊、時序控制模塊、并串轉換模塊,如圖7所示。譯碼時把檢測后的信號=[,…,jk]存儲在RAM中,時序控制模塊控制狀態機產生交織圖案,時序控制模塊控制從RAM中讀出并行的譯碼數據,最后對譯碼后的3路并行數據流進行并串變換,形成串行數據流,實現D-BLAST譯碼。
4 性能仿真分析
通過Verilog硬件描述語言在Virtex4-VC4VSX55芯片上實現了帶寬為33 MHz、速率為200 Mbps的3×3 D-BLAST基帶FPGA硬件系統,并在獨立同分布的平坦瑞利衰落信道下對系統的性能進行了FPGA運行仿真評估。全局時鐘采用了100 MHz的時鐘頻率,發射端和接收端均采用了同步電路,以保證系統的穩定性。
圖8是分別采用ZF-SIC和MMSE-SIC檢測方法的MIMO D-BLAST系統在FPGA上運行的誤碼率曲線。從圖8中很明顯地可以看出MMSE-SIC性能優于ZF-SIC檢測算法,在誤碼率為10-3時,MMSE-SIC的性能要比ZF-SIC大約有2 dB~3 dB的增益。在收發天線相同的系統中,MMSE-SIC的性能優于ZF-SIC。
從圖8中還可以看出,在誤碼率為10-3時,采用16-QAM調制方式的ZF-SIC檢測所需要的信噪比是23 dB,采用QPSK調制方式的ZF-SIC檢測的信噪比是21 dB,因此16-QAM調制的性能略差于QPSK調制。同時QPSK承載2 bit信息,16-QAM符號承載4 bit信息,因此QPSK速率小于16-QAM。實際應用中需要通過自適應調制技術在不同的信道情況下自適應地選擇不同的調制方式。
表1列出了兩種不同檢測算法接收機所占用硬件資源的情況。從表1可以清楚地看出,ZF-SIC算法消耗的硬件資源要少于MMSE-SIC,即MMSE-SIC檢測算法性能的提高是以計算復雜度為代價的。
圖9對比了3×3 D-BLAST和V-BLAST基帶FPGA的仿真性能,可以看到,D-BLAST的性能相對于V-BLAST系統大約有1 dB的增益。
表2列出了D-BLAST和V-BLAST接收機所占用硬件資源的情況。從表2可以清楚地看出,D-BLAST譯碼端消耗的硬件資源要多于V-BLAST,即D-BLAST譯碼算法的復雜度要高于V-BLAST。這是因為V-BLAST編碼只是對數據流進行了簡單的串并變換,但D-BLAST不僅進行了串并變換還對數據流進行了交織和解交織,因此D-BLAST譯碼的復雜度要比V-BLAST的復雜度大。
5 結束語
通過Verilog硬件描述語言在Virtex4-VC4VSX55芯片上實現了帶寬為33 MHz、速率為200 Mbps的3×3 D-BLAST基帶FPGA硬件系統,對系統的性能進行了FPGA運行仿真評估,對系統占用的硬件資源進行了統計。設計中涉及QPSK調制解調、D-BLAST編碼、MIMO檢測和譯碼等主要功能模塊的實現。其中,MIMO檢測采用了ZF-SIC和MMSE-SIC兩種不同的檢測算法以提高系統的性能。對3×3 D-BLAST和V-BLAST基帶FPGA運行仿真性能還進行了對比。這些工作對研發基于D-BLAST檢測的MIMO原型系統具有重要的參考價值。
參考文獻:
[1] Foschini G J, Gans M J. On limits of wireless communications in a fading environment using multiple antennas[J]. Wireless Personal Communications, 1998(3): 311-335.
[2] Foschini G J. Layered space-time architecture for wireless communications in a fading environment when using multi-element antennas[J]. Bell Labs Technique Journal, 2002(2): 41-49.
[3] 謝顯中. 移動通信中的空時編碼技術與接收機設計[D]. 西安: 西安電子科技大學, 2000.
[4] H E Gamal, A R J Hammons. A New Approach to Layered Space time Coding and Signal Processing[J]. IEEE Transactions on Information Theory, 2001(6): 2321-2334.
[5] H E Gamal, M O Damen. Universal Space-time Coding[J]. IEEE Transactions on Information Theory, 2003(5): 1097-1119.
[6] Narayan Prasad, Mahesh K, Varanasi. Analysis and Optimization of Diagonally Layered Lattice Schemes for MIMO Fading Channels[J]. IEEE Transactions on Information Theory, 2008(3): 1162-1185.
[7] Branka Vucetic, Jinhong Yuan. 空時編碼技術[M]. 王曉梅,譯. 北京: 機械工業出版社, 2004.
[8] 劉謙雷,楊綠溪,許道峰. 用于MIMO信號檢測的降低復雜度V-BLAST算法[J]. 通信學報, 2007,28(9): 40-45.
[9] 黃虎. D-BLAST MIMO-OFDM基帶系統的FPGA實現[D]. 北京: 北京交通大學, 2009.
[10] 王利勇. MIMO檢測算法的研究與實現[D]. 西安: 西安電子科技大學, 2010.