CN110928725B - 闪存中基于矩阵表示的多重置换码的构造及译码方法 - Google Patents

闪存中基于矩阵表示的多重置换码的构造及译码方法 Download PDF

Info

Publication number
CN110928725B
CN110928725B CN201911298104.4A CN201911298104A CN110928725B CN 110928725 B CN110928725 B CN 110928725B CN 201911298104 A CN201911298104 A CN 201911298104A CN 110928725 B CN110928725 B CN 110928725B
Authority
CN
China
Prior art keywords
permutation
code
error
matrix
code word
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
CN201911298104.4A
Other languages
English (en)
Other versions
CN110928725A (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.)
Xidian University
Original Assignee
Xidian University
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 Xidian University filed Critical Xidian University
Priority to CN201911298104.4A priority Critical patent/CN110928725B/zh
Publication of CN110928725A publication Critical patent/CN110928725A/zh
Application granted granted Critical
Publication of CN110928725B publication Critical patent/CN110928725B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • 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/27Coding, 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 using interleaving techniques
    • H03M13/2703Coding, 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 using interleaving techniques the interleaver involving at least two directions
    • H03M13/2707Simple row-column interleaver, i.e. pure block interleaving

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

本发明公开一种闪存中基于矩阵表示的多重置换码的构造及译码方法,多重置换码的构造步骤为:构造纠正1个SID错误的置换码;构造纠正1个PID错误的置换码;交织置换码字构造多重置换码字;交织置换码构造多重置换码。多重置换码的译码方法步骤为:产生闪存中的单元状态向量;从闪存中提取单元状态向量;判断是否发生单个BUD错误,若未发生则逐行等级解调单元状态向量矩阵得到多重置换码字矩阵,否则获得遭受1‑PID错误的置换码字,然后通过签名恢复置换码字,最后对置换码字逐行排列得到多重置换码字矩阵。本发明提高了纠单个BUD错误的多重置换码的码率,并简化了其译码方法。

Description

