通信原理设计报告(7,4)汉明码的编解码设计(3)

2019-01-12 16:38

通信系统课程设计报告

● 编码流程图及打包生成的分立元件

编码器分立元件: 编码程序的设计流程图:

开始 输入信息码 a3a2a1a0

编出监督位 b2b1b0 输出(7,4)汉明码b6b5b4b3b2b1b0 结束

4.3 (7,4)汉明码编码程序的编译及仿真

用QuartusII进行编译仿真,在编译没有出错的的情况下选择新建波形文件,根据程序验证的需要设置波形,即设置好输入信息码a3a2a1a0的初始值,点击“波形仿真”,出现如下波形:

(7,4)汉明码的编码仿真波形 <部分>

第11页 共22页

通信系统课程设计报告

从上图的波形中可以看出,datain输入4 位信息码0000~1111,分别对应编码输出为b,输出了对应的7 位(7,4)汉明码,对照表1 汉明码全部码字,可见本次(7,4)汉明码编码的正确性。

第5 章 (7,4)汉明码的译码器的设计

5.1 (7,4)汉明码译码方法

(7,4)汉明码的译码器的功能就是把输入的7 位汉明码B=[b6b5b4b3b2b1b0] 译为4位信息码a3a2a1a0,并且根据伴随矩阵S 从而纠正编码中可能出现的1 位错码。

根据监督矩阵H和生成矩阵G的关系,即:

H = [P Ir] ,其中Ir是3?3的单位阵, G = [Ik Q] ,其中Ik 是4?4的单位阵,

P?QT (式5.1.1) 生成矩阵?

?1000....111?0100....110? G=??0010....101??0001....011??1110???=?I,Q? 由式(5.1.1),得P=?1101k????1011??? ???监督矩阵 ??

??1110?? ?H?1101???1011?100???010??PIr???001??由式(3.3.2)知S?B?HT?(A?E)HT?E?HT,其中E=[en?1,en?2,...,e1,e0] 从而即可得到校正子S与(7,4)汉明码各位之间的关系:

S2?a6?a5?a4?a2 S1?a6?a5?a3?a1

?? S0?a6?a4?a3?a0

第12页 共22页

通信系统课程设计报告

算出校正子S(S2S1S0)后,对照表2,即可判断出哪位出错,并纠正出错的那位,从而输出正确的码字。

5.2 (7,4)汉明码译码程序的设计

根据前面分析的译码原理,由于译码器的输入为7 位汉明码:

B=[b6b5b4b3b2b1b0]

输出是4 位信息码:a3a2a1a0,并且同时输出校正子S与错误的码位C。可得:

译码器的7为汉明码输入语句:port(b:in std_logic_vector(6 downto 0); 译码器的信息码输出语句:port(a: out std_logic_vector(3 downto 0); 译码器的校正子输出语句:port(s: out std_logic_vector(2 downto 0); 译码器的错码位置输出语句:port(c: out std_logic_vector(2 downto 0); 译码器的校正子S 与(7,4)汉明码各位之间的关系语句:

sss(2):=b(6) XOR b(5) XOR b(4) XOR b(2); sss(1):=b(6) XOR b(5) XOR b(3) XOR b(1); sss(0):=b(6) XOR b(4) XOR b(3) XOR b(0);

判定校正子S 与0 的关系,可以使用if 语句。如果S 为0,则表示没有错误;如果S 不为0,则表示有一位出错。然后根据表2可以得到校正子S 与错误图样E 之间的关系,再使用case 语句,编写如下程序:

when \when \when \when \when \when \when \

在上述程序中,bb、sss 是设置的变量。bb 存放的是译码器的7 位汉明码输入

b6b5b4b3b2b1b0。当

S=\,时,表示b0出错,则只要将这一位的值取反,然后

再送给b0输出,就可以纠正错码了。b1b2b3b4b5b6的纠错原理同b0。

第13页 共22页

通信系统课程设计报告

程序最后的译码输出表示为:a<=bb(6)&bb(5)&bb(4)&bb(3);

在程序中,C 表示错误在哪一位。若第0 位(a0)出错,则C 输出0;若第1 位出错,则C 输出1;??;若无错,则C 输出7。这样译码程序就可以编出来了。译码源程序见附录。

● 译码流程图及打包生成的分立元件

译码程序设计的流程图:

开始 译码输入七位码 b6b5b4b3b2b1b0 根据输入求出校正子 校正子N S=0? 根据S与E的关Y 系纠正错码 输出四位信息码 a3a2a1a0 结束

第14页 共22页

译码器分立元件:

通信系统课程设计报告

5.3 (7,4)汉明码译码程序的编译及仿真

编好程序后,用QuartusII软件进行编译仿真,设置好输入的7位汉明码为

b6b5b4b3b2b1b0,根据输入求出校正子S,判断

S是否为零,若为0,则说明无错,

直接输出;若不为0,则根据S与E的对应关系判断出出错的那位并纠正之,然后输出纠正后的码字。

(7,4)汉明码的译码仿真波形

在以上波形中可见,a 为译码输入,输入7 位信息码,分别对应译码输出的b输出了对应的4 位信息码,对照表1可以验证(7,4)汉明码的译码结果是否正确。并且在输入码有单个错码的情况下能纠正错码,纠错情况对应表2。如波形图中输入a 为1000000,输出b 为0000,并且校正子s 为111,错码位置c 为6,表示错码为b6。如波形图中输入a 为0000000,输出b为0000,并且校正子S为000,错码位置C为7,表示无错。

译码器的输入输出情况如下表所示:

第15页 共22页


通信原理设计报告(7,4)汉明码的编解码设计(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:北理工信号与系统精品课程习题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: