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

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

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

(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;

通信编解码器设计

天津大学 课程设计任务书 2012 —2013 学年第 1 学期 电子与信息工程系电子信息工程专业 课程设计名称: EDA技术及应用 设计题目:通信编解码器设计 完成期限:自 2013 年 1月 4 日至 2013 年 1 月 10 日共 1 周 一.课程设计依据 在掌握常用数字电路原理和技术的基础上,利用EDA技术和硬件描述语言,EDA开发软件(Quartus Ⅱ)和硬件开发平台(达盛试验箱CycloneⅡFPGA)进行初步数字系统设计。 二.课程设计内容 采用状态机结构设计简易串行数据编码器,实现NRZ码转换为差分码,双相码和曼彻斯特码功能,串行数据速率为9600bit/s,扩展设计:超采样,频率1MHz实现数据实现960bit/s传输。要求通过仿真验证。 三.课程设计要求 1.要求独立完成设计任务。 2.课程设计说明书封面格式要求见《天津城市建设学院课程设计教学工作规范》附表1 3.课程设计的说明书要求简洁、通顺,计算正确,图纸表达内容完整、清楚、规范。 4.测试要求:根据题目的特点,采用相应的时序仿真或者在实验系统上观察结果。 5.课设说明书要求: 1)说明题目的设计原理和思路、采用方法及设计流程。 2)系统框图、VHDL语言设计清单或原理图。 3)对各子模块的功能以及各子模块之间的关系作较详细的描述。 4)详细说明调试方法和调试过程。 5)说明测试结果:仿真时序图和结果显示图。并对其进行说明和分析。 指导教师(签字): 教研室主任(签字): 批准日期: 2012年 12 月 22 日

目录 第一章通信解码器概述 (1) 1.1 几种码的介绍 (1) 1.1.1 NRZ码 (1) 1.1.2 差分码 (1) 1.1.3 曼彻斯特码(又称双相码) (1) 1.2 总体方案概述 (2) 1.3 用状态机设计差分码编码器 (2) 1.3.1 状态机简介 (2) 1.3.2 对编码器的设计 (3) 1.4 曼彻斯特码模块程序 (3) 第二章转码器的设计与仿真 (6) 2.1 功能描述 (6) 2.2 差分码源程序(基于Verilog HDL语言) (6) 2.3 功能模块的仿真 (7) 2.4 曼彻斯特码源程序(基于Verilog HDL) (8) 2.5 功能模块仿真 (10) 第三章转码器的综合及硬件验证 (11) 3.1 转码器码的综合 (11) 3.1.1 曼彻斯特码转码器 (11) 3.1.2 差分码转码器 (11) 3.2 图形文件 (11) 第四章转码器的设计总结 (12) 4.1 设计调试 (12) 4.2 设计心得 (12) 参考文献 (13)

基于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)校验关系对照表

汉明码编码实验报告

重庆工程学院 电子信息学院 实验报告 课程名称:_ 数据通信原理开课学期:__ 2015-2016/02_ 院(部): 电子信息学院开课实验室:实训楼512 学生姓名: 舒清清梁小凤专业班级: 1491003 学号: 149100308 149100305

重庆工程学院学生实验报告 课程名 称 数据通信原理实验项目名称汉明码编译实验 开课院系电子信息学院实验日期 2016年5月7 日 学生姓名舒清清 梁小凤 学号 149100308 149100305 专业班级网络工程三班 指导教 师 余方能实验成绩 教师评语: 教师签字:批改时间:

一、实验目的和要求 1、了解信道编码在通信系统中的重要性。 2、掌握汉明码编译码的原理。 3、掌握汉明码检错纠错原理。 4、理解编码码距的意义。 二、实验内容和原理 汉明码编码过程:数字终端的信号经过串并变换后,进行分组,分组后的数据再经过汉明码编码,数据由4bit变为7bit。 三、主要仪器设备 1、主控&信号源、6号、2号模块各一块 2、双踪示波器一台 3连接线若干

四、实验操作方法和步骤 1、关电,按表格所示进行连线 2、开电,设置主控菜单,选择【主菜单】→【通信原理】→【汉明码】。 (1)将2号模块的拨码开关S12#拨为10100000,拨码开关S22#、S32#、S42#均拨为00000000;(2)将6号模块的拨码开关S16#拨为0001,即编码方式为汉明码。开关S36#拨为0000,即无错模式。按下6号模块S2系统复位键。 3、此时系统初始状态为:2号模块提供32K编码输入数据,6号模块进行汉明编译码,无差错插入模式。 4、实验操作及波形观测。 (1)用示波器观测6号模块TH5处编码输出波形。 (2)设置2号模块拨码开关S1前四位,观测编码输出并填入下表中: 五、实验记录与处理(数据、图表、计算等) 校对输入0000,编码0000000 输入0001,编码0001011 输入0010,编码0010101 输入0011,编码0011110 输入0100,编码0100110 输入0101,编码0101101 输入0110,编码0110011输入0111,编码0111000

通信原理设计报告(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.汉明码编译码 图 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 译码输出信息序列噪声

汉明码编译码

汉明码编译码

汉明码编译码 一设计思想 汉明码是一种常用的纠错码,具有纠一位错误的能力。本实验使用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 ?? ??=?? ????

1553B总线中曼彻斯特编解码器的设计

1553B总线中曼彻斯特编解码器的设计 时间:2011-04-11 来源:现代电子技术作者:武鹏,毕君懿 关键字:1553B总线曼彻斯特编解码器 0 引言曼彻斯特码是一种总线数据传输双极性码。在数字信号基带传输中,通过这种信道编码技术可使传送数据同时携带时钟信息,故也称其为自同步曼彻斯特码。在信道传输中曼彻斯特码有很好的抗干扰能力。接收端可以将分离出的时钟用于解码,从而简化了解码过程。 针对曼彻斯特码特点,可采用位同步方法提取时钟,常采用滤波法和数字锁相环法。滤波法采用的窄带滤波器不适合数字电路使用。数字锁相环法通过比较接收码元和本地码元为定时时钟的相位来添加扣除时钟脉冲,以达到调整相位的目的,但电路实现过于复杂。本文提出的时钟分离电路比数字锁相环简单,而且提取出来的时钟可以准确地采样到曼彻斯特码信号。 1 曼彻斯特码 曼彻斯特码是一种广泛用于以太网、短距离无线通信、航空电子综合系统中总线数据传输的双极性码。它的每个码元中点都存在一个电平跳变,1信号为一个从1到0的负跳变;0信号为一个从0到1的正跳变。由于曼彻斯特码在频谱中存在很强的定式分量,解码时可将分离出的时钟用来解码。另一方面,1553B传输电缆呈容性负载特性,所以在信号传输中,直流和低频分量将受到很大的衰减。曼彻斯特码频谱中不存在直流分量,而且低频分量也大大减小,很适合在1553B电缆中传输。 MIL-STD-1553B协议中采用的曼彻斯特码数据格式如图1所示。 同步头:占三位码元长度。命令字或状态字同步头的前1.5倍码元长度为高电平;后1.5倍码元长度为低电平,数据字同步头刚好相反。同步头用于区分字的类型以及标识字传输开始。 数据:16位数据位。图中bit3为数据最高位,依次递减,bit18为数据最低位。 奇偶校验位:这里采用奇校验。将16位数据按位同或的结果作为奇校验位。 2 曼彻斯特编码器的设计 由于曼彻斯特码的每个码元在其中心存在电平跳变,所以编码器的发送时钟频率至少应选择信息传输速率的2倍频。 通常编码器的实现方式有2种,基于移位寄存器,或者数据选择器。移位寄存器型编码器需要在编码开始后将同步头位、数据位、奇偶校验位通过字符格式编排器编排成一个并行数据,然后在发送时钟的控制下串行移位输出;数据选择器型编码器需要在编码开始后启动一个计数器,在计数器的控制下分别送出同步头、数据位、奇偶效验位。本文的编码器采用后者,其结构框图如图2所示。

(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].报纸名,年—月—日(版次). 附录(居中,黑体四号)

通信编解码器

学号 EDA技术及应用A 课程设计说明书 通信编解码器 起止日期:2015 年12 月28 日至2015 年12 月31 日 学生姓名 班级 成绩 指导教师(签字) 计算机与信息工程学院电子信息与工程系 2015年12月31日

课程设计任务书 2014 —2015 学年第1 学期 电子与信息工程系电子信息科学与技术专业 课程设计名称:EDA技术及应用A 设计题目:通信编解码器 完成期限:自2015 年12月28 日至2015 年12 月31 日共 1 周 一.课程设计依据 在掌握常用数字电路原理和技术的基础上,利用EDA技术和硬件描述语言,EDA开发软件(Quartus Ⅱ)和硬件开发平台(达盛试验箱CycloneⅡFPGA)进行初步数字系统设计。 二.课程设计内容 采用状态机结构设计简易串行数据编码器,输入为NRZ码,实现把输入码转换为转换为差分码,双相码,曼彻斯特码功能,串行数据速率为9600bit/s,要求通过仿真验证。 扩展设计:数据9600bit/s从串口来,采用1MHz超采样,实现数据9600bit/s NRZ码恢复,然后进行码变换。 三.课程设计要求 1. 要求独立完成设计任务。 2. 课程设计说明书封面格式要求见《天津城建大学课程设计教学工作规范》附表1 3. 课程设计的说明书要求简洁、通顺,计算正确,图纸表达内容完整、清楚、规范。 4. 测试要求:根据题目的特点,采用相应的时序仿真或者在实验系统上观察结果。 5. 课设说明书要求: 1) 说明题目的设计原理和思路、采用方法及设计流程。 2) 对各子模块的功能以及各子模块之间的关系作明确的描述。 3) 对实验和调试过程,仿真结果和时序图进行说明和分析。 4) 包含系统框图、电路原理图、HDL设计程序、仿真测试图。 指导教师(签字): 教研室主任(签字): 批准日期:2015 年12 月24 日

