ee0b2ed9dd2e45a5980204cael fb6d54 doc 运行结果 二进制双极性通信系统的蒙特卡罗仿真结果与理论值比较 理论值 仿真结果 810121416 Eb/NO in dB 上图(ce55的运行结果)给出了不同信噪比条件下,发送100000比特的二进 制双极性通信系统的蒙特卡罗仿真结果以及理论值曲线。从仿真结果来看,蒙特卡 罗仿真结果与理论值曲线接近程度相当好,用蒙特卡罗仿真模型来模拟实际二进制 双极性通信系统,是可以被接受的 信道编码 信道编码主要用于解决数字通信的可靠性问题,也就是数字信号在交换和传输 过程中出现差错的问题。利用信道编译码,可以显著改善信息在传输过程中的错误 概率指标,有效増强系统抗τ扰能力,提高数字通信系统的可靠性。因此,信道编 码是数字信号传输中最重要的课题之 信道编码 信道编码,就是在待发送的数字信息序列m中人为地按一定规则加进信息数字 序列,从而构成了码字C(信道编码),然后将此码字C作为发送序列。在编码过 程中,每个码字所加进的非信息序列是供在译码器中检出或纠正错误的,常称为监 督元。它们本身不是信息,单纯从信息传输的角度来说是多余的,这种多余度降低 了信息传输的效率。但是从另一角度来说,所增加的冗余度换来的是译码纠错能力, 提高了信息传输可靠性。一般地说,码字中多余度越高,纠错能力越强,可靠性越 信道编码的仿真 97601班陈鹏 第11页共59页
ee0b2ed9dd2e45a5980204cae1fb6d54.doc 信道编码的仿真 97601 班 陈鹏 第 11 页 共 59 页 运行结果 上图(ce55 的运行结果)给出了不同信噪比条件下,发送 100000 比特的二进 制双极性通信系统的蒙特卡罗仿真结果以及理论值曲线。从仿真结果来看,蒙特卡 罗仿真结果与理论值曲线接近程度相当好,用蒙特卡罗仿真模型来模拟实际二进制 双极性通信系统,是可以被接受的。 信道编码 信道编码主要用于解决数字通信的可靠性问题,也就是数字信号在交换和传输 过程中出现差错的问题。利用信道编译码,可以显著改善信息在传输过程中的错误 概率指标,有效增强系统抗干扰能力,提高数字通信系统的可靠性。因此,信道编 码是数字信号传输中最重要的课题之一。 信道编码 信道编码,就是在待发送的数字信息序列 m 中人为地按一定规则加进信息数字 序列,从而构成了码字 C(信道编码),然后将此码字 C 作为发送序列。在编码过 程中,每个码字所加进的非信息序列是供在译码器中检出或纠正错误的,常称为监 督元。它们本身不是信息,单纯从信息传输的角度来说是多余的,这种多余度降低 了信息传输的效率。但是从另一角度来说,所增加的冗余度换来的是译码纠错能力, 提高了信息传输可靠性。一般地说,码字中多余度越高,纠错能力越强,可靠性越
ee0b2ed9dd2e45a5980204cael fb6d54 doc 高。由此可见,可靠性是以降低效率即有效性为代价换来的。编码问题就是在一定 的抗干扰能力的要求下,合理设计和选择多余度最小的码字问题,也就是如何使可 靠性和有效性二者能够得以合理兼顾的问题。 纠错编码理论是建立在代数学重要分支一一近世代数基础上的,它又是信息论 的一个重要分支,从五十年代开始至今发展很快,许多内容已经建立起完整的、 密的理论体系。随着数字技术的迅速发展,大规模、超大规模集成电路的不断出现, 为纠错编码技术的应用开辟了无限广阔的前景:目前,适应不同需要的多种类型的 码字的不断出现,使这门学科呈现了无限生机 信道编码一般分为两类:分组编码和卷积编码。 在分组编码中 制信源输入序列被划分为长度k的码字组。每个长度k的 码字被映射为长度n的码字,映射关系是相互独立的,编码器的输出仅仅与当前k 个信源输入比特有关,而与以前的序列无关。从而由长度n的码字组构成分组编码 后的二进制信道输入序列,编码速率为M比特/次,记为(n,k)分组码。 在卷积编码中,也是把k个信息比特编成长度为n的信道输入,但该信道输入 不但与当前k个信源输入比特有关,而且还与编码器前(L-1)k个输入有关。 本次仿真选用以下几种基本信道编码:(7,4) HAMMING码、(2,1,3)卷积码、 级联码(外编码采用(7,4) HAMMING码,交织编码采用(7,4)卷积交织编码, 内编码采用(2,1,3)卷积码),分别进行性能测试,另外,还特别对级联码中 的两种交织方式:卷积交织和循环等差交织进行仿真性能测试比较。 在进行信道编码性能仿真测试时,我们仍使用蒙特卡罗仿真估算二进制双极性 通信系统的误码率。在二进制双极性通信系统的蒙特卡罗仿真模型中加入信道编码 的编译码器,就得到了信道编码性能测试的蒙特卡罗仿真模型(如下图所示)。 信道编码性能测试的蒙特卡罗仿真模型 均匀随机数 发斯 生随 器机 数 数 编|±E 译|输出数据 据进 源制 器 器 比 信道编码的仿真 97601班陈鹏 第12页共59页
ee0b2ed9dd2e45a5980204cae1fb6d54.doc 信道编码的仿真 97601 班 陈鹏 第 12 页 共 59 页 高。由此可见,可靠性是以降低效率即有效性为代价换来的。编码问题就是在一定 的抗干扰能力的要求下,合理设计和选择多余度最小的码字问题,也就是如何使可 靠性和有效性二者能够得以合理兼顾的问题。 纠错编码理论是建立在代数学重要分支——近世代数基础上的,它又是信息论 的一个重要分支,从五十年代开始至今发展很快,许多内容已经建立起完整的、严 密的理论体系。随着数字技术的迅速发展,大规模、超大规模集成电路的不断出现, 为纠错编码技术的应用开辟了无限广阔的前景;目前,适应不同需要的多种类型的 码字的不断出现,使这门学科呈现了无限生机。 信道编码一般分为两类:分组编码和卷积编码。 在分组编码中,二进制信源输入序列被划分为长度 k 的码字组。每个长度 k 的 码字被映射为长度 n 的码字,映射关系是相互独立的,编码器的输出仅仅与当前 k 个信源输入比特有关,而与以前的序列无关。从而由长度 n 的码字组构成分组编码 后的二进制信道输入序列,编码速率为 k/n 比特/次,记为(n,k)分组码。 在卷积编码中,也是把 k 个信息比特编成长度为 n 的信道输入,但该信道输入 不但与当前 k 个信源输入比特有关,而且还与编码器前(L-1)k 个输入有关。 本次仿真选用以下几种基本信道编码:(7,4)HAMMING 码、(2,1,3)卷积码、 级联码 ( 外编码采用(7,4)HAMMING 码,交织编码采用(7,4)卷积交织编码, 内编码采用(2,1,3)卷积码 ) ,分别进行性能测试,另外,还特别对级联码中 的两种交织方式:卷积交织和循环等差交织进行仿真性能测试比较。 在进行信道编码性能仿真测试时,我们仍使用蒙特卡罗仿真估算二进制双极性 通信系统的误码率。在二进制双极性通信系统的蒙特卡罗仿真模型中加入信道编码 的编译码器,就得到了信道编码性能测试的蒙特卡罗仿真模型(如下图所示)。 信道编码性能测试的蒙特卡罗仿真模型 n ±E r 输出数据 均 匀 随 机 数 发 生 器 二 进 制 数 据 源 高 斯 随 机 数 发 生 器 判 决 器 比 较 编 码 器 译 码 器
ee0b2ed9dd2e45a5980204cael fb6d54 doc 差错计数器 在实际进行信道编码性能测试的蒙特卡罗仿真时,我们将仿真数据源序列分成 长度为16的码组,把分得的码组数作为循环步长,每一个循环步长依次进行发送 接收一个码组的仿真并将差错数进行累加,循环结束后将总误码数除以码序列长度 求得仿真误码率。从理论上讲,这样做不会对信道编码性能测试的蒙特卡罗仿真结 果造成偏差。从实际角度讲,这种方法不仅符合通信应用中编码先要划分数据块的 通用性原则,而且可以有效降低仿真的时间复杂度和空间复杂度。 同样,在原来的蒙特卡罗计算机仿真基本流程图中加入编译码模块,并对原来 的生成数据模块、叠加噪声模块、接收判决模块、差错计数模块进行改造,将各模 块中的数据操作改为对数据块的操作,就可以得到信道编码性能测试的蒙特卡罗仿 真流程图(如下图所示) 信道编码性能测试的蒙特卡罗仿真流程图 开始 外部输入:信噪比(dB) 初始化变量:信噪比、发送接收信号变量数组、噪声变量数组 仿真序列长度、循环步长、数据块长、临时变量 清零: 循环计数器和差错计数器、数据块长计数器 循环计数器置1 生成发送数据块模块 数据块编码模块 信道编码的仿真 97601班陈鹏 第13页共59页
ee0b2ed9dd2e45a5980204cae1fb6d54.doc 信道编码的仿真 97601 班 陈鹏 第 13 页 共 59 页 在实际进行信道编码性能测试的蒙特卡罗仿真时,我们将仿真数据源序列分成 长度为 16 的码组,把分得的码组数作为循环步长,每一个循环步长依次进行发送 接收一个码组的仿真并将差错数进行累加,循环结束后将总误码数除以码序列长度 求得仿真误码率。从理论上讲,这样做不会对信道编码性能测试的蒙特卡罗仿真结 果造成偏差。从实际角度讲,这种方法不仅符合通信应用中编码先要划分数据块的 通用性原则,而且可以有效降低仿真的时间复杂度和空间复杂度。 同样,在原来的蒙特卡罗计算机仿真基本流程图中加入编译码模块,并对原来 的生成数据模块、叠加噪声模块、接收判决模块、差错计数模块进行改造,将各模 块中的数据操作改为对数据块的操作,就可以得到信道编码性能测试的蒙特卡罗仿 真流程图(如下图所示)。 信道编码性能测试的蒙特卡罗仿真流程图 差 错 计 数 器 开始 外部输入:信噪比(dB) 初始化变量:信噪比、发送接收信号变量数组、噪声变量数组、 仿真序列长度、循环步长、数据块长、临时变量 清零: 循环计数器和差错计数器、数据块长计数器 循环计数器置 1 生成发送数据块模块 数据块编码模块
ee0b2ed9dd2e45a5980204cael fb6d54 doc 生成叠加噪声信号模块 循环计数器加1 判决接收数据块模块 数据块译码模块 数据块差错计数模块 循环计数器次数已满? 显示差错计数器数值,计算误码率 结束 返回值:误码率 线性分组码 线性分组码的线性是指码组中码元间的约束关系为线性:分组是指编码时将每 k个信息位一组进行独立处理,变换成长度为n(n>k)的二进制码组 本次仿真采用(7,4) HAMMING码 性能参数如下 生成矩阵G: 1101000 0100100 l110010 1010001 校验矩阵H: 1001011 0101110 可纠错误图样: 信道编码的仿真 97601班陈鹏 第14页共59页
ee0b2ed9dd2e45a5980204cae1fb6d54.doc 信道编码的仿真 97601 班 陈鹏 第 14 页 共 59 页 N Y 线性分组码 线性分组码的线性是指码组中码元间的约束关系为线性;分组是指编码时将每 k 个信息位一组进行独立处理,变换成长度为 n (n>k) 的二进制码组。 本次仿真采用(7,4)HAMMING 码。 性能参数如下: 生成矩阵 G: 1 1 0 1 0 0 0 0 1 0 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 0 1 校验矩阵 H: 1 0 0 1 0 1 1 0 1 0 1 1 1 0 0 0 1 0 1 1 1 可纠错误图样: 生成叠加噪声信号模块 判决接收数据块模块 数据块差错计数模块 循环计数器次数已满? 显示差错计数器数值,计算误码率 结束 返回值:误码率 循环计数器加 1 数据块译码模块
ee0b2ed9dd2e45a5980204cael fb6d54 doc 伴随式 陪集首 S=(S0,S1,S2) e=(e0 el e2 e3 e4 e5 e6) 0000000 10 1000000 001011 00010 0001000 000 000 000 码长 信息位 监督位: n-k=3 最小距离:d=3 码率 (7,4) HAMMING码能纠正每一种单个随机错误。 MATLAB源程序 function [output h74]=hamming74(input h74 amming74,m(7,4) HAMMING码编码器 各 input h74输入序列 8 output h74输出编码序列 if (rem (length(input h74),4)*=0) input h74=[input h74, zeros(1, 4-rem (length(input h74),4))] n=length(input h74)/4 u=zeros (l,n*7)i for i=1: 4: n*4 u(j)=rem((input h74(i)+input h74(i+2)+input h74(i+3)),2)i u(j+1)=rem((input h74(i)+input h74(1+1)+input h74(1+2)),2)i u(3+2)=rem((input h74(i+1)+input h74(1+2)+input h74(1+3)),2)i u(1+3)=input h74(i)i u(+5)= input h74(i+2); u(+6)= input h74(i+3); j=j+7 end output h74 各 hamming74.m(7,4) HAMMING码编码器 信道编码的仿真 97601班陈鹏 第15页共59页
ee0b2ed9dd2e45a5980204cae1fb6d54.doc 信道编码的仿真 97601 班 陈鹏 第 15 页 共 59 页 伴随式 S=(S0,S1,S2) 陪集首 e = ( e0 e1 e2 e3 e4 e5 e6 ) 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 1 码长: n = 7 信息位: k = 4 监督位: n – k = 3 最小距离: d = 3 码率: k/n = 4/7 (7,4)HAMMING 码能纠正每一种单个随机错误。 MATLAB 源程序 function [output_h74]=hamming74(input_h74) %hamming74.m(7,4)HAMMING码编码器 %input_h74 输入序列 %output_h74 输出编码序列 if(rem(length(input_h74),4)~=0) input_h74=[input_h74,zeros(1,4-rem(length(input_h74),4))]; end n=length(input_h74)/4; u=zeros(1,n*7); j=1; for i=1:4:n*4 u(j)=rem((input_h74(i)+input_h74(i+2)+input_h74(i+3)),2); u(j+1)=rem((input_h74(i)+input_h74(i+1)+input_h74(i+2)),2); u(j+2)=rem((input_h74(i+1)+input_h74(i+2)+input_h74(i+3)),2); u(j+3)=input_h74(i); u(j+4)=input_h74(i+1); u(j+5)=input_h74(i+2); u(j+6)=input_h74(i+3); j=j+7; end output_h74=u; %hamming74.m(7,4)HAMMING 码编码器