纠错编码原理教学实验研究

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学生深入了解卷积码及Viterbi译码原理及效果。
(二)通过MATLAB进行纠错码教学演示
MATLAB除了在通信仿真方面可以为纠错码教学提供很好的辅助作用外,它还内置了一些可
供使用的教学演示程序(nemo),以帮助同学如何使用MATLAB进行编译码的仿真。下面简单
介绍卷积码及Viterbi译码演示的具体过程。首先,在MATLAB中的命令行窗口中键入demo t001.

,’’~、
d j10
、..,,
(a)编码器
C (b)状态转换图
图3 (2,1,2)卷积码
下面着重介绍经典的卷积码译码算法——Vite小i译码法。Viterbi译码算法是一种最大似然 译码算法。仍以上面的(2,l,2)卷积码为例,在编码时,其编码寄存器有四种状态a,b,C 和d,分别代表(D2,D1)=00,01。10.11四个状态,而每一个状态有两个输入分支和两个 输出分支,其网格图如图4所示。对应于上面例子的编码路径为方框中所指示的路径,t为编码 时间。
码的工作过程。通过编写其中的相关程序,使学生更深入地理解纠错编码原理,以此提高教学质 量与教学效果。
关键词 纠错编码MAⅡAB 实验教学
中图分类号G434
文献标识码A
提供可靠和有效的信息交换和传输是通信所追求的一个目标…,而纠错码是提供信息传输 可靠性的一种重要手段,因此,纠错码被作为通信学界的一个主要研究方向。“纠错编码原理” 是--t-J通信类专业的专业课,这门课要求循序渐进地学习纠错码系统理论,包含物理概念必要的 数学证明,以及纠错码理论的最新成果。但因为其知识涉及较深的数学理论和信息论理论,而且 由于该课程的理论性强,数学公式推导多,联系实际少,学生学起来感觉抽象难懂E2,3]。
O.0001 Checked lOooO
Convohtional EnoMer(卷积编码器)
Reset
On each frame
AWGN Channel(AWGN信道)
SNR(dB)
Signal to noise ratio
Decision type
Soft Decision
Viterbi Decoder(Viterbi译码器)
万方数据
一5l一
高等理科教育
2007年第6期(总第76期)
二、利用MATLAB进行程序编制
下面介绍如何用MATLAB进行卷积码和Viterbi译码的仿真程序的编制。(2,l,2)卷积码 编码器的结构如图3(a)所示。它包括:一个由N段组成的输入移位寄存器,每段有k个,共 Nk个寄存器;一组n个模2和相加器。一个由n级组成的输出移位寄存器。对应于每段k个比 特的输入序列,输出n个比特。由图可以看到,11个输出比特不仅与当前的k个输入信息有关, 还与前(N一1)k个信息有关。卷积码常记为(n,k,N)码。当k=1时,N—l就是寄存器的 个数。图3(b)显示出了相应的状态转换图,其中的实线代表输入为O,虚线代表输入为1。每 一条线上的数字代表的是相对应的输出子组bout=(bl,b2)。假设输人序列为bin= (10110010),寄存器初始状态为0,则子码bl=(11000111),b2=(10011110)。于是,译码 器的输出码字为bout=(11,10,00,Ol,01,1l,11,10)。
在上面的例子中,把通信系统的结构分成了几个部分,可以将每个部分看成一个模块。为了 方便通信系统中各模块的研究及仿真,在MATLAB的Simulink模型库中有多种通信系统模块。 要通过MATLAB进行通信系统的仿真,首先要建立通信系统的基本数学模型,根据通信系统的 基本原理确定总的系统功能,将各部分功能模块化。然后找出各部分之间的关系,画出系统框
一50一
万方数据
高等理科教育
的默认参数。需要更改的模块及其主要参数如表1所示。
表1
模块参数设置
。纠错编码原理1课程实验教学研究
模块名称
参数名称
修改值
Bernoulli Random Binary Generator(伯努利随 机二进制序列产生器)
Sample time Frame—based outputs Samples per frame
Number of soft decision bits Tracebaek depth Opeartion mode
DecisionBits 10 Truncated
表l可以更改的参数主要有SNR和
DeeisionBits等几个。得到的误码率的结 果将保存在MA,11.AB变量BitErrorRate中 (表中未示出)。改变AWGN信道模块中 的信噪比(SNR)和Viterbi译码过程中 均匀量化器的判决比特数(Decision. Bits)。然后利用MATLAB中的命令(如 作图命令semilogy)编写程序,得出信 噪比与误码率(BitErrorRate)的关系图, 如图2所示。MATLAB源程序的编写方 法可参阅文献哺.9J。
(一)通过用MATLAB进行卷积码软判决译码仿真 卷积码是1955年由Elias提出的,它与分组码有很大的不同。分组码编码时,本组中的n— k个校验元仅与本组的k个信息元有关,而与其它各组的码元无关。分组码译码时,也仅从本码 组中的码元内提取有关译码信息,而与其它各组无关。而卷积码是另外一种编码方法,它也是将 k个信息比特编成r1个比特.但k和11通常很小,特别适合于串行通信和数据传输。与分组码不 同,卷积码编码后的n个码元不仅与当前段的k个信息有关。还与前面的N—l段信息有关,编 码过程中互相关联的码元个数为nN。N是编码过程中相互约束的码段的个数,称为编码约束度, 卷积码的纠错性能随编码约束度N的增加而增大,而差错率随N的增加而下降。在MATLAB中 若要进行卷积码的仿真,可以利用Simulink中的卷积码模块。首先,确定总的系统功能,然后找 出各部分之间的关系,画出系统框图。根据要求,用Simulink中相应的模块组成一个仿真系统。 (如图1所示)
—弋 ·。。1—日 —’舅C皇K~
】鲁0ec j—争Dec s Off 811s=2 s 0(1 B is=3
≮‘.寻l s on B ts24
·l::…,出
嚣j

、 淞.
.:;:..…。;.…..
……
,l 0 ~
……;一减!&一

一弋



:^
l …x
图2直观而清晰地表明了信噪比和
判决比特数对误码率的影响。根据观察 可以得到,误码率随着信噪比的提高而
图2信道误比特率与编码信号误比特率的关系曲线图
减少。而判决比特数也对误码率有影响,判决比特数越多,误码率越小。但是,判决比特数大于
3后,误码率减少幅度不明显。此外,MATLAB还可以对Viterbi译码的硬判决译码进行仿真,只
要对图l中的一些模块做相应的调整即可。通过对Viterbi译码的软硬判决译码的比较,可以使
a 00
b 01
C 10
d11

-'


图4 (2-1-2)卷积码的网格图.
对于一个长度为L的序列,由于所有的可能信息序列共有2kL个,因此篱笆图上也有相对 应的2kL条路径。当码字序列经过信道传输到达接收方后,译码器的工作就是要根据所接收的码 字,对编码的路径进行最大似然估计。
下面展示如何利用MATLAB对上面的卷积码的译码进行仿真。先用MATLAB产生(O,1) 随机序列,以此作为信源,然后对该信源进行卷积码编码。对得到的码字进行BPSK调制,这里
box Communications就可以进入通信工具箱的演示列表了。然后,在左栏选择Convolutional En·
coder and Viterbi Decoder这个选项,进入到相应演示程序的说明。选择运行演示程序。演示则逐
步进行。配合演示中的说明可以更清楚地了解每一步的作用,同时还可以通过查看相应的源代码 深人了解该仿真的实现过程。
MATLAB是由美国MathWorks公司开发的集数值计算、符号计算和图形可视化三大功能于一 体的,功能强大、操作简单的工具Hj】。在世界各高校,MATLAB已经成为数值计算处理、数字 信号处理和动态系统仿真等课程的基本教学工具。在通信方面,MATLAB提供了专门的函数库及 功能强大的工具箱,从而为学生提供了极好的通信系统开发、设计、模拟、调试和分析的平台。 通过MATIdkB可以快速地构建和运行通信仿真模型,根据仿真结果分析通信系统性能,可以帮 助学生更好地理解和掌握通信系统知识,提高学生学习兴趣和学习效率。
一52—
万方数据
高等理科教育
“纠锗编码原理”课程实验教学研究
用一l和+1分别代表0和l。在此基础上加入AWGN噪声。比如,此噪声图样为n=[一
0.3062.一0.1322:一1.1791,0.5138;0.0887。一0.4165;0.2037,1.5456;一O.8116,一 0.0966;0.8431,0.0807:0.8419.0.7552;一0.0266,0.0420;0.2317,一O.0677;0.1236。一
一、MATLAB中的通信模块和纠错编码模块
数字通信系统由七个部分组成,其中信源编码器是把信源发出的消息转换成数字信息序列, 而信源解码器则刚好相反,是把数字信息序列转换成原来的信息送给信宿(即接收用户)。而纠 错码所研究和关心的则是图中信道编译码器和信道噪声部分。由于受信道干扰的影响,接收到的 信息序列中可能已有错误,通过信道译码,可对其中的错误进行纠正。这就是纠错码的主要作 用。
高等理科教育
Leabharlann Baidu
。纠错编码原理”课程实验教学研究
“纠错编码原理”课程实验教学研究’
刘星成朱帜
(中山大学 电子与通信工程系。广东广州510275)
摘要文章针对纠错编码原理课程教学中存在的问题,探讨用MATLAB软件工具进行辅 助实验教学。提出了用MATLAB中的通信模块搭建数字通信系统的方法,并模拟纠错编码和译
·收稿13期2006一Il一07 作者简介刘星成(1964一)男。江西安福人,副教授,主要从事信息与编码技术、移动通信、无线通信网络研究. ·———49··一
万方数据
高等理科教育
2007年第6期(总第76期)
图[6'7】。在MATLAB中有专门的通信模块和纠错码模块。这就给同学们进行通信系统的纠错码仿 真提供了极大的方便。下面介绍如何用MATLAB进行纠错码的仿真。
(a)卷积码系统仿真框图
(b)Viterbi译码子系统
图1卷积码系统仿真框图(AWGN信道) 在图l(a)中,左边是信源部分。信源经过卷积码编码和BPSK调制后送至中间的加性高 斯白噪声(AWGN)信道,再经Viterbi译码子系统送到右边的误码率计算模块。得到BER输出
和显示。为了保证统计结果的准确度,仿真要有足够多的数据,但又同时希望仿真时间尽量短, 因此,这里设置的仿真参数——抽样间隔为0.0001秒(每帧抽样10000次),系统运行的时间为 10秒。在信源端采用的是Bernoulli信号发生器,产生的伪随机二进制序列经卷积码编码模块。 而译码模块接收到AWGN信道上传来的信息后,先对这些信息进行一系列的预处理,再送至 Viterbi译码器进行译码。Viterbi译码的具体步骤如图l(b)所示。先对这些信息进行复数至实 数的转换,再计算输入信号的标准差。然后.用这个标准差除去复数转换模块中输出的信号。将 得到的信号通过单位放大器进行符号翻转,再通过均匀量化器和数据类型转换模块转换后送人二 进制解调器模块。最后,再送至Viterbi译码模块完成整个译码过程。在下面的仿真实验中都用 simulink库中的模块进行仿真,Viterbi译码模块的回溯深度为lo,编码过程中使用simulink设置
0.5893],加入噪声后的接收码字为recv—codewd=[0.6938,0.8678;一0.1791,一0.4862;
一0.9113,一1.4165;一0.7963,2.5456;一1.8116,0.9034;1.8431,1.0807;1.8419,
1.7552;0.9734,一0.9580;1.2317,0.9323;-0.8764,一1.5893]。将接收到的码字和编码的 可能输出相对比.每条可能编码路径的输出码字和对应的接收码字的差值之和就是该路径的路径 量度。然后对比各路径量度,量度小的就是可能性最大的编码路径。但是,因为可能的路径有 2kL条,因此当kL较大时,待比较的路径数目就很大。Viterbi译码算法译码的时候,只保留所 有状态下路径量度最小的一条路径,其它的路径被抛弃。例如,在t=4时,a,b,e和d四个状 态所对应的路径为a:{8,b,d,Cl,b:{a,b,d,d},c:{a,a,a,8}和d:l a,b,c, b}。在这里可以看出,上述路径对应的积累误差是a:8.5926,b:6.8225,e:8.7434,d: 4.3858。此时状态d所对应的路径是最大的似然路径,此时路径所对应的输入信息元为{l,0, l,l}。这就是Viterbi译码的基本原理。
相关文档
最新文档