Parity(奇偶校验)和ECC(错误检查和纠正)

Parity(奇偶校验)

1、什么是parity?

奇偶校验是一种数据校验机制,用于判断数据在存储过程中是否发生了比特位错误。常用于存储结构中,如RAM。存储结构的最小单元为“字节”,即Byte。每个字节含有8比特,另外增加1比特作为校验位。如下图(1)所示,校验位为所以比特位异或产生,即当8比特有奇数个1时,校验位为1,当有偶数个1时校验位为0。

存储数据时,会对8比特数据进行异或运算得到校验位y0,并且随8比特数据一块存到RAM中。

当读取存储数据时,会对读出的8比特数据进行异或运算得到新的校验位y1,并与校验位y0进行对比,如果y1和y0不一致,则表示数据存取不一致,出现错误。

 

校验位:         y=x0^x1^x2^x3^x4^x5^x6^x7

2、parity有什么特点

优点

结构简单,只需异或计算就可以实现,数据量小时(8比特)实现代价小。

缺点

1、不能修正错误:只知道8比特中有部分比特发生错误,无法判断哪几个比特发送错误。

2、有偶数个比特位时,无法判断出错。如图所示,x5和x2均发生变化时,校验位仍未1,无法检测出错误。

3、数据位宽较大时实现代价大:如1024比特数据,需要256bit的校验位。

 

X7

X6

X5

X4

X3

X2

X1

X0

y

 

1

0

1

1

0

1

1

0

1

 

1

0

0

1

0

0

1

0

1

 

 

ECC(错误检查和纠正)

 

1、什么是ECC

通过上面的分析我们知道Parity机制是通过在原来数据位的基础上增加一个数据位来检查当前8位数据的正确性,随着数据位每增加8比特,检验位需要增加1比特。当数据量为256字节时,需要256个比特位,并且出错的数据无法恢复。由此,一种存储检错纠错机制出现了,这就是ECC。ECC同样通过增加校验位来进行错误判断,但是能够进行错误纠正。

2、ECC有什么特点:

优点

1):大量数据位实现代价低8比特数据需要5个校验位,256字节(256*8比特)的数据值需要5个列校验位和11行校验位

2)能够纠正错误:在内存中ECC能够容许错误,并可以将错误更正,使系统得以持续正常的操作,不致因错误而中断

缺点:

1):只能修复1比特错误

当数据只有单比特错误时,ECC能够进行错误修复;超过2比特的数据错误,将无法修复,ECC只能输出多比特错误信号。

2)不保证能检测超过2比特的错误

超过2比特的错误不一定能检测出来

 3、ECC是如何实现的:

 

实现细节

为什么能够单比特纠错

为什么不能纠正两比特的数据

为什么不能保证检测出多比特数据?

https://blog.csdn.net/qq_30866297/article/details/52104197--ECC原理

https://blog.csdn.net/nhczp/article/details/1700031

 

Parity与ECC的应用场景

 

IC设计中RAM模块输出信号有Parity信号和ECC信号。

parity 信号表示RAM中写入的数据data_in跟读出的数据是否一致。

ECC负责纠错,能够修正1bit的数据。

Parity是同一个data所有比特的异或,在data_in写入的时候进行异或计算得到parity_in,同时写入到RAM中,读出data的得到data_out,对data_out进行异或计算得到parity_out,若parity_out与parity_in不相等,则表示数据有错误

 

 

https://blog.csdn.net/ysmz4/article/details/9309287

https://blog.csdn.net/nhczp/article/details/1700031

 

 

猜你喜欢

转载自blog.csdn.net/icxiaoge/article/details/79996456