闪存中基于矩阵表示的多重置换码的构造及译码方法
技术领域
本发明属于计算机科学与技术领域,更进一步涉及闪存信道编码技术领域中一种闪存中基于矩阵表示的多重置换码的构造及译码方法。本发明可用于构造纠正闪存中单个突发不稳定删除BUD(burst unstable deletion)错误的多重置换码,以及实现对所构造的多重置换码进行纠正单个BUD错误的译码。
背景技术
随着MLC型闪存芯片存储容量的不断增长和封装尺寸的不断缩小,读/写干扰、电荷泄漏、单元间干扰和数据保持噪声等问题使得闪存中所存储的数据遭到损坏,从而导致闪速存储系统的可靠性问题更加突出。利用单元电荷间的相对值来存储信息,等级调制方案(Rank Modulation Scheme)可以避免闪存单元的过度编程(Cell Over-Programming)问题,并且降低闪存中非对称错误(Asymmetric Error)的影响,从而提高闪存数据存储的可靠性。因此,面向闪存的等级调制纠错码的构造及其译码方法已经成为近年来闪存信道编码领域广泛关注的研究热点。
与置换相比较,等级调制方案下多重置换的能够达到更高的信息速率。目前,针对纠正长度为t的单个突发不稳定删除(BUD)错误的多重置换码的主要研究工作如下。
Chee等人在其发表的论文“Burst-deletion-correcting codes forpermutations and multipermutations”(IEEE Trans.Inf.Theory,2019,PP.1-1.DOI:10.1109/TIT.2019.2933819)中提出一种能够纠正单个长度为t的BUD错误的多重置换码的构造及译码方法。该方法利用三类不同的同余类来约束多重置换码字的符号使得不稳定删除错误可以转化为稳定删除错误;然后,约束多重置换码字矩阵表示的第一行来确定单个突发删除错误发生的位置范围;最后,利用多重置换码字矩阵表示的相邻列约束来纠正单个长度为t的BUD错误。该方法存在的不足之处是,其构造过程中选择的多重置换码字必须同时满足同余类约束、多重置换码字矩阵表示的第一行约束和矩阵表示的相邻列约束这三重约束条件,从而限制了多重置换码的码字数量,使得该方法所构造的多重置换码的码率较低,而且其译码过程中需要逐条检测多重置换码字满足的约束条件,使得该多重置换码的译码方法比较复杂。
发明内容
本发明的目的在于针对上述已有技术的不足,提出一种闪存中基于矩阵表示的多重置换码的构造及译码方法,用于解决多重置换码的码率低,以及译码方法比较复杂的问题。
为了实现上述目的,本发明的思路是:将多重置换中一个长度为t的单个BUD问题分解为置换中单个置换不变删除PID的t个子问题,通过交织t个相同的纠单个PID错误的置换码,使得矩阵表示的多重置换码字中每一行为一个纠正单个PID错误的置换码字,从而增加了多重置换码的码字数量,提高了纠正单个BUD错误的多重置换码的码率,同时将纠正单个长度为t的BUD错误的多重置换码的译码分解为t个纠正1个PID错误的置换码的译码,从而将逐条检测多重置换码字满足的约束条件分解为检测置换码字满足的约束条件,大大简化了现有技术的纠正单个BUD错误的多重置换码的译码方法。
本发明的一种闪存中基于矩阵表示的多重置换码的构造方法的实现步骤如下所示:
步骤1,利用置换码构造公式,构造纠正1个符号不变删除SID错误的Levenshtein置换码;
步骤2,利用Levenshtein置换码构造纠正1个PID错误的置换码;
步骤3,交织置换码字构造t-平衡多重置换码字:
第一步,按照下式,确定待交织的t个纠单个PID错误置换码字中的每个元素在长度为tn的t-平衡多重置换码字中的位置:
Figure BDA0002321114890000021
其中,βj表示长度为tn的t-平衡多重置换码字中的第j个元素,t表示单个BUD错误的长度,n表示待交织的置换码字的长度,j的取值范围为偶数集合[1,nt],
Figure BDA0002321114890000022
表示待交织的纠单个PID错误置换码字中第i个置换码字πi的第
Figure BDA0002321114890000023
个元素,
Figure BDA0002321114890000024
表示向上取整操作,i≡j(modt),i的取值范围为集合[1,t],mod表示取模操作,πi表示置换码C(n,a)中的置换码字;
第二步,按照下式,构造长度为tn的t-平衡多重置换码字:
Figure BDA0002321114890000031
其中,β表示通过交替按序放置t个置换π12,…,πt的元素而交织产生的长度为tn的t-平衡多重置换码字,
Figure BDA0002321114890000032
表示置换交织操作;
第三步,将构造的长度为tn的t-平衡多重置换码字以矩阵形式表示:
Figure BDA0002321114890000033
其中,M(β)表示t-平衡多重置换码字β的按列表示的t×n矩阵,βt表示多重置换码字中的第t个元素,
Figure BDA0002321114890000034
表示定义符号;
步骤4,按照下式,通过交织t个相同的纠单个PID错误的置换码构造t-平衡多重置换码:
Figure BDA0002321114890000035
其中,CBUD(tn,a)表示纠单个长度为t的BUD错误的码长为tn的t-平衡多重置换码,a表示Levenshtein置换码
Figure BDA0002321114890000036
中的参数a。
本发明的一种闪存中基于矩阵表示的多重置换码的译码方法的实现步骤如下所示:
步骤1,产生闪存中的单元状态向量:
第一步,等级调制t-平衡多重置换码字,产生闪存中一个包含tn个单元的单元状态向量;
第二步,将单元状态向量按列表示为如下矩阵:
Figure BDA0002321114890000037
其中,M(c)表示单元状态向量的按列表示的t×n矩阵,c表示闪存中的一个单元状态向量,ct表示闪存中的一个单元状态向量中的第t个元素;
步骤2,从闪存中提取单元状态向量;
步骤3,判断提取的单元状态向量是否发生长度为t的单个BUD错误,若是,则执行步骤5,否则,执行步骤4;
步骤4,逐行等级解调单元状态向量按列表示的矩阵,得到与步骤1中单元状态向量所对应的t-平衡多重置换码字按列表示的矩阵后执行步骤10:
步骤5,获得初始迭代时遭受1-PID错误的t个置换码字:
第一步,将获得的单元状态向量按列表示为如下矩阵:
Figure BDA0002321114890000041
其中,
Figure BDA0002321114890000042
表示单元状态向量中的列方向连续发生t-BUD错误的按列表示的t×(n-1)矩阵,
Figure BDA0002321114890000043
表示闪存中发生t-BUD错误的单元状态向量,
Figure BDA0002321114890000044
表示闪存中发生t-BUD错误的单元状态向量
Figure BDA0002321114890000045
中的第t个元素;
第二步,逐行等级解调矩阵表示的单元状态向量,得到如下遭受1-PID错误的置换码字的矩阵表示形式:
Figure BDA0002321114890000046
其中,
Figure BDA0002321114890000047
表示遭受t-BUD错误的t-平衡多重置换码字
Figure BDA0002321114890000048
的按列表示的t×(n-1)矩阵形式,
Figure BDA0002321114890000049
表示
Figure BDA00023211148900000410
的第t个元素,
Figure BDA00023211148900000411
表示遭受了1-PID错误的t个置换码字;
步骤6,恢复正确置换码字的签名:
第一步,按照下式,确定遭受1-PID错误置换码字的签名:
Figure BDA0002321114890000051
其中,
Figure BDA0002321114890000052
表示第i次迭代时遭受1-PID错误置换码字
Figure BDA0002321114890000053
的签名
Figure BDA0002321114890000054
的第j个分量,
Figure BDA0002321114890000055
表示第i次迭代时遭受1-PID错误置换码字
Figure BDA0002321114890000056
的第j个分量;
第二步,利用与权利要求1中步骤1相同的置换码构造公式和当前迭代时遭受1-PID错误的置换码字的签名
Figure BDA0002321114890000057
确定正确置换码字的签名μ(πi);
步骤7,恢复遭受1-PID错误的置换码字:
第一步,取当前迭代时遭受1-PID错误的置换码字的中间元素
Figure BDA0002321114890000058
若中间元素
Figure BDA0002321114890000059
左半部分元素为偶数时将该元素的值加1,若中间元素
Figure BDA00023211148900000510
右半部分元素为奇数时将该元素的值加1,得到恢复当前迭代时遭受1-PID错误的置换码字的除中间元素外其他所有元素后的结果序列
Figure BDA00023211148900000511
其中,x表示结果序列中左半部分的元素序列,
Figure BDA00023211148900000512
表示结果序列的中间元素,y表示结果序列中右半部分的元素序列;
第二步,若结果序列
Figure BDA00023211148900000513
中的左半部分的元素序列x或右半部分的元素序列y中至少含有一个元素的值等于中间元素
Figure BDA00023211148900000514
的值,则将中间元素
Figure BDA00023211148900000515
的值加1得到序列
Figure BDA00023211148900000516
找到序列
Figure BDA00023211148900000517
中不存在但在集合{1,2,…,n}中存在的元素,将该元素称为删除元素,根据当前迭代时正确置换码字的签名μ(πi),将删除元素插入到序列
Figure BDA00023211148900000518
中得到正确的置换码字;否则,找到序列
Figure BDA00023211148900000519
中不存在但在集合{1,2,…,n}中存在的元素d,若
Figure BDA00023211148900000520
根据当前迭代时正确置换码字的签名μ(πi),将元素d插入到序列
Figure BDA00023211148900000521
中得到正确的置换码字;若
Figure BDA00023211148900000522
根据当前迭代时正确置换码字的签名μ(πi),将元素d插入到序列
Figure BDA00023211148900000523
中,若插入后的序列满足左半部分所有元素为奇数且右半部分所有元素为偶数的条件,则得到正确的置换码字,否则,将中间元素
Figure BDA00023211148900000524
与元素d交换位置后得到正确的置换码字;
步骤8,判断当前迭代的次数是否等于单个BUD错误的长度,若是,则执行步骤9,否则,执行步骤6;
步骤9,对所有正确的置换码字逐行排列,得到与步骤1中单元状态向量所对应的t-平衡多重置换码字按列表示的矩阵;
步骤10,译码成功。
本发明与现有技术相比具有以下优点:
第一,本发明的一种闪存中基于矩阵表示的多重置换码的构造方法,通过交织t个相同的纠单个PID错误的置换码构造t-平衡多重置换码,使得矩阵表示的多重置换码字中每一行为一个纠正单个PID错误的置换码字,克服了现有技术在构造t-平衡多重置换码过程中选择的多重置换码字必须同时满足同余类约束、多重置换码字矩阵表示的第一行约束和矩阵表示的相邻列约束这三重约束条件的缺点,使得本发明增加了纠正闪存中单个BUD错误的多重置换码的码字数量,提高了多重置换码的码率。
第二,本发明的一种闪存中基于矩阵表示的多重置换码的译码方法,通过获得初始迭代时遭受1-PID错误的t个置换码字,将多重置换中长度为t的单个BUD问题分解为置换中单个置换不变删除PID的t个子问题,克服了现有技术在对多重置换码译码过程中需要逐条检测多重置换码字满足的约束条件的缺点,使得本发明将逐条检测多重置换码字满足的约束条件分解为检测置换码字满足的约束条件,大大简化了纠正单个长度为t的BUD错误的多重置换码的译码方法。
附图说明
图1是本发明的一种闪存中基于矩阵表示的多重置换码的构造方法流程图;
图2是本发明的一种闪存中基于矩阵表示的多重置换码的译码方法流程图;
图3是本发明与现有方法所构造的纠正3-BUD错误的多重置换码的码率对比图。
具体实施方式
下面结合附图和实施例对本发明的具体步骤做进一步的描述。
参照附图1,对本发明的一种闪存中基于矩阵表示的多重置换码的构造方法的具体步骤做进一步的描述。
步骤1,利用下述置换码构造公式,构造纠正1个符号不变删除SID错误的Levenshtein置换码;
Figure BDA0002321114890000071
其中,
Figure BDA0002321114890000072
表示码长为n的线性同余方程值为a的纠正1个符号不变删除SID错误的Levenshtein置换码,n的取值范围为[1,∞),a的取值范围为{0,1,…,n-1},σ表示长度等于码长n的一个置换,∈表示属于符号,
Figure BDA0002321114890000078
表示集合{1,2,…,n}上所有置换的集合,:表示
Figure BDA0002321114890000079
中满足特定条件的置换σ,
Figure BDA0002321114890000073
表示Levenshtein置换码中码字满足的线性同余方程,Σ表示求和操作,i表示线性同余方程的权值,·表示相乘操作,μ(σ)i表示μ(σ)的第i个分量,μ(σ)表示置换σ的签名,≡表示同余关系,mod表示取模操作。
步骤2,利用Levenshtein置换码构造纠正1个PID错误的置换码;
所述的构造纠正1个PID错误的置换码是按照下式构造的:
Figure BDA0002321114890000074
其中,C(n,a)表示纠正1个PID错误的置换码,n表示置换码C(n,a)的码长,n的取值范围为偶数集合任意一个数,a表示Levenshtein置换码
Figure BDA0002321114890000075
中的参数,
Figure BDA0002321114890000076
表示步骤1构造的纠正1个SID错误的Levenshtein置换码,σ1表示C1中的一个置换码字,C1表示集合A1上所有置换的集合,A1表示集合{1,2,…,n}中所有奇数的集合,||表示置换码字的级联操作,σ2表示C2中的一个置换码字,C2表示集合A2上所有置换的集合,A2表示集合{1,2,…,n}中所有偶数的集合。
步骤3,交织置换码字构造t-平衡多重置换码字:
第一步,按照下式,确定待交织的t个纠单个PID错误置换码字中的每个元素在长度为tn的t-平衡多重置换码字中的位置:
Figure BDA0002321114890000077
其中,βj表示长度为tn的t-平衡多重置换码字中的第j个元素,t表示单个BUD错误的长度,n表示待交织的置换码字的长度,j的取值范围为偶数集合[1,nt],
Figure BDA0002321114890000081
表示待交织的纠单个PID错误置换码字中第i个置换码字πi的第
Figure BDA0002321114890000082
个元素,
Figure BDA0002321114890000083
表示向上取整操作,i≡j(modt),i的取值范围为集合[1,t],mod表示取模操作,πi表示置换码C(n,a)中的置换码字。
第二步,按照下式,构造长度为tn的t-平衡多重置换码字:
Figure BDA0002321114890000084
其中,β表示通过交替按序放置t个置换π12,…,πt的元素而交织产生的长度为tn的t-平衡多重置换码字,
Figure BDA0002321114890000085
表示置换交织操作。
第三步,将构造的长度为tn的t-平衡多重置换码字以矩阵形式表示:
Figure BDA0002321114890000086
其中,M(β)表示t-平衡多重置换码字β的按列表示的t×n矩阵,βt表示多重置换码字中的第t个元素,
Figure BDA0002321114890000087
表示定义符号。
步骤4,按照下式,通过交织t个相同的纠单个PID错误的置换码构造t-平衡多重置换码:
Figure BDA0002321114890000088
其中,CBUD(tn,a)表示纠单个长度为t的BUD错误的码长为tn的t-平衡多重置换码,a表示Levenshtein置换码
Figure BDA0002321114890000089
中的参数a。
参照附图2,对本发明的一种闪存中基于矩阵表示的多重置换码的译码方法的具体步骤做进一步的描述。
步骤1,产生闪存中的单元状态向量。
第一步,等级调制t-平衡多重置换码字,产生闪存中一个包含tn个单元的单元状态向量。
第二步,将单元状态向量按列表示为如下矩阵:
Figure BDA0002321114890000091
其中,M(c)表示单元状态向量的按列表示的t×n矩阵,c表示闪存中的一个单元状态向量,ct表示闪存中的一个单元状态向量中的第t个元素。
步骤2,从闪存中提取单元状态向量。
步骤3,判断提取的单元状态向量是否发生长度为t的单个BUD错误,若是,则执行步骤5,否则,执行步骤4。
步骤4,逐行等级解调单元状态向量按列表示的矩阵,得到与步骤1中单元状态向量所对应的t-平衡多重置换码字按列表示的矩阵后执行步骤10。
步骤5,获得初始迭代时遭受1-PID错误的t个置换码字。
第一步,将获得的单元状态向量按列表示为如下矩阵:
Figure BDA0002321114890000092
其中,
Figure BDA0002321114890000093
表示单元状态向量中的列方向连续发生t-BUD错误的按列表示的t×(n-1)矩阵,
Figure BDA0002321114890000094
表示闪存中发生t-BUD错误的单元状态向量,
Figure BDA0002321114890000095
表示闪存中发生t-BUD错误的单元状态向量
Figure BDA0002321114890000096
中的第t个元素。
第二步,逐行等级解调矩阵表示的单元状态向量,得到如下遭受1-PID错误的置换码字的矩阵表示形式:
Figure BDA0002321114890000097
其中,
Figure BDA0002321114890000101
表示遭受t-BUD错误的t-平衡多重置换码字
Figure BDA0002321114890000102
的按列表示的t×(n-1)矩阵形式,
Figure BDA0002321114890000103
表示
Figure BDA0002321114890000104
的第t个元素,
Figure BDA0002321114890000105
表示遭受了1-PID错误的t个置换码字。
步骤6,恢复正确置换码字的签名。
第一步,按照下式,确定遭受1-PID错误置换码字的签名:
Figure BDA0002321114890000106
其中,
Figure BDA0002321114890000107
表示第i次迭代时遭受1-PID错误置换码字
Figure BDA0002321114890000108
的签名
Figure BDA0002321114890000109
的第j个分量,
Figure BDA00023211148900001010
表示第i次迭代时遭受1-PID错误置换码字
Figure BDA00023211148900001011
的第j个分量。
第二步,利用置换码构造公式和当前迭代时遭受1-PID错误的置换码字的签名
Figure BDA00023211148900001012
确定正确置换码字的签名μ(πi)。
所述的置换码构造公式如下:
Figure BDA00023211148900001013
其中,
Figure BDA00023211148900001014
表示码长为n的线性同余方程值为a的纠正1个符号不变删除SID错误的Levenshtein置换码,n的取值范围为[1,∞),a的取值范围为{0,1,…,n-1},σ表示长度等于码长n的一个置换,∈表示属于符号,
Figure BDA00023211148900001019
表示集合{1,2,…,n}上所有置换的集合,:表示
Figure BDA00023211148900001020
中满足特定条件的置换σ,
Figure BDA00023211148900001015
表示Levenshtein置换码中码字满足的线性同余方程,Σ表示求和操作,i表示线性同余方程的权值,·表示相乘操作,μ(σ)i表示μ(σ)的第i个分量,μ(σ)表示置换σ的签名,≡表示同余关系,mod表示取模操作。
步骤7,恢复遭受1-PID错误的置换码字。
第一步,取当前迭代时遭受1-PID错误的置换码字的中间元素
Figure BDA00023211148900001016
若中间元素
Figure BDA00023211148900001017
左半部分元素为偶数时将该元素的值加1,若中间元素
Figure BDA00023211148900001018
右半部分元素为奇数时将该元素的值加1,得到恢复当前迭代时遭受1-PID错误的置换码字的除中间元素外其他所有元素后的结果序列
Figure BDA0002321114890000111
其中,x表示结果序列中左半部分的元素序列,
Figure BDA0002321114890000112
表示结果序列的中间元素,y表示结果序列中右半部分的元素序列。
第二步,若结果序列
Figure BDA0002321114890000113
中的左半部分的元素序列x或右半部分的元素序列y中至少含有一个元素的值等于中间元素
Figure BDA0002321114890000114
的值,则将中间元素
Figure BDA0002321114890000115
的值加1得到序列
Figure BDA0002321114890000116
找到序列
Figure BDA0002321114890000117
中不存在但在集合{1,2,…,n}中存在的元素,将该元素称为删除元素,根据当前迭代时正确置换码字的签名μ(πi),将删除元素插入到序列
Figure BDA0002321114890000118
中得到正确的置换码字;否则,找到序列
Figure BDA0002321114890000119
中不存在但在集合{1,2,…,n}中存在的元素d,若
Figure BDA00023211148900001110
根据当前迭代时正确置换码字的签名μ(πi),将元素d插入到序列
Figure BDA00023211148900001111
中得到正确的置换码字;若
Figure BDA00023211148900001112
根据当前迭代时正确置换码字的签名μ(πi),将元素d插入到序列
Figure BDA00023211148900001113
中,若插入后的序列满足左半部分所有元素为奇数且右半部分所有元素为偶数的条件,则得到正确的置换码字,否则,将中间元素
Figure BDA00023211148900001114
与元素d交换位置后得到正确的置换码字。
步骤8,判断当前迭代的次数是否等于单个BUD错误的长度,若是,则执行步骤9,否则,执行步骤6。
步骤9,对所有正确的置换码字逐行排列,得到与步骤1中单元状态向量所对应的t-平衡多重置换码字按列表示的矩阵。
步骤10,译码成功。
下面结合本发明的实施例,对本发明的效果做进一步的描述。
步骤1,利用如下公式,构造纠正1个SID错误的Levenshtein置换码:
Figure BDA00023211148900001115
其中,
Figure BDA00023211148900001116
表示码长为8的线性同余方程值为0的纠正1个符号不变删除SID错误的Levenshtein置换码,σ表示长度等于8的一个置换,∈表示属于符号,
Figure BDA0002321114890000128
表示集合{1,2,3,4,5,6,7,8}上所有置换的集合,:表示
Figure BDA0002321114890000129
中满足特定条件的置换σ,
Figure BDA0002321114890000121
表示Levenshtein置换码中码字满足的线性同余方程,Σ表示求和操作,i表示线性同余方程的权值,·表示相乘操作,μ(σ)i表示μ(σ)的第i个分量,μ(σ)表示置换σ的签名,≡表示同余关系,mod表示取模操作。
步骤2,按照下式,构造纠正1个PID错误的置换码:
Figure BDA0002321114890000122
其中,C(8,0)表示纠正1个PID错误的码长为8的置换码,σ1表示C1中的一个置换码字,C1表示集合{1,3,5,7}上所有置换的集合,||表示置换码字的级联操作,σ2表示C2中的一个置换码字,C2表示集合{2,4,6,8}上所有置换的集合。
步骤3,交织置换码字构造4-平衡多重置换码字:
第一步,按照下式,确定待交织的4个纠单个PID错误置换码字中的每个元素在长度为32的4-平衡多重置换码字中的位置:
Figure BDA0002321114890000123
其中,βj表示长度为32的纠单个长度为4的BUD错误的4-平衡多重置换码字中的第j个元素,j的取值范围为集合[1,32],
Figure BDA0002321114890000124
表示待交织的纠单个PID错误置换码字中第i个置换码字πi的第
Figure BDA0002321114890000125
个元素,
Figure BDA0002321114890000126
表示向上取整操作,i≡j(mod4),i的取值范围为集合[1,4],mod表示取模操作,πi表示置换码C(8,0)中的置换码字。
第二步,按照下式,通过交织4个置换码字构造长度为32的4-平衡多重置换码字:
Figure BDA0002321114890000127
其中,β表示通过交替按序放置4个置换码字π1234的元素而交织产生的长度为32的4-平衡多重置换码字,π1=(1,3,5,7,2,4,6,8)、π2=(1,3,7,5,4,2,6,8)、π3=(5,3,1,7,6,2,4,8)和π4=(1,5,3,7,8,6,4,2)均为C(8,0)中的置换码字,
Figure BDA0002321114890000131
表示置换交织操作。
第三步,将构造的长度为32的4-平衡多重置换码字以按列的矩阵形式表示:
Figure BDA0002321114890000132
其中,M4,8(β)表示4-平衡多重置换码字β按列表示的4×8矩阵,
Figure BDA0002321114890000133
表示定义符号。
步骤4,按照下式,通过交织4个相同的纠单个PID错误的置换码构造4-平衡多重置换码:
Figure BDA0002321114890000134
其中,CBUD(32,0)表示纠4-BUD错误的码长为32的4-平衡多重置换码,0表示Levenshtein置换码
Figure BDA0002321114890000135
中的参数0。
步骤5,产生闪存中的单元状态向量:
第一步,等级调制步骤3中的4-平衡多重置换码字β,产生闪存中一个包含32个单元的单元状态向量(0.83,0.81,0.41,0.83,0.62,0.61,0.63,0.43,0.41,0.22,0.80,0.64,0.24,0.42,0.20,0.22,0.73,0.53,0.33,0.12,0.54,0.71,0.70,0.33,0.32,0.31,0.51,0.52,0.12,0.11,0.11,0.72)。
第二步,将所得单元状态向量按列表示为如下矩阵:
Figure BDA0002321114890000136
其中,M4,8(c)表示单元状态向量按列表示的4×8矩阵,c表示闪存中的一个单元状态向量。
步骤6,从闪存中提取单元状态向量。
步骤7,假设提取的单元状态向量在下划线处发生单个长度为4的BUD错误,执行步骤8。
步骤8,获得初始迭代时遭受1-PID错误的4个置换码字。
第一步,将将获得的单元状态向量按列表示为如下矩阵:
Figure BDA0002321114890000141
其中,
Figure BDA0002321114890000142
表示单元状态向量中的列方向连续发生4-BUD错误的按列表示的4×7矩阵,
Figure BDA0002321114890000143
表示在位置[9,12]发生4-BUD错误的单元状态向量。
第二步,逐行等级解调矩阵表示的单元状态向量,得到如下遭受1-PID错误的置换码字的矩阵表示形式:
Figure BDA0002321114890000144
其中,
Figure BDA0002321114890000145
表示遭受4-BUD错误的4-平衡多重置换码字
Figure BDA0002321114890000146
的按列表示的4×7矩阵,
Figure BDA0002321114890000147
表示遭受了1-PID错误的4个置换码字。
步骤9,恢复正确置换码字的签名。
现在以恢复遭受了1-PID错误的置换码字
Figure BDA0002321114890000148
为例说明恢复过程。首先确定遭受了1-PID错误的置换码字
Figure BDA0002321114890000149
的签名
Figure BDA00023211148900001410
为(1,1,0,1,1,1),利用纠正1个SID错误的Levenshtein置换码
Figure BDA00023211148900001411
的构造公式和遭受了1-PID错误的置换码字
Figure BDA00023211148900001412
的签名,确定正确置换码字的签名μ(π1)为(1,1,1,0,1,1,1)。
所述的遭受1-PID错误的置换码字的签名
Figure BDA00023211148900001413
是按照下式确定的:
Figure BDA00023211148900001414
其中,
Figure BDA0002321114890000151
表示遭受1-PID错误置换码字
Figure BDA0002321114890000152
的签名
Figure BDA0002321114890000153
的第j个分量,
Figure BDA0002321114890000154
表示遭受1-PID错误置换码字
Figure BDA0002321114890000155
的第j个分量。
步骤10,恢复遭受1-PID错误的置换码字。
第一步,取当前迭代遭受1-PID错误的置换码字
Figure BDA0002321114890000156
的中间元素2,若中间元素2左半部分元素为偶数时将该元素的值加1,若中间元素2右半部分元素为奇数时将该元素的值加1,得到恢复当前迭代时遭受1-PID错误的置换码字的除中间元素外其他所有元素后的结果序列(1,3,7,2,4,6,8)。
第二步,结果序列(1,3,7,2,4,6,8)中的左半部分的元素序列或右半部分的元素序列中未含有一个元素的值等于中间元素2,因此,找到序列(1,3,7,2,4,6,8)中不存在但在集合{1,2,3,4,5,6,7,8}中存在的元素5,满足|5-2|≥2的条件,根据正确置换码字的签名μ(π1)=(1,1,1,0,1,1,1),将元素5插入到序列(1,3,7,2,4,6,8)中得到正确的置换码字π1=(1,3,5,7,2,4,6,8)。
步骤11,与恢复遭受了1-PID错误的置换码字
Figure BDA0002321114890000157
的过程一样,分别恢复遭受了1-PID错误的置换码字
Figure BDA0002321114890000158
得到正确的置换码字π2=(1,3,7,5,4,2,6,8),π3=(5,3,1,7,6,2,4,8)和π4=(1,5,3,7,8,6,4,2)。
步骤12,对所有正确的置换码字π1234逐行排列,得到与步骤5中单元状态向量所对应的4-平衡多重置换码字按列表示的矩阵。
下面结合仿真实验对本发明的效果做进一步的说明:
1.仿真实验条件:
本发明的仿真实验的硬件平台为:处理器为Intel i7 5930k CPU,主频为3.5GH,内存16GB。
本发明的仿真实验的软件平台为:Windows 7操作系统,MATLAB 2017。
2.仿真内容及其结果分析:
本发明仿真实验是采用本发明和现有技术方法分别针对单个BUD错误长度为3时构造多重置换码,然后根据本发明与现有方法所构造的纠正3-BUD错误的多重置换码分别计算出13个不同码长的多重置换码的码率,再分别根据多重置换码的码率画出码率随码长变化的曲线图,最后获得码率结果对比图如图3所示。
在仿真实验中,采用的一个现有技术是指:
Chee等人在其发表的论文“Burst-deletion-correcting codes forpermutations and multipermutations”(IEEE Trans.Inf.Theory,2019,DOI:10.1109/TIT.2019.2933819)中提出了一种能够纠正单个长度为t的BUD错误的多重置换码的构造方法。
下面结合图3对本发明的效果做进一步的描述。
图3是本发明与现有方法所构造的纠正3-BUD错误的多重置换码的码率对比图。图3表示针对单个BUD错误长度为3时,现有技术所构造的纠3-BUD错误的多重置换码与本发明所构造的纠3-BUD错误的多重置换码的码率结果对比图。图3中的横坐标表示纠3-BUD错误的多重置换码长,对应的码长范围为[10,90],纵坐标表示由两种构造方法得到的多重置换码的码率。图3中根据本发明与现有方法所构造的纠正3-BUD错误的多重置换码分别计算出13个不同码长的多重置换码的码率,然后分别根据多重置换码的码率画出码率随码长变化的曲线图,图3中以三角形标示的曲线表示现有方法所构造的纠3-BUD错误的多重置换码的码率随码长变化的曲线。图3中以圆圈标示的曲线表示本发明所构造的纠3-BUD错误的多重置换码的码率随码长变化的曲线。
由图3可以看出,与现有技术构造的纠3-BUD错误的多重置换码相比,本发明提出的构造方法所构造的纠3-BUD错误的多重置换码在码长小于90时可以达到更高的码率。

