数电实验2
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二海明码校验逻辑实现
实验目的:
1)掌握总线的应用方法;
2)掌握总线出错时发现错误和纠正错误的方法;
3)掌握奇偶校验的原理;
4)掌握海明校验的编码原理及设计,调试方法。
实验原理:
●检错和校错的必要条件
8421码不具备检错能力,这是因为它的最小码距为1,当8421码的码字中有一位出错,而产生的错误代码就有可能是另一个码字,这样,无法判断它是否已出错。一种编码的检错和校错能力与最小码距的关系为:L-1=C+D;
L为码组中的最小码距,C为可校错的位数,D为可检错的位数,且D>=C.
●8421海明校验码
8421海明校验码由8421码加三位校验码组成.设8421码为I1 I2 I3 I4,三位校验码为:P3 P2 P1,则8421码为下列七位代码:
位序7 6 5 4 3 2 1
8421海明码I4 I3 I2 P3 I1 P2 P1
校验码的值由下式确定:
P3=I4 xor I3 xor I2 P2=I4 xor I3 xor I1 P1=I4 xor I2 xor I1
由此可得8421海明码的最小码距为3 ,故可检测并纠正一位错
误。输出时在输出端先求出校验和:
S3= I4 xor I3 xor I2 xor p3 S2= I4 xor I3 xor I1 xor P2
S1= I4 xor I2 xor I1 xor P1
然后判断S3S2S1,如果代码不出错,则S3S2S1=000,否则由S3S2S1构成的二进制数指出出错位数。
实验设计:
1)实验原理图
本实验要用到总线和寄存器,整个电路设计可分为三个部
分:
数据输入部分,造错部分,检错和纠错部分。由此得设计框
图如下:
考察异或门的输入输出特性知,一位输入恒为高电平时可对另一
位进行造错,由于只需对四位信息为造错,故可用一对一法进行造错是电路简单。
由上分析,得电路原理图如下:
2)用GAL芯片实现
3)用VHDL硬件描述语言实现
由于输入输出均为多个,故宜用数组来实现,定义数组如下:
造错部分描述为:
原理图中的3-8译码器可用case语句来实现,如下:
最后纠错为:O <= ERRI XOR YIMA;
VHDL描述如下:
实验波形图如下:
实验小结:
这次实验主要是建立起了总线和使能控制的概念,和实验一相比,本实验中引入了时序逻辑(寄存器)。虽然实验原理不难,但由于是初次使用MAX+plus,所以这次实验花的时间比较多,特别是用原理图实现部分。
通过这次实验,对寄存器和总线结构有了更进一步的理解,同时也学会了MAX+plus的初步使用,对异或门和同或门的输入输出特性也有了更深的了解。