海明码生成与校验电路的设计Word格式.docx
《海明码生成与校验电路的设计Word格式.docx》由会员分享,可在线阅读,更多相关《海明码生成与校验电路的设计Word格式.docx(20页珍藏版)》请在冰豆网上搜索。
参考文献14
附录(程序清单或电路原理图)15
第1章总体设计方案
1.1设计原理
海明校验码是在数据中加入几个校验位,并把数据的每一个二进制位分配在几个奇偶校验组中。
当某一位出错后,就会引起有关的几个校验组的值发生变化,这不但可以发现出错,还能指出是哪一位出错,为自动纠错提供了证据。
海明码能检测出2位错误,并能纠正1位错误。
(1)数据位和校验位的关系
假设校验位的个数为r,则它能表示2r个信息,用其中的一个信息指出“没有错误”,其余的2r-1个信息指出错误发生在哪一位。
然而错误也可能发生在校验位,因此只有k=2r-1-r个信息能用于纠正被传送数据的位数,也就是说要满足关系:
2r>
=k+r+1
(发现一位错)
2r-1>
=k+r(发现与自动校正一位错,并发现两位错)
数据位与校验位的对应关系
K值
最小的r值
1~4
5~11
12~26
27~57
58~120
4
5
6
7
8
(2)海明码的编码规律
若海明码的最高位号为m,最低位号为1,即HmHm-1…H2H1,则海明码的编码规律通常是:
a.校验位与数据位之和为m,每个校验位Pi在海明码中被分在
2i-1的位置,其余各位为数据位,并按从低向高逐位依次排列的关系分配各数据位。
b.海明码的每一位Hi(包含数据位和校验位本身)由多个校验位校验,其关系是被校验的每一位位号要等于校验它的各校验位的位号之和。
这样安排的目的,是希望校验的结果能正确反映出出错位的位号。
1.2设计思路
(一)海明码的生成:
上述规律讨论一个字节的海明码。
每个字节由8个二进制位组成,此处的k为8,按照数据位和校验位的对应关系,r应为5,由于总校验位只是检测两位出错还是一位出错,因此设计时不必考虑它的值,设r为4,故海明码的总位数为12,可表示为:
H12H11…H3H2H1,4个校验位P4~P1对应的海明码位号分别为:
H8,H4,H2,H1。
其余为数据位Di,则有如下排列关系:
D8D7D6D5P4D4D3D2P3D1P2P1
每个海明码的位号要等于参与校验它的几个校验位的位号之和,因此得出如下的表格:
出错的海明码位号和校验位位号的关系
海明码位号
数据位/校验位
参与校验的校验位位号
被校验位的海明码位号=校验位位号之和
H1
P1
1
1=1
H2
P2
2
2=2
H3
D1
1,2
3=1+2
H4
P3
4
4=4
H5
D2
1,4
5=1+4
H6
D3
2,4
6=2+4
H7
D4
1,2,4
7=1+2+4
H8
P4
8
8=8
H9
D5
1,8
9=1+8
H10
D6
2,8
10=2+8
H11
D7
1,2,8
11=1+2+8
H12
D8
4,8
12=4+8
P1=D1⊕D2⊕D4⊕D5⊕D7
P2=D1⊕D3⊕D4⊕D6⊕D7
P3=D2⊕D3⊕D4⊕D8
P4=D5⊕D6⊕D7⊕D8
在这种安排中,每一位数据位,都至少出现3个Pi值的形成关系中,当任一位数据码发生变化时,必将引起3个或4个Pi值跟着变化,该海明码的码距为4。
(二)海明码的校验:
海明码校验函数(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环境:
Xilinxfoundationf3.1设计软件、COP2000仿真软件。
图1.1Xilinxfoundationf3.1设计平台
第2章详细设计方案
2.1顶层方案图的设计与实现
顶层方案图实现海明码的生成与校验逻辑功能,采用原理图设计输入方式完成,电路实现基于XCV200可编程逻辑芯片。
在完成原理图的功能设计后,把输入/输出信号安排到XCV200指定的引脚上去,实现芯片的引脚锁定。
2.1.1创建顶层图形设计文件
顶层图形文件主要由一个SHENGCHENG元件,ERROR元件和JIAOYAN元件模块组装而成的一个完整的设计实体。
顶层图形文件结构如图所示。
图2.1SHENGCHENG模块
图2.2ERROR模块
图2.3JIAOYAN模块
2.1.2器件的选择与引脚锁定
(1)器件的选择
由于硬件设计环境是基于伟福COP2000型计算机组成原理实验仪和XCV200实验板,故采用的目标芯片为XlinxXCV200可编程逻辑芯片。
(2)引脚锁定
把顶层图形文件中的输入/输出信号安排到XlinxXCV200芯片指定的引脚上去,实现芯片的引脚锁定。
图形文件中的输入/输出信号
XCV200芯片引脚信号
ID1
P103
ID2
P102
ID3
P101
ID4
P100
ID5
P97
ID6
P96
ID7
P95
ID8
P94
K1
P87
K2
P86
K3
P85
OD1
P110
OD2
P111
OD3
P203
OD4
P185
OD5
P184
OD6
P178
OD7
P152
OD8
P147
OH1
P125
OH2
P124
OH3
P109
OH4
P108
OH5
P107
OH6
P99
OH7
P93
OH8
P78
OH9
P223
OH10
P222
OH11
P221
OH12
P220
2.2功能模块的设计与实现
海明码生成与校验设计电路是由2个模块组成,其中SHENGCHENG模块是由8个输入端输入海明码的8位数据位,经异或门求得校验位P1,P2,P3,P4,由此输出12位海明码;
JIAOYAN模块是由三八译码器来改变输入数据的正确性,从而实现海明码校验的功能。
2.2.1shengcheng模块的设计与实现
(1)元件的内部结构
海明码生成模块,原理是通过输入的数据ID1~ID8按照公式:
P1=D1⊕D2⊕D4⊕D5⊕D7,P2=D1⊕D3⊕D4⊕D6⊕D7,P3=D2⊕D3⊕D4⊕D8,P4=D5⊕D6⊕D7⊕D8,生成了4位校验码P1~P4,得出了12位海明码。
图2.4SHENGCHENG模块内部电路
(2)功能仿真
对创建的SHENGCHENG元件进行功能仿真,验证其功能的正确性。
图2.5SHENGCHENG模块仿真
结果分析:
输入D1-D8为10011001,输出H1-H12为101000101001,结果是正确的海明码。
2.2.2ERROR模块的设计与实现
原理是通过3线8线译码器选择性的对8位输入数据的一位取反,得出一组错误的数据,然后送与校验模块进行校验。
图2.6ERROR模块内部电路
对创建的ERROR元件进行功能仿真,验证其功能的正确性
图2.7ERROR模块仿真
输入K1-K3为000,输入D1-D8为10011001,输出H3、H5、H6、H7、H9、H10、H11、H12为00011001,3线8线译码器使数据的第一位取反。
2.2.3JIAOYAN模块的设计与实现
原理是通过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.8JIAOYAN模块内部电路
对创建的JIAOYAN元件进行功能仿真,验证其功能的正确性
图2.9JIAOYAN模块仿真
2.3仿真调试
仿真调试主要验证设计电路逻辑功能、时序的正确性,这里采用输入8位数据位生成12位海明码,并经三八译码器来故意输错一位海明码,经校验电路来进行修改,从而输出正确的8位数据位.仿真调试时采用两组数据:
D1~D8
第一组数据
10011001
第二组数据
10000001
(1)建立仿真波形文件及仿真信号选择
功能仿真时,输入数据位采用了两组数据。
其中前半部分为第一组数据,D1~D8为10011001,生成的海明码H12~H1为100010001111。
后半部分为第二组数据,D1~D8为10000001,生成的海明码H12~H1为100010001111。
其中这两组数据又经三八译码器变为有一位错的数据输入到校验电路里,经校验后输出正确的数据位,从而实现了海明码生成和校验的整个功能。
(2)功能仿真结果与分析
功能仿真波形结果如图2.2所示,仿真数据结果如表2.3所示。
对表2.3与表1.1的内容进行对比,可以看出功能仿真结果是正确的,进而说明电路设计的正确性。
表2。
3:
输入数据8位数据(ID1~ID8)
3线8线译码器输入(K1~K3)
输出海明码
(OH1~OH12)
输出校验后的数据(OD1~OD8)
000
101000101001
100
111100010001
图2.10第一组数据功能仿真波形结果
图2.11第二组数据功能仿真波形结果
第3章编程下载与硬件测试
3.1编程下载
利用XilinxISE的编程下载功能,将得到的*.bin文件下载到XCV200实验板的XCV200可编程逻辑芯片中。
3.2硬件测试及结果分析
利用XCV200实验板进行硬件功能测试。
海明码数据位的输入数据通过XCV200实验板的输入开关实现,输出数据通过XCV200实验板的LED指示灯和七段数码管实现,其对应关系如表3.1所示。
表3.1XCV200实验板信号对应关系
XCV200实验板
ID1
K0
ID4
KA
KB
KC
OD1~OD8
LEDA
OH1~OH8
LEDB
OH9~OH12
七段数码管S0
利用输入参数作为输入数据,逐个测试输出结果,即用XCV200实验板的开关K0、K1输入数据,同时观察LEDA和LEDB,及七段数码管D0的输出,得到如表3.2所示的硬件测试结果。
表3.2硬件测试结果
输入信号
输出信号
K1
数码管S0
01000101
09
001
1000111
08
图3.1第一组数据cop2000仿真下载结果
输入K1-K3为000,输入ID1-ID8为10011001,输出A0-A7为10011001对应OD1-OD8,输出B0-B7为10100010对应OH1-OH8,输出SO为09化为二进制为1001对应OH12-OH9。
图3.2第二组数据cop2000仿真下载结果
输入K1-K3为001,输入ID1-ID8为10000001,输出A0-A7为10000001对应OD1-OD8,输出B0-B7为11110001对应OH1-OH8,输出SO为08化为二制为1000对应OH12-OH9。
参考文献
[1]白中英,计算机组成原理(第三版)。
北京:
科学出版社,2000
[2]王爱英.计算机组成与结构(第4版)[M].北京:
清华大学出版社,2006
附录(程序清单或电路原理图)
总电路原理图
课程设计总结:
在做课程设计过程中,我遇到了很多问题和困难。
例如在第一画逻辑图时仿真的结果不完全正确,后来检查出是其中的线路有连接重复或连错的现象,经修改实现了电路的仿真。
第二是在下载到电路板时,原因是COP只能识别XCV200—4—PQ240的工程,而我的工程是XCV400—4—PQ240,所以下载时出错,把工程改为XCV200—4—PQ240后下载成功。
课设的目的是实现了海明码的生成与校验功能,成功地实现了对输入八位数据生成12位海明码,以及输入一位错的海明码,对其进行校验生成正确的海明码的功能。
通过本次课设,不仅增强了自己对信息的搜集与应用能力,增加了自己的计算机硬件知识,也培养了自己对计算机硬件的兴趣。
虽然在设计过程中遇到了许多困难和问题,但解决后也同时给自己带来了喜悦和成功感,这更让我对组原产生了兴趣。
在电路设计过程中自己独立思考,独立完成电路设计和连接,使自己的独立思考能力得到了很大的提高。
课程设计过程中遇到了一些问题,在指导老师的耐心帮助下均得到了解决。
在课程设计过程中自己逐渐意识到,做好一个项目不仅仅需要渊博的知识做基础,更要有一定的耐心和毅力。
指导教师评语:
指导教师(签字):
年月日
课程设计成绩
忽略此处..