海明码生成与校验电路设计与实现.docx
《海明码生成与校验电路设计与实现.docx》由会员分享,可在线阅读,更多相关《海明码生成与校验电路设计与实现.docx(17页珍藏版)》请在冰豆网上搜索。
海明码生成与校验电路设计与实现
航空航天大学
课程设计报告
课程设计名称:
计算机组成原理课程设计
课程设计题目:
海明码生成与校验电路设计与实现
院(系):
专业:
班级:
学号:
姓名:
指导教师:
完成日期:
2016年1月14日
第1章总体设计方案-1-
1.1设计原理-1-
1.2设计思路错误!
未定义书签。
1.3设计环境错误!
未定义书签。
第2章详细设计方案3
2.1顶层方案图的设计与实现3
2.2功能模块的设计与实现4
2.2.1海明码SHENGCHENG模块的设计与实现4
2.2.2海明码ERROR模块的设计与实现6
2.2.3海明码JIAOYAN模块的设计与实现………………….......………………8
3.1编程下载错误!
未定义书签。
3.2硬件测试及结果分析错误!
未定义书签。
参考文献15
附录(程序清单或电路原理图)16
第1章总体设计方案
1.1设计原理
海明校验码是由理查得·海明(RichardHanmming)于1950年提出的,它不仅具有检测错误的能力,同时还具有给出错误所在的准确位置的能力,这在通信领域有着很广泛的应用。
海明码是奇偶校验的一种扩充。
它采用多位校验码的方式,在这些校验位中的每一位都对不同的信息数据位进行奇偶校验,通过合理地安排每个校验位对原始数据进行校验位组合,可以达到发现错误,纠正错误的目的。
(1)数据位和校验位的关系
假设数据位有m位,如何设定校验位k的长度才能满足纠正一位错误的要求呢?
我们这里做一个简单的推导。
k位的校验码可以有2^k个值。
如果能够满足:
2^k–1>=m+k(m+k为编码后的总长度),在理论上k个校验码就可以判断是哪一位(包括信息码和校验码)出现问题。
(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
H2
H3
H4
H5
H6
H7
H8
H9
H10
H11
H12
P1
P2
D8
P4
D7
D6
D5
P8
D4
D3
D2
D1
由上表可得出:
P1=D2⊕D4⊕D5⊕D7⊕D8
P2=D2⊕D3⊕D5⊕D6⊕D8
P3=D1⊕D5⊕D6⊕D7
P4=D1⊕D2⊕D3⊕D4
海明码的校验:
S1=P1⊕D2⊕D4⊕D5⊕D7⊕D8
S2=P2⊕D2⊕D3⊕D5⊕D6⊕D8
S3=P3⊕D1⊕D5⊕D6⊕D7
S4=P4⊕D1⊕D2⊕D3⊕D4
1.3设计环境
·硬件环境:
伟福COP2000型计算机组成原理实验仪、XCV200实验板、微机;
·EDA环境:
Xilinxfoundationf3.1设计软件、COP2000仿真软件。
第2章详细设计方案
2.1设计与实现
实现海明码的生成与校验逻辑功能,采用原理图设计输入方式完成,电路实现基于XCV200可编程逻辑芯片。
完成原理图的设计后,把输入/输出信号安排到XCV200指定的引脚上去,实现芯片的引脚锁定。
原理图主要由生成,错误模块和校验三个模块组装而成的一个完整的设计实体,分别为:
生成模块、校验模块、错误模块
图2.1生成模块
图2.2错误模块
图2.3校验模块
2.2功能模块的设计与实现
2.2.1生成模块的设计与实现
(1)元件结构
海明码生成模块,原理是通过输入的数据I1~I8按照公式:
P1=D2⊕D4⊕D5⊕D7⊕D8
P2=D2⊕D3⊕D5⊕D6⊕D8
P3=D1⊕D5⊕D6⊕D7
P4=D1⊕D2⊕D3⊕D4
生成了4位校验码P1/P2/P3/P4,从而得出了12位海明码。
图2.4生成模块部电路
(2)功能仿真
对生成模块进行功能仿真,验证其功能的正确性。
图2.5SHENGCHENG模块仿真
结果分析:
输入I1-I8为10100000,输出O1-O12为0,结果是正确的海明码。
2.2.2错误模块的设计与实现
(1)元件结构
本模块的原理是通过3线8线译码器的3进1出,输出一个1,与8位输入数据中的一位异或,使之发生错误,从而得出一组错误的数据。
图2.6错误产生模块部电路
(2)功能仿真
对创建的ERROR元件进行功能仿真,验证其功能的正确性。
图2.7ERROR模块仿真
结果分析:
输入L1-L3为000,输入I1-I8为10100000,输出K1为0,产生一位错误。
2.2.3校验模块的设计与实现
(1)元件的部结构
原理是通过公式:
S1=P1⊕D2⊕D4⊕D5⊕D7⊕D8
S2=P2⊕D2⊕D3⊕D5⊕D6⊕D8
S3=P3⊕D1⊕D5⊕D6⊕D7
S4=P4⊕D1⊕D2⊕D3⊕D4
连成的电路对数据进行校验,判断数据是那一位出错,并对出错的那一位与错误数据异或,从而得出正确的数据。
图2.8校验模块部电路
(2)功能仿真
对校验模块进行功能仿真,验证其功能的正确性。
图2.9校验模块仿真
2.3仿真调试
仿真调试是为了验证设计电路逻辑功能的正确性,输入8位二进制数据位生成12位海明码,中间经三八译码器来改变一位数据位,经校验电路修改,最后输出正确的8位二进制数据位。
仿真调试时采用两组数据
I1~I8
第一组数据
10100000
第二组数据
10010001
(1)创建仿真信号
在进行仿真时,输入数据位用了上面的两组数据。
第一组数据,I1~I8为10100000,生成的海明码O1~O12为
第二组数据,I1~I8为10010001,生成的海明码O1~O12为1
这两组数据又经三八译码器改变其中一位错的数据输入到校验电路里,经校验后输出原本的数据位,最终实现了海明码生成和校验功能。
(2)仿真结果
功能仿真波形结果如图2.10、图2.11所示,仿真数据结果如表2.3所示。
对表中容进行计算,可以看出功能仿真结果是正确的,进而说明此次电路设计成功。
输入数据8位数据(I1~I8)
3线8线译码器输入(L1~L3)
输出海明码
(O1~O12)
输出校验后的数据(D1~D8)
10100000
000
0
10100000
10010001
001
1
10010001
图2.10第一组数据功能仿真波形结果
图2.11第二组数据功能仿真波形结果
第3章编程下载与硬件测试
3.1编程下载
利用XilinxISE的编程下载功能,下载编译我的工程,从而得到的*.bin文件,即可下载到XCV200实验板的XCV200可编程逻辑芯片中,完成编译下载。
3.2硬件测试及结果分析
利用XCV200实验板进行硬件功能测试。
海明码数据位的输入数据通过XCV200实验板的输入开关实现,输出数据通过XCV200实验板的LED指示灯实现。
输入数据得到下图的数据:
图3.1第一组数据cop2000仿真下载结果
结果分析:
输入K1:
1-K1:
3为000,对应L1-L3,输入I1-I8为10010001,输出B7—A4为1对应O1-O12。
图3.2第二组数据cop2000仿真下载结果
结果分析:
输入K1:
1-K1:
3为000,对应L1-L3,输入I1-I8为10010010,输出B7-A4为0对应O1-O12。
参考文献
[1]昕燕.EDA技术实验与课程设计[M].:
清华大学,2006
[2]延滨.微型计算机系统原理、接口与EDA设计技术[M].:
邮电大学,2006
[3]唐朔飞.计算机组成原理(第2版)[M].:
高等教育,2008
附录(程序清单或电路原理图)
电路原理总图
课程设计总结:
通过本次课设,我更深入的学习和了解了海明码,加强了我对海明码的认识,而且还学习了Xilinxfoundationf3.1设计平台的应用,对我以后的学习很有帮助。
增强了自己对信息的搜集与应用能力,增加了自己的计算机硬件知识,也培养了自己对计算机硬件的兴趣。
虽然在设计过程中遇到了许多困难和问题,但解决后也同时给自己带来了喜悦和成功感,这更让我对组原产生了兴趣。
在电路设计过程中自己独立思考,独立完成电路设计和连接,使自己的独立思考能力得到了很大的提高。
课程设计过程中遇到了一些问题,在指导老师的耐心帮助下均得到了解决。
在课程设计过程中自己逐渐意识到,做好一个项目不仅仅需要渊博的知识做基础,更要有一定的耐心和毅力。
指导教师评语:
指导教师(签字):
年月日
课程设计成绩