turbo编译码误码率性能matlab仿真

1.算法描述

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所示:


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


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


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


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


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


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


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


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算法在每一时刻都要考虑所有路径,并且其运算是乘法和指数运算,比较复杂。


2.仿真效果预览

matlab2022a仿真结果如下:


3.MATLAB部分代码预览

N        = 512;%设置奇偶校验矩阵大小     

M        = 256;

SNR      = 0:0.5:4;

max_iter = 50;

TJL      = 10000;

for i=1:length(SNR)

Bit_err(i) = 0;

Num_err    = 0;

Numbers    = 0; %误码率累加器

N0         = 2*10^(-SNR(i)/10);

while Num_err <= TJL

Num_err

fprintf('Eb/N0 = %f\n', SNR(i));

Trans_data = round(rand(1,N-M));  %产生需要发送的随机数

turbo_code = turbo_encode(Trans_data);


Trans_BPSK = 2*turbo_code-1;       %BPSK


%通过高斯信道

Rec_BPSK   = awgn(Trans_BPSK,SNR(i),'measured');   


%turbo译码

x_hat      = round(turbo_decode(Rec_BPSK));


[nberr,rat]= biterr(x_hat,Trans_data);

Num_err    = Num_err+nberr;

Numbers    = Numbers+1;    

end

Bit_err(i)=Num_err/(N*Numbers);

end

A_047

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,864评论 6 494
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,175评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,401评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,170评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,276评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,364评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,401评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,179评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,604评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,902评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,070评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,751评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,380评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,077评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,312评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,924评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,957评论 2 351

推荐阅读更多精彩内容