文獻標識碼: A
文章編號: 0258-7998(2013)07-0014-03
LTE(長期演進)是3.9G的全球標準,采用OFDM和MIMO技術(shù)作為其無線網(wǎng)絡(luò)演進的唯一標準,極大地提高了系統(tǒng)的帶寬[1]。而速率匹配是LTE系統(tǒng)中重要的組成部分,因此速率匹配設(shè)計的優(yōu)劣,決定整個系統(tǒng)性能的好壞[2]。LTE系統(tǒng)中,速率匹配是指傳輸信道上的比特被打孔或者被重發(fā),以匹配物理信道的承載能力。當輸入的比特數(shù)目超過物理信道的承載能力時,就要對輸入的序列進行打孔;而當輸入的比特數(shù)目不滿足物理信道的承載能力時,就要對輸入的序列進行重發(fā)。根據(jù)編碼方式的不同,速率匹配又可分為卷積編碼和Turbo編碼的速率匹配。FPGA在數(shù)字信號處理方面性能優(yōu)越,利用FPGA做乒乓操作能夠明顯地提高數(shù)據(jù)的處理速度[3]。
1 速率匹配算法
1.1 速率匹配的整體流程
在LTE系統(tǒng)中,基于Turbo編碼的速率匹配過程如圖1所示。該過程主要包括子塊交織、比特收集、比特選擇和修剪[4]。
2.2 乒乓前控制模塊的FPGA實現(xiàn)
數(shù)據(jù)經(jīng)過Turbo編碼器后分3路暫存在3個RAM中。當速率匹配模塊中的使能信號Rate_Match_En拉高時,所有的模塊開始工作。如果乒乓前控制模塊的啟動信號Control_Start為高電平并且接收到的碼塊個數(shù)是偶數(shù),則子塊交織A模塊的啟動信號Interleavera_Start拉高,此時子塊交織A就會讀取外部RAM中的數(shù)據(jù),進行子塊交織;否則子塊交織B模塊的啟動信號Interleaverb_Start拉高,子塊交織B會從外部RAM中讀取數(shù)據(jù),進行子塊交織。從而實現(xiàn)了乒乓操作。
2.3 子塊交織的FPGA實現(xiàn)
以子塊交織A模塊為例。當子塊交織A的啟動信號拉高時,子塊交織A模塊會從外部RAM中讀取數(shù)據(jù)。首先讀取第1路數(shù)據(jù)。第1路數(shù)據(jù)讀取完畢后立即讀取第2路數(shù)據(jù)和第3路數(shù)據(jù)。第2路數(shù)據(jù)放在偶數(shù)位置,第3路數(shù)據(jù)放在奇數(shù)位置。在Turbo編碼模塊中,輸出的數(shù)據(jù)已經(jīng)加入了填充比特。為了區(qū)別填充比特和數(shù)據(jù)信息,輸入數(shù)據(jù)的位寬占2 bit,填充比特用3來表示。子塊交織輸出的數(shù)據(jù)仍然占2 bit的位寬,只有在比特修剪模塊后,數(shù)據(jù)才按照1 bit的位寬表示。在子塊交織的FPGA實現(xiàn)過程中,將外部RAM模擬成一個交織矩陣。交織矩陣的每一個元素對應(yīng)RAM的每一個地址,每一個元素的具體內(nèi)容對應(yīng)于RAM的每一個數(shù)據(jù)。在程序中,第1路數(shù)據(jù)與第2路數(shù)據(jù)的交織方法一樣,用變量F_Matrix_Column、S_Matrix_Column、T_Matrix_Column表示3個交織矩陣的列;用變量F_Matrix_Row、S_Matrix_Row、T_Matrix_Row表示3個交織矩陣的行。以讀取第1路數(shù)據(jù)為例,因為是行寫入列讀出,所以行變量F_Matrix_Row每個時鐘要自加1,直到行變量取到RTCsubblock-1時歸零,同時列變量F_Matrix_Column按照表1所示進行列交織。
按表2進行交織以后,將RAM交織矩陣中最后一列的第1個地址中的數(shù)據(jù)放到該列的最后一個地址中,將剩下的數(shù)依次向上移一個地址即可。
2.4 乒乓后控制模塊的FPGA實現(xiàn)
在子塊交織A和子塊交織B開始工作時,乒乓后控制模塊也已經(jīng)開始工作。當子塊交織A的啟動信號Interleavera_Start拉高時,乒乓后控制模塊會將子塊交織A輸入的數(shù)據(jù)傳輸給比特修剪模塊;反之,則會將子塊交織B輸入的數(shù)據(jù)傳輸給比特修剪模塊。
2.5 比特修剪模塊的FPGA實現(xiàn)
在比特修剪模塊中,一個碼塊的數(shù)據(jù)進行子塊交織后會緩存在一個RAM中。此方法可以阻止在輸入數(shù)據(jù)少于輸出數(shù)據(jù)需要重發(fā)操作時由于數(shù)據(jù)丟失而引起的傳輸錯誤。本程序中進行了乒乓操作,但由于輸入數(shù)據(jù)速率小于輸出數(shù)據(jù)的速率,所以乒乓操作不能做到無縫隙地進行,輸入的碼塊之間會有一定的間隔。而為了將碼塊之間的間隔限制在最小范圍,將表示速率匹配輸出序列長度的變量E和表示取數(shù)起始位置的變量Ko輸出給Turbo編碼模塊,可使碼塊之間的間隔限制在最小。在比特修剪時,設(shè)置一個計數(shù)器變量counter,初始值設(shè)置為零。當RAM中緩存的數(shù)據(jù)大于Ko時,可以從RAM中讀取數(shù)據(jù),若該數(shù)據(jù)是填充比特,則跳過,計數(shù)器counter不變;否則,計數(shù)器counter自加1,同時輸出數(shù)據(jù)。直到計數(shù)器counter的值等于E時,讀取數(shù)據(jù)完畢。等待下一個碼塊子塊交織后輸入的數(shù)據(jù)。
3 FPGA實現(xiàn)結(jié)果分析
圖3和圖4分別是PUSCH信道子塊交織的ModelSim仿真圖形和FPGA實現(xiàn)圖。本程序的時鐘頻率是200 MHz。Virtex-6芯片做為測試平臺。程序中DataOf-Interleaverb和DataOfInterleaverb是PUSCH信道子塊交織的輸出數(shù)據(jù)和標志位,A_Matrix_Row和A_Matrix_Column分別表示交織矩陣的行和列, A_addrb是RAM交織矩陣的地址。由于交織矩陣的列數(shù)有32個,所以每次輸出數(shù)據(jù)的地址就要加32,以實現(xiàn)列讀出。變量A_Matrix_Row取到矩陣的最后一行后,又重新取下一列的第一行,直到32列全部取完為止。從PUSCH信道交織的仿真圖和FPGA實現(xiàn)圖可以看出,仿真結(jié)果與FPGA實現(xiàn)結(jié)果一致,因此FPGA能夠準確地實現(xiàn)PUSCH信道的子塊交織功能。
圖5和圖6分別是PUSCH信道比特修剪的ModelSim仿真圖形和FPGA實現(xiàn)圖。從圖形中可知,仿真結(jié)果與板級驗證的結(jié)果一致,F(xiàn)PGA能夠穩(wěn)定、準確地實現(xiàn)比特修剪的功能。
子塊交織和比特修剪的Verilog[5]程序已經(jīng)通過了Xilinx ISE 13.4[6]的編譯、仿真、板級驗證和聯(lián)機測試。結(jié)果表明,運用FPGA來實現(xiàn)速率匹配算法能夠滿足LTE系統(tǒng)對速率匹配的速度要求,同時也能夠充分發(fā)揮FPGA并行操作的優(yōu)越性。在此基礎(chǔ)上,引用乒乓操作的方法,在不消耗更多資源的情況下,進一步縮短了速率匹配的處理時間,為整體系統(tǒng)的快速運行提供了基本的速度保障。由于該算法的FPGA實現(xiàn)在聯(lián)機測試中,性能穩(wěn)定,故已在TD_LTE射頻一致性項目中得到應(yīng)用。
參考文獻
[1] 陳發(fā)堂,李小文,王丹,等.移動通信接收機設(shè)計理論與實現(xiàn)[M].北京:科學出版社,2011.
[2] Ma Chixiang,Lin Ping.Efficient implementation of rate matching for LTE Turbo codes[C].The 2nd International Conference on Future Computer and Communication(ICFCC 2010),2010:704-708.
[3] 曹華,鄧彬.使用Verilog實現(xiàn)基于FPGA的SDRAM控制器[J].今日電子,2005,10(1):11-14.
[4] 3GPP TS 36.212 v9.1.0.3rd generation partner-ship project;technical specification group radio access network;evolved universal terrestrial radio access(E-UTRA);rate matching (Release 9)[S].2010.
[5] 夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計教程(第2版)[M].北京:北京航空航天大學出版社,2008.
[6] XilinxInc.Foundation series user guide[EB/OL].(2010-01-03).http://china.xilinx.com/support/documentation/user_guides/ug071.pdf.