之前的实验中 通过按按钮启动两个板子,由于clock不同步产生了问题,于是我们接入了clock信号使信号保持同步,

但是即使这样,由于磁场影响或者其他原因,传输的数据仍然可能出现错误:

 

错误检测(2)奇偶校验

 

错误检测(2)奇偶校验

 

怎么来进行错误检测呢,

 

1.可以说一共有104个bits

 

错误检测(2)奇偶校验

 

错误检测(2)奇偶校验

所以103 或者110个都是有错误的

 

2.可以说47%的bit都是1:

错误检测(2)奇偶校验

 

3.可以说最多有6个zero:

 错误检测(2)奇偶校验

 

4.可以说有49个1:

错误检测(2)奇偶校验

(可是,如果1个字节里面1消失了 另个里面1存在了,其实也还是49个1

 

错误检测(2)奇偶校验

 

parity n.奇偶性

错误检测(2)奇偶校验

 

错误检测(2)奇偶校验

奇数个1

 

错误检测(2)奇偶校验

…using a single bit)

 

D触发器

错误检测(2)奇偶校验

(能通过触发储存一比特数据

 

然后把output接到input上:

错误检测(2)奇偶校验

 

然后再插个xor门:

错误检测(2)奇偶校验

 

走一下:

错误检测(2)奇偶校验

然后发现这个东东发奇数个1 ,就是输出1,发偶数个1就输出0

 

插上东西跑一下:

错误检测(2)奇偶校验

(灯会根据传送字节中的奇偶最终保持亮暗

 

 

现在我们希望能再receiver这边也检查出parity 如果parity不一样,那就是有错

错误检测(2)奇偶校验

 

跑一次:

 错误检测(2)奇偶校验

(跑通了

 

错误检测(2)奇偶校验

(这次就有错了,中间没有逗号

 

错误检测(2)奇偶校验

定义一下Parity

 

错误检测(2)奇偶校验

最后再多传1bit,如果奇数个,就传1 最后整体是偶数个

如果偶数个就传0 ,最后整体还是偶数个

 

错误检测(2)奇偶校验

最后就是 

 

错误检测(2)奇偶校验

(如果灯亮了就说明出错了

 

 

到这里基本结束了,

但是以上都是在考虑1个bit改变的情况

如果两个bit同时变了呢 最后反映出的结果似乎是没有错

错误检测(2)奇偶校验

所以不够perfect

我们可以给每个字节后面都进行parity计算

错误检测(2)奇偶校验

这样就检测出一个字节的错误了

错误检测(2)奇偶校验

但是就算这样也有一个字节中出错的可能

 错误检测(2)奇偶校验

 

所以我们可以每4bits 每2bits来检测

 

错误检测(2)奇偶校验

trade off

 

 

错误检测(2)奇偶校验

以后介绍其他的更复杂的错误检测方法

 

 

??

错误检测(2)奇偶校验

 

相关文章: