卷积码(或者Turbo码)的交织与解交织的仿真编程和仿真实验
一、实验目的
实现卷积码(或者Turbo码)的交织与解交织的仿真编程和仿真实验,观察交织编码分别在白噪声信道和衰落信道下系统误码率的影响,分析原因。 二、实验原理
信道编码中采用交织技术,可打乱码字比特之间的相关性,将信道中传输过程中的成群突发错误转换为随机错误,从而提高整个通信系统的可靠性。交织编码根据交织方式的不同,可分为线性交织、卷积交织和伪随机交织。其中线性交织编码是一种比较常见的形式。所谓线性交织编码器,是指把纠错编码器输出信号均匀分成m个码组,每个码组由n段数据构成,这样就构成一个n×m的矩阵。这里把这个矩阵称为交织矩阵。如图1所示,数据以a11,a12,…,a1n,a21,a22,…,a2n,…,aij,…,am1,am2,…,amn(i=1,2,…,m;j=1,2,…,n)的顺序进入交织矩阵,交织处理后以a11,n21,…,am1,a12,a22,…,am2,…,a1n,a2n,…,amn的顺序从交织矩阵中送出,这样就完成对数据的交织编码,如图1所示。还可以按照其他顺序从交织矩阵中读出数据,不管采用哪种方式,其最终目的都是把输入数据的次序打乱。如果aij只包含1个数据比特,称为按比特交织;如果aij包含多个数据比特,则称为按字交织。接收端的交织译码同交织编码过程相类似。
图 1 交织编码矩阵 一般来说,如果有n个(m,k)码,排成,n×m矩阵,按列交织后存储或传送,读出或接收时恢复原来的排列,若(m,k)码能纠t个错误,那么交织后就可纠m个错误。对纠正信道传输过程中出现的突发错误效果明显,如图2所示。
图2 交织编码示例 GSM中使用这种比特交织器。其交织方式为将信道编码后的每20ms的数据块m=456b拆分到8组中,每组57b,然后这每组57 b分配到不同的Burst中 三、实验流程
卷积交织 解卷积交织 四、源程序
1、交织程序 1)卷积交织
function [aa]=jiaozhi(bb,n) %jiaozhi.m 卷积交织函数 n=28; %分组长度
? 卷积交织前原分组序列 a 卷积交织后分组序列 %序号重排方式:
cc=[ 1 23 17 11 5 17 21; 8 2 24 18 12 6 28; 15 9 3 25 19 13 7; 22 16 10 4 26 20 14 ];%交织矩阵
bb=[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28]; for i=1:n
aa(i)=bb(cc(i)); end
(2)循环等差交织
function [aa]=jiaozhi_nocnv(bb,n) %jiaozhi_nocnv.m 循环等差交织函数 n=28; %分组长度
? 循环等差交织前原分组序列 a 循环等差交织后还原分组序列 %序号重排方式:
bb=[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ]; j=1; for i=1:n
j=rem(j+5-1,n)+1; %序号重排方式迭代算法 aa(n+1-i)=bb(j); end
2、解交织程序 (1) 解卷积交织 function [bb]=jiejiaozhi(aa,n) %jiejiaozhi.m 解卷积交织函数 n=28;% 分组长度
a 解卷积交织前原分组序列 ? 解卷积交织后分组序列 %序号重排方式:
cc=[ 1 23 17 11 5 27 21; 8 2 24 18 12 6 28; 15 9 3 25 19 13 7 ;22 16 10 4 26 20 14 ]; aa=[ 1 8 15 22 23 2 9 16 17 24 3 10 11 18 25 4 5 12 19 26 27 6 13 20 21 28 7 14 ]; for i=1:n
bb(cc(i))=aa(i); end
(2) 解循环等差交织
function [bb]=jiejiaozhi_nocnv(aa,n) %jiaozhi_nocnv.m 解循环等差交织函数 n=28;% 分组长度
a 解循环等差交织前原分组序列
? 解循环等差交织后还原分组序列 %序号重排方式:
aa=[ 1 24 19 14 9 4 27 22 17 12 7 2 25 20 15 10 5 28 23 18 13 8 3 26 21 16 11 6]; j=1; for i=1:n
j=rem(j+5-1,n)+1; %序号重排方式迭代算法 bb(j)=aa(n+1-i); End
交织码通常表示为(M,N),分组长度L=MN,交织方式用M行N列的交织矩阵表示。一般,交织方式分为分组交织和卷积交织。分组交织的交织矩阵按列写入,按行读出;去交织矩阵按行写入按列读出。卷积交织的交织矩阵和去交织矩阵的写入与读出均按行进行。
注意本次仿真采用(7,4)卷积交织编码和循环等差交织编码。所谓循环等差,是指将序号从大到小顺时针排成一圈,从1开始等间隔逆时针取28个数,间隔为4,这样依次取的28个数即序号重排方式。 五、实验结果 1、卷积交织
2、循环等差交织