CN107688506B - 一种流水结构的bch译码*** - Google Patents
一种流水结构的bch译码*** Download PDFInfo
- Publication number
- CN107688506B CN107688506B CN201710769471.2A CN201710769471A CN107688506B CN 107688506 B CN107688506 B CN 107688506B CN 201710769471 A CN201710769471 A CN 201710769471A CN 107688506 B CN107688506 B CN 107688506B
- Authority
- CN
- China
- Prior art keywords
- parallel
- module
- key equation
- data
- bch decoding
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1068—Adding 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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
- H03M13/152—Bose-Chaudhuri-Hocquenghem [BCH] codes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Error Detection And Correction (AREA)
Abstract
本发明公开了一种流水结构的BCH译码***,属于计算机存储纠错技术领域。本发明***包括:并行校正子计算模块,用于根据接受到的数据并行计算校正子;关键方程求解‑并行钱氏搜索模块,用于根据校正子计算出关键方程,并找出关键方程的解;FIFO存储器模块,用于缓存从NAND Flash芯片中读出的数据,并在计算关键方程的解时,逐步输出FIFO存储器模块中的数据;BCH译码控制器模块,用于实现BCH译码两级流水线的并行执行。本发明***通过复用BCH译码器中不同模块中的硬件资源,采用并行流水结构进行BCH译码,能够有效增加BCH译码的吞吐率和降低硬件开销。
Description
技术领域
本发明属于计算机存储纠错领域领域,更具体地,涉及一种流水结构的BCH译码***。
背景技术
随着以NAND Flash为介质的非易失存储设备的广泛应用,单层NAND Flash已经无法满足大容量、低成本存储器的要求,新一代多层存储器单位成本低、存储密度高、存储容量大,越来越多地应用于非易失存储***中,然而由于芯片工艺制程和相邻编程级别的距离越来越小,NAND Flash的原始误比特率(RBER)急剧增加,传统的纠错码已经无法满足可靠性要求。BCH(Bose,Ray-Chaudhuri,Hocquenghem)码作为一种循环码,其性能优良、结构简单,是一种广泛应用于存储***的纠错码技术。当向NAND Flash芯片写入数据时,原始数据经过8位并行BCH编码器,完成数据编码后写入NAND Flash芯片,当从NAND Flash芯片读数据时,从芯片中8位并行的读出数据,并同时输入到BCH译码器,如果存储的数据错误数量小于BCH码能够纠正的最大错误数量,则输出正确的原始数据,如果数据错误数量高于BCH码能够纠正的最大错误数量则报告译码失败。
BCH码的编码过程较为简单,使用线性反馈移位寄存器(LFSR)实现。BCH码的译码过程,主要分为三个步骤,分别是校正子计算、关键方程求解和钱氏搜索。其中关键方程求解过程复杂,消耗了大量的硬件逻辑资源,是BCH译码电路中的核心模块,目前的研究主要集中于减少关键方程求解电路的实现复杂度,而提升BCH译码器的译码速度主要通过并行化的方式来实现,通过并行化译码过程中的校正子计算和钱氏搜索算法,可以显著的改善BCH的译码速度。然而分立的研究BCH译码器的各个模块,并没有从整体中考虑BCH译码器中的电路资源共享,造成了大量的硬件资源开销。目前有研究团队提出了一种共享硬件资源的校正子-钱氏搜索块电路结构,可以降低BCH译码器的整体硬件复杂度,但是无法实现译码过程的流水方式执行,制约了性能的提高。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种流水结构的BCH译码***,其目的在于从整体上考虑BCH译码器的硬件设计和SSD存储设备中数据读取的特点,通过复用BCH译码器中不同模块中的硬件资源,采用并行流水结构进行BCH译码,由此降低BCH译码器的硬件开销,提高BCH译码器的译码速度。
为实现上述目的,按照本发明的一个方面,提供了一种流水结构的BCH译码***,所述***包括:
并行校正子计算模块,用于根据接收到的数据并行计算校正子;
关键方程求解-并行钱氏搜索模块,用于根据校正子计算出关键方程,并通过搜索关键方程根找出关键方程的解,在计算出关键方程和搜索关键方程根的过程中复用有限域乘法器;
FIFO存储器模块,用于缓存从NAND Flash芯片中读出的数据,并在计算关键方程的解时,逐步输出FIFO存储器模块中的数据;
BCH译码控制器模块,用于实现BCH译码两级流水线的并行执行:在流水线的第一级,从NAND Flash芯片读出数据并同时写入到并行校正子计算模块和FIFO存储器模块中;在流水线的第二级,将并行校正子计算模块中得到的校正子输入到关键方程求解-并行钱氏搜索模块中,逐步输出FIFO存储器模块中的数据,并根据得到的关键方程的解纠正FIFO存储器模块中输出的错误数据。
进一步地,所述并行校正子计算模块具体用于:
接受从NAND Flash芯片读出数据,根据读出的数据并行的计算出数据对应的最小多项式的余式,并根据余式计算出对应的校正子的值。
进一步地,所述关键方程求解-并行钱氏搜索模块具体用于使用SIBM算法计算出关键方程,使用钱氏搜索算法搜索关键方程根。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下技术特征及有益效果:
(1)通过在计算出关键方程和搜索关键方程根的过程中复用有限域乘法器降低译码的硬件开销;
(2)实现了BCH译码两级流水线的并行执行,提高了译码效率吞吐率。
附图说明
图1是本发明技术方案的实施例的结构示意图;
图2是本发明实施例的并行校正子模块电路示意图
图3为本发明实施例的SIBM算法电路示意图;
图4为本发明实施例的并行钱氏搜索电路示意图;
图5为本发明实施例的关键方程求解-并行钱氏搜索电路示意图;
图6(a)为本发明实施例BCH译码无流水示意图;
图6(b)为本发明实施例BCH译码流水示意图;
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
首先对本发明的技术术语进行解释和说明,并在后续描述中做出以下规定:
BCH(n,k,t)码:表示码字长度为n位(n<=2m-1,m为正整数,当n=2m-1时,该BCH码为标准BCH码),信息位长度为k位,冗余位信息位为r位(r=n-k),t表示该纠错码的纠错能力,表示码字的n位中出现的任何少于t比特的错误都可以纠正。
BCH缩短码:对于所有n<2m-1的BCH码字,都是标准BCH码的一种缩短码,一个缩短的BCH码可以被看成一个高位序列为0的标准的BCH码,因此缩短的BCH码的纠错能力保持不变。
如图1所示为本发明一种实施方式的结构示意图,包括并行校正子计算模块、关键方程求解-并行钱氏搜索模块、FIFO存储器模块和BCH译码控制器模块;
并行校正子计算模块,用于计算编码校正子,对于BCH(n,k,t)码,并行校正子计算模块计算2t个如下定义的校正子:
其中,Si表示第i个校正子;αi表示有限域中的第i个元素;R(αi)表示接受多项式,N表示余数多项式的最大幂指数,r(αi)表示αi对应最小多项式的余式;rj(αi)表示余数多项式中次数为j的值。
一个8位并行的校正子计算模块电路示意图如图2所示,数据以8位并行的方式输入,并行校正子计算模块将中间结果保持在寄存器(Parity Reg)中,完成数据输入后,寄存器(Parity Reg)中的值为r(x),将αi代入r(x)中得到所需的校正子。
关键方程求解-并行钱氏搜索模块,用于求解BCH译码关键方程并搜索关键方程的根,其中求解BCH译码关键方程使用SIBM算法,搜索关键方程的根使用钱氏搜索算法。关键方程求解-并行钱氏搜索模块使用2t个校正子Si,0<i<2t作为输入,求解出关键方程并通过搜索关键方程根的形式来判断某个数据比特是否出错。
SIBM算法电路示意图如图3所示,校正子Si,0<i<2t以移位寄存器的方式逐步移位到SIBM算法电路中,根据SIBM算法,如图3所示的电路需要使用2t个通用有限域乘法器,经过t次迭代,即可计算出关键方程。
8位并行钱氏搜索电路示意图如图4所示,该8位并行的钱氏搜索电路一共需要使用(8+1)t个常数有限域乘法器,并行钱氏搜索电路接受来自SIBM算法电路的关键方程,初始化完成后将中间结果存放在寄存器D中,Chien_result的结果标志了该数据位是否出错,经过n(或者k)次迭代即可搜索完整个码字(或者信息位)。
关键方程求解-并行钱氏搜索模块电路示意图如图5所示,SIBM算法计算完关键方程之后,根据BCH缩短码缩短的位数h,直接计算出迭代h次之后关键方程的值。以加快钱氏搜索的速度,在钱氏搜索电路模块中复用SIBM电路模块中的通用有限域乘法器,完成钱氏搜索的迭代计算,该实施例中,关键方程求解-并行钱氏搜索块一共使用2t个通用有限域乘法器,6t个常数有限域乘法器,相比分立的SIBM算法电路和8位并行的钱氏搜索电路可以减少3t个常数有限域乘法器的使用。
FIFO存储器模块,用于缓存从NAND Flash芯片中读出的数据,执行钱氏搜索迭代算法时,逐步输出FIFO存储器模块中的数据。
BCH译码控制器模块,用于控制并行校正子计算模块、关键方程求解-并行钱氏搜索模块和FIFO存储器模块之间的数据交互。根据NAND Flash页的特点,在一个NAND Flash页中通常会有多个BCH编码码字,所述BCH译码控制器模块用于实现一个页内的多个BCH码字两级流水的并行执行,其中并行校正子计算为流水线第一级,关键方程计算-并行钱氏搜索为流水线第二级,BCH译码无流水示意图如图6(a),流水示意图如图6(b)所示。NANDFlash芯片读出数据时,BCH译码控制器模块将数据同时写入到并行校正子计算模块和FIFO存储器模块中,对应如图6(b)中的并行校正子计算,第一个码字读出完毕之后,将校正子计算模块得到的校正子输入到关键方程求解-并行钱氏搜索块中,并将后续读出的码字同时写入到并行校正子计算模块和FIFO存储器模块中,开始下一个码字的译码操作,钱氏搜索模块迭代时,输出FIFO存储器模块中的数据并根据搜索结果纠正错误数据。
以上内容本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (3)
1.一种流水结构的BCH译码***,其特征在于,所述***包括:
并行校正子计算模块,用于根据接收到的数据并行计算校正子;
关键方程求解-并行钱氏搜索模块,用于根据校正子计算出关键方程,并通过搜索关键方程的根找出关键方程的解,其中求解BCH译码关键方程使用SIBM算法,在计算出关键方程和搜索关键方程根的过程中复用有限域乘法器,在钱氏搜索电路模块中复用SIBM电路模块中的通用有限域乘法器,完成钱氏搜索的迭代计算;
FIFO存储器模块,用于缓存从NAND Flash芯片中读出的数据,并在计算关键方程的解时,逐步输出FIFO存储器模块中的数据;
BCH译码控制器模块,用于实现BCH译码两级流水线的并行执行:
在流水线的第一级,从NAND Flash芯片读出数据并同时写入到并行校正子计算模块和FIFO存储器模块中;
在流水线的第二级,将并行校正子计算模块中得到的校正子输入到关键方程求解-并行钱氏搜索模块中,逐步输出FIFO存储器模块中的数据,并根据得到的关键方程的解纠正FIFO存储器模块中输出的错误数据。
2.根据权利要求1所述的BCH译码***,其特征在于,所述并行校正子计算模块具体用于:
接受从NAND Flash芯片读出数据,根据读出的数据并行的计算出数据对应的最小多项式的余式,并根据余式计算出对应的校正子的值。
3.根据权利要求1所述的BCH译码***,其特征在于,所述关键方程求解-并行钱氏搜索模块具体用于使用SIBM算法计算出关键方程,使用钱氏搜索算法搜索关键方程根。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710769471.2A CN107688506B (zh) | 2017-08-31 | 2017-08-31 | 一种流水结构的bch译码*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710769471.2A CN107688506B (zh) | 2017-08-31 | 2017-08-31 | 一种流水结构的bch译码*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107688506A CN107688506A (zh) | 2018-02-13 |
CN107688506B true CN107688506B (zh) | 2019-12-20 |
Family
ID=61155878
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710769471.2A Active CN107688506B (zh) | 2017-08-31 | 2017-08-31 | 一种流水结构的bch译码*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107688506B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110875746A (zh) * | 2018-08-29 | 2020-03-10 | 南京大学 | 一种高速gii译码器的硬件架构 |
CN112099986B (zh) * | 2020-08-11 | 2022-02-01 | 西安电子科技大学 | 一种分支流水线结构的ecc译码***及方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101442677A (zh) * | 2007-11-23 | 2009-05-27 | 卓胜微电子(上海)有限公司 | Dmb-t解调芯片中前向纠错解码的硬件构架及解码方法 |
CN101488369A (zh) * | 2009-02-20 | 2009-07-22 | 苏州国芯科技有限公司 | Bch码控制器接口电路 |
CN102354535A (zh) * | 2011-08-04 | 2012-02-15 | 记忆科技(深圳)有限公司 | 逻辑单元复用*** |
CN103916138A (zh) * | 2012-12-28 | 2014-07-09 | 深圳艾科创新微电子有限公司 | 一种钱搜索电路及基于该钱搜索电路的ecc解码装置及方法 |
CN106663463A (zh) * | 2014-07-03 | 2017-05-10 | 桑迪士克科技有限责任公司 | 存储器裸芯的NAND闪存存储器与ReRAM之间的数据的芯片上复制 |
-
2017
- 2017-08-31 CN CN201710769471.2A patent/CN107688506B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101442677A (zh) * | 2007-11-23 | 2009-05-27 | 卓胜微电子(上海)有限公司 | Dmb-t解调芯片中前向纠错解码的硬件构架及解码方法 |
CN101488369A (zh) * | 2009-02-20 | 2009-07-22 | 苏州国芯科技有限公司 | Bch码控制器接口电路 |
CN102354535A (zh) * | 2011-08-04 | 2012-02-15 | 记忆科技(深圳)有限公司 | 逻辑单元复用*** |
CN103916138A (zh) * | 2012-12-28 | 2014-07-09 | 深圳艾科创新微电子有限公司 | 一种钱搜索电路及基于该钱搜索电路的ecc解码装置及方法 |
CN106663463A (zh) * | 2014-07-03 | 2017-05-10 | 桑迪士克科技有限责任公司 | 存储器裸芯的NAND闪存存储器与ReRAM之间的数据的芯片上复制 |
Non-Patent Citations (1)
Title |
---|
长BCH码的编码和译码设计;刘杰;《桂林航天工业高等专科学校学报》;20091231;第1-3页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107688506A (zh) | 2018-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8458574B2 (en) | Compact chien-search based decoding apparatus and method | |
US10243589B2 (en) | Multi-bit error correction method and apparatus based on a BCH code and memory system | |
WO2011142133A1 (ja) | 誤り訂正符号処理方法及びその装置 | |
CN101227194B (zh) | 用于并行bch编码的电路、编码器及方法 | |
JP7012479B2 (ja) | リード・ソロモン復号器及び復号方法 | |
US11632135B2 (en) | Apparatuses and methods for interleaved BCH codes | |
US8700971B2 (en) | Parallel residue arithmetic operation unit and parallel residue arithmetic operating method | |
Cho et al. | Efficient software-based encoding and decoding of BCH codes | |
CN101800560B (zh) | Flash控制器中BCH编译码的纠错能力扩展方法 | |
CN107688506B (zh) | 一种流水结构的bch译码*** | |
CN110908827A (zh) | 用于NAND Flash闪存纠错的并行BCH解码方法 | |
CN102045073B (zh) | 一种bch码译码方法和装置 | |
US8739006B2 (en) | Reduced circuit implementation of encoder and syndrome generator | |
CN112286716A (zh) | 一种1024字节的存储***差错控制模块 | |
Xueqiang et al. | A high-speed two-cell BCH decoder for error correcting in MLC nor flash memories | |
Garlapati et al. | A low power hard decision decoder for BCH codes | |
KR101267958B1 (ko) | 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 디코딩 방법 | |
CN108847851B (zh) | 一种二元bch码伴随式矩阵的实现方法 | |
KR101154923B1 (ko) | 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 비씨에이치 디코딩 방법 | |
KR101226439B1 (ko) | 리드-솔로몬 디코더, 이를 포함하는 메모리 시스템 및 디코딩 방법 | |
CN101931415A (zh) | 编码装置及方法、译码装置及方法和纠错*** | |
Lee et al. | Implementation of parallel BCH encoder employing tree-type systolic array architecture | |
KR20140074600A (ko) | 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 디코딩 방법 | |
CN110875745A (zh) | 一种面向高速硬件电路实现的gii码译码算法 | |
Nabipour et al. | Enhancing Data Storage Reliability and Error Correction in Multilevel NOR and NAND Flash Memories through Optimal Design of BCH Codes |
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 |