CN112398485B - 一种无误码率纠一检二纠相邻码的校验矩阵生成方法 - Google Patents

一种无误码率纠一检二纠相邻码的校验矩阵生成方法 Download PDF

Info

Publication number
CN112398485B
CN112398485B CN202011316974.2A CN202011316974A CN112398485B CN 112398485 B CN112398485 B CN 112398485B CN 202011316974 A CN202011316974 A CN 202011316974A CN 112398485 B CN112398485 B CN 112398485B
Authority
CN
China
Prior art keywords
column
current
pool
vector
check matrix
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.)
Active
Application number
CN202011316974.2A
Other languages
English (en)
Other versions
CN112398485A (zh
Inventor
刘胜
鲁建壮
王丹宁
张洋
刘畅
李晨
曹壮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN202011316974.2A priority Critical patent/CN112398485B/zh
Publication of CN112398485A publication Critical patent/CN112398485A/zh
Application granted granted Critical
Publication of CN112398485B publication Critical patent/CN112398485B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Error Detection And Correction (AREA)

Abstract

本发明公开了一种无误码率纠一检二纠相邻码的校验矩阵生成方法,其包括:步骤S1:根据输入的数据位数k计算初始校验位数r;步骤S2:临时校验矩阵初始化;用r阶方阵Ir对临时校验矩阵current_H初始化,设置界定变量confirmed_num_of_col表示临时校验矩阵已找到的满足3个特点的列向量数,初始值为0,值为k时表示校验矩阵构建完成;步骤S3:构建奇权向量池odd_vector_pool及进行变量初始化过程;步骤S4:从向量池中找出局部最优列添加到临时校验矩阵current_H尾部,进行变量更新过程;步骤S5:判断寻找是否结束。本发明具有可扩展、无误码率、硬件开销小、编解码延迟低等优点。

Description

一种无误码率纠一检二纠相邻码的校验矩阵生成方法
技术领域
本发明主要涉及到存储器加固设计技术领域,特指一种无误码率纠一检二纠相邻码的校验矩阵生成方法。
背景技术
片上存储器的可靠性对微处理器的设计至关重要。受多粒子翻转(MCU,MultipleCell Upsets)的影响,存储单元会发生多个比特位翻转,这些比特位多是物理相邻的。
通常用错误纠正码ECCs(Error Correction Codes)来减轻这种软错误对存储造成的影响,现虽有很多纠错能力强的ECC码,如可纠多位错的RS(Reed-Solomon)码、BCH(Bose-Chaudhuri-Hocquenghem)码以及EG(Euclidean Geometry)码,但同纠一检二纠相邻码相比,它们延迟高、功耗大且冗余高,纠一检二纠相邻码SEC-DED-DAEC(Single ErrorCorrection-Double Error Detection-Double Adjacent Error Correction)是指能纠正一位错、检测两位错且能纠正相邻两位错的错误纠正码。虽然目前关于纠相邻两位错(DAEC)的研究慢慢多了起来,但是没有解决误码率问题。为实现高可靠性的存储系统,纠一检二纠相邻码的无误码率问题亟待解决。
一方面,用无误码率纠一检二纠相邻保护的数据的位数具有多样性(如16位、32位、128位、512位等),另一方面不同设计者的经验和方法不同,目前已有的关于纠一检二纠相邻校验矩阵生成的实现技术还存在多样性,对一些共性的要解决的问题还缺乏统一的、简洁的解决方案。这将会导致如下问题:
1)增加设计者的工作量,不同的设计者需要先学习存储加固及线性分组码的相关知识,然后进行设计,这会提升总工作量。
2)不同设计者的设计方法不同,比如初始校验位数以及校验矩阵列都可以有不同的选择方法,这也会提高设计难度。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种可扩展、无误码率、硬件开销小、编解码延迟低、生成校验矩阵速度快的无误码率纠一检二纠相邻码的校验矩阵生成方法。
为解决上述技术问题,本发明采用以下技术方案:
一种无误码率纠一检二纠相邻码的校验矩阵生成方法,其包括:
步骤S1:根据输入的数据位数k计算初始校验位数r;
步骤S2:临时校验矩阵初始化;用r阶方阵Ir对临时校验矩阵current_H初始化,设置界定变量confirmed_num_of_col表示临时校验矩阵已找到的满足3个特点的列向量数,初始值为0,值为k时表示校验矩阵构建完成;
步骤S3:构建奇权向量池odd_vector_pool及进行变量初始化过程;
步骤S4:从向量池中找出局部最优列添加到临时校验矩阵current_H的尾部,然后进行变量更新过程;
步骤S5:判断寻找是否结束。
作为本发明的进一步改进:所述步骤S3中,其中,奇权向量池指向量池中每个列向量所含“1”的个数为奇数;向量池按照列向量权重为3,5……r/2来创建建,即向量池的容量为:
Figure BDA0002791041280000021
此外,含两个连续的“1”的列向量不放入权3向量池中,即权重为3的向量池。
作为本发明的进一步改进:所述步骤S4中,在选择局部最优列时,首先要从向量池中选择候选列cur_selected_col;然后判断候选列加入到curremt_H尾部是否能满足前述校验矩阵的3个特点,若满足,说明该候选列为局部最优列,可将其增加到当前临时矩阵current_H的尾部,然后进行confirmed_num_of_col=confirmed_num_of_col+1,同时对相关的变量进行更新;若不满足,则继续寻找局部最优列。
作为本发明的进一步改进:所述步骤S5中,判断confirmed_num_of_col是否等于k,如果不等于k,说明寻找未结束,回到步骤S4继续寻找局部最优列;如果不等于k且在当前的奇权向量池已找不到局部最优列,这说明校验位数r偏小,进行r=r+1,回到步骤S2重新开始;如果等于k,说明校验矩阵构建完成,输出current_H。
作为本发明的进一步改进:在步骤S5中,具体包括:
步骤S5.1、判断校验矩阵是否构建完成;判断complete是否为1,若是,则结束;若不是,则进行步骤S5.2;
步骤S5.2、判断新增列数confirmed_num_of_col是否小于k;若是,则进行步骤S5.4;若不是,则进行步骤S5.3;
步骤S5.3、判断新增列数confirmed_num_of_col是否等于k;若是,则输出校验矩阵current_H,然后进行步骤S5.1;若不是,则将complete置0,然后进行步骤S5.1。
作为本发明的进一步改进:在步骤S4中,具体包括两部分:
步骤S4.1:边界条件判断;
步骤S4.2:局部最优列判断。
作为本发明的进一步改进:所述步骤S4.1中边界条件分为三类:①候选列号cur_sel_pool_num;②重叠权重变量overlap_weight;③当前向量池号cur_vec_pool_num。
作为本发明的进一步改进:所述步骤S4.1的具体判断步骤为:
步骤S 4.1.1、对候选列cur_selected_col与current_H尾列的同一行为1的这一事件进行计数,判断计数结果是否小于等于重叠权重overlap_weight,同时判断候选列号是否没有超过当前权重向量池的边界;若有一个不成立,则进行步骤S 4.1.2;若均成立,则进行步骤S4.2;
步骤S 4.1.2、判断候选列是否到边界,若到边界,则重叠权重overlap_weight=overlap_weight+1,然后进行步骤S 4.1.3;若没有到边界,则候选列号cur_selected_col_num=cur_selected_col_num+1,然后进行步骤S5;
步骤S 4.1.3、判断重叠权重是否满足overlap_weight>r,且判断当前向量池是否为空,若均成立,则当前向量池号cur_vec_pool_num=cur_vec_pool_num+2,然后进行4.1.4;若有一个不成立,则候选列号cur_selected_col_num=1;
步骤S 4.1.4、判断当前池号cur_vec_pool_num是否越界,若是,则进行r++,回到步骤S5.1;若不是,则将overlcp_weight置0,候选列号cur_selected_col_num置1。
作为本发明的进一步改进:所述上述步骤S4.2的流程包括:
步骤S4.2.1、判断候选列与临时矩阵当前尾列的异或结果是否为DAEC_group或DED_group的子集,同时判断该列同尾列的异或结果是否为给列同current_H所有非相邻列向量异或结果集合的子集,若皆不是,则进行步骤S 4.2.2;若有一个是,则进行步骤S4.2.3;
步骤S 4.2.2、候选列cur_selected_col为局部最优列,将其加到current_H的尾部来对临时矩阵进行更新,同时按照图3对相关变量进行更新,然后进行步骤S 5.2;
步骤S 4.2.3、判断候选列cur_selected_col与current_H除尾列以外的所有列的异或结果集合是否与DAEC_group相交,若是,则从向量池删除本向量,然后进行步骤S4.1.2;若不是,则进行步骤S 4.1.2;在局部最优列判断过程中所涉及的相关子函数如下:
a)judge_adjacent_xor(current_H,cur_selected_col,DAEC_group,DED_group):判断候选列与临时矩阵当前尾列的异或结果是否为DAEC_group或DED_group的子集;
b)judge_non_adjacent_xor(current_H,cur_selected_col,DAEC_group):输出两个逻辑判断结果:①判断候选列与current_H的除尾列以外的所有列向量的异或结果是否存在DAEC_group的子集;②判断该列同尾列的异或结果是否为其同current_H的所有非相邻列向量异或结果集合的子集。
与现有技术相比,本发明的优点在于:
1、本发明的无误码率纠一检二纠相邻码的校验矩阵生成方法,通过输入需要保护的数据位数,算法可以生成相应的校验矩阵。本发明优先选择总权重小的列向量,优先选择权重小的列向量,这可以降低硬件开销;通过设置overlap_weight变量,本发明优先选择与临时矩阵尾列行重叠权重小的列向量,使得校验矩阵的每一行“1”的个数更加均匀,这可以降低编解码延迟。
2、本发明的无误码率纠一检二纠相邻码的校验矩阵生成方法,具有普适性,针对不同的数据位数,算法可生成相对应的无误码率纠一检二纠相邻码的校验矩阵。
3、本发明的无误码率纠一检二纠相邻码的校验矩阵生成方法,生成校验矩阵速度快,在数据位较少时,可在几秒内生成校验矩阵,以256位为例,算法运行5次仅需24min。
4、本发明的无误码率纠一检二纠相邻码的校验矩阵生成方法,能够减少设计者工作量、完成对存储体的加固。因此本发明具有可扩展、无误码率、硬件开销小、编解码延迟低、生成校验矩阵速度快等特点。
附图说明
图1是本发明方法中涉及变量的示意图。
图2是本发明在具体应用实例中奇权向量池创建过程的示意图。
图3是本发明在具体应用实例中变量初始化过程的示意图。
图4是本发明在具体应用实例中变量更新过程的示意图。
图5是本发明方法的流程示意图。
图6是本发明在具体应用实例中引入迭代后的示意图。
具体实施方式
以下将结合说明书附图和具体实施例对本发明做进一步详细说明。
如图1所示,本发明的一种无误码率纠一检二纠相邻码的校验矩阵生成方法,生成目标是构建r行n列的无误码率校验矩阵
Figure BDA0002791041280000061
其中,k表示数据位数,r表示校验位数,n表示数据位数和校验位数的和,即总位数;Pk·r表示k行r列矩阵,Ir为r阶方阵。
生成的校验矩阵
Figure BDA0002791041280000062
主要包含如下特点:1)矩阵无全零列且各列互异,从而保证可以纠正一位错误。2)校验矩阵每列含奇数个“1”,从而可以区分一位错误和两位错误。3)校验矩阵相邻两列的异或结果互异,相邻两列异或结果的集合与非相邻两列异或结果的集合不相交,前者使得码可以纠正相邻两位错误,后者使得码无误码率。生成此特点的校验矩阵的总思路是:构建r行向量池,从中选出n个满足这3个特点的列向量。
图1是本发明的一些重要变量名及其含义,包含奇权向量池odd_vector_pool;权3池weight_3_pool;权5池weight_5_pool;权7池weight_7_pool……权r/2池weight_r/2_pool;临时校验矩阵current_H;临时矩阵相邻两列的异或结果集合DAEC_group;临时矩阵非相邻两列的异或结果集合DED_group;临时校验矩阵的新增列数confirmed_num_of_col;当前向量池号cur_vec_pool_num;当前向量池号对应的当前向量池cur_vec_pool;最小向量池号min_vec_pool_num;最小向量池号对应的最小向量池min_vec_pool;重叠权重overlap_weight;候选列号cur_selected_col_num;候选列号对应的候选列cur_selected_col;校验矩阵是否构建完成complete。
本发明在具体应用实例中的流程包括:
步骤S1:根据输入的数据位数k计算初始校验位数r。
为满足可以纠正一位错以及相邻两位错,应有:
Figure BDA0002791041280000071
从而推出:2r-1≥2k+2r-1,因而根据输入的数据位数k可以计算出初始校验位数r。
步骤S2:临时校验矩阵初始化。
用r阶方阵Ir对临时校验矩阵current_H初始化,设置界定变量confirmed_num_of_col表示临时校验矩阵已找到的满足3个特点的列向量数,初始值为0,值为k时表示校验矩阵构建完成。
步骤S3:构建奇权向量池odd_vector_pool及进行变量初始化过程。
其中,奇权向量池指向量池中每个列向量所含“1”的个数为奇数;向量池按照列向量权重为3,5……r/2来创建建,即向量池的容量为:
Figure BDA0002791041280000072
此外,含两个连续的“1”的列向量不放入权3向量池中,即权重为3的向量池。
步骤S4:从向量池中找出局部最优列添加到临时校验矩阵current_H的尾部,然后进行变量更新过程。
在选择局部最优列时,首先要从向量池中选择候选列cur_selected_col;然后判断候选列加入到curremt_H尾部是否能满足前述校验矩阵的3个特点,若满足,说明该候选列为局部最优列,可将其增加到当前临时矩阵current_H的尾部,然后进行confirmed_num_of_col=confirmed_num_of_col+1,同时对相关的变量进行更新;若不满足,则继续寻找局部最优列。
步骤S5:判断寻找是否结束。
判断confirmed_num_of_col是否等于k,如果不等于k,说明寻找未结束,回到步骤S4继续寻找局部最优列;如果不等于k且在当前的奇权向量池已找不到局部最优列,这说明校验位数r偏小,进行r=r+1,回到步骤S2重新开始;如果等于k,说明校验矩阵构建完成,输出current_H。
在具体应用实例中,在步骤S3中,如图2所示为的奇权向量池创建过程。按照权重为3,5……r/2来创建奇权向量池。权3向量池的创建过程不同于其它向量池的创建过程。图2给出了权3向量池与权5向量池的创建过程,其它向量池的创建过程与权5向量池类似,只需在权5向量池创建过程的基础上增加FOR循环数量。
在具体应用实例中,在步骤S3中,如图3所示为变量初始化过程。主要有:临时校验矩阵current_H,用r阶方阵进行初始化;临时矩阵相邻两列的异或结果列组成的矩阵DAEC_group和临时矩阵非相邻两列的异或结果列组成的矩阵DED_group,分别用初始化后的current_H的相邻两列异或结果列组成的矩阵和非相邻两列异或结果列组成的矩阵进行初始化;校验矩阵的新增列数confirmed_num_of_col初始赋值为0,当为k时表示校验矩阵构建完成;当前向量池号cur_vec_pool_num初始赋值为3,表示权3向量池,赋值为i,表示权i向量池;当前向量池号对应的向量池cur_vec_pool初始赋值为权3向量池;当前权最小向量池号min_vec_pool_num初始赋值为3,表示权3向量池,赋值为i,表示权i向量池;当前权最小向量池号对应的向量池min_vec_pool初始赋值为权3向量池;重叠权重overlap_weight初始赋值为0;候选列号cur_selected_col_num初始赋值为1,表示当前向量池cur_vec_pool的第1列为候选列,赋值为i时,表示当前向量池cur_vec_pool的第i列为候选列;候选列号对应的列即候选列cur_selected_col,初始赋值为当前向量池cur_vec_pool的第1列;是否生成校验矩阵complete初始赋值为0,表示尚未生成校验矩阵。初始化过程中的子函数有:
1)create_all_odd_vector_pool(check_bit):创建奇权向量池odd_vector_pool以及各个权重向量池:weight_3_pool,weight_5_pool,weight_7_pool······weight_r/2_pool。
2)create_DAEC_group(current_H):根据current_H创建DAEC_group,其为current_H的所有相邻两个列向量异或结果的集合。
3)create_DED_group(current_H):根据current_H创建DED_group,其为current_H的所有非相邻两个列向量异或结果的集合。
4)eye(r):根据校验位数r,用r阶方阵对current_H初始化。
cur_vec_pool(:,cur_selected_col_num):将当前向量池cur_vec_pool中向量池号cur_selected_col_num所对应的列向量作为候选列cur_selected_col。
在具体应用实例中,在步骤S4中,如图4所示为变量更新过程。当选定某列为局部最优列时,要对相关变量进行更新:临时校验矩阵current_H更新为当前校验矩阵current_H与局部最优列拼接;校验矩阵的新增列数confirmed_num_of_col=confirmed_num_of_col+1;用更新后的临时矩阵分别对DAEC_group和DED_group进行更新;更新奇权向量池odd_vec_pool及各个分权向量池weight_3_pool、weight_5_pool……weight_r/2_pool,一方面将此向量从所在向量池删除,另一方面,把向量池中所有同该列向量异或结果为仅含有两个连续“1”的向量从向量池删除;最小向量池号min_vec_pool_num更新为当前非空向量池的最小池号,同时更新对应的最小向量池min_vec_pool;当前向量池号cur_vec_pool_num更新为最小向量池号,同时更新对应的当前向量池cur_vec_pool;重叠权重overlap_weight更新为0;候选列号cur_selected_col_num更新为1;候选列号对应的列cur_selected_col更新为更新后的cur_vec_pool的第1列。更新过程涉及的子函数有:
1)put_into_DAEC_DED_group(current_H,DAEC_group,DED_group):在current_H更新完成后对DAEC_group和DED_group进行更新。
2)update_vec_pool(odd_vec_pool,cur_selected_col):在新的列加入到current_H后,利用该列向量去优化向量池,一方面将此向量从向量池删除,另一方面,把向量池中所有同该列向量异或结果为仅含有两个连续“1”的向量从向量池删除。
3)update_min_vec_pool(min_vec_pool_num,min_vec_pool,weight_3_pool,weight_5_pool,weight_7_pool……weight_r/2_pool):在对向量池剪枝后对min_vec_pool进行更新。
cur_vec_pool(:,cur_selected_col_num):将当前向量池cur_vec_pool中向量池号cur_selected_col_num所对应的列向量作为候选列cur_selected_col。
在具体应用实例中,在步骤S5中,具体包括:
步骤S5.1、判断校验矩阵是否构建完成;判断complete是否为1,若是,则结束;若不是,则进行步骤S5.2。
步骤S5.2、判断新增列数confirmed_num_of_col是否小于k;若是,则进行步骤S5.4;若不是,则进行步骤S5.3。
步骤S5.3、判断新增列数confirmed_num_of_col是否等于k。若是,则输出校验矩阵current_H,然后进行步骤S5.1;若不是,则将complete置0,然后进行步骤S5.1。
在具体应用实例中,在步骤S4中,具体包括两部分:
步骤S4.1:边界条件判断;
步骤S4.2:局部最优列判断。
边界条件分为三类:①候选列号cur_sel_pool_num;②重叠权重变量overlap_weight;③当前向量池号cur_vec_pool_num。
在具体应用中,上述步骤S4.1的具体判断步骤为:
步骤S 4.1.1、对候选列cur_selected_col与current_H尾列的同一行为1的这一事件进行计数,判断计数结果是否小于等于重叠权重overlap_weight,同时判断候选列号是否没有超过当前权重向量池的边界;若有一个不成立,则进行步骤S 4.1.2;若均成立,则进行步骤S4.2;
步骤S 4.1.2、判断候选列是否到边界,若到边界,则重叠权重overlap_weight=overlap_weight+1,然后进行步骤S 4.1.3;若没有到边界,则候选列号cur_selected_col_num=cur_selected_col_num+1,然后进行步骤S5。
步骤S 4.1.3、判断重叠权重是否满足overlap_weight>r,且判断当前向量池是否为空,若均成立,则当前向量池号cur_vec_pool_num=cur_vec_pool_num+2,然后进行4.1.4;若有一个不成立,则候选列号cur_selected_col_num=1。
步骤S 4.1.4、判断当前池号cur_vec_pool_num是否越界,若是,则进行r++,回到步骤S5.1;若不是,则将overlcp_weight置0,候选列号cur_selected_col_num置1。
在具体应用实例中,上述步骤S4.2的流程包括:
步骤S4.2.1、判断候选列与临时矩阵当前尾列的异或结果是否为DAEC_group或DED_group的子集,同时判断该列同尾列的异或结果是否为给列同current_H所有非相邻列向量异或结果集合的子集,若皆不是,则进行步骤S4.2.2;若有一个是,则进行步骤S4.2.3。
步骤S4.2.2、候选列cur_selected_col为局部最优列,将其加到current_H的尾部来对临时矩阵进行更新,同时按照图3对相关变量进行更新,然后进行步骤S 5.2。
步骤S 4.2.3、判断候选列cur_selected_col与current_H除尾列以外的所有列的异或结果集合是否与DAEC_group相交,若是,则从向量池删除本向量,然后进行步骤S4.1.2;若不是,则进行步骤S 4.1.2。在局部最优列判断过程中所涉及的相关子函数如下:
a)judge_adjacent_xor(current_H,cur_selected_col,DAEC_group,DED_group):判断候选列与临时矩阵当前尾列的异或结果是否为DAEC_group或DED_group的子集。
b)judge_non_adjacent_xor(current_H,cur_selected_col,DAEC_group):输出两个逻辑判断结果:①判断候选列与current_H的除尾列以外的所有列向量的异或结果是否存在DAEC_group的子集;②判断该列同尾列的异或结果是否为其同current_H的所有非相邻列向量异或结果集合的子集。
参见图6所示,为本发明引入迭代后的算法图。通过给图5的算法引入迭代,每次迭代生成一个校验矩阵,多次迭代可生成多个校验矩阵。然后从多个校验矩阵中选出总权重最小的校验矩阵,若两个校验矩阵总权重相同,则选出最大行权最小的矩阵。如图6所示,每次迭代均用图5算法生成校验矩阵,不同迭代唯一不同的是候选列cur_selected_col的初始化赋值不同:在迭代次数为1次时,如图5所示,候选列cur_selected_col初始化为权3向量池的第一列;而当有多次迭代时,第i次迭代将会选择权3向量池的第i列作为cur_selected_col的初始值,而当迭代次数i大于权3池总列数时,会终止迭代,即最大迭代次数为权3池的总列数。迭代完成后,从生成的校验矩阵中选出总权重最小的矩阵H_matrix,将其作为最终生成的校验矩阵输出。在引入迭代时所涉及的相关子函数如下:
1)total_weight_computing(current_H):计算总权重,即生成校验矩阵中“1”的总数。
2)row_weight_computing(current_matrix):计算最大行权重,即计算生成校验矩阵中每行“1”的个数,从中选出最大值即为最大行权重。
choose_the_better_matrix(a_matrix,b_matrix):选择最优矩阵。该函数优先选择总权重最小的矩阵,当总权重相同时,选择行权最大值最小的矩阵。
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。

