TDD-LTE系统Turbo速率匹配算法及FPGA实现

2013-01-31 05:23何登平余利成李小文
电视技术 2013年17期
关键词:子块交织比特

何登平,高 伟,余利成,李小文

(重庆邮电大学重庆市移动通信技术重点实验室,重庆400065)

在TD-LTE系统中,速率匹配是指传输信道上的比特被重发或打孔。在信道编码后,如果1个码字codeword在1个TTI(子帧1 ms)内使用的RB数目、symbol数目确定以后,该信道的物理资源承载能力,即能够传输的比特数就确定了,如果码字的长度超过信道的承载能力,则需要进行速度匹配,删除一些冗余。

速率匹配的作用是确保在传输信道复用后总的比特率与所分配的专用物理信道的总比特率是相同的。为了匹配物理信道的承载能力,输入序列中的一些比特将被重发或者打孔,以确保在传输信道复用后总的比特率与所分配的物理信道的总的信道比特率相一致[1]。

本文对Turbo编码的速率匹配的算法进行了分析并设计了一种在Xilinx公司的Virtex-6芯片上的实现方法,并对仿真结果与实际结果进行了对比分析。

1 Turbo速率匹配算法

速率匹配算法从速率为1/3的Turbo编码器中通过打孔或重复传输比特。如图1所示,turbo编码器(系统部分,校验0和校验1)3个输出流的每一个用其自己的交织器(称为子块交织器)重新排列。LTE中12个尾比特也被同等的分配到3个流中,使得子块大小Ks=K+4,其中K是QPP交织器的大小。通过将重排的系统比特与2个重排的检验流的交错连接续形成输出缓冲[2]。

图1 Turbo速率匹配原理图

子块交织器采用交织深度位32的“行入列出”的块交织器[3]。

1)每个流中的比特逐行写入具有32列的矩阵(行数由流长度决定),为完全填补矩阵,空比特也被填充到每个流前面。设定子块交织的列数为=32,然后根据交织长度D确定子块交织的列数,即=。对于前两路数据流,变换后的第j列对应于变换前的第P(j)列。j和P(j)的对应关系如表1所示[4]。

表1 列交织表1

对于第二校验码采用了与前两个分量码不同的交织公式,添加了1位偏移量,这样可以避免在速率匹配的过程中,对应于同一个信息比特的2个校验比特被同时打孔,起到保护编码信息的对偶互补性的作用。

2)Turbo编码的3个分量码(包括1个系统码与2个校验码)各自经过子块交织之后形成了3个长度为,的数据流,将这3个数据流进行连接,形成长度为Kw=3K∏的circular buffer,连接的规则为:wk=,对于下行共享信道的发送而言(采用Turbo编码),每个码块的软缓冲器大小为Ncb=,其中C表示一个传输块在码块分割的过程中所形成的码块数目。终端用于每个传输块的接受缓存的大小NIR,由终端的物理缓存大小Nsoft、HARQ进程的数目MDL_HARQ以及MIMO模式中所指的传输块数目KMIMO={1,2}所决定,数学表达式为NIR=其中,Mlimit=8用于TDD的场景,在TDD情况下,根据上下行时间比例配置的不同,支持下行数据连续传输所需要的HARQ进程的数目。在每次数据发送过程中,根据本次HARQ传输中所对应的RV和比特数目选取本次发送的比特序列,其中RV(冗余版本)的数值rvidx={0,1,2,3},数学表达式位k0=。用E表示第r个编码块速率匹配后输出序列的长度[5]。

参数确定后就开始打孔和重复过程,判断当前数据是否是NULL比特,如果是则跳过,如果不是则输出,直到输出数据达到E为止。如果所要取的数据在软缓冲期中的位置为Ncb,则跳到位置0取数据。

2 Turbo速率匹配的设计与硬件实现

2.1 Turbo速率匹配的设计

根据上面介绍的原理可以看出,对于Turbo的子块交织三路原理是相同的,唯一的区别只是其交织表的不一样。对于其具体的实现方式,其算法描述如下。

并且由于Turbo编码后的输出数据为三路,采用3个双端口RAM进行数据的存储,同时将数据存储。完成NULL比特与,,级联后即可以分别进行子块交织的过程。

相关参数确定以后,即可以实现子块交织的过程,子块交织的具体流程:

1)首先设置一个外部大循环sb_inter_v,其取值范围为0,1,2。当sb_inter_v为0和1时,进入对,序列的子块交织过程中,而当sb_inter_v为2时则进入对序列的子块交织过程中。

4)若sb_inter_v=3,则跳出大循环,完成了子块交织的大循环。

在进行上述的子块交织过程的同时,将计算出的交织后的地址同时传递出来,根据不同的sb_inter_v值将sb_inter_addra值传递给sb_inter_addra_0,sb_inter_addra_1,sb_inter_addra_2,这3个地址对应于Turbo编码后的3路数据输出。Turbo编码后的三路数据分别存储于turbo_ram_0,turbo_ram_1,turbo_ram_2中。根据地址得到的输出值,传递至下一级比特收集的RAM中去。完成3路数据的子块交织过程。

在实现比特收集修剪的操作过程中,要对经过子块交织后的输出的比特信息收集,即实现一个循环缓冲器的功能。通过循环缓冲器,将生成的三路数据按照比特收集的规则对数据进行相应的处理。在采用FPGA实现该过程的时候,由于需要收集的数据量比较大,且存储的位置是固定的,但是数据经过传输处理后,不能够实时地去处理数据,如果不采用RAM对数据进行存储缓存的话,则数据必然会出现丢失的情况。在这里采用一个双端口RAM对数据进行缓存处理操作。

2.2 Turbo速率匹配的硬件实现

从图2中可以看出,sb_inter_x_index信号用来进行列坐标计数过程,实现取32次列操作的过程。sb_inter_x

图4 比特收集仿真的整体波形图(截图)

如图4,该图为比特收集的仿真波形图,经过Turbo编码后的数据已经存储在对应的双端口RAM中。子块交织取出的数据均存放置RAM(sb_inter_ram_18450)中,同时根据速率匹配参数计算得到E的值与k0的值,然后根据k0的值依次从RAM中取数,并且判断所取数据是否为信号用来进行指示进过列变换后的列坐标顺序。其列坐标第一个地址数据根据实现存储的ROM取出得到。实现交织过程后对矩阵中的数据进行输出,例如对于第1路数据完成交织过程后,取出的第1列数据首地址为0,第1列第2个数据地址则为32,依次往下取出该列的数据一直到预先计算的行数r_tc_sub=24。然后需要取出第2列数据,根据子块交织列变换表,可知,第2列需取出原先第16列的地址数据,该列的地址数据首地址为16。依次取出为16,48,80,…。依次类推可以分别取出32列经过交织后的矩阵地址数据。图3是相对应的chipscope的实现图,通过对比证明了程序的正确性。3,即是否为填充比特,如果是填充比特,则跳过继续取下一个地址的数据,如果不是填充比特,则将取出的数据存储起来,作为比特收集的输出。图5是比特收集的chipscope实现图,通过与图4的仿真图对比可以验证程序的正确性。

图5 比特收集实现的整体波形图(截图)

5 性能分析

速率匹配算法的FPGA实现经过Modelsim仿真与chipscope实现验证,结果与MATLAB仿真一致。同时,在进行FPGA程序设计时,要考虑到消耗的cycle数。由于速率匹配实现的时间较长,而Turbo编码的时间相对来说比较短,因此,在速率匹配中用了6个深度为6 180的RAM,前3个RAM用于存储第1次Turbo编码的输出,后3个RAM用于存储第2次Turbo编码的输出,这样,第1个码块在做速率匹配的时候,后3个RAM存储第2个码块Turbo编码的输出。经过验证,在码块分割结束之后输出51 264个数据,速率匹配消耗的cycle数为118 350。

总之,本实现方法可以满足TD-LTE系统实时处理的需要,并已经应用到国家科技重大专项项目“TD-LTE射频一致性测试仪表”开发中。

[1]李小文,王振宇.TD-LTE系统Turbo速率匹配算法及DSP实现[J].电子技术应用,2012(5):52-55.

[2]STEFANIA S.LTE-The UMTS Long Term Evolution From Theory to Practice[M].马霓,译.北京:人民邮电出版社,2009.

[3]沈嘉,索士强,全海洋,等.3GPP长期演进(LTE)技术原理与系统设计[M].北京:人民邮电出版社,2005.

[4]3GPP TS 36.212 v9.1.0,Rate matching(Release 9)[S].2009.

[5]赵训威,林辉,张明,等.3GPP长期演进(LTE)系统架构与技术规范[M].北京:人民邮电出版社,2010:72-74.

[6]吴厚航.深入浅出玩转FPGA[M].北京:北京航空航天大学出版社,2010.

猜你喜欢
子块交织比特
基于八叉树的地震数据分布式存储与计算
“新”与“旧”的交织 碰撞出的魅力“夜上海”
基于特征值算法的图像Copy-Move篡改的被动取证方案
交织冷暖
基于波浪式矩阵置换的稀疏度均衡分块压缩感知算法
一种改进的块交织方法及FPGA实现
比特币还能投资吗
比特币分裂
比特币一年涨135%重回5530元
奥运梦与中国梦交织延展