基于SOVA与BCJR算法的CPM信号改进译码算法

时间:2022-09-27 02:49:21

基于SOVA与BCJR算法的CPM信号改进译码算法

摘要摘要:BCJR算法是一种最优译码算法,但是计算量大、译码复杂;SOVA算法译码简单,但是性能稍差。针对这两种算法的缺点,在连续相位调制信号系统中,提出一种基于减少搜索T-BCJR与SOVA算法的改进译码算法。该算法能在减少迭代译码时的搜索路径数量、降低译码复杂度的同时达到比较好的译码性能。经过实验仿真,验证了该算法的可行性与优越性。

关键词关键词:SOVA;T-BCJR;连续相位调制;迭代译码

DOIDOI:10.11907/rjdk.162309

中图分类号:TP312文献标识码:A文章编号文章编号:16727800(2017)001003503

引言

连续相位调制CPM(Continuous Phase Modulation)信号是一种恒包络且相位连续的调制信号,与其它调制方法相比,具有很高的频谱和功率利用率。由于信号的包络恒定,对功放的非线性特性不敏感,可以使用C类(非线性)功率放大器。另外,信号相位连续,带外辐射小,产生的邻道干扰也比较小。

因此,CPM调制技术近年来受到广泛关注。G.Ungerboeck[1]提出了网格编码调制TCM(Trellis Coded Modulation)的设计方法,将线性调制技术与信道编码结合,很大程度上提高了系统的性能。C.Berrou[2]提出了Turbo码,迭代解码的结构被应用到串行级联CPM系统的译码中。孙锦华[3]提出了一种基于RSSD思想的减状态译码算法,降低了译码复杂度。

本文主要探讨连续相位调制信号在高斯白噪声信道下的译码算法,并提出一种基于Turbo译码算法的改进结构,该算法结合了Turbo码译码的SOVA与BCJR算法的优点。通过仿真实验,验证了该算法的可行性,可以在减少算法复杂度的同时改善系统的译码性能。

1基本概念

1.1CPM概念与分解模型

CPM信号的一般表达式为: S(t,α)=2ETcos(2πfct+φ(t,α)+φ0)(1)其中,fc是载波频率,φ0是载波的初始相位,T为码元周期,E是一个码元周期T内的信号能量,φ(t,α)是携带信息的相位,表示如下:φ(t,α)=2πh∑nk=-∞αkq(t-kT)

nT≤t≤(n+1)T(2)其中,αk是M进制的信息符号,取值范围是αk∈{±1,±3,…,±(M-1)};h=K/P(K,P为互斥正整数)是调制指数;q(t)为相位响应函数,定义为脉冲函数g(t)的积分:q(t)=∫τ0g(τ)dτ(3)常见的脉冲函数有L-REC方波、L-RC升余弦和L-GMSK高斯成形脉冲。

令φ(t,α)=φ(t,α)+πh(M-1)t/T,Ui=[αi+(M-1)]/2,t=τ+nT,可得:φ(t,U)=R2π[2πhRP∑n-Li=0Ui+

4πh∑L-1i=0Un-iq(t-(n-i)T)+W(τ)](4)其中,0≤t≤T,R2π[]和RP[]分别表示模2π和模P操作,W(τ)是与输入信息序列无关的项。

代入CPM信号的表达式,可以得到倾斜相位的CPM信号表达式[4]:S(t,U)=2ETcos(2πft+φ(t,U)+φ0)(5)其中,f=fc-h(M-1)/2T。

从式(4)可看出,任意一个符号周期T内,CPM信号可以由当前输入Un、前L-1个输入Un-L+1,…,Un-1、累加和Vn=RP[∑n-Li=0Ui]确定。

因此,CPM可以分解为一个连续相位编码器CPE与无记忆调制器MM的组合,CPE具有递归和记忆特性,可以将CPE看作是码率为1的卷积编码器[5]。

连续相位编码器CPE(Continuous Phase Encode)的输出为Xn=[Vn,Un-L+1,...,Un],作为无记忆调制器MM(Memoryless Modulator)的输入,然后MM选择对应的信号波形发送到接收端。CPM的分解模型[6]如图1所示。

SOVA算法,即软输出的维特比算法,是维特比算法的改进类型。这种算法不仅能得出最大似然路径,而且能计算出每个信息比特的后验概率[7]。假设网格图上每个节点有2个分支,状态数为2v,v是编码器的移位寄存器个数。在k时刻,状态为Sk,计算路径的距离度量,度量最小的作为SOVA算法的幸存路径。同时,状态Sj还对应一条待选路径。将幸存路径的度量定为M1,相应的待选路径定为M2,可以得到幸存路径的错选概率为:PSK=exp(-M2)exp(-M1)+exp(-M2)

=11+exp(M2-M1)

