m基于Turbo-TPC乘积码的误码率仿真,并和传统的turbo进行对比

简介: m基于Turbo-TPC乘积码的误码率仿真,并和传统的turbo进行对比

1.算法仿真效果
matlab2022a仿真结果如下:

64b262949b768c5685a83cb5cb8c2d34_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

2.算法涉及理论知识概要

   Turbo码是一种极为复杂的信道编码技术,译码算法往往由于硬件实现的复杂度太高或者译码时延太长而难以实现。现目前Turbo码领域面临的主要问题是:在复杂度和时延都可以接受的前提下如何获得最佳的系统性能。Turbo码由分量码经由交织器级联而成。因此,分量码和交织器设计的好坏是决定Turbo码性能的关键因素。实际的通信系统中,为提高系统带宽效率,一种方法是通过删减部分校验比特来提高编码速率,称为删余。

   Turbo码的编码过程实际上是一个利用强约束短码构造伪随机长码的过程。Turbo码的译码算法主要有两大类。是基于最大后验概率(MAP)的软输出算法,主要包括标准MAP算法、对数域上的Log.MAP算法和Max. Log-MAP算法、修正的MAP算法(M-MAP)、滑动窗MAP(SW-MAP)算法和只有前向递推的MAP算法(OSA)。其中,MAP算法是MAP算法的对数形式,它通过将大量的乘法运算转化为加法运算来简化算法的复杂性。

  Turbo码由2个循环系统卷积码并行级联而成:译码采用迭代的串行译码交织器是Turbo 码所特有的,它可以使得信息序列随机化,增加各码字间的重量,从而提高码的保护能力。

 Turbo编码器的基本结构如图1所示:

41f705aa76c98047b75c8742c570c706_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

从图1的仿真结果可知,Turbo码编码器主要由分量删余矩阵、交织器、两个分量编码器以及复接器组成。

   分量编码器是Turbo码编码器中的一个重要组成部分。Turbo码的分量编码器使用RSC编码,因为循环编码器可以改善码的比特误码率性能。

删余矩阵是通过删除冗余的校验位来调节码率,Turbo码采用两个成员编器。

   交织器的作用是改变信息结构将传输过程中出现的突发错误进行的分散化和不规则化。交织器可以改变Turbo 码的重量分布,因此,交织器对Turbo 码性能的好坏有着重要作用。在Turbo 码中,交织器使输入码元符号的顺序尽可能随机分布,使码元符号之间的相关性减弱,从而使进入各个子译码器的信息序列之间不相关。

      Turbo码的译码使用了迭代译码。利用EXIT图实现对迭代译码过程的跟踪,从而估计迭代译码的收敛性。利用EXIT图还可以预测实现一定性能要求时所必须的迭代译码次数。它为分析迭代译码过程和迭代译码方案的设计提供了有力的工具。

     Turbo译码器主要包括如下几个结构:两个分量译码器模块,交织器模块,解交织器模块以及硬判决模块。

     Turbo译码器的基本结构如图2所示:

22390a1556c7c4357fd7d59f7aa008ac_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

  Turbo译码器工作原理为:将接收到的串行数据进行并串转换,同时将删余的比特位填上虚拟比特。将信息序列r0以及RSC1生成的校验序列r1送入软输出译码器1,软输出译码器1生成的外信息序列Z1k经过交织后做为下一软输出译码器2的输入。信息序列r0经过交织器输入至译码器2,同时输入的还有RSC2生成的校验序列r2。

   译码器2的输出外信息Z2k经过解交织器后做为反馈输入至译码器1,再次重复以上过程进行软判决,直至最后译码输出性能不再有提高,将最后结果有译码器2输出解交织后做为判决输出。

   这种译码器结构的优点是每个译码器不仅可以利用本译码器的信息比特和校验比特,还能利用前一译码器提供的信息进行译码,从而提高译码的准确性。它的缺点是:迭代要花费更多时间,造成的延时使Turbo码在某些对时延要求高的通信系统(如数字电话等)中应用受限。       Turbo码译码算法基于最大后验概率(MAP)算法或者是软输出维特比(SOVA)算法。MAP算法是最小化符号或比特差错概率,SOVA算法是最小化序列差错概率。在低SNR环境下,MAP算法比SOVA算法的性能有一定改善,但是MAP算法在每一时刻都要考虑所有路径,并且其运算是乘法和指数运算,比较复杂。

————————————————

    乘积码,并行级联码是一种用短码构造长码的编码组合方式,其中乘积码属于并行级联分组码,而大名鼎鼎的Turbo 码就是并行级联卷积码。乘积码于1954 年由Elias 最早提出,随即得到了广泛应用。

步骤
(1)将信息元填入一个 2 k 行 1 k 列的矩阵;

(2)对矩阵的每一行,用一个( , ) 1 1 n k 系统分组码 1 V 进行编码,得到一个2 k 行1 n 列

的矩阵;

(3)对这个矩阵的每一列,用一个( , ) 2 2 n k 系统分组码 2 V 进行编码,最终得到一个2 n

行1 n 列的矩阵。

   这样得到的纠错码是一个1 2 1 2 (n ×n, k ×k)分组码,所以称为乘积码。乘积码的两个编码器是对排列顺序不同的同一组信息元进行编码,两个编码器并行工作,没有“内”“外”之分,统称为分量编码器。乘积码也因此被称为二维码。同样,乘积码也可以先按列编码,再按行编码,得到的码字是完全一样的。乘积码的传输方式也不唯一,可以按行传输、按列传输甚至按对角线传输。