Claims (9)

1.一种无误码率纠一检二纠相邻码的校验矩阵生成方法,其特征在于,包括:
步骤S1:根据输入的数据位数k计算初始校验位数r;
步骤S2:临时校验矩阵初始化;用r阶方阵Ir对临时校验矩阵current_H初始化,设置界定变量confirmed_num_of_col表示临时校验矩阵已找到的满足3个特点的列向量数,初始值为0,值为k时表示校验矩阵构建完成;所述3个特点具体为:1)矩阵无全零列且各列互异,从而保证可以纠正一位错误; 2)校验矩阵每列含奇数个“1”,从而可以区分一位错误和两位错误; 3)校验矩阵相邻两列的异或结果互异,相邻两列异或结果的集合与非相邻两列异或结果的集合不相交;
步骤S3:构建奇权向量池odd_vector_pool及进行变量初始化过程;
步骤S4:从向量池中找出局部最优列添加到临时校验矩阵current_H的尾部,然后进行变量更新过程;
步骤S5:判断寻找是否结束。
2.根据权利要求1所述无误码率纠一检二纠相邻码的校验矩阵生成方法,其特征在于,所述步骤S3中,其中,奇权向量池指向量池中每个列向量所含“1”的个数为奇数;向量池按照列向量权重为3,5……r/2来创建,即向量池的容量为:
Figure FDA0004014028440000011
此外,含两个连续的“1”的列向量不放入权重为3的向量池。
3.根据权利要求1所述无误码率纠一检二纠相邻码的校验矩阵生成方法,其特征在于,所述步骤S4中,在选择局部最优列时,首先要从向量池中选择候选列cur_selected_col;然后判断候选列加入到curremt_H尾部是否能满足前述校验矩阵的3个特点,若满足,说明该候选列为局部最优列,可将其增加到当前临时矩阵current_H的尾部,然后进行confirmed_num_of_col=confirmed_num_of_col+1,同时对相关的变量进行更新;若不满足,则继续寻找局部最优列。
4.根据权利要求1所述无误码率纠一检二纠相邻码的校验矩阵生成方法,其特征在于,所述步骤S5中,判断confirmed_num_of_col是否等于k,如果不等于k,说明寻找未结束,回到步骤S4继续寻找局部最优列;如果不等于k且在当前的奇权向量池已找不到局部最优列,这说明校验位数r偏小,进行r=r+1,回到步骤S2重新开始;如果等于k,说明校验矩阵构建完成,输出current_H。
5.根据权利要求1-4中任意一项所述无误码率纠一检二纠相邻码的校验矩阵生成方法,其特征在于,在步骤S5中,具体包括:
步骤S5.1、判断校验矩阵是否构建完成;判断complete是否为1,若是,则结束;若不是,则进行步骤S5.2;
步骤S5.2、判断新增列数confirmed_num_of_col是否小于k;若是,则进行步骤S5.4;若不是,则进行步骤S5.3;
步骤S5.3、判断新增列数confirmed_num_of_col是否等于k;若是,则输出校验矩阵current_H,然后进行步骤S5.1;若不是,则将complete置0,然后进行步骤S5.1。
6.根据权利要求5所述无误码率纠一检二纠相邻码的校验矩阵生成方法,其特征在于,在步骤S4中,具体包括两部分:
步骤S4.1:边界条件判断;
步骤S4.2:局部最优列判断。
7.根据权利要求6所述无误码率纠一检二纠相邻码的校验矩阵生成方法,其特征在于,所述步骤S4.1中边界条件分为三类:①候选列号cur_sel_pool_num;②重叠权重变量overlap_weight;③当前向量池号cur_vec_pool_num。
8.根据权利要求7所述无误码率纠一检二纠相邻码的校验矩阵生成方法,其特征在于,所述步骤S4.1的具体判断步骤为:
步骤S 4.1.1、对候选列cur_selected_col与current_H尾列的同一行为1的这一事件进行计数,判断计数结果是否小于等于重叠权重overlap_weight,同时判断候选列号是否没有超过当前权重向量池的边界;若有一个不成立,则进行步骤S 4.1.2;若均成立,则进行步骤S4.2;
步骤S 4.1.2、判断候选列是否到边界,若到边界,则重叠权重overlap_weight=overlap_weight+1,然后进行步骤S 4.1.3;若没有到边界,则候选列号cur_selected_col_num=cur_selected_col_num+1,然后进行步骤S5;
步骤S 4.1.3、判断重叠权重是否满足overlap_weight>r,且判断当前向量池是否为空,若均成立,则当前向量池号cur_vec_pool_num=cur_vec_pool_num+2,然后进行4.1.4;若有一个不成立,则候选列号cur_selected_col_num=1;
步骤S 4.1.4、判断当前池号cur_vec_pool_num是否越界,若是,则进行r++,回到步骤S5.1;若不是,则将overlcp_weight置0,候选列号cur_selected_col_num置1。
9.根据权利要求8所述无误码率纠一检二纠相邻码的校验矩阵生成方法,其特征在于,所述步骤S4.2的流程包括:
步骤S4.2.1、判断候选列与临时矩阵当前尾列的异或结果是否为DAEC_group或DED_group的子集,同时判断该列同尾列的异或结果是否为给列同current_H所有非相邻列向量异或结果集合的子集,若皆不是,则进行步骤S 4.2.2;若有一个是,则进行步骤S 4.2.3;
步骤S 4.2.2、候选列cur_selected_col为局部最优列,将其加到current_H的尾部来对临时矩阵进行更新,同时按照图3对相关变量进行更新,然后进行步骤S 5.2;
步骤S 4.2.3、判断候选列cur_selected_col与current_H除尾列以外的所有列的异或结果集合是否与DAEC_group相交,若是,则从向量池删除本向量,然后进行步骤S 4.1.2;若不是,则进行步骤S 4.1.2;在局部最优列判断过程中所涉及的相关子函数如下:
a)judge_adjacent_xor(current_H,cur_selected_col,DAEC_group,DED_group):判断候选列与临时矩阵当前尾列的异或结果是否为DAEC_group或DED_group的子集;
b)judge_non_adjacent_xor(current_H,cur_selected_col,DAEC_group):输出两个逻辑判断结果:①判断候选列与current_H的除尾列以外的所有列向量的异或结果是否存在DAEC_group的子集;②判断该列同尾列的异或结果是否为其同current_H的所有非相邻列向量异或结果集合的子集。
CN202011316974.2A 2020-11-20 2020-11-20 一种无误码率纠一检二纠相邻码的校验矩阵生成方法 Active CN112398485B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011316974.2A CN112398485B (zh) 2020-11-20 2020-11-20 一种无误码率纠一检二纠相邻码的校验矩阵生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011316974.2A CN112398485B (zh) 2020-11-20 2020-11-20 一种无误码率纠一检二纠相邻码的校验矩阵生成方法

