当前位置:文档之家› 海明码的生成和校验

海明码的生成和校验

航空航天大学
课程设计报告
课程设计名称:计算机组成原理课程设计
课程设计题目:海明码生成与校验电路的设计
院(系):计算机学院
专业:计算机科学与技术(物联网方向)班级:
学号:
姓名:
指导教师:
完成时间:2016年1月4日-2016年1月15日
目录
第1章总体设计方案 (1)
1.1设计原理 (1)
1.2设计思路 (1)
1.3设计环境 (1)
第2章详细设计方案 (1)
2.1顶层方案图的设计与实现 (1)
2.1.1设计方案 (1)
2.1.2器件的选择与引脚锁定 (1)
2.2底层模块的设计与实现 (1)
2.2.1产生模块的设计与实现 (1)
2.2.2出错模块的设计与实现 (1)
2.2.3 纠正模块的设计与实现 (1)
2.3仿真调试 (1)
第3章编程下载与硬件测试 (1)
3.1编程下载 (1)
3.2硬件测试及结果分析 (1)
参考文献 (1)
附录(程序清单或电路原理图) (1)
第1章总体设计方案
1.1 设计原理
海明校验码是由理查得·海明(Richard Hanmming)于1950年提出的,它不仅具有检测错误的能力,同时还具有给出错误所在的准确位置的能力,这在通信领域有着很广泛的应用。

海明码是奇偶校验的一种扩充。

它采用多位校验码的方式,在这些校验位中的每一位都对不同的信息数据位进行奇偶校验,通过合理地安排每个校验位对原始数据进行校验位组合,可以达到发现错误,纠正错误的目的。

(1)数据位和校验位的关系
假设数据位有m位,如何设定校验位k的长度才能满足纠正一位错误的要求呢?我们这里做一个简单的推导。

k位的校验码可以有2k个值。

如果能够满足:2k>=m + k+1,在理论上k个校验码就可以判断是哪一位(包括信息码和校验码)出现问题。

(2)海明码的编码规律
若海明码的最高位号为m,最低位号为1,即H m H m-1…H2H1,则海明码的编码规律通常是:
a.校验位与数据位之和为m,每个校验位P i在海明码中被分在2i-1的位置,其余各位为数据位,并按从低向高逐位依次排列的关系分配各数据位。

b.海明码的每一位H i(包含数据位和校验位本身)由多个校验位校验,其关系是被校验的每一位位号要等于校验它的各校验位的位号之和。

这样安排的目的,
是希望校验的结果能正确反映出出错位的位号。

1.2 设计思路
(一)海明码的生成:因为要求的是8位的二进制数据,所以此处的m为8,按照数据位和校验位的对应关系,k应为4,故海明码的总位数为12,可表示为:H12——H1,4个校验位P4~P1对应的海明码位号分别为:H8/H4/H2/H1,则有如下排列关系:D8D7D6D5P4D4D3D2P3D1P2P1
按照海明码的原理得出如下的表格:
P1=D1⊕D2⊕D4⊕D5⊕D7
P2=D1⊕D3⊕D4⊕D6⊕D7
P3=D2⊕D3⊕D4⊕D8
P4=D5⊕D6⊕D7⊕D8
(二)海明码的校验:
海明码校验函数(S函数)及校验过程<偶校验>
S1=P1⊕D1⊕D2⊕D4⊕D5⊕D7
S2=P2⊕D1⊕D3⊕D4⊕D6⊕D7
S3=P3⊕D2⊕D3⊕D4⊕D8
S4=P4⊕D5⊕D6⊕D7⊕D8
1.3 设计环境
·硬件环境:伟福COP2000型计算机组成原理实验仪、XCV200实验板、微机;
·EDA环境:Xilinx foundation f3.1设计软件、COP2000仿真软件。

图1.1Xilinx foundation f3.1设计平台
第2章详细设计方案
2.1 顶层方案图的设计与实现
实现海明码的生成与校验逻辑功能,采用原理图设计输入方式完成,电路实现基于XCV200可编程逻辑芯片。

完成原理图的设计后,把输入/输出信号安排到XCV200指定的引脚上去,实现芯片的引脚锁定。

2.1.1设计方案
顶层图形文件是由产生(如图2.1),出错(如图2.2)和纠正(如图2.3)三个模块元件组装而成的一个完整的设计实体组成。

图2.1 产生模块
图2.2 出错模块
图2.3 纠正模块
2.1.2器件的选择与引脚锁定
(1)器件的选择
由于硬件设计环境是基于伟福COP2000型计算机组成原理实验仪和XCV200实验板,故采用的目标芯片为Xlinx XCV200可编程逻辑芯片。

(2)引脚锁定
把顶层图形文件中的输入/输出信号安排到Xlinx XCV200芯片指定的引脚上去,实现芯片的引脚锁定。