Claims (2)

1.一种闪存中基于矩阵表示的多重置换码的构造方法,其特征在于,通过交织t个相同的纠单个PID错误的置换码构造t-平衡多重置换码,该方法的步骤包括如下:
步骤1,利用下述置换码构造公式,构造纠正1个符号不变删除SID错误的Levenshtein置换码:
Figure FDA0003039687290000011
其中,
Figure FDA0003039687290000012
表示码长为n的线性同余方程值为a的纠正1个符号不变删除SID错误的Levenshtein置换码,n的取值范围为[1,∞),a的取值范围为{0,1,…,n-1},σ表示长度等于码长n的一个置换,∈表示属于符号,
Figure FDA0003039687290000013
表示集合{1,2,…,n}上所有置换的集合,:表示
Figure FDA0003039687290000014
中满足特定条件的置换σ,
Figure FDA0003039687290000015
表示Levenshtein置换码中码字满足的线性同余方程,Σ表示求和操作,i表示线性同余方程的权值,·表示相乘操作,μ(σ)i表示μ(σ)的第i个分量,μ(σ)表示置换σ的签名,≡表示同余关系,mod表示取模操作;
步骤2,利用Levenshtein置换码构造纠正1个PID错误的置换码;
所述的构造纠正1个PID错误的置换码是按照下式构造的:
Figure FDA0003039687290000016
其中,C(n,a)表示纠正1个PID错误的置换码,n表示置换码C(n,a)的码长,n的取值范围为偶数集合任意一个数,a表示Levenshtein置换码
Figure FDA0003039687290000017
中的参数,
Figure FDA0003039687290000018
表示步骤1构造的纠正1个SID错误的Levenshtein置换码,σ1表示C1中的一个置换码字,C1表示集合A1上所有置换的集合,A1表示集合{1,2,…,n}中所有奇数的集合,||表示置换码字的级联操作,σ2表示C2中的一个置换码字,C2表示集合A2上所有置换的集合,A2表示集合{1,2,…,n}中所有偶数的集合;
步骤3,交织置换码字构造t-平衡多重置换码字:
第一步,按照下式,确定待交织的t个纠单个PID错误置换码字中的每个元素在长度为tn的t-平衡多重置换码字中的位置:
Figure FDA0003039687290000021
其中,βj表示长度为tn的t-平衡多重置换码字中的第j个元素,t表示单个BUD错误的长度,n表示待交织的置换码字的长度,j的取值范围为偶数集合[1,nt],
Figure FDA0003039687290000022
表示待交织的纠单个PID错误置换码字中第i个置换码字πi的第
Figure FDA0003039687290000023
个元素,
Figure FDA0003039687290000024
表示向上取整操作,i≡j(modt),i的取值范围为集合[1,t],mod表示取模操作,πi表示置换码C(n,a)中的置换码字;
第二步,按照下式,构造长度为tn的t-平衡多重置换码字:
Figure FDA0003039687290000025
其中,β表示通过交替按序放置t个置换π12,…,πt的元素而交织产生的长度为tn的t-平衡多重置换码字,
Figure FDA0003039687290000026
表示置换交织操作;
第三步,将构造的长度为tn的t-平衡多重置换码字以矩阵形式表示:
Figure FDA0003039687290000027
其中,M(β)表示t-平衡多重置换码字β的按列表示的t×n矩阵,βt表示多重置换码字中的第t个元素,
Figure FDA0003039687290000028
表示定义符号;
步骤4,按照下式,通过交织t个相同的纠单个PID错误的置换码构造t-平衡多重置换码:
Figure FDA0003039687290000029
其中,CBUD(tn,a)表示纠单个长度为t的BUD错误的码长为tn的t-平衡多重置换码,a表示Levenshtein置换码
Figure FDA00030396872900000210
中的参数a。
2.根据权利要求1所述方法构造的一种闪存中基于矩阵表示的多重置换码的译码方法,其步骤包括如下:
步骤1,产生闪存中的单元状态向量:
第一步,等级调制t-平衡多重置换码字,产生闪存中一个包含tn个单元的单元状态向量;
第二步,将单元状态向量按列表示为如下矩阵:
Figure FDA0003039687290000031
其中,M(c)表示单元状态向量的按列表示的t×n矩阵,c表示闪存中的一个单元状态向量,ct表示闪存中的一个单元状态向量中的第t个元素;
步骤2,从闪存中提取单元状态向量;
步骤3,判断提取的单元状态向量是否发生长度为t的单个BUD错误,若是,则执行步骤5,否则,执行步骤4;
步骤4,逐行等级解调单元状态向量按列表示的矩阵,得到与步骤1中单元状态向量所对应的t-平衡多重置换码字按列表示的矩阵后执行步骤10:
步骤5,获得初始迭代时遭受1-PID错误的t个置换码字:
第一步,将获得的单元状态向量按列表示为如下矩阵:
Figure FDA0003039687290000032
其中,
Figure FDA0003039687290000033
表示单元状态向量中的列方向连续发生t-BUD错误的按列表示的t×(n-1)矩阵,
Figure FDA0003039687290000034
表示闪存中发生t-BUD错误的单元状态向量,
Figure FDA0003039687290000035
表示闪存中发生t-BUD错误的单元状态向量
Figure FDA0003039687290000036
中的第t个元素;
第二步,逐行等级解调矩阵表示的单元状态向量,得到如下遭受1-PID错误的置换码字的矩阵表示形式:
Figure FDA0003039687290000037
其中,
Figure FDA0003039687290000041
表示遭受t-BUD错误的t-平衡多重置换码字
Figure FDA0003039687290000042
的按列表示的t×(n-1)矩阵形式,
Figure FDA0003039687290000043
表示
Figure FDA0003039687290000044
的第t个元素,
Figure FDA0003039687290000045
表示遭受了1-PID错误的t个置换码字;
步骤6,恢复正确置换码字的签名:
第一步,按照下式,确定遭受1-PID错误置换码字的签名:
Figure FDA0003039687290000046
其中,
Figure FDA0003039687290000047
表示第i次迭代时遭受1-PID错误置换码字
Figure FDA0003039687290000048
的签名
Figure FDA0003039687290000049
的第j个分量,
Figure FDA00030396872900000410
表示第i次迭代时遭受1-PID错误置换码字
Figure FDA00030396872900000411
的第j个分量;
第二步,利用与权利要求1中步骤1相同的置换码构造公式和当前迭代时遭受1-PID错误的置换码字的签名
Figure FDA00030396872900000412
确定正确置换码字的签名μ(πi);
步骤7,恢复遭受1-PID错误的置换码字:
第一步,取当前迭代时遭受1-PID错误的置换码字的中间元素
Figure FDA00030396872900000413
若中间元素
Figure FDA00030396872900000414
左半部分元素为偶数时将该元素的值加1,若中间元素
Figure FDA00030396872900000415
右半部分元素为奇数时将该元素的值加1,得到恢复当前迭代时遭受1-PID错误的置换码字的除中间元素外其他所有元素后的结果序列
Figure FDA00030396872900000416
其中,x表示结果序列中左半部分的元素序列,
Figure FDA00030396872900000417
表示结果序列的中间元素,y表示结果序列中右半部分的元素序列;
第二步,若结果序列
Figure FDA00030396872900000418
中的左半部分的元素序列x或右半部分的元素序列y中至少含有一个元素的值等于中间元素
Figure FDA00030396872900000419
的值,则将中间元素
Figure FDA00030396872900000420
的值加1得到序列
Figure FDA00030396872900000421
找到序列
Figure FDA00030396872900000422
中不存在但在集合{1,2,…,n}中存在的元素,将该元素称为删除元素,根据当前迭代时正确置换码字的签名μ(πi),将删除元素插入到序列
Figure FDA00030396872900000423
中得到正确的置换码字;否则,找到序列
Figure FDA00030396872900000424
中不存在但在集合{1,2,…,n}中存在的元素d,若
Figure FDA00030396872900000425
根据当前迭代时正确置换码字的签名μ(πi),将元素d插入到序列
Figure FDA0003039687290000051
中得到正确的置换码字;若
Figure FDA0003039687290000052
根据当前迭代时正确置换码字的签名μ(πi),将元素d插入到序列
Figure FDA0003039687290000053
中,若插入后的序列满足左半部分所有元素为奇数且右半部分所有元素为偶数的条件,则得到正确的置换码字,否则,将中间元素
Figure FDA0003039687290000054
与元素d交换位置后得到正确的置换码字;
步骤8,判断当前迭代的次数是否等于单个BUD错误的长度,若是,则执行步骤9,否则,执行步骤6;
步骤9,对所有正确的置换码字逐行排列,得到与步骤1中单元状态向量所对应的t-平衡多重置换码字按列表示的矩阵;
步骤10,译码成功。
CN201911298104.4A 2019-12-17 2019-12-17 闪存中基于矩阵表示的多重置换码的构造及译码方法 Active CN110928725B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911298104.4A CN110928725B (zh) 2019-12-17 2019-12-17 闪存中基于矩阵表示的多重置换码的构造及译码方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911298104.4A CN110928725B (zh) 2019-12-17 2019-12-17 闪存中基于矩阵表示的多重置换码的构造及译码方法

Publications (2)

Publication Number Publication Date
CN110928725A CN110928725A (zh) 2020-03-27
CN110928725B true CN110928725B (zh) 2021-06-25

Family

ID=69862865

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911298104.4A Active CN110928725B (zh) 2019-12-17 2019-12-17 闪存中基于矩阵表示的多重置换码的构造及译码方法

Country Status (1)

Country Link
CN (1) CN110928725B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107545066A (zh) * 2011-12-08 2018-01-05 甲骨文国际公司 用于在易失性存储器内保持关系型数据的列向量的技术
CN110557125A (zh) * 2018-06-04 2019-12-10 爱思开海力士有限公司 奇偶校验矩阵生成器、其操作方法和错误校正电路

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7599348B2 (en) * 2003-11-04 2009-10-06 Lg Electronics Inc. Digital E8-VSB reception system and E8-VSB data demultiplexing method
CA2928051C (en) * 2005-07-15 2018-07-24 Indxit Systems, Inc. Systems and methods for data indexing and processing
US9558101B2 (en) * 2014-08-08 2017-01-31 Raytheon Company Preprocessor directive symbol analyzer devices and methods
CN105680992B (zh) * 2016-01-26 2019-05-03 华中科技大学 一种通信信道编码方法及置换码集合产生器

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107545066A (zh) * 2011-12-08 2018-01-05 甲骨文国际公司 用于在易失性存储器内保持关系型数据的列向量的技术
CN110557125A (zh) * 2018-06-04 2019-12-10 爱思开海力士有限公司 奇偶校验矩阵生成器、其操作方法和错误校正电路

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
切比雪夫距离下系统置换码的编译码算法;慕建君等;《西安电子科技大学学报(自然科学版)》;20181231;全文 *
切比雪夫距离度量下多重置换码的新构造方法;慕建君等;《西安电子科技大学学报(自然科学版)》;20181231;全文 *
面向闪存的等级调制纠错码构造与译码方法研究;赵鹏;《中国博士学位论文全文数据库(信息科技辑)》;20180115;全文 *

Also Published As

Publication number Publication date
CN110928725A (zh) 2020-03-27

Similar Documents

Publication Publication Date Title
US10146618B2 (en) Distributed data storage with reduced storage overhead using reduced-dependency erasure codes
CN103888148B (zh) 一种动态阈值比特翻转的ldpc码硬判决译码方法
EP0426657B1 (en) Method and apparatus for decoding error correction code
TWI613674B (zh) 在具有選擇性二元及非二元解碼之快閃記憶體中之偵測及解碼
CN1040698A (zh) 错误校正电路
CN101946230B (zh) 用于检测和校正所接收的符号串中的定相突发差错、删除、符号差错和位差错的方法和系统
US9419651B2 (en) Non-polynomial processing unit for soft-decision error correction coding
US8566679B2 (en) Error-correcting encoding method with total parity bits, and method for detecting multiple errors
JP2011198253A (ja) メモリシステム及びメモリシステムのデータ書き込み・読み出し方法
CN100512020C (zh) 一种译码方法及译码装置
CN114328000B (zh) 1型2型分段纠错内码的dna存储级联编码与解码方法
JPS6349245B2 (zh)
KR101562606B1 (ko) 이진 데이터의 오류 정정 및 오류 검출 방법
CN110928725B (zh) 闪存中基于矩阵表示的多重置换码的构造及译码方法
US20060010363A1 (en) Method and system for correcting low latency errors in read and write non volatile memories, particularly of the flash type
US20170161141A1 (en) Method and apparatus for correcting data in multiple ecc blocks of raid memory
CN103151078A (zh) 一种存储器检错纠错码生成方法
Wolf An introduction to tensor product codes and applications to digital storage systems
CN109935263A (zh) 非易失性存储器的编译码方法及存储系统
CN112000509B (zh) 一种基于向量指令的纠删码编码方法、系统及装置
CN109379088B (zh) 一种并行Turbo码迭代译码的方法及系统
CN113300723A (zh) 基于最大似然删除位置搜索的mgc码快速译码方法
CN113114273B (zh) Ldpc码的校验矩阵提取方法及系统、设备
RU2297030C2 (ru) Самокорректирующееся устройство хранения информации
CN117609488B (zh) 小重量码字的搜索方法、装置、计算机存储介质及终端

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