Publications (2)

Publication Number Publication Date
CN112398485A CN112398485A (zh) 2021-02-23
CN112398485B true CN112398485B (zh) 2023-03-21

Family

ID=74606842

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011316974.2A Active CN112398485B (zh) 2020-11-20 2020-11-20 一种无误码率纠一检二纠相邻码的校验矩阵生成方法

Country Status (1)

Country Link
CN (1) CN112398485B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114244374B (zh) * 2021-11-22 2022-08-05 成都博尔微晶科技有限公司 一种校验矩阵生成方法、装置、电子设备及存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6789227B2 (en) * 2001-07-05 2004-09-07 International Business Machines Corporation System and method for generating low density parity check codes using bit-filling
US7243293B2 (en) * 2003-12-23 2007-07-10 International Business Machines Corporation (18, 9) Error correction code for double error correction and triple error detection
US8566684B1 (en) * 2011-05-26 2013-10-22 Sandia Corporation Decoding and optimized implementation of SECDED codes over GF(q)
CN104378120B (zh) * 2014-11-14 2017-07-25 中国航天科技集团公司第九研究院第七七一研究所 一种用于连续MBU检测的Hsiao编码校验矩阵生成方法

Also Published As

Publication number Publication date
CN112398485A (zh) 2021-02-23

