16位海明解码电路设计(计算机数据表示实验)

首先了解实验大体的要求,该实验要求我们对22位海明编码进行解码成原来的16位,且判断是否出错,有一位错,两位错,还有无错。对于一位错,我们要进行纠正。

1.判断是否出错
设置有六位指错字,Gi(i=1,2,3,4,5,6),其中G5G4G3G2G1是进行判断是否数据出错,G6是总的奇偶校验位,可以用来检验数据是一位错,还是两位错。
已知有:
在这里插入图片描述
则可得Gi(i=1,2,3,4,5,6)

在这里插入图片描述
2.检错原理
当G5G4G3G2G1=0时,表示数据无传输错误,否则,表示出错。当发生一位数据错误时,G5G4G3G2G1所指示的数据,表示那位数据出错(例如G5G4G3G2G1=00101,则表示第5位数据出错)。若发生两位错时,G5G4G3G2G1仍不为0,由于只能纠正1位错误,故该海明编码是尽努力去纠正。
因此,增加一位总的奇偶校验位G6,进行判断是一位错,还是两位错。
①当G5G4G3G2G1=0,G6=0,表示数据无出错;
②G5G4G3G2G1 !=0,G6=1,表示发生一位数据出错;
③G5G4G3G2GG1=0,G6=1,表示该奇偶校验位出错,即发生一位出错;
④G5G4G3G2G1 !=0,G6=0,表示发生两位数据出错。

3.纠正数据
在纠正数据,得到原始16位数据这块设计上,可采用解码器对出错位进行输出,再与原来的数据进行异或,即可得纠正后的数据。
首先,我们来了解下解码器的功能。
在这里插入图片描述
左边箭头指向的为输入数据,是5位的二进制数据,第二个箭头是选择哪个输出为1,此时由于它连接了5位二进制数据,则该Decd解码器的输出端有2^5个输出端。此时数据为00000对应的十进制为0,则可从图中看出第0位输出是1,其他输出为0。

在这里插入图片描述
此时输入数据为00110对应十进制为6,则可从图中看出,第六位输出为1,其他输出为0。

因此如果输入数据为0的话,则第0位输出为1,否则第0位输出为0,因此我们可以将输入数据换成G5G4G3G2G1,用第0位输出判断G5G4G3G2G1是否为0(G5G4G3G2G1=0,则第0为输出为1),或者不为0(G5G4G3G2G1!=0,则第0位输出为0)。

纠正数据:将输入数据换成G5G4G3G2G1,将该解码器的第1位至23位用分离器连接起来,如上图的右边部分所示(此时,如果G5G4G3G2G1等于某个不为0的数据时,该数据将会输出为1)。将该22位数据与原来的海明码进行按位异或,则可得到原来无出错的数据,即进行纠正。
(提示:x异或0=x,x异或1=x的非)

4.电路图设计
由于一个电路图太大,就截两次图啦~
在这里插入图片描述
在这里插入图片描述
以下是完整的电路图,看不清楚的话,看上面两张的截图。在这里插入图片描述
这边说下,由于要获得纠正后的数据,即16位数据,由于该数据是从0开始的,故其检验位分别位于0,1,3,7,15,21上,因此要去掉这些位置的数据,即可得到原来的16位数据。因此采用分离器输出的时候,位宽仍然是22位,但是位0,位1,位3,位7,位15,位21,是无的。
在这里插入图片描述
5,进行测评
保存电路图,复制粘贴代码到EduCoder平台进行测试,即可通关。
在这里插入图片描述

  • 66
    点赞
  • 274
    收藏
    觉得还不错? 一键收藏
  • 22
    评论
在educoder计算机数据表示实验(hust)第6关中,要设计一个16位的海明解码电路。海明码是一种用于检错和纠错的编码方式,通过在数据位中插入校验位来实现错误检测和修正。在设计这个电路时,我们需要首先了解海明码的原理和编码方式。 在16位海明解码电路设计中,我们需要接收一个16位的海明码输入,并且输出一个16位的原始数据位。首先,我们需要将接收到的海明码分成两部分:数据位和校验位。数据位包括原始的数据位和部分校验位,而校验位则包括额外添加的校验位。 接下来,我们需要对校验位进行处理,以检测和修正可能存在的错误。海明码的校验位有特定的排列方式,每个校验位都对应一些数据位和校验位的异或运算。通过检测校验位和实际数据位和校验位的异或结果,我们可以确定是否存在错误。 如果检测到有错误,则需要根据错误的位置对数据位进行修正。我们可以通过校验位和数据位的异或结果,来得到出错的位置。然后,我们可以通过将错误位置的数据位取反,来修正错误。最后,我们将修正后的数据位和剩余的校验位组合起来,得到16位的原始数据位。 总结起来,16位海明解码电路设计是一个涉及到海明码理论和实践的设计任务。通过合理分析和处理海明码的数据位和校验位,我们可以实现对错误的检测和修正,从而得到准确的原始数据位。这样的海明解码电路对于计算机数据表示的正确性和可靠性具有重要意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值