计算机组成原理logisim实验三:汉明码的编码及解码与纠错电路的设计

实验3 汉明码的编码及解码与纠错电路的设计

一、设计要求

掌握汉明码设计原理与检错纠错性能,能独立设计实现汉字GB2312编码的汉明码检验编码体系,并最终在实验环境中利用硬件电路实现对应的编解码电路。

二、方案设计

①编码:实验要求设计出22位的海明编码 (16位原始数据+5位海明检验位+1位总的奇偶校验位),但其只给出了16位的原始数据,因此只需要设计出5位海明校验位的电路与1位总奇偶校验位的电路,便可以实现编码这个过程。先计算五位海明校验位k+n<=2^n-1,此时k=16,n=5(有五位校验位),因此总的数据位数有16+5+1=22位。设此时校验位Pi (i=1,2,3,4,5),分别位于22位数据的第2^(i-1) 的位置上,故分别位于第1,2,4,8,16位上。

②解码:假设接收方接收到的数据最多只发生两位错,这是大前提;若接收到的数据无错,则“0位错”为高电平;若接收到的数据发生1位错,则“1位错”为高电平;若接收到的数据发生两位错,则“2位错”为高电平。若数据发生1位错,需要设计一个电路,对这一位数据取反纠正,得到无错的16位原始数据。若发生2位错,则此电路只能检错,不能纠错。

③纠错电路:只要指误字G5、G4、G3、G2、G1中含有1,表明汉明码发生错误,在假设1位错的前提下,可以利用指误码的值找到编码中出错位置并取反纠正。具体实现时可以将指误字的值利用译码器生成为多路出错信号,未出错的位线输出为0,出错位的位线输出为1。由于异或运算具有如下性质:,,则将D1~D16与各自对应译码器输出位进行异或运算后就可以得到纠正后的编码。

三、实验步骤

(1)设计汉明码校验编码电路

打开“data (原始版).circ”文档,设计(16,5)的汉明码,比照教材或PPT,并得出各校验码的逻辑表达式,再增加所有21位的总校验位(偶校验),即P6。根据各检验码的逻辑表达式设计电路

(2)设计汉明码校验解码及纠错电路

打开“海明解码”子电路,此电路中,输入:22位汉明码;输出:16位原始数据,1位检错位,2位检错位,0位错状态位。

(3)汉明校验传输测试1

打开“海明校验传输测试1”子电路,测试汉明码检验编码和解码电路的正确性。注意图中的随机干扰电路只能产生最多2位错误。自行设置原始数据值。可以通过修改加扰控制引脚的值来控制随机干扰模式,其中00表示无干扰,01表示1位错干扰,10表示2位错干扰,11表示0~2位错随机干扰。在测试时,注意观察各个输出端结果,对电路的正确性进行判断。

(4)汉明校验传输测试2

打开“海明校验传输测试2”子电路,测试汉明码检验编码和解码电路的正确性。该电路引入汉字显示模块,通过汉字显示可以直观地看出汉明码的纠错效果。

四、故障与调试

故障:位宽不匹配

调试:添加分线器,除去Pi

(2)

故障:不能实现一位错自动纠错

调试:译码器下方的分线器每一位对应分线端口要一一对应,根据封装区判断Pi,Di对应哪个端口

四、测试与分析

  1. 检一位错,自动纠错

  1. 检两位错

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Levanaaa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值