=1exp(Δ)(6)其中,Δ=M2-M1≥0,表示传输的不可信度。

已经存储的幸存路径的错误概率为:PjPj(1-PSK)+(1-Pj)PSK

j=j1,…,jn(7)子译码器之间迭代的对数似然比为:Lj=lg1-PjPj(8)SOVA算法是基于序列的译码算法,译码延迟和计算复杂度较低,在硬件上易于实现,但性能与BCJR算法有较大差距。

1.3BCJR算法

BCJR算法因为其计算量大和硬件实现高复杂性而一直没有得到重视,直到1993年Turbo码的发明者在其最初的Turbo迭代译码方案中采用了修正的BCJR算法,人们才重新开始研究该算法,并证明了此算法是实现Turbo迭代译码最好的次最优算法[8]。

BCJR算法是基于码字格图的软输出译码算法,目的是使比特错误概率最小[9]。根据MLD原理,译码器的主要任务是计算在接收采样条件下不同发送符号的概率,即P(uk=u|r),r为接收序列,然后将概率值最大的信息符号判决为译码值。=arg{max(P(uk=u|r))}(9)其中,后概率:P(uk=u|Y)=∑(s',s),uk∈Up(s',s,r)(10)其中,s',s分别表示k-1和k时刻的状态。将p(s',s,r)分解成下面的格式:p(s',s,r)=αk-1(s')βk(s)γ(s',s)(11)前向递推αk(s)、后向递推βk-1(s')以及分支度量γ(s',s)的计算公式如下:αk(s)=∑s'αk-1(s')γk(s',s)

βk-1(s')=∑sβk(s)γk(s',s)(12)

γ(s',s)=P(s,r/s')=P(uk)*P(r/uk)通常,为了降低计算量,实际中会采用对数域的BCJR算法,即Log-MAP算法。

算法驮佣缺冉先绫1所示,v是寄存器个数。

1.4改进的减少搜索T-BCJR算法

T-BCJR算法是广度优先算法,其基本思想是在BCJR算法的基础上叠加阈值计算[10]。如果在计算前向度量的过程中得到的值很小,则对路径的选择作用不大,因此可以预先设定阈值,度量小于阈值的状态节点可以舍弃,而度量大于阈值的状态节点则保留,递推搜索沿着被保留下来的节点进行运算。同样,后向递推也沿着保留的节点进行运算。这样减少了需要搜索的路径,达到节省运算量的目的。

T-BCJR算法并不能根据信道的具体条件进行调整,针对算法的局限对T-BCJR算法进行改进,即在原算法的阈值T中添加与信道相关的量ΔT,使得阈值T达到自适应的目的。文献[10]中提出了一种删除纠错算术码解码树中状态节点的方法,将这种思想运用到删除BCJR算法中路径贡献小的状态节点上。由文献[10]得到如下表达式:Δ T≈C21N0(13)在高斯白噪声信道条件下: Δ T=12C21 [1-log2 (1-ε)]・10-SNR10(14)其中,信噪比SNR=Eb/N0,常数C1与正确状态被删除的概率Prc有关。实验中,假定Prc=0.001,则C1=2.185,单位是dB。在对数BCJR(Log-MAP)中,取ΔT的对数。

2基于SOVA与改进T-BCJR算法的组合译码算法SOVA算法与BCJR算法的输出都需要计算概率的对数似然比。因此,这两种算法的软输出信息都可以作为另一种算法的输入来进行计算,两种算法交互使得整体计算量降低,并且系统的性能也可以得到保证。算法流程如图2所示。

如果错误数据数量大于N,就将SOVA译码得到的错误数据帧信息输入到改进的T-BCJR算法中,并且将SOVA迭代产生的外部软输出信息作为T-BCJR算法的先验信息,进一步迭代译码,否则进行BCJR译码。由于该算法是在SOVA算法上叠加少量的错误帧信息的T-BCJR译码,复杂度与BCJR算法相比小很多,译码的性能也与BCJR算法接近。

3仿真结果分析

本文仿真实验所用的连续相位调制信号是四进制L=2、h=1/2的信号,脉冲函数为升余弦信号,仿真信道为高斯白噪声信道。

误比特率随信噪比变化的曲线,图4则是帧长为1 024时误比特率随信噪比变化的曲线。可以看出,在相同信噪比条件下,改进的译码算法误码率要优于SOVA算法。在误比特率达到10-4时,改进译码的信噪比只比BCJR算法低0.15 dB左右。另外,由图3、图4对比可以看出,随着数据帧长的增加,算法整体性能会变好。

另外,在低信噪比时,SOVA译码的误码率低,得到的错误帧数据较多,此时改进译码算法的复杂度是在SOVA

上一篇:阅读推广促进大学生思想政治建设的探讨 下一篇:中国网文被部分老外热捧:胜在“落后”上