2.2 底层模块的设计与实现
海明码生成与校验设计电路是由3个模块组成,其中产生模块是由8个输入端输入海明码的8位数据位,经异或门求得校验位P1,P2,P3,P4,由此输出12位海明码;出错模块是由三八译码器来改变输入数据的某一位,从而产生错误的海明码;纠正模块是对错误的数据进行纠正修改。

2.2.1产生模块的设计与实现
(1)元件结构
海明码产生模块,原理是通过输入的数据IN1~IN8按照公式:
P1=D1⊕D2⊕D4⊕D5⊕D7,
P2=D1⊕D3⊕D4⊕D6⊕D7,
P3=D2⊕D3⊕D4⊕D8,
P4=D5⊕D6⊕D7⊕D8,
生成了4位校验码P1/P2 /P3/P4,从而得出了12位海明码。

图2.4 产生模块部电路
(2)功能仿真
对产生模块进行功能仿真,验证其功能的正确性。

图2.5 产生模块仿真
结果分析:输入IN1-IN8为10011001,输出O1-O12为1,结果是正确的海明码。

2.2.2出错模块的设计与实现
(1)元件结构
本模块的原理是通过3线8线译码器的3进1出,输出一个1,与8位输入数据中的一位异或,使之发生错误,从而得出一组错误的数据。

图2.6 出错模块部电路
(2)功能仿真
对创建的出错元件进行功能仿真,验证其功能的正确性
图2.7 出错模块仿真
结果分析:输入IN1-IN3为000,输入IN1-IN8为10011001,输出O1-O8为1,其中O1为出错位,产生了一位错误。

2.2.3 纠正模块的设计与实现
(1)元件的部结构
原理是通过公式:
S1=P1⊕D1⊕D2⊕D4⊕D5⊕D7,
S2=P2⊕D1⊕D3⊕D4⊕D6⊕D7,
S3=P3⊕D2⊕D3⊕D4⊕D8,
S4=P4⊕D5⊕D6⊕D7⊕D8,连成的电路对数据进行校验,判断数据是哪一位出错,并对出错的那一位与错误数据异或,从而得出正确的数据。

图2.8 纠正模块部电路(2)功能仿真
对纠正模块进行功能仿真,验证其功能的正确性
图2.9 纠正模块仿真
2.3 仿真调试
仿真调试是为了验证设计电路逻辑功能的正确性,输入8位二进制数据位生成12位海明码,中间经三八译码器来改变一位数据位,经校验电路修改,最后输出正确的8位二进制数据位。

(1)创建仿真信号
在进行仿真时,输入数据位用了上面的两组数据。

第一组数据,IN1~IN8为10011001,生成的海明码O1~O12为1。

第二组数据,IN1~IN8为11001100,生成的海明码O1~O12为0。

这两组数据又经三八译码器改变其中一位错的数据输入到纠正电路里,经纠正校验后输出原本的数据位,最终实现了海明码生成和校验功能。

(2)仿真结果
功能仿真结果如图2.10、图2.11所示,仿真数据结果如表2.3所示。

对表中容进行计算,可以看出功能仿真结果是正确的,进而说明此次电路设计成功。

表2.3:
10011001 000(第一位) 1 00011001 11001100 001第二位)0 10001100
图2.10 第一组数据功能仿真结果
图2.11 第二组数据功能仿真结果
第3章编程下载与硬件测试
3.1 编程下载
利用Xilinx ISE的编程下载功能,下载编译我的工程,从而得到的*.bin文件,即可下载到XCV200实验板的XCV200可编程逻辑芯片中,完成编译下载。

3.2 硬件测试及结果分析
利用XCV200实验板进行硬件功能测试。

海明码数据位的输入数据通过XCV200实验板的输入开关实现,输出数据通过XCV200实验板的LED指示灯实现,其对应关系如表3.1所示。

表3.1 XCV200实验板信号对应关系
输入数据,逐个测试输出结果,即用XCV200实验板的开关K0、K1输入数据,同时观察LEDA和LEDB的输出,得到如表3.2所示的硬件测试结果。

表3.2 硬件测试结果
输入信号输出信号
K1 K0B7-A4
000 10010001 1
图3.1 cop2000仿真下载结果
结果分析:输入K1:1-K1:3为000,对应CHUCUO.IN3-CHUCUO.IN1,输入CHANSHENGIN.1-CHANSHENG.IN8为1001001,输出B7—A4为1对应CHANSHENG.O1-CHANSHEN.O12。

参考文献
[1] 延滨,微型计算机系统原理、接口与EDA设计技术(第三版).:
邮电大学,2006
[2] 王爱英.计算机组成与结构(第4版)[M].:清华大学,2006
[3] 唐朔飞,计算机组成原理(第二版).:高等教育,2007
[4] 周大海,计算机组成原理实验与课程设计教程.:航空航天大学,
2015
. . . . . 附录(程序清单或电路原理图)
总电路原理图。

相关主题