汉明码编译码实验

汉明码编译码实验 一、实验目的 1、掌握汉明码编译码原理 2、掌握汉明码纠错检错原理 二、实验内容 1、汉明码编码实验。 2、汉明码译码实验。 3、汉明码纠错检错能力验证实验。 三、实验器材 LTE-TX-02E通信原理综合实验系统----------------------------------------------模块8 四、实验原理 在随机信道中,错码的出现是随机的,且错码之间是统计独立的。例如,由高斯白噪声引起的错码就具有这种性质。因此,当信道中加性干扰主要是这种噪声时,就称这种信道为随机信道。由于信息码元序列是一种随机序列,接收端是无法预知的,也无法识别其中有无错码。为了解决这个问题,可以由发送端的信道编码器在信息码元序列中增加一些监督码元。这些监督码元和信码之间有一定的关系,使接收端可以利用这种关系由信道译码器来发现或纠正可能存在的错码。在信息码元序列中加入监督码元就称为差错控制编码,有时也称为纠错编码。不同的编码方法有不同的检错或纠错能力。有的编码就只能检错不能纠错。 那么,为了纠正一位错码,在分组码中最少要加入多少监督位才行呢?编码效率能否提高呢?从这种思想出发进行研究,便导致汉明码的诞生。汉明码是一种能够纠正一位错码且编码效率较高的线性分组码。下面我们介绍汉明码的构造原理。 一般说来,若码长为n,信息位数为k,则监督位数r=n?k。如果希望用r个监督位构造出r个监督关系式来指示一位错码的n种可能位置,则要求 2r? 1 ≥n 或2r ≥k + r + 1 (14-1)下面我们通过一个例子来说明如何具体构造这些监督关系式。 设分组码(n,k)中k=4,为了纠正一位错码,由式(14-1)可知,要求监督位数r≥3。若取r=3,则n= k + r =7。我们用α6α5…α0表示这7个码元,用S1、S2、S3表示三个监督关系式中的校正子,则S1 S2 S3的值与错码位置的对应关系可以规定如表14-1所列。 表14-1

