软件无线电系列——纠错码与交织

微信公众号上线,搜索公众号小灰灰的FPGA,关注可获取相关源码,定期更新有关FPGA的项目以及开源项目源码,包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等
在这里插入图片描述
本节目录

一、纠错码
1、纠错码的发展历程
2、纠错码的分类及作用
二、交织
1、分组交织
2、卷积交织

本节内容
一、纠错码
1、纠错码的发展历程
在这里插入图片描述

2、纠错码的分类及作用
纠错码按照不同的划分标准可以划分成多种类型:按功能可分为检错码和纠错码;按对信源序列进行的不同处理方式可分为分组码、卷积码及级联码;按照信息码元在编码之后是否保持原来的形式不变,又可分为系统码与非系统码。
在系统码中,编码后的信息码元不发生变化,并且与监督位分开,而在非系统码中,信息码元发生改变。系统码与非系统码的纠错能力完全等价,且系统码的译码较非系统码的译码更为简捷,因此实际应用中得到广泛应用的是系统码。
纠错码纠错能力是通过利用冗余度和差错随机化获得的,冗余度通过在信息码元中附加监督码元来实现,之后通过监督码元与信息码元间的约束关系,对接收序列进行校验,以检测和纠正错误。
二、交织
通常按照交织方式进行分类,交织器可分为分组交织和卷积交织。
1、分组交织
分组交织以组为单位进行交织,即将纠错序列分割成L位一帧,对每帧实施置换,以达到将突发错误转换成离散错误的目的。若L较长,还可以将L分为几个等长的分组,在各分组内再分别进行置换,但各个分组内的置换顺序可以不同。分组交织中最常见的是行列交织,从结构上看,行列交织就是一个M行N列的二维存储阵列。已编码的数据按比特或者符号逐行写入存储器,然后按列从存储器中读出,完成交织过程。行列交织的原理图如下:
在这里插入图片描述

2、卷积交织
卷积交织器最早由Ramsey和Fommey提出,(n1,n2)卷积交织器满足如下要求:在该交织器输出上的任何一个长度为n2的数据串,该数据串不包含交织前原来数据序列中相距小于n1的任何两个数据。卷积交织器的结构图如下:
在这里插入图片描述

卷积交织器的工作流程,交织器输入端的输入符号数据,按顺序分别进入B支路延迟器,每路各延迟不同的符号周期,其中第一路无延迟,第二路延迟M个符号周期,第三路延迟2M个符号周期…,第B路则延迟(B-1)M个符号周期;与此同时交织器的输出端,按输入端的节拍分别同步输出对应支路经过延迟的数据,这样就完成了整个卷积交织过程。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
交织是数字通信中一种重要的技术,常用于减少数据传输中的误码率。交织技术可以将数据流重新排列,使得原始数据流中相邻的数据变得相互独立,从而增强了数据传输的可靠性。 在Matlab中,可以使用以下代码生成一个交织码: ```matlab N = 4; % 交织深度 M = 16; % 交织器大小 data = randi([0 1], N, M); % 随机生成数据 intlvData = reshape(data.',[],1); % 将数据展开成列向量 intlvData = matintrlv(intlvData,N,M); % 进行交织 intlvData = reshape(intlvData,M,[]).'; % 将交织后的数据重新变为矩阵形式 ``` 这段代码中,N表示交织深度,M表示交织器大小,data是一个随机生成的N行M列的矩阵。使用matintrlv函数对data进行交织,得到intlvData。 如果需要生成交织表,可以使用以下代码: ```matlab N = 4; % 交织深度 M = 16; % 交织器大小 intlvTab = zeros(N*M,N*M); % 初始化交织表 for i=1:N*M data = zeros(N,M); % 初始化数据 data(ceil(i/M),mod(i-1,M)+1) = 1; % 在对应位置放置1 intlvData = reshape(data.',[],1); % 将数据展开成列向量 intlvData = matintrlv(intlvData,N,M); % 进行交织 intlvData = reshape(intlvData,M,[]).'; % 将交织后的数据重新变为矩阵形式 intlvTab(:,i) = reshape(intlvData,[],1); % 将交织后的数据存储在交织表中 end ``` 这段代码中,同样是N和M表示交织深度和交织器大小。使用一个循环,依次在交织表中放置1,然后进行交织,最后将交织后的数据存储在交织表中。交织表的大小为N*M行,N*M列。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小灰灰的FPGA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值