Matlab通信仿真系列——交织器仿真

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

一、交织器
二、矩阵分组交织器
三、Matlab源码

本节内容
一、交织器

交织方法是一种很实用并且常用的构造码的方法,能把比较长的突发错误或多个突发错误离散成随机错误。交织是指一个数据序列在一一对应的条件下,进行数据的位置重排过程。其逆过程为解交织,将接收到的信息序列进行位置还原,使数据的位置还原成发送是的顺序。
交织器的输入和输出看出两个大小都是N的集合,定义为I(A→A)。
在这里插入图片描述

常用的交织器主要有3种,即矩阵分组式、伪随机式和半伪随机式。通常对于译码精度要求较高的通信系统,应采用随机交织器。由于序列较短的伪随机数之间的相关特性较大,对于实时性要求高、信息帧较短的通信系统,矩阵分组式交织性能优于伪随机和半伪随机式交织器。但由于信息帧长度增加,交织长度也增加,采用矩阵分组交织器,交织前后信息序列的不动点增多,伪随机数产生更加均匀,交织前后的序列相关性减小,所以采用随机交织器,半伪随机交织方式作为折中方案。
二、矩阵分组交织器
发送一组信息X=(x1,x2,……,x16),将X送入交织器,交织器按列写入按行取出的4×4阵列存储器。送入交织器后,从存储器里按行输出,送入突发差错的信道,信道输出再送入反交织器,完成交织器的相反变换,即按行写入按列读出。反交织器的输出,阵列存储器中按列读出的信息,其差错规律就变成独立差错。
(M×N)分组交织器具有的特性如下:
①任意长度l≤M的突发差错,经过交织变换后,成为至少被N-1位隔开的一些单个独立差错;
②任意长度l>M的突发差错,经过去交织变换后,可将长突发变换成短突发,其突发长度为l’≤l/M(取整);
③在不计信道时延的条件下,完成交织与去交织变换两端的时延为2MN个符号,交织与去交织各占MN个符号;
④在特殊情况下,周期为M个符号单个独立差错序列经过去交织后,会产生相应序列长度的突发错误。
matlab代码示例:
仿真(7,4)Hamming码编码和矩阵交织器级联后的性能,并和未交织的性能进行比较。
在这里插入图片描述

无交织时的误比特率要大于有交织时的误比特率,故交织器在信道改造中起到一定作用。
三、Matlab源码

clear all;
clc;
close all;
%信息比特的个数
N=10000;
%Hamming码组长度n
n=7;
%码字消息比特长度k
k=4;
%产生比特数据
x=randi([0 1],N*k,1);
%Hamming编码
code=encode(x,n,k);
%矩阵交织
code1=matintrlv(code,N/10,10*n);
%信道差错
noise=randerr(N,n,[0:n-3;0.8 0.09 0.07 0.03 0.01]);
noise=reshape(noise.',N*n,1);
%无交织接收信号
y=bitxor(code,noise);
%Hamming译码
y=decode(y,n,k);
%统计误比特率
[err,ber]=biterr(x,y);
%有交织接收信号
y1=bitxor(code1,noise);
%解交织
y1=matdeintrlv(y1,N/10,10*n);
%Hamming译码
y1=decode(y1,n,k);
%统计误比特率
[err,ber1]=biterr(x,y1);
disp('无交织时的误比特率:')
ber
disp('有交织时的误比特率:')
ber1
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小灰灰的FPGA

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

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

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

打赏作者

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

抵扣说明:

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

余额充值