CN117349077A - 面向FPGA平台的NAND Flash BCH纠检错模块 - Google Patents
面向FPGA平台的NAND Flash BCH纠检错模块 Download PDFInfo
- Publication number
- CN117349077A CN117349077A CN202311073857.1A CN202311073857A CN117349077A CN 117349077 A CN117349077 A CN 117349077A CN 202311073857 A CN202311073857 A CN 202311073857A CN 117349077 A CN117349077 A CN 117349077A
- Authority
- CN
- China
- Prior art keywords
- data
- module
- polynomial
- nand flash
- read
- 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.)
- Pending
Links
- 238000012937 correction Methods 0.000 title claims abstract description 43
- 238000001514 detection method Methods 0.000 title claims abstract description 22
- 238000004422 calculation algorithm Methods 0.000 claims description 30
- 238000000034 method Methods 0.000 claims description 26
- 230000008569 process Effects 0.000 claims description 24
- 238000004364 calculation method Methods 0.000 claims description 21
- 230000015654 memory Effects 0.000 claims description 16
- 238000012795 verification Methods 0.000 claims description 8
- 238000013500 data storage Methods 0.000 claims description 7
- 208000011580 syndromic disease Diseases 0.000 claims description 7
- 238000012545 processing Methods 0.000 claims description 5
- 125000004122 cyclic group Chemical group 0.000 claims description 4
- 238000007726 management method Methods 0.000 claims description 4
- 230000001360 synchronised effect Effects 0.000 claims description 4
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 230000003993 interaction Effects 0.000 claims description 3
- 238000012546 transfer Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 8
- 238000013461 design Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 4
- 239000011159 matrix material Substances 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000005855 radiation Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
- 230000007306 turnover Effects 0.000 description 1
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/1012—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 using codes or arrangements adapted for a specific type of error
- G06F11/102—Error in check bits
-
- 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
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
本发明公开了一种面向FPGA平台的NAND Flash BCH纠检错模块,能够部署在FPGA等可编程逻辑电路上,且存储占用小、并行化程度高、数据吞吐率高以及逻辑资源占用少,基于FPGA的BCH编解码模块,用于实现NAND Flash数据的纠检错,该模块具备完整的编码和解码框架,便于集成到对应的嵌入式平台和存储系统中,相比于传统的多重备份、LDPC/ECC编/解码等策略,具有存储占用小,并行化程度高,数据吞吐率高,逻辑资源占用少等特点,可以部署在FPGA等可编程逻辑电路上,解决空间嵌入式环境中大容量数据的可靠存储问题。
Description
技术领域
本发明涉及计算机存储器技术领域,具体涉及一种面向FPGA平台的NAND FlashBCH纠检错模块。
背景技术
随着移动终端的普及和云技术的快速发展,对大容量数据存储设备的需求越来越大。NAND Flash是目前应用最广的一种非易失性存储介质,凭借其较高的存储密度,较低的成本,极大的容量,广泛地应用于U盘、固态硬盘和数码相机等电子产品中。随着技术的更新迭代,越来越多的计算模块和SOC IP也集成了NAND Flash芯片作为大容量存储单元。
在航天型号任务中,系统级的智能和自主能力提升依赖于算法的更新和应用,这也需要单机计算平台具备高算力,大数据量,快速存储的要求。NAND Flash以其快速读写能力和存储容量大等特征,也成为满足航天智能计算的理想存储介质,未来的深空探测/空间自主感知领域需要面对更加恶劣的辐射的工作环境,对存储数据的可靠性和持续性有着更高的要求。
由于NAND Flash结构的特殊性,在对其进行擦除和写入操作时,可能产生数据位的翻转,从而造成数据存储的错误,影响用户程序运行。传统的冗余备份策略一方面需要更多的存储芯片,增加设备成本、体积和功耗,另一方面同一规格,批次和制程存储芯片,容易产生相同的翻转状态,造成多份数据同时失真,使得单纯依靠多备份存储的方式也存在一定隐患。在对空间目标的感知和探测过程中,NAND Flash需要引入自身的错误校验机制,以增强其抵抗空间环境效应的能力。传统的单bit纠错能力,不能满足嵌入式CPU/GPU/DSP对数据存储的可靠性需求。现有的研究多是从算法级对NAND Flash纠检错进行设计,并未进行逻辑实现层面的探究。实际的工程化应用中软件实现各种编码/解码的效率较低,亟需探索利用硬件并行的BCH算法实现。
以某NAND Flash为例,其具备1GB的存储能力,读写速度快。但其手册要求每540KB具备4位的ECC(Error Correction Code)功能。现有的国产和进口该型号NAND Flash只包含对数据存取的接口,并没有独立的纠错功能,因此其ECC功能的实现依赖于额外的软件或硬件实现。基础的ECC算法具备1位的纠错和2位的检错能力,并不能满足该款存储芯片的纠错需求,而且对每个字节都添加ECC编解码的方式占用大量的额外存储空间。因此,需要选择具备更高性能的纠错算法来完成。高端的信道纠错算法如LDPC等具备较高的软件和硬件开发难度,且尽管纠错能力显著,其需要的校验码数量也非常多,逻辑资源占用较多。在每页只有4096字节+224字节的基础上,额外预留的224字节不能存储大量的LDPC算法的校验位。BCH码是线性循环分组码的一种,1959年由Bose,Chaudhuri,Hocqueenghem三人提出,具有编解码简单,纠错能力强,构造方便等特点,适合对中短码长的数据进行纠错。BCH码是一种重要的纠错码,常用于存储器、通信和数字电视等领域中,可以有效地纠正数据中的一定数量的错误。在NAND Flash存储器中,由于存在擦除操作,可能会导致数据位翻转,因此需要使用BCH码进行纠错。在FPGA芯片中实现BCH码纠错算法,需要设计合适的电路结构和算法实现。同时,还需要考虑到FPGA芯片的资源限制和性能要求,以实现高效、可靠的纠错功能。因此,相关技术领域的设计还十分缺乏。
发明内容
有鉴于此,本发明提供了一种面向FPGA平台的NAND Flash BCH纠检错模块,能够部署在FPGA等可编程逻辑电路上,且存储占用小、并行化程度高、数据吞吐率高以及逻辑资源占用少。
为实现上述目的,本发明技术方案如下:
一种面向FPGA平台的NAND Flash BCH纠检错模块,包括编码器和译码器,其中编码负责将指定存储长度的数据位除以BCH码的生成多项式,得到的余数为数据的校验码;编码器实现电路中,M为编码器并行度,每次输入M位数据,输出编码多项式的高M位数据,M+N为信息码编码多项式的长度;在完成数据输入后,得到余式为校验位数据;对于一个页来说,其数据存储区域为索引0到4095的存储字节,4096位至4105位的十个字节存储块信息,其校验位存储在4106开头后的地址空间中。
译码器包括伴随多项式计算、错误位置多项式计算以及钱搜索模块,其中伴随多项式计算用于检测数据是否存在位翻转的错误;错误位置多项式计算采用SiBM算法,用于从伴随多项式确定错误位置多项式的系数;钱搜索将错误位置多项式根的求解转化为对本原多项式根的幂的验证。
其中,模块系统部署架构中,整个SOC平台负责对包括NAND Flash和DDR存储单元的管理和交互;其中,PS/DSP单元发起对数据的请求和写入操作,PL负责中间接口的转换和存储器访问时序的生成;PL形成的接口模块不仅需要在生成访问时序的同时,运行BCH算法的编解码运算;
在写入数据过程中,PS端以AXI总线的时序生成对数据的读写操作,首先经过AXI转EMIF时序的中转单元,同步后的EMIF时序下地址,数据和读写信号被发送到接口模块,用于对NAND Flash的控制,写入数据过程中,接口模块将写入的数据存储到写FIFO中,然后向指令地址发送读指令,启动数据的写入;算法单元读FIFO中的数据,进行编码,并将生成写入时序将数据和校验码写入到NAND Flash的页内地址;
在读出数据过程中,接口模块首先接收读的地址,然后指令地址收到读指令,算法模块生成指定页地址内数据的NAND Flash读时序,将读到的数据先进行译码,然后将译码后的校验数据与读取数据分别存储到校验FIFO和读FIFO中;当完成一个页的读取和译码后,PS/DSP端对数据地址执行4096个字节的读操作,接口模块将校验FIFO和读FIFO的数据异或后输出;
在执行过程,首先将数据通过编码器生成校验码,与原始数据一起放入NANDFlash的存储区。
其中,所述译码器中还配置有控制模块和FIFO模块。
其中,错误位置多项式计算模块中,采用简化的无逆BM算法求解错误位置多项式;采用FPGA对于每个处理模块求解错误位置多项式,PE单元完成迭代过程中数据的更新。
其中,M位并行伴随多项式的计算通过并行的循环乘加实现。
有益效果:
1.本发明中基于FPGA的BCH编解码模块,用于实现NAND Flash数据的纠检错,该模块具备完整的编码和解码框架,便于集成到对应的嵌入式平台和存储系统中,相比于传统的多重备份、LDPC/ECC编/解码等策略,具有存储占用小,并行化程度高,数据吞吐率高,逻辑资源占用少等特点,可以部署在FPGA等可编程逻辑电路上,解决空间嵌入式环境中大容量数据的可靠存储问题。
2.本发明采用并行编码和解码器结构设计,对编码系统和解码系统的数据处理工程并行化,提高了系统吞吐率,实现了数据快速存取。
3.本发明实现了模块化的伴随多项式、SiBM和关键方程求解架构,简化了实现途径和资源使用,并可以按照资源占用情况进行裁剪和复用。
附图说明
图1为本发明NAND Flash的BCH纠检错模块编码器实现电路示意图。
图2为本发明NAND Flash的BCH纠检错模块译码器组成示意图。
图3为本发明NAND Flash的BCH纠检错模块伴随多项式计算示意图。
图4为本发明NAND Flash的BCH纠检错模块伴随SiBM PE单元内部结构示意图。
图5为本发明NAND Flash的BCH纠检错模块并行钱搜索模块示意图。
图6为本发明NAND Flash的BCH纠检错模块系统部署架构示意图。
图7为本发明NAND Flash的BCH纠检错模块系统接口与组成关系示意图。
图8为本发明NAND Flash的BCH纠检错模块伴随多项式计算仿真时序图。
图9为本发明NAND Flash的BCH纠检错模块SiBM迭代仿真时序图。
图10为本发明NAND Flash的BCH纠检错模块错误位位置生成校验数据仿真时序图。
具体实施方式
下面结合附图并举实施例,对本发明进行详细描述。
本发明考虑FPGA设计、存储器技术、纠错码技术以及时序优化等方面,从工程实现和吞吐、资源和时序约束的角度,提出并实现了一种面向FPGA平台的NAND Flash BCH纠检错模块,在FPGA芯片中实现BCH码纠错。具体原理分析如下:
BCH包含编码(Encoding)和译码(Decoding)功能,其中编码负责将指定存储长度的数据位除以BCH码的生成多项式,得到的余数为数据的校验码(Parity Code);对于编码过程,先利用xn-k乘以信息码多项式,然后用得到的多项式除以g(x)得到商式p(x)和余式r(x),最后保存的是c(x)=m(x)xn-k+r(x);实际上,m(x)是直接进行存储的,当数据按顺序进入存储器时,编码器对数据左移,最后除以g(x),得到的余式就是校验位。编码器实现电路如图1所示,其中M为编码器并行度,每次输入M位数据,输出编码多项式的高M位数据,M+N为信息码编码多项式的长度。在完成数据输入后,得到余式为校验位数据。对于一个页来说,其数据存储区域为索引0到4095的存储字节。而4096位至4105位的十个字节存储块信息,其校验位存储在4106开头后的地址空间中。
译码器组成如图2所示,主要包括三个模块,分别是伴随多项式计算、错误位置多项式计算以及钱搜索模块。为了使得整个算法有序进行,还需要配置控制模块和FIFO模块。伴随多项式计算用于检测数据是否存在位翻转的错误;错误位置多项式计算采用SiBM算法,用于从伴随多项式确定错误位置多项式的系数;钱搜索将错误位置多项式根的求解转化为对本原多项式根的幂的验证。
具体地,伴随多项式用于确认数据是否发生错误。理想情况下,伴随多项式的概念来自于本原多项式根的幂次矩阵(也称校验矩阵)与接收数据多项式的矩阵的乘积:
对于t位纠错能力的BCH译码器,需要数量为2t个伴随多项式。
其中r(x)代表要存入的数据多项式c(x)和误差多项式e(x)的和。又对于数据位和校验位关系,得到:
当存入和读出的数据不存在位翻转的情形时,e(x)为0,故有S为0,S全为0,带入到关键方程求解和钱搜索模块,得到的结果都为0,最终生成全为0的校验数据码,在输出时,校验数据码与r(x)异或还原出c(x)。而当出现位翻转时,有S不为0。需要进一步通过关键方程求解和钱搜索得到错误位的位置,并生成能够纠正错误的校验数据码,从包含错误的r(x)中还原正确的c(x)。M位并行伴随多项式的计算通过并行的循环乘加实现,如图3所示。图3中每个乘法器所乘的系数固定,利用本原多项式根的幂特性,可以得到每个乘法器的解析形式。这种展开的乘法器称为固定因子乘法器,其输入到输出的延迟为1个时钟周期,且相比于伽罗华域通用乘法器,快速计算的同时,能够节省一半以上的逻辑资源。对于伴随多项式中2t个参数(t为纠正错误的位数),需要例化2t个计算模块,对应图中的j从1到2t。
关键方程求解是译码器最重要的部分,也是占用逻辑资源最多的部分。利用关键方程求解的结果σ(x),也称错误位置多项式,其根就是位翻转的位置。而求σ(x)的表示,就是求σ(x)的各项系数。采用简化的无逆BM算法(Simple Inverse-free BM)求解错误位置多项式,其便于并行实现。算法的计算步骤如下:
初始化:δ2t(0)=1,δ2t-1(0)=0,θ2t(0)=1,θ2t-1(0)=0,k(0)=0,γ(0)=1;
输入:Si(i=0,1,2,...,2t-2),δi=θi=Si(i=0,1,2,...,2t-2)
对r从1到t-1执行如下步骤:
步骤1,δi(r+1)=γ(r)δi+2(r)+δ0(r)θi+1(r)(i=0,1,2,...,2t);
步骤2,若δ0(r)≠0&&k(r)≥0,则θi(r+1)=δi+2(r)(i≠2t-2-2r,2t-3-2r),
γ(r+1)=δ0(r),k(r+1)=-k(r);否则θi(r+1)=θi(r)(i≠2t-2-2r,2t-3-2r),γ(r+1)=γ(r),k(r+1)=k(r)+1;令θi(r+1)=0(i=2t-2-2r,2t-3-2r),输出σ0=δ0(t),σ1=δ1(t),…,σt=δt(t)。
软件实现无逆SIBM算法效率较低,采用FPGA对于每个处理模块求解错误位置多项式,PE单元完成迭代过程中数据的更新,PE单元电路如图4所示。
钱搜索是通过关键方程的错误位置多项式σ(x)确定错误位置的过程,将求根过程,转变为从α0,α1,...,αn-1中验根的过程,依次代入α0,α1,...,αn-1与σ(x)相乘,如果得到的结果为0,则对应位置为σ(x)根的倒数,即位发生了翻转,从而确定了错误位置。如果结果不为0,则代表该位置没有发生错误。图5为M位并行钱搜索的计算电路设计,其中q是译码过程中数据位在整个码长中的起始位。算法的运行过程为:开始的第一个时钟周期,选择器把最左边的伽罗华域乘法器的结果存入寄存器,以后每个周期选择器选择的是后面反馈过来的数据。对于第一排来说,每个固定因子乘法器计算的结果都会用到下面的加法器进行运算,从而实现M位并行的功能。一共有8个这样的处理单元,最终得到的结果为result0-resultM-1,如果其中某个寄存器结果为0,代表该位对应的数值为错误多项式的根(乘法结果为0),对应的校验数据位置1,否则代表该位未发生翻转,对应的校验数据位为0。在第一个时钟周期选择左侧乘法器输入后,读取指定长度的数据的同时,迭代相同次数的钱搜索,得到相同长度的校验数据(每个校验数据M位宽)。当读取Flash中的数值时,利用FIFO结构,将从NAND Flash获取的读取数据和算法产生的校验数据进行异或,得到纠正后的数据。
本发明模块系统部署架构硬件架构关系如图6所示,整个SOC平台负责对包括NANDFlash和DDR等存储单元的管理和交互。其中,PS/DSP单元发起对数据的请求和写入操作,PL负责中间接口的转换和存储器访问时序的生成。对于NAND Flash来说,PL形成的接口模块不仅需要在生成访问时序的同时,需要运行BCH算法的编解码运算。
在写入数据过程中,PL中对应NAND Flash访问的接口模块设计如图7所示,PS端以AXI总线的时序生成对数据的读写操作,首先经过AXI转EMIF时序的中转单元,同步后的EMIF时序下地址,数据和读写信号被发送到接口模块,用于对NAND Flash的控制,写入数据过程中,接口模块将写入的数据存储到写FIFO中,然后向指令地址发送读指令,启动数据的写入。算法单元读FIFO中的数据,进行编码,并将生成写入时序将数据和校验码写入到NANDFlash的页内地址。
在读出数据过程中,接口模块首先接收读的地址,然后指令地址收到读指令,算法模块生成指定页地址内数据的NAND Flash读时序,将读到的数据先进行译码,然后将译码后的校验数据与读取数据分别存储到校验FIFO和读FIFO中。当完成一个页的读取和译码后,PS/DSP端对数据地址执行4096个字节的读操作,接口模块将校验FIFO和读FIFO的数据异或后输出。
在执行过程,首先将数据通过编码器生成校验码,与原始数据一起放入NANDFlash的存储区。
本发明研究的BCH编解码单元,码长n为4096+104位,n=2m-1,取m=13,纠错能力t为8位。每512字节的校验位位数为m*t=104位,每页大小为4096字节,包含8个512字节,从而需要104字节的空间来存储校验位。BCH码可描述为BCH(4200,4096,8)。NAND Flash每个数据读或写为八位字节格式,因此选择并行度为8的编码器、译码器设计。
由于m=13,因此可以查表得到其本原多项式为:
f(x)=x13+x4+x3+x+1
对应的生成多项式包含105个系数,由生成多项式的求解得到,生成多项式的根有如下性质:
x104+x101+…+x+1=0
NAND Flash的数据接口为8位宽度,在数据写入过程中随着八位数据的顺序移入。每次八位左移的编码结果都有解析的位表示方法其硬件实现只需将表达式的每一位用同步逻辑表达。
在完成数据输入后,得到的104位表达式为13字节校验位数据。对于一个页来说,其数据存储区域为索引0到4095的存储字节。而4096位至4105位的十个字节存储块信息,其校验位存储在4106开头后的地址空间中。
在读取数据过程中,完成前512字节数据和13个字节校验码读取后,计算得到对16个伴随多项式结果,当数据未发生翻转时,16个伴随多项式结果为全0。图8中syndrome_rdy为‘1’时,伴随多项式不为全0,表征数据位有发生翻转。
SiBM模块接收16个伴随式的计算结果,包含两个PE单元,每个PE单元包含两个伽罗华域的通用乘法器(GF_general_multiplier),完成计算中的乘法操作。SiBM模块的迭代控制和信号管理综合在GF_SiBM文件中。SiBM模块计算得到9个错误位置多项式σ0,σ1,σ2,...,σ8。
承接对伴随多项式的结果,SiBM模块通过128个时钟周期,计算得到9个错误位置多项式的结果。同样地,当未发生数据翻转时,错误位置多项式的结果为全‘0’,图9结果不为全‘0’,表征发生了位翻转现象。
钱搜索模块接收9个错误位置多项式σ0,σ1,σ2,...,σ8,通过试根法,得到4096个位中的错误位置,并生成纠错数据位。钱搜索包含8个对错误位置多项式的试根通道(sigma_channel),分别实现对一个字节中八个数据位错误位置的判断。每个通道包含9个固定因子乘法器单元(GF_fix_factor_multiplier),从而实现对512个字节的流水线化处理。
钱搜索利用错误位置多项式,得到对翻转数据位纠正的校验数据。在图10中,生成的第0个校验数据为x“FF”,写入到校验数据FIFO中。x“FF”与x“00”异或得到的计算结果为x“FF”,可以实现对八个翻转位的纠正。
在不增加BCH校验功能时,只需按顺序写入4096字节数据,每个字节需要4个时钟周期,加上发送命令和地址的准备时间,整个页的写操作,需要约17000个时钟周期。
在增加BCH校验功能后,在写入4096字节数据基础上,需要增加一个写入准备环节,同时增加104×4个时钟周期用于校验码的写入。相比于数据的写入时间,校验增加的时间成本在%5以内。在50MHz的工作时钟下,每秒完成的数据读出数量为1.35MB。
在Z7平台上对模块进行逻辑综合,得到资源消耗如表1所示。
表1资源消耗统计表
其相对该FPGA的资源占用小于3%,便于在多种嵌入式场景中进行集成和部署。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种面向FPGA平台的NAND Flash BCH纠检错模块,其特征在于,包括编码器和译码器,其中编码负责将指定存储长度的数据位除以BCH码的生成多项式,得到的余数为数据的校验码;编码器实现电路中,M为编码器并行度,每次输入M位数据,输出编码多项式的高M位数据,M+N为信息码编码多项式的长度;在完成数据输入后,得到余式为校验位数据;对于一个页来说,其数据存储区域为索引0到4095的存储字节,4096位至4105位的十个字节存储块信息,其校验位存储在4106开头后的地址空间中。
译码器包括伴随多项式计算、错误位置多项式计算以及钱搜索模块,其中伴随多项式计算用于检测数据是否存在位翻转的错误;错误位置多项式计算采用SiBM算法,用于从伴随多项式确定错误位置多项式的系数;钱搜索将错误位置多项式根的求解转化为对本原多项式根的幂的验证。
2.如权利要求1所述的模块,其特征在于,模块系统部署架构中,整个SOC平台负责对包括NAND Flash和DDR存储单元的管理和交互;其中,PS/DSP单元发起对数据的请求和写入操作,PL负责中间接口的转换和存储器访问时序的生成;PL形成的接口模块不仅需要在生成访问时序的同时,运行BCH算法的编解码运算;
在写入数据过程中,PS端以AXI总线的时序生成对数据的读写操作,首先经过AXI转EMIF时序的中转单元,同步后的EMIF时序下地址,数据和读写信号被发送到接口模块,用于对NAND Flash的控制,写入数据过程中,接口模块将写入的数据存储到写FIFO中,然后向指令地址发送读指令,启动数据的写入;算法单元读FIFO中的数据,进行编码,并将生成写入时序将数据和校验码写入到NAND Flash的页内地址;
在读出数据过程中,接口模块首先接收读的地址,然后指令地址收到读指令,算法模块生成指定页地址内数据的NAND Flash读时序,将读到的数据先进行译码,然后将译码后的校验数据与读取数据分别存储到校验FIFO和读FIFO中;当完成一个页的读取和译码后,PS/DSP端对数据地址执行4096个字节的读操作,接口模块将校验FIFO和读FIFO的数据异或后输出;
在执行过程,首先将数据通过编码器生成校验码,与原始数据一起放入NAND Flash的存储区。
3.如权利要求1或2所述的模块,其特征在于,所述译码器中还配置有控制模块和FIFO模块。
4.如权利要求1或2所述的模块,其特征在于,错误位置多项式计算模块中,采用简化的无逆BM算法求解错误位置多项式;采用FPGA对于每个处理模块求解错误位置多项式,PE单元完成迭代过程中数据的更新。
5.如权利要求1或2所述的模块,其特征在于,M位并行伴随多项式的计算通过并行的循环乘加实现。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311073857.1A CN117349077A (zh) | 2023-08-24 | 2023-08-24 | 面向FPGA平台的NAND Flash BCH纠检错模块 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311073857.1A CN117349077A (zh) | 2023-08-24 | 2023-08-24 | 面向FPGA平台的NAND Flash BCH纠检错模块 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117349077A true CN117349077A (zh) | 2024-01-05 |
Family
ID=89363910
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311073857.1A Pending CN117349077A (zh) | 2023-08-24 | 2023-08-24 | 面向FPGA平台的NAND Flash BCH纠检错模块 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117349077A (zh) |
-
2023
- 2023-08-24 CN CN202311073857.1A patent/CN117349077A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8301986B2 (en) | Memory system and method for providing error correction | |
US8458574B2 (en) | Compact chien-search based decoding apparatus and method | |
US7398449B1 (en) | Encoding 64-bit data nibble error correct and cyclic-redundancy code (CRC) address error detect for use on a 76-bit memory module | |
US8812940B2 (en) | Programmable error correction capability for BCH codes | |
TWI438777B (zh) | 一種快閃記憶體控制器之資料傳輸保護裝置 | |
US9075739B2 (en) | Storage device | |
US6018626A (en) | Error correction method and apparatus for disk drive emulator | |
US5130990A (en) | VLSI architecture for a Reed-Solomon decoder | |
CN102751995A (zh) | 一种基于fpga的抗多位错误翻转rs码检错纠错系统 | |
US11146293B2 (en) | System and method for optimizing Reed-Solomon decoder for errors and erasures | |
TWI536749B (zh) | 解碼方法、記憶體儲存裝置與記憶體控制電路單元 | |
US10439644B2 (en) | Error locator polynomial decoder and method | |
CN102045073B (zh) | 一种bch码译码方法和装置 | |
US12009837B2 (en) | Syndrome calculation for error detection and error correction | |
CN107688506B (zh) | 一种流水结构的bch译码系统 | |
CN117349077A (zh) | 面向FPGA平台的NAND Flash BCH纠检错模块 | |
US20120151123A1 (en) | Memory system and memory controller | |
Song et al. | A Low complexity design of reed solomon code algorithm for advanced RAID system | |
US20050188293A1 (en) | Error correction decoder using cells with partial syndrome generation | |
CN101931415B (zh) | 编码装置及方法、译码装置及方法和纠错系统 | |
Guo et al. | BCH Implementation on Zynq-7 platform for NANDFLASH | |
Nabipour et al. | Enhancing Data Storage Reliability and Error Correction in Multilevel NOR and NAND Flash Memories through Optimal Design of BCH Codes | |
CN102568607A (zh) | 一种优化的bch解码器 | |
CN108847851A (zh) | 一种二元bch码伴随式矩阵的实现方法 | |
Yang et al. | An MPCN-based BCH codec architecture with arbitrary error correcting capability |
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 |