Similar Documents

Publication Publication Date Title
US10176042B2 (en) Using reliability information from multiple storage units and a parity storage unit to recover data for a failed one of the storage units
Huang et al. Binary linear locally repairable codes
US10411735B1 (en) Systems and methods for an iterative decoding scheme
US7030785B2 (en) Systems and processes for decoding a chain reaction code through inactivation
US8635508B2 (en) Systems and methods for performing concatenated error correction
US8214729B2 (en) Error detecting/correcting scheme for memories
US9213596B2 (en) Handling errors in ternary content addressable memories
US8510641B2 (en) Circuit and technique for reducing parity bit-widths for check bit and syndrome generation for data blocks through the use of additional check bits to increase the number of minimum weighted codes in the hamming code H-matrix
CN113032178A (zh) 存储器控制器及快闪存储器的存取方法
CN105740088B (zh) 闪存数据纠错方法及装置
WO2003027849A2 (en) Double error correcting code system
CN110415753B (zh) 错误校正电路及操作该错误校正电路的方法
JP2019056955A (ja) メモリシステム
CN111490796B (zh) 基于动态翻转比特的置信传播译码方法
CN112398485B (zh) 一种无误码率纠一检二纠相邻码的校验矩阵生成方法
US20220255558A1 (en) Data error correction method, apparatus, device, and readable storage medium
CN115858235A (zh) 循环冗余检验处理方法及装置、电路、电子设备和介质
CN107301881B (zh) 一种基于4位相邻和3位突发纠错码的sram存储器抗辐射加固方法及存储器系统
CN110941505A (zh) 产生错误校正电路的方法
CN103151078B (zh) 一种存储器检错纠错码生成方法
CN110661535A (zh) 一种提高Turbo译码性能的方法、装置及计算机设备
KR20170064978A (ko) Raid 메모리의 여러 ecc 블록들 내의 데이터를 정정하기 위한 장치 및 방법
US9755667B1 (en) Methods and systems for parallelizing high throughput iterative decoders
CN116662063B (zh) 一种闪存的纠错配置方法、纠错方法、系统、设备及介质
US11652496B2 (en) Memory system and method for controlling non-volatile memory

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant