APP下载

LTE上行信道交织与解交织的研究及DSP实现*

2011-03-21陈发堂陈燕

电子技术应用 2011年5期
关键词:交织字节比特

陈发堂,陈燕

(重庆邮电大学,重庆400065)

ZEHAVI提出比特交织编码调制BICM(Bit Interleaver coding Modulation)思想[1],即在编码和调制之间引入交织。BICM通过牺牲一些欧式距离来提高汉明距离,使其在衰落信道下具有高度的鲁棒性。交织的原理是打乱原始数据序列,使数据的相关性减弱,尽力分散突发错误,在译码时大大降低数据突发错误的影响。

3GPP LTE中物理上行链路共享信道PUSCH(Physical Uplink Shared Channel)上承载的信息包含预编码矩阵指示PMI(Precoding Matrix Index)、秩指示RI(Rand Index)、CQI信道质量指示(channel quality indicator)和混合自动重传请求应答HARQ-ACK(hybrid automatic repeat request acknowledgement)以及数据信息。为降低数据突发错误率,在几路信息各自编码后和调制间,引入了信道交织[2]。PUSCH信道交织采用的是分组交织,但与传统的分组交织有较大差异。本文从DSP实际角度出发,针对PUSCH信道交织与解交织,提出了一种简单的实现方案。

1 PUSCH信道交织

进入PUSCH信道交织是三路信息,为降低译码的错误率,在进行信道交织前,先将三路信息进行数据复用,然后再进行PUSCH信道交织。在用DSP具体实现时,把数据复用和信道交织放在一个模块实现。

1.1 三路编码后的数据复用

(1)RI和ACK的数据复用

(2)CQI/PMI和数据信息复用

q0,q1,q2,q3,…,qQ-1是CQI编码后的比特序列,f0,f1,f2,f3,…,fG-1是编码后UL-SCH数据的比特序列,控制信息与数据信息复用的数据为复用方式如下:

在具体用DSP实现时,不用浪费存储空间和程序段来实现三路数据复用的过程。只需在进行信道交织时,使整个交织表的每一个大行向量包含Qm小行,在放置数据时,需要首先把Qm小行放置完毕,依次放置该大行向量的其他数据,即可实现三路数据的复用。

1.2 PUSCH信道交织步骤

通过上式分析可以确定交织表的行数、列数是由高层来的参数确定,与三路输入数据的长度无关。

本系统选用TMS320C6455作为DSP芯片,该芯片是TI公司基于第三代先进Velovi TI超长指令字VLIW(Very Long Instruction Word)结构的高性能定点DSP[3]。其最高主频达到了1.2 GHz,每个周期可以并行执行8条指令,处理速度最大可至8 000 MIPS,实现高速运算。TMS320C6455片内采用L1/L2两级存储器结构,L1包含相互独立的32 KB的程序Cache(L1P)和32 KB的数据Cache(L1D),L2为2 MB的寻址空间,其片内存储器容量是其他C64系列的二倍。序列。协议中规定:RI比特序列从最后一大行开始放置,每大行放置4列,放置所占的列数,需每次通过如下公式计算,即需要用到查表、求模、向下取整运算,在用DSP实现时,浪费程序段代码和cycle数。

通过对上述公式的计算和理解,从节省程序代码段和cycle数考虑,提出了一种简单的实现方案,在放置RI时每行只需放置4列,每行放置的位置相同,在实现时,只需把原RI所占列的表1修改为表2,即可实现上述代码。

表1 RI和ACK所占列

表2 RI和ACK所占列

(4)在交织表中放置CQI和数据信息:首先放置CQI信息,然后放置数据信息,在放置CQI和数据信息时,程序中必须考虑不能覆盖RI的信息,具体见下节信道交织的DSP实现。

(5)如果在该子帧传送HARQ-ACK,在交织表中放置ACK的信息的ACK比特序列。协议中规定:ACK与RI在进行信道交织时,所放置的情况相同,只是所占的列不同,在这里不再赘述。为节省Cycle和程序段代码,对ACK放置在交织表中所查的列的表1修改为表2即可实现。

(6)交织表按列输出即可实现交织。

2 信道交织与解交织算法的DSP实现

2.1 信道交织的DSP实现

在实现信道交织时,输入的三路信息:RI、CQI/PMI和数据复用后的信息,HARQ经过编码后直接到信道交织模块,数据复用放到信道交织模块实现。图1给出PUSCH信道交织的程序实现流程。信道交织是比特进行交织,为便于寻址处理,需要把每个比特字节化。

三路信息实现比特字节化,利用TMS320C6455每个周期最多可并行执行8条指令,为节省Cycle,在比特字节化的循环体里,每次分别取出4 B的数据,在程序中利用A组寄存器和B组寄存器交替使用的方式,达到每个周期可以并行执行6条指令。利用B指令和LDB指令后的延迟“NOP”指令,使程序进行极大的优化。

在交织表中放置RI信息,根据对协议的理解,提出了一种简单的实现方案。在放置RI信息过程中,采用三层循环实现:第一层为Qm行小向量是否填满,第二层为该大行的4列是否填满,第三层为大行数依次递减,是否所有的RI已经放在交织表中。

