LTE(长期演进)是3.9G的全球标准,采用OFDM和MIMO技术作为其无线网络演进的唯一标准,极大地提高了系统的带宽[1]。而速率匹配是LTE系统中重要的组成部分,因此速率匹配设计的优劣,决定整个系统性能的好坏[2]。LTE系统中,速率匹配是指传输信道上的比特被打孔或者被重发,以匹配物理信道的承载能力。当输入的比特数目超过物理信道的承载能力时,就要对输入的序列进行打孔;而当输入的比特数目不满足物理信道的承载能力时,就要对输入的序列进行重发。根据编码方式的不同,速率匹配又可分为卷积编码和Turbo编码的速率匹配。FPGA在数字信号处理方面性能优越,利用FPGA做乒乓操作能够明显地提高数据的处理速度[3]。
1 速率匹配算法
1.1 速率匹配的整体流程
在LTE系统中,基于Turbo编码的速率匹配过程如图1所示。该过程主要包括子块交织、比特收集、比特选择和修剪[4]。
2.2 乒乓前控制模块的FPGA实现
数据经过Turbo编码器后分3路暂存在3个RAM中。当速率匹配模块中的使能信号Rate_Match_En拉高时,所有的模块开始工作。如果乒乓前控制模块的启动信号Control_Start为高电平并且接收到的码块个数是偶数,则子块交织A模块的启动信号Interleavera_Start拉高,此时子块交织A就会读取外部RAM中的数据,进行子块交织;否则子块交织B模块的启动信号Interleaverb_Start拉高,子块交织B会从外部RAM中读取数据,进行子块交织。从而实现了乒乓操作。
2.3 子块交织的FPGA实现
以子块交织A模块为例。当子块交织A的启动信号拉高时,子块交织A模块会从外部RAM中读取数据。首先读取第1路数据。第1路数据读取完毕后立即读取第2路数据和第3路数据。第2路数据放在偶数位置,第3路数据放在奇数位置。在Turbo编码模块中,输出的数据已经加入了填充比特。为了区别填充比特和数据信息,输入数据的位宽占2 bit,填充比特用3来表示。子块交织输出的数据仍然占2 bit的位宽,只有在比特修剪模块后,数据才按照1 bit的位宽表示。在子块交织的FPGA实现过程中,将外部RAM模拟成一个交织矩阵。交织矩阵的每一个元素对应RAM的每一个地址,每一个元素的具体内容对应于RAM的每一个数据。在程序中,第1路数据与第2路数据的交织方法一样,用变量F_Matrix_Column、S_Matrix_Column、T_Matrix_Column表示3个交织矩阵的列;用变量F_Matrix_Row、S_Matrix_Row、T_Matrix_Row表示3个交织矩阵的行。以读取第1路数据为例,因为是行写入列读出,所以行变量F_Matrix_Row每个时钟要自加1,直到行变量取到RTCsubblock-1时归零,同时列变量F_Matrix_Column按照表1所示进行列交织。
按表2进行交织以后,将RAM交织矩阵中最后一列的第1个地址中的数据放到该列的最后一个地址中,将剩下的数依次向上移一个地址即可。
2.4 乒乓后控制模块的FPGA实现
在子块交织A和子块交织B开始工作时,乒乓后控制模块也已经开始工作。当子块交织A的启动信号Interleavera_Start拉高时,乒乓后控制模块会将子块交织A输入的数据传输给比特修剪模块;反之,则会将子块交织B输入的数据传输给比特修剪模块。
2.5 比特修剪模块的FPGA实现
在比特修剪模块中,一个码块的数据进行子块交织后会缓存在一个RAM中。此方法可以阻止在输入数据少于输出数据需要重发操作时由于数据丢失而引起的传输错误。本程序中进行了乒乓操作,但由于输入数据速率小于输出数据的速率,所以乒乓操作不能做到无缝隙地进行,输入的码块之间会有一定的间隔。而为了将码块之间的间隔限制在最小范围,将表示速率匹配输出序列长度的变量E和表示取数起始位置的变量Ko输出给Turbo编码模块,可使码块之间的间隔限制在最小。在比特修剪时,设置一个计数器变量counter,初始值设置为零。当RAM中缓存的数据大于Ko时,可以从RAM中读取数据,若该数据是填充比特,则跳过,计数器counter不变;否则,计数器counter自加1,同时输出数据。直到计数器counter的值等于E时,读取数据完毕。等待下一个码块子块交织后输入的数据。
3 FPGA实现结果分析
图3和图4分别是PUSCH信道子块交织的ModelSim仿真图形和FPGA实现图。本程序的时钟频率是200 MHz。Virtex-6芯片做为测试平台。程序中DataOf-Interleaverb和DataOfInterleaverb是PUSCH信道子块交织的输出数据和标志位,A_Matrix_Row和A_Matrix_Column分别表示交织矩阵的行和列, A_addrb是RAM交织矩阵的地址。由于交织矩阵的列数有32个,所以每次输出数据的地址就要加32,以实现列读出。变量A_Matrix_Row取到矩阵的最后一行后,又重新取下一列的第一行,直到32列全部取完为止。从PUSCH信道交织的仿真图和FPGA实现图可以看出,仿真结果与FPGA实现结果一致,因此FPGA能够准确地实现PUSCH信道的子块交织功能。
图5和图6分别是PUSCH信道比特修剪的ModelSim仿真图形和FPGA实现图。从图形中可知,仿真结果与板级验证的结果一致,FPGA能够稳定、准确地实现比特修剪的功能。
子块交织和比特修剪的Verilog[5]程序已经通过了Xilinx ISE 13.4[6]的编译、仿真、板级验证和联机测试。结果表明,运用FPGA来实现速率匹配算法能够满足LTE系统对速率匹配的速度要求,同时也能够充分发挥FPGA并行操作的优越性。在此基础上,引用乒乓操作的方法,在不消耗更多资源的情况下,进一步缩短了速率匹配的处理时间,为整体系统的快速运行提供了基本的速度保障。由于该算法的FPGA实现在联机测试中,性能稳定,故已在TD_LTE射频一致性项目中得到应用。
参考文献
[1] 陈发堂,李小文,王丹,等.移动通信接收机设计理论与实现[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实现基于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数字系统设计教程(第2版)[M].北京:北京航空航天大学出版社,2008.
[6] XilinxInc.Foundation series user guide[EB/OL].(2010-01-03).http://china.xilinx.com/support/documentation/user_guides/ug071.pdf.