联合译码范文

2024-08-10

联合译码范文(精选7篇)

联合译码 第1篇

在无线通信系统中,由于收发机或者反射物的移动,使得从发射机到接收机的无线信道是时变的,从而对通信系统的性能造成严重的影响。同时由于发射机所发射的信号经过多个反射物反射到达接收机,使得信道具有多径传播特性,即表现为频率选择性衰落,从而会对高速传输系统造成符号间干扰(ISI)。

通过引入OFDM调制,并再OFDM符号前插入循环前缀,从而将一个频率选择性衰落的ISI信道划分成多个频率平坦的无ISI子信道,且各个子信道之间是互相正交的,各个子信道上所接收到的符号为该子信道上传输的符号与信道响应的乘积。接收机只要通过一阶均衡器即可实现对信道的补偿,均衡器的复杂度大为简化。但正是因为OFDM系统中将一个数据符号只放在一个OFDM符号的一个子信道上进行传输,从而衰落严重的OFDM符号或子信道中接收到的符号信噪比较低,降低了系统的整体性能[1]。

对于OFDM系统的上述问题,可以采用自适应通信或分集两种方法来进行补偿。在自适应通信系统中,发射机根据信道的状态挑选出衰落较严重的子信道和OFDM符号,通过降低调制的阶数或者将其空闲可以提高接收机解调的正确率。但这种方式需要接收机能够准确估计并实时反馈信道状态。

分集方法中,将每个数据符号在频率、时间和空间域进行扩散,使一个符号在多个子信道,多个OFDM符号或多个天线上进行传输,从而减小深衰落的影响。系统的分集阶数与误码率曲线的斜率成正比,于是分集阶数越高,则系统的误码率性能越好[2,3]。

通过对OFDM系统各个子信道上所传输的数据进行纠错编码,在各个子信道中所传输的数据间建立一定的相关性,以获得一定的频率分集[4,5]。但局限于纠错编码的自由距离较小,且编码产生的相关码字没有分散到不相关的子信道中,使得系统所能利用的频率分集有限。文献[6]通过对纠错编码后的数据进行比特交织,编码产生的相关码字被分散到不相关的子信道中传输,但系统所能获得的频率分集阶数受限于纠错编码的自由距离。文献[7]设计了一种线性预编码(LP)器,对各个子载波上传输的数据进行编码处理,以获得频率分集增益。文献[8,9]设计了一种LDC编码,通过编码将数据符号扩散到时频的二维空间,从而不仅能够获得频率分集增益还能够获得时间分集增益。文献[10]将LDC编码应用到了多天线系统中,在空间和频率的二维空间内进行编码,以获得空间和频率分集增益。对于上述的LP和LDC,通过增大编码器,系统可以充分利用信道的分集增益,但相应的译码器复杂度也随之增大。因此从系统可实现性的角度考虑,只有较小的编码器可以应用,从而限制了系统能够获得的分集增益。

本文通过对纠错编码和LDC编码进行联合设计,作为OFDM系统的信道编码方式,构造了联合编码OFDM系统(JC-OFDM),从而以较低复杂度的纠错编码和LDC编码来充分利用信道的时间和频率分集增益,使得系统不仅能够对抗信道的频率选择性衰落,还能对信道的时变衰落进行补偿。通过在纠错编码和LDC编码之间设置交织器将纠错编码产生的相关码字分散到不同的LDC编码簇中,使得联合编码序列的自由距离为纠错编码的自由距离与LDC编码自由距离的乘积[11]。同时对LDC编码后的符号进行交织,使得联合编码产生的相关码字分散到不相关的OFDM符号的不相关子信道中进行传输。理论分析和仿真结果表明,这种联合编码算法能够获得时间分集增益和信道的全频率分集增益。针对上述的联合编码算法,本文还设计了一种低复杂度的迭代译码算法,通过SISO LDC译码器和纠错译码器之间的迭代处理,获得接近理想的译码性能。

1 系统模型

本文所讨论的LDC和纠错联合编码系统是基于如图1所示的OFDM调制解调器的,于是本节中先对OFDM调制解调原理进行简单描述。

图中Uk(i),i=1,2,…,N是联合编码器产生的第k个OFDM符号矢量中的元素,其中N是调制器的子载波数。于是Uk(i)被映射到OFDM调制器的各个有用子载波上并通过IFFT变换来实现多载波调制,得到的时域符号可以表示为xk(n),于是有:

时域的符号在发射之前需要加入一个长度为Ncp的循环前缀(为了简化起见,图中没有表示)以消除多径造成的符号间干扰,保持子载波间的正交性。

发射机和接收机之间的信道时域冲激响应可以用抽头延迟线模型表示[12],每个抽头之间的时间间隔为信号的采样周期Ts。

其中,L为信道的径数,l为径序号,hl(t)为第l径的信道系数,这是一个广义窄带复高斯过程,且不同径的系数之间互相独立。另外,本文假设信道是准静态的,信道系数在一个OFDM符号时间内恒定不变,而在不同的OFDM符号间互相独立的变化。于是第k个OFDM符号内第l径的信道系数记为hk,l。

在接收端对接收到的符号进行OFDM解调前需要去循环前缀,则接收到的第k个符号去循环前缀后可以表示为:

其中,η(n)为高斯白噪声信号的时域采样值,噪声的均值为0,方差为δ02。

对接收到的符号进行FFT变换,得到:

将式(4)用矩阵的形式表示,则可得到接收的符号矢量与发射的符号矢量之间的关系为:

其中,Uk和分别表示发射和接收到的第k个OFDM符号矢量;Hk是第k个OFDM内信道频域响应矩阵,这是个对角矩阵,其对角线上的元素为相应子载波上的信道响应;N为噪声矢量。

2 联合纠错编码

本文所设计的分簇LDC纠错联合编码器的结构如图2所示。信源产生的信息序列按照每个OFDM所能传输的信息量leni进行分块,作为纠错编码一次处理的信息数据块,用Ak来表示第k个数据块。于是纠错编码得到的编码序列Bk可以表示为:

其中,Gec是个leni×(N×ml)纠错编码矩阵。纠错编码后得到的编码序列长度为(N×ml),这里的N和ml分别是子载波数和子载波调制阶数。在本文的讨论中,纠错编码我们以卷积编码为例进行讨论,在实际应用中对联合编码器稍作改动即可将纠错编码器替换为turbo码,LDPC编码。在进行星座映射前,编码序列需要进行交织处理,从而将相邻的相关码字映射到不同的星座符号和不同的LDC编码簇中。交织处理可以表示为:

星座符号映射时,根据所选择的调制阶数将交织得到的序列中连续的ml个比特映射成一个星座符号。得到的星座符号矢量记为Sk,其长度为N。则针对不同的调制方式,星座映射关系可以表示为[13]:

其中,

分簇LDC编码器在时域和频域的二维空间内对映射后的符号进行编码,因此并行LDC编码器先将连续的V个编码矢量中的符号根据其序号进行分簇,得到G个M×V的符号簇,记为Cgldc,g=1,2,…,G,编码得到的矩阵记为Ugldc,于是编码过程可以表示为[8]:

其中,si是一个编码簇Ct,gldc中的第i个信息符号;Q=MV是一个簇内的符号数;Ai是对应于第i个符号的M×V的LDC编码矩阵,用于将一个符号映射到一个时间和频率的二维空间。编码矩阵可以由下式来进行构造:

其中,D是个M×M对角矩阵,D=diag{1,ej2π/M,…,ej2π(M-1)/M};П是个M×V的移位矩阵,通常M>V,于是П可以表示为:

将LDC码字和编码矩阵组织成矢量的形式,分别记为vec(C)和vec(Ai),则式(9)可以改写为:

其中,A=[vec(A1),vec(A2),…,vec(AQ)]是矢量化LDC编码矩阵。

各个分簇LDC编码器编码得到的符号按顺序写入数据缓冲区中重新组成一个N×V的矩阵,记为U,则U与各个LDC编码器产生的符号矩阵关系可以表示为:

U中的各列记为Uk则对应于第k个OFDM符号内所传输的符号矢量。最后由交织器2对并行分簇LDC编码器产生的符号矢量进行交织后送入OFDM调制器进行多载波调制后发射。通过交织2的处理,将联合编码产生的相关符号映射到不相关的子载波中,以获得最大的频率分集阶数。交织器2的交织处理可以用矩阵表示为:

其中是经过交织2处理得到的第k个符号矢量。

3 迭代译码算法

为了降低系统的实现复杂度,本文提出了一种联合迭代译码算法,通过对在LDC译码器和纠错译码器之间进行迭代处理,最终得到各个信息符号的判决输出。联合迭代译码器的结构如图3所示。

接收机内的OFDM解调器处理后得到各个OFDM符号矢量估计结果,记为可以表示为:

其中,H为信道频域响应,是个对角矩阵,其对角线上的元素为对应子载波上的信道响应。Nk为第k个OFDM符号的信道噪声矢量。

解调的结果首先要进行解交织处理,以补偿交织器2的处理,表示为:

在进行LDC译码前,还需要对解交织器2输出的连续V个符号矢量进行LDC编码簇重构,记为于是有:

其中,Hgldc为与第g个簇内的各个符号对应的信道响应,为对应元素相乘运算。

LDC译码器根据LDC编码簇内的符号和的先验概率值,对外部对数似然比进行计算。

其中ldec(Bk)是由交织器1反馈的SISO纠错译码器估计的各个符号的外部对数似然比。SISO LDC译码器的细节将在后面进行详细描述。

各个LDC译码器产生的根据式(13)的形式构造出一个(N×ml)×V的矩阵,记为其每列对应于一个纠错编码块,由解交织器1对其进行解交织处理,按照纠错编码后序列的顺序进行恢复,得到的序列记为lldc(Bk),则根据式(7)可以得到解交织处理可以表示为:

SISO纠错译码模块是对应于编码器中所选择的纠错编码方式的一个译码器,根据输入的纠错编码序列的先验概率对信息比特的外部对数似然比进行计算,记为edec(Bk,l(i))。对于本文所讨论的卷积编码,这里的译码器可以采用BCJR算法,软输出Viterbi算法(SOVA),Log MAP或max-Log-MAP算法。其中,BCJR和Log-MAP译码器是最优的译码器,在复杂度方面Log-MAP的复杂度比BCJR的复杂度低,是SOVA算法的四倍。

本文设计的联合迭代译码器由两个SISO译码器[9]进行迭代处理,各自输出的外部对数似然比作为对方的先验概率,从而计算新的对数似然比,经过若干次迭代以获得信息序列的准确判决。整个迭代处理过程包括如下几个步骤:

a)初始化阶段

(1)通过解交织器2和分簇处理得到每个LDC编码簇的估计结果

(2)对输入SISO LDC译码器的码字矢量的先验概率设为0,即

b)迭代处理阶段

(3)由SISO LDC译码器对簇内的符号的估计结果和码字矢量的先验概率进行计算,得到每个码字的外部对数似然比

(4)将各个簇内码字的外部对数似然比的计算结果进行重组,构造出各个OFDM符号矢量元素的外部对数似然比矢量,

(5)对各个OFDM符号矢量进行解交织处理,得到解交织后的各个元素的外部对数似然比矢量,lldc(Bk);

(6)将上一步计算的外部对数似然比矢量lldc(Bk)作为SI-SO纠错译码的先验概率,根据所选择的SISO纠错译码算法,计算出每个码字的外部对数似然比edec(Bk)和每个信息位的外部对数似然比edec(Ak);

(7)将迭代次数与迭代的门限进行对比,若迭代次数小于门限值时,进入下一步;若迭代次数达到门限值,则对信息序列的外部对数似然比进行判决,得到信息位的估计结果,A'k=sign(edec(Ak)),并结束迭代译码处理;

(8)将SISO纠错译码器计算的每个码字的外部对数似然比edec(Bk)进行交织处理,得到用作SISO LDC译码处理的先验概率,并跳转到第4步执行。

4 性能分析

在本节中,我们将对所设计的LDC和纠错联合编码器的自由距离,以及能获得的频率和时间分集性能进行分析,并通过理论分析结果表明本文所设计的联合编码器能获得全部频率分集同时能够获得额外的V阶时间分集。

4.1 联合编码自由距离分析

根据第2节的描述,D中总共有M个非零元素,即每个符号的LDC编码矩阵中有M个非零元素,则LDC编码的自由距离为dldcfree=M。另外,纠错编码产生的相关码字通过交织器1的处理被分散到各个LDC编码簇中,且各个LDC编码簇互相独立的进行编码,于是联合编码的自由距离为纠错编码的自由距离与LDC编码自由距离的乘积,即:

4.2 分集性能分析

将接收到的V个OFDM符号矢量按下式的形式组成一个NV×1的矢量,记为

按式(21)的方式同样可以根据连续发送的V个符号构造出符号矢量于是根据式(15)可得到之间的关系为:

其中,分别是按照式(21)的形式根据V个OFDM符号内的信道响应和噪声构造成信道响应和噪声矢量。信道响应矢量与时域响应矢量之间的关系为:

其中,FC是NV×NV扩展的FFT矩阵,与N点FFT矩阵的关系为表示N点的FFT矩阵,是V个OFDM符号是内时域冲激响应组成的矢量,即

下面我们对接收机检测出错的概率进行分析,考虑对应于两组不同的信息序列矢量的码字矩阵于是他们的成对差错概率PEP(Pairwise Error Probability)为:

根据第2节的描述,码字矢量的距离不小于dJCfree,于是PEP存在上界:

下面我们考虑将间距离为最小的情况,将他们中不同的元素组成的子矢量记为将不同的元素在矢量中位置的序号记为ip,p=1,2,…,dJCfree,则ip=kN+i;表示在l个OFDM符号内的第i个子载波上。同时将接收到的码字和信道矢量和噪声矢量也作相应的调整,只保留第ip,p=1,2,…,dJCfree个元素值,构成dJCfree×1的矢量,分别记为则有:

对也存在上述关系。于是根据式(25)有:

其中,R(x)表示取x的实部。

于是PEP的上界为:

其中,r和γa分别为矩阵E(|Λ|2)的秩和非零特征值,ρ=1/δ02。可见系统的频率分集增益为r。下面将对矩阵E(|Λ|2)的秩进行分析。

根据矩阵秩的重要性质,我们有:

其中的是个对角矩阵,且对角线上的元素都为非零值,显然矩阵的秩为dJCfree。下面还需要对的秩进行分析。

根据式(23)和式(26),则有:

其中FCs是由FC的第ip行组成的子矩阵。

即信道的自相关矩阵由V×V个相同的子矩阵组成,每个子矩阵都是各个符号周期内信道之间的互相关矩阵。另外,由于多径信道各径系数之间互不相关,各个OFDM符号之间的信道响应也互不相关,则式(32)表示的矩阵是满秩的,即:

代入到式(29)可得:

即系统所能获得的分集阶数是联合编码的自由距离和信道径数的最小值。由于在联合编码设计时保证dJCfree>L,于是:

可见系统能够获得的频率分集阶数为L,时间分集阶数为V,即系统能够充分利用信道所提供的L阶频率分集且LDC编码能够额外提供V阶的时间分集。

5 仿真验证

为了对本文提出的LDC和纠错联合编码及联合迭代译码算法的性能进行验证,本节参考DVB-T的应用场景[13],将采用Matlab对多种不同的信道环境下算法的性能进行仿真。另外我们还对基于纠错编码的OFDM系统(COFDM)和基于LDC编码的OFDM系统(LDC-OFDM)进行仿真并用作与JC-OFDM性能进行比较。

仿真中我们采用(2,1,7)的卷积纠错编码和M=8,T=4的LDC编码。于是根据第4节的分析,联合编码所能获得的最大频率分集为80,时间分集为4;相应的对于COFDM和LDC-OFDM来说能获得的频率分集分别为10和8,时间分集分别为1和4。可见联合编码在能获得的分集阶数有显著的优势。仿真中采用的OFDM调制系统参数如表1所示。

仿真中为了避免信道估计误差影响对联合编码和译码算法的性能的分析,我们假设接收机能够获得信道参数的理想估计结果。

为了对联合编码在多径信道中的频率分集性能进行分析和验证,我们设计了四种信道进行仿真。各个信道的主要参数如表2所示,同时各径的延时在最大径延时范围内随机分布,各径能量服从指数分布。

同时为了确定联合迭代译码所需的迭代次数,我们基于信道3的多径环境,在不同的信噪比条件下对JC-OFDM系统的误码率性能与迭代次数的关系进行仿真,仿真结果如图4所示。从图中可以看出经过10次迭代已经足够使系统的BER降低到最低值,于是在后续的仿真中可以设置迭代次数为10次。

JC-OFDM系统在上述的四种信道中的误码率性能如图5所示。从图5中可以看出,对于信道1、信道2和信道3,虽然具有不同的径数和不同的最大径延时,但他们所能提供的分集都能够被联合编码充分利用,因此在这三种信道中JC-OFDM系统性能相近。而对于信道4,信道的离散时延扩展为120,超出联合编码所能利用的80,即联合编码不能充分利用其提供的分集阶数,从而造成了JC-OFDM性能的恶化。

为了对联合编码与卷积编码和LDC编码在多径信道中的性能对比,我们在信道1和信道3下对三种OFDM系统的性能进行仿真,仿真结果如图6和图7所示。

从图6中可以看出,信道1条件下JC-OFDM和COFDM系统的性能相近,这是因为联合编码和卷积编码都能充分利用信道的频率分集增益;另外由于联合编码能够利用时间分集增益,因此JC-OFDM性能上有略微优势。LDC-OFDM系统由于没有编码增益,且不能充分利用信道的频率分集增益,因此和JC-OFDM和COFDM相比性能差6 d B。

信道3与信道1相比,信道的离散时延扩展增大到75,大大超出了COFDM和LDC-OFDM所能利用的范围。从图7中可以看出,COFDM与JC-OFDM相比性能差近4 d B,同时LDC-OFDM与JC-OFDM相比性能差近8 d B。可见通过联合编码,能够显著提高系统利用信道提供的频率分集能力,改善系统在多径信道中的性能。

另外,为了对联合迭代译码的性能进行验证,我们在信道3下将基于联合迭代译码的JC-OFDM系统误码率性能,与基于ML译码和LDC、纠错独立译码JC-OFDM系统误码率性能进行对比。仿真结果如图8所示。

从图8中可以看出,联合迭代译码算法的性能与ML译码性能相近;而独立译码中由于没有置信度的迭代增强过程,译码结果的BER较高。

6 结语

本文针对OFDM系统中的频率分集问题进行研究,设计了LDC和纠错联合编码算法。理论分析和仿真结果表明,通过联合编码系统能够同时获得时间分集和频率分集,且频率分集的阶数为纠错编码和LDC编码自由度的乘积。从而使得JC-OFDM系统与基于其他编码算法的系统相比,在严重频率选择性衰落信道中的性能得到了显著的提升。另外,本文还针对联合编码设计了一种低复杂度的联合迭代译码算法,通过LDC译码器和纠错译码器之间进行迭代处理获得与ML译码相近的性能。

摘要:针对OFDM体制在严重频率选择性衰落信道的应用场景提出一种线性弥散编码(LDC)和纠错(ECC)联合编码算法,并为该编码算法设计了一种低复杂度且与最大似然译码性能相近的联合迭代译码算法。实验结果表明,通过联合编码系统能够同时获得时间分集和频率分集,且频率分集的阶数为纠错编码和LDC编码自由度的乘积,从而使得JC-OFDM系统与基于其他编码算法的系统相比,在严重频率选择性衰落信道中的性能得到了显著的提升。同时,所设计的联合迭代译码算法具有与ML译码算法相近的性能。

联合译码 第2篇

但是独立编码所需要的理论条件:(1)任意长度的码字。(2)对于编译码的复杂度和时延没有限制,在实际情况中并不是完全成立的,无法达到最佳效果。因此信源信道联合编译码日益受到人们的关注。

1 HMM信源估计算法

对于一个信源,可以用马尔科夫模型λ进行描述,其信源自身的符号及其概率分布、转移概率矩阵,可以分别用有限状态集合S={s1,s2,s3,…,sN}、初始概率分布={πi}和状态转移概率矩阵AN×N={aij}描述;而对于信道噪声,可以提前加入到信源中,将加入噪声的符号看作是有限观察符号集合O={o1,o2,o3,…,oN},而经过此番变化的噪声影响,用观察符号发射概率矩阵BN×M={bik}进行描述。文献[1]在接收端未知信源概率结构的情况下,通过Baum-Welch算法可以估算出的信源序列概率结构计算出信源冗余。需要说明的是,虽然将信道噪声提前加入到了信源当中,使得噪声对于整个系统的影响变得难以准确计算,但在译码过程中不断地估计、更新信源参数,在整个信噪比波动范围(即噪声变化)不大的情况下,可以通过估计得到相对准确的观察符号发射概率矩阵BN×M={bik},也即噪声对于信源的影响。

基于HMM信源估计联合译码算法的系统框图如图1所示。

其中信源为带有噪声干扰的隐马尔科夫模型如图2所示。

由于信号在信道中传输是以bit形式传输,则定义有限观察序列O=(o1,o2,o3,…,oK),ok∈(0,1),就是经过信道输出、接收端接收到含有噪声污染的序列;信息序列U=(u1,u2,u3,…,uK),uk∈(0,1);k时刻状态为sk∈(0,1),那么改进的隐马尔科夫信源估计算法可以描述为:

前向变量αk(i)

αk(i)=Ρ{sk=i|o1,o2,o3,,ok,λ}=sk-1ukαk-1(j)Ρ(uk,sk=i|sk-1=j,λ)Ρ{ok|uk}Ρ{ok|o1,o2,o3,,ok-1,λ}(1)

其中

Ρ{ok|o1,o2,o3,,ok-1,λ}=sk-1ukskαk-1(j)Ρ{uk,sk=i|sk-1=j,λ}Ρ{ok|uk}(2)

P{ok|uk}=P(a00b00+a01b10+a11b11+a10b01) (3)

后向变量βk(i)

βk(i)=Ρ{ok+1,ok+2,ok+3,,oΚ|sk=i,λ}Ρ{ok+1,ok+2,ok+3,,oΚ|o1,o2,o3,,ok,λ} (4)

ek={sk-1=i,uk,sk=j}为第k条转移路径,则每条路径发生概率P(ek)为

Ρ(ek)=Ρ{sk-1=i,uk,sk=j|o1,o2,o3,,ok,λ}=αk-1(i)Ρ{uk,sk=j|sk=i,λ}Ρ{ok|uk}βk(j)Ρ{ok|o1,o2,o3,,ok-1,λ}(5)

则转移路径概率P(si,u,sj|λ)为

Ρ(si,u,sj|λ)=1Κk=1ΚΡ(ek|λ) (6)

估重估公式为

Ρ¯(sj,u|si,λ)=Ρ(si,u,sj|λ)uksjΡ{u,si,sj|λ} (7)

由上可得信源的冗余

LLRe(uk)=lnsk-1skαk-1(i)Ρ{uk=1,sk=j|sk-1=i,λ¯}Ρ{ok|uk=1}βk(j)sk-1skαk-1(i)Ρ{uk=0,sk=j|sk-1=i,λ¯}Ρ{ok|uk=0}βk(j) (8)

2 改进的多元LDPC译码算法

文献[2,3]中有将LDPC与HMM重估相融合的迭代算法。而相比二元LDPC码,多元LDPC具有更好的性能以及更广泛的应用。

多进制LDPC译码算法的基本思路是通过消息的迭代,即校验节点接收来自变量节点的变量信息在经过求和运算后传递回与之相邻的变量节点,而变量节点则将接收到的来自校验节点的校验信息经过求积运算后返回校验节点,同时变量节点结合接收译码前端的解调信息得到码字符号的判决值,最后通过硬判决得到译码符号。现在利用隐马尔科夫信源估计,在译码时加入信源的残留冗余信息来增加多进制LDPC译码器的纠错能力,该联合译码算法网格图[4,5]如图3所示。

算法步骤描述如下:

(1)译码初始化。在GF(q)域的多进制LDPC码译码器端,对于接受序列O1qΝ(o1,o2,o3,…,oqN)(其中前kq位是多进制LDPC码信息位符号对应的比特序列,O(k+1)qqΝ(o(k+1)q+1,o(k+1)q+2,o(k+1)q+3,…,oqN)是校验位符号的比特序列),利用隐马尔科夫信源估计方法估算出来的冗余信息{LLRe(ui),1≤ikq}对信道译码端接收的比特序列进行对数似然比修正

ΙLLR(oi)=(1-μ)2δ2oi+μΙLLRe(ui) (9)

ΙLLR(oi)=2δ2oi (10)

式中,δ2为加性高斯噪声(AWGN)的方差;μ是信源估计修正系数,该参数由误码率参数调控,自适应可变的。

由于是对比特序列进行的修正,在GF(q)域中需要将其转换为相应的有限域中的符号,则转换后的似然值为

ΙLLR(Ri)=k=1log2qΙLLR(oiq+k) (11)

由于在第一次译码迭代时校验节点没有得到由变量节点传递过来的任何关于输入码字的信息,所以校验节点出传递给信息节点的外信息为ILLR(rij)=0。

(2)尝试译码。对接受的序列进行硬判决,即与校验矩阵相乘,结果得到一个零向量则说明是一个合法的码字,译码成功;否则进入校验节点和变量节点直接的迭代过程,直到得到一个合法码字,判定译码成功或达到最大迭代次数,判定译码失败。

(3)信道信息反馈。在完成译码过程后,更新统计的信道码误码率,将更新后的数据传递至信源估计器,便于调整信源重估器的修正系数μ

3 仿真实验结果

在多元LDPC译码算法中,文献[4,5]所采用的FFT-BP算法相比其他的译码算法如BP、LOG-BP、BP-MAX等,拥有复杂度大幅降低且性能损失不大的优势,因此在此采用该算法作为多元LDPC的译码算法。

在高斯白噪声情况下,调制采用BPSK调制,码长为768 bit,码率为0.5,与基于GF(4)的FFT-BP算法结合。联合HMM信源重估和多进制LDPC码,与不进行信源重估的性能相比有所提升,如图4所示。

引入修正参数μ后,对不同的μ值做仿真,当μ为0.5时,等同上述算法。可以发现μ取值的不同对算法的影响较大,在信噪比较低时,往往利用隐马尔科夫算法的估算能力对译码过程有较大的提高,通过图5可以看出,在不同的信噪比条件下,系数不同所带来的性能也不同。因此在能够估计信噪比的情况下,通过改变设定的μ值可以实现性能的提升。

4 结束语

由仿真结果可以看到,总体上重估算法在低信噪比时比较有效,在高信噪比时由于译码已经相当可靠,所以对性能有一定的损失。因此在不同的信道条件下采用不同的修正系数,在整体上可以获得一定的增益。

摘要:采用隐马尔科夫模型对信源估计,对基于多进制LDPC码的联合信源信道译码算法展开研究。该算法通过对传统的多进制LDPC译码算法的改进,在迭代过程中加入通过估计算法得到的信源冗余,校正了迭代软信息,提高译码性能。仿真结果表明,在AWGN信道中,改进算法相比传统译码算法性能优越。

关键词:隐马尔科夫模型,多进制LDPC码,信源信道联合译码

参考文献

[1]殷玮玮,吴乐南.基于HMM的信源-信道迭代联合译码[J].通信学报,2006,27(7):61-63.

[2]LIU Guoyin,LU Jianhua,WU Youshou.LDPC-based jointsource-channel coding scheme for multimedia communica-tion[C].The 8th International Conference on Communica-tion Systems,ICCS,2002:337-341.

[3]DAVEY M C,MACKAY D J C.Low-Density Parity-CheckCodes over GF(q)[J].IEEE Communications Letters,1998,2(6):165-168.

[4]DAVID D,MARC F.Decoding algorithms for non-binaryLDPC codes over GF(q)[J].IEEE Transactions Letters,2007(8):1611-1618.

联合译码 第3篇

1 LDPC码的基本原理

1.1 低密度校验码的Tanner图模型

低密度校验码(low-density parity-check codes)是一种线性分组码,之所以称之为低密度校验码是因为它的校验矩阵H={hij}(n-k)×n是稀疏矩阵,即非零元素即在GF(2)域上为1的个数占总元素个数的比例非常小。众所周知线性分组码可以由他的生成矩阵G={gij}k×n决定,给定生成矩阵G,码字集合可以表示为

其中,gi为生成矩阵G的第i行。等价地,线性分组码也可以由校验矩阵H来决定,给定校验矩阵码字集合可以表示为

其中,hi为校验矩阵H的第i行。因此选定了校验矩阵,那么这个线性分组码也就确定了。

正则低密度校验码的校验矩阵是一个正则二部图的邻接矩阵,而非正则低密度校验码的校验矩阵是一个非正则二部图的邻接矩阵,这正是他们名称的由来。而由于Tanner首先将低密度校验码用二部图来表示,因此在编码理论界通常把表示低密度校验码的2部图称为Tanner图。图1给出了(8,4,4)线性分组码的矩阵及其Tanner图1模型。

2 LDPC码的译码

Gallager提出了两种译码算法。第一种属于硬判决译码算法[6],它适用于BSC信道。第二种属于软判决译码算法,也就是现在所熟悉的和积译码算法。这两种算法都属于消息传递算法,在本节仅对后一种译码算法作讨论。

2.1 LDPC码的软判决译码

一般线性分组码的译码是一个NPC问题[7]。因此,有时寻找一种有效的译码算法甚至比构造一个好码更为重要。下面介绍的和积算法(sumproduct algorithm)就是一种非常有效的译码算法。

积算法是一种迭代概率译码算法。每一迭代都需要估算码字中各个比特关于接收码字和信道参数的后验概率,因此准确地说和积算法是一种逐比特MAP算法,而整个迭代过程则可以看成在由校验矩阵决定的Tanner图上进行的消息传递过程。在图2所示的Tanner图中,zi表示第i个校验节点,xj表示第j个变量节点。

在一轮迭代中,每个变量节点xj向与其相连的每个校验节点zi发送变量消息Q,接着,每个校验节点zi向与其相连的每个变量节点发送校验消息R(对二元低密度校验码而言,α∈{1,0})。变量消息Q是对条件概率-在已知与变量节点xj相连的其他校验节点发送的校验信息{R,k∈M(j)i}的条件下,xj取值为α的概率-的估值;而校验消息是对条件概率-在已知变量节点取值为α以及与校验节点zi相连的其他变量消息{,k∈N(i)j}的条件下,校验关系成立的概率-的估值。每轮迭代之后,进行译码尝试(tentative decoding),即对每一比特估算最大后验概率,由最大后验概率进行硬判决译码。反复进行迭代译码直到满足所有校验关系,或迭代次数超过某个预先设定的值(宣告译码失败)。

2.2 基于对数似然比测度的LDPC码的置化译码

基于对数似然比测度的和积算法一般采用双曲正切函数作为核心运算[8],但是双曲正切函数的硬件实现相当困难。因此寻找一种基于对数似然比测度并且硬件实现容易的核心运算就显得相当重要。文献[9]提出了一种基于似然比测度的核心运算,此后文献[9]又将这种核心运算转化到对数似然比域上,从而避免了双曲正切运算。这种核心运算适当变形后可以通过查表法来实现,显然它满足需要。下面给出这种基于对数似然比测度的核心运算。设U是二元随机变量,定义运算

基于对数似然比测度下,变量消息和校验消息分别记为Vm,n和um,n,和积算法的两个更新法则可以写为

水平操作

垂直操作

其中un对AWGN信道而言等于2yn/σ2。

显然,式(3)和式(4)均可以采用前后向算法实现。以水平操作为例,设平均行重为dc,则每个校验节点一次水平操作需要3dc-6次L(U⊕v)操作。

3 量化方案和仿真结果

AWGN信道满足对称性条件[10],因而对数似然比消息un、um,n和vm,n大致呈对称分布,适宜采用对称量化处理。为了确定合理的量化区间,对一个随机构造的(1008,3,6)正则LDPC码的变量消息和校验消息进行了统计,其统计特性如图3和图4所示。图3和图4中从上到下依次为1~8轮迭代后变量消息和校验消息的统计特性。从图3和图4可知,变量消息和校验消息的取值基本在区间[-10,10]内,因此选取±10作为限幅电平是合适的。

经过大量仿真发现,若仅对接收变量进行量化,采用不同量化方法对译码性能影响不大,而均匀量化的硬件实现较非均匀量化更容易,所以在本文中对接收变量均采用5比特均匀量化。

基于以上分析,给出如下3种量化方案。

因此采用改进后的量化和积算法,LDPC码译码器的硬件实现变得非常容易,且译码性能损失很小。该实现方法对LDPC码的实用化有较大意义。

4 结束语

低密度奇偶校验码是能够逼近Shannon容量限[11]的好码,它的诸多优点,使得低密度校验码的研究成为信道编码理论界的热点之一。自上世纪90年代中期低密度校验码的重新发现,对它的理论研究已经取得丰硕的成果,有关低密度校验码的应用方面也展开了越来越深入的研究。

摘要:低密度校验码是一种能逼近Shannon容量限的渐进好码,在长码时其性能甚至超过了Turbo码,其译码采用了具有线性复杂度的和积算法,复杂度大大低于Turbo码,并且几乎所有错误都是可检的。这里着重介绍LDPC码软判决译码的基本思想,以及LDPC码的量化译码方案,提出了一种高效的量化译码实现方案。由于低密度校验码具有诸多优点,它在信息可靠传输中的良好应用前景已经引起世界各国学术界和IT业界的高度重视,成为当今信道编码领域最受瞩目的研究热点之一。

解读《达·芬奇译码》 第4篇

近来读了美国学者吉姆·加洛, 蒂莫西·P·琼斯和阿普里尔·威廉姆合著的《达·芬奇译码》, 对书中许多概念性的词语很感兴趣, 如五角星, 塔罗牌, 圣杯, 圣血和圣杯, 玫瑰符号一类, 都暗含着独特的含义。《达·芬奇译码》是对丹·布朗的《达·芬奇密码》的继承和批判, 《达·芬奇密码》中, 五角星是一种符号, 14世纪《高文爵士和绿衣骑士》中, 高文爵士盾牌上的五角星符号代表着骑士的精神和品质, 即慷慨大方, 彬彬有礼, 纯洁高雅, 机智勇敢和虔诚孝敬。到20世纪, 它成为一种保护性符号, 随后演变成现代巫术崇拜中的“五大元素”, 土、空气、水、火和灵魂。五角星从什么时候指代魔鬼, 现已无从考究。据说, 法国术士埃利法斯·利瓦伊第一次宣称, 倒置的五角星是一种超自然的魔力符号。安东·拉维于1966年创建了撒旦教, 从而使得五角星臭名昭著。《达·芬奇密码》中, 索菲在玩塔罗牌时告诉兰登, 塔罗牌中的五角星是她的“指示器”, 兰登认为五星牌的意思指“女性”, 事实上, 一副塔罗牌共有78张纸牌, 其中包括22张牌和4套由14张纸牌组成的花牌, 而最初的4套花牌是硬币、圣杯、利剑和权杖。有时, 硬币会用五角星或菱形来表示, 因此, 五角星并非女性的象征, 而是一种“表现”或者“认知”的形式, 五角星形则就是一个由圆形封闭起来的五角星。《达·芬奇密码》中, 塔罗牌最初用于传达关于圣杯秘密的教导。最初的提法源于玛格丽特·斯塔比尔德《举着雪花石膏罐子的女人》。斯塔比尔德指出, 塔罗牌上的人物都是指具体的历史事实。她宣称, 皇帝牌指的是指控圣殿骑士为异教徒, 并对他们进行拘捕和屠杀的国王腓力四世, 教皇牌代表取缔圣殿骑士的教皇克雷芒五世, 女皇牌则指抹大拉的玛利亚。但不能解释的是, 第一幅塔罗牌制作的时间是1450年, 即弗朗西斯科·斯佛尔扎德统治时期, 最初塔罗牌只提供娱乐, 像现在的扑克牌, 而它与这些历史人物的联系, 似乎是人为因素在起作用。许多人认为圣杯是指耶稣和门徒在《最后的晚餐》中使用的杯子, 有人相信, 耶稣死后, 约瑟拿着这个杯子去盛他身上流下的血。1170年, 法国特洛伊斯的克利提写了一首《帕西瓦尔》的诗, 好像是根据凯尔特的神话而写的, 诗中圣杯只是一只饰有宝石的盘子。12世纪以前, 还没有关于圣杯的传说, 13世纪后, 圣杯的故事已演变成了关于亚瑟王的传奇故事。里面的人物也从克利提故事里的人物演变成了福音书中的历史人物, 餐杯也变成了圣杯。《达·芬奇密码》里的雷·提彬说, “圣杯”的词意是“王室血统”, 这源于《圣血和圣杯》中的提示, 而《达·芬奇译码》认为这一词意可能是由于“圣杯”一词的法语拼写错误造成的, 丹·布朗重新解释认为“圣杯”指的是抹大拉的玛利亚的子宫, 并进一步延伸, 指玛利亚自己。这里提到的《圣血和圣杯》1982年出版, 由迈克尔·百金特, 理查德·利和亨利·林肯共同创作, 书中指出法国牧师索尼埃于1885年发现的文献是第一个能够证明抹大拉的玛利亚和她的后代在耶稣 (她的丈夫) 被捕后逃到法国的文献, 而耶稣是否与抹大拉的玛利亚有婚姻关系则是争论的焦点, 抹大拉的玛丽亚有着王室血统, 耶稣和抹大拉的玛丽亚传闻中的婚姻“结成了有效的政治联盟, 这样, 他就有可能合法地要求继承王位”, 对于相信福音书记载的人而言, 他死后复活升天使他不会成为俗世的君王。教会将有关抹大拉的玛丽亚和耶稣的血脉的真相隐瞒了2000年, 是为了避免女性崇拜。按这个理论, 圣杯既是盛耶稣血液的容器, 又是盛装至今仍然存在的耶稣王室血脉的容器。作者提供的是一种扑朔迷离的历史画卷, 充满了神秘, 阴谋和欺骗, 目的是保护圣杯的真正意义。为避免《圣血和圣杯》中的论述公布可能会带给社会的巨大影响, 书的作者只是把他们的发现作为理论来呈现, 并承认他们提供给读者的大多数证据都是基于传闻, 闲话, 传奇以及传统文化。《达·芬奇密码》把学者尚未解决的争议性话题断言为事实, 引起了质疑声一片。很多人认为, 书中宣称本身准确无误, 哪里是“事实”的结束和虚构的开始却模糊不清, 再加上宗教团体称其对争议性宗教观点的反对和冒犯, 大量的争论和偏袒性资料便由此引发。《达·芬奇译码》便是对《达·芬奇密码》的解构之一, 韦伯在《新教伦理与资本主义精神》中, 详细的阐释了基督教的构成及特点, 揭示了信仰对于人的影响。

宗教在现代社会的今天, 势力范围正在逐步扩大, 其作用不可小觑。就我国而言, 受众的数量正在逐渐增多, 并以中老年人为主, 分布在全国各处。宗教带给人的, 不止是一种精神力量, 也是一种行为范式。用社会学的视角看待宗教问题, 就是要把宗教社会化, 联系它与社会制度, 社会变迁的关系, 深层次地理解和把握, 才能真正有效的解决宗教问题。

摘要:社会学名著众多, 犹如烟波瀚海, 通过原著赏析, 我们可以把片段的知识理论化, 系统化, 为更广泛深入的研究社会学专业知识打下基础。《达·芬奇译码》是对丹·布朗的《达·芬奇密码》的继承和批判, 书中许多概念性的词语都暗含着独特的含义, 对后人产生深刻的影响。

飞行数据快速译码系统的实现 第5篇

飞行数据是飞机运行过程中表征系统状态参数的数据,主要被应用于事故调查与分析[1];故障诊断与机务维修[2]、飞机和发动机性能监控[2]、飞行品质监控[3,4]、飞机重着陆[5]风险管理、飞机部件的状态变化趋势及寿命预测[6]等。对于航空公司日常分析应用而言,飞行数据主要来源是快速存取记录器QAR(Quick Access Recorder)系统。QAR记载的数据通过地面的计算机译码与分析软件进行译码,使航空公司有关部门能及时跟踪了解飞机及发动机性能和飞行员操作情况。现在QAR已经是世界各航空公司提高安全管理水平,实现科学管理的重要手段。

飞行数据是以帧格式的二进制代码记录于QAR系统中,在对数据进行分析时,必须将二进制数据译码为工程上可用的十进制数值,所以要对QAR上的数据进行译码。航空公司在飞机上加装QAR系统时,都会配备相应的国外译码系统(或程序)。对于客户而言,其数据处理过程是封闭的,译码结果只能以固定的形式呈现给用户,不能对数据进行深入的分析,不便于用户掌握参数的渐变过程或故障的发生过程;国外译码系统对不同的机型、不同的帧格式采用不同的译码参数库,对应于每个参数,都需要建立相应的译码公式,译码过程中存在大量的重复性工作,译码速度慢、效率低;译码公式的代码具体到每一参数,影响到整个程序的移植性和扩展性。随着飞行数据的应用越来越广泛,其分析方法越来越多,要求实现快速的译码算法,并且译码软件要具有良好的移植性和扩展性,便于航空公司机队扩充。因此,提出新的、通用的译码算法,开发了一种基于实时数据库技术[7]的译码系统,克服了国外译码系统的缺点,能够满足新的应用要求。

1 QAR记录的数据格式和数据译码原理

国内民用航空领域,按照中国民航局的要求,于1998年年底航空公司的商用飞机上都已加装了QAR快速存取记录器,并配置进口的数据译码处理系统。QAR系统的记录格式符合ARINC717标准。

在ARINC717[8]中,规定每个数据帧包括4个副帧(subframe),每个副帧包括64个字槽(word),每个字槽由12个字位(bit)组成,第1位为最低有效位,第12位为最高有效位,记录速度为一个副帧/s(或两个副帧/s、一帧/s)。每一副帧的第一个字槽中记录的数据总为同步字,它用来确定一个副帧的开始。目前,通常使用Teledyne标准同步字,也称为ARINC717同步字,它的十进制数据与副帧的对应关系为:副帧1—583,副帧2—1464;副帧3—2631;副帧4—3512。

对于飞行数据记录系统数据流的物理层面而言,要想获得QAR光盘/卡上的数据,要经过转录和译码两个步骤。数据转录就是,把光盘/卡上的以二进制形式记录的串行数据流转换为同步后的数据文件,下载到计算机硬盘上;同步的过程就是,在串行数据流中寻找同步字;译码就是,把转录下来的二进制数据转换为可以直接分析使用的工程值。具体而言就是在地面软件平台中建立译码参数库,即在译码参数库中按照QAR数据记录格式为每个参数建立独立的译码公式,这种译码公式具体到每个参数。

译码方法是将数据下载到计算机硬盘,由于QAR系统可能记载了多个航班的数据,为了提高下载速度要进行航班划分[9];由于每个航空公司有多种机型,每一种机型通常都有多种记录方式,对应不同的记录方式,飞行参数记录的副帧、字槽和字位都可能是不同的,所以在译码之前,需判断机型以及QAR系统所采用的记录方式;然后调用相应的译码参数库进行译码,译码流程如图1所示。

但是这种方法有很多缺点,如当译码标准或某个参数的译码要求改变时,译码库中该参数的译码公式不再适用,要重建译码库,灵活性和扩展性比较差;当多个库中的同一个参数译码要求相同时,要在各个库中重复相同的工作,译码速度慢;再者,航空公司新增机型时必须购置相应的译码软件,价格昂贵,增大成本。

再者,将飞行数据下载到计算机硬盘上形成磁盘数据库,数据常驻磁盘,其数据需要按一定的数据交换策略被调到内存缓冲区后才能进行读写,在执行过程中受到磁盘I/O的束缚。译码及数据的分析受到等待延迟、查找延迟等的时间限制;并且由于飞行数据的数据量大,影响了译码的速度和效率。而实时数据库采用内存映射的存储方式,用页面访问技术实现对内存数据的读写。因此,提出一种基于实时数据库的快速存取、扩展性好的通用译码方法。在该方法中系统会自动动态地开辟一个内存空间,将要译码的数据调入内存。然后根据具体的译码算法对该原始数据进行译码,并将译完的工程值存入相应的数据库表中。采用实时数据库技术提高了译码的速度和效率。

2 动态链表译码算法

在译码参数库中按照对应的数据记录格式,通过对ARINC717协议分析可知,参数主要为三种类型:模拟量、数字量和离散混合量,每种类型分别对应不同的译码算法。

2.1 模拟量

飞行参数中模拟量参数数量比较少,一般有20个左右,但是这些参数是反映飞机飞行状态最重要的参数。这些参数的信号类型主要有:SYNCHRO(同步角)、LLDC(直流低电压)、HLDC(直流高电压)、VLLDC(直流甚低电压)、POT(电位计)、ACVR(交流电压比)、RESISTANCE(电阻)等。工程值与原始数据之间有些是线性关系,而有些则是非线性的。

对模拟量译码公式的分析发现,可以统一将所有模拟量信号的参数工程值用三次非线性方程来计算,即

R为工程值,d为原始数据;A为常数项,B为一次项系数,C为二次项系数,D为三次项系数(符合线性关系的,C=D=0)。

可以对模拟量参数建立统一的公式,参数不同时只要调用与该参数译码相关的系数即可。即模拟量的译码算法就是确定工程值与原始数据之间的各项系数A、B、C、D。然后将各个系数带入式(1)。

2.2 数字量

数字量参数通常有BCD、BNR两种数据格式,采用BCD编码格式的数字量参数只有若干个,绝大多数采用BNR格式。

BCD编码方式是指由1至4位的二进制数代表一个十进制数,一般4位一组。

BNR格式是把数据直接以二进制形式存放。参数分为有符号型和无符号型。对于无符号型参数,只需要将其按照一般的二进制值转换成十进制原码值再乘以其分辨率即可。对于有符号型,参数的二进制数据的最高位是其符号位,最高位为“0”代表该值为“正”,最高位为“1”代表该值为“负”,如同计算机中的有符号数字的表示一样,译码算法只需要按照这个规律转换成十进制原码值然后再乘以其分辨率即可得到参数的工程值。所以数字量的译码算法为

工程值=原码值×比例系数

对于数字量译码就是确定各个参数的比例系数。

2.3 离散混合量

对于离散量的译码比较简单。离散量通常由字槽中的一位或几位来表示,将对应的数据位从字槽中分离出来,按照编码规则的定义,即可得出译码结果。

混合量通常由表示飞机的一些标识信息,如同步字,超级帧号等,这些值也只需要直接译码成十进制工程值就可以了。

基于以上三类参数译码规律的分析,可以采用动态链表的方式实现快速译码算法。即分别为模拟量、数字量和离散混合量建立动态链表,链表中的每个节点为一个结构体变量,如图2所示。该结构体变量封装了译码该参数需要的所有信息。每种类型的参数建立统一的译码公式,只要带入链表节点中参数的具体信息,就可以确定译码算法结构的详细参数,完成该参数的译码算法。本文把它称为动态链表译码算法。这种译码算法和译码过程逻辑分离,当译码参数的标准变化时,无需修改译码算法,只要修改节点参数即可,具有译码程序封闭环境下的译码应用扩展性。

3 通用型飞行数据译码系统的实现

3.1 译码系统的硬件结构与软件开发环境

系统针对目前航空公司采用较多的PCMCIA卡作为QAR数据源载体。硬件系统中,在双CPU的服务器上,通过专用的USB口PCMCIA卡读卡器,读取从机载电子设备中取下的PCMCIA卡,通过计算机平台处理原始数据源;采用的C++Builder[10]开发环境具有非常强大的数据库开发功能。它封装了数据库开发引擎,并且提供了数据库辅助工具,包括BDEAdministrato、Database Desktop和SQLExplorer。通过C++Builder,能够非常方便地将译码程序与数据库进行连接;选用Data Access组件所支持的Oricle 9i数据库[11]来建立、存储飞行数据表单,利用ODBC建立数据库操作API集,实现程序与数据库之间的连接,为译码数据提供稳定的存储空间。

3.2 译码数据库表

3.2.1 机型表

航空公司机队组成繁杂,不同机型的机载设备不同,所记录的飞行数据的帧格式也不同,要有一个机型信息实体来记录航空公司机队信息,即机型表(aircraft)。它主要用来存储飞机号、飞机类型、同步器型号、飞行数据帧格式(如737-1)等相关信息。

3.2.2 飞行数据帧格式表

由于机型不同帧结构不同,即便是同一机型也存在多种帧结构,所以在译码库中要有与各种机型相对应的飞行数据帧格式表(flight_data_frame)。它用来存储各种飞行数据的帧格式,以及在每种帧格式下的飞行参数的参数名称、位置信息、单位信息、分辨率、信号类型、数据类型、计算公式系数等内容。飞行数据译码程序根据这些信息建立相应的动态链表。

3.2.3 飞行参数工程值表

它是以飞行数据帧格式的参数名为字段,由帧格式表动态创建飞行参数工程值表(flight_data)。译码后的飞行参数工程值,按照相应参数名存储于该表中,便于飞行数据应用软件使用。

这三个表互相关联,实现对各种机型、各种飞行数据帧格式信息以及相应的译码后的飞行数据工程值的存储。图3示例了三个表的结构与相互关系。

3.3 基于动态链表的飞行数据译码方法

1)将每种数据帧格式的标准和参数译码信息,由用户通过译码参数设置用户界面输入,更新飞行参数帧格式表的内容。如图4所示。

2)译码前,分别为模拟量参数、数字量参数、离散混合量参数类型的参数建立一个动态链表,动态链表的每个节点为一个结构体变量。

该结构体变量封装的译码该参数的信息是通过查询飞行参数帧格式表获得的。由帧格式表创建各种动态链表。

以数字量参数为例说明动态链表的建立过程,如图5所示。

3)译码各航班的飞行数据,遍历动态链表,根据动态链表中的信息进行相应的译码。

3.4 译码流程

通用型译码方法的具体译码过程为:首先将QAR中的原始数据下载到实时数据库的虚拟内存,并进行航班的划分,航班划分采用帧格式计数和空地电门组合的方式完成[2];根据机型从数据库的机型表中查找该机型相对应的帧格式表,并把相应的帧格式表导入到内存;根据帧格式表建立链表,从数据库中读该机型的各类型的参数列表,把相关信息写到链表,完成三类参数动态链表的建立;然后再根据程序中三类参数译码的算法结合帧格式表对原始数据进行译码。最后将译码的结果存入数据库飞行参数工程值表中。译码流程图如图6所示。

4 结束语

动态链表快速译码方法为用户提供设置参数的接口,只要在参数设置用户界面输入对应参数,就可以对不同的机型进行译码;与传统遍历型的译码算法相比较,该译码系统将译码算法与译码过程逻辑分离。对于译码算法,采用基于动态链表的可扩展译码参数,提高了算法的通用性,使得客户能够对于不同机型的飞行数据记录定义相应的参数,从而获得对应的译码函数,对于译码过程,增加了针对不同机型的飞行数据帧预定义和译码链表的动态定义。在逻辑层次上,使用实时数据库,将QAR光盘/卡上的数据直接下载到内存中,在内存中对指定的飞行数据源进行译码处理,提高了译码的速度;该译码系统与传统的进口译码系统相比,显著提高了飞行数据的译码效率,能满足飞行记录数据新应用的实时快速译码要求。

参考文献

[1]杨全法,任章,董伟凡.飞行事故调查中的飞行数据记录器译码分析技术.航空维修与工程,2004;5:40—42

[2]Feng Xiaorong,Feng Xingjie.Analyzing QAR data using K-PCA.IEEE Computer Society,2008;8:195—198

[3]徐晓东,杨宗金,程广义.QAR在飞行品质监控分析中的应用.民航科技,2002;5:73—78

[4]Mitchell K,Sholy B,Stolzer A J.General aviation aircraft flight opera-tions quality assurance:overcoming the obstacles.IEEE A&E SYS-TEMS MAGANIZE,2007;22(6):9—15

[5]徐晓东.飞行数据译码系统在飞机维修中的应用.民航管理,2003;4:76—76

[6]Clark G J,Vian J L,West M E.Multi-platform airplane health man-agement.//Big Sky,MT:Aerospace Conference,2007:1—13

[7]张志檀.实时数据库原理及应用.北京:中国石化出版社,2001

[8]以涛.飞行数据分析及译码.航空工程与维修,2000;1:25—26

[9]黄永芳,黄圣国,孙同江.QAR数据译码的航班划分.交通运输工程学报,2004;4(1):114—117

[10]Borland/Inprise.C++Builder5开发人员指南.北京:机械工业出版社,2000

卷积码的通用编译码 第6篇

关键词:卷积码,维特比译码,通用

0 引言

卷积码是与分组码相对应的一种编码技术,关于它的理论研究已经进行得比较成熟。但是,由于卷积码不像分组码那样具有严密的数学结构,大部分研究局限于对某一个具体的码型如(2,1,7)进行。而卷积码的优异性能使它在很多方面都有广泛应用,相应的,我们需要用到各种码型的卷积码。因此,希望用同一个编码/译码程序来实现各种不同码型的编码及维特比译码。

本文根据传统维特比算法,找出各种码型卷积码编译码过程中的共同点,介绍通用的编译码方法,本文给出的是使用Matlab语言实现的过程,通用译码不仅可以实现各种不同码型的编译码,而且可以达到与单一译码同样的译码速率。而且由于程序的可移植性,在大型通信系统中,能方便且快捷的实现卷积码编译码过程。

1 (n,k,m)卷积码通用编码的实现

如图1所示,一个约束长度为m,编码效率为k/n的卷积码编码器,包括一个mk级移位寄存器和n个模2加法器。在每个时间单元内,输入k比特信息,k比特信息位移入寄存器最开始的k级,同时将寄存器中原有的各位右移k级,顺序采样n个加法器的输出,得到n比特输出,输出码字就是与输入比特相对应的分支字。

卷积码的关键是编码函数G(m),此外编码时所需要的信息是当前的寄存器状态及输入比特。从通用性出发,将编码函数设为k*n矩阵形式,每个矩阵元素为各输出c与各输入m之间的关系(即生成多项式),每个生成多项式的长度也就是约束长度(m)。将mk级移位寄存器表示为k个寄存器组的形式,每个寄存器Reg长度为m,每个寄存器的最低位为输入的k比特信息的其中1位,顺序排列。如图2所示。

由图2也可以知道,编码函数每一行对应一位输入,寄存器每一行也对应一位输入,相同行对应的是相同输入。需要说明的是,编码函数中并不是每一个生成多项式都有值,部分多项式可能为0,即表示此输入位与输出没有关系。此外可知,编码函数中的每一个生成多项式表示的是寄存器的连接,即生成多项式第i(1≤i≤m)。位为1,表示寄存器第i位数据参与输出,若第i位为0,则表示寄存器第i位数据不参与输出。

那么在一次k位输入的过程中,求编码输出如第i位输出,将ci与k位输入的关系即第i列所有生成多项式与寄存器对应相乘,模2加即得到输出。对每一位输出,作同样处理,求出所有n位输出。

对每次k位输入,都是相同的过程。在接收数据的过程中,每接收k位信息,得到n位输出,完成编码过程。

2 (n,k,m)卷积码通用译码的实现

维特比译码算法的根据是网格图,网格图就是编码规则,是编译码双方共知的信息。维特比译码算法主要是,计算网格图上在当前时刻到达各个状态的路径和接收序列之间的距离,去除不可能的路径,对每一个状态只选中一条具有最佳量度的路径。随着译码器不断在网格图上深入,各状态只幸存唯一路径,即可进行译码[1]。详细过程为:

(1)初始化

对(n,k,m)卷积码,约束长度为m时,寄存器共有2m-1个状态。将寄存器状态按照高k位最多k位不同且低m-1-k位相同分组,每组2k个状态,有2m-1-k组。每一组就是一个蝶形图,也即2m-1-k个蝶形图,每个蝶形图2k个状态。输入端各状态的高k位各不相同,相邻状态相差为2(m-1)*k;输出端各状态低k位各不相同,相邻状态相差为1。相邻蝶形图的输入端第一个状态相差为1,则根据第一个蝶形图输入端第一个状态可以得到每个蝶形图输入端的第一个状态,每个蝶形图输入端的第一个状态可以推导出此蝶形图输入端所有状态,则可以得到网格图所有共2m-1个状态。而对于输出端状态,由以下关系也可以得到:

输出端状态与输入端第一个状态i的关系为:

p=2k*i,q=2k*i+1,…,s=2k*i+2k-1。

每个蝶形图输出端的状态可由输入端状态求得,则各蝶形图输出端的共2m-1个状态也可以求出。

对照蝶形图与编码器可知,蝶形图输出端各状态低k位为蝶形图当前时刻的输入,根据编码器规则,在知道编码输入和寄存器状态的情况下,可以求得编码输出,也就是蝶形图中的分支字(BranchOut)。对照图3,每一条分支对应一个寄存器状态和一个编码输入,在一个蝶形图内,有2k*2k条分支。也就有2k*2k个分支字。将分支字按矩阵形式对照蝶形图式样排列,每一列存放从蝶形图输入端不同状态到同一输出状态的分支字,每一行存放从蝶形图输入端同一输入状态到不同输出状态的分支字,囊括一个蝶形图中所有2k*2k个分支字。

(2)分支度量的计算

得到分支字BranchOut以后,就可以根据分支字与接收码元DataIn之间的距离计算分支度量DM。在硬判决译码中采用汉明距离,在软判决中用欧几里德距离,两种判决方式主要区别仅在于分支长度的求法不同,通常软判决译码比硬判决译码性能要好2~3dB,且译码结构并不比硬判决复杂[2]。在本文中,使用软判决译码。undefined,许多资料已证明,可简化分支度量为DM=DataIn*(2*BranchOut-1),同时把求最小DM转换为求最大DM。

在每个蝶形图中各有2k个输入状态和2k个输出状态,分支字共有2k*2k个,对(n,k,m)卷积码有2(m-1)-k个蝶形图,则总的分支数目为2k*2k*2(m-1)-k个。每个分支字对应一个分支度量,那么分支度量也有2k*2k*2(m-1)-k个,如果根据分支不同来计算不同的分支度量,则需要计算2k*2k*2(m-1-)k=2(m+1)+k次。而如果根据分支字的不同计算分支度量,可知分支度量的数量与分支字的数量相同。前面分析知道分支字为编码输出,对(n,k,m)卷积码,编码输出为n位,那么分支字为n位。对n位分支字,可能的取值为2n种(且其取值区间为0~2n-1),则分支度量对应有2n种,同时知道了分支字的取值区间,可以预先计算出2n种分支度量值。所有分支的分支度量值一定在这2n种分支度量值中,根据分支字而不是根据分支来计算分支度量值,计算次数为2n次,避免了重复的计算,减少计算量。

此外,为方便路径度量值的计算,将2n种分支度量值制表存储,涉及到DM时,知道分支字的取值,也就能取出相应的分支度量值。

(3)计算路径度量值PM,并选择最大PM

维特比译码算法的思路也就是寻找最接近接收序列的路径,即最小PM值,PM是DM的累加。对网格图的第一个时刻,PM的值也就是DM,进入下一时刻,PM的值不断的更新为前一时刻的路径度量PM与当前时刻的分支度量值之和。

图4为到达输出端其中一个状态的所有路径示意图,到达状态p的共有2k条分支,当前时刻状态p的PM的候选路径度量为状态i的路径度量值加上i到状态p的分支度量值DM,状态i的路径度量值加上i到状态p的分支度量值DM,……。这里,就用到分支度量值的制表,由分支字的取值取出对应的分支度量值DM。在所有状态的求和PM中,取出最大值作为状态p的路径度量值。

仿照DM按分支字来存储,PM按照状态来存储,是一个2^(m*k)行1列的矩阵,每一行存储一个状态的路径度量值,初始化时为全零矩阵,每一时刻对所有状态进行更新。对第i个蝶形图,它更新的是状态为2k*i,2k*i+1,…,2k*i+2k-1这2k个输出状态的路径度量值。如上述状态p,得到路径度量值后,更新到状态p对应的存储位置,完成PM值的更新。