3.MATLAB核心程序

Lens = length(Rec)/(2+puncture);
%打孔
if puncture == 1
   for i = 1:Lens  
       Rec_1st(i) = Rec(3*(i-1)+1);
       for j = 1:2
           data_sp(j,2*i) = Rec(3*(i-1)+1+j);
       end
   end
end
%不打孔
if puncture == 0
   for i = 1:Lens
       Rec_1st(i) = Rec(2*(i-1)+1);
       for j = 1:2
           data_sp(j,2*i) = 0;
       end   
       if rem(i,2)>0
          data_sp(1,2*i) = Rec(2*i);
       else
          data_sp(2,2*i) = Rec(2*i);
       end      
   end
end       
for j = 1:Lens
    data_sp(1,2*(j-1)+1) = Rec_1st(j);
    data_sp(2,2*(j-1)+1) = Rec_1st(alpha(j));
end    
end
相关文章
|
5月前
|
编解码 算法
m基于码率兼容打孔LDPC码oms最小和译码算法的LDPC编译码matlab误码率仿真
m基于码率兼容打孔LDPC码oms最小和译码算法的LDPC编译码matlab误码率仿真
97 0
|
5月前
|
编解码 算法
m基于码率兼容打孔LDPC码nms最小和译码算法的LDPC编译码matlab误码率仿真
m基于码率兼容打孔LDPC码nms最小和译码算法的LDPC编译码matlab误码率仿真
39 0
|
5月前
|
算法 5G
基于LDPC编译码和FP-MAP球形检测算法的协作MIMO系统误码率matlab仿真
基于LDPC编译码和FP-MAP球形检测算法的协作MIMO系统误码率matlab仿真
|
存储 算法
m常用信道编译码算法matlab对比仿真,包括RS,BCH,turbo,LDPC以及RSBCH级联等
m常用信道编译码算法matlab对比仿真,包括RS,BCH,turbo,LDPC以及RSBCH级联等
195 0
|
16天前
|
算法 数据挖掘 vr&ar
基于ESTAR指数平滑转换自回归模型的CPI数据统计分析matlab仿真
该程序基于ESTAR指数平滑转换自回归模型,对CPI数据进行统计分析与MATLAB仿真,主要利用M-ESTAR模型计算WNL值、P值、Q值及12阶ARCH值。ESTAR模型结合指数平滑与状态转换自回归,适用于处理经济数据中的非线性趋势变化。在MATLAB 2022a版本中运行并通过ADF检验验证模型的平稳性,适用于复杂的高阶自回归模型。
|
4月前
|
机器学习/深度学习 人工智能 并行计算
从LLM中完全消除矩阵乘法,效果出奇得好,10亿参数跑在FPGA上接近大脑功耗
【6月更文挑战第15天】`Scalable MatMul-free LMs提出了一种无需矩阵乘法的新方法,使用MLGRU和MatMul-free GLU在保持性能的同时降低计算成本。实验显示,这种模型在FPGA上运行时,能效接近人脑,且在多种任务中与传统模型相当甚至更优。尽管有挑战,但该模型为高效、低功耗的语言处理开辟了新途径。[arXiv:2406.02528]`
118 1
|
5月前
|
资源调度 算法 块存储
m基于遗传优化的LDPC码OMS译码算法最优偏移参数计算和误码率matlab仿真
MATLAB2022a仿真实现了遗传优化的LDPC码OSD译码算法,通过自动搜索最佳偏移参数ΔΔ以提升纠错性能。该算法结合了低密度奇偶校验码和有序统计译码理论,利用遗传算法进行全局优化,避免手动调整,提高译码效率。核心程序包括编码、调制、AWGN信道模拟及软输入软输出译码等步骤,通过仿真曲线展示了不同SNR下的误码率性能。
54 1
|
4月前
|
算法
m基于PSO粒子群优化的LDPC码OMS译码算法最优偏移参数计算和误码率matlab仿真
MATLAB2022a仿真实现了Offset Min-Sum (OMS)译码算法与粒子群优化(PSO)结合,以优化偏移参数,提升LDPC码解码性能。PSO通过迭代寻找最小化误码率(BER)的最佳偏移量。核心程序运用PSO进行参数更新和适应度函数(BER)评估,最终在不同信噪比下展示OMS解码性能,并保存结果。
53 0
|
5月前
|
存储 算法
m基于LDPC编译码的matlab误码率仿真,对比SP,MS,NMS以及OMS四种译码算法
MATLAB 2022a仿真实现了LDPC译码算法比较,包括Sum-Product (SP),Min-Sum (MS),Normalized Min-Sum (NMS)和Offset Min-Sum (OMS)。四种算法在不同通信场景有各自优势:SP最准确但计算复杂度高;MS计算复杂度最低但性能略逊;NMS通过归一化提升低SNR性能;OMS引入偏置优化高SNR表现。适用于资源有限或高性能需求的场景。提供的MATLAB代码用于仿真并绘制不同SNR下的误码率曲线。
215 3
|
5月前
|
编解码 算法 索引
m基于码率兼容打孔LDPC码ms最小和译码算法的LDPC编译码matlab误码率仿真
m基于码率兼容打孔LDPC码ms最小和译码算法的LDPC编译码matlab误码率仿真
44 0