在交织表中放置CQI信息,在放置时不能覆盖RI的信息,即需要知道RI在交织表中占哪些位置。为确定RI在交织表中的位置,用RI编码后的长度除以4×Qm,在程序中提出采用文献[4]介绍的除法程序,该除法程序经优化后只占用35cycle。CQI的放置原理和RI相同,都是采用三层循环。只是放置时需要根据RI在交织表占用位置的不同情况进行放置。

在交织表中放置ACK信息,为便于程序的简化,提出了一种简单的实现方案,ACK放置在交织表中的位置是覆盖CQI信息,为避免覆盖多余的CQI,需明确ACK占交织表中哪些位置,用ACK编码后的长度调用除法程序除以4×Qm,根据ACK在交织表中的具体情况进行放置。ACK的放置原理和RI相同,采用三层循环。

交织表的输出是按列进行输出,其实现采用三层循环,第一层为Qm小行进行输出,取出每一个Qm小行的数据,在用DSP实现时需要偏移Cmux;第二层为大行数依次递增,直到把R′mux大行的数据取出;第三层为列数依次递增,把Cmux列的数据取出。

2.2 PUSCH解信道交织的DSP实现

PUSCH上的数据经过解调、解扰后是软信息,每个软信息占16 bit,解信道交织时无需对软信息进行字节化。通过对协议TS36.212中PUSCH信道交织的理解,解信道交织的思想是首先恢复出交织表(注意恢复交织表时,列输入行输出),然后根据三路数据所放置的具体位置,再解出三路数据信息。在解交织时,为保证三路输出的数据正确,需调用除法程序,具体步骤如下:

(1)根据高层的参数来确定交织表的列数Cmux和大行数。

(2)恢复交织表。按列进行输入,在放置数据时,包含三层循环,第一层把Qm小行向量填满,每一小行从起始位置偏移0~(Qm-1)×Cmux进行放置,直到把Qm小行放置完;第二层为大行数依次递增,直到把R′mux大行的数据填满;第三层为列数依次递增,把Cmux列的数据填满,每一列的处理方式相同。

(3)从交织表中取出RI的数据。在取RI数据时,采用三层循环进行实现:从最后一大行开始,第一层为取出列表二的值,根据该值确定其RI在交织表中列位置偏移,把Qm小行向量的RI数据从交织表取出;第二层为列表二中RI所占四列的数据是否取完;第三层为大行数依次递减,直到把所有的RI信息取出。

(4)在交织时,ACK的数据覆盖一部分CQI的数据,在解交织时,取出ACK的数据,同时在放置ACK的数据位置填0,即实现对CQI数据的打孔。根据ACK的长度确定ACK在交织表所占位置,从交织表中取出ACK的数据,其处理方式和RI相同,采用三层循环,在取出数据的同时,把相应的位置赋值为0。

(5)在解交织取出CQI的数据时,从交织表中取出的CQI数据的原理和RI相同,都是采用三层循环。只是取CQI数据时需要根据RI在交织表占用位置的不同情况进行。

3 性能分析

在TMS320C6455DSP软件实现中,考虑该定点DSP具有每个周期最多可并行执行8条指令的特性。根据上节描述的信道交织与解交织的软件实现流程,从节省cycle数和存储空间角度出发,最大程度优化程序循环体,使用并行指令,利用一些指令后的延迟“NOP”指令[5]。根据不同的数据类型和数据的长度,通过程序仿真实现,得到统计结果如表3。

表3 统计结果

表3中PUSCH解信道交织时得到的数据是软信息,每一个软信息占16 bit。给出的三路数据各自的长度虽然比较特别,但不失一般性。在交织时由于处理的是比特交织,需要把比特进行字节化,在交织完后,需要字节比特化级联。而解交织处理的是软信息,无需此过程,所执行的周期明显的减少。虽然给出简化方案的运算量较大,但是由于采用的TMS320C6455的主频为1 GHz,在具体实现时,完全可以满足实时需求。

本文从理论上详细分析了PUSCH信道交织的过程,PUSCH信道交织的交织表的行、列是由高层来的参数确定,与传输的三路数据的长度无关。根据PUSCH上的三路数据采用特殊的分块交织,提出了一种简单的方案实现PUSCH上数据复用和信道交织的模块与PUSCH解信道交织和数据复用的模块。将DSP程序输出的结果与MATLAB程序输出的结果进行比较,程序运行结果表明,本方案能够满足TD-LTE无线综合测试仪表的需求。

[1]ZEHAVI.E 8-PSK Trellis Codes for a Rayleigh Fading Channel IEEE Transactions on Communications,1992,40(5):873-874.

[2]3GPP TS36.212.v8.9.0 Multiplexing and channel coding(Release 9)[S].

[3]汪安民,张松灿.TMS320C6000系列DSP实用技术与开发案例[M].北京:人民邮电出版社,2008.

[4]石元君.定点DSP除法原理及其TMS-320C6000实现[J].单片机与嵌入式系统应用,2002(10):73-74.

[5]Texas Instruments Incorporated.TMS320C6000系列DSP变成工具与指南[M].田黎育,何佩琨,朱梦宇,译.北京:清华大学出版社,2007:30-60.

猜你喜欢

交织字节比特
“新”与“旧”的交织 碰撞出的魅力“夜上海”
No.8 字节跳动将推出独立出口电商APP
交织冷暖
No.10 “字节跳动手机”要来了?
一种改进的块交织方法及FPGA实现
比特币还能投资吗
简谈MC7字节码
比特币分裂
比特币一年涨135%重回5530元
奥运梦与中国梦交织延展