由更新路径度量的过程中可知,随着译接收码元的输入,路径度量的值会不断增大[3]。当超出定义度量向量的最大值时,会使固定字长的寄存器中的数据发生溢出。要避免数据译出的状况,在每一时刻完成所有状态的PM更新后将其减去当前时刻所有状态路径度量值中的最小值,以避免溢出,调整后当前状态的最小路径度量值为0。

(4)记录所选择的路径,当到达译码深度时可读取译码比特

维特比译码器复杂度随着反馈深度的增长成指数倍增长,因而译码反馈深度对译码器的复杂影响度影响很大甚至无法实用。根据维特比译码的截断原理,译码深度为卷积编码器存贮长度的5倍(5*(m-1))时[4],既可达到性能和硬件复杂度的良好折衷,又便于实际应用。当状态序列非常的长时,也有必要截短译码深度,可做适当调整。

幸存路径为一个(2^(m*k),k,M)的高维矩阵,每一行存放每个状态的幸存路径的输出信息比特,M表示译码深度,到达译码深度后,即可从第一页开始输出。幸存路径存储实现方法为寄存器交换法,易于实现且译码延时短。寄存器交换法就是将旧的幸存路径拷贝到新状态对应的路径存储寄存器中,再加上当前时刻的译码比特,就存储了新状态的存储路径。根据编码过程可知,每个状态当前时刻的译码比特就是此状态的低k位。在上面选择最大PM时,同时也记录了最大PM的路径序号,低k位存入幸存路径的相应序号的行中。该方法保存了所有状态的幸存路径,在到达译码深度时就可以直接得到译码结果。

3 性能比较

实验证明,通用译码和单个码型译码的译码速率基本相同,且误码率也能达到一致。经AWGN信道传输后,改变生成函数G,得到的卷积码性能如图5所示。

4 结束语

从以上分析可以看出,本文给出通用编码方法比较简单,只需要将输入和输出间的关系即生成多项式与寄存器状态相对应,可以得到任意码型的编码输出。译码过程中,将各参量按照适合的形式存储,对于可以预先计算的,我们在译码前给出分支度量值,且能简化译码过程。文中并给出了路径度量值计算和路径更新的规律,对所有码型可以适用。

虽然卷积码不如分组码有严密的数学结构,但还是可以给出其编译码的规律。不同码率码型的卷积码都可以采用文中的通用编译码方法来实现。在matlab实现其编译码的过程中,只需要更改生成函数G(m)就能完成所有过程。

参考文献

[1] Kuo Tsung Sheng,Hsu Chau-Yun.Butterfly Structure for Viterbi decoders of all rates k/n[J].IEICE Trans.Electrictions communications and computer sciences, Feb,2007:504-510.

[2] Andrew J Viterbi.A Personal History of the Viterbi Algorithm[J].IEEE signal processing magazine,July,2006:120-122.

[3]Hung-Hua Tang,Mao-Chao Lin,Bartolomeu F Uch a Filho.Minimal Trellis Modules and Equivalent Convolutional Codes[C].IEEE Trans.Inf.Theory,August,2006,52(8):3738-3746.

译码器扩展及仿真实现 第7篇

在计算机系统中,常常需要将不同的地址信号通过一定的控制电路转换为对某一芯片的片选信号,这个控制电路称为译码电路,它所对应的逻辑部件就称为译码器[1]。译码器是数字电子技术应用中最常用的组合逻辑器件,在存储器、I/O端口、数据分配器、函数发生器等应用中都有使用,随着其应用领域的不断扩展,单片译码器已无法满足多位数据信号的译码需求[2],采用级联方式可以有效扩展译码器的数据输入位数,从而扩大译码器的使用范围,利用Lab VIEW虚拟仪器软件可高效直观仿真设计译码器的扩展效果,为译码器及其扩展提供了良好的学习及验证平台。

2 译码器的扩展(The expansion of the decoder)

译码器种类很多,这里仅以常用的74Ls138译码器为例,74Ls138是带有扩展功能的集成3线—8线译码器,图1为74Ls138译码器的引脚功能图,S1、S2、S3为译码器的三个使能输入端,当S1=1,S2=S3=0时,译码器允许工作(Enable),否则禁止(Disable),A1、A2、A3为译码器的三条输入线,不同的输入组合决定了输出端Y0—Y7的状态,其中只一个输出有效,其功能表如图2所示。

图1 74Ls138译码器引脚功能图 Fig.1 74Ls138 decoder pin function

图2 74Ls138译码器真值表 Fig.2 74Ls138 decoder truth table

采用单片74Ls138只有三个输入端,实际使用中需要将多出的高位输入信号通过一定的逻辑门电路生成所需的使能信号,这使得电路设计变得复杂,利用74Ls138的输入端和使能信号,采用级联方式,可以对译码器进行简捷灵活的位扩展。图3为两片74Ls138扩展为4线—16线的原理图,第四个输入信号D3分别接到1#S2S3和2#S1,当D3=0时1#片有效,D3=1时2#有效,将1#和2#74Ls138的输入端A0A1A2并联起来,分别接D0D1D2三个输入信号实现片内译码,同理采用多片74Ls138可以扩展出更多位的译码器来,从而有效的扩展其应用范围。

图3 两片74Ls138扩展为4线—16线译码器原理图 Fig.3 Two 74Ls138 extended to 4 line-16 line decoder schematic

3 译码器及其扩展的仿真实现(Decoder of extended and simulation)

Lab VIEW是基于虚拟仪器技术的图形化应用开发软件[3],在仪器控制、数据采集、信号分析、设计仿真、电子信息技术学习和实验等领域都有广泛的应用,利用Lab VIEW可形象生动的模拟仿真出译码器的功能,不需要真实的硬件环境,便于初学者学习和验证结果。

3.1 单片74Ls138的仿真设计

程序框图如图4所示。S1、S2、S3由三个布尔控件输入并经逻辑运算后接到74Ls138的条件框中控制其工作,输入端A0、A1、A2由三个布尔控件输入不同的值,按其特性方程经逻辑或门就可得到相应的输出信号。如图5所示为74Ls138输出前面板,图中S1=1、S2=S3=0,74Ls138正常工作,当输出A2A1A0=011时,Y3输出有效。

图4 74Ls138仿真程序框图 Fig.4 74Ls138 simulation program block diagram

图5 74Ls138仿真前面板 Fig.5 74Ls138 simulation front panel

3.2 多片74Ls138的扩展仿真

将单片74Ls138的程序保存为子VI,在扩展时可直接调用子VI来设计和验证。图6是1片主74Ls138,5片从74Ls138采用两级级联方式扩展为6线-40线的仿真程序框图,输入信号A0—A5中,低三位A0A1A2接从片A0A1A2,高三位A3A4A5接主片A0A1A2来生成选片信号,主片的每个输出Y0—Y7都可作为选片信号连接到一个从片的使能控制端,两级最多可接8个从片,扩展成6线—64线的译码器。图7为6片级联扩展为6线—40线译码器的仿真前面板,当S1=1、S2=S3=0时,输入A5A4A3A2A1A0=010111时得到输出Y23有效。

图6 6线—40线扩展仿真程序框图 Fig.6 6 line-40 line simulation program block diagram

图7 6线—40线扩展仿真前面板 Fig.7 6 line-40 line simulation front panel

按级联方式可以对译码器进行无限的位扩展,经过扩展后的译码器有了更大的应用范围,而利用Lab VIEW仿真设计可以让用户把主要精力投入到电路的逻辑设计上[4],不受硬件环境的限制,通过仿真运行随时验证结果、提高了设计效率、减少了设计成本。这种方法还可以实现对其他芯片的仿真,将各个芯片的仿真程序都可建成一个子VI,通过Lab VIEW的接口、数据采集、存储、回放等功能,仿真出各种复杂的工程应用,也为虚拟实验室提供了有效的方法[5]。

4 结论(Conclusion)

采用级联方式可以有效扩展译码器的位数,从而扩展其应用范围,利用Lab VIEW对译码器进行仿真,并进行扩展仿真可以有效提高设计效率,减小工作量和成本,并及时进行验证,可进一步应用到教学及实验中,为教学及仿真实验提供了平台。

摘要:为了提高译码器的应用范围,采用级联方式可以对译码器进行灵活的位扩展,并以Lab VIEW软件为主要开发工具,对译码器功能进行仿真,可以方便的进行虚拟设计、扩展及验证,大大提高了设计效率、降低成本、并为教学及实验提供了一种新的思路和方法。

本文来自 99学术网(www.99xueshu.com),转载请保留网址和出处

【联合译码】相关文章:

数字译码08-10

编译码器08-17

增强型译码算法08-21

编码器译码器教案06-04

石油地震勘探技术中的编译码器分析与应用09-13

初始联合05-08

联合课程05-12

联合切除05-13

联合游戏05-16

联合设计05-18

上一篇:飞行仿真系统下一篇:数据控制