各位专家,诊断程序RAM12,RAM16和RAM17都需要ECC值进行测试。
在查看TI安全库时,给出了一些值,例如0x0U的ECC为0xCU,但没有解释如何计算该值
(Q1)您能否举例说明如何计算RAM中64位值的ECC值?
谢谢,顺祝商祺!
最大
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
各位专家,诊断程序RAM12,RAM16和RAM17都需要ECC值进行测试。
在查看TI安全库时,给出了一些值,例如0x0U的ECC为0xCU,但没有解释如何计算该值
(Q1)您能否举例说明如何计算RAM中64位值的ECC值?
谢谢,顺祝商祺!
最大
QJ:您好!
我想我理解这个桌子现在是如何工作的。 请您确认以下内容是否正确?
如果您有64位字,其中每个位为1,并且要计算ECC位7和2,则必须执行以下操作
用于ECC位7
ecc[7]=位55 ^ 位54 ^ 位53 ^ 位52 ^ 位51 ^ 位50 ^ 位49 ^ 位48 ^ 位47 ^ 位46 ^ 位45 ^ 位44 ^ 位43 ^ 位42 ^ 位41 ^ 位40 ^ 位31 ^ 位30 ^ 位29 ^ 位28 ^ 位27 ^ 位26 ^ 位25 ^ 位24 ^ 位7 ^ 位6 ^ 位5 ^ 位4 ^ 位3 ^ 位2 ^ 位1 ^ 位0
ECC[7]= 0
对于ECC位3,我们必须使用奇偶校验=1的XOR:
ECC[3]= (位55 ^ 位54 ^ 位53 ^ 位52 ^ 位51 ^ 位50 ^ 位49 ^ 位48 ^ 位47 ^ 位46 ^ 位45 ^ 位44 ^ 位43 ^ 位42 ^ 位41 ^ 位40 ^ 位31 ^ 位30 ^ 位29 ^ 位28 ^ 位27 ^ 位26 ^ 位25 ^ 位24 ^ 位7 ^ 位6 ^ 位5 ^ 位4 ^ 位3 ^ 位2 ^ 位1 ^ 位0)^奇偶校验
ECC[3]= 1
使用整个表计算0xFFFF FFFF FFFF的ECC:ECC将为0x51。
谢谢,顺祝商祺!
最大
您好,Max,
每个ECC位都是所有32个数据位(标记为"x")和奇偶校验位的XOR。
Parity=Even --> ECC =(32个数据位的XOR) XOR 0 (奇偶校验)= 32个数据位的XOR
Parity=ODD --> ECC =(32个数据位的XOR) XOR 1 (奇偶校验)
对于data=0xFFFFFF_FFFFFFF_FFFF
32个数据位的XOR =0
因此,ECC[7]=0;
ECC[6]= 0;
ECC[5]= 0;
ECC[4]= 0;
ECC[3]= 0 XOR 1 = 1;
ECC[2]= 0 XOR 1=1;
ECC[1]= 0;
ECC[0]=0;
ECC值应为0x0C