发明内容
本发明的主要目的为提供一种对数据进行查错的方法和装置,旨在节约电路面积。
本发明提出一种对数据进行查错的方法,包括:
对接收到的数据进行ECC检验,得到检验值;
对所述检验值中出错位的位数进行计数;
根据计数值判断所述接收数据的出错情况。
优选地,所述接收数据的位宽为24位,所述检验值的位宽为6位。
优选地,所述根据计数值判断接收数据的出错情况包括:
当计数值为0时,判定所述24位数据正确;
当计数值为3或5时,判定所述24位数据出现1位错误;
当计数值非0、3和5时,判定所述24位数据出现2位错误。
优选地,在执行所述判定24位数据出现1位错误之后,还包括:
对所述24位数据进行1位纠错。
优选地,所述对24位数据进行1位纠错包括:
当计数值为3时,对所述24位数据的前20位进行纠错,后4位不变;
当计数值为5时,对所述24位数据的后4位进行纠错,前20位不变。
优选地,所述对24位数据进行1位纠错具体包括:
通过与运算定位所述24位数据的出错位置;
对所述出错位置的数据进行求反运算,得到正确的数据。
本发明还提出一种对数据进行查错的装置,包括:
检验模块,用于对接收到的数据进行ECC检验,得到检验值;
计数模块,用于对所述检验值中出错位的位数进行计数;
判断模块,用于根据计数值判断所述接收数据的出错情况。
优选地,所述接收数据的位宽为24位,所述检验值的位宽为6位。
优选地,所述判断模块包括:
第一判定单元,用于当计数值为0时,判定所述24位数据正确;
第二判定单元,用于当计数值为3或5时,判定所述24位数据出现1位错误;
第三判定单元,用于当计数值非0、3和5时,判定所述24位数据出现2位错误。
优选地,所述装置还包括:
纠错模块,用于对所述24位数据进行1位纠错。
优选地,所述纠错模块包括:
第一纠错单元,用于当计数值为3时,对所述24位数据的前20位进行纠错,后4位不变;
第二纠错单元,用于当计数值为5时,对所述24位数据的后4位进行纠错,前20位不变。
优选地,所述第一纠错单元包括:
第一定位子单元,用于通过与运算定位所述24位数据的前20位的出错位置;
第一校正子单元,用于对所述出错位置的数据进行求反运算,得到正确的数据;
所述第二纠错单元包括:
第二定位子单元,用于通过与运算定位所述24位数据的后4位的出错位置;
第二校正子单元,用于对所述出错位置的数据进行求反运算,得到正确的数据。
本发明利用检验值中出错位的位数判断输入数据的出错情况,并进行纠错,相比现有的查找ECC纠错表更节省电路面积。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例利用ECC检验过程中,数据接收端接收数据内各数据位所能同时影响的ECC纠错码位数的排他性和抵消性,来反推接收数据的出错情况和纠错位置。关于ECC纠错码位数的排他性和抵消性,其原理分析如下:
本发明实施例涉及移动产业处理器接口的ECC纠错码对24位数据的纠1位错误和检测2位错误,所采用的ECC纠错码的有效位宽是6位。
根据如表1所示之纠错解码表,6位纠错码的生成逻辑如下:
P5=D10∧D11∧D12∧D13∧D14∧D15∧D16∧D17∧D18∧D19∧D20∧D21∧D22∧D23
P4=D4∧D5∧D6∧D7∧D8∧D9∧D16∧D17∧D18∧D19∧D20∧D22∧D23
P3=D1∧D2∧D3∧D7∧D8∧D9∧D13∧D14∧D15∧D19∧D20∧D21∧D23
P2=D0∧D2∧D3∧D5∧D6∧D9∧D11∧D12∧D15∧D18∧D20∧D21∧D22
P1=D0∧D1∧D3∧D4∧D6∧D8∧D10∧D12∧D14∧D17∧D20∧D21∧D22∧D23
P0=D0∧D1∧D2∧D4∧D5∧D7∧D10∧D11∧D13∧D16∧D20∧D21∧D22∧D23
其中,P5、P4、P3、P2、P1和P0表示24位数据生成的ECC纠错码的各纠错位,P5为高位,P0为低位。D0到D23分别表示24位数据的每一数据位,D23表示最高位,D0表示最低位,∧表示异或运算。
对上述ECC纠错码每位的生成逻辑进行整理分析,可以得到24位数据中的每一位影响纠错码的位数的情况,如表2所示:
表2ECC纠错码的位数影响表
|
P0 |
P1 |
P2 |
P3 |
P4 |
P5 |
D0 |
1 |
1 |
1 |
|
|
|
D1 |
1 |
1 |
|
1 |
|
|
D2 |
1 |
|
1 |
1 |
|
|
D3 |
|
1 |
1 |
1 |
|
|
D4 |
1 |
1 |
|
|
1 |
|
D5 |
1 |
|
1 |
|
1 |
|
D6 |
|
1 |
1 |
|
1 |
|
D7 |
1 |
|
|
1 |
1 |
|
D8 |
|
1 |
|
1 |
1 |
|
D9 |
|
|
1 |
1 |
1 |
|
D10 |
1 |
1 |
|
|
|
1 |
D11 |
1 |
|
1 |
|
|
1 |
D12 |
|
1 |
1 |
|
|
1 |
D13 |
1 |
|
|
1 |
|
1 |
D14 |
|
1 |
|
1 |
|
1 |
D15 |
|
|
1 |
1 |
|
1 |
D16 |
1 |
|
|
|
1 |
1 |
D17 |
|
1 |
|
|
1 |
1 |
D18 |
|
|
1 |
|
1 |
1 |
D19 |
|
|
|
1 |
1 |
1 |
D20 |
1 |
1 |
1 |
1 |
1 |
|
D21 |
1 |
1 |
1 |
1 |
|
1 |
D22 |
1 |
1 |
1 |
|
1 |
1 |
D23 |
1 |
1 |
|
1 |
1 |
1 |
对上表2进行分析,可以得到以下特性:
(1)排他性
将上表2划分为两部份,数据位D0到D19归类为A段,数据位D20到D23归类为B段,A段的每一数据位同时影响纠错码的位数情况具有排他性,譬如,D0只能同时影响P0、P1和P2,数据位D1到D19中的任一位不存在同时影响P0、P1和P2的情况,同样地,B段的每一数据位同时影响ECC纠错码的位数情况也具有排他性。
(2)抵消性
由于移动产业处理器接口对出错位数的最大允许范围是2,因此,任意2位数据同时出错,那么它们同时影响的ECC纠错码的位不会变化,只有没有交集的ECC纠错码的位才会变化,譬如,D0同时影响P0、P1和P2,而D20同时影响P0、P1、P2、P3和P4,两者的交集是P0、P1和P2,如果D0和D20同时出错,那么纠错码的P0、P1和P2位没有变化,但是P3和P4位的值与正确值相反。
根据上述原理分析,参照图3,提出本发明第一实施例的方法,该方法可包括:
步骤S101、数据接收端对接收到的数据进行ECC检验,得到检验值;
数据接收端接收24位数据和原始ECC纠错码,首先将24位数据进行ECC编码,生成6位ECC纠错码,将该ECC纠错码与原始ECC纠错码进行异或运算,得到位宽为6位的检验值,移动产业处理器接口对该检验值的定义情况为:
如果检验值为0,那么接收的24位数据没有出现出错的情况;
如果检验值不为0,且在纠错解码表中,那么接收的数据有1位出错;
如果检验值不为0,且不在纠错解码表中,那么接收的数据有2位出错。
结合移动产业处理器接口对检验值的定义,以及前述两个分析特性,数据接收端可以获得以下内容:
(1)如果24位数据都没有出错,所得到的检验值为0。
(2)如果24位数据中1位出错,则根据ECC纠错码的位数影响表,数据接收端可以得到针对某一特定数据位出错,其影响的ECC纠错码的情况。譬如,D0出错,根据它的影响权重,生成的P0、P1和P2肯定都出错,那么检验值为1的位置就是bit0、bit1和bit2,即检验值中为1的位数有3。同样,根据上述数据接收端所得到的检验位中1的位置,可以定位到出错的数据位,如同表2的第一行,定位到数据位的D0出错。
因此,对于A段数据(数据位D0-D19),数据接收端所得到的检验值中为1的数据位的数量是3,对于B段数据(数据位D20-D23),数据接收端所得到的检验值中为1的数据位的数量是5。
(3)如果24位数据中2位出错,那么所得到的检验值中所有为1的数据位的排列情况有两种,一种情况是排列情况没有交集,如ECC纠错码的位数影响表的某两行,譬如D0和D19都出错,D0同时影响P0、P1和P2,D19同时影响P3、P4和P5,两者没有交集,再如ECC纠错码的位数影响表的第1行和第20行。另外一种是排列情况有交集,譬如D0和D20都出错,D0同时影响P0、P1和P2,D20同时影响P0、P1、P2、P3和P4,两者的交集是P0、P1和P2,那么P0、P1和P2的值没有变化,只有P3和P4的值与正确值相反。
因此,如果出错的位置都在A段,由于A段的每一数据位能同时影响的ECC纠错码的位数都是3,考虑抵消性和排他性,有可能同时影响0位、1位或者2位,那么所得到的检验值中为1的位的数量有可能是2、4或者6。如果出错的位置都在B段,由于B段的每一数据位能同时影响的ECC纠错码的位数都是5,而且纠错码总共6位,同时影响4位,那么所得到的检验值中为1的位的数量是2。如果出错的位置一个在A段,另外一个在B段,由于A段的每一数据位能同时影响的ECC纠错码的位数都是3,B段的每一数据位能同时影响的ECC纠错码的位数都是5,而且ECC纠错码总共6位,有可能同时影响2位或者3位,那么所得到的检验值中为1的位的数量有可能是4或者2。也就是说,如果2位数据出错,所得到的Syndrome值中为1的位的数量有可能是2、4或者6。
步骤S102、对所述检验值中出错位的位数进行计数;
根据上述三个检验值内容,通过一个3位计数器(至少3位,也可以是更多位的计数器),统计6位检验值为1的位的数量,并进入步骤S103。
步骤S103、根据计数值判断所述接收数据的出错情况。
从计数值可以反映如下两种情况:
1、24位数据是否有错
如果计数值为0,表示24位数据没有出错,如果不为0,表示输入数据有1~2位出错。
2、区分24位数据有1位出错还是2位出错
如果统计数量为3或者5的话,那么表示24位数据有1位出错,如果统计数量为非0、3和5的其它值,那么表示输入数据有2位出错。
需要注意的是,本实施例将检验值中为1的位认为是出错位,在基于本发明构思的前提下,也可对检验值中为0的位进行计数,此时如检验值中0的位数为3或者1时,表示有1位出错,其它非0、1和3的值表示有2位出错。
本实施例抛弃了查找表方法所依赖的ECC解码表的操作逻辑,利用检验值中出错位的位数判断输入数据的出错情况,相比现有的查找ECC纠错表更节省电路面积,特别是应用在高频时钟中,其效果更加显著。
参照图4,提出本发明第二实施例的方法,包括:
步骤S101、数据接收端对接收到的数据进行ECC检验,得到检验值;
步骤S102、对所述检验值中出错位的位数进行计数;
步骤S103、根据计数值判断所述接收数据的出错情况;
步骤S104、当存在1位错误时,对所述24位数据进行1位纠错。
上述步骤S101-S103与第一实施例相同,此处不再重复描述,在本实施例中,当确定输入数据有1位数据出错的时候,利用前述的纠错码的位数影响表的排他性,可通过与运算求得24位数据中出错的位置,再将该位置的数据位求反就可得到正确的输入数据。以数据接收端接收到的24位原始数据是000000011111000000110110(二进制),原始ECC码为111111(二进制)为例,如果接收到的24位数据中,其中1位数据有错,且根据上述24位原始数据生成的6位ECC码为111000,则所得到的检验值是000111(二进制)。那么根据ECC码的位数影响表,P0、P1和P2都为1时,对应的出错数据是数据D0(1),那么正确的值就是输入值的相反(0),由此可得到正确的24位数据应该是000000011111000000110111。
为节约纠错时间,可仅对数据中出错的A段或B段数据进行纠错,当判定A段数据出错时,仅对24位数据的前20位进行纠错,而后4位不进行纠错,类似的,当判定B段数据出错时,仅对24位数据的后4位进行纠错,而前20位不进行纠错。
本实施例在第一实施例的基础上,进一步实现了1位纠错功能,且可分段纠错,节约纠错时间。
参照图5,提出本发明第三实施例的装置,该装置可包括:
检验模块10,用于对接收到的数据进行ECC检验,得到检验值;
计数模块20,用于对所述检验值中出错位的位数进行计数;
判断模块30,用于根据计数值判断所述接收数据的出错情况。
纠错模块40,用于对所述24位数据进行1位纠错。
参照图6,上述判断模块30包括:
第一判定单元31,用于当计数值为0时,判定所述24位数据正确;
第二判定单元32,用于当计数值为3或5时,判定所述24位数据出现1位错误;
第三判定单元33,用于当计数值非0、3和5时,判定所述24位数据出现2位错误。
参照图7,上述纠错模块40包括:
第一纠错单元41,用于当计数值为3时,对所述24位数据的前20位进行纠错,后4位不变;
第二纠错单元42,用于当计数值为5时,对所述24位数据的后4位进行纠错,前20位不变。
本实施例的装置,可以内置或外置于移动产业处理器,也可以是移动产业处理器,其工作原理为:检验模块10接收24位数据和原始ECC纠错码,首先将24位数据进行ECC编码,生成6位ECC纠错码,将该ECC纠错码与原始ECC纠错码进行异或运算,得到位宽为6位的检验值,移动产业处理器接口对该检验值的定义情况为:
如果检验值为0,那么接收的24位数据没有出现出错的情况;
如果检验值不为0,且在纠错解码表中,那么接收的数据有1位出错;
如果检验值不为0,且不在纠错解码表中,那么接收的数据有2位出错。
结合移动产业处理器接口对检验值的定义,以及前述ECC纠错码位数的排他性和抵消性,本实施例的装置可以获得以下内容:
(1)如果24位数据都没有出错,所得到的检验值为0。
(2)如果24位数据中1位出错,则根据ECC纠错码的位数影响表,本实施例的装置可以得到针对某一特定数据位出错,其影响的ECC纠错码的情况。譬如,D0出错,根据它的影响权重,生成的P0、P1和P2肯定都出错,那么检验值为1的位置就是bit0、bit1和bit2,即检验值中为1的位数有3。同样,根据本实施例的装置所得到的检验位中1的位置,可以定位到出错的数据位,如同表2的第一行,定位到数据位的D0出错。
因此,对于A段数据(数据位D0-D19),检验模块10所得到的检验值中为1的数据位的数量是3,对于B段数据(数据位D20-D23),检验模块10所得到的检验值中为1的数据位的数量是5。
(3)如果24位数据中2位出错,那么所得到的检验值中所有为1的位的排列情况有两种,一种情况是排列情况没有交集,如ECC纠错码的位数影响表的某两行,譬如D0和D19都出错,D0同时影响P0、P1和P2,D19同时影响P3、P4和P5,两者没有交集,再如ECC纠错码的位数影响表的第1行和第20行。另外一种是排列情况有交集,譬如D0和D20都出错,D0同时影响P0、P1和P2,D20同时影响P0、P1、P2、P3和P4,两者的交集是P0、P1和P2,那么P0、P1和P2的值没有变化,只有P3和P4的值与正确值相反。
因此,如果出错的位置都在A段,由于A段的每一数据位能同时影响的ECC纠错码的位数都是3,考虑抵消性和排他性,有可能同时影响0位、1位或者2位,那么所得到的检验值中为1的位的数量有可能是2、4或者6。如果出错的位置都在B段,由于B段的每一数据位能同时影响的ECC纠错码的位数都是5,而且纠错码总共6位,同时影响4位,那么所得到的检验值中为1的位的数量是2。如果出错的位置一个在A段,另外一个在B段,由于A段的每一数据位能同时影响的ECC纠错码的位数都是3,B段的每一数据位能同时影响的ECC纠错码的位数都是5,而且ECC纠错码总共6位,有可能同时影响2位或者3位,那么所得到的检验值中为1的位的数量有可能是4或者2。也就是说,如果2位数据出错,所得到的Syndrome值中为1的位的数量有可能是2、4或者6。
根据上述三个检验值内容,通过计数模块20统计6位检验值为1的位的数量并输入判断模块30,该计数模块20可以是一个3位计数器(至少3位,也可以是更多位数的计数器)。
判断模块30从计数模块20统计的计数值可以判定:
1、24位数据是否有错
如果计数值为0,第一判定单元31可由此判定24位数据没有出错,如果不为0,表示输入数据有1~2位出错。
2、区分24位数据有1位出错还是2位出错
如果统计数量为3或者5的话,那么第二判定单元32可由此判定24位数据中有1位出错,如果统计数量为非0、3和5的其它值,那么第三判定单元33可判定输入数据有2位出错。
需要注意的是,本实施例将检验值中为1的位认为是出错位,在基于本发明构思的前提下,也可对检验值中为0的位进行计数,此时如检验值中0的位数为3或者1时,表示有1位出错,其它非0、1和3的值表示有2位出错。
当查出1位数据出错时,纠错模块40对24位数据进行纠错,输出正确的数据。为节约纠错时间,纠错模块40可仅对数据中出错的A段或B段数据进行纠错,当判定A段数据出错时,判断模块30发出控制信号给纠错模块40,由纠错模块40的第一纠错单元41对24位数据的前20位进行纠错,而后4位不进行纠错,类似的,当判定B段数据出错时,判断模块30发出控制信号给纠错模块40,由纠错模块40的第二纠错单元42对24位数据的后4位进行纠错,而前20位不进行纠错,
从图5所示的装置结构图可以看出,相较图2所示,本实施例抛弃了ECC解码表的操作逻辑,而是采用更加简洁的电路结构,利用检验值中出错位的位数判断输入数据的出错情况,相比现有的查找ECC纠错表更节省电路面积,特别是应用在高频时钟中,其效果更加显著。
参照图8、图9,提出本发明第四实施例,如图8所示,在第三实施例中,第一纠错单元41包括:
第一定位子单元411,用于通过与运算定位所述24位数据的前20位的出错位置;
第一校正子单元412,用于对所述出错位置的数据进行求反运算,得到正确的数据;
如图9所示,在第三实施例中,第二纠错单元42包括:
第二定位子单元421,用于通过与运算定位所述24位数据的后4位的出错位置;
第二校正子单元422,用于对所述出错位置的数据进行求反运算,得到正确的数据。
当确定输入数据有1位数据出错的时候,利用前述的纠错码的位数影响表的排他性,第一定位子单元411(数据的前20位出错时)或第二定位子单元421(数据的后4位出错时)可通过与运算求得24位数据中出错的位置,第一校正子单元412(数据的前20位出错时)或第二校正子单元422(数据的后4位出错时)再将该位置的数据位求反就可得到正确的输入数据。以数据接收端接收到的24位原始数据是000000011111000000110110(二进制),原始ECC码为111111(二进制)为例,如果接收到的24位数据中,其中1位数据有错,且根据上述24位原始数据生成的6位ECC码为111000,则检验模块10所得到的检验值是000111(二进制)。那么根据ECC码的位数影响表,P0、P1和P2都为1时,对应的出错数据是数据D0(1),那么正确的值就是输入值的相反(0),由此第一校正子单元412可得到正确的24位数据应该是000000011111000000110111。
本实施例在第三实施例基础上,进一步提出通过与运算和求反运算对出错数据进行纠错的方法。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。