文档库 最新最全的文档下载
当前位置:文档库 › (7,4)汉明码编解码器的设计

(7,4)汉明码编解码器的设计

(7,4)汉明码编解码器的设计
(7,4)汉明码编解码器的设计

(7,4)汉明码编解码器的设计

序言

VHDL语言具有功能强大的语言结构,可用明确的代码描述复杂的控制逻辑设计,并且具有多层次的设计描述功能,支持设计库和可重复使用的元件的生成。近几十年来,EDA技术获得了飞速发展。它以计算机为平台,根据硬件描述语言VHDL,自动地完成逻辑编译、化简分割、综合及优化,布局布线,仿真直至对特定目标芯片的适配编译,逻辑映射和编程下载等工作。以自顶向下的设计方法,使硬件设计软件化,摆脱了传统手工设计的众多缺点。随着EDA技术的深入发展基于硬件描述语言的方法将有取代传统手工设计方法的趋势。

EDA ( Elect ronics Design Automation) 技术是随着集成电路和计算机技术飞速发展应运而生的一种高级、快速、有效的电子设计自动化工具。目前,VHDL语言已经成为EDA的关键技术之一,VHDL 是一种全方位的硬件描述语言,具有极强的描述能力,能支持系统行为级、寄存器传输级和逻辑门级三个不同层次的设计,支持结构、数据流、行为三种描述形式的混合描述,覆盖面广,抽象能力强,因此在实际应用中越来越广泛。

汉明码是在原编码的基础上附加一部分代码,使其满足纠错码的条件。它属于线性分组码,由于汉明码的抗干扰能力较强,至今仍是应用比较广泛的一类码。

本文用VHDL语言实现了(7,4)汉明码的编码和译码,并通过实例来说明利用VHDL语言实现数字系统的过程。在介绍(7,4)汉明码编码和译码原理的基础上,设计出了(7,4)汉明码的编码器和译码器,写出了基于VHDL实现的源程序,并通过QUARTUSⅡ软件进行仿真验证。

第1章QuartusⅡ与VHDL简介

1.1 QuartusⅡ软件简介

QuartusⅡ是Altera公司推出的CPLD/FPGA的开发工具,QuartusⅡ提供了完全集成且与电路结构无关的开发环境,具有数字逻辑设计的全部特性。

?/P>

Quartus Ⅱ设计软件提供完整的多平台设计环境,可以很轻松地满足特定设计的需要。

它是可编程片上系统(SOPC)设计的综合性环境,拥有FPGA 和CPLD设计的所有阶段的解决方案。与其它EDA软件相比较QuartusⅡ软件的特点主要包括:

1、可利用原理图、结构框图、Verilog HDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件。

2、芯片(电路)平面布局连线编辑。

3、LogicLock增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块。

4、功能强大的逻辑综合工具。

5、完备的电路功能仿真与时序逻辑分析。

6、定时/时序分析与关键路径延时分析。

7、可使用SignalTap Ⅱ逻辑分析工具进行嵌入式的逻辑分析。

8、支持软件源文件的添加和创建,并将它们链接起来生成编程文件。

9、使用组合编译方式可一次完成整体设计流程。

10、自动定位编译错误。

11、高效的期间编程与验证工具。

12、可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件。

13、能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件。

1.2 VHDL简介

“VHDL设计”作为信息类专业新开出的一门重要的专业课,相对于传统课程具有内容新、发展快、应用性强等特点。在硬件电子电路设计领域中,电子设计自动化(EDA)工具已成为主要的设计手段,而VHDL语言则是EDA的关键技术之一。VHDL语言具有功能强大的语言结构,可用明确的代码描述复杂的控制逻辑设计,并且具有多层次的设计描述功能,支持设计库和可重复使用的元件的生成。近几十年来,EDA技术获得了飞速发展。它以计算机为平

台,根据硬件描述语言VHDL,自动地完成逻辑编译、化简分割、综合及优化,布局布线,仿真直至对特定目标芯片的适配编译,逻辑映射和编程下载等工作。以自顶向下的设计方法,使硬件设计软件化,摆脱了传统手工设计的众多缺点。随着EDA技术的深入发展基于硬件描述语言的方法将有取代传统手工设计方法的趋势。

第2章 (7,4)汉明码的原理

2.1 基本概念

线性分组码是一类重要的纠错码,应用很广泛。在(n,k)分组码中,若

督元是按线性关系相加而得到的,则称其为线性分组码。

现在以(7,4)分组码为例来说明线性分组码的特点。设其码字为A=[a6,a5,a4,a3,a2,a1,a0],其中前4位是信息元,后3位是监督元,可用下列线性方程组来描述该分组码,产生监督元:

a2 = a6 + a5 + a4

a1 = a6 + a5 + a3 (2.1.1)

a0 = a6 + a4 + a3

显然,这3个方程是线性无关的。经计算可得(7,4)码的全部码字,如表2-1所示。

表2-1 (7,4)码的全部码字

?/P>

不难看出,上述(7,4)码的最小码距d0=3,它能纠1个错或检2个错。

汉明码是能够纠正单个错误的线性分组码,其特点是:最小码距d0=3,码长n与监督位满足n=2r-1的关系,上述的(7,4)线性分组码就是一个汉明码。

2.2 监督矩阵H

式(2.1.1)所示(7,4)汉明码的3个监督方程改写后可用矩阵形式表示为

a6

a5

1 1 1 0 1 0 0 a4 0

1 1 0 1 0 1 0 · a3 = 0 (2.2.1)

1 0 1 1 0 0 1 a

2 0

a1

a0

并简记为H·AT=0T 或A·HT=0(2.2.2)

H称为监督矩阵,一旦H给定,信息位和监督位之间的关系也就确定了。H矩阵可以分成2部分

1 1 1 0 1 0 0

H = 1 1 0 1 0 1 0 =[P Ir] (2.2.3)

1 0 1 1 0 0 1

H·AT=0T,可以用来作为判断接收码字A是否出错的依据。

2.3 生成矩阵G

把监督方程补充完整并改写为矩阵形式

a6 1 0 0 0

a5 0 1 0 0

a4 0 0 1 0 a6

a3 = 0 0 0 1 · a5 (2.3.1)

a2 1 1 1 0 a4

a1 1 1 0 1 a3

a0 1 0 1 1

A = [a6 a5 a4 a3] ·G(2.3.2)

其中

1 0 0 0 1 1 1

0 1 0 0 1 1 0

G = 0 0 1 0 1 0 1 (2.3.3)

0 0 0 1 0 1 1

G称为生成矩阵,由G和信息组就可以产生全部码字。生成矩阵也可以分成2部分,即 G = [Ik Q] (2.3.4)

其中 1 1 1

Q = 1 1 0 = PT (2.3.5)

1 0 1

0 1 1

2.4 伴随式(校正子)S

设发送码组A= [an—1,an—2,…,a1,a0 ],在传输过程中可能发生误码。接收码组B=[ bn—1,bn—2,…,b1,b0 ],收发码组之差定义为错误图样E,即

E = B - A (2.4.1)

令S = BHT,称为伴随式或校正子。

S = BHT =(A + E)HT = EHT (2.4.2)

上述(7,4)汉明码的伴随式与错误图样的对应关系如表2-2所示。

表2-2(7,4)汉明码S与E的对应关系

第3章 (7,4)汉明码编解码器的设计

3.1 (7,4)汉明码的编码思路及程序设计

3.1.1 (7,4)汉明码的编码思路

