用于解码具有自生成对数似然比的纠错码的系统和方法
技术领域
本公开涉及解码用奇偶校验数据编码的码字,特别涉及使用从硬判决解码生成的对数似然比(LLR)解码码字。
背景技术
对于许多数据通信或存储系统的一个常见的问题是数据损坏,例如通信信道中的噪声或存储系统中的写/读过程。解决数据损坏的一种技术是使用纠错码(Error-correcting code,ECC)或前向纠错(Forward error correction,FEC)码。ECC和FEC都将冗余数据或奇偶校验数据添加到用户数据中,使得即使在例如在存储器上传输或损坏的过程期间引入许多错误(直到达到所使用代码的能力为止)时,接收器或读取器也可以恢复用户数据。
多年来,已经开发了许多不同的编码方案,例如汉明(Hamming)码、里德-所罗门(Reed-Solomoncode)码、Turbo码等。最近,低密度奇偶校验(LDPC)码已经被广泛使用。然而,所有这些编码都计算复杂,并且使用这些编码的技术仍然需要改进。
发明内容
本文公开了一种ECC码的解码器,其可以在码字中为每个码元(在二进制实现中也可以称为比特)生成可靠性信息,并使用所生成的可靠性信息来实现更好的解码性能。根据本公开的示例性ECC解码器可以以两种操作模式:硬判决和软判决。在一个实施例中,在解码过程期间软数据生成器可以使用硬判决信息来生成每个硬判决信息比特的可靠性信息。生成的可靠性信息(例如可以是似然对数比)可以存储在软数据缓冲器中。第一切换规则可以将所生成的可靠性信息考虑用于下一次解码迭代,并且可以被应用于从硬判决解码切换到软判决解码。在实现基于层(行)或基于列的解码的一个实施例中,所生成的可靠性信息可以根据第一切换规则被用于解码处理的下一层(或下数层)或下一列(或下数列)中。在一些实施例中,可以应用第二切换规则以从软判决解码切换回硬判决解码。
根据本公开的示例性ECC解码器可以被应用于非易失性存储控制器和通信信号处理器中。在不提供软数据信息的非易失性存储系统中,一个实施例可以使用自生成的软数据信息来实现更好的性能。在支持软数据信息的非易失性存储系统中,一个实施例可以通过避免重新读取非易失性存储来减少整体解码等待时间。
本发明可以包括一种方法,包括:对码字执行硬判决解码,记录码字的每个比特的翻转次数,基于每个比特的翻转次数生成对应于每个比特的可靠性信息,根据切换规则确定切换到软判决解码,以及使用每个比特的可靠性信息对该码字执行软判决解码。
根据一个实施例,该切换规则可以包括针对在当前解码进程中累计的该码字的所有比特的翻转总数的门限数值。
根据一个实施例,该当前解码进程可以是基于硬判决解码的某一种配置的一次迭代,一个或多个层,或者一个或多个列。
根据一个实施例,该门限数值可以基于用于校验该码字的奇偶校验矩阵的形状和/或特征来配置。
根据一个实施例,该门限数值可以基于奇偶校验矩阵的模拟来配置。
根据一个实施例,该切换规则可以包括基于即时校验子值的门限数值。
根据一个实施例,该方法还可以包括:当软判决解码不降低校验子值时,切换到硬判决解码。
本发明的还可以包括一种装置,包括:解码器核,被配置为在硬判决解码模式和软判决解码模式中执行解码;软数据生成器,耦合到该解码器核并且被配置为基于码字的硬判决解码来生成软数据;以及开关,耦合到该解码器核并且被配置为当由该软数据生成器生成的软数据触发切换规则时将解码器核从硬判决解码模式切换到软判决解码模式。该软判决解码模式可以利用生成的可靠性信息作为软数据的部分。
根据一个实施例,该切换规则可以包括针对在当前解码进程中累计的该码字的所有比特的翻转总数的门限数值。
根据一个实施例,该当前解码进程可以是基于硬判决解码的某一种配置的一次迭代,一个或多个层,或一个或多个列。
根据一个实施例,该门限数值可以基于用于校验该码字的奇偶校验矩阵的形状和/或特征来配置。
根据一个实施例,该门限数值可以基于奇偶校验矩阵的模拟来配置。
根据一个实施例,该解码器核可以被配置为针对每个解码进程生成即时校验子值,以及该切换规则包括用于两个连续的即时校验子值之间的差值的门限数值。
根据一个实施例,该开关还可以被配置为当软判决解码模式不降低校验子值时将该解码器核切换到硬判决解码模式。
本发明的还可以包括一种非暂时性计算机可读介质,其具有当由硬件控制器系统读取时使得硬件控制器系统执行以下操作的信息:对码字执行硬判决解码,为该码字的每个比特记录翻转次数,基于该每个比特的翻转总数分别生成每个比特的可靠性信息,根据切换规则确定切换到软判决解码,以及使用该每个比特的可靠性信息对该码字执行软判决解码。
根据一个实施例,该切换规则可以包括针对在当前解码进程中累计的码字的所有比特的翻转总数的门限数值。
根据一个实施例,该当前解码进程可以是基于硬判决解码的某一种配置的一次迭代,一个或多个层,或者一个或多个列。
根据一个实施例,该门限数值可以基于用于校验该码字的奇偶校验矩阵的形状和/或特征以及对该奇偶校验矩阵的仿真来配置。
根据一个实施例,该切换规则可以包括基于即时校验子值的门限数值。
根据一个实施例,当由硬件控制器系统读取时,该信息还可以使得:当软判决解码不降低校验子值时,硬件控制器系统切换到硬判决解码。
附图说明
图1示意性地示出了根据本发明的一个实施例的线性块解码器。
图2A是根据本发明的一个实施例的用于码字的Tanner图的图形说明。
图2B和2C是根据本发明的一个实施例的在码字的Tanner图中信息传递的图形说明。
图3示意性地示出了根据本发明的一个实施例的用于LDPC码的奇偶校验矩阵。
图4是根据本发明的一个实施例的用于解码码字的过程的流程图。
图5示意性地示出了根据本发明的一个实施例的一种具有纠错的存储系统。
图6示意性地示出了根据本发明的一个实施例的一种具有纠错的通信系统。
具体实施方式
现在将参考附图详细描述根据本公开的各具体实施例。为了一致性,各个附图中的相同元件由相同的附图标记表示。
本公开提供了一种用于解码线性块码的装置、系统和方法,例如但不限于矩形奇偶校验、汉明码和低密度奇偶校验(LDPC)码。线性块码可以由一个m×n奇偶校验矩阵H指定,其中n是码字中比特的数量,m是冗余比特(例如,奇偶校验比特)的数量。对于LDPC码,矩阵H可以是具有低密度非零元素的稀疏矩阵。一个n-bit码字c=[c1,c2,c3,...,cn]是满足矩阵方程Hc
T=0的有效码字,其中c
T是c的转置,向量
可以被称为c的校验子。线性块码也可以通过Tanner图以图形形式表示。对应于该m×n矩阵H的Tanner图可以包括两组顶点:用于码字比特(比特节点)的n个顶点,和用于奇偶校验方程(校验节点)的m个顶点。
根据本公开的一个或多个实施例提供了一种用于解码线性块的方法,包括:对码字执行硬判决解码,为该码字的每个比特记录翻转次数,基于每个比特的翻转次数为每个比特生成可靠性信息,基于切换规则确定切换到软判决解码,以及对该码字执行软判决解码。
图1示意性地示出了根据一个实施例的线性块解码器100。解码器100可以包括解码器核102,软数据生成器104,软数据缓冲器106,开关108和硬数据缓冲器110。解码器核102可以是配置有“硬判决解码”和“软判决解码”的两种操作模式的解码器。例如,解码器核102可以包括被配置为执行硬判决解码的解码器电路和被配置为执行软判决解码的解码器电路。在各种实施例中,用于硬判决解码的解码器电路可以是实现硬判决算法的任何合适的硬判决解码器,包括但不限于比特翻转算法或尚待开发的任何其他硬判决技术。用于软判决解码的解码器电路可以是实现软判决算法的任何合适的软判决解码器,包括但不限于任何基于业内已知的置信传播的传统软判决算法(例如,和积算法(“SPA”)、最小和算法、随机解码算法或它们的变化)或任何其他尚未开发的软判决算法。例如,在一个实施例中,解码器核102可以是最小和解码器,其可以在单比特硬判决(HD)模式和多比特信息软判决(SD)模式下操作。
软数据生成器104可以包括:可以被配置为生成软数据(例如,包括基于解码器核102的解码操作的累计翻转信息和可靠性信息(例如,软对数似然比(LLR)))的电路。在一个实施例中,例如,解码器核102可以从硬数据输入(“HARD DATA IN”)信号线接收码字的硬数据,以及开始利用硬判决解码来解码码字。该硬数据可以从通信信道中被接收或者从存储设备(例如,诸如NAND存储设备的非易失性存储器)中被获取。在硬判决解码操作的每次迭代期间,码字的一个或多个比特码元可以被翻转。迭代期间(或在解码层或解码列期间)的解码信息可以被发送到软数据生成器104。该解码信息可以包括,例如,哪些比特码元已经被翻转,任意比特码元已经翻转了多少次数,等等。软数据生成器104可以基于每个比特的累计翻转信息生成每个比特码元的可靠性信息。例如,如果在一次或多次迭代之后某一个比特码元被翻转多次,则该比特值很可能不可靠。生成的可靠性信息可以被发送到软数据缓冲器106并临时存储在其中。虽然软数据生成器104可以是在图1中示出的与解码器核102分离的组件,但是在一个实施例中,软数据生成器104可以作为解码器核102的一部分被实现。
在实现迭代解码的一些实施例中,可以在每次迭代之后更新码字的每个比特的可靠性信息。在一些迭代解码的实施例中,每次迭代可以使用基于层的或基于列的解码来执行。在这些实施例中,该可靠性信息可以在处理每个层或列时被更新。在各种实施例中,取决于解码器核102的配置,可以将迭代,层(或当一组层一起被解码时的多个层)或列(或当一组列一起被解码时的多个列)用作解码进程(或解码步骤)。可以针对已经执行的所有解码进程生成码字的每个比特的累计翻转信息,直到生成或更新这类信息为止。
开关108可以配置有切换规则。当满足切换规则的条件时,开关108可以使用针对码字的每个比特生成的可靠性信息,使解码器核102从硬判决解码切换到软判决解码。在一个实施例中,开关108可以实现为多路复用器。当不满足切换规则时,开关108将不会使存储在软数据缓冲器106中的可靠性信息通过。当满足切换规则时,开关108可以让可靠性信息通过并被解码器核102使用。
一些示例性切换规则可以基于翻转总数的门限数值。在一个示例性的切换规则中,在一个解码进程期间已经处理的码字中的所有编码码元的翻转总数可以被计数为由软数据生成器104生成的软数据的一部分。该条软数据可以被传送给开关108并将其与门限数值进行比较。如果翻转的总数低于门限数值,这可能意味着当前硬判决解码的性能可能不令人满意,则可以触发切换规则以使解码器核102在下一个解码进程中从硬判决解码切换到软判决解码。应当注意,在一些实施例中(例如,基于层的解码),在一个计数周期期间,一个比特可以被多次翻转,并且可以在累加的翻转总数中对每次翻动进行计数。在一些实施例中,该门限数值可以基于奇偶校验矩阵H的形状和特征来确定,以及基于使用奇偶校验矩阵H的仿真来配置。
在各种实施例中,可以计算校验子并将其用于确定解码过程是否正在收敛。例如,解码器核102可以被配置为在执行解码工作时计算校验子。在操作期间,可以在解码过程开始时计算初始校验子。如果初始校验子为零,则码字是有效码字,并且不需要解码过程。如果初始校验子不为零,则可以开始硬判决解码。在每个解码进程期间或之后,可以计算即时校验子。如果在任何时刻即时校验子变为零,则码字被成功解码及解码过程可以停止。在一些实施例中,校验子也可以被用于切换规则。在这些实施例中,可以将向量校验子
的所有元素相加在一起以生成和值,其也可以称为校验子值。在一个实施例中,切换规则可以是基于即时校验子值的门限数值。例如,初始校验子值可以是初始非零数,并且即时校验子值可以随着每个解码进程(例如,指示解码正在收敛)而减小。在该实施例中,当即时校验子值达到门限数值时,开关108可以触发解码器核102从硬判决解码切换到软判决解码。
在一些实施例中,切换规则可以基于即时校验子值之间的差值。在一个实施例中,一个示例性切换规则可以是基于两个连续即时校验子值之间的差值的门限数值。如果该校验子值没有减少至少两个连续解码进程之间的门限数值,则开关108可以触发解码器核102从硬判决解码切换到软判决解码。例如,门限数值可以被配置为N,并且如果与紧接在前的校验子值相比当前校验子值没有减少到N,则开关108可以确定满足切换规则并且让解码器核102在下一个解码进程中从硬判决解码切换到软判决解码。该门限数值N可以是整数,例如20、30、50等,其可以根据奇偶校验矩阵的形状和特征基于模拟来确定。类似于基于总翻转次数的切换规则,在一些实施例中,基于即时校验子值的切换规则的门限数值,还可以基于奇偶校验矩阵H的形状和特征来确定,以及基于使用奇偶校验矩阵H的模拟来配置。
在一些实施例中,开关108还可以配置有另一个切换规则以从软判决解码切换到硬判决解码。在一个实施例中,用于切换到硬判决解码的切换规则可以基于校验子。例如,如果在软判决解码中生成的即时校验子值在连续解码进程中没有减少(例如,其可以指示软判决解码不收敛),则开关108可以让解码器核102切换回硬判决解码。在开关108可以让解码器核102从软判决解码切换到硬判决解码的一个实施例中,当硬判决解码触发切换规则切换到软判决解码时,解码器核102可以再次切换到软判决解码。
在各种实施例中,在达到最大迭代次数之前该即时校验子达到零时,或者在达到最大迭代次数时,该解码过程可以结束。
硬数据缓冲器110可以被配置为在每个解码进程之后存储硬判决解码结果的比特码元值。该存储的比特值可以被反馈到解码器核102以用于下一个解码进程,其可以是硬判决解码进程或软判决解码进程。
图2A是根据本公开的一个实施例的用于码字的Tanner图200的图形说明。Tanner图200可以是二分图,其示出了诸如汉明码或LDPC码的块码的奇偶校验约束。可以在奇偶校验矩阵HE中指定奇偶校验约束。对于LDPC码,奇偶校验矩阵HE可以是一个低密度,稀疏的m×n矩阵,其中m可以是行的数量(例如,校验节点的数量),n可以是码字中码元的数量(例如,比特节点的数量)。奇偶校验矩阵HE不一定是唯一的,并且可以通过任何已知技术或将来开发的任何技术来选择。
奇偶校验矩阵HE的每一行可以对应于一个校验节点,并且每一列可以对应于一个比特节点。在二进制码中,奇偶校验矩阵的元素是0或1,但是对于非二进制LDPC码,奇偶校验矩阵的元素可以具有非二进制值。奇偶校验矩阵的每一行可以形成奇偶校验方程的系数。例如,对于图2A中所示的节点,奇偶校验矩阵HE可以为如下:
Tanner图中显示了两种类型的节点。如图2A所示,校验节点202、204、206、208、210、212、214、216和218可以用方块表示,并且可以表示有效码字或成功解码的码字必须满足的奇偶校验方程。比特节点220、222、224、226、228、230、232、234、236、238、240和242可以表示为圆圈,并且可以表示码字中的码元(即,二进制码的比特),例如,比特节点220、222、224、226、228、230、232、234、236、238、240和242可表示码字c=[c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12]中相对应的c1、c2、c3、c4、c5、c6、c7、c8、c9、c10、c11和c12。
校验节点和比特节点之间的连接可以表示奇偶校验约束。例如,校验节点202可以表示在上面示出的奇偶校验矩阵HE中指定的奇偶校验方程的第一行,其在列3、6、7和8中具有非零值。码字中的码元c3、c6、c7和c8可以对应于奇偶校验矩阵HE的第一行中的这些非零位置,并且奇偶校验方程的第一行可以由数学方程表示为:c3c6c7c8=0,其中是二进制码字的模2加法。因为比特节点224、230、232和234对应于码元c3、c6、c7和c8,所以校验节点202可以连接到这些比特节点。也就是说,校验节点202可以被认为“校验”比特节点224、230、232和234。类似地,校验节点204可以表示在上面示出的奇偶校验矩阵HE中指定的奇偶校验方程的第二行,其在列1、2、5和12中具有非零值,并且奇偶校验方程的第二行可以用数学方程表示为:c1c2c5c12=0,其中是二进制码字的模2加法。因为比特节点220、222、228和242可以对应于码元c1、c2、c5和c12,所以校验节点204可以连接到这些比特节点。校验节点204可以被认为“校验”比特节点220、222、228和242。其他校验节点可以根据相应的奇偶校验约束连接到比特节点。应当注意,因为每行具有四个非零位置,所以每个校验节点可以连接到四个比特节点。
从比特节点的角度来看,上面示出的奇偶校验矩阵HE中的每一列可以在三行中是非零的。也就是说,码字中的每个码元可以通过三个奇偶校验方程来“校验”。因此,每个比特节点可以连接到三个校验节点。例如,码字中的第一码元可以在第二、第五和第七奇偶校验方程(矩阵HE的第二、第五和第七行)中被校验。可以表示码字中的第一码元的比特节点220可以连接到校验节点204、210和214。可以表示码字中的第二码元的比特节点222可以连接到校验节点204、208和218。其他比特节点可以根据相应的奇偶校验约束连接到校验节点。比特节点视角的总体连接与校验节点的角度相同。
图2B和2C是根据本公开的一个实施例的在Tanner图200中用于码字的信息传递的图形说明。Tanner图200可以被用于硬判决和软判决解码模式中的码字的迭代解码。如图2A所示,校验节点208可以连接到比特节点222、230、232和238。也就是说,校验节点208可以“校验”比特节点222、230、232和238。为了进行说明,图2B中的箭头指示信息可以从比特节点222、230、232和238流到校验节点208。校验节点208可以基于从这些比特节点传递的信息执行“校验”比特节点222、230、232和238的操作。这可以被称为迭代解码操作中的“码元到校验(symbol-to-check)”步骤。校验节点可以根据由解码器(例如,硬判决算法或软判决解码算法)实现的解码算法来执行“校验”操作。
此外,图2A中的Tanner图200示出了比特节点226可以连接到校验节点206、212和214。也就是说,比特节点226可以由校验节点206、212和214“校验”。图2C中箭头指示信息可以从校验节点206、212和214流到比特节点226。比特节点226可以基于来自校验节点206、212和214的信息来执行操作以更新其信息(例如,码元值,或者码元值和取决于它是硬判决解码还是软判决解码的码元值的可靠性两者)。这可以被称为迭代解码操作中的校验到码元步骤。
应该注意的是,二进制码可以用作这里的示例。但是,在根据本公开的一个或多个实施例中,可以使用非二进制码,例如,基于伽罗瓦域(2f)的线性块码,其中f是大于1的整数。
适合于由线性块解码器100使用的一些LDPC码可以包括准循环(QC)LDPC码,其中奇偶校验矩阵包括多个正方形子矩阵,其是零、单位矩阵或循环移位的单位矩阵,然而本发明的范围不限于此。图3示意性地示出了根据本公开的一个实施例的用于QCLDPC码的奇偶校验矩阵300。奇偶校验矩阵300可以包括具有9列和30行的矩形子矩阵的9×30个方块。出于说明的目的,可以仅标记30行正方形子矩阵的行302.1、302.2和302.30以及正方形子矩阵的列304.1、304.2、304.3、304.4、304.5、304.6、304.7、304.8和304.9。每个正方形子矩阵可以是一个Z×Z正方形子矩阵,其中Z是整数。在图3所示的实施例中,奇偶校验矩阵300的每个正方形子矩阵可以包括32行和32列元素,但是数字Z可以是可能是码字长度的因子的另一个数字。
一个正方形子矩阵可以是零方阵,意味着正方形子矩阵中的所有元素都是零,并且这样的正方形子矩阵可以被示为空正方形子矩阵。例如,从行302.1左数起的第二、第三、第四、第五、第七和第九正方形子矩阵可以是零正方形子矩阵。
或者一个正方形子矩阵可以是非零方阵,其可以被称为循环矩阵。循环矩阵可以是单位正方形子矩阵或循环移位正方形子矩阵。单位正方形子矩阵可以是正方形矩阵,其从左上角到右下角的每个对角元素可以是1,并且所有其他元素可以是零。在一个实施例中,单位正方形子矩阵可以用数字0(“0”)表示。循环移位的单位正方形子矩阵可以是单位方阵,其中每个元素循环移位固定次数。循环移位可以意味着一行中的每个元素在移位方向上移动到相邻元素的位置,其中行的末端元素被移动到开头元素的位置。在一个实施例中,可以通过将单位正方形子矩阵的所有元素向右循环移位固定次数并且由固定数量的循环右移表示来获得循环移位的单位正方形子矩阵。例如,位于列304.1和行302.1的正方形子矩阵可以用数字20表示,因为它可以是右旋周期移位20次的单位正方形子矩阵。
应当注意的是,对应于图2A中的Tanner图的奇偶校验矩阵HE可以对应于常规LDPC码,其中每个代码数字可以包含在相同数量的方程式中,并且每个方程式可以包含相同数量的代码码元。例如,可以对应于奇偶校验方程式的奇偶校验矩阵HE的每一行可以包含由1标记的四个代码码元,并且每个代码码元可以包含在三个奇偶校验方程式中。相比之下,奇偶校验矩阵300可以对应于不规则LDPC码,其可以在行和列中具有数量可变的1。例如,行302.1可以包含三个非零正方形子矩阵,意味着在行302.1中的每个奇偶校验方程中可以包含三个代码码元。在图3所示的示例中,在行302.1的每个正方形子矩阵中可以有32行元素,因此302.1可以对应于32个奇偶校验方程,每个可以“校验”三个代码码元。行302.2可以包含四个非零正方形子矩阵,并且对应于32个奇偶校验方程,每个方程可以“校验”四个代码码元。这些示例示出了可以在根据本公开的实施例中实现规则LDPC码和不规则LDPC码。
在实现基于层的解码或基于列的解码的实施例中,可以在一个或多个层(例如,奇偶校验矩阵的正方形矩阵中的一行或多行)、一个或多个列(例如,奇偶校验矩阵的正方形矩阵中的一列或多列),或者一个或多个层和一个或多个列的组合上执行解码进程(例如,解码步骤)。例如,在一个实施例中,在每个解码进程中,可以处理正方形矩阵的一行;在另一个实施例中,在每个解码进程中,可以处理正方形矩阵的两行或更多行。在又一个实施例中,在每个解码进程中,可以处理正方形矩阵的一列;以及在又一个实施例中,在每个解码进程中,可以处理正方形矩阵的两列或更多列。在一些实施例中,基于层的和基于列的解码可以被组合。例如,解码进程可以包括正方形矩阵块(例如,K列和F行的相交,使得F乘以K个正方形矩阵在一个解码进程中被处理,其中K和F分别大于或等于1)。
图4是根据一个实施例的使用从硬判决解码生成的软数据来解码线性块码字的过程400的流程图。在框402中,可以对码字执行硬判决解码。例如,解码器核102可以从信号线中的硬数据接收码字,并且对码字执行硬判决解码操作。在框404中,可以记录码字的每个比特的翻转次数。例如,在当前解码进程或解码步骤结束时,可以在解码器核102处收集码字的每个比特的翻转信息,并将其发送到软数据生成器104。在框406中,可以基于每个比特的翻转次数来生成对应于每个比特的可靠性信息。软数据生成器104可以为码字的每个比特累加翻转,并使用该信息来确定对于比特的比特值是否可靠。例如,在解码过程期间,解码器100可以具有每个比特被翻转多少次的信息。如果一个比特位被翻转多次,那么比特值很可能不可靠。
在框408,可以根据切换规则确定是否切换到软判决解码。如本文所述,切换规则的各种实施例中可包括对于一个解码进程期间翻转次数的门限数值、校验子值或这些条件的组合。在框410中,可以使用每个比特的可靠性信息对码字执行软判决解码。
本文公开的各过程的实施例(包括过程400)可以使用软件(例如,可由计算机处理器(如中央处理单元(CPU)、图形处理单元(GPU)或两者))、硬件(例如,现场可编程门阵列(FPGA)或专用IC(ASIC))、固件或三者的任意合适组合来实现。在一个实施例中,例如,线性块解码器100的组件可以以硬件电路实现,并且这些过程可以在硬件中进行。
在另一实施例中,例如,线性块解码器100的组件以及任何所公开的方法和操作可以在包括存储在一个或多个计算机可读存储介质上的计算机可执行指令的软件中实现。一个或多个计算机可读存储介质可以包括非暂时性计算机可读介质(诸如可移动或不可移动磁盘、磁带或磁带、固态驱动器(SSD)、混合硬盘驱动器、CD-ROM、CD-RW、DVD或任何其他有形存储介质),易失性存储器组件(例如DRAM或SRAM)或非易失性存储器组件(例如硬盘驱动器)。计算机可执行指令可以由计算机处理器(例如,CPU、GPU或两者)在计算机(例如,任何商用计算机,包括智能电话或包括计算硬件的其他移动设备)上执行。用于实现所公开的技术的任何计算机可执行指令以及在所公开的实施例的实现期间创建和使用的任何数据可以存储在一个或多个计算机可读介质(例如,非暂时性计算机可读介质)上。例如,可以使用一个或多个网络计算机在单个本地计算设备(例如,任何合适的商用计算机或移动设备)上或在网络环境(例如,通过因特网,广域网,局域网,客户端-服务器网络(例如云计算网络)或其他此类网络)中执行这类软件。
图5示意性地示出了一个系统500,其包括这里描述的线性块解码器100。该系统500可以是存储系统,例如但不限于存储器或硬盘驱动器系统。该系统500可以包括数据存储器502和解码器504。该数据存储器502可以是例如存储器或硬盘驱动器。该解码器504可以是图1所示的一个实施例的线性块解码器100。从数据存储器502读取的数据可能已损坏,以及解码器504可解码损坏的数据并恢复正确的数据信息。
图6示意性地示出了另一个系统600,其包括这里描述的线性块解码器100。该系统600可以是通信系统,例如但不限于有线或无线通信系统。该系统600可以包括接收器602、解调器604和解码器606。该接收器602可以是例如用于无线通信的天线或用于有线通信的接收器。该解调器604可以被配置为解调由接收器602接收的信号并生成数字信号。该解码器606可以是图1所示的一个实施例的线性块解码器100。由接收器602接收的数据可能已损坏,以及解码器606可解码损坏的数据并恢复正确的数据信息。
应当注意的是,在若干示例和实施例中,LDPC可以用作线性块码的一个示例。然而,根据本公开的各实施例可以针对其他类型的线性块码实现,例如但不限于矩形奇偶校验和汉明码。此外,诸如在“线性块码”、“LDPC码”或“汉明码”中使用的词“码”通常可以指代码的类型。并且“码字”一词可以指用线性块码编码的单位数据块。
虽然本文已经公开了各种方面和各实施例,但是其他方面和实施例对于本领域技术人员来说将是显而易见的。这里公开的各个方面和各实施例是出于说明的目的而不是限制性的,真正的范围和精神由所附权利要求指示。