CN110971240B - 解码器设计方法与存储控制器 - Google Patents
解码器设计方法与存储控制器 Download PDFInfo
- Publication number
- CN110971240B CN110971240B CN201910374013.8A CN201910374013A CN110971240B CN 110971240 B CN110971240 B CN 110971240B CN 201910374013 A CN201910374013 A CN 201910374013A CN 110971240 B CN110971240 B CN 110971240B
- Authority
- CN
- China
- Prior art keywords
- permutation
- target
- network
- matrix
- shift
- 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
- 238000000034 method Methods 0.000 title claims abstract description 80
- 238000013461 design Methods 0.000 title claims abstract description 23
- 239000011159 matrix material Substances 0.000 claims abstract description 259
- 238000012937 correction Methods 0.000 claims description 54
- 238000007689 inspection Methods 0.000 claims description 25
- 230000008878 coupling Effects 0.000 claims description 2
- 238000010168 coupling process Methods 0.000 claims description 2
- 238000005859 coupling reaction Methods 0.000 claims description 2
- 230000000875 corresponding effect Effects 0.000 description 149
- 208000011580 syndromic disease Diseases 0.000 description 82
- 239000013598 vector Substances 0.000 description 78
- 238000010586 diagram Methods 0.000 description 47
- 230000005055 memory storage Effects 0.000 description 36
- 230000008569 process Effects 0.000 description 30
- 238000004364 calculation method Methods 0.000 description 14
- 238000012545 processing Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 7
- 230000004044 response Effects 0.000 description 7
- 230000007423 decrease Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000006073 displacement reaction Methods 0.000 description 4
- 238000012795 verification Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000020169 heat generation Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Classifications
-
- 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/11—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 using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1148—Structural properties of the code parity-check or generator matrix
- H03M13/116—Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
-
- 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
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Error Detection And Correction (AREA)
Abstract
本发明提供一种解码器设计方法及应用所述方法的存储控制器。所述方法包括:识别准循环低密度奇偶校验(QC‑LDPC)解码器的预定检查矩阵与对应所述检查矩阵的第一置换网络,其中检查矩阵包括MⅹM个子矩阵,其中每个子矩阵是ZⅹZ矩阵,其中Z是每个子矩阵的预设维度值;通过根据检查矩阵的移位类型从第一置换网络中移除目标第一置换层来建构置换电路的第二置换网络,其中多个第二置换层的数量和每个第二置换层的第二节点的数量是根据预设维度值所设定的;以及在所建构的置换电路的第二置换网络的多个第二节点上设置多个选择器。
Description
技术领域
本发明涉及一种解码器设计方法,尤其涉及准循环低密度奇偶校验解码器的一种解码器设计方法,以及存储控制器。
背景技术
数码相机、移动电话与MP3播放器在这几年来的成长十分迅速,使得消费者对存储媒体的需求也急速增加。由于可复写式非易失性存储器模块(例如,快闪存储器)具有数据非易失性、省电、体积小,以及无机械结构等特性,所以非常适合内建于上述所举例的各种可携式多媒体装置中。
一般来说,为了避免从存储器装置中读取出来的数据发生错误,欲存储在存储器装置中的数据会被编码尔后再被存储。当欲读取此数据时,整个编码数据会被读取出来并且被解码。藉此,可通过解码程序来更正可能存在的错误。在解码过程期间,纠错码用于确定读取码字(读取数据)中的一个或多个错误,并且校正所确定的错误。其中一个著名的错误更正码称为准循环低密度奇偶校验(Quasi-Cyclic low-density parity check,QC-LDPC)码。在QC-LDPC中,置换网络在解码效率和高数据速率方面起着重要作用。传统上,会实现全尺寸多层置换网络。但是当置换网络变得更大时,放置芯片/选择器(QC-LDPC解码器的置换网络中的电子元件)以及连接到元件的路由线(布线)的难度变得更大。另一个问题是,由于在较大的置换网络中,信号会通过较长的运算路径,需要更多时间来完成整个解码过程,导致解码过程的处理周期将变得更长。
因此,如何设计QC-LDPC解码器的置换网络以减少解码过程的时间/功耗并降低置换电路的硬件成本以进一步提高QC-LDPC解码器的效率,为本领域技术人员的研究的主题之一。
发明内容
本发明提供一种解码器设计方法,与存储控制器,可减少所需的选择器/移位暂存器的数量,提升解码的速度,进而增进解码器的效率。
本发明的一实施例提供一种解码器设计方法,适用于设计对应一可复写式非易失性存储器模块的一准循环低密度奇偶校验码(quasi-cyclic low-density parity check,QC-LDPC)解码器的置换电路。所述方法包括:识别可复写式非易失性存储器模块的实体页面的大小为页面大小,其中所述实体页面用以存储多个码字;根据所述多个码字与所述页面大小来获得所述多个码字的每一个的码字长度;识别所述QC-LDPC解码器的预定检查矩阵,其中所述检查矩阵包括MⅹM个子矩阵,其中每一所述子矩阵为ZⅹZ矩阵,其中Z为每个子矩阵的预设维度值,并且所述预设维度值为经由对所述码字长度除以M所获得的商值;根据所述预设维度值来计算一第一数值,并且根据所述第一数值、所述预设维度值和所述检查矩阵的移位类型识别第一置换网络,其中所述第一置换网络包括依序排列的多个第一置换层,所述第一置换层中的每一个第一置换层具有相同数量的第一节点,其中第一置换层的数量由所述第一数值所设置,并且每个第一置换层的第一节点的数量由所述预设维度值所设置,其中所述多个第一置换层中的一个第一置换层的每一个第一节点连接至下一个第一置换层的一对第一节点;根据所述检查矩阵的所述移位类型识别所述第一置换网络的所述多个第一置换层中的目标第一置换层,并经由从所述第一置换网络中去除所述目标第一置换层来建构第二置换网络;以及设置多个选择器于所述置换电路的所述第二置换网络的多个第二节点上,并且根据所述第二置换网络将多条路由线设置到所述置换电路中以连接所述多个选择器,其中所述多个选择器更分别连接至所述QC-LDPC解码器的解码控制器,其中所述解码控制器用以控制所述多个选择器来将对应一目标码字的多个第一变量群组移位成为多个第二变量群组,其中所述多个第二变量群组根据对应所述多个第一变量群组与所述多个第二变量群组的多个目标偏移量分别被移位,其中所述多个目标偏移量是根据所述检查矩阵所识别的。
本发明的另一实施例提供一种存储控制器。所述存储控制器用以控制具有可复写式非易失性存储器模块的存储装置。所述存储控制器包括的错误检查与校正电路、存储器接口控制电路以及处理器。所述错误检查与校正电路包括准循环低密度奇偶校验码(Quasi-Cyclic low-density parity check,QC-LDPC)解码器,其中所述准循环低密度奇偶校验码解码器用以执行解码程序于目标码字,其中所述准循环低密度奇偶校验码解码器包括置换电路。所述存储器接口控制电路用以耦接至可复写式非易失性存储器模块。所述可复写式非易失性存储器模块具有多个实体页面,并且每一所述多个实体页面的大小被识别为一页面大小,其中所述实体页面用以存储多个码字,并且所述目标码字从所述多个实体页面中的目标实体页面被读取,其中每一所述多个码字的长度根据所述多个码字的数量与所述页面大小被获得,为一码字长度。所述处理器耦接至所述错误检查与校正电路与所述存储器接口控制电路。所述存储器接口控制电路传送从可复写式非易失性存储器模块所读取的所述码字至所述错误检查与校正电路,并且所述处理器用以指示所述错误检查与校正电路对所述目标码字执行所述解码程序。所述置换电路包括多个选择器、连接至每一所述多个选择器的多个路由线、多个输入端与多个输出端。所述QC-LDPC解码器的预定检查矩阵被识别,并且所述检查矩阵包括MⅹM个子矩阵,其中每一所述子矩阵为ZⅹZ矩阵,其中Z为每个子矩阵的预设维度值,并且所述预设维度值为经由对所述码字长度除以M所获得的商值,其中用以设置所述多个选择器与所述多个路由线至所述置换电路的一第二置换网络经由从一第一置换网络中移除一目标第一置换层被建构。所述第一置换网络是根据所述第一数值、所述预设维度值和所述检查矩阵的移位类型所识别的,其中所述第一置换网络包括依序排列的多个第一置换层,所述第一置换层中的每一个第一置换层具有相同数量的第一节点,其中第一置换层的数量由所述第一数值所设置,并且每个第一置换层的第一节点的数量由所述预设维度值所设置,其中所述多个第一置换层中的一个第一置换层的每一个第一节点连接至下一个第一置换层的一对第一节点。其中所述第一置换网络中的所述多个第一置换层中的目标第一置换层是根据所述检查矩阵的所述移位类型所识别的。此外,所述多个选择器于被设置于所述置换电路的所述第二置换网络的多个第二节点上,并且所述多条路由线根据所述第二置换网络被设置到所述置换电路中以连接所述多个选择器,其中所述多个选择器更分别连接至所述QC-LDPC解码器的解码控制器,其中所述解码控制器用以控制所述多个选择器来将对应一目标码字的多个第一变量群组移位成为多个第二变量群组,其中所述多个第二变量群组根据对应所述多个第一变量群组与所述多个第二变量群组的多个目标偏移量分别被移位,其中所述多个目标偏移量是根据所述检查矩阵所识别的。
基于上述,本发明的实施例所提供的解码器设计方法与存储控制器,可以经由根据QC-LDPC解码器的检查矩阵的移位类型从第一置换网络中移除目标第一置换层,以构建改进的第二置换网络,所述第二置换网络用于在QC-LDPC解码器的置换电路中布置较少的选择器和路由线。如此一来,可使置换电路的硬件成本降低,并且相应地降低功耗和产生的热量。
为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。
附图说明
图1是根据本发明的一实施例所示出的主机系统、存储器存储装置及输入/输出(I/O)装置的示意图;
图2是根据本发明的另一实施例所示出的主机系统、存储器存储装置及I/O装置的示意图;
图3是根据本发明的另一实施例所示出的主机系统与存储器存储装置的示意图;
图4是根据本发明的一实施例所示出的存储器存储装置的概要方块图;
图5A是根据本发明的一实施例所示出的存储器控制电路单元的概要方块图;
图5B是根据本发明的一实施例所示出的存储器控制电路单元的错误检查与校正电路的方块示意图;
图5C是根据本发明的一实施例所示出的错误检查与校正电路的解码器的方块示意图;
图5D是根据本发明的一实施例所示出的解码器设计方法的流程图;
图5E是根据本发明的一实施例所示出的解码器的置换电路的第一置换网络的示意图;
图5F是根据本发明的一实施例所示出的解码器的置换电路的第二置换网络的示意图;
图5G是根据本发明的一实施例所示出的解码器的置换电路的示意图;
图6是根据本发明的一实施例所示出的低密度奇偶检查码的置信传播(beliefpropagation)的示意图;
图7是根据本发明的一实施例所示出的奇耦检查矩阵的示意图;
图8是根据本发明的一实施例所示出的奇偶检查程序的示意图;
图9是根据本发明的一实施例所示出的获得对应于奇偶检查程序的校验子集合的示意图;
图10与图11是根据本发明的另一实施例所示出的获得对应于比特翻转算法的校验权重的示意图;
图12与图13是根据本发明的另一实施例所示出的获得对应于最小值-总和算法的最小值集合的示意图;
图14A是根据本发明的一实施例所示出的经由具有对应偶数移位类型检查矩阵的所提供的第二置换网络的置换电路所执行的变量群组的移位操作的示意图;
图14B是根据本发明的一实施例所示出的经由具有对应一般移位类型检查矩阵的传统置换网络的置换电路所执行的变量群组的移位操作的示意图;
图15是根据先前技术所示出的解码器的置换电路的传统的置换网络的示意图;
图16A是根据先前技术所示出的对应一般移位类型检查矩阵的传统的置换网络移位范围的示意图;
图16B是根据本发明的一实施例所示出的对应偶数移位类型检查矩阵的所提供的置换网络移位范围的示意图;
图16C是根据本发明的一实施例所示出的对应奇数移位类型检查矩阵的所提供的置换网络移位范围的示意图;
图17是根据本发明的一实施例所示出的在所提供的置换电路的第二置换网络中的多个选择器与连接至所述多个选择器的路由线的连接关系的示意图。
附图标号说明:
10:存储器存储装置
11:主机系统
110:系统总线
111:处理器
112:随机存取存储器
113:只读存储器
114:数据传输接口
12:输入/输出(I/O)装置
20:主机板
201:随身盘
202:存储卡
203:固态硬盘
204:无线存储器存储装置
205:全球定位系统模块
206:网络接口卡
207:无线传输装置
208:键盘
209:屏幕
210:喇叭
32:SD卡
33:CF卡
34:嵌入式存储装置
341:嵌入式多媒体卡
342:嵌入式多芯片封装存储装置
402:连接接口单元
404:存储器控制电路单元
406:可复写式非易失性存储器模块
502:存储器管理电路
504:主机界面
506:存储器接口
508:错误检查与校正电路
510:缓冲存储器
512:电源管理电路
5081:解码器
5082:编码器
581:解码控制器
582:缓冲器
583:检查节点电路
584:变量节点电路
585:置换电路
586:校验子计算电路
587:终止电路
S511、S512、S513、S514、S515、S516:解码器设计方法的流程步骤
X1~X8:输入端
Y1~Y8:输出端
5851、5851’:置换路
5851’(0)~5851’(2)、5851(1)~5851(2):置换层
590’(1)~590’(8)、591(1)~591(8)、591’(1)~591’(8)、592’(1)~592’(8):节点
V(1)~V(M)、IV(1)~IV(M):初始变量群组
1410(1)~1410(M):子矩阵组
IW_590(1)、CW_590(1)、OW1_590(1)、OW2_590(1)、CW_591(1)、OW1_591(1)、OW2_591(1)、CW_591(5)、OW1_591(5)、OW2_591(5):路由线
601(1)~601(k):奇偶节点
602(1)~602(n):讯息节点
610:置信传播图
700、800:奇偶检查矩阵
810、910、920:码字
820:校验子集合
830、840:子矩阵群组
831~833、841~843:子矩阵
911~913、921~923:偏移群组
1001:校验权重集合
1002、1003、1101~1108:向量
1201:最小值集合
具体实施方式
一般而言,存储器存储装置(亦称,存储器存储系统)包括可复写式非易失性存储器模块(rewritable non-volatile memory module)与控制器(亦称,控制电路)。通常存储器存储装置是与主机系统一起使用,以使主机系统可将数据写入至存储器存储装置或从存储器存储装置中读取数据。
图1是根据本发明的一实施例所示出的主机系统、存储器存储装置及输入/输出(I/O)装置的示意图。图2是根据本发明的另一实施例所示出的主机系统、存储器存储装置及I/O装置的示意图。
请参照图1与图2,主机系统11一般包括处理器111、随机存取存储器(randomaccess memory,RAM)112、只读存储器(read only memory,ROM)113及数据传输接口114。处理器111、随机存取存储器112、只读存储器113及数据传输接口114皆耦接至系统总线(system bus)110。
在本实施例中,主机系统11是通过数据传输接口114与存储器存储装置10耦接。例如,主机系统11可经由数据传输接口114将数据存储至存储器存储装置10或从存储器存储装置10中读取数据。此外,主机系统11是通过系统总线110与I/O装置12耦接。例如,主机系统11可经由系统总线110将输出信号传送至I/O装置12或从I/O装置12接收输入信号。
在本实施例中,处理器111、随机存取存储器112、只读存储器113及数据传输接口114可设置在主机系统11的主机板20上。数据传输接口114的数目可以是一或多个。通过数据传输接口114,主机板20可以经由有线或无线方式耦接至存储器存储装置10。存储器存储装置10可例如是随身盘201、存储卡202、固态硬盘(Solid State Drive,SSD)203或无线存储器存储装置204。无线存储器存储装置204可例如是近距离无线通讯(Mear FieldCommunication,MFC)存储器存储装置、无线传真(WiFi)存储器存储装置、蓝牙(Bluetooth)存储器存储装置或低功耗蓝牙存储器存储装置(例如,iBeacon)等以各式无线通讯技术为基础的存储器存储装置。此外,主机板20也可以通过系统总线110耦接至全球定位系统(Global Positioning System,GPS)模块205、网络接口卡206、无线传输装置207、键盘208、屏幕209、喇叭210等各式I/O装置。例如,在一实施例中,主机板20可通过无线传输装置207存取无线存储器存储装置204。
在一实施例中,所提及的主机系统为可实质地与存储器存储装置配合以存储数据的任意系统。虽然在上述实施例中,主机系统是以电脑系统来作说明,然而,图3是根据本发明的另一实施例所示出的主机系统与存储器存储装置的示意图。请参照图3,在另一实施例中,主机系统31也可以是数码相机、摄影机、通讯装置、音频播放器、视频播放器或平板电脑等系统,而存储器存储装置30可为其所使用的SD卡32、CF卡33或嵌入式存储装置34等各式非易失性存储器存储装置。嵌入式存储装置34包括嵌入式多媒体卡(embedded MMC,eMMC)341和/或嵌入式多芯片封装存储装置(embedded Multi Chip Package,eMCP)342等各类型将存储器模块直接耦接于主机系统的基板上的嵌入式存储装置。
图4是根据本发明的一实施例所示出的存储器存储装置的概要方块图。
请参照图4,存储器存储装置10包括连接接口单元402、存储器控制电路单元404与可复写式非易失性存储器模块406。
在本实施例中,连接接口单元402是相容于串行高级技术附件(Serial AdvancedTechnology Attachment,SATA)标准。然而,必须了解的是,本发明不限于此,连接接口单元402亦可以是符合并行高级技术附件(Parallel Advanced Technology Attachment,PATA)标准、电气和电子工程师协会(Institute of Electrical and Electronic Engineers,IEEE)1394标准、高速周边零件连接接口(Peripheral Component Interconnect Express,PCI Express)标准、通用串行总线(Universal Serial Bus,USB)标准、安全数字(SecureDigital,SD)接口标准、超高速一代(Ultra High Speed-I,UHS-I)接口标准、超高速二代(Ultra High Speed-II,UHS-II)接口标准、存储棒(Memory Stick,MS)接口标准、多芯片封装(Multi-Chip Package)接口标准、多媒体存储卡(Multi Media Card,MMC)接口标准、崁入式多媒体存储卡(Embedded Multimedia Card,eMMC)接口标准、通用快闪存储器(Universal Flash Storage,UFS)接口标准、嵌入式多芯片封装(embedded Multi ChipPackage,eMCP)接口标准、小型快闪(Compact Flash,CF)接口标准、整合式驱动电子接口(Integrated Device Electronics,IDE)标准或其他适合的标准。连接接口单元402可与存储器控制电路单元404封装在一个芯片中,或者连接接口单元402是布设于一包含存储器控制电路单元404的芯片外。
存储器控制电路单元404用以执行以硬件或固件型式实作的多个逻辑闸或控制指令并且根据主机系统11的指令在可复写式非易失性存储器模块406中进行数据的写入、读取与抹除等运作。
可复写式非易失性存储器模块406是耦接至存储器控制电路单元404并且用以存储主机系统11所写入的数据。可复写式非易失性存储器模块406可以是单阶存储单元(Single Level Cell,SLC)MAMD型快闪存储器模块(即,一个存储单元中可存储1个比特的快闪存储器模块)、多阶存储单元(Multi Level Cell,MLC)MAMD型快闪存储器模块(即,一个存储单元中可存储2个比特的快闪存储器模块)、复数阶存储单元(Triple Level Cell,TLC)MAMD型快闪存储器模块(即,一个存储单元中可存储3个比特的快闪存储器模块)、其他快闪存储器模块或其他具有相同特性的存储器模块。
图5A是根据本发明的一实施例所示出的存储器控制电路单元的概要方块图。
请参照图5A,存储器控制电路单元404包括存储器管理电路502、主机界面504、存储器接口506及错误检查与校正电路508。
存储器管理电路502用以控制存储器控制电路单元404的整体运作。具体来说,存储器管理电路502具有多个控制指令,并且在存储器存储装置10运作时,此些控制指令会被执行以进行数据的写入、读取与抹除等运作。以下说明存储器管理电路502的操作时,等同于说明存储器控制电路单元404的操作。
在本实施例中,存储器管理电路502的控制指令是以固件型式来实作。例如,存储器管理电路502具有微处理器单元(未示出)与只读存储器(未示出),并且此些控制指令是被烧录至此只读存储器中。当存储器存储装置10运作时,此些控制指令会由微处理器单元来执行以进行数据的写入、读取与抹除等运作。
在另一实施例中,存储器管理电路502的控制指令亦可以程序码型式存储于可复写式非易失性存储器模块406的特定区域(例如,存储器模块中专用于存放系统数据的系统区)中。此外,存储器管理电路502具有微处理器单元(未示出)、只读存储器(未示出)及随机存取存储器(未示出)。特别是,此只读存储器具有开机码(bootcode),并且当存储器控制电路单元404被致能时,微处理器单元会先执行此开机码来将存储于可复写式非易失性存储器模块406中的控制指令载入至存储器管理电路502的随机存取存储器中。之后,微处理器单元会运转此些控制指令以进行数据的写入、读取与抹除等运作。
此外,在另一实施例中,存储器管理电路502的控制指令亦可以一硬件来实作。例如,存储器管理电路502包括微控制器、存储单元管理电路、存储器写入电路、存储器读取电路、存储器抹除电路与数据处理电路。存储单元管理电路、存储器写入电路、存储器读取电路、存储器抹除电路与数据处理电路是耦接至微控制器。其中,存储单元管理电路用以管理可复写式非易失性存储器模块406的实体抹除单元;存储器写入电路用以对可复写式非易失性存储器模块406下达写入指令序列以将数据写入至可复写式非易失性存储器模块406中;存储器读取电路用以对可复写式非易失性存储器模块406下达读取指令序列以从可复写式非易失性存储器模块406中读取数据;存储器抹除电路用以对可复写式非易失性存储器模块406下达抹除指令序列以将数据从可复写式非易失性存储器模块406中抹除;而数据处理电路用以处理欲写入至可复写式非易失性存储器模块406的数据以及从可复写式非易失性存储器模块406中读取的数据。写入指令序列、读取指令序列及抹除指令序列可各别包括一或多个程序码或指令码并且用以指示可复写式非易失性存储器模块406执行相对应的写入、读取及抹除等操作。
主机界面504是耦接至存储器管理电路502并且用以接收与识别主机系统11所传送的指令与数据。也就是说,主机系统11所传送的指令与数据会通过主机界面504来传送至存储器管理电路502。在本实施例中,主机界面504是相容于SATA标准。然而,必须了解的是本发明不限于此,主机界面504亦可以是相容于PATA标准、IEEE 1394标准、PCI Express标准、USB标准、SD标准、UHS-I标准、UHS-II标准、MS标准、MMC标准、eMMC标准、UFS标准、CF标准、IDE标准或其他适合的数据传输标准。
存储器接口506是耦接至存储器管理电路502并且用以存取可复写式非易失性存储器模块406。也就是说,欲写入至可复写式非易失性存储器模块406的数据会经由存储器接口506转换为可复写式非易失性存储器模块406所能接受的格式。具体来说,若存储器管理电路502要存取可复写式非易失性存储器模块406,存储器接口506会传送对应的指令序列。例如,这些指令序列可包括指示写入数据的写入指令序列、指示读取数据的读取指令序列、指示抹除数据的抹除指令序列、以及用以指示各种存储器操作(例如,改变读取电压电平或执行垃圾回收程序等等)的相对应的指令序列,在此不一一赘述。这些指令序列例如是由存储器管理电路502产生并且通过存储器接口506传送至可复写式非易失性存储器模块406。这些指令序列可包括一或多个信号,或是在总线上的数据。这些信号或数据可包括指令码或程序码。例如,在读取指令序列中,会包括读取的识别码、存储器地址等信息。
错误检查与校正电路508是耦接至存储器管理电路502并且用以执行错误检查与校正程序以确保数据的正确性。具体来说,当存储器管理电路502从主机系统11中接收到写入指令时,错误检查与校正电路508会为对应此写入指令的数据产生对应的错误更正码(error correcting code,ECC)和/或错误检查码(error detecting code,EDC),并且存储器管理电路502会将对应此写入指令的数据与对应的错误更正码和/或错误检查码写入至可复写式非易失性存储器模块406中。之后,当存储器管理电路502从可复写式非易失性存储器模块406中读取数据时会同时读取此数据对应的错误更正码和/或错误检查码,并且错误检查与校正电路508会依据此错误更正码和/或错误检查码对所读取的数据执行错误检查与校正程序。
在本实施例中,错误检查与校正电路508所使用的是低密度奇偶检查码(lowdensity parity code,LDPC)。然而,在另一实施例中,错误检查与校正电路508所使用的也可以是BCH码、回旋码(convolutional code)、涡轮码(turbo code)、比特翻转(bitflipping)等编/解码算法。
在一实施例中,存储器控制电路单元404还包括缓冲存储器510与电源管理电路512。缓冲存储器510是耦接至存储器管理电路502并且用以暂存来自于主机系统11的数据与指令或来自于可复写式非易失性存储器模块406的数据。电源管理电路512是耦接至存储器管理电路502并且用以控制存储器存储装置10的电源。
在本实施例中,存储器管理电路502会配置逻辑单元来映射至可复写式非易失性存储器模块406中的实体单元。例如,在本实施例中,主机系统11是通过逻辑地址来存取可复写式非易失性存储器模块406中的数据,因此,每一个逻辑单元是指一个逻辑地址。然而,在另一实施例中,每一个逻辑单元也可以是指一个逻辑扇、一个逻辑页或者由多个连续的逻辑地址组成。每一个逻辑单元是映射至一或多个实体单元。在本实施例中,一个实体单元是指一个实体区块。然而,在另一实施例中,一个实体单元也可以是一个实体地址、一个实体扇、一个实体页或者是由多个连续的实体地址组成,本发明不加以限制。
存储器管理电路502会将逻辑单元与实体单元之间的映射关系记录于一逻辑-实体映射表。当主机系统11欲从存储器存储装置10读取数据或写入数据至存储器存储装置10时,存储器管理电路502可根据此逻辑-实体映射表来执行对于存储器存储装置10的数据存取。
图5B是根据本发明的一实施例所示出的存储器控制电路单元的错误检查与校正电路的方块示意图。请参照图5B,错误检查和校正电路508包括用于处理解码操作的解码器5081和用于处理编码操作的编码器5082。更具体地,错误检查和校正电路508使用准循环LDPC(QC-LDPC)算法多次执行迭代解码操作以解码待解码的码字,并且下面的实施例中的解码器5081例如是QC-LDPC解码器。
在该实施例中,由错误检查和校正电路508对一个数据(码字)执行的解码操作包括初始校验子计算操作,该初始校验子计算操作可用于获得用于确定解码是否正确的最终校验子。然后,可以根据解码是否正确来确定是否需要执行一个或多个后续的迭代操作。每次(每轮)迭代操作结束时,计算对应于当前码字的最终校验子,以便确定当前迭代操作是否成功。如果解码成功(在解码之后产生的码字是正确的,即有效码字),则结束当前的迭代操作,并且也结束对该码字的整个解码操作;如果解码失败(在解码之后产生的码字不正确,即无效的码字),则结束当前的迭代操作,并重新开始一个新的(下一轮)迭代操作。
在本实施例中,将记录在每个解码操作中所执行的多个迭代操作的总数目。在每个解码操作中,连续执行迭代操作,直到迭代操作的总数目达到预设上限值。制造商可以根据需求设置预设上限值,本发明不限于此。错误检查与校正电路508所使用的LDPC算法的进一步细节将随着之后的图6来解释。
图5C是根据本发明的一实施例所示出的错误检查与校正电路的解码器的方块示意图。请参考图5C,在本实施例中,解码器5081包括解码控制器581,缓冲器582,检查节点电路583,变量节点电路584,置换电路585,校验子计算电路586和终止电路587。解码控制器581耦接(电性连接)至缓冲器582,检查节点电路583,变量节点电路584,置换电路585,校验子计算电路586和终止电路587。
解码控制器581,用以根据存储器管理电路502发出的指令,来管理所执行的解码过程的整个过程。此外,解码控制器581被配置为接收要解码的码字(也称为目标码字),并根据(默认)奇偶检查矩阵(也称为稀疏奇偶检查矩阵或检查矩阵)将码字的多个数据比特值(例如,有n个数据比特值)分组为多个数据比特值组(例如,M个数据比特值组,其中M=n/Z)。例如,根据码字中的所有数据比特值的序列,从第一数据比特值开始,每Z个数据比特值被分组为一个数据比特值组。
在本实施例中,可复写式非易失性存储器模块406包括多个实体页面,这些实体页面将被分组为多个实体区块。每个实体页面的长度(空间)被预设为页面大小。每个实体页面用以存储多个码字。
缓冲器582被用以暂时存储数据,例如对应于码字的多个变量(或多个变量群组),检查矩阵,对数似然比(LLR)表或在解码过程中使用的其他合适的数据。
在本实施例中,解码控制器581还用以在开始对目标码字执行解码过程的同时对目标码字执行初始化(initialization)。在初始化期间,解码控制器581用以通过例如根据目标码字查找所存储的解码表来获得多个变量,其中通过初始化获得的变量也称为初始变量。在一实施例中,解码表是LLR表,并且初始变量是与目标码字的那些数据比特值对应的LLR。每个LLR表示相应数据比特值的可靠度(可靠值)。每个LLR的值可以由多个比特设置,并且一个LLR的值的比特数目可由预设精细度来被预先决定。例如,假设预设精细度为5,并且一个LLR的该5位值的范围可以设置为-16到15(范围的总大小是32,即25),其中一个LLR的五个比特值是Ln(PR0/PR1)的计算结果,其中PR0表示码字的所述数据比特值为“0”的可能性,PR1表示所述码字的数据比特值为“1”的可能性。PR0加PR1等于1。换句话说,如果一个数据比特值的LLR是-16,则所述数据比特值最可能是1;如果一个数据比特值的LLR为15,则所述数据位值最可能为0;如果一个数据位值的LLR为0,则所述数据比特值为1的可能性和所述数据比特值为0的可能性是相同的。
根据检查矩阵的子矩阵的预设维度值(Z),解码控制器581将多个变量分组为多个变量群组。例如,假设预设维度值为256,并且数据比特值的数目为18432。通过初始化,可获得对应于18432个数据比特值的18432个变量(初始变量),并且18432个初始变量将被分组至72个初始变量群组(例如,18432/256=72)。
检查节点电路583用以对多个变量群组的多个层执行极值搜索操作,以找到对应每个层的多个最小值(极值)。更具体地,在初始化之后,解码控制器581将初始变量群组发送到置换电路585,以根据检查矩阵对这些初始变量群组执行移位操作,以获得多个已移位变量群组。在移位操作之后,检查节点电路583对多个已移位变量群组的多个层执行极值搜索操作,以找到与已移位变量群组的每个层相对应的多个最小值(极值)。
变量节点电路584用以将多个最小值加到移位变量群组的各层,以获得多个检查变量群组。
置换电路585用以对每个变量群组的多个输入变量执行移位操作,以根据检查矩阵输出每个已移位变量群组的多个已移位变量。
校验子计算电路586用以根据检查矩阵分别对检查变量群组依次进行校验子计算操作,以得到多个临时校验子和对应目标码字的最终校验子。
终止电路587,用以根据对应目标码字的最新获得的最终校验子来确定是否结束对当前目标码字所执行的解码过程。更具体地,终止电路587判断最终校验子中的多个值是否皆为零(即,“0”)。如果最终校验子中的值全部为零,则终止电路587将目标码字判定为正确,并且终止电路587指示解码控制器581终止整个解码过程并输出最终所解码的目标码字(解码过程的当前迭代操作结束,并且不会执行下一个迭代操作);如果最终校验子中的值不全为零(即,包括一个或多个“1”),则终止电路587将目标码字判定为不正确,并且终止电路587指示解码控制器581结束解码过程的当前迭代操作,并执行下一个迭代操作。换句话说,终止电路587可以根据每次获得的最新的最终校验子来判断是否终止整个解码操作。另一方面,终止电路587可以响应于所执行的迭代解码操作的数量(次数)超过预设阈值而终止整个解码操作。
奇偶检查矩阵是由M*M个奇偶检查子矩阵(也称为子矩阵)组成的矩阵。Z是奇偶检查矩阵的奇偶检查子矩阵的矩阵大小(预设维度值)(例如,奇偶检查子矩阵是大小为ZⅹZ的矩阵),并且数据比特值组中的数据比特值的总数目是Z。数据比特值包括比特值“0”和比特值“1”。
图5D是根据本发明的一实施例所示出的解码器设计方法的流程图。请参照图5D,在步骤S511中,将可复写式非易失性存储器模块的实体页面的大小识别为页面大小,其中实体页面用以存储多个码字。接着,在步骤S512中,根据实体页面中的多个码字的数量和所述页面大小,获取每个码字的长度作为码字长度。例如,假设每个实体页面的大小是18432比特组,并且每个实体页面用以存储8个码字。因此,码字长度将是2304(即,18432/8)比特组。换句话说,所读取的目标码字的码字长度为18432个比特(2304*8=18432)。
接着,在步骤S513中,识别QC-LDPC解码器的预定检查矩阵,其中检查矩阵包括MⅹM个子矩阵,其中每个子矩阵是ZⅹZ矩阵,其中Z是预设维度值,每个子矩阵的预设维度值是经由将码字长度除以M所获得的商值。M是由QC-LDPC解码器的制造商设置的预定值(正整数)。继续前述示例,进一步假设检查矩阵是8×72矩阵(即,M=8,并且M=72)。因此,校验矩阵的每个子矩阵的预设维度值是256(即,Z=18432/72=256)。
接着,在步骤S514中,根据所述预设维度值来计算一第一数值,并且根据所述第一数值、所述预设维度值和所述检查矩阵的移位类型识别第一置换网络,其中所述第一置换网络包括依序排列的多个第一置换层,所述第一置换层中的每一个第一置换层具有相同数量的第一节点,其中第一置换层的数量由第一数值所设置,并且每个第一置换层的第一节点的数量由预设维度值所设置,其中所述多个第一置换层中的一个第一置换层的每一个第一节点连接至下一个第一置换层的一对第一节点。
更具体地,第一数值(在尔后的计算公式中也表示为“A”)是Log2(Z)的计算结果(例如,前述示例的第一数值将是Log2(256)=8)。在一实施例中,第二数值(在下文中计算公式中也称为“B”)是经由对第一数值减去1来获得的(如,8-1=7)。尔后,所述第二数值可用以表示第二置换网络中的所有的第二置换层的总数量。
图5E是根据本发明的一实施例所示出的解码器的置换电路的第一置换网络的示意图。参考图5E,为了便于说明第一置换网络的体系结构,假设图5E中的例子的检查矩阵具有128个子矩阵的4×36矩阵(例如,M=4且M=36),码字长度是288比特,并且预设维度值是8(例如,288/36=8)(步骤S513)。因此,第一数值将是3(Log2(8)=3)(步骤S514)。第一置换网络中的多个第一置换层的数量由第一数值(等于第一数值)来决定,并且每个第一置换层的多个节点的数量是相同的,并且所述多个节点的所述数量将由预设维度值所设置(等于预设维度值)。
举例来说,第一置换网络5851'具有3个第一置换层5851'(0)至5851'(2),并且第一置换层5851'(0)至5851'(2)中的每一个第一置换层皆具有8个第一节点(例如,第一置换层5851'(0)具有8个第一节点590'(1)至590'(8);第一置换层5851'(1)具有8个第一节点591'(1)至591'(8);第一置换层5851'(2)具有8个第一节点592'(1)至592'(8))。应当注意的是,一个第一置换层的一个节点与下一个第一置换层的节点之间的连接关系被设置用于连接输入节点(与输入端相连接的节点)至多个输出节点(与输出端相连接的节点),其中输入节点的顺序和所连接的输出节点之一的顺序之间的差异可以被表示为三种移位类型中的一种。所述三种移位类型包括一般移位类型,偶数移位类型和奇数移位类型。例如,以第一节点590'(1)为例,第一节点590'(1)是第一置换网络中的输入节点,输入节点590'(1)的顺序为“1”,第一节点590'(1)连接到4个输出节点592'(1),592'(3),592'(5)和592'(7),其中输出节点592'(1)的顺序是“1“;输出节点592'(3)的顺序为“3”;输出节点592'(5)的顺序为“5”;输出节点592'(7)的顺序是“7”。输入节点590'(1)的顺序与输出节点592'(1)的顺序之间的差值为0;输入节点590'(1)的顺序与输出节点592'(3)的顺序之间的差值为2;输入节点590'(1)的顺序与输出节点592'(5)的顺序之间的差值为4;输入节点590'(1)的顺序与输出节点592'(7)的顺序之间的差异是6。
换句话说,一个输入节点590'(1)的顺序与连接的输出节点592'(1),592'(3),592'(5)和592'(7)的顺序之间的差异都是偶数值(即:0,2,4,6),因此,在这个例子中,输入节点的顺序和连接的输出节点之一的顺序之间的差异可以被表征(归类)为偶数移位类型。因此,第一置换网络5851'将被识别为对应于QC-LDPC解码器的偶数移位类型校验矩阵的第一置换网络。此外,第一置换网络将以类似的方式被识别为对应于“奇数”移位类型校验矩阵,识别的细节相似于上述方法,省略于此。另外,在另一个第一置换网络中,如果一个输入节点的顺序与所连接的输出节点的顺序之间的差异可以形成诸如“0,1,2,...,Z”的序列,则将识别该第一置换网络为对应于一般移位类型校验矩阵。关于不同移位类型校验矩阵的细节将下面的图14A和14B进行解释。
此外,应当注意的是,如图5E所示,第一置换层之一的每个第一节点连接到下一个第一置换层中的一对第一节点。例如,由于第一置换层5851'(1)布置在第一置换层5851'(0)之后(多个第一置换层中的第一置换层5851'(1)是第一置换层5851'(0)的下一个置换层),第一节点590'(1)连接到一对第一节点591'(1)和591'(5);第一节点590'(2)连接到一对第一节点591'(2)和591'(6);第一节点590'(3)连接到一对第一节点591'(3)和591'(7);第一节点590'(4)连接到一对第一节点591'(4)和591'(8);第一节点590'(5)连接到一对第一节点591'(1)和591'(5);第一节点590'(6)连接到一对第一节点591'(2)和591'(6);第一节点590'(7)连接到一对第一节点591'(3)和591'(7);第一节点590'(8)连接到一对第一节点591'(4)和591'(8)。输入到一个第一置换层的第一节点的变量的比特值将被输入(发送)到连接到所述一个第一置换层的下一个置换层中的所述第一节点对中的被选择的一个第一节点。例如,根据解码控制器581对设置于第一节点590'(1)上的选择器所发出的选择指令,输入到第一节点590'(1)的比特值将被发送到第一节点591'(1)或第一节点591'(5)。
接着,在步骤S515中,根据所述检查矩阵的所述移位类型识别所述第一置换网络的所述多个第一置换层中的目标第一置换层,并经由从所述第一置换网络中去除所述目标第一置换层来建构第二置换网络。
例如,参考图5E,在本实施例中,将根据校验矩阵的移位类型识别第一置换网络的所有第一置换层中的目标层(也称为目标第一置换层)。更详细地,假设在检查矩阵是偶数类型的情况下,所述多个第一置换层的最后一个第一置换层5851'(2)将被识别为目标第一置换层。然后,为了建构第二置换网络,将从第一置换网络中移除所识别的目标第一置换层。换句话说,在从第一置换网络5851'移除目标第一置换层5851'(2)之后,原始第一置换网络5851'的剩余第一置换层5851'(0)至5851'(1)将变为第二置换层5851(0)和5851(1),以形成第二置换网络5851(如图5F所示)。并且,在包含第二置换网络5851的置换电路585中,根据第一置换层5851'(1)中的第一节点和目标第一置换层5851'(2)中的第一节点的连接关系,将输出端Y1至Y8替换所述目标第一置换层5851'(2)以连接到第二置换层5851(1)。
图5F是根据本发明的一实施例所示出的解码器的置换电路的第二置换网络的示意图。参考图5F,所建构的第二置换网络5851包括2个(如,第二数值(B)是2)第二置换层5851(0)(从第一置换层5851'(0)所转换)和5851(1)(从第一置换层5851'(1)所转换),其中8个(例如,预设维度值为8)第二节点590(1)至590(8)(从第一节点590'(1)至590'(8)所转换)被设置在第二置换层5851(0)上,并且另外的8个第二节点591(1)至591(8)(从第一节点591'(1)至591'(8)所转换)被设置在第二置换层5851(1)上。
请回到图5D,在步骤S516中,设置多个选择器于所述置换电路的所述第二置换网络的多个第二节点上,并且根据所述第二置换网络将多条路由线设置到所述置换电路中以连接所述多个选择器,其中所述多个选择器更分别连接至所述QC-LDPC解码器的解码控制器,其中所述解码控制器用以控制所述选择器来将对应一目标码字的多个第一变量群组移位成为多个第二变量群组,其中所述多个第二变量群组根据对应所述多个第一变量群组与所述多个第二变量群组的多个目标偏移量分别被移位,其中所述多个目标偏移量是根据所述检查矩阵所识别的。
具体来说,所提供的置换电路由所建构的第二置换网络所形成,而不是由第一置换网络所形成。所建构的第二置换网络将被设置在置换电路中的多个输入端和多个输出端之间。更详细地,第二置换网络的多个第二置换层中的第一个第二置换层中的每个第二节点连接到置换电路的多个输入端,并且多个第二置换层中的最后一个第二置换层中的每个第二节点连接至置换电路的多个输出端中的两个。
图5G是根据本发明的一实施例所示出的解码器的置换电路的示意图。请参考图5G,继续图5F中的例子。如图5G所示,第二置换网络5851布置在多个输入端X1至X8与多个输出端Y1至Y8之间。例如,如图5G所示,第二置换层5851(0)是置换网络5851的多个第二置换层5851(0)至5851(1)中的第一个置换层,第二置换层5851(1)是置换网络5851的多个第二置换层5851(0)至5851(1)中的最后一个置换层。第二节点590(1)至590(8)分别连接到输入端X1至X8,第二节点591(1)连接到输出端Y1和Y3;第二节点591(2)连接到输出端Y2和Y4;第二节点591(3)连接到输出端Y1和Y3;第二节点591(4)连接到输出端Y2和Y4;第二节点591(5)连接到输出端Y5和Y7;第二节点591(6)连接到输出端Y6和Y8;第二节点591(7)连接到输出端Y7和Y5;第二节点591(8)连接到输出端Y6和Y8。
此外,在本实施例中,根据所建构的置换网络的架构,置换电路的主要硬件元件,选择器,将被设置于置换电路中。首先,将根据变量的特征来决定一个节点上的一组选择器的数量。更具体地,一组选择器设置在置换网络的每个节点上,并且每个节点上的每组选择器的数量由与变量相关的预设精细度决定。如前所述,预设精细度用于设置与变量对应的比特值的数量。当变量输入到一个节点时,该一个节点上的一组选择器将所述被输入的变量的每个比特值发送(移位)到下一个置换层的另一个节点上的另一组选择器,因此,一个节点上的一组选择器的数量需要等于一个变量的比特值的数量(即,一个节点上的多个选择器的数量被设定为等于预设精细度)。因此,可以根据预设维度值,预设精细度和第二数值来确定置换电路的置换网络的全部的节点中的全部的选择器的总数目。更详细地,置换电路的置换网络的全部节点中的全部的选择器的总数量是经由(Z*B*F)的计算结果来设定的,其中Z是预设维度值,B是第二数值,F是预设精细度。
另一方面,配置为连接到置换电路中的硬件元件的路由线也是另一个重要的硬体元件,并且路由线的数量将由置换网络的每个置换层中的选择器的数量来决定。
图17是根据本发明的一实施例所示出的在所提供的置换电路的第二置换网络中的多个选择器与连接至所述多个选择器的路由线的连接关系的示意图。
请参照图17,以第二置换网络的一部分为例,对于第二置换网络5851的第二个置换层5851(0)的节点上的每个选择器,第一个第二置换层中的一个选择器(例如,节点590(1)上的选择器)总共需要四条路由线,包括:(1)一条路由线(例如,路由线IW_590(1)),用于连接输入端X1和在所述第一个第二置换层的节点590(1)上的所述选择器;(2)一条路由线(例如,路由线CW_590(1)),用于连接解码控制器581和第一个第二置换层的节点590(1)上的所述选择器;(3)两条路由线(例如,路由线OW1_590(1)和OW2_590(1)),用于分别将第一个第二置换层的节点590(1)上的所述选择器连接到两个节点上的两个选择器591(1)和591(5)。
此外,对于第二置换网络5851的第一个第二置换层之外的其余第二置换层(例如,第二置换层5851(1))的第二节点上的每个选择器,所述另一个第二置换层5851(1)的选择器(例如,第二节点591(1)上的选择器)总共需要三条路由线,包括:(1)一条路由线(例如,路由线CW_591(1)),用于连接解码控制器581与第二置换层5851(1)的节点591(1)上的所述选择器;(2)两条路由线(例如,路由线OW1_591(1)和OW2_591(1)),用于分别将第二置换层5851(1)的节点591(1)上的所述选择器连接到置换电路的两个输出端Y1与Y3(注意:如果在第二置换层5851(1)之后存在一个第二置换层,则分别连接至第二置换层5851(1)的所述下一个第二置换层的两个节点上的两个选择器)。
简而言之,连接到第二置换网络的第一个第二置换层中的每个选择器的路由线的数量是4,连接到第二置换网络的其余第二置换层中的每个选择器的路由线的数量是3。在本实施例中,根据第一个第二置换层中的选择器的数量和其他第二置换层中的选择器的数量以决定用于连接置换电路中的全部选择器的全部路由线的数量。换句话说,根据预设维度值,预设精细度和第二数值计算对应第二置换网络的全部选择器的全部路由线的总数量。更详细地,所有路由线的总数量可经由(Z*F+3*T)的计算结果来设定,并且T是第二置换网络的所有选择器的数量(即,T=Z*B*F)。
采用图5G中的整个置换电路585为例子,其中所输入的变量的比特总量(PresetFineness value,F)等于5;子矩阵的预设维度值(Z)等于8;置换层的数量(第二数值,B)等于2。置换网络的全部选择器的数量将由(Z*B*F)来决定,其结果为80(即,T=80);以及全部选择器的全部路由线的总数量(以下也称为“W”)将由(Z*F+3*T)来决定,其结果为280。
在本实施例中,在置换电路的所有选择器的量(T),置换电路的所有相应路由线的量(W)以及选择器,解码控制器,输入端和输出端之间的连接关系(如,经由路由线所实施的连接关系)被决定之后,T个选择器和W个路由线将根据所建构的第二置换网络被设置到置换电路中,从而完成置换电路的设计。
应该提到的是,选择器例如是具有一个输入端子,两个输出端子和一个控制端子的基本开关。控制端子电电性连接至解码控制器,以便从解码控制器接收选择指令(也称为选择信号),其中选择器可以根据选择指令将输入端子连接到两个输出端子之一,以使输入到输入端的比特值将经由被选择指令所选择的两个输出端的其中之一输出。选择器的输入端子经由路由线电性连接至置换电路的输入端,或者经由路由线电性连接至选择器所属的置换层之前的另一置换层中的选择器的输出端子。选择器的两个输出端子通过路由线电性连接至置换电路的两个输出端,或者通过路由线分别电性连接至下一个置换层中不同节点上的两个选择器的输入端子。
此外,如上所述,解码控制器581还被配置为通过向选择器发出选择指令来控制选择器将对应于目标码字的多个第一变量群组移位为多个第二变量群组,并且“将对应所述目标码字的多个第一变量群组移位为多个第二变量群组”的步骤包括以下步骤(1)至(3)。
步骤(1),解码控制器分别将第一变量群组之一的所有变量输入到不同的输入端,其中所有输入的变量分别经由所有的输入端被传输至第一个置换层的所有节点。
接着,在步骤(2)中,由置换网络中的选择器经由对应多个第一变量群组的其中之一的一个移位差值对所有输入的变量进行移位。
接着,在步骤(3)中,分别输出来自不同输出端的所有移位变量作为对应于第一变量群组之一的第二变量群组,其中所有移位变量分别由选择器在最后一个置换层的所有节点上传输到输出端,其中所述一个移位差值由对应于所述第一变量群组之一的第一目标偏移量和对应于所述第二变量群组的第二目标偏移量之间的差值来决定,其中第一目标偏移量是根据预定检查矩阵的多个子矩阵中对应所述第一变量群组之一的第一子矩阵来被识别的,并且所述第二目标偏移量是根据预定检查矩阵的多个子矩阵中对应所述第二变量群组的第二子矩阵来被识别的。
举例来说,请再参考图5G,例如,在本实施例中,由解码控制器输入到置换电路585的输入端X1至X8的变量群组V(1)被称为第一变量群组,第一变量群组V(1)的变量V(1)_1到V(1)_8按预定顺序排列(例如,如图5G所示,变量V(1)_1是第一个变量,变量V(1)_8是最后一个变量)。变量V(1)_1至V(1)_8根据其预定顺序分别输入到输入端X1至X8(步骤(1))。输入端X1至X8将变量V(1)_1至V(1)_8传送到置换电路585的第一个第二置换层5851(1)。此外,由置换电路585根据移位差“2”对所输入的第一变量群组V(1)进行移位而获得已移位变量群组V(1)'(步骤2),并将变量群组V(1)'从输出端Y1至Y8输出,其中利用预定顺序(也是X1至X8,或Y1至Y8的顺序),从输出端Y1至Y8输出已移位变量群组V(1)'的变量V(1)_7至V(1)_6(步骤3)。已移位变量组V1(1)'可以被称为具有根据预定顺序排列的变量V(2)_1至V(2)_8的第二变量组V(2),其中变量V(2)_1到V(2)_8实际上等于已移位变量组V(1)'的变量V(1)_7到V(1)_6。应当注意,输入到具有预定顺序“1”的输入端X1的V(1)_1从具有预定顺序“3”的输出端Y3被输出。换句话说,比特V(1)_1从顺序“1”移位到顺序“3”,即,比特V(1)被移位了“2”(3-1=2)移位差值。下面将利用图14A和图14B解释关于检查矩阵的移位差值和移位类型的更多细节。
图14A是根据本发明的一实施例所示出的经由具有对应偶数移位类型检查矩阵的所提供的第二置换网络的置换电路所执行的变量群组的移位操作的示意图。图14B是根据本发明的一实施例所示出的经由具有对应一般移位类型检查矩阵的传统置换网络的置换电路所执行的变量群组的移位操作的示意图。
请参照图14A,假设经由解码控制器581通过根据目标码字的数据比特值查找解码表来获得初始变量组IV(1)至IV(M)中的所有变量。然而,本发明不限于此,例如,在一实施例中,目标码字的数据比特值中的全部的“1”被转换为“-Q”作为变量,并且目标码字的数据比特值中的全部的“0”被转换为“Q”作为变量。其中,Q是预定参数值。如此一来,可获得多个转换后的数据比特值作为变量。
此外,假设检查矩阵1400(其是M×M矩阵)包括子矩阵组(也称为子矩阵层)1410(1)至1410(M)。每个子矩阵组1410(1)至1410(M)包括M个子矩阵。在图14A中,每个块表示子矩阵,并且每个子矩阵的默认维度值是256(即,每个子矩阵是256×256的矩阵)。在图14A中,每个子矩阵(即,每个块)中的值是指对应于每个子矩阵的变量群组的目标偏移量。例如,在子矩阵组1410(1)的所标记的值108,118,28,......和118用以表示从多个初始第一变量群组IV(1)至IV(M)通过置换电路585所偏移的多个第二变量群组的目标偏移量。检查矩阵的相同行的目标偏移量指示对应于同一列中的子矩阵的已移位变量群组从相同列的相同初始变量群组移位的偏移量。例如,具有目标偏移量“216”的变量群组是通过将初始变量组IV(2)移位偏移量“216”而获得的变量群组(目标偏移量“216”是与IV(2)的偏移量)。此外,具有目标偏移量“216”的变量群组可以经由对具有目标偏移量“118”的已移位变量组移位一个移位差值“98”(216-118=98)来获得的。因为,具有目标偏移量“118”的已移位变量组已经从初始变数群组被偏移了移位差值“118”。
换句话说,校验矩阵的相同行的多个目标偏移量指示对应于同一行中的多个子矩阵的多个已移位变量群组从相同行的相同初始变量群组所移位的偏移量。例如,目标偏移“108”,“120”,......,“240”的已移位变量群组可视为经由从检查矩阵的第一行的相同的初始变量组IV(1)移位“108”,“120”,......,“240”移位差值所获得的已移位变量群组。
在本实施例中,初始变量群组的目标偏移量被预设为0。移位差值是对差值进行与置换网络大小(也称为预设维度值,即Z)的模运算所获得的值。所述差值是经由对第二变量群组的目标偏移(也称为第二目标偏移量)减去第一变量群组的目标偏移(也称为第一目标偏移量)所获得的。例如,“(124)”是经由对差值进行与“256”的模运算(运算符号“mod”)所获得的。所述差值是经由对“108”减去“240”得到的,即,“-132”。对“-132”进行与“256”的模运算的结果为“124”(-132mod256=124)。
图14A中的箭头标记“→”表示移位的方向,箭头标记处的标记“()”中的数字表示第一目标偏移量和第二目标偏移量之间的移位差值。例如,“IV(1)→108”表示初始变量群组中的所有变量被移位一个移位差值“108”(初始变量群组的目标偏移量为0),成为第二目标偏移量为“108”的第二变量群组;“108→120”表示第一目标偏移量为“108”的变量群组中的所有变量被移位一个移位差“12”(120-108=12),以变为第二目标偏移量为“120”的第二变量群组。应该提到的是,解码控制器581根据由相应子矩阵的目标偏移量所确定的移位差值向选择器发出选择指令(选择信号),使得置换电路585中的整个选择器可以经由移位差值来移位所输入的第一变量群组以输出第二变量群组。
在本实施例中,通过预先确定(设计)QC-LDPC解码器使用的检查矩阵来设置与检查矩阵的每个子矩阵相对应的所有的目标偏移量的值。具体来说,每个目标偏移量被设置在置换网络大小范围内,其中置换网络大小范围被设置为0到Z-1。此外,对应两个目标偏移量之间的移位差值的值被设置在置换网络移位范围内,并且移位差值会依据检查矩阵的移位类型来被决定。
更详细地,如果校验矩阵是偶数移位类型检查矩阵,则将所有移位差中的每一个设置为0到(Z-1)范围内的偶数值。例如,参考图14A,对应于检查矩阵的所有子矩阵的每个目标偏移量是在置换网络大小范围内(即,0到255)的值,并且每个相应的移位差值是在置换网络大小范围内的“偶数”值(置换网络移位范围)。然而,用于设计校验矩阵的其他特征不是本公开的主要概念,并且在此省略相应的细节。在一些实施例中,对应于校验矩阵的所有子矩阵中的若干子矩阵的目标偏移将被设置为空值(例如,对应的移位差将为0)。
类似地,如果检查矩阵是奇数移位类型检查矩阵,则对应于检查矩阵的所有子矩阵的每个目标偏移量是置换网络大小范围内的值(即,0到Z-1),并且每个相应的移位差值是置换网络大小范围内的“奇数”值(即,0到(Z-1)内的奇数值)。
应该提到的是,若对应于检查矩阵的所有移位差是偶数,则检查矩阵的移位类型是偶数移位类型,并且目标第一置换层是对应于偶数移位类型校验矩阵的所识别的第一置换网络的多个第一置换层中的最后一个;如果对应于检查矩阵的所有移位差是奇数,则检查矩阵的移位类型是奇数移位类型,并且目标第一置换层是对应于奇数移位类型校验矩阵的所识别的第一置换网络的多个第一置换层中的最后一个。
参见图14B,如果检查矩阵是由现有技术设计的传统检查矩阵的一般移位类型矩阵,则对应于检查矩阵的所有子矩阵的每个目标偏移量可以是置换网络大小范围内的任意值(即,如图14B所示,每个相应的移位差值是置换网络大小范围内的值(任何整数)(即,0到(Z-1)内的任意数值)。在此例子中,移位差值不会仅是偶数值(偶数移位类型)或仅是奇数值(奇数移位类型)。
另外,参考图14A,移位顺序是从左到右,从上到下。例如,根据移位差值“109”,通过置换电路对初始变量群组IV(1)进行第一组移位操作,以获得具有第二目标偏移量“108”的相应第二变量群组;接下来,根据移位差值“118”通过置换电路来移位初始变量群组IV(2),以便获得具有第二目标偏移“118”的相应第二变量群组,依此类推,可从具有目标偏移0,0,0,...,0的(第一)初始变量组中获得得具有对应于子矩阵组1410(1)的目标偏移108,118,28,...,118的第二变量群组。对应于子矩阵组1410(2)的变量群组将以相同的方式从对应于子矩阵组1410(1)的变量群组被移位,依此类推,可获得对应于所有子矩阵的所有变量群组。在另一方面,对应于检查矩阵的第一行子矩阵的变量群组皆是从第一行的初始变量组IV(1)被移位的,对应于检查矩阵的第二行子矩阵的变量群组皆是从第二行的初始变量组IV(2)被移位的,以此类推。
以下将利用图15,图16A,图16B与图16C来说明所提供的解码器设计方法和使用所述解码器设计方法的解码器的置换电路的改进。
图15是根据先前技术所示出的解码器的置换电路的传统的置换网络的示意图。图16A是根据先前技术所示出的对应一般移位类型检查矩阵的传统的置换网络移位范围的示意图。图16B是根据本发明的一实施例所示出的对应偶数移位类型检查矩阵的所提供的置换网络移位范围的示意图。图16C是根据本发明的一实施例所示出的对应奇数移位类型检查矩阵的所提供的置换网络移位范围的示意图。
请参照图15,图5G中的所提供的置换电路585与图15中的传统的置换电路585'的差异在于其中的置换网络的架构是不同的。例如,如图15所示,传统置换电路的置换网络是不移除目标第一置换层的第一置换网络。例如,置换层5851'(0)是置换网络5851'的第一个置换层,置换层5851'(3)是置换网络5851'的最后一个置换层。节点590'(1)至590'(8)分别连接到输入端X1到X8,节点592'(1)连接到输出端Y1和Y2;节点592'(2)连接到输出端Y1和Y2;节点592'(3)连接到输出端Y3和Y4;节点592'(4)连接到输出端Y3和Y4;节点592'(5)连接到输出端Y5和Y6;节点592'(6)连接到输出端Y5和Y6;节点592'(7)连接到输出端Y7和Y8;节点592'(8)连接到输出端Y7和Y8。
换句话说,置换网络架构5851和5851'之间的差异是置换层的量。在现有技术中,传统置换网络5851'的置换层的数量由第一数值所设定。但是,所提供的置换电路的置换网络的置换层的数量是由第二数值(如,第一数值减1)所设定。换句话说,置换网络5851的置换层的总数量会小于为第一数值的置换网络5851'的置换层的总数量(相差一)。
由于本实施例所提供的置换网络具有较少数量的置换层,所以所有置换层的节点上的所有选择器的数量将相应地减少,并且连接到所有选择器的相应路由线也将减少。因此,所有选择器和路由线的硬件成本将大大降低,并且设置路由线的难度也会随着路由线的减少而降低(而且,置换电路的整个硬件尺寸也会相应地减小)。此外,功耗也会降低,因为用于执行移位操作的选择器减少并且所有路由线的总路由路径也减少,需要提供的用于执行整个移位操作的功率将减少,使得置换电路的功耗相应地降低。此外,随着置换电路的功耗降低,置换电路相应的发热会减少,从而降低置换电路的处理温度。
参考图16A和图16B,对于现有技术的置换网络5851',输入到端部X1的比特值可以被移位且从端部Y1到Y8被输出,Y1到Y8的范围是传统的置换移位范围。传统的置换移位范围也等于置换网络大小,使得传统置换网络可以称为全范围置换网络。此外,由于传统置换网络的移位差是置换网络移位范围的任何值,因此置换网络移位范围对应于“一般”移位类型检查矩阵。
另一方面,关于所提供的置换网络,若输入到末端X1的比特可以从一端Y1、Y3、Y5和Y7被移位和输出(移位差值被设定为在置换网络大小范围内的“偶数”,即,0、2、4、6),置换网络移位范围对应于“偶数”移位类型检查矩阵(如,图16B所示)。
此外,参照图16C,关于所提供的置换网络,若输入到末端X1的比特可以从一端Y2、Y4、Y6和Y8被移位和输出(移位差值被设定为在置换网络大小范围内的“奇数”,即,1、3、5、7),置换网络移位范围对应于“奇数”移位类型检查矩阵。
应当注意,检查矩阵的移位类型还可以包括P倍数移位类型,其中“P”表示P倍数移位类型的所有移位差值是P的倍数(P可以设定为正整数),并且将移位差值设定为置换网络大小范围0到Z-1内的P的倍数。并且,以与上述相同的方式根据P倍数移位类型检查矩阵识别对应的第一置换网络及其连接关系。例如,假设Z=8,P=3,则输入至输入端X1的一个比特值将由所建构的第二置换网络从输出端Y1,Y4和Y7之一被输出(对应的移位差值为0、3与6)。换句话说,若对应于检查矩阵的所有移位差是P的倍数,则检查矩阵的移位类型是P倍数移位类型。此外,目标第一置换层是对应于P倍数移位类型校验矩阵的所识别的第一置换网络的多个第一置换层中的最后一个。
以下根据图6至图13来描述关于在本公开的实施例中使用的LDPC算法的细节。应该提到的是,标记,例如,“k”,“n”,“M”,“P”,“G”,“H”等仅用于下面的实施例和相应的图中,仅具有解释的目的,本发明不限于此。
在本实施例中,错误检查与校正电路508会根据低密度奇偶检查码来编码与解码。在低密度奇偶检查码中,是用一个检查矩阵(亦称为奇偶检查矩阵)来定义有效的码字。以下将奇偶检查矩阵标记为矩阵H,并且一码字标记为CW。依照以下方程序(1),若奇偶检查矩阵H与码字CW的相乘是零向量,表示码字CW为有效的码字。其中运算子
表示模2(mod2)的矩阵相乘。换言之,矩阵H的零空间(null space)便包含了所有的有效码字(validcodeword)。然而,本发明并不限制码字CW的内容。例如,码字CW也可以包括用任意算法所产生的错误更正码或是错误检查码。
其中矩阵H的维度是k-乘-n(k-by-n),码字CW的维度是1-乘-n。k与n为正整数。码字CW中包括了讯息比特与奇偶比特,即码字CW可以表示成[MP],其中向量M是由讯息比特所组成,向量P是由奇偶比特所组成。向量M的维度是1-乘-(n-k),而向量P的维度是1-乘-k。以下将讯息比特与奇偶比特统称为数据比特。换言之,码字CW中具有n个数据比特,其中讯息比特的长度为(n-k)比特,并且奇偶比特的长度是k比特,即码字CW的码率(coderate)为(n-k)/n。
一般来说在编码时会使用一个产生矩阵(以下标记为G),使得对于任意的向量M都可满足以下方程序(2)。其中产生矩阵G的维度是(n-k)-乘-n。
由方程序(2)所产生的码字CW为有效的码字。因此可将方程序(2)代入方程序(1),藉此得到以下方程序(3)。
由于向量M可以是任意的向量,因此以下方程序(4)必定会满足。也就是说,在决定奇偶检查矩阵H以后,对应的产生矩阵G也可被决定。
在解码一个码字CW时,会先对码字中的数据比特执行一个奇偶检查程序,例如将奇偶检查矩阵H与码字CW相乘以产生一个向量(以下标记为S,如以下方程序(5)所示)。若向量S是零向量,则可直接输出码字CW。若向量S不是零向量,则表示码字CW中存在至少一个错误并且码字CW不是有效的码字。
向量S的维度是k-乘-1,其中每一个元素亦称为校验子(syndrome)。向量S亦称为校验子向量(或校验子集合)。若码字CW不是有效的码字,则错误检查与校正电路508会执行一个解码程序,以尝试更正码字CW中的错误。
图6是根据本发明的一实施例所示出的低密度奇偶检查码的置信传播(beliefpropagation)的示意图。
请参照图6,一般来说,奇耦检查矩阵H可以表示为置信传播图,其中包括奇偶节点601(1)~601(k)与讯息节点602(1)~602(n)。每一个奇偶节点601(1)~601(k)是对应到一个校验子,而每一个信息节点602(1)~602(n)是对应一个数据比特。数据比特与校验子之间的对应关系(即,信息节点602(1)~602(n)与奇偶节点601(1)~601(k)之间的连结关系)是根据奇偶检查矩阵H所产生。具体来说,若奇偶检查矩阵H中第i列(row)第j行(column)的元素为1,则第i个奇偶节点601(i)便会连接到第j个信息节点602(j),其中i与j为正整数。
当存储器管理电路502从可复写式非易失性存储器模块406中读取n个数据比特(形成一个码字)时,存储器管理电路502(或错误检查与校正电路508)也会取得每一个数据比特的可靠度信息(亦称为通道可靠度信息)。此可靠度信息是用以表示对应的数据比特被解码为比特”1”或是”0”的机率(或称信心度)。例如,在图6中,信息节点602(1)~602(n)会接收到对应的可靠度信息L1~Ln。其中,信息节点602(1)会接收第1个数据比特的可靠度信息L1,而信息节点602(j)会接收第j个数据比特的可靠度信息Lj。
错误检查与校正电路508会根据图6的结构与通道可靠度信息L1~Ln来执行解码程序。在本实施例中,错误检查与校正电路508所执行的解码程序为一迭代解码(iterativedecoding)程序。在迭代解码程序中,信息节点602(1)~602(n)会计算出可靠度信息给奇偶节点601(1)~601(k),并且奇偶节点601(1)~601(k)也会计算出可靠度信息给信息节点602(1)~602(n)。计算出来的可靠度信息会沿着这些图中的边(edge)来传送。例如,奇偶节点601(i)传送给信息节点602(j)的是可靠度信息Li→j,而信息节点602(j)传送给奇偶节点601(i)是可靠度信息Lj→i。这些可靠度信息是用来表示一个节点认为某一个数据比特被解码为“1”或是“0”的机率(或上述信心度)有多少。举例来说,可靠度信息Lj→i表示信息节点602(j)认为第j个数据比特被解码为“1”或是“0”的信心度(可为正或是负),而可靠度信息Li→j表示奇偶节点601(i)认为第j个数据比特被解码为“1”或是“0”的信心度。而信息节点602(1)~602(n)与奇偶节点601(1)~601(k)会根据输入的可靠度信息来计算输出的可靠度信息,其近似于计算一个数据比特被解码为“1”或是“0”的条件机率。因此,上述传送可靠度信息的过程又被称为置信传播。
当采用不同的算法,信息节点602(1)~602(n)和/或奇偶节点601(1)~601(k)会计算出不同的可靠度信息。例如,错误检查与校正电路508可以采用总和-乘积算法(Sum-Product Algorithm)、最小值-总和算法(Min-Sum Algorithm)、或是比特翻转(bit-flipping Algorithm),本发明并不限制采用何种算法。
在本实施例中,迭代解码程序中的迭代(iteration)会不断的重复执行,以更新至少部份数据比特的可靠度信息,直到成功地获得有效码字或执行迭代的次数到达一预定门槛值为止。例如,在迭代解码程序的每一次迭代中,信息节点602(1)~602(n)会传递可靠度信息给奇偶节点601(1)~601(k),并且奇偶节点601(1)~601(k)会传递可靠度信息给信息节点602(1)~602(n)。
在每一次迭代过后,错误检查与校正电路508会根据目前的可靠度信息计算出每一个数据比特应该被解码为比特“1”或是“0”并且对这些计算出的数据比特进行验证。例如,错误检查与校正电路508会执行奇偶检查程序以验证计算出的数据比特。在奇偶检查程序中,错误检查与校正电路508会将数据比特所形成的码字与相对应的奇偶检查矩阵相乘,藉此判断该码字是否为有效的码字。若所产生的码字为有效的码字,表示解码成功,并且迭代解码程序会停止。若所产生的码字不是有效的码字,则会进行下一次的迭代。此外,若迭代解码程序中的迭代次数超过一个预设值,则迭代解码也会停止,表示解码失败。
图7是根据本发明的一实施例所示出的奇偶检查矩阵的示意图。
请参照图7,奇偶检查矩阵700的维度是6-乘-9,但本发明并不限制正整数k与n为多少。奇偶检查矩阵700的每一列(row)亦代表了一个限制(constraint)。以奇偶检查矩阵700的第一列为例,若某一个码字是有效码字,则将此码字中第2、6及7个比特做模2(modulo-2)的加法之后,会得到比特“0”。在此领域技术人员应能理解如何用奇偶检查矩阵700来编码,在此便不再赘述。此外,奇偶检查矩阵700仅为一个范例矩阵,而非用以限制本发明。
当存储器管理电路502要将多个比特写入至可复写式非易失性存储器模块406时,错误检查与校正电路508会对每(n-k)个欲被写入的比特(即,信息比特)都产生对应的k个比特(即,奇偶比特)。存储器管理电路502会把这n个比特(即,数据比特)作为一个码字写入至可复写式非易失性存储器模块406。
存储器管理电路502会接收来自主机系统11的一读取指令。根据此读取指令,存储器管理电路502会发送一读取指令序列至可复写式非易失性存储器模块406。此读取指令序列会指示可复写式非易失性存储器模块406读取至少一实体单元。根据此读取指令序列,可复写式非易失性存储器模块406会执行相对应的读取操作(例如,施予读取电压至某一实体单元以读取至少一存储单元所存储的数据)并回传一回应数据给存储器管理电路502。存储器管理电路502会接收来自可复写式非易失性存储器模块406的回应数据,并且错误检查与校正电路508会对此回应数据执行一迭代解码程序。
在本实施例中,存储器管理电路502会决定一个偏移临界值。根据所决定的偏移临界值,存储器管理电路502会决定一个检查矩阵(例如,图7中的奇偶检查矩阵700)。错误检查与校正电路508会根据此检查矩阵来执行上述编码与解码程序。相关的编码与解码程序已详述于上,在此便不赘述。
在本实施例中,所决定的检查矩阵会包括多个子矩阵。此些子矩阵会被分组为至少一个子矩阵群组。每一个子矩阵会具有一个预设维度。特别是,所决定的偏移临界值会小于对应于此预设维度的一个预设维度值。例如,若每一个子矩阵的预设维度皆为3-乘-3,则对应于此预设维度的预设维度值为“3”。
在迭代解码程序中,错误检查与校正电路508会产生对应于所接收之回应数据的一个数据集合。此数据集合会包括多个群组。错误检查与校正电路508会根据所决定的偏移临界值与所决定的检查矩阵中不同的子矩阵群组来移动(shift)此些数据集合中的群组以获得多个偏移群组(已偏移群组),使得数据集合中的每一个群组对应于每一次的移位(以下亦称为群组移动)的一偏移量(如,移位差值)都不会超过所决定的偏移临界值。值得一提的是,在此提及的群组移动是指以群组为单位来移动各个群组中的比特。例如,假设某一个群组包括依序排列的元素“A1”、“A2”及“A3”,则在对于此群组执行位移量为“1”(即,offset=1)的群组移动之后,此群组中的元素排列顺序改变为元素“A3”、“A1”及“A2”;而依序排列的元素“A3”、“A1”及“A2”可视为相对于依序排列的元素“A3”、“A1”及“A2”的偏移群组,并且依序排列的元素“A3”、“A1”及“A2”相对于依序排列的元素“A3”、“A1”及“A2”的偏移量为“1”。然后,错误检查与校正电路508会根据此些偏移群组来产生解码参考数据。此解码参考数据会在迭代解码程序中被使用。
在一实施例中,所产生的解码参考数据是对应于一个奇偶检查程序的校验子集合(亦称为校验子向量)并且可被用来验证某一码字是否为有效码字(或,解码是否成功)。在一实施例中,所产生的解码参考数据是对应于一个比特翻转算法的校验权重集合(亦称为校验权重向量)并且可被用来决定要被翻转的数据比特。在一实施例中,所产生的解码参考数据则是对应于一个最小值-总和算法的最小值集合(亦称为最小值向量)并且可被用来决定至少部份数据比特的可靠度信息。以下基于多个实施例来说明如何在迭代解码程序中对数据集合执行移动群组并产生相对应的解码参考数据。
图8是根据本发明的一实施例所示出的奇偶检查程序的示意图。在本实施例中,数据集合与解码参考数据皆是用于低密度奇偶检查码的奇偶检查程序。例如,数据集合是指奇偶检查程序中待验证之码字,而解码参考数据则是奇偶检查程序中产生的校验子集合。
请参照图8,存储器管理电路502会决定一个偏移临界值。在本实施例中,所决定的偏移临界值为“2”。对应于所决定的偏移临界值,存储器管理电路502会决定一个奇偶检查矩阵800。奇偶检查矩阵800会被用来执行存储数据时的编码与读取数据时的解码。
在本实施例中,奇偶检查矩阵800包括子矩阵群组830与840。子矩阵群组830与840分别包括以列(row)方向排列的子矩阵831~833以及841~843。子矩阵831~833以及841~843中的每一者皆为一个方阵,并且子矩阵831~833以及841~843中的每一者皆具有一个预设维度。例如,子矩阵831~833以及841~843中的每一者的预设维度皆为3-乘-3,并且对应于此预设维度的预设维度值为“3”。存储器管理电路502会限制所决定的奇偶检查矩阵800中,对应于子矩阵831~833以及841~843中的每一者的预设维度的预设维度值(即,“3”)大于事先决定的偏移临界值(即,“2”)。然而,对应于不同的偏移临界值,所决定的奇偶检查矩阵也可以不同,只要满足所决定的奇偶检查矩阵中各个子矩阵的预设维度值大于事先决定的偏移临界值即可。例如,在另一实施例中,奇偶检查矩阵中的子矩阵群组的数目可以是更多或更少、每一个子矩阵群组中的子矩阵的数目可以是更多或更少,并且每一个子矩阵的预设维度可以是更大或更小。
在本实施例中,在存储器管理电路502发送上述读取指令序列并接收对应于此读取指令序列的回应数据之后,错误检查与校正电路508会对此回应数据执行迭代解码程序。在迭代解码程序的某一迭代中,码字810会被决定并且在对应的奇偶检查程序中被验证是否为有效码字。
具体而言,在对于码字810的奇偶检查程序中,错误检查与校正电路508会获得奇偶检查矩阵800与码字810的矩阵相乘的结果并将此结果作为校验子集合820。例如,对应于奇偶检查矩阵800的第一列中的多个元素1的位置,对码字810中的比特A2、B3及C1执行模2加法可获得校验子集合820中的校验子S1;对应于奇偶检查矩阵800的第二列中的多个元素1的位置,对码字810中的比特A3、B1及C2执行模2加法可获得校验子集合820中的校验子S2;对应于奇偶检查矩阵800的第四列中的多个元素1的位置,对码字810中的比特A3、B1及C2执行模2加法可获得校验子集合820中的校验子S4。以此类推,校验子集合820中的校验子S1~S6会被获得。然后,错误检查与校正电路508会根据校验子集合820是否为零向量(即,校验子S1~S6皆为“0”)来判断码字810中是否存在错误。例如,若校验子S1~S6皆为“0”,则错误检查与校正电路508会判定码字810中不存在任何错误(即,码字810为有效码字)并且根据码字810输出解码数据;然而,若校验子S1~S6的至少其中之一为“1”,则错误检查与校正电路508会判定码字810中存在错误。若错误检查与校正电路508判定码字810中存在错误且已执行的迭代的次数尚未达到预定门槛值,则错误检查与校正电路508会对于码字810执行下一次迭代并且再次执行一个奇偶检查程序来对产生的码字进行验证。此外,在一实施例中,亦可以搭配改变读取电压电平来再次读取相同的实体单元或改变解码方式等机制来加强解码效率,在此便不赘述。
在本实施例中,错误检查与校正电路508并不会真正地执行如图8所示出的矩阵相乘。取而代之的是,错误检查与校正电路508会对应于奇偶检查矩阵800中的子矩阵群组830与840来对码字810执行群组移动以及矩阵加法来获得校验子集合820。原因在于,在多数的情况下,执行矩阵加法相对于执行矩阵乘法具有运算复杂度较低和/或运算速度较快的优势。换言之,错误检查与校正电路508会以层(layer)为单位来逐渐产生校验子集合820。例如,子矩阵群组830为第一层并且用以计算校验子集合820中的校验子S1~S3;子矩阵群组840为第二层并且用以计算校验子集合820中的校验子S4~S6。
在本实施例中,对应于奇偶检查矩阵800中每一个子矩阵的预设维度,错误检查与校正电路508会将码字810中的比特分组为多个群组(以下亦称为预设群组)。例如,对应于子矩阵的预设维度为3-乘3,码字810中的比特A1、A2、A3被分组至同一个预设群组(以下亦称为第一预设群组),码字810中的比特B1、B2、B3被分组至同一个预设群组(以下亦称为第二预设群组),并且码字810中的比特C1、C2、C3被分组至同一个预设群组(以下亦称为第三预设群组)。在对应的群组移动中,码字810中的每一个比特皆是以其所属的群组作为一个统一移动单位。换言之,属于同一个群组的多个比特对应于一次的群组移动的偏移量会相同,而属于不同群组的多个比特对应于一次的群组移动的偏移量可能相同或不同。例如,在对应于某一个层的群组移动中,同属于第一预设群组的比特A1、A2及A3的偏移量相同,但分别属于第一预设群组与第二预设群组的比特A1与B1的偏移量可能相同或不同。
图9是根据本发明的一实施例所示出的获得对应于奇偶检查程序的校验子集合的示意图。
请参照图8与图9,对应于子矩阵群组830(即,第一层)的群组移动会先被执行。例如,对应于子矩阵群组830中元素1的位置,码字810中的比特A1、A2、A3会被移动为比特A2、A3、A1,码字810中的比特B1、B2、B3会被移动为比特B3、B1、B2,并且码字810中的比特C1、C2、C3不被移动。因此,图9中包含依序排列的比特A2、A3、A1、B3、B1、B2、C1、C2、C3的码字910会被获得。
在本实施例中,码字910中的比特A2、A3、A1被视为属于对应于第一预设群组的偏移群组911,码字910中的比特B3、B1、B2被视为属于对应于第二预设群组的偏移群组912,并且码字910中的比特C1、C2、C3被视为属于对应于第三预设群组的偏移群组913。其中,偏移群组911相对于第一预设群组的偏移量为“1”(即,offset=1),偏移群组912相对于第二预设群组的偏移量为“2”(即,offset=2),并且偏移群组913相对于第三预设群组的偏移量为“0”(即,offset=0)。然后,错误检查与校正电路508会根据偏移群组911~913来产生校验子集合820中的一部份校验子。例如,错误检查与校正电路508会对偏移群组911~913执行矩阵加法以获得校验子向量1020中的校验子S1~S3。
在获得偏移群组911~913之后,对应于子矩阵群组840(即,第二层)的群组移动会被执行。例如,对应于子矩阵群组840中元素1的位置,偏移群组911中的比特A2、A3、A1会被移动为比特A3、A1、A2,偏移群组912中的比特B3、B1、B2会被移动为比特B1、B2、B3,并且偏移群组913中的比特C1、C2、C3会被移动为比特C2、C3、C1。因此,图9中包含依序排列的比特A3、A1、A2、B1、B2、B3、C2、C3、C1的码字920会被获得。
在本实施例中,码字920中的比特A3、A1、A2被视为属于对应于偏移群组911的偏移群组921,码字920中的比特B1、B2、B3被视为属于对应于偏移群组912的偏移群组922,并且码字920中的比特C2、C3、C1被视为属于对应于偏移群组913的偏移群组923。其中,偏移群组921相对于偏移群组911的偏移量为“1”(即,offset=1),偏移群组922相对于偏移群组912的偏移量为“1”(即,offset=1),并且偏移群组923相对于偏移群组913的偏移量为“1”(即,offset=1)。然后,错误检查与校正电路508会根据偏移群组921~923来产生校验子集合820中的另一部份的校验子。例如,错误检查与校正电路508会对偏移群组921~923执行矩阵加法以获得校验子集合820中的校验子S4~S6。
存储器管理电路502(或,错误检查与校正电路508)会限制对应于每一个子矩阵群组(即,层)所执行的群组移动的偏移量皆不超过所决定的偏移临界值。例如,在图8与图9的实施例中,偏移临界值被设定为“2”,因此,偏移群组911~913中的每一者相对于其在码字810中的一个对应群组的偏移量皆不超过“2”;而偏移群组921~923分别相对于偏移群组911~913的偏移量也不超过“2”。例如,在执行对应于子矩阵群组830(即,第一层)的群组移动而产生偏移群组911~913的操作中,码字810中每一个比特的偏移量可以是“0”、“1”或“2”,视其所属的群组而定;而在执行对应于子矩阵群组840(即,第二层)的群组移动而产生偏移群组921~923的操作中,码字920中每一个比特的偏移量也可以是“0”、“1”或“2”,视其所属的群组而定。此外,在图8与图9的另一实施例中,若偏移临界值被设定为“1”,则在后续每一次的群组移动中每一个偏移群组中的比特的偏移量皆不超过“1”。
在一实施例中,若奇偶检查程序中产生的校验子集合不是零向量(例如,图8中校验子S1~S6的至少其中之一为“1”),表示当前验证的码字中存在错误。因此,一个比特翻转算法可以被用来快速地决定要翻转(flip)码字中的哪一个比特,例如,将某一个比特的值从“0”改变为“1”或者从“1”改变为“0”,以尝试更正码字中的错误。在比特翻转算法中,需要计算对应于校验子集合的一个校验权重(syndrome weight)集合并且码字中的至少一个比特会基于此校验权重集合而被翻转。在一实施例中,通过对数据集合中的多个群组执行群组移动来获得相对应的解码参考数据,则可降低计算校验权重集合的运算复杂度和/或提高运算速度。然而,在另一实施例中,若判定当前验证码字中存在错误,其他的解码算法也可以被用来更正码字中的错误。
图10与图11是根据本发明的另一实施例所示出的获得对应于比特翻转算法的校验权重的示意图。在本实施例中,数据集合与解码参考数据皆是用于比特翻转算法。例如,数据集合是指比特翻转算法中待更新的校验权重集合,而解码参考数据则是比特翻转算法中更新后的校验权重集合。
请参照图10,在获得校验子集合820之后,在比特翻转算法中,一个校验权重集合1001会被决定。例如,校验权重集合1001会包括依序排列的校验权重EA1、EA2、EA3、EB1、EB2、EB3、EC1、EC2及EC3。其中,校验权重EA1、EA2、EA3、EB1、EB2、EB3、EC1、EC2及EC3分别对应于码字810中的比特A1、A2、A3、B1、B2、B3、C1、C2及C3。校验权重集合1001可用来表示码字810中每一个比特对于码字810中的错误的参与程度。例如,根据奇偶检查矩阵800,比特A1参与了校验子S3与S5的计算,故可根据校验子S3与S5来计算对应于比特A1的校验权重EA1。例如,可将校验子S3与S5相加以获得校验权重EA1。又例如,根据奇偶检查矩阵800,比特A2参与了校验子S1与S6的计算,故可根据校验子S1与S6来计算对应于比特A2的校验权重EA2。例如,可将校验子S1与S6相加以获得校验权重EA2。特别是,在此用来计算校验权重的加法是指一般加法,并非模2加法。例如,若校验子S3与S5皆为“1”,则将校验子S3与S5相加可获得校验权重EA1为“2”。以此类推,根据奇偶检查矩阵800与校验子集合820,校验权重集合1001可被获得。
在比特翻转算法中,若码字中的某一个比特所对应的校验权重很大,表示此比特有较大的机率为错误比特,因此翻转此比特有较高的机率可以更正错误。反之,若码字中的某一个比特所对应的校验权重很小,则表示此比特为错误比特的机率不高,因此翻转此比特可以更正错误的机率也不高。一般来说,根据奇偶检查矩阵800与校验子集合820来获得校验权重集合1001的操作可以等效于将向量1002加上向量1003来获得校验权重集合1001。其中,向量1002中的元素仅包括校验子S1~S3,而向量1003中的元素则仅包括校验子S4~S6。校验子S1~S3在向量1002中的位置是根据奇偶检查矩阵800来决定,并且校验子S4~S6在向量1003中的位置也是根据奇偶检查矩阵800来决定。
在本实施例中,错误检查与校正电路508同样是以层为单位来逐渐产生校验权重集合1001。例如,子矩阵群组830为第一层并且用以执行校验权重集合的第一更新操作;子矩阵群组840为第二层并且用以执行校验权重集合的第二更新操作。在本实施例中,错误检查与校正电路508会将向量1001中的多个校验权重分组为多个预设群组。例如,校验权重EA1、EA2、EA3属于第一预设群组,校验权重EB1、EB2、EB3属于第二预设群组,并且校验权重EC1、EC2、EC3属于第三预设群组。
请参照图11,对应于子矩阵群组830(即,第一层)的群组移动会先被执行。例如,对应于子矩阵群组830中元素1的位置,属于第一预设群组的校验权重EA1、EA2、EA3会被移动为校验权重EA2、EA3、EA1,属于第二预设群组的校验权重EB1、EB2、EB3会被移动为比特EB3、EB1、EB2,而属于第三预设群组的校验权重EC1、EC2、EC3不被移动。因此,图11中包含依序排列的校验权重EA2、EA3、EA1、EB3、EB1、EB2、EC1、EC2、EC3的向量1101会被获得。例如,向量1101中的校验权重EA2、EA3、EA1属于相对于第一预设群组的一个偏移群组;向量1101中的校验权重EB3、EB1、EB2属于相对于第二预设群组的一个偏移群组;并且向量1101中的校验权重EC1、EC2、EC3属于相对于第三预设群组的一个偏移群组。
然后,错误检查与校正电路508会利用向量1103与1104来产生向量1102。其中,向量1101~1103中所有元素的排序皆一致,如图11所示。此外,向量1103中所有元素的初始值皆被设为“0”。在本实施例中,产生向量1102的操作亦可视为将向量1103更新为向量1102的操作。例如,在将向量1103更新为向量1102的操作中,向量1103中的校验权重EA2、EA3、EA1会被分别加上向量1104中的校验子S1、S2、S3以获得向量1102中更新后的校验权重EA2、EA3、EA1;向量1103中的EB3、EB1、EB2会分别被加上向量1104中的校验子S1、S2、S3来获得向量1102中更新后的校验权重EB3、EB1、EB2;并且向量1103中的EC1、EC2、EC3也会分别被加上向量1104中的校验子S1、S2、S3来获得向量1102中更新后的校验权重EC1、EC2、EC3。
在获得向量1102之后,对应于子矩阵群组840(即,第二层)的群组移动会被执行。例如,对应于子矩阵群组840中元素1的位置,向量1102中的校验权重EA2、EA3、EA1会被移动为校验权重EA3、EA1、EA2,向量1102中的校验权重EB3、EB1、EB2会被移动为校验权重EB1、EB2、EB3,并且向量1102中的校验权重EC1、EC2、EC3会被移动为校验权重EC2、EC3、EC1。因此,图11中包含依序排列的校验权重EA3、EA1、EA2、EB1、EB2、EB3、EC2、EC3、EC1的向量1105会被获得。
然后,错误检查与校正电路508会利用向量1107与向量1108来产生向量1106。其中,向量1105~1107中所有元素的排序皆一致,如图11所示。此外,产生向量1106的操作亦可视为将向量1107更新为向量1106的操作。例如,在将向量1107更新为向量1106的操作中,向量1107中的校验权重EA3、EA1、EA2会分别被加上向量1108中的校验子S4、S5、S6来获得向量1106中更新后的校验权重EA3、EA1、EA2;向量1107中的EB1、EB2、EB3会分别被加上向量1108中的校验子S4、S5、S6来获得向量1106中更新后的校验权重EB1、EB2、EB3;并且向量1107中的EC2、EC3、EC1也会分别被加上向量1108中的校验子S4、S5、S6来获得向量1106中更新后的校验权重EC2、EC3、EC1。所产生的向量1106即包含了对应于图10的码字810中每一个比特的校验权重。换言之,利用图11的实施例中依序更新向量1102与1106的操作来取代图10中将向量1102加上1003的操作,可提升在比特翻转算法中计算校验权重集合的效率。
在一实施例中,若错误检查与校正电路508是采用总和-乘积算法来更新迭代解码程序中使用的可靠度信息,则通过对数据集合中的多个群组执行群组移动来获得相对应的解码参考数据的操作,同样可用于降低执行最小值-总和算法的运算复杂度和/或提高运算速度。
图12与图13是根据本发明的另一实施例所示出的获得对应于最小值-总和算法的最小值集合的示意图。在本实施例中,数据集合与解码参考数据皆是用于最小值-总和算法。例如,数据集合是指待解码的码字,而解码参考数据则是最小值-总和算法中产生的最小值集合。
请参照图12,在采用最小值-总和算法的迭代解码程序中,错误检查与校正电路508会根据奇偶检查矩阵800来对码字810中的不同比特进行多次比较以产生最小值集合1201。例如,最小值集合1201包括最小值m1~m6。其中,最小值m1是取码字810中的比特A2、B3及C1的最小者;最小值m2是取码字810中的比特A3、B1及C2的最小者;最小值m3是取码字810中的比特A1、B2及C3的最小者;最小值m4是取码字810中的比特A3、B1及C2的最小者;最小值m5是取码字810中的比特A1、B2及C3的最小者;最小值m6是取码字810中的比特A2、B3及C1的最小者。
在本实施例中,错误检查与校正电路508同样会以层为单位来逐渐产生最小值集合1201。例如,子矩阵群组830为第一层并且用以计算最小值集合1201中的校验子m1~m3;子矩阵群组840为第二层并且用以计算最小值集合1201中的校验子m4~m6。在本实施例中,错误检查与校正电路508会将码字810中的比特分组为多个预设群组。例如,码字810中的比特A1、A2、A3属于第一预设群组,码字810中的比特B1、B2、B3属于第二预设群组,并且码字810中的比特C1、C2、C3属于第三预设群组。
请参照图13,对应于子矩阵群组830(即,第一层)的群组移动会先被执行。例如,对应于子矩阵群组830中元素1的位置,码字810中的比特A1、A2、A3会被移动为比特A2、A3、A1,码字810中的比特B1、B2、B3会被移动为比特B3、B1、B2,而码字810中的比特C1、C2、C3不被移动。因此,图13中包含依序排列的比特A2、A3、A1、B3、B1、B2、C1、C2、C3的码字910会被获得。例如,码字910中的比特A2、A3、A1属于相对于第一预设群组的偏移群组911;码字910中的比特B3、B1、B2属于相对于第二预设群组的偏移群组912;并且码字910中的比特C1、C2、C3属于相对于第三预设群组的偏移群组913。
然后,错误检查与校正电路508会对偏移群组911~913中位于的特定位置的比特取最小值以产生最小值集合1201中的校验子m1~m3。例如,错误检查与校正电路508会对偏移群组911~913中位于每一个群组中第一个位置的比特A2、B3、C1取最小值作为m1;对偏移群组911~913中位于每一个群组中第二个位置的比特A3、B1、C2取最小值作为m2;并且对偏移群组911~913中位于每一个群组中第三个位置的比特A1、B2、C3取最小值作为m3。
在获得偏移群组911~913之后,对应于子矩阵群组840(即,第二层)的群组移动会被执行。例如,对应于子矩阵群组840中元素1的位置,偏移群组911中的比特A2、A3、A1会被移动为比特A3、A1、A2,偏移群组912中的比特B3、B1、B2会被移动为比特B1、B2、B3,并且偏移群组913中的比特C1、C2、C3会被移动为比特C2、C3、C1。因此,图13中包含比特A3、A1、A2、B1、B2、B3、C2、C3、C1的码字920会被获得。例如,码字920中的比特A3、A1、A2被视为属于对应于偏移群组911的偏移群组921,码字920中的比特B1、B2、B3被视为属于对应于偏移群组912的偏移群组922,并且码字920中的比特C2、C3、C1被视为属于对应于偏移群组913的偏移群组923。
然后,错误检查与校正电路508会对偏移群组921~923中位于特定位置的比特取最小值以产生最小值集合1201中的校验子m4~m6。例如,错误检查与校正电路508会对偏移群组921~923中位于每一个群组中第一个位置的比特A3、B1、C2取最小值作为m4;对偏移群组921~923中位于每一个群组中第二个位置的比特A1、B2、C3取最小值作为m5;并且对偏移群组921~923中位于每一个群组中第三个位置的比特A2、B3、C1取最小值作为m6。藉此,可获得最小值-总和算法中使用的最小值集合1201并可提升计算效率。
综上所述,在上述多个实施例中,即使所提及的操作分别是应用于迭代解码程序中的不同阶段和/或对应于不同的解码算法,但是对于预设临界值的设定、奇偶检查矩阵的设定、数据集合中群组的设定,以及数据集合对于每一个层的群组移动的操作都是相同或相似的。换言之,对应于迭代解码程序中的不同阶段和/或不同的解码算法,只要对应地决定要将什么数据作为数据集合以及根据移动后的群组要执行何种操作来产生解码参考数据则可。
在一实施例中,所决定的偏移临界值会负相关(negatively correlated)于相对应采用的奇偶检查矩阵的行权重值(column weight)。其中,奇偶检查矩阵的行权重值对应于奇偶检查矩阵中的某一个行所包含的元素1的数目。例如,若偏移临界值越大,则对应采用的奇偶检查矩阵的某一个行所包含的元素1的数目可能越小;若偏移临界值越小,则对应采用的奇偶检查矩阵的某一个行所包含的元素1的数目可能越多。在一实施例中,奇偶检查矩阵的行权重值是对应于奇偶检查矩阵中的包含最多的元素1的行所包含的元素1的数目。例如,在某一奇偶检查矩阵中,某一个行包含二个元素1,而另一个行包含三个元素1,则此奇偶检查矩阵的行权重值可被决定为“3”。
综上所述,本发明的实施例所提供的解码器设计方法与存储控制器,可以经由根据QC-LDPC解码器的检查矩阵的移位类型从第一置换网络中移除目标第一置换层,以构建改进的第二置换网络,所述第二置换网络用于在QC-LDPC解码器的置换电路中布置较少的选择器和路由线。如此一来,可使置换电路的硬件成本降低,并且相应地降低功耗和产生的热量。
虽然本发明已以实施例揭示如上,然其并非用以限定本发明,任何所属技术领域中技术人员,在不脱离本发明的精神和范围内,当可作些许的更改与润饰,故本发明的保护范围当视权利要求所界定的为准。
Claims (14)
1.一种解码器设计方法,适用于设计对应一可复写式非易失性存储器模块的准循环低密度奇偶校验码解码器的置换电路,所述方法包括:
识别可复写式非易失性存储器模块的实体页面的大小为页面大小,其中所述实体页面用以存储多个码字;
根据所述多个码字与所述页面大小来获得所述多个码字的每一个的码字长度;
识别QC-LDPC解码器的预定检查矩阵,其中所述检查矩阵包括MⅹM个子矩阵,其中每一所述子矩阵为ZⅹZ矩阵,其中Z为每个子矩阵的预设维度值,并且所述预设维度值为经由对所述码字长度除以M所获得的商值;
根据所述预设维度值来计算一第一数值,并且根据所述第一数值、所述预设维度值和所述检查矩阵的移位类型识别第一置换网络,其中所述第一置换网络包括依序排列的多个第一置换层,所述第一置换层中的每一个第一置换层具有相同数量的第一节点,其中第一置换层的数量由所述第一数值所设置,并且每个第一置换层的第一节点的数量由所述预设维度值所设置,其中所述多个第一置换层中的一个第一置换层的每一个第一节点连接至下一个第一置换层的一对第一节点;
根据所述检查矩阵的所述移位类型识别所述第一置换网络的所述多个第一置换层中的目标第一置换层,并经由从所述第一置换网络中去除所述目标第一置换层来建构第二置换网络;以及
设置多个选择器于所述置换电路的所述第二置换网络的多个第二节点上,并且根据所述第二置换网络将多条路由线设置到所述置换电路中以连接所述多个选择器,其中所述多个选择器更分别连接至所述QC-LDPC解码器的解码控制器,其中所述解码控制器用以控制所述多个选择器来将对应一目标码字的多个第一变量群组移位成为多个第二变量群组,其中所述多个第二变量群组根据对应所述多个第一变量群组与所述多个第二变量群组的多个目标偏移量分别被移位,其中所述多个目标偏移量是根据所述检查矩阵所识别的。
2.根据权利要求1所述的解码器设计方法,其中每一所述多个第一变量群组包括多个变量,其中每一所述多个变量包括代表可靠度的多个比特,其中所述多个比特的总数目经由预设精细度被设定,
其中在所述多个第一变量群组中的一初始第一变量群组包括多个初始变量,并且所述多个初始变量根据所述目标码字经由对一解码表查表而获得,或是从所述目标码字被转换的。
3.根据权利要求2所述的解码器设计方法,其中第一个置换层的每个节点连接至所述置换电路的多个输入端,并且最后一个置换层的每个节点连接至所述置换电路的多个输出端中的两个输出端,
其中将对应所述目标码字的所述多个第一变量群组移位成为所述多个第二变量群组的步骤包括:
经由所述解码控制器,分别输入一个第一变量群组的全部的变量至不同的输入端,其中经由全部的输入端,被输入所述全部的变量被分别传送至所述第一个置换层的全部的节点;
经由在所述置换网络中的所述多个选择器,基于对应所述一个第一变量群组的一个移位差值来移位被输入的全部的变量;
从不同的输出端分别输出全部的被移位的变量,以作为对应所述一个第一变量群组的一个第二变量群组,其中经由于所述最后一个置换层的全部的节点上的多个选择器,全部的被移位的变量被分别传送至所述多个输出端,
其中所述一个移位差值经由在对应所述一个第一变量群组的第一目标偏移量与对应所述一个第二变量群组的第二目标偏移量之间的差值来被决定的,其中所述第一目标偏移量根据所述预定检查矩阵的所述多个子矩阵中对应所述一个第一变量群组的第一子矩阵被识别,并且所述第二目标偏移量根据所述预定检查矩阵的所述多个子矩阵中对应所述一个第二变量群组的第二子矩阵被识别,
其中所述初始第一变量群组的所述第一目标偏移量为0。
4.根据权利要求3所述的解码器设计方法,
其中每一所述多个目标偏移量被设定于一置换网络大小范围内,其中所述置换网络大小范围被设定为0至Z,
其中移位差值是置换网络移位范围内的偶数值或奇数值,置换网络移位范围被设定为0到(Z-1),
其中若对应于所述检查矩阵的所有移位差值是偶数,则检查矩阵的移位类型是偶数移位类型,并且所述目标第一置换层是对应所述偶数移位类型检查矩阵的所识别的第一置换网络的所述多个第一置换层中的最后一个第一置换层,
其中若对应于所述检查矩阵的所有移位差值是奇数,则检查矩阵的移位类型是奇数移位类型,并且所述目标第一置换层是对应所述奇数移位类型检查矩阵的所识别的第一置换网络的所述多个第一置换层中的最后一个第一置换层,
其中若对应于检查矩阵的所有移位差值是P的倍数,则所述检查矩阵的移位类型是P倍数移位类型,并且所述目标第一置换层是对应所述P倍数移位类型检查矩阵的所识别的第一置换网络的所述多个第一置换层中的最后一个第一置换层。
5.根据权利要求2所述的解码器设计方法,其中设置所述多个选择器于所述置换电路的所述置换层的所述多个节点上的步骤包括:
根据所述预设精细度设置多个选择器于每一所述多个节点上,其中被设置于一个节点上的所述多个选择器的数目经由所述预设精细度被设定。
6.根据权利要求5所述的解码器设计方法,其中所述置换网络的全部的选择器的数目为Z*B*F,其中Z为预设维度值,B为第二数值,并且F为所述预设精细度,
其中连接至所述置换网络中的第一个置换层的每个选择器的多个路由线的数目为4,连接至所述置换网络中的其他的置换层的每个选择器的多个路由线的数目为3,
其中对应所述置换网络的全部的选择器的全部的路由线的数目为Z*F+3*T,其中T为所述置换网络的全部的选择器的数目。
7.根据权利要求1所述的解码器设计方法,其中所述第一数值为Log2(Z)。
8.一种存储控制器,其中所述存储控制器用以控制具有可复写式非易失性存储器模块的存储装置,其中所述存储控制器包括:
错误检查与校正电路,包括准循环低密度奇偶校验码解码器,用以执行解码程序于目标码字,其中QC-LDPC解码器包括置换电路,
存储器接口控制电路,用以耦接至可复写式非易失性存储器模块,其中所述可复写式非易失性存储器模块具有多个实体页面,并且每一所述多个实体页面的大小被识别为页面大小,其中所述实体页面用以存储多个码字,并且所述目标码字从所述多个实体页面中的目标实体页面被读取,其中每一所述多个码字的长度根据所述多个码字的数量与所述页面大小被获得,为一码字长度;以及
处理器,耦接至所述错误检查与校正电路与所述存储器接口控制电路,其中所述存储器接口控制电路传送从可复写式非易失性存储器模块所读取的所述码字至所述错误检查与校正电路,并且所述处理器用以指示所述错误检查与校正电路对所述目标码字执行所述解码程序,
其中所述置换电路包括多个选择器、连接至每一所述多个选择器的多个路由线、多个输入端与多个输出端,
其中所述QC-LDPC解码器的预定检查矩阵被识别,并且所述检查矩阵包括MⅹM个子矩阵,其中每一所述子矩阵为ZⅹZ矩阵,其中Z为每个子矩阵的预设维度值,并且所述预设维度值为经由对所述码字长度除以M所获得的商值,
其中用以设置所述多个选择器与所述多个路由线至所述置换电路的第二置换网络经由从第一置换网络中移除目标第一置换层被建构,
其中所述第一置换网络是根据第一数值、所述预设维度值和所述检查矩阵的移位类型所识别的,其中所述第一置换网络包括依序排列的多个第一置换层,所述第一置换层中的每一个第一置换层具有相同数量的第一节点,其中第一置换层的数量由所述第一数值所设置,并且每个第一置换层的第一节点的数量由所述预设维度值所设置,其中所述多个第一置换层中的一个第一置换层的每一个第一节点连接至下一个第一置换层的一对第一节点,
其中所述第一置换网络中的所述多个第一置换层中的目标第一置换层是根据所述检查矩阵的所述移位类型所识别的,
其中所述多个选择器于被设置于所述置换电路的所述第二置换网络的多个第二节点上,并且所述多条路由线根据所述第二置换网络被设置到所述置换电路中以连接所述多个选择器,其中所述多个选择器更分别连接至所述QC-LDPC解码器的解码控制器,其中所述解码控制器用以控制所述多个选择器来将对应目标码字的多个第一变量群组移位成为多个第二变量群组,其中所述多个第二变量群组根据对应所述多个第一变量群组与所述多个第二变量群组的多个目标偏移量分别被移位,其中所述多个目标偏移量是根据所述检查矩阵所识别的。
9.根据权利要求8所述的存储控制器,其中每一所述多个第一变量群组包括多个变量,其中每一所述多个变量包括代表可靠度的多个比特,其中所述多个比特的总数目经由预设精细度被设定,
其中在所述多个第一变量群组中的初始第一变量群组包括多个初始变量,并且所述多个初始变量根据所述目标码字经由对一解码表查表而获得,或是从所述目标码字被转换的。
10.根据权利要求9所述的存储控制器,其中第一个置换层的每个节点连接至所述置换电路的多个输入端,并且最后一个置换层的每个节点连接至所述置换电路的多个输出端中的两个输出端,
其中所述解码控制器分别输入一个第一变量群组的全部的变量至不同的输入端,其中经由全部的输入端,被输入所述全部的变量被分别传送至所述第一个置换层的全部的节点,
其中所述置换网络中的所述多个选择器基于对应所述一个第一变量群组的一个移位差值来移位被输入的全部的变量,
其中全部的被移位的变量从不同的输出端被分别输出,以作为对应所述一个第一变量群组的一个第二变量群组,其中所述最后一个置换层的全部的节点上的多个选择器传送全部的被移位的变量至所述多个输出端,
其中所述一个移位差值经由在对应所述一个第一变量群组的第一目标偏移量与对应所述一个第二变量群组的第二目标偏移量之间的差值来被决定的,其中所述第一目标偏移量根据所述预定检查矩阵的所述多个子矩阵中对应所述一个第一变量群组的第一子矩阵被识别,并且所述第二目标偏移量根据所述预定检查矩阵的所述多个子矩阵中对应所述一个第二变量群组的第二子矩阵被识别,
其中所述初始第一变量群组的所述第一目标偏移量为0。
11.根据权利要求10所述的存储控制器,
其中每一所述多个目标偏移量被设定于置换网络大小范围内,其中所述置换网络大小范围被设定为0至Z,
其中移位差值是置换网络移位范围内的偶数值或奇数值,置换网络移位范围被设定为0到(Z-1),
其中若对应于所述检查矩阵的所有移位差值是偶数,则检查矩阵的移位类型是偶数移位类型,并且所述目标第一置换层是对应所述偶数移位类型检查矩阵的所识别的第一置换网络的所述多个第一置换层中的最后一个第一置换层,
其中若对应于所述检查矩阵的所有移位差值是奇数,则检查矩阵的移位类型是奇数移位类型,并且所述目标第一置换层是对应所述奇数移位类型检查矩阵的所识别的第一置换网络的所述多个第一置换层中的最后一个第一置换层,
其中若对应于检查矩阵的所有移位差值是P的倍数,则所述检查矩阵的移位类型是P倍数移位类型,并且所述目标第一置换层是对应所述P倍数移位类型检查矩阵的所识别的第一置换网络的所述多个第一置换层中的最后一个第一置换层。
12.根据权利要求9所述的存储控制器,其中
多个选择器根据所述预设精细度被设置于每一所述多个节点上,其中被设置于一个节点上的所述多个选择器的数目经由所述预设精细度被设定。
13.根据权利要求12所述的存储控制器,其中所述置换网络的全部的选择器的数目为Z*B*F,其中Z为预设维度值,B为第二数值,并且F为所述预设精细度,
其中连接至所述置换网络中的第一个置换层的每个选择器的多个路由线的数目为4,连接至所述置换网络中的其他的置换层的每个选择器的多个路由线的数目为3,
其中对应所述置换网络的全部的选择器的全部的路由线的数目为Z*F+3*T,其中T为所述置换网络的全部的选择器的数目。
14.根据权利要求8所述的存储控制器,其中所述第一数值为Log2(Z)。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/145,207 US10707902B2 (en) | 2015-11-05 | 2018-09-28 | Permutation network designing method, and permutation circuit of QC-LDPC decoder |
US16/145,207 | 2018-09-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110971240A CN110971240A (zh) | 2020-04-07 |
CN110971240B true CN110971240B (zh) | 2023-11-24 |
Family
ID=70029520
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910374013.8A Active CN110971240B (zh) | 2018-09-28 | 2019-05-07 | 解码器设计方法与存储控制器 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110971240B (zh) |
TW (1) | TWI707231B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI819876B (zh) * | 2022-11-02 | 2023-10-21 | 群聯電子股份有限公司 | 資料儲存方法、記憶體儲存裝置及記憶體控制電路單元 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104601178A (zh) * | 2013-10-30 | 2015-05-06 | 群联电子股份有限公司 | 解码方法、解码电路、存储器存储装置与控制电路单元 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8745468B1 (en) * | 2008-01-21 | 2014-06-03 | Marvel International Ltd. | Iterative decoding systems using noise-biasing |
US8918694B2 (en) * | 2011-02-28 | 2014-12-23 | Clariphy Communications, Inc. | Non-concatenated FEC codes for ultra-high speed optical transport networks |
EP2525496A1 (en) * | 2011-05-18 | 2012-11-21 | Panasonic Corporation | Bit-interleaved coding and modulation (BICM) with quasi-cyclic LDPC codes |
EP2737630A2 (en) * | 2011-07-29 | 2014-06-04 | SanDisk Technologies Inc. | Checksum using sums of permutation sub-matrices |
US9047210B2 (en) * | 2011-09-15 | 2015-06-02 | Sandisk Technologies Inc. | Data storage device and method to correct bit values using multiple read voltages |
US9037945B2 (en) * | 2013-03-26 | 2015-05-19 | Seagate Technology Llc | Generating partially sparse generator matrix for a quasi-cyclic low-density parity-check encoder |
TWI527036B (zh) * | 2014-02-07 | 2016-03-21 | 群聯電子股份有限公司 | 解碼方法、記憶體儲存裝置、記憶體控制電路單元 |
US10700708B2 (en) * | 2015-11-05 | 2020-06-30 | Shenzhen Epostar Electronics Limited Co. | Permutation network designing method, and permutation circuit of QC-LDPC decoder |
TWI573147B (zh) * | 2015-11-05 | 2017-03-01 | 大心電子股份有限公司 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
-
2019
- 2019-04-19 TW TW108113791A patent/TWI707231B/zh active
- 2019-05-07 CN CN201910374013.8A patent/CN110971240B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104601178A (zh) * | 2013-10-30 | 2015-05-06 | 群联电子股份有限公司 | 解码方法、解码电路、存储器存储装置与控制电路单元 |
Also Published As
Publication number | Publication date |
---|---|
TW202013192A (zh) | 2020-04-01 |
TWI707231B (zh) | 2020-10-11 |
CN110971240A (zh) | 2020-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10707902B2 (en) | Permutation network designing method, and permutation circuit of QC-LDPC decoder | |
KR101645906B1 (ko) | 계층적 반복 에러 교정을 위한 종료 기준 | |
KR102643457B1 (ko) | Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법 | |
KR101753498B1 (ko) | 신뢰도 데이터 업데이트 | |
US10534665B2 (en) | Decoding method, memory storage device and memory control circuit unit | |
US10445175B2 (en) | Controller and operating method thereof | |
US9471421B2 (en) | Data accessing method, memory storage device and memory controlling circuit unit | |
US20160164543A1 (en) | Turbo product codes for nand flash | |
US9170877B2 (en) | Resolving trapping sets | |
TWI573147B (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
CN111726121B (zh) | 错误校正解码器和具有该错误校正解码器的存储器系统 | |
KR20160090054A (ko) | 플래시 메모리 시스템 및 그의 동작 방법 | |
CN107608818B (zh) | 解码方法、存储器存储装置及存储器控制电路单元 | |
CN103325425B (zh) | 存储器控制器 | |
CN111756385A (zh) | 错误校正解码器 | |
US10193569B2 (en) | Decoding method, memory storage device and memory control circuit unit | |
CN110673979A (zh) | 存储器控制器及其操作方法 | |
US20180198468A1 (en) | Error correction code (ecc) decoders sharing logic operations, memory controllers including the error correction code decoders, and methods of decoding error correction codes | |
US10700708B2 (en) | Permutation network designing method, and permutation circuit of QC-LDPC decoder | |
CN110971240B (zh) | 解码器设计方法与存储控制器 | |
KR20140088423A (ko) | 리드-솔로몬 저밀도 패리티 검사 디코더를 포함하는 반도체 메모리 시스템 및 그것의 읽기 방법 | |
CN106708649B (zh) | 解码方法、存储器储存装置及存储器控制电路单元 | |
CN107590018B (zh) | 译码方法、存储器控制电路单元及存储器存储装置 | |
US11962328B1 (en) | Decoding method, memory storage device and memory control circuit unit | |
KR102532611B1 (ko) | 컨트롤러 및 그것의 동작 방법 |
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 |