余 蕾,黄 河
(96901部队26分队,北京,100085)
当前常规的迭代均衡算法,接收数据均衡后若译码结果错误,则需对译码结果重新进行编码、调制、加扰,与训练序列按照发送数据的帧结构组合,作为已知数据重新对接收数据进行信道估计,得到更加可靠的信道估计值,利用该信道估计值重新对接收数据进行均衡[1]。该算法利用第一次译码软判决的纠错增益,提高信道估计的性能,进而提高接收性能。本文先具体介绍当前迭代均衡算法思想及实施步骤,然后在原有算法基础上进行优化并给出仿真结果。
本文中的迭代[3]均衡算法应用的数据结构为信息头+N包数据,其中每一包数据中包含M个子帧,每个子帧由未知数据和已知数据组成,未知数据就是该数据包发送的原始信息比特经过编码、调制、加扰后的符号,依次填入M个子帧中;信息头包含TLC/AGC序列和同步头等,由于本文只用到信息头的信道估计结果,因此数据前面统一以信息头代替。数据结构[2]如图1所示。
迭代均衡算法主要思想是:利用第一次译码软判决的纠错增益,提高信道估计的性能。每包数据第一次译码错误后,将第一次译码结果重新编码、调制、加扰,作为已知数据与接收数据再次进行信道估计,然后重新对当前数据包进行均衡译码。第一次译码虽然错误,但译码采用软判决具有一定纠错能力,较之前的硬判决会提高正确性。
迭代均衡算法具体步骤如下。
第1步,若为第一包数据,利用信息头进行RLS迭代计算得到的信道估计,若为第二包及后面的每一包数据,则利用前一包数据的最后一帧进行RLS迭代计算得到的信道估计,对第一帧数据进行均衡。
第2步,均衡后的数据进行RLS迭代得到新的信道估计,并对本帧数据尾部1/2数据重新进行均衡。
第3步,利用第2步得到的信道估计值对第2帧数据进行均衡,然后对第二帧数据重复步骤2。
第4步,从第3帧到本数据包最后一帧重复第2帧的过程。
第5步,M帧数据联合译码。
第6步,若CRC校验正确或CRC校验错误但当前数据包的检测次数达到2次,则当前包检测结束,检测下一包数据;否则,转到步骤7。
图1 数据结构
第7步,若CRC校验错误,且本包数据检测次数小于2,则利用本次译码的结果重新对本包数据进行检测;第2次检测时,在步骤4RLS迭代采用第一次检测的译码结果作为已知数据进行迭代。
其中迭代次数通常为1次,多次迭代的效果不大,所以只取1次迭代的结果。
本文针对原有的迭代均衡算法,从复杂度和性能两个角度分别进行优化。
由章节1.2迭代均衡算法流程可知,每个子帧数据均衡后,会进行判决,重新编码调制,进行RLS信道估计,该信道估计值用于下一帧数据的均衡;原算法每个符号都会调用RLS模块进行信道迭代。为降低复杂度,优化只利用每个子帧尾部的部分符号进行RLS迭代,可取子帧尾部的1/2或1/3或其他长度数据(长度要超过已知数据长度),即利用重新编码后的未知数据尾部的部分符号和已知数据符号进行RLS迭代,原波形与新波形RLS迭代流程如图2所示。
由章节1.2均衡迭代流程可知,当第一次检测CRC错误时,会进行第二次检测,第二次检测RLS算法模块以及RLS模块的调用频率一致,因此,新波形与原波形RLS算法复杂度总结如下。
数据包只检测一次时:新波形RLS算法复杂度是原波形算法的1/n。
数据包检测二次时:新波形RLS算法复杂度是原波形算法的2/n。
在降低复杂度的同时,算法的性能也略有所降。因此在实际情况中,可综合信道情况以及性能要求考虑复杂度的降低,适当调整n值。
原算法在第一次CRC校验失败后,利用第一次译码输出的数据重新编码、调制、加扰,更新迭代信道估计,即进行第二次迭代。由于每一个数据包分为M帧,后面M-1帧都是按照第一次迭代的译码输出重新信道估计进行均衡,但第一帧还是按照上一数据包的信道估计进行均衡的(准确说是第一帧的前半帧,因为后半帧还会利用第一次译码输出的数据结果进行RLS迭代得到新的信道估计重新进行均衡,即利用了第一次译码结果),即与第一次迭代采用的相同信道估计,相当于还是第一次迭代,并没有利用上一帧第一次迭代的译码结果信道估计。针对第一帧的这种情况,在第二次迭代之前增加一个模块:用缓存器保存上一数据包的信道译码结果以及上一数据包倒数第2帧末尾迭代信道估计值。若当前数据包CRC正确,则清除缓存器中上一包数据的译码数据,并将当前信道译码数据存入缓存器,再继续处理下一数据包;若当前数据包CRC错误,需要二次迭代,则将保存的上一数据包倒数第2帧末尾迭代信道估计值作为初始值,用缓存器中上一数据包的信道译码结果重新进行编码、调制、加扰,取最后一帧的数据(相当于本次第一帧的前一帧数据)重新迭代计算新的信道估计值。这样,每一个数据包的第一帧数据就和后面帧的数据一样进行了第二次迭代。注意第一个数据包的第一帧数据不需要做此操作,因为第一个数据包前面的信息头是已知数据,因此不需要重复二次迭代。
优化算法流程如图3所示。
图4为修改算法与原算法区别示意图。
图2 迭代均衡算法流程
图3 优化迭代均衡算法流程图
图4 优化算法与原算法区别示意图
图4中,实线部分是原算法中的CRC迭代:每一包数据需要迭代时,第一帧数据实际上没有进行迭代,而是重复第一次的均衡译码过程(因为其均衡使用的信道估计与第一次相同),后面的几帧数据都是用本包中前一帧数据根据第一次译码结果重新进行信道估计迭代得到的新的信道估计进行均衡。虚线部分是修改算法后增加的模块,即每一包数据需要迭代时,第一帧数据使用上一帧数据(即前一包数据的最后一帧)的译码结果重新进行信道估计迭代得到的新的信道估计进行均衡。
当一包数据中分为M帧时,修改后的算法复杂度为原算法的M/(M-1),即比原算法多了对一帧数据的信道估计迭代,还有一帧数据的编码、调制和加扰,以及多了一个缓存器。但不是每一包数据都会增加复杂度,仅在第一次CRC校验错误的数据包增加。
根据章节2.1和2.2的优化算法,本节将仿真以对比复杂度优化和性能优化后与原算法的性能对比。仿真信道:AWGN,数据包数:1 000。分别仿真了原算法(即图中原算法-起始位置0)、原算法+降低复杂度(即图中原算法-起始位置120)、新算法+降低复杂度(即图中优化算法-起始位置120)的性能曲线,仿真结果如图5所示。
图5 BER仿真曲线
根据仿真结果,对比原算法与原算法+降低复杂度可知,降低复杂度后性能下降并不多,与原算法基本相同。对比原算法+降低复杂度与优化算法+降低复杂度可知,优化算法性能略有提升,且在信噪比较高时提升更多。最后综合对比优化算法+降低复杂度(优化算法-起始位置120)与原算法(原算法-起始位置0)相比,优化算法+降低复杂度整体性能更好。
因此,综合两种优化算法,可以同时使用降低复杂度和性能优化的算法,在降低复杂度的同时,性能还可以有提升。
本文在原有迭代均衡算法基础上,提出了降低复杂度和优化性能两种优化算法,具体改进如下。
(1)通过减少RLS迭代长度降低复杂度。
(2)通过更新每一个数据包第一帧(除第一包数据)第二次均衡时采用的信道估计值,即采用前一包数据最后一个子帧译码结果重新经过编码、调制、加扰后再次进行的信道估计值进行第二次均衡,弥补了原算法对数据包第一子帧二次均衡仍采用第一次均衡时的信道估计值的漏洞。
仿真证明,降低复杂度对性能没有明显影响,而性能优化更适用于信噪比较好的情况。根据实际情况和对复杂度的要求,可以选择合适参数使用文中两种算法。