汉明码

科信学院 通信系统仿真二级项目设计说明书 (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语言建立数字通信系统仿真模型。

HDB3编解码器的设计

东北石油大学课程设计 2010年12月24日

东北石油大学课程设计任务书 课程通信综合课程设计 题目HDB3编码器设计 专业通信工程姓名祁庆男学号070602140117 主要内容 利用EDA实现HDB3编码器,通过Quartus Ⅱ软件模拟实现HDB3码的相应功能,系统应具有而且具有软件开发周期短,成本低,执行速度高,实时性强,升级方便等特点。 基本要求 实现HDB3编码器,消除NRZ码的直流成分,具有时钟恢复和抗干扰性能,且适合于长距离信道传输。同时,本系统应具有一定的检错能力,当数据序列用HDB3码传输时,若传输过程中出现单个误码,其极性交替变化规律将受到破坏,因而在接收端根据HDB3码这一独特规律特性,可检出错误并纠正错误,同时HDB3码方便提取位定时信息。 参考资料 [1]樊昌信,曹丽娜.通信原理[M].北京:国防工业出版社,2006. [2]郑君里,应启珩,杨为理.信号与系统[M].北京:高等教育出版社,2001. 完成期限2010、11、1—2010、12、24 指导教师 专业负责人 2010年11 月1日

目录 1.设计要求 (1) 2. HDB3码编码工作原理 (1) 2.1 HDB3码的编码规则 (1) 2.2编码设计思想 (2) 3. 基于Quartus II软件的HDB3码编码器的设计 (2) 3.1插“V”模块的实现 (3) 3.2插“B”模块 (5) 3.3单极性变双极性的实现 (7) 4. Quartus Ⅱ软件介绍 (8) 4.1 Quartus Ⅱ软件的发展 (8) 4.2 Quartus Ⅱ的VHDL语言的软件操作流程 (9) 4.3 Quartus Ⅱ的VHDL语言的软件操作流程 (9) 5. 双极性变换的硬件电路 (10) 6. 总结 (10) 参考文献 (11)

基于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 Ⅱ设计软件提供完整的多平台设计环境,可以很轻松地满足特定设计的需要。

本科毕业设计---基于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

PCM编译码器设计及应用课程设计

PCM 编译码器设计及应用 一、摘要 脉冲编码调制(pulse code modulation,PCM)是概念上最简单、理论上最完善的编码系统,是最早研制成功、使用最为广泛的编码系统。运用Matlab 软件仿真来实现PCM编解码芯片的部分功能,从而完成整个电路设计上的编解码,设计简单,灵活方便。本文介绍用Matlab的Simulink来仿真实现PCM 编解码器的方法和过程,采用Matlab通信仿真软件对应用于无线信道中的数字通信方式和主要通信过程的实际情况进行计算机模拟仿真。主要通信过程为采样、量化、编码、调制解调等,为建立实际通信系统提供了实验仿真。 二、关键字:PCM、编译码、动态仿真 三、引言 随着电子技术和计算机技术的发展,仿真技术得到了广泛的应用。基于信号的用于通信系统的动态仿真软件simulink 具有强大的功能,可以满足从底层到高层不同层次的设计、分析使用,形成多层系统,使系统设计更加简洁明了,便于完成复杂系统的设计。simulink具有良好的交互界面,通过分析窗口和示波器模拟等方法,提供了一个可视的仿真过程,不仅在工程上得到应用,在教学领域也得到认可,尤其在信号分析、通信系统等领域。其可以实现复杂的模拟、数字及数模混合电路及各种速率系统。本文主要阐述了如何利用simulink实现脉冲编码调制(PCM)。系统的实现通过模块分层实现,模块主要由 PCM 编码模块、PCM 译码模块、及逻辑时钟控制信号构成。通过仿真设计电路,分析电路仿真结果,为最终硬件实现提供理论依据。 四、系统介绍

1、PCM 简介 现在的数字传输系统都是采用脉码调制(Pulse Code Modulation)体制。PCM 最初并非传输计算机数据用的,而是使交换机之间有一条中继线不是只传送一条电话信号。随着大规模集成电路的飞速发展,话路滤波器和 PCM 编码器已可集成在同一芯片上,这使 PCM 在光纤通信,数字微波通信,卫星通信等数字通信领域中获得了更广泛的应用。然而在某些需要PCM编码器的实际应用中,如数字交换机中的信号音的产生和实现,单靠 PCM 编解码芯片来完成整个编解码功能 ,在电路设计和实现上都显得烦琐和笨拙 ,相反如果运用软件方法来实现PCM编解码芯片的部分功能并与PCM 编解码芯片相结合来共同完成整个电路设计上的编解码,不仅设计简单,灵活方便,而且往往可以达到事半功倍的结果。在现代通信系统中以 PCM 为代表的编码调制技术被广泛应用于模拟信号的数字传输。PCM 的主要优点是:抗干扰能力强;失真小;传输特性稳定,尤其是远距离信号再生中继时噪声不累积,而且可以采用压缩编码、纠错编码和保密编码等来提高系统的有效性、可靠性和保密性。另外,PCM 还可以在一个信道上将多路信号进行时分复用传输。所以,在未来的很长一段时间内,PCM 在通信系统中都会起着很大的作用。 2、脉冲编码调制(PCM)原理 PCM 即脉冲编码调制,在通信系统中完成将语音信号数字化功能。PCM 的实现主要包括三个步骤完成:抽样、量化、编码。分别完成时间上离散、幅度上离散、及量化信号的二进制表示。根据CCITT的建议,为改善小信号量化性能,采用压扩非均匀量化,有两种建议方式,分别为 A 律和μ律方式,我国采用了 A 律方式,由于 A 律压缩实现复杂,常使用 13 折线法编码,采用非均匀量化PCM 编码示意图如下图示。

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

****************** 实践教学 ******************* 兰州理工大学 计算机与通信学院 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)

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