(7,4)汉明码的编码就是将输入的四位信息码编成七位的汉明码,即加入三位监督位。根据式(2.3.2)A = [a6 a5 a4 a3] ·G可知,信息码与生成矩阵G的乘积就是编好以后的(7,4)汉明码,而生成矩阵G又是已知的,由式(2.3.3)得

1 0 0 0 1 1 1

0 1 0 0 1 1 0

G = 0 0 1 0 1 0 1 (3.1.1)

0 0 0 1 0 1 1

所以,可以得出如下方程组

a6 = a6

a5 = a5

a4 = a4

a3 = a3 (3.1.2)

a2 = a6 + a5 + a4

a1 = a6 + a5 + a3

a0 = a6 + a4 + a3

根据式(3.1.2)就可以编出编码程序了。

3.1.2 (7,4)汉明码的编码程序设计

根据(7,4)汉明码的编码原理,首先画出程序设计的流程图:

图3.1 编码流程图

输入信息码a3a2a1a0,输出(7,4)汉明码b6b5b4b3b2b1b0。

首先,输入信息码a3a2a1a0,即使用以下语句:

port(a:in std_logic_vector(3 downto 0);

然后,根据式(3.1.2),就可以得到监督位与信息码之间的对应关系,使用异或运算,即:

b(2)<=a(3) xor a(2) xor a(1);

b(1)<=a(3) xor a(2) xor a(0);

b(0)<=a(3) xor a(1) xor a(0);

最后,将算好的监督位与原来输入的信息码一起输出,这样,编码程序就算完成了。

3.2 (7,4)汉明码的译码思路及程序设计

3.2.1 (7,4)汉明码的译码思路

(7,4)汉明码的译码就是将输入的七位汉明码翻译成四位的信息码,并且纠正其中可能出现

的一个错误。

由于生成矩阵G是已知的,所以根据式(2.3.4)G = [Ik Q] ,可以得到矩阵Q的值

1 1 1

Q = 1 1 0 = PT (3.2.1)

1 0 1

0 1 1

那么 1 1 1 0

P = 1 1 0 1 (3.2.2)

1 0 1 1

而监督矩阵H与PT又存在一定的关系,即

H =[P Ir] (3.2.3)

那么就可以算出监督矩阵H的值,即

1 1 1 0 1 0 0

H = 1 1 0 1 0 1 0 (3.2.4)

1 0 1 1 0 0 1

所以 1 1 1

1 1 0

1 0 1

HT = 0 1 1 (3.2.5)

1 0 0

0 1 0

0 0 1

根据式(2.4.2)S = BHT =(A + E)HT = EHT可以看出校正子S与错误图样E之间有确定的线性变换关系。而E =[ en-1,en-2,…,e1,e0 ],这样就可以算出校正子S与(7,4)汉明

码各位之间的关系,即

S2 = a2 + a6 + a5 + a4

S1 = a1 + a6 + a5 +a3 (3.2.6)

S0 = a0 + a6 + a4 + a3

对照表2-2,就可以确定每一位出错时,对应的校正子s2s1s0的值。

这样,译码问题就迎刃而解了。

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

根据(7,4)汉明码的译码原理,首先画出程序设计的流程图:

图3.2.1 译码流程图

首先,输入7位汉明码a6a5a4a3a2a1a0,用以下语句来实现:

port(a:in std_logic_vector(6 downto 0);

然后,根据这7位码a6a5a4a3a2a1a0,计算校正子s2s1s0的值,根据式(3.2.6)可知校

正子S与(7,4)汉明码各位之间的关系,即:

ss(2):=a(6) xor a(5) xor a(4) xor a(2);

ss(1):=a(6) xor a(5) xor a(3) xor a(1);

ss(0):=a(6) xor a(4) xor a(3) xor a(0);

第三,要判定校正子与0的关系,使用if语句,若等于0,则表示没有错误;若不为0,则表示其中有一位出错。根据表2-2,可以得到校正子S与错误图样E之间的关系,才用

case语句,编写程序如下:

when "001" =>bb(0):= not bb(0);c<="000";

when "010" =>bb(1):= not bb(1);c<="001";

when "100" =>bb(2):=not bb(2);c<="010";

when "011" =>bb(3):=not bb(3);c<="011";

when "101" =>bb(4):=not bb(4);c<="100";

when "110" =>bb(5):=not bb(5);c<="101";

when "111" =>bb(6):=not bb(6);c<="110";

上述程序中,bb是变量,存放的是输入7位汉明码a6a5a4a3a2a1a0,

当S="001",时,表示a0出错,则只需将这一位的值取反,然后再送给输出。a1、a2、a3、

a4、a5、a6出错的原理也是一样的。

最后,将没有错误的(7,4)汉明码或已经纠正1个错误的(7,4)汉明码输出,这样译码程序

就完成了。

为了方便阅读波形,加入输出了校正子S和错误位数C。若第0位(a0)出错,则C输出0,

依次类推;若无错,则输出7。

第4章编译程序的调试与分析 4.1 (7,4)汉明码的编码程序调试与分析

4.1.1 (7,4)汉明码的编码程序的编译

按照上述编码程序的编写思路,编写好程序,点击,进行编译,出现一些错误,如下:Error 1: VHDL error at ym.vhd(3): object "std_logic_vector" is used but not declared

Error 2: VHDL error at bm.vhd(7): entity "bm" is used but not declared Error 1表明在使用"std_logic_vector"时,没有打开可以使用这个函数的库,应该在程序

的最前面加上如下语句:

library ieee;

use ieee.std_logic_1164.all;

Error 2表明程序中的文件名与保存时的文件名不一致,两者应该相同。

排除上述错误后,就可以进行波形仿真了。

4.1.2 (7,4)汉明码的编码程序的仿真分析

建好波形文件,设置好输入信息码a3a2a1a0的初始值,点击,进行波形仿真,出现如下波

形:

图4.1(7,4)汉明码的编码仿真波形

从波形中,可以看出输入信息0000~1111,对应的编码情况。对照表2-1 ,可以确定(7,4)

汉明码的编码程序完全正确,编码成功。

4.2 (7,4)汉明码的编译码程序分析及调试

4.2.1 (7,4)汉明码的译码程序的编译

按照上述译码程序的编写思路,编写好程序,点击,进行编译,出现一些错误,如下:Error 1: VHDL syntax error at ym.vhd(12) near text "variable"; expecting "end", or "(", or an identifier ("variable" is a reserved keyword), or a sequential

statement,

Error 2: VHDL Case Statement error at ym.vhd(19): Case Statement choices must cover

all possible values of expression

Error 1表明"variable"变量定义的位置有误。变量的定义一定要放在process(a)之后,

begin之前。

Error 2表明case语句使用有误。使用case语句时,必须列出它的所有可能值,或者列出部分值,然后使用when others =>语句即可。

改正上述错误,就可以对其进行波形仿真了。

4.2.2 (7,4)汉明码的译码程序的仿真分析

建好波形文件,设置好输入(7,4)汉明码a6a5a4a3a2a1a0的初始值,点击,进行波形仿真,

出现如下波形:

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

由于设置的分别是a0、a1、a2、a3、a4、a5、a6出错,从波形上就可以清楚的看出该程序存在一定的问题,虽然没有语法错误,但存在着逻辑错误。

由波形可知:a0出错时的校正子S为100,a1出错时的校正子S为010,

a2出错时的校正子S为001,a3出错时的校正子S为110,

a4出错时的校正子S为101,a5出错时的校正子S为011,

a6出错时的校正子S为111。

而根据表2-2可知:

a0出错时的校正子S为100,a1出错时的校正子S为010,

a2出错时的校正子S为100,a3出错时的校正子S为011,

a4出错时的校正子S为101,a5出错时的校正子S为110,

a6出错时的校正子S为111。

由此可以推断是校正子S的高低位搞错了,仔细查看程序,发现的确是这个问题,改正后,

编译仿真的以下波形:

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

对照表2-2,仔细观察波形,可以确定波形没有问题,这样,(7,4)汉明码的译码程序就完

全正确了,译码成功。

参考文献

[1] 辛春艳.VHDL硬件描述语言[M].北京:国防工业出版社,2002.

[2] 侯伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计[M].西安:西安电子科技大学出

版社,2002。

[3] 金西.VHDL与复杂数字系统设计[M].西安:西安电子科技大学出版社,2003.

体会与建议

为期一周的课程设计就这么结束了,忙碌而又辛劳,但是却让我学到了许多东西,为不久

的将来走上工作岗位打下了一定的基础。

一开始老师给我们布置了题目——(7,4)汉明码的编解码器的设计。拿到题目,我们非常着急,以为这个题目很难,象一只没头的苍蝇,我们开始乱钻,最后,一头扎进了图书馆,借了好几本书。来仔细的翻看了通信原理的书和笔记,对(7,4)汉明码的一些基本概念有了进一步的会议。突然发现这个课题其实一点也不难,一点技术含量都没有,似乎一个人也可以完成的。仔细阅读了(7,4)汉明码的原理以后,我就开始构思程序的编写,准备画流程图。其实编译码的思路非常清晰,流程图很快就画好了。接下来就是程序的编写,由于好久没有使用VHDL语言,有好多语句都遗忘了,于是翻出以前EDA的书和笔记,认真的看了几遍,对一些语句的用法和使用时的注意事项有了一个大概的了解。然后就开始编程序。编码程序比较简单,只有十几行,仅半个小时,编码程序就编好了,并且运行正确了,是心里就踏实了很多。接下来的译码程序也比较简单,半小时就编好了程序,但是却遇到了一个问题——编译没有错误,但是仿真波形却不对,很郁闷,很疑惑,找了半天也没有发现问题。后来仔细的观察了仿真波形,才发现问题所在——校正子的高低位弄错了。

一周的课程设计结束了,让我收益颇丰。通过这次的课程设计,我对VHDL语言有了新的认识,掌握了用VHDL语言编程的方法,并且能够熟练的运用它去编写各种各样的程序,它为以后能够从事这方面的工作提供了一定的基础。在掌握VHDL语言的基础上,进一步理解了(7,4)汉明码的编解码原理以及一些重要的公式。

最后,我想提一点建议,希望老师以后可以尽可能的让我们一人一组。题目虽然有些难度,但是可以更好的锻炼自己,充分发挥个人潜能,同时也杜绝了一些同学光看别人做,等着别人的成果,到时再熟悉程序就可以蒙混过关的现象。

附录

(7,4)汉明码的编码程序:

library ieee;

use ieee.std_logic_1164.all;

entity bm is

port(a:in std_logic_vector(3 downto 0);

b ut std_logic_vector(6 downto 0));

end ;

architecture one of bm is

begin

b(6)<=a(3);

b(5)<=a(2);

b(4)<=a(1);

b(3)<=a(0);

b(2)<=a(3) xor a(2) xor a(1);

b(1)<=a(3) xor a(2) xor a(0);

b(0)<=a(3) xor a(1) xor a(0);

end;

(7,4)汉明码的译码程序:

library ieee;

use ieee.std_logic_1164.all;

entity ym is

port(a:in std_logic_vector(6 downto 0); s ut std_logic_vector(2 downto 0);

b ut std_logic_vector(3 downto 0);

c ut std_logic_vector(2 downto 0));

end ;

architecture one of ym is

begin

process(a)

variable ss:std_logic_vector(2 downto 0); variable bb:std_logic_vector(6 downto 0);

begin

ss(2):=a(6) xor a(5) xor a(4) xor a(2); ss(1):=a(6) xor a(5) xor a(3) xor a(1); ss(0):=a(6) xor a(4) xor a(3) xor a(0);

bb:=a;

if ss> "000" then

case ss is

when "001" =>bb(0):= not bb(0);c<="000"; when "010" =>bb(1):= not bb(1);c<="001"; when "100" =>bb(2):=not bb(2);c<="010"; when "011" =>bb(3):=not bb(3);c<="011";

when "101" =>bb(4):=not bb(4);c<="100"; when "110" =>bb(5):=not bb(5);c<="101"; when "111" =>bb(6):=not bb(6);c<="110";

when others => null;c<="111";

end case;

else b<= a(6)&a(5)&a(4)&a(3);

end if;

s<=ss;

b<=bb(6)&bb(5)&bb(4)&bb(3);

end process;

end;

基于MATLAB的(7_4)汉明码编译码设计与仿真结果分析

通信原理课程设计报告书 课题名称 基于MATLAB 的(7,4)汉明码编 译码设计与仿真结果分析 姓 名 学 号 学 院 通信与电子工程学院 专 业 通信工程 指导教师 ※※※※※※※※※ ※ ※ ※※ ※ ※ 2009级通信工程专业 通信原理课程设计

2011年 12月 23日 一、设计任务及要求: 设计任务: 利用MATLAB编程,实现汉明码编译码设计。理解(7,4)汉明码的构造原理,掌握(7,4)汉明码的编码和译码的原理和设计步骤。并对其性能进行分析。要求: 通过MATLAB编程,设计出(7,4)汉明码的编码程序,编码后加入噪声,然后译码,画出信噪比与误比特数和信噪比与误比特率的仿真图,然后对其结果进行分析 指导教师签名: 2011年12月23日 二、指导教师评语: 指导教师签名: 年月日 三、成绩 验收盖章 年月日

基于MATLAB 的(7,4)汉明码编译码设计 与仿真结果分析 1 设计目的 (1)熟悉掌握汉明码的重要公式和基本概念。 (2)利用MATLAB 编程,实现汉明码编译码设计。 (3)理解(7,4)汉明码的构造原理,掌握(7,4)汉明码的编码和译码的原理和设计步骤。 (4)对其仿真结果进行分析。 2 设计要求 (1)通过MATLAB 编程,设计出(7,4)汉明码的编码程序。 (2)编码后加入噪声,然后译码,画出信噪比与误比特数和信噪比与误比特率的仿真图。 (3)然后对其结果进行分析。 3 设计步骤 3.1 线性分组码的一般原理 线性分组码的构造 3.1.1 H 矩阵 根据(7, 4)汉明码可知一般有 现在将上面它改写为 上式中已经将“⊕”简写成“+”。 上式可以表示成如下矩阵形式: ??? ??=⊕⊕⊕=⊕⊕⊕=⊕⊕⊕0 000346 13562456a a a a a a a a a a a a ?? ? ?? =?+?+?+?+?+?+?=?+?+?+?+?+?+?=?+?+?+?+?+?+?010011010010101100010111012345601234560123456a a a a a a a a a a a a a a a a a a a a a (1) (2)

海明码

海明码 有了奇偶校验码的基础,就不难理解海明码了。海明码实际上是奇偶校验码的一个扩充。奇偶校验码只能检测错误而不能纠正错误,海明码能检测出两位错误并纠正一位错误,下面就介绍一下海明码的工作原理。 在奇偶校验中,我们假设发送端有K位信息位(k = n – 1,n代表码元位数),表示为a1 ~a n-1 , 在信息位后面加上一位奇偶校验位a0,就构成了a0~a n的n位码元,则接收端可按照监督关系式s=a0+a1+…+a n-2+a n-1(s为校验因子)来进行数据校验。从奇偶校验的工作原理可以看出奇偶校验只有一个冗余位(对应一个监督关系式和一个校验因子),因此奇偶校验只能判别两种状态,当s=0表示正确,s=1表示出错。可以设想一下,若增加冗余位亦即增加监督关系式和校验因子,便能判别更多的状态,海明码正是基于这一点工作的。 上面讲到海明码通过增加冗余位来进行错误的检测和纠正,那么对于k位的信息需要增加多少个冗余位才能满足检错并纠正1位错误的要求呢? 假设信息位有k位,校验位(冗余位)为m,那么m位的校验码可以生成2m个校验值,显然数据被正确传输的状态只有一个,用2m个值中的一个值来表示,则其余的2m-1个值可用来表示错误的状态,如果能满足:2m -1≥k+m (k+m 为编码后的总长度),在理论上m位校验码就能判断出是哪一位数据(包括信息位和校验位)出现错误。下面用示例加以说明: 例(1):假设信息位k=4,求足以判别出错位位置的校验码所需的位数m。 解:由2m -1≥k+m , k=4可知 2m ≥5+m 即m≥3 即至少需要3位冗余位(对应产生3个校正因子和3个监督关系式), 形成23=8种判断状态才足以能够判断出出错数据位的位置 假设编成的n位海明码为h n h n-1…h2h1,则海明码的编码规律如下:1.校验位分布:在n位的海明码中,各检验位分布在位号为2n 的位置,即检验位的位置分别为第1,2,4,8,…,2n位,数据位按照原来的顺序插入其中。若信息码为k5k4k3k2k1,则编成的海明码为…k5r4k4k3k2r3 k1r2r1,此分布关系可以用下表表示,其中k i 表示信息位,下标从1开始。r i表示校验位,下标从0开始。 表(1)计算校验位分布表 2.检验关系:海明码的每一位h i要有多个检验位来检验。检验关系是被检验位的位号等于相关检验位的位号之和。在表(1)中,k5(位号为9)需要r4(位号8)和r0(位号1)来检验。同理,k 4需要由r2、r1和r0 检验,k3由r2、r1 检验,以此类推,为便于分析,我们列表如下: 表(2)校验关系对照表

汉明码的编译码设计与仿真

****************** 实践教学 ******************* 兰州理工大学 计算机与通信学院 2014年春季学期 通信系统仿真训练 题目:汉明码的编译码设计与仿真 专业班级: 姓名: 学号: 指导教师: 成绩:

摘要 与其他的错误校验码类似,汉明码也利用了奇偶校验位的概念,通过在数据位后面增加一些比特,可以验证数据的有效性。利用一个以上的校验位,汉明码不仅可以验证数据是否有效,还能在数据出错的情况下指明错误位置。在接收端通过纠错译码自动纠正传输中的差错来实现码纠错功能,成为前向纠错FEC。在数据链路中存在大量噪音时,FEC可以增加数据吞吐量。通过传输码列中假如冗余位(也称纠错位)。可以实现前向纠错。但这种方法比简单重传协议的成本要高。汉明码利用奇偶块机制降低了前向纠错的成本。利用汉明码(Hamming Code)是一种能够自动检测并纠正一位错码的线性纠错码,即SEC(Single Error Correcting)码,用于信道编码与译码中,提高通信系统抗干扰的能力。本文主要利用MATLAB中通信系统仿真模型库进行汉明码建模仿真,并调用通信系统功能函数进行编程,绘制编译码图。在此基础上,对汉明码的性能进行分析,得出结论。 关键词:MATLAB 汉明码性能

目录 1.前言 (1) 2.汉明码的构造原理 (2) 2.1 汉明码的构造原理 (2) 2.2 监督矩阵H和生成矩阵G (3) 2.3 校正子(伴随式)S (4) 3.汉明码编码器的设计 (6) 3.1 汉明码编码方法 (6) 3.2 汉明码编码程序设计 (6) 3.3 汉明码编码程序的编译及仿真 (7) 4.汉明码的译码器的设计 (10) 4.1 汉明码译码方法 (10) 4.2 汉明码译码程序的设计 (11) 4.3 汉明码译码程序的编译及仿真 (13) 5.总结 (17) 6.参考文献 (18) 7.附录 (19)

汉明码编译码

汉明码编译码 一设计思想 汉明码是一种常用的纠错码,具有纠一位错误的能力。本实验使用Matlab平台,分别用程序语言和simulink来实现汉明码的编译码。用程序语言实现就是从原理层面,通过产生生成矩阵,错误图样,伴随式等一步步进行编译码。用simulink实现是用封装好的汉明码编译码模块进行实例仿真,从而验证程序语言中的编译码和误码性能分析结果。此外,在结合之前信源编码的基础上,还可实现完整通信系统的搭建。 二实现流程 1.汉明码编译码 图 1 汉明码编译码框图 1)根据生成多项式,产生指定的生成矩阵G 2)产生随机的信息序列M 得到码字 3)由C MG 4)进入信道传输 S RH得到伴随式 5)计算=T 6)得到解码码流 7)得到解码信息序列 2.汉明码误码性能分析 误码率(SER)是指传输前后错误比特数占全部比特数的比值。 误帧率(FER)是指传输前后错误码字数占全部码字数的比值。 通过按位比较、按帧比较可以实现误码率和误帧率的统计。

3. 构建完整通信系统 图 2 完整通信系统框图 三 结论分析 1. 汉明码编译码 编写了GUI 界面方便呈现过程和结果。 图 3 汉明码编译码演示GUI 界面 以产生(7,4)汉明码为例说明过程的具体实现。 1) 根据生成多项式,产生指定的生成矩阵G 用[H,G,n,k] = hammgen(3,'D^3+D+1')函数得到系统码形式的校验矩阵H 、G 以及码字长度n 和信息位数k 100101101011100010111H ????=?????? 1 10100001101001 1100101 010001G ????? ?=?? ?? ?? 2) 产生随机的信息序列M 输入信息序列 Huffman 编码 Hamming 编码 信道Hamming 译码 Huffman 译码输出信息序列噪声

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

目录 前言...............................................................1第1章设计要求.................................................3第2章 QuartusⅡ软件介绍.......................................4第3章汉明码的构造原理........................................6 3.1 (7,4)汉明码的构造原理........................................6 3.2 监督矩阵H与生成矩阵G.........................................7 3.3 校正子(伴随式S)..............................................8第4章(7,4)汉明码编码器的设计............................10 4.1 (7,4)汉明码的编码原理及方法.................................10 4.2 (7,4)汉明码编码程序的设计...................................10 4.3 (7,4)汉明码编码程序的编译及仿真.............................11第5章(7,4)汉明码译码器的设计...........................12 5.1 (7,4)汉明码的译码方法......................................12 5.2 (7,4)汉明码译码程序的设计..................................13 5.3 (7,4)汉明码译码程序的编译及仿真............................15第6章(7,4)汉明码编译码器的设计........................17 6.1 (7,4)汉明码编译码器的设计..................................17参考文献.........................................................18体会与建议.......................................................19附录..............................................................20

汉明码编译码

汉明码编译码

汉明码编译码 一设计思想 汉明码是一种常用的纠错码,具有纠一位错误的能力。本实验使用Matlab平台,分别用程序语言和simulink来实现汉明码的编译码。用程序语言实现就是从原理层面,通过产生生成矩阵,错误图样,伴随式等一步步进行编译码。用simulink实现是用封装好的汉明码编译码模块进行实例仿真,从而验证程序语言中的编译码和误码性能分析结果。此外,在结合之前信源编码的基础上,还可实现完整通信系统的搭建。 二实现流程 1.汉明码编译码 生成矩阵G 信息序列M 产生码字C 信道 计算伴随式S接收码流R 校验矩阵H 解码码流C2 解码信息序列 M2 图 1 汉明码编译码框图 1)根据生成多项式,产生指定的生成矩阵G 2)产生随机的信息序列M 3)由C MG 得到码字 4)进入信道传输

三 结论分析 1. 汉明码编译码 编写了GUI 界面方便呈现过程和结果。 图 2 汉明码编译码演示GUI 界面 以产生(7,4)汉明码为例说明过程的具体实现。 1) 根据生成多项式,产生指定的生成矩阵G 用[H,G,n,k] = hammgen(3,'D^3+D+1')函数得到系统码形式的校验矩阵H 、G 以及码字长度n 和信息位数k 100101101011100010111H ????=?????? 1 10100001101001 1100101010001G ????? ?=?? ?? ?? 2) 产生随机的信息序列M 0010=01000111M ?? ???? ????

3) 由C MG =得到码字 010001101101000010111C ?? ??=?? ???? 4) 进入信道传输 假设是BSC 信道,错误转移概率设定为0.1 传输后接收端得到的码流为 000011110100000111101R ?? ??=?? ???? 红色表示错误比特。 5) 计算=T S RH 得到伴随式 011=100001S ?? ???? ???? 错误图样 0000001 0000010 0000100 0001000 0010000 0100000 1000000 伴随式 101 111 011 110 001 010 100 查表可知第一行码字错误图样为0100000,第二行码字错误图样为1000000,第三行码字错误图样为0000001。 进行??=+C R E 即可得到纠错解码的码字C2。 6) 得到解码码流 0110100200000001110010C ?? ??=?? ????

基于matlab的汉明码4FSK通信仿真实验报告

河海大学计算机及信息工程学院(常 州) 课程设计报告 题目不同信道下汉明码4FSK系统仿真 专业通信工程 学号 0962310312 学生姓名程海粟 指导教师高远

目录 一、实验目的 (3) 二、实验器材 (3) 三、实验内容及原理 (3) (一)汉明码编解码原理 (3) (二)4FSK调制解调原理 (6) (三)三种信道模型简介 (9) (四)程序调用函数介绍……………………………………… 10 四、实验仿真效果图 (12) 五、心得体会 (15) 六、附录 (15) 七、参考文献 (18)

不同信道下汉明码的4FSK 系统仿真 一、实验目的 1、了解熟悉Matlab 仿真软件使用; 2、掌握4进制频移键控(4FSK )的调制与解调基本原理; 3、掌握Matlab 仿真软件仿真4FSK 的系统设计; 4、熟悉无线通信仿真过程及物理层仿真。 二、实验器材 Matlab 仿真软件。 三、实验内容及原理 (一)汉明码编解码原理 1、编码原理 一般来说,若汉明码长为n ,信息位数为k ,则监督位数r=n-k 。若希望用r 个监督位构造出r 个监督关系式来指示一位错码的n 种可能位置,则要求 21r n -≥或211r k r -≥++ (1) 下面以(7,4)汉明码为例说明原理: 设汉明码(n,k )中k=4,为了纠正一位错码,由式(1)可知,要求监督位数r ≥3。若取r=3,则n=k+r=7。我们用 6543210 a a a a a a a 来表示这7个码元,用 123 s s s 的值表示3个监督关系式中的校正子,则123 s s s 的值与错误码元位置的对应关系 可以规定如表1所列。 表1 校正子和错码位置的关系

(7,4)汉明码编译码系统设计.doc

南华大学电气工程学院 《通信原理课程设计》任务书 设计题目:(7, 4)汉明码编译码系统设计 专业:通信工程 学生姓名: 马勇学号:20114400236 起迄日期:2013 年12月20日~2014年1月3日指导教师:宁志刚副教授 系主任:王彦教授

《通信原理课程设计》任务书

《通信原理课程设计》设计说明书格式 一、纸张和页面要求 A4纸打印;页边距要求如下:页边距上下各为2.5 厘米,左右边距各为2.5厘米;行间距取固定值(设置值为20磅);字符间距为默认值(缩放100%,间距:标准)。 二、说明书装订页码顺序 (1)任务书 (2)论文正文 (3)参考文献,(4)附录 三、课程设计说明书撰写格式 见范例 引言(黑体四号) ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆(首行缩进两个字,宋体小四号) 1☆☆☆☆(黑体四号) 正文……(首行缩进两个字,宋体小四号) 1.1(空一格)☆☆☆☆☆☆(黑体小四号) 正文……(首行缩进两个字,宋体小四号) 1.2 ☆☆☆☆☆☆、☆☆☆ 正文……(首行缩进两个字,宋体小四号) 2 ☆☆☆☆☆☆ (黑体四号) 正文……(首行缩进两个字,宋体小四号) 2.1 ☆☆☆☆、☆☆☆☆☆☆,☆☆☆(黑体小四号) 正文……(首行缩进两个字,宋体小四号) 2.1.1☆☆☆,☆☆☆☆☆,☆☆☆☆(楷体小四号) 正文……(首行缩进两个字,宋体小四号) (1)……

图1. 工作波形示意图(图题,居中,宋体五号) ………… 5结论(黑体四号) ☆☆☆☆☆☆(首行缩进两个字,宋体小四号) 参考文献(黑体四号、顶格) 参考文献要另起一页,一律放在正文后,不得放在各章之后。只列出作者直接阅读过或在正文中被引用过的文献资料,作者只写到第三位,余者写“等”,英文作者超过3人写“et al”。 几种主要参考文献著录表的格式为: ⑴专(译)著:[序号]著者.书名(译者)[M].出版地:出版者,出版年:起~止页码. ⑵期刊:[序号]著者.篇名[J].刊名,年,卷号(期号):起~止页码. ⑶论文集:[序号]著者.篇名[A]编者.论文集名[C] .出版地:出版者,出版者. 出版年:起~止页码. ⑷学位论文:[序号]著者.题名[D] .保存地:保存单位,授予年. ⑸专利文献:专利所有者.专利题名[P] .专利国别:专利号,出版日期. ⑹标准文献:[序号]标准代号标准顺序号—发布年,标准名称[S] . ⑺报纸:责任者.文献题名[N].报纸名,年—月—日(版次). 附录(居中,黑体四号)

通信原理课程设计报告以及CPLD汉明码编译

课程设计报告 课程名称通信原理课程设计 系别: 专业班级: 学号: 姓名: 课程题目:汉明码编译码CPLD实现 完成日期: 指导老师:

附件: 汉明码编译码CPLD 实现 摘要:通过利用CPLD实现对汉明码进行编译。利用ALTERA公司的FLEX10K系列芯片设计和实现了汉明码的编译码,详细地阐述了设计的方法和实现的过程。首先进行电路设计,然后在MAX+PLUSII编辑环境下,采用自顶向下的层次设计方法,以及VHDL文本输入的输入方法编制程序,经编译正确后进行波形仿真,经过仿真、调试,验证了功能和时序正确性后,将编辑的程序烧写到CPLD。 关键词:CPLD 汉明码编译MAX+PLUSII 正文 一.汉明码理论: 汉明码是一种能够纠正一位错码且编码效率较高的线性分组码。 汉明码的编译码原理:汉明码的编码是对信源端发出的原始码字上加入一些监督码,得到新的码字,这的码字增加了信息的冗余,但保证了传输的质量,设其码字为A=[a6,a5,a4,a3,a2,a1,a0],其中前4位是信息元,后3位是监督元,使信息码元与监督码元通过线性方程式联系起来,可用下列线性方程组来描述该分组码,产生监督元:发送端计算监督位 a n = a n-1 ⊕a n-2⊕…. ⊕a 0=0 ,接收端解码计算S = a n-1 ⊕a n-2 ⊕…. ⊕a n-2⊕a0 ,校正子S =0则无错、S=1则有错,该式为监督关系式;S称为校正子。由于校正子S只有两种取值,故它只能代表有错和无错这两种信息,而不能指出错码的位置。一般来说,若码长为n,信息位数为k,则监督位数r=n-k。用r个监督位构造出r个监督关系式来指示1位错码的n种可能位置,则2r -1 ≥ n 即2r ≥ k+r+1满足此汉明不定式。(7, 4)汉明码,为了纠正1位错码,由上式可知,要求监督位数r≥ 3。若r = 3,则n = k + r = 7。我们用a6 a5?a0表示这7个码元,用S1、S2和S3表示3个监督关系式中的校正子,则S1、S2和S3的值与错码位置的对应关系可以规定

基于VHDL的(7,4)汉明码编解码器的设计

(7,4)汉明码编解码器的设计 序言 VHDL语言具有功能强大的语言结构,可用明确的代码描述复杂的控制逻辑设计,并且具有多层次的设计描述功能,支持设计库和可重复使用的元件的生成。近几十年来,EDA技术获得了飞速发展。它以计算机为平台,根据硬件描述语言VHDL,自动地完成逻辑编译、化简分割、综合及优化,布局布线,仿真直至对特定目标芯片的适配编译,逻辑映射和编程下载等工作。以自顶向下的设计方法,使硬件设计软件化,摆脱了传统手工设计的众多缺点。随着EDA技术的深入发展基于硬件描述语言的方法将有取代传统手工设计方法的趋势。 EDA ( Elect ronics Design Automation) 技术是随着集成电路和计算机技术飞速发展应运而生的一种高级、快速、有效的电子设计自动化工具。目前,VHDL语言已经成为EDA的关键技术之一,VHDL 是一种全方位的硬件描述语言,具有极强的描述能力,能支持系统行为级、寄存器传输级和逻辑门级三个不同层次的设计,支持结构、数据流、行为三种描述形式的混合描述,覆盖面广,抽象能力强,因此在实际应用中越来越广泛。 汉明码是在原编码的基础上附加一部分代码,使其满足纠错码的条件。它属于线性分组码,由于汉明码的抗干扰能力较强,至今仍是应用比较广泛的一类码。 本文用VHDL语言实现了(7,4)汉明码的编码和译码,并通过实例来说明利用VHDL语言实现数字系统的过程。在介绍(7,4)汉明码编码和译码原理的基础上,设计出了(7,4)汉明码的编码器和译码器,写出了基于VHDL实现的源程序,并通过QUARTUSⅡ软件进行仿真验证。 第1章QuartusⅡ与VHDL简介 1.1 QuartusⅡ软件简介 QuartusⅡ是Altera公司推出的CPLD/FPGA的开发工具,QuartusⅡ提供了完全集成且与电路结构无关的开发环境,具有数字逻辑设计的全部特性。 ?/P> Quartus Ⅱ设计软件提供完整的多平台设计环境,可以很轻松地满足特定设计的需要。

汉明码

科信学院 通信系统仿真二级项目设计说明书 (2013/2014学年第二学期) 课程名称:通信系统仿真二级项目 题目:基于M语言的数字通信仿真— 采用Hamming码技术 专业班级:通信工程12-02班 学生姓名: 学号: 指导教师: 设计周数:1周 设计成绩: 2014年6月25日

目录 1、设计目的和意义 (2) 2、设计原理 (3) 2.1 汉明编码 ................................................. 错误!未定义书签。 2.1.1汉明码编码.................................................................................... 错误!未定义书签。 2.1.2 汉明码的定义: (3) 2.1.3 汉明码的构造特点: (3) 2.1.4 汉明码编码的主要算法 (3) 2.1.5 汉明码的编码原理 (4) 2.1.6 汉明码的纠错原理 (6) 2.2高斯噪声原理................................................ 错误!未定义书签。 3、Matlab仿真实现 (12) 3.1 仿真思路 (12) 3.2仿真详细过程及图形分析 ........................ 错误!未定义书签。 3.3 仿真结果分析 ........................................... 错误!未定义书签。 4、设计心得体会 (21) 5、参考文献 (21) 1、设计目的和意义 技术要求及原始数据: 1)对数字通信系统主要原理和技术进行研究,包括Hamming编码技术和高斯噪声信道原理等。 2)建立完整的基于Hamming码技术的通信系统仿真模型。 3)对系统进行仿真、分析。 主要任务: 1)建立数字通信系统模型。 2)利用Matlab的m语言建立数字通信系统仿真模型。

本科毕业设计---基于fpga的汉明码译码器的设计

大连交通大学信息工程学院 毕业设计 (论文) 题目基于FPGA的汉明码译码器的设计 学生姓名芦斌专业班级信息工程09-2 指导教师徐佳职称讲师 所在单位电气工程系信息工程教研室 教研室主任石桂名 完成日期 2013年 6 月 28 日

摘要 在数字通讯的系统中,数字信号在传输的过程中容易受到干扰,造成码元波形破坏,使得接收端接收到的信号发生错误的判决。为了提高信息传输的准确性,我们引进了差错控制技术。该项技术应采用了可靠而且有效的信道编码方法来实现。汉明码就是一种可以纠正差错的编码。汉明码编译码器是目前最为常用的数字通信内部器件之一,它被广泛地应用在网络传输、存储器校验纠错以及数据安全中。 本课题是基于FPGA的汉明码译码器的设计,使用Verilog语言来实现汉明码译码器的设计。通过理解汉明码译码原理的基础上,设计出了汉明码的译码器,并且写出了译码源程序,还通过QuartusII软件实现仿真。 本次设计首先介绍了EDA的硬件描述语言Verilog和仿真调试软件QuartusII,然后介绍了FPGA的发展历程和产品特性,借此选出合适的FPGA的芯片,最后介绍了汉明码。通过了解汉明码的理论知识来掌握汉明码的译码原理,然后经过理解和分析设计出实现汉明码译码的算法,并且使用Verilog语言在QuartusII软件里完成了基于FPGA的汉明码译码器的编程和仿真实现。同时根据需要,选择了合适的FPGA的芯片和外围元器件,设计出外围硬件的原理图,将理论和实践结合起来。 关键词:汉明码译码器FPGA Verilog语言QuartusII

ABSTRACT In digital communication systems, digital signal during transmission is easy to be disturbed, resulting in destruction of the symbol waveform, so that the receiver receives the signal error occurred judgment. In order to improve the accuracy of information, we introduce error control techniques. The technology uses a reliable and effective method of channel coding to achieve. Hamming code is a kind of code which is able to correct errors. Hamming code codes is one kind of the most commonly used devices in digital communications, which is widely used in network transmission, memory parity error correction and data security. The design of Hamming code codec in this project, this passage realized decode of hamming with language of verilog. Based on the theory of introduction of decode of hamming, this passage designed decoder of hamming. The source program wad written by verilog language. The soft of QuartusII simulated and tested the program. It requires basic theoretical knowledge of hamming code, and learn how to use the simulation and debugging software QuartusII as well as the hardware description language Verilog, and understand the various features of Hamming codes to master the peinciple of coding and decoding, then to understand and analyze, design its algorithm implementation, and complete the Verilog language programming and simulation on FPGA-based software QuartusII; in the meantime, according to its requirement, select a FPGA chip and external components, finally create the hardware entity, combine the theory with practice. Key words: Hamming Decoder FPGA Verilog language QuartusII

汉明码仿真

摘要 汉明码(Hamming Code)是一种能够自动检测并纠正一位错码的线性纠错码,即SEC(Single Error Correcting)码,用于信道编码与译码中,提高通信系统抗干扰的能力。本文主要利用MATLAB中SIMULINK通信系统仿真模型库进行汉明码建模仿真,并调用通信系统功能函数进行编程,对汉明码的性能进行分析。 关键词:MATLAB 汉明码 SIMULINK 性能 I

目录 1 课程设计目的 (1) 2 课程设计要求 (1) 3 相关知识 (1) 4 课程设计分析 (8) 5 仿真 (11) 6结果分析 (13) 7 参考文献 (13) II

汉明码仿真程序设计 1.课程设计目的 (1)加深汉明码(Hamming Code)基本理论知识的理解。 (2)培养独立开展科研的能力和编程能力。 (3)掌握用MATLAB实现信号的PM调制。 (4)掌握MATLAB软件的使用。 2.课程设计要求 (1)掌握汉明码(Hamming Code)的相关知识、概念清晰。 (2)掌握MATLAB使用方法,利用软件绘制图像。 (3)程序设计合理、能够正确运行。 3.相关知识 3.1 MATLAB简介 MATLAB(Matrix Laboratory,矩阵实验室)是Mathwork公司推出的一套高效率的数值计算和可视化软件。其中,MATLAB通信工具箱是一套用于在通信领域进行理论研究、系统开发、分析设计和仿真的专业化工具软件包。MATIAB通信工具箱由两大部分组成:通信系统功能函数库和SIMULINK通信系统仿真模型库。 MATLAB通信系统功能函数库由七十多个函数组成,每个函数有多种选择参数、函数功能覆盖了现代通信系统的各个方面。这些函数包括:信号源产生函数、信源编码/解码函数、纠错控制编码/解码函数、调制/解调函数(基带和通带)、滤波器函数、传输信道模型函数(基带和通带)、TDMA、FDMA、CDMA函数、同步函数、工具函数等。以纠错控制编解码函数为例:函数库提供了线性分组码、 1

通信原理课程设计

通信原理课程设计 姓名______ 学号_______ 班级_____

目录 一、目录 (2) 二、任务书 (3) 三、具体内容及要求 (4) 3.1 题目一 (4) 3.1.1题目内容 (4) 3.1.2设计思想或方法 (4) 3.1.3实现的功能或方法 (4) 3.1.4程序流程图 (4) 3.1.5程序代码 (5) 3.1.6仿真框图 (5) 3.1.7模块描述及参数设置 (5) 3.1.8结果运行 (10) 3.1.9结果分析 (11) 3.2 题目二 (11) 3.2.1题目内容 (11) 3.2.2设计思想或方法 (11) 3.2.2程序流程图 (12) 3.2.4程序代码 (13) 3.2.5仿真框图 (13) 3.2.6模块描述及参数设置 (14) 3.2.7结果运行 (20) 3.2.8结果分析 (20) 3.3 题目三 (20) 3.3.1题目内容 (20) 3.3.2设计思想或方法 (20) 3.2.3程序流程图 (21) 3.2.4程序代码 (21) 3.2.5结果运行 (23) 3.2.6结果分析 (23) 四、心得与体会 (23) 五、参考文献 (23)

《通信原理课程设计》任务书 一、目的和要求: 要求学生在熟练掌握MATLAB和simulink仿真使用的基础上,学会通信仿真系统的基本设计与调试。并结合通信原理的知识,对通信仿真系统进行性能分析。 二、实验环境 PC机、Matlab/Simulink 三、具体内容及要求 (1)试用Matlab/Simulink研究BPSK在加性高斯白噪声信道下的误码率性能与信 噪比之间的关系; (2)试用Matlab/Simulink研究BPSK+信道编码(取汉明码)在加性高斯白噪声信 道下的误码率性能与信噪比之间的关系;分析不同码率对误码率性能的影响。 (3)试用Matlab编程实现HDB3码的编解码过程,并画出1 1 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0的原始、编码和解码图形。 四、提交设计报告 内容包括: ●系统的基本原理框图以及每一个模块的作用; ●系统Simulink 仿真过程中,每一个用到的模块中主要参数的意义; ●仿真系统参数的设定和设定的依据; ●仿真系统参数改变时,给仿真结果带来的影响(如高斯白噪声信道的信噪比增加,则误 码率减小); ●仿真程序(需要加注释)。 ●仿真的结果(波形,误码率等)。 五、主要参考文献及资料 邵玉斌. Matlab/Simulink通信系统建模与仿真实例分析.清华大学出版社2008年 李贺冰等,Simulink通信仿真教程,国防工业出版社,2006年5月。

(7,4)汉明码课程设计要点

【摘要】本文主要介绍利用ALTERA公司的Quartus II软件实现(7,4)汉明码的编码和译码的设计,设计共分为三个模块:m序列产生与分组模块、编码模块、译码模块,实现m序列的分组输出。在QuartusII编辑环境下用VHDL文本输入的输入方法编制程序,经编译正确后进行波形仿真,调试,从而验证设计的正确性。 关键字:汉明码,编码,译码,VHDL 【Abstract】T his article propose a method for Hamming encoder and Hamming decoder which is based on the VHDL language. It introduces the theory of Hamming encoder and Hamming decoder and the source program based on VHDL, and the way simulated and checked through QuartusII.Throughout the whole design is totally divided into three modules: the m sequence generated and the Packet Module,the encoding module,the decoding Module. Keywords: Hamming, coder,encoder, decoder ,VHDL

目录 第1章问题的提出及方案论证 (3) 1.1 问题的提出 (3) 1.2 方案论证 (3) 1.2.1 Quartus II和VHDL简介 (3) 1.2.2 软件设计方案介绍 (6) 第2章设计方案的实施 (8) 2.1 m序列模块 (8) 2.1.1 m序列简介 (8) 2.1.2 m序列模块设计流程 (9) 2.2 (7,4)汉明码知识介绍 (10) 2.2.1基本概念 (10) 2.2.2监督矩阵 (11) 2.2.3生成矩阵 (12) 2.2.4 伴随式(校正子)S (12) 2.3 汉明码编码模块 (13) 2.3.1汉明码编码原理 (13) 2.3.2 汉明码编码程序设计流程 (14) 2.4 汉明码译码模块 (15) 2.4.1汉明码译码原理 (15) 2.4.2汉明码译码程序设计流程 (16) 第3章软件调试及遇到的问题 (19) 3.1 软件调试仿真波形图 (19) 3.2 软件调试过程中遇到的问题 (21) 第4章总结体会 (22) 附录: (23) 参考文献 (30)

信道编码实验报告

无线通信基础课程设计报告 (信道编码) 小组成员: 指导老师: 完成时间:

无线通信系统课程设计报告 实验摘要:数字信号在传输中往往由于各种原因,使得在传送的数据流中产生误码,从 而使接收端产生图象跳跃、不连续等现象。信道编码通过对数码流进行相应的处理,使系统具有一定的检错和纠错能力,可极大地避免码流传送中误码的发生。提高数据传输可靠性,降低误码率是信道编码的任务。 实验名称:信道编码 实验目标:本实验的目标是领会信道编码的基本思想。并通过比较有无信道编码模块的 不同系统误码率性能,感受信道编码技术对于提高系统性能的重要意义。 实验原理:打开“Channel_Coding_74.vi”前面板如图1所示,打开程序框图并理解参与 信道编码的整个数据流。程序包含上下两个独立的部分如图2所示,下面部分是生成误码率曲线如图1(b),其结构和上面部分类似,你只需要关注上面部分程序即可;上面部分代码大致可由做7个模块组成,每一模块完成一项功能。你负责的是这个实验的“编码和解码”功能。这些模块为: 1、读取图片 LabVIEW提供了一个能够读取JPEG格式的图像并输出图像数据的模块。提供的还原像素图.vi完成图像数据到一维二进制数据的转换(图像数据→十进制二维数组→二进制一维数组),输出信源比特流。 (a)实验操作部分(b)误码率曲线 图1 前面板 2、信道编码 我们的下一个目标是对信源比特流进行信道编码。信道编码方案很多,线性分组码、卷积码、LDPC码等等;这里我们采用简单的(7,4)线性分组码。

图2 程序框图 线性分组码是一类重要的纠错码。在(n ,k )线性分组码中,常用到能纠正一位错误的汉明码。其主要参数如下: 码长: 21m n =-; 信息位:21m k m =--; 校验位:m n k =-; 最小距离: d = 3; 纠错能力: t = 1; 本次实验需要用到的是(7,4)分组码,属系统码,前四位为信息位,后三位为冗余位。 3、BPSK 调制 上一步得到的是二进制的信息比特流,需要采用一定的调制方案,将二进制的信息比特 映射成适合信道传输的符号。这里我们采用最简单的BPSK 调制:将信息0映射为幅值为1的信号,信息1映射为幅值为-1的信号,如图3所示。 (1,0)=0 图3 BPSK 映射图

基于MATLAB的(7_4)汉明码编译码设计与仿真结果分析

- -- 通信原理课程设计报告书 课题名称 基于MATLAB 的(7,4)汉明码编译 码设计与仿真结果分析 姓 名 学 号 学 院 通信与电子工程学院 专 业 通信工程 指导教师 2011年 12月 23日 ※※ ※ ※ ※ ※ ※ ※ ※ ※※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ 2009级通信工程专业 通信原理课程设计

基于MATLAB的(7,4)汉明码编译码设计 与仿真结果分析 1 设计目的 (1)熟悉掌握汉明码的重要公式和基本概念。 (2)利用MATLAB编程,实现汉明码编译码设计。 (3)理解(7,4)汉明码的构造原理,掌握(7,4)汉明码的编码和译码的原理和设计步骤。 (4)对其仿真结果进行分析。 2 设计要求 (1)通过MATLAB编程,设计出(7,4)汉明码的编码程序。 (2)编码后加入噪声,然后译码,画出信噪比与误比特数和信噪比与误比特率的仿真图。 (3)然后对其结果进行分析。 3设计步骤

3.1 线性分组码的一般原理 线性分组码的构造 3.1.1 H 矩阵 根据(7, 4)汉明码可知一般有 现在将上面它改写为 上式中已经将“⊕”简写成“+”。 上式可以表示成如下矩阵形式: 上式还可以简记为 H ? A T = 0T 或 A ? H T = 0 式中 A = [a 6 a 5 a 4 a 3 a 2 a 1 a 0] ??? ??=⊕⊕⊕=⊕⊕⊕=⊕⊕⊕0 000346 13562456a a a a a a a a a a a a ?? ? ?? =?+?+?+?+?+?+?=?+?+?+?+?+?+?=?+?+?+?+?+?+?010011010010101100010111012345601234560123456a a a a a a a a a a a a a a a a a a a a a )(模20001011001110101011101000123456??????????=???????? ?? ? ??????????????? ? ?????a a a a a a a ?? ?? ? ?????=101100111010101110100 H

汉明码编码原理介绍

汉明码编码原理介绍 汉明码是在电信领域的一种线性调试码,以发明者理查德·卫斯里·汉明的名字命名。汉明码在传输的消息流中插入验证码,以侦测并更正单一比特错误。由于汉明编码简单,它们被广泛应用于内存(RAM)。其SECDED版本另外加入一检测比特,可以侦测两个或以下同时发生的比特错误,并能够更正单一比特的错误。 1940年,汉明于贝尔实验室工作,运用贝尔模型电脑,输入端依靠打孔卡,这不免有些读取错误。在平日,特殊代码将发现错误并闪灯,使得操作者能够纠正这个错误。在周末和下班期间,在没有操作者的情况下,机器只会简单地转移到下一个工作,汉明在周末工作,他对于不可靠的读卡机发生错误后,总是必须重新开始方案变得愈来愈沮丧。在接下来的几年中,他为了解决调试的问题,开发了功能日益强大的调试算法。在1950年,他发表了今日所称的汉明码。现在汉明码有着广泛的应用。 人们在汉明码出现之前使用过多种检查错误的编码方式,但是没有一个可以在和汉明码在相同空间消耗的情况下,得到相等的效果。 汉明码原理介绍: 奇偶校验是一种添加一个奇偶位用来指示之前的数据中包含有奇数还是偶数个1的检验方式。如果在传输的过程中,有奇数个位发生了改变,那么这个错误将被检测出来(注意奇偶位本身也可能改变)。一般来说,如果数据中包含有奇数个1的话,则将奇偶位设定为1;反之,如果数据中有偶数个1的话,则将奇偶位设定为0。换句话说,原始数据和奇偶位组成的新数据中,将总共包含偶数个1. 奇偶校验并不总是有效,如果数据中有偶数个位发生变化,则奇偶位仍将是正确的,因此不能检测出错误。而且,即使奇偶校验检测出了错误,它也不能指出哪一位出现了错误,从而难以进行更正。数据必须整体丢弃并且重新传输。在一个噪音较大的媒介中,成功传输数据可能需要很长时间甚至不可能完成。虽然奇偶校验的效果不佳,但是由于他只需要一位额外的空间开销,因此这是开销最小的检测方式。并且,如果知道了发生错误的位,奇偶校验还可以恢复数据。 如果一条信息中包含更多用于纠错的位,且通过妥善安排这些纠错位使得不同的出错位产生不同的错误结果,那么我们就可以找出出错位了。在一个7位的信息中,单个数据位出错有7种可能,因此3个错误控制位就足以确定是否出错及哪一位出错了。 汉明编码方案通用算法 下列通用算法可以为任意位数字产生一个可以纠错一位的汉明码。 一、1开始给数字的数据位(从左向右)标上序号, 1,2,3,4,5... 二、将这些数据位的位置序号转换为二进制,1, 10, 11, 100, 101,等。 三、数据位的位置序号中所有为二的幂次方的位(编号1,2,4,8,等,即数据位位置序号的二进制表示中只有一个1)是校验位 四、有其它位置的数据位(数据位位置序号的二进制表示中至少2个是1)是数据位 五、每一位的数据包含在特定的两个或两个以上的校验位中,这些校验位取决于这些数据位的

相关文档
相关文档 最新文档