213卷积码编码和译码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
No.15 (2,1,3)卷积码的编码及译码
摘要:
本报告对于 (2,1,3)卷积码原理部分的论述主要参照啜刚教材和课件,编程仿真部分绝对原创,所有的程序都是在Codeblocks 8.02环境下用C语言编写的,编译运行都正常。完成了卷积码的
编码程序,译码程序,因为对于短于 3 组的卷积码,即2 bit 或4 bit 纠错是没有意义的,所以对正确的短序列直接译码,对长序列纠错后译码,都能得到正确的译码结果。含仿真结果和程序源代码。
如果您不使用Codeblocks 运行程序,则可能不支持中文输出显示,但是所有的数码输出都是正确的。
一、卷积码编码原理
卷积码编码器对输入的数据流每次1bit或k bit进行编码,输出n bit编码符号。但是输出的分支码字的每个码元不仅于此时可输入的k个嘻嘻有关,业余前m个连续式可输入的
信息有关,因此编码器应包含m级寄存器以记录这些信息。
k
通常卷积码表示为(n,k,m).编码率r —
n
当k=1时,卷积码编码器的结构包括一个由m个串接的寄存器构成的移位寄存器(成
为m级移位寄存器、n个连接到指定寄存器的模二加法器以及把模二加法器的输出转化为穿行的转换开关。
本报告所讲的(2,1,3)卷积码是最简单的卷积码。就是n 2,k 1,m 3的卷积
码。每次输入1 bit输入信息,经过3级移位寄存器,2个连接到指定寄存器的模二加法器,并把加法器输出转化为串行输出。
Encoder
OuTi>iit
编码器如题所示。
二、卷积码编码器程序仿真
C语言编写的仿真程序。
为了简单起见,这里仅仅提供数组长度30 bit的仿真程序,当然如果需要可以修改数
组大小。为了更精练的实现算法,程序输入模块没有提供非法字符处理过程,如果需要也可以增加相应的功能。
进入程序后,先提示输入数据的长度,请用户输入int (整型数)程序默认用户输入
的数据小于30,然后提示输入01数码,读入数码存储与input数组中,然后运算输出卷积码。经过实验仿真,编码完全正确。
以下是举例:
a.课件上的输入101输出11 10 00的实验
b 更长的序列测试
'C :\U se r 2\
吕静"'g 5 ktop\213巻积碍中 ni\De b u g\21 >巻职码亡灼
三、卷积码译码原理
由有限状态移位寄存器产生的卷积码实质上是一个有限状态机。 大似然译码就是在所有合法码字中找出一个最接近接收码字的码字。
译码法则是对于给定的接收符号序列 R 找出最大可能的编码符号序列 C 。维特比于1967
年提出的维特比算法能够系统地去除那些不可能具有最大度量的路径排除,
从而降低了
最大似然译码的复杂度。
(n, k)线性分组码的最
卷积码的最大似然
r SO = CIO, 51^01, S2-10, S3-11
10
(2,1,3 )卷积码的状态图
(2,1,3 )卷积码的网格图
卷积码一码通常按最大似然法则一码,对二进制对称信道(
BSC ,它就等小于最小汉
明距离译码。在这种译码器中,把接收序列和所有可能发送序列比较,选择一个汉明距 离最小的序列盘坐发送序列。由于信息序列编码序列有着 ------------------ 对应关系,这种序列和网 格图的一条路径唯一对应,因此译码就是根据接收序列 R 在网格图上全力搜索编码器在
编码时经过的路径。
四、卷积码译码器程序仿真
C 语言编写的仿真程序。
为了简单起见,这里仅仅提供数组长度 2X 10 bit 的仿真程序,当然如果需要可以修
改数组大小。为了更精练的实现算法,程序输入模块没有提供非法字符处理过程,如果 需要也可以
增加相应的功能。
进入程序后,先提示输入数据的长度,请用户输入 int (整型数)程序默认用户输入
的数据小于30,然后提示输入01数码,读入数码存储与input 数组中,然后运算输出 卷积码。经过
实验仿真,译码完全正确。 以下是举例:
a.课件上 接收码字11 10 00译码101的实验
0.
「】匕
10
:IO)
'r 一
人
00
11 '•
厂、
、_
/Il
虚线代表输入1 实线代农输入0
00® rftjo SKA
OQ 亠 D0 ,11
11
01c
11 .2
叶曲ill 时那 时刊」 中机.
z
时副? \ 11 k U 耳 11 k U AH \ U
\
「
八
___ ________ 卫二 __ iL? ______ _______ _________ b
10 10 i>o 10 LO 10
10 in
畔尉:
… 00 天 11 \ U
“ 00 - / 00 " < EK) :,00' > / 00
7 _____
/
□ C\Use rs厲静\Wsldop\卷积码解础b;呱Debug、巻积码霹国.exe
b.对应上文中的,长序列译码测试结果
c•译码与编码的区别在于容错性,如果在传输过程中有出错的比特,也应该用Viterbi decoder在一定的范围内自动纠错,得到正确的发端的编码,并翻译出发端的原码。本报告中对于比较长的序列(>2)进行纠错。以课件中的例子进行仿真
R=[10 10 00 01 11 0|l]
C=[II40H00,0140/01]
R是收到的码字,C是发送方发出的正确的码字,R有2 bit信息出现错误。运行程序的到结果。