JIANGSU TEACHERS UNIVERSITY OF TECHNOLOGY 通信原理课程设计报告 课程设计题目:基于Quartus II的(7,4)汉明码的编解码器的设计班级: 学号: 姓名: 指导教师姓名:钱志文任艳玲 设计地点:

目录 序言 (2) 第一章软件简介 (3) 第二章工作原理 (4) 第三章基于Quartus II的(7,4)汉明码的编解码器的设计的仿真实现3.1 仿真方案原理 (5) 3.2 仿真的功能程序 (6) 3.3 仿真的结果与分析 (7) 参考文件 (10) 体会与建议 (10) 附录 (10)

序言 汉明(Hamming)码是一种一种能够纠正一位错码或检测两位错码的一种效率较高的线性分组码。本次课程设计的任务就是利用EDA技术在Quartus II软件下用VHDL语言实现(7,4)汉明码的编译码的设计和仿真。从而进一步加深对汉明码编译码原理的理解。 EDA(Electronic Design Automation技术是随着集成电路和计算机技术飞速发展应运而生的一种高级、快速、有效的电子设计电动化工具。目前,VHDL语言已经成为EDA的关键技术之一,VHDL 是一种全方位的硬件描述语言,具有极强的描述能力,能支持系统行为级、寄存器传输级和逻辑门级三个不同层次的设计,支持结构、数据流、行为三种描述形式的混合描述,覆盖面广,抽象能力强,因此在实际应用中越来越广泛。 VHDL语言具有功能强大的语言结构,可用明确的代码描述复杂的控制逻辑设计,并且具有多层次的设计描述功能,支持设计库和可重复使用的原件的生成,近几十年来,EDA技术获得了飞速的发展,它以计算机为平台,根据硬件描述语言VHDL,自动地完成逻辑编译,化简为割、综合及优化,布局布线,仿真直至对特定目标芯片的适配编译,逻辑映射和编程下载等工作,以自顶向下的设计方法,使硬件设计软件化,拜托了传统手工设计的众多缺点,随着EDA技术的深入发展,基于硬件描述语言的方法将由取代传统手工设计方法的趋势。

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