CN105373444B - 一种8位宽外部存储器控制器edac校验码的生成方法 - Google Patents
一种8位宽外部存储器控制器edac校验码的生成方法 Download PDFInfo
- Publication number
- CN105373444B CN105373444B CN201510828933.4A CN201510828933A CN105373444B CN 105373444 B CN105373444 B CN 105373444B CN 201510828933 A CN201510828933 A CN 201510828933A CN 105373444 B CN105373444 B CN 105373444B
- Authority
- CN
- China
- Prior art keywords
- row
- check code
- data bit
- data
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一种8位宽外部存储器控制器EDAC校验码的生成方法,该方法首先生成对齐的可执行程序dat文件,根据dat文件和地址位宽计算存储器的最大地址,然后计算校验码的行数,当数据位与校验码的总容量小于等于存储器的容量时,开始计算校验码,并将原来dat文件中的数据和新生成的校验码写到输出文件中,其中原来的数据位从文件头开始顺序排放,校验码从文件尾开始倒序排放,中间部分补0。利用本发明方法,实现了存储器中数据位对应的校验码倒序存储,处理器在读取校验码时直接将所有地址线上的数值都置为1,从存储器的最末端倒序读取校验码,简单方便,且能够节省管脚数,减少内部逻辑单元,提高处理器性能。
Description
技术领域
本发明涉及一种EDAC校验码的生成方法,特别是空间处理器8位宽外部存储器控制器的EDAC功能仿真校验码的生成方法,属于计算机应用技术领域。
背景技术
空间处理器受辐射影响,可能导致存储体中存储内容在‘0’、‘1’之间突变,从而导致半导体电路出现错误的逻辑状态,影响半导体器件的功能,通常称之为单粒子翻转(SEU),因此,需要具备EDAC(Error Detection And Correction)功能。空间处理器的外部存储器一般有8位宽和32位宽两种。32位宽外部存储器的抗单粒子翻转,需要另外一个用于存放校验码的8位宽外部存储器的配合,由于数据位和校验码分别存放在两个存储体中,所以数据位和校验码的地址相同,因此,32位宽的外部存储器主要用于对速度要求较高的应用。8位宽外部存储器的应用主要是考虑到体积上的要求,它的校验码和数据位存放在同一个存储体中。
在流片之前需要对空间处理器8位宽的外部存储器控制器进行功能仿真,其中比较重要的就是EDAC功能仿真,而该功能仿真需要ROM/RAM中可执行程序的校验码。
以往空间处理器的8位宽外部存储器控制器硬件设计上要求存储器中数据位对应的校验码是顺序存储的,一般是将校验码从存储器的四分之三处地址开始往后顺序排放,处理器在读取校验码时需要为了计算四分之三处地址而要求知道存储器的容量,因此,需要增加管脚来专门判断存储器的容量,从而会增加内部逻辑单元,影响处理器的性能。
发明内容
本发明解决的技术问题是:克服现有技术的不足,提供一种8位宽外部存储器控制器EDAC校验码的生成方法,能够节省管脚数,减少内部逻辑单元,提高处理器性能。
本发明的技术方案是:一种8位宽外部存储器控制器EDAC校验码的生成方法,包括如下步骤:
(1.1)在高级程序编译生成8位宽外部存储器控制器可执行测试程序的过程中,通过所用链接脚本的配合,将text段、data段和rodata段的地址以0x10对齐,得到一个对齐的可执行测试程序的dat文件;
(1.2)读取dat文件,得到该文件中数据存储的首地址FirstAdd;
(1.3)读取给定的地址位宽n,根据空间处理器外部存储器的具体情况判断地址位宽是否合理,如果不合理给出提示后结束,否则根据地址位宽和步骤(1.2)得到的dat文件中数据存储的首地址,计算存储器的最大地址MaxAdd,MaxAdd的计算公式为:MaxAdd=2n+FirstAdd;
(1.4)逐行读取dat文件并统计出该文件的行数DataLine,根据DataLine判断输入数据量是否小于存储器的容量,如果不小于就给出提示并结束,否则计算校验码所占的行数ParLine,计算ParLine的方法为:
(a)当DataLine是4的整数倍时,ParLine=DataLine/4;
(b)当DataLine不是4的整数倍时,ParLine=DataLine/4+1;
(1.5)根据DataLine与ParLine判断数据位与校验码的总容量是否大于存储器的容量,如果大于就给出提示并结束,否则开始计算校验码;
(1.6)将原来dat文件中的数据和新生成的校验码写到输出文件中,原来的数据位从文件头开始顺序排放,而新生成的校验码从文件尾开始倒序排放,中间部分根据地址位宽n和校验码行数ParLine确定补0情况,得到带EDAC校验码的输出文件。
所述步骤(1.1)中对齐的可执行测试程序dat文件的格式为:
文件的每行有5个数据,第一列是以0x10递增的十六进制的32bits地址,每行的地址后面是4个十六进制的32bits数据位,每行的第一个数据位在存储器中的地址就是该行第一列的数据。
所述步骤(1.6)中得到带EDAC校验码的输出文件的方法为:
(3.1)将原来dat文件中的数据依次写到输出文件中,格式与原来的dat文件一样。
(3.2)根据存储器的最大地址MaxAdd和校验码行数ParLine确定补0情况,并写到输出文件中:
(a)如果行首的地址小于(MaxAdd-16*ParLine),那么该行后面的4个数据位全部补0;
(b)如果行首的地址等于(MaxAdd-16*ParLine),那么该行后面的4个数据位不补0或者部分补0;
(c)如果行首的地址大于(MaxAdd-16*ParLine),那么该行不补0,数据位都是校验码,将计算得到的校验码按倒序写到该行后面的数据位,直到原来dat文件中第一行的第一个数据位的校验码被写到输出文件中为止。
所述步骤(b)的实现方式为:
(4.1)如果(DataLine%4)等于0,那么该行不用补0,该行的第一个数据位为原来dat文件中最后一行数据位的校验码,第二个数据位为原来dat文件中倒数第二行数据位的校验码,第三个数据位为原来dat文件中倒数第三行数据位的校验码,第四个数据位为原来dat文件中倒数第四行数据位的校验码;
(4.2)如果(DataLine%4)等于1,那么该行补3个0,即该行的前三个数据位都为0,最后一个数据位为原来dat文件中最后一行数据位的校验码;
(4.3)如果(DataLine%4)等于2,那么该行补2个0,即该行的前两个数据位都为0,第三个数据位为原来dat文件中最后一行数据位的校验码,第四个数据位为原来dat文件中倒数第二行数据位的校验码;
(4.4)如果(DataLine%4)等于3,那么该行补1个0,即该行的第一个数据位为0,第二个数据位为原来dat文件中最后一行数据位的校验码,第三个数据位为原来dat文件中倒数第二行数据位的校验码,第四个数据位为原来dat文件中倒数第三行数据位的校验码。
与现有技术相比,本发明具有如下有益效果:
(1)本发明提供一种8位宽外部存储器控制器EDAC校验码的生成方法,将存储器中数据位对应的校验码倒序存储,处理器在读取校验码时不需要为了计算四分之三处地址而要求知道存储器的容量,而是将所有地址线上的数值都置为1,直接到存储器的最末端读取第一个数据位的校验码,接着倒序读取其余的校验码,从而节省管脚数,减少内部逻辑单元,提高处理器性能;
(2)在生成作为输入的dat文件时,通过所用链接脚本的配合,将text段、data段和rodata段的地址对齐,避免了不对齐时空缺处读到错误数据,或者校验码和地址对应不上的错误,也大大减少了读取数据、计算校验码以及写到输出文件的工作量,可以提高8位宽外部存储器控制器的功能验证效率,缩短产品开发周期;
(3)本方法对输入参数会进行判断,会将原dat文件的数据量与存储器的容量进行比较,以及在计算校验码前将数据位和校验码的总容量与存储器的容量进行比较,每次判断或者比较后,如果不合理都会给出相应的错误提示,并立即结束程序的运行,使用者可以根据提示调整输入参数,非常简单方便,极大地节省了验证时间。
附图说明
图1为本发明方法的流程图;
图2为本发明ROM中原dat文件格式示意图;
图3为本发明ROM中带校验码的输出文件格式示意图。
具体实施方式
本发明提出了一种8位宽外部存储器控制器EDAC校验码的生成方法,如图1所示为本发明方法流程图,具体步骤如下:
(1.1)在高级程序编译生成8位宽外部存储器控制器可执行测试程序的过程中,通过所用链接脚本的配合,将text段、data段和rodata段的地址都以0x10对齐,得到一个对齐的可执行测试程序dat文件。
可执行测试程序可以是ROM中运行的可执行测试程序的dat文件,也可以是RAM中运行的可执行测试程序的dat文件,这两个dat文件的格式完全一样,只是数据存储的首地址FirstAdd不一样,ROM中的FirstAdd为0x00000000,RAM中的FirstAdd为0x20000000。
对齐的可执行程序dat文件的格式为:
文件的每行有5个数据,第一列是以0x10递增的十六进制的32bits地址,每行的地址后面是4个十六进制的32bits数据位,每行的第一个数据位在存储器中的地址就是该行第一列的数据。如图2所示为ROM中可执行测试程序的dat文件格式示意图。
(1.2)读取dat文件,得到该文件中数据存储的首地址FirstAdd。
(1.3)读取给定的地址位宽n,根据空间处理器外部存储器的具体情况判断地址位宽是否合理,如果不合理给出提示(地址位宽过大或过小)后结束,否则根据地址位宽和步骤(1.2)得到的dat文件中数据存储的首地址,计算存储器的最大地址MaxAdd,MaxAdd的计算公式为:MaxAdd=2n+FirstAdd;
(1.4)逐行读取dat文件并统计出该文件的行数DataLine,根据DataLine判断输入数据量是否小于存储器的容量,如果不小于就给出提示(输入数据量大于等于存储器的容量)并结束,否则计算校验码所占的行数ParLine,计算ParLine的方法为:
(a)当DataLine是4的整数倍时,ParLine=DataLine/4;
(b)当DataLine不是4的整数倍时,ParLine=DataLine/4+1;
(1.5)根据DataLine与ParLine判断数据位与校验码的总容量是否大于存储器的容量,如果大于就给出提示(输入数据量加校验码量大于存储器的容量)并结束,否则开始计算校验码;
(1.6)将原来dat文件中的数据和新生成的校验码写到输出文件中,原来的数据位从文件头开始顺序排放,而新生成的校验码从文件尾开始倒序排放,中间部分根据地址位宽n和校验码行数ParLine确定补0情况,得到带EDAC校验码的输出文件,方法为:
(1.61)将原来dat文件中的数据依次写到输出文件中,格式与原来的dat文件一样。
(1.62)根据存储器的最大地址MaxAdd和校验码行数ParLine确定补0情况,并写到输出文件中:
(a)如果行首的地址小于(MaxAdd-16*ParLine),那么该行后面的4个数据位全部补0;
(b)如果行首的地址等于(MaxAdd-16*ParLine),那么该行后面的4个数据位不补0或者部分补0,具体步骤为:
(b.1)如果(DataLine%4)等于0,那么该行不用补0,该行的第一个数据位为原来dat文件中最后一行数据位的校验码,第二个数据位为原来dat文件中倒数第二行数据位的校验码,第三个数据位为原来dat文件中倒数第三行数据位的校验码,第四个数据位为原来dat文件中倒数第四行数据位的校验码;
(b.2)如果(DataLine%4)等于1,那么该行补3个0,即该行的前三个数据位都为0,最后一个数据位为原来dat文件中最后一行数据位的校验码;
(b.3)如果(DataLine%4)等于2,那么该行补2个0,即该行的前两个数据位都为0,第三个数据位为原来dat文件中最后一行数据位的校验码,第四个数据位为原来dat文件中倒数第二行数据位的校验码;
(b.4)如果(DataLine%4)等于3,那么该行补1个0,即该行的第一个数据位为0,第二个数据位为原来dat文件中最后一行数据位的校验码,第三个数据位为原来dat文件中倒数第二行数据位的校验码,第四个数据位为原来dat文件中倒数第三行数据位的校验码。
(c)如果行首的地址大于(MaxAdd-16*ParLine),那么该行不补0,数据位都是校验码,将计算得到的校验码按倒序写到该行后面的数据位,直到原来dat文件中第一行的第一个数据位的校验码被计算并写到输出文件中为止。
下面以图2所示的ROM中可执行测试程序dat文件为例,对本发明进行详细描述:
如图2所示,文件的第一列是以0x10递增的十六进制的32bits(即4个字节,也叫1个字)地址,每行的地址后面是4个十六进制的32bits数据位,第一个数据位在ROM/RAM中的存储地址就是行首的地址,第二个数据位在ROM/RAM中的存储地址是行首地址加0x4,第三个数据位在ROM/RAM中的存储地址是行首地址加0x8,第四个数据位在ROM/RAM中的存储地址是行首地址加0xc。第一行的第一个数据位对应的校验码为新生成文件的最后一个字节(即8bits),第一行的第二个数据位对应的校验码为新生成文件的倒数第二个字节,第一行的第三个数据位对应的校验码为新生成文件的倒数第三个字节,第一行的第四个数据位对应的校验码为新生成文件的倒数第四个字节,新生成文件的倒数第一、第二、第三和第四个字节合并成一个字,同理,文件的第二行的4个数据位对应的校验码存放在新生成文件的倒数第二个字,文件的第三行的4个数据位对应的校验码存放在新生成文件的倒数第三个字,依此类推。这种关系如表1所示,其中Pa1是8bits,表示32bits数据位a1对应的校验码,其余的类似。
表1新生成文件中数据位和校验码的对应关系
在数据位和校验码之间,根据存储器的最大地址和校验码行数确定补0情况,即每行5个字,第一个字为十六进制的32bits地址,后面4个全部为十六进制的32bits的0,或者部分为0,部分为校验码。
图3为一个新生成带校验码的ROM中可执行程序的示例,该示例中原始的输入文件有30行,地址位宽n为10,因此生成的校验码会占用8行,其中第58~64行全部是校验码,第57行除了行首的地址00000380外,后面的两个字分别为第30行和第29行数据位的校验码,剩余的两个字为补的0,第31~56行就是全部补0部分。
应用本发明方法,可以实现将存储器中数据位对应的校验码倒序存储,处理器在读取校验码时不需要为了计算四分之三处地址而要求知道存储器的容量,从而能够节省处理器管脚数;该方法中编译生成原dat文件时配合链接脚本一起使用,大大减少了工作量,可以提高功能验证效率,从而缩短产品开发周期;此外,该方法中会及时地比较一些合理性条件,不合理时都会给出相应的错误提示,并立即结束程序的运行,使用者可以根据提示调整输入参数,非常简单方便,极大地节省了验证时间。
本发明还可有其他的实施例,在不背离本发明实质的情况下,熟悉本领域的技术人员可根据本发明做出各种相应的改变和变形,但是这些相应的改变和变形都应属于本发明所附的权利要求的保护范围,本发明未详细描述内容为本领域技术人员公知技术。
Claims (4)
1.一种8位宽外部存储器控制器EDAC校验码的生成方法,其特征在于包括如下步骤:
(1.1)在高级程序编译生成8位宽外部存储器控制器可执行测试程序的过程中,通过所用链接脚本的配合,将text段、data段和rodata段的地址以0x10对齐,得到一个对齐的可执行测试程序的dat文件;
(1.2)读取dat文件,得到该文件中数据存储的首地址FirstAdd;
(1.3)读取给定的地址位宽n,根据空间处理器外部存储器的具体情况判断地址位宽是否合理,如果不合理给出提示后结束,否则根据地址位宽和步骤(1.2)得到的dat文件中数据存储的首地址,计算存储器的最大地址MaxAdd,MaxAdd的计算公式为:MaxAdd=2n+FirstAdd;
(1.4)逐行读取dat文件并统计出该文件的行数DataLine,根据DataLine判断输入数据量是否小于存储器的容量,如果不小于就给出提示并结束,否则计算校验码所占的行数ParLine,计算ParLine的方法为:
(a)当DataLine是4的整数倍时,ParLine=DataLine/4;
(b)当DataLine不是4的整数倍时,ParLine=DataLine/4+1;
(1.5)根据DataLine与ParLine判断数据位与校验码的总容量是否大于存储器的容量,如果大于就给出提示并结束,否则开始计算校验码;
(1.6)将原来dat文件中的数据和新生成的校验码写到输出文件中,原来的数据位从文件头开始顺序排放,而新生成的校验码从文件尾开始倒序排放,中间部分根据地址位宽n和校验码行数ParLine确定补0情况,得到带EDAC校验码的输出文件。
2.根据权利要求1所述的一种8位宽外部存储器控制器EDAC校验码的生成方法,其特征在于:所述步骤(1.1)中对齐的可执行测试程序dat文件的格式为:
文件的每行有5个数据,第一列是以0x10递增的十六进制的32bits地址,每行的地址后面是4个十六进制的32bits数据位,每行的第一个数据位在存储器中的地址就是该行第一列的数据。
3.根据权利要求2所述的一种8位宽外部存储器控制器EDAC校验码的生成方法,其特征在于:所述步骤(1.6)中得到带EDAC校验码的输出文件的方法为:
(3.1)将原来dat文件中的数据依次写到输出文件中,格式与原来的dat文件一样;
(3.2)根据存储器的最大地址MaxAdd和校验码行数ParLine确定补0情况,并写到输出文件中:
(a)如果行首的地址小于(MaxAdd-16*ParLine),那么该行后面的4个数据位全部补0;
(b)如果行首的地址等于(MaxAdd-16*ParLine),那么该行后面的4个数据位不补0或者部分补0;
(c)如果行首的地址大于(MaxAdd-16*ParLine),那么该行不补0,数据位都是校验码,将计算得到的校验码按倒序写到该行后面的数据位,直到原来dat文件中第一行的第一个数据位的校验码被写到输出文件中为止。
4.根据权利要求3所述的一种8位宽外部存储器控制器EDAC校验码的生成方法,其特征在于:所述步骤(b)的实现方式为:
(4.1)如果(DataLine%4)等于0,那么该行不用补0,该行的第一个数据位为原来dat文件中最后一行数据位的校验码,第二个数据位为原来dat文件中倒数第二行数据位的校验码,第三个数据位为原来dat文件中倒数第三行数据位的校验码,第四个数据位为原来dat文件中倒数第四行数据位的校验码;
(4.2)如果(DataLine%4)等于1,那么该行补3个0,即该行的前三个数据位都为0,最后一个数据位为原来dat文件中最后一行数据位的校验码;
(4.3)如果(DataLine%4)等于2,那么该行补2个0,即该行的前两个数据位都为0,第三个数据位为原来dat文件中最后一行数据位的校验码,第四个数据位为原来dat文件中倒数第二行数据位的校验码;
(4.4)如果(DataLine%4)等于3,那么该行补1个0,即该行的第一个数据位为0,第二个数据位为原来dat文件中最后一行数据位的校验码,第三个数据位为原来dat文件中倒数第二行数据位的校验码,第四个数据位为原来dat文件中倒数第三行数据位的校验码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510828933.4A CN105373444B (zh) | 2015-11-24 | 2015-11-24 | 一种8位宽外部存储器控制器edac校验码的生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510828933.4A CN105373444B (zh) | 2015-11-24 | 2015-11-24 | 一种8位宽外部存储器控制器edac校验码的生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105373444A CN105373444A (zh) | 2016-03-02 |
CN105373444B true CN105373444B (zh) | 2018-07-06 |
Family
ID=55375665
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510828933.4A Expired - Fee Related CN105373444B (zh) | 2015-11-24 | 2015-11-24 | 一种8位宽外部存储器控制器edac校验码的生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105373444B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106528359B (zh) * | 2016-11-29 | 2019-07-23 | 北京时代民芯科技有限公司 | 一种外部存储器校验位的可观测性方法 |
CN110363027B (zh) * | 2019-06-21 | 2021-04-09 | 捷德(中国)科技有限公司 | 一种电子合同的生成及电子签名方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103838638A (zh) * | 2014-03-20 | 2014-06-04 | 华为技术有限公司 | Fpga外挂存储器校验方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020147955A1 (en) * | 2000-05-11 | 2002-10-10 | James Robert W. | Internal storage memory with EDAC protection |
US8661320B2 (en) * | 2011-10-07 | 2014-02-25 | Aeroflex Colorado Springs Inc. | Independent orthogonal error correction and detection |
-
2015
- 2015-11-24 CN CN201510828933.4A patent/CN105373444B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103838638A (zh) * | 2014-03-20 | 2014-06-04 | 华为技术有限公司 | Fpga外挂存储器校验方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105373444A (zh) | 2016-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7352630B2 (en) | Non-volatile memory device having improved program speed and associated programming method | |
US10141039B2 (en) | Burst length defined page size | |
CN109062827A (zh) | 闪存控制装置、闪存控制系统以及闪存控制方法 | |
CN106484316A (zh) | 用来管理一记忆装置的方法以及记忆装置与控制器 | |
US9083382B2 (en) | Memory with on-chip error correction | |
TWI657336B (zh) | 用以檢測資料儲存裝置之資料儲存方法及其資料儲存裝置 | |
US11568910B2 (en) | Memory system | |
CN105373444B (zh) | 一种8位宽外部存储器控制器edac校验码的生成方法 | |
CN107797821A (zh) | 重试读取方法以及使用该方法的装置 | |
CN106205728A (zh) | 奇偶校验电路及包括该奇偶校验电路的存储器装置 | |
CN108320774A (zh) | 闪存存储装置用阈值电压参数排序方法及装置 | |
CN105304128A (zh) | 储存数据数值在存储单元的方法及存储器 | |
US9183952B2 (en) | Apparatuses and methods for compressing data received over multiple memory accesses | |
TWI442406B (zh) | 針對一快閃記憶體的控制器之錯誤管理機制來提升驗證效率之方法以及相關之記憶裝置及其控制器 | |
CN115470052B (zh) | 存储芯片的坏块检测方法、检测装置及存储介质 | |
CN105354107A (zh) | NOR Flash的数据传输方法及系统 | |
TWI512734B (zh) | 快閃記憶體及其存取方法 | |
CN105278866A (zh) | 固态储存装置及其错误更正控制方法 | |
US10867663B2 (en) | Control method for memory and non-transitory computer-readable media | |
JP5982148B2 (ja) | 半導体記憶装置 | |
TWI614758B (zh) | 儲存媒體、傳輸系統及其控制方法 | |
CN105224249B (zh) | 一种写操作方法和装置 | |
JP2016151922A (ja) | メモリ制御装置及びメモリ制御方法 | |
CN103187101A (zh) | 一种用于dram修复测试的数据压缩输出方法 | |
KR20110078730A (ko) | 반도체 메모리 장치 및 이의 캠 데이터 테스트 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180706 Termination date: 20191124 |