专利名称:近码字的rom列表解码的制作方法
技术领域:
本发明涉及数字信号处理,并且更具体地,涉及被称为低密度奇偶校验(LDPC)编 码的数据编码方法。
背景技术:
通信是由传输方在通信信道上向接收方传输信息。在现实世界中,通信信道是向 接收方输出从传输方接收的信息的失真版本的有噪信道。硬盘(HD)驱动器就是这样一种 有噪信道,其从传输方接收信息,存储该信息,然后可能将该信息的或多或少地失真的拷贝 传输给接收方。由诸如HD驱动器的通信信道引入的失真可能大到足以引起信道错误,即,当信道 输入信号是0时,接收方将信道输出信号解释为1,或者反之。信道错误减小了吞吐率,并且 因此是不希望的。因此,存在对检测和/或校正信道错误的工具的持续需要。低密度奇偶校 验(LDPC)编码是用于检测和校正信道错误的一种方法。LDPC码是可以为低信噪比(SNR) 应用实现非常低的位错误率(BER)的已知的近Shannon极限编码之一。LDPC解码以其并行 潜力、低实现复杂度、低解码延迟以及在高SNR下的不很严重的错误平台(error-floor)而 著称。实际上认为LDPC码将用于所有下一代通信标准。
发明内容
在某些实施例中,本发明包括用于对使用基于图的码编码的编码数据进行解码的 方法。该方法包括(a)对编码数据解码,以便产生候选解码码字,和(b)如果候选解码码字 不是解码正确的码字,执行陷阱集合(TS)-ROM列表解码方法,以便试图产生解码正确的码 字。候选解码码字具有至少一个不满足校验节点,其中该不满足校验节点是奇偶校验失败 的校验节点。TS-ROM列表解码方法访问存储在ROM存储器内的一个或更多个TS简档。第 一个存储的TS简档包括用于至少一个不满足校验(USC)节点的存储信息,以及用于至少一 个误满足校验(MSC)节点的存储信息。MSC节点是(1)与错误位节点(EBN)相关联并且(2) 满足奇偶校验的校验节点。第二个存储的TS简档与具有一个或更多个USC节点和一个或 更多个MSC节点的陷阱集合相关联,其中第二个存储的TS简档包括一个或更多个USC节点 的存储信息,但是不包含关于一个或更多个MSC节点的信息。在其它实施例中,本发明是用于对使用基于图的码字编码的编码数据进行解码的 装置。该装置包括(a)被配置为对编码数据解码,以便产生候选解码码字的解码器,和(b)后处理器,被配置为如果候选解码码字不是解码正确的码字,则执行陷阱集合(TS) -ROM列表解码方法,以便试图产生解码正确的码字。候选解码码字具有至少一个不满足校验节点, 其中不满足校验节点是奇偶校验失败的校验节点。TS-ROM列表解码方法访问存储在ROM存 储器内的一个或更多个TS简档。第一个存储的TS简档包括用于至少一个不满足校验(USC) 节点的存储信息,以及用于至少一个误满足校验(MSC)节点的存储信息。MSC节点是(1)与 错误位节点(EBN)相关联并且(2)满足奇偶校验的校验节点。第二个存储的TS简档与具 有一个或更多个USC节点和一个或更多个MSC节点的陷阱集合相关联,其中第二个存储的 TS简档包括一个或更多个USC节点的存储信息,但是不包含关于一个或更多个MSC节点的 fn息ο
从下面的详细描述、所附的权利要求书以及附图中,将会完全明了本发明的其它方面、特征和优点,在附图中相似的附图标记指示相似或相同的元件。图1是使用LDPC编码的典型硬盘(HD)驱动器100的一部分的方框图;图 2 (A)示出了 LDPC H 矩阵 200,图 2 (B)是 H 矩阵 200 的 Tanner 图;图3是由解码器112使用的典型LDPC解码方法300的流程图;图4是用于识别陷阱集合和记录关于这些陷阱集合的各种信息的离线陷阱集合 (TS)仿真工具400的方框图;图5是根据本发明的一个实施例的LDPC解码方法500的方框图;图6是图5的ROM P表514的示例布局;图7是图5的B表512的示例布局;图8是图5的E表516的示例布局;图9是图5的EI表518的示例布局;图10是图5的RAM P表522的示例布局;图11是图5的RAM索引表524的示例布局; 图12是图5的LDPC解码系统500所使用的示例处理1200的流程图;图13是由图5的后处理器504实施的图12的示例TS-ROM列表解码处理1206的 流程图;图14是图13的示例TS-ROM搜索处理1314的流程图;图15是图12的示例TS-RAM列表解码处理1208的流程图;和图16是图12的示例TS-RAM更新处理1216的流程图。
具体实施例方式图1是使用LDPC编码的典型硬盘(HD)驱动器100的一部分的方框图。HD驱动器 100包括盘片102和读通道104。读通道104包括LDPC编码器106、写处理器108、读处理 器110和LDPC解码器112。路径114是LDPC编码器106和LDPC解码器112之间的有噪信道。由LDPC编码器106处理将被写到盘片102的信息字以便产生LDPC码字。LDPC码 字被发送到写处理器108,写处理器108包括若干模块,例如,BPSK ( 二进制相移键控)编码器、数字到模拟转换器等。写处理器108的输出116被写到盘片102。从盘片102读取的信号118被发送到读处理器110,读处理器110包括若干模块, 例如,前置放大器、连续时间滤波器、固定激励响应滤波器、解码器、模拟到数字转换器等。 读处理器Iio向LDPC解码器112输出对数似然比(LLR)值L。h,LDPC解码器112又输出解 码的信息字。另外,LDPC解码器112将Euirc值送回读处理器110。EII)rc被以下面的等式6 定义,并且表示中间计算LLR值。读处理器110使用Euirc值调整其性能,这是被称为turbo 解码的处理。LDPC 编码LDPC编码器106给信息字的位附加由LDPC码指定的若干奇偶位,以便产生码字。 信息字中的位被称为变量位,并且这些变量位的数目被表示为K。LDPC码字中的位的总数 被表示为N。因此,由N-K给出奇偶位的数目。特定LDPC码的比率是K/N,即,信息字长度 与码字长度的比。因此,给每3位信息字附加6个奇偶位以便产生9位码字的LPDC码具有 1/3的比率。在典型的HD驱动器的情况下,对于4506位的码字长度和0. 9的比率,信息字 长度K是4096位(典型HD驱动器扇区的长度),并且奇偶位的数目近似为410位。LDPC码字中的每个奇偶位以由特定LDPC码所指定的特定方式与码字中的一个或 更多个其它(变量或奇偶)位相关联,并且分配给奇偶位的值被设置为满足LDPC码。典型 LPDC码规定相关联的位满足奇偶校验约束,例如,相关联的位的和是偶数,S卩,和模2 = 0。LDPC 码由被称为奇偶校验矩阵或H矩阵或简称为H的1和0的二维矩阵定义特定的LDPC 码。LDPC编码器和解码器事先知道H。H包括N列和N-K行,S卩,码字的每个位针对一列,并 且每个奇偶位针对一行。H中的每个1表示列的码字位和行的奇偶位之间的关联。例如,H 的第3行第7列处的1意味着第3个奇偶校验位与码字的第7个位相关联。校验位与和该 校验位相关联的所有变量位的值的和模2应当为0。H的一列中的1的数目被称为该列的权重w。。类似地,H的一行中的1的数目被称 为该行的权重K。由所有列具有相同的《。并且所有行具有相同K的H定义的LDPC码被称 为规则LDPC码。由分别在所有列和/或行上不全相同的W。和/或W,的H定义的LDPC码 被称为不规则LDPC码。典型LDPC码的一种定义特性是H是“稀疏的”,即,H的元素大部分为0,只有少数 为1。研究显示H矩阵通常需要W。彡3以便有良好表现,并且不规则LDPC码优于规则LDPC码。图2 (A)示出了 LDPC H矩阵200。H矩阵200包括N = 9列和N-K = 6行。因此, H矩阵200定义接受3位信息字、附加6个奇偶位、并且输出9位码字的LDPC码。因此,这 种特定LDPC码的比率是3/9或1/3。由H矩阵200定义的LDPC码是规则的,其W。为2并 且Wr为3。信道输出对数似然比返回图1,LDPC编码器106和LDPC解码器112之间的路径114是有噪信道,并且 从而,解码器112不能接收由LDPC编码器106输出的码字的完美拷贝。而是,读处理器110 输出一个或更多个L。h值,其中每个L。h值与信道输入码字中的一个位相对应。每个Leh值是一个对数似然比(LLR)。LLR是包括若干位的数据结构, 其中一个单个的符号位指示硬判决(即,读处理器110关于原始位是1还是0的最佳猜测),并且剩余
的量值位指示读处理器110对该硬判决的置信程度。更准确地,LLR表示1()g,,其中Ptl是样本表示0的概率,并且P1是样本表示1的概率。例如,读处理器110可以用5位数据结构输出每个L。h值,其中最高位是指示硬判 决值的符号位,并且4个量值位的16个值指示硬判决的置信度。因此,例如,在一种典型的 方案中,二进制00000的LLR值指示具有最低置信度的硬判决值0,二进制01111的LLR值 指示具有最高置信度的硬判决值0,二进制10000未使用,二进制10001指示具有最低置信 度的硬判决值1,并且二进制11111指示具有最高置信度的硬判决值1。LDPC解码信任传播图3是由解码器112使用的典型LDPC解码方法300的流程图。LDPC解码器112 接收N个L。h值,并且输出解码的信息字。解码方法300的核心是被称为信任传播的迭代的 两阶段消息传递算法。通过使用被称为Tanner图的视觉表示最好地解释信任传播。图2 (B)是H矩阵200的Tanner图。一般地,Tanner图包括1)等于H中的列数 的位节点数目η (并且因此等于变量位的数目),2)等于H中的行数的校验节点数目m(并且 因此等于奇偶位的数目),3)线,也被称为边,每个边将单个位节点连接到单个校验节点, 4)对于每个位节点n,从接收方接收的原始L。h值,和5)对于每个位节点n,计算的硬判决 输出值乞。图2 (B)的Tanner图包括9个位节点Iitl-Ii8,6个校验节点HicrlIi5,18个将位节点连 接到校验节点的边202,9个Leh值和9个瓦值。Tarmer图中的边表示(即,变量)位节点η和校验节点m之间的关系,S卩,边表示 H中的1。例如,在图2(B)中,边202将第1个位节点Iitl连接到第4个校验节点m3,这意味 着在图2 (A)的H矩阵200的第1列第4行中存在1。Tanner图是二分图,即,一个边仅能将一个位节点连接到一个校验节点,而不能将 一个位节点连接到另一个位节点,或者将一个校验节点连接到另一个校验节点。表 示被以边连接到特定校验节点m的所有位节点η的集合。以Μ(η)表示被以边连接到特定 位节点η的所有校验节点m的集合。特定(位或校验)节点的索引是其在图中的序数序列。(位或校验)节点的度是 连接到该节点的边的数目。因此,Tarmer图中位节点η的度等于相应H矩阵中的列η的权 重w。,并且Tarmer图中校验节点m的度等于相应H矩阵中的行m的权重^。返回图3,处理开始于步骤302,并且进入步骤304,进行解码器初始化。解码器初 始化304包括将与每个位节点η连接的所有边(例如,图2 (B)的202)设置为与位节点η 相关相应L。h值,并且将位节点η的元值设置为位节点η的L。h的硬判决值。因此,例如,在 图2 (B)中,如果与位节点Iitl相关联的Leh值是+5,则在步骤304,将使位节点Iitl连接到校验 节点mQ和m3的两个边202设置为+5,并且位节点η的、值被设置为1。表述这个步骤的第 一部分的另一种方式是位节点Iitl向集合M(Iitl)中的每个校验节点m发送消息+5。以(^表 示从位节点η发送到校验节点m的消息,其中Qnm为LLR的形式。解码器刚被初始化后的状 态被称为状态0。随后,步骤304向校验子校验步骤306发送包括N个瓦值的矢量jf。矢量if是码字候 选。校验子校验步骤306使用下面的等式(1)计算校验子矢量Z <formula>formula see original document page 0</formula>其中Ht是H矩阵的转置。如果ζ是0矢量,则矢量jf满足由H定义的所有奇偶校 验约束,即, 是有效的解码码字。在该情况下,处理进入循环冗余校验(CRC)318。 相反,如果ζ不是0矢量,则矢量未通过一个或更多个奇偶校验约束,这通常被称 为不满足校验节点或use。校验子矢量Z中不为0标量值的元素的数目是矢量Jf中的USC的 数目b。另外,校验子矢量Z的非0标量元素的索引是USC在矢量 中的索引。如果矢量jf未通过校验子校验306,则处理继续一个或更多个解码迭代308中的第 一个迭代。解码迭代308包括三个步骤1)信任传播校验节点更新步骤310,2)信任传播 位节点更新步骤312和3)与步骤306相同的校验子校验步骤314。在信任传播校验节点更新步骤310中,每个校验节点m根据下面的等式2、3和4 使用从集合N(m)中的所有位节点η接收的Qnm消息计算以Rnm表示的消息脆(《C)(2)《― 爲陴1(3)C =(n¥ ^jviSinte'))⑷其中i是解码迭代,N(m)\n是除去位节点η之外的集合N(m),并且β是正的常 数,其值取决于码参数。然后计算的Rnm消息被沿着相同的边送回集合N(m)中的所有位节 点η。类似于Qnm消息,Rnm消息是LLR。接着,在信任传播位节点更新步骤312,每个位节点η根据下面的等式5计算Qnm消 息Σ^Ι⑶其中Ln(°)是位节点η的L。h值,并且M(n) \m是除去校验节点m之外的集合M(n)。 然后位节点η将计算的Qnm消息发送到集合Μ(η)中的所有校验节点m。并且,在位节点更新步骤312中,每个位节点η根据下面的等式6和7更新其瓦Σ 蠘(6)
m'eMM= +C)如果Pn彡0,则瓦=0,并且如果Pn ( 0,则瓦=1。由等式6产生的值也称为E值 或Ε·值。典型地,Eldpc值被作为称为turbo解码的调整处理的一部分被发送回读处理器 (例如,图1的读处理器110)。由等式(7)产生的值被称为P值。以等式(2)-(7)表示的 特定信任传播算法被称为最小和算法。注意,瓦被在每个解码迭代308中更新,并且最后由解码处理300输出。原始LLR 值Leh在解码处理300中保持不变。换言之,在每个解码迭代308中,每个位节点η对其通 过校验节点m相关联的所有其它位节点η的正确值进行投票。例如,在图2(B)中,位节点 η0与校验节点mQ和m3相关联。因此,n0对与校验节点mQ和m3相关联的位节点,即,n3、n5、116和117的正确值投票。位节点η的L。h值的量值越大(即,置信度越大),位节点η的投票 计数越多。这种投票的最终作用是具有低L。h量值(即,置信度)的位节点的^值将发生改 变,并且顺应与该位节点相关联的高置信度位节点的信任。换言之,如果位节点的L。h值包 含错误的硬判决值和低量值,则在一个或更多个迭代之后,其它位节点的组合投票趋于校 正该错误的硬判决值。位节点更新步骤312将由解码器的当前元值构成的矢量 发送到校验子校验步骤314。校验子校验步骤314与上面讨论的步骤306的校验子校验相同。如果矢量i通过了校 验子校验314,则矢量 被发送到CRC步骤318。LDPC解码循环冗余校验和误满足校验节点通过校验子校验306或314意味着矢量 是有效的解码码字,但是不必然是解码正 确的码字(DCCW)。LDPC解码器可能产生不是DCCW的有效码字。在该情况下,矢量jf中不存 在USC,但是存在误满足校验节点(MSC)。因此,为了确保有效的矢量 是DCCW,处理300将 矢量if传递到循环冗余校验(CRC)318。CRC校验是校验和运算,其可以检测传输或存储过程 中的数据改变。如果矢量jf通过了 CRC校验,则矢量jf是DCCW,并且处理300将全局变量DCCW设置 为真,输出矢量i,并且在步骤320处终止。否则,矢量jf不是DCCW,并且处理300将全局变 量DCCW设置为假,输出矢量jf ,并且在步骤320处终止。全局变量DCCW通知其它解码处理 (例如,下面讨论的图12的TS-ROM列表解码处理1206)是否产生了 DCCW。返回步骤314,如果矢量jf未通过校验子校验,则矢量Jf仍然包含一个或更多个 USC。解决USC的典型方法是执行另一个解码迭代308。然而,特定矢量 中可能存在不能在 合理的时间量中被满足的一个或更多个USC。因此,LDPC解码器通常受限于它们可以对特 定矢量 执行多少次解码迭代。迭代的最大数目的典型值的范围从50到200。在图3中,步骤316确定是否达到了迭代的最大数目。如果未达到,执行另一个解 码迭代308。反之,如果达到了迭代的最大数目,则解码器处理300失败,S卩,解码器是“失 败的解码器”。在该情况下,处理300将全局变量DCCW设置为假,输出矢量Jf,并且在步骤 320终止。如果失败的解码器的矢量jf包含小数目(例如,小于16)的USC,则矢量被称为近 码字(NCW)。如果失败的解码器的矢量 包含大数目(例如,大于15)的USC,则矢量 被称 为无效码字(ICW)。处理失败的解码处理的两个典型方法是1)请求重新发送相应数据,或2)将矢量χ 传递到一个或更多个后处理(PP)方法。典型地,矢量Jf中的USC的数目b指示使用这两种 方法中的哪一种。通常通过重发或其它后处理方法处理大的b (例如,大于16),而通过错误 平台减轻后处理方法处理小的b值。BER、SNR和错误平台LDPC解码器的位错误率(BER)是表达对于处理的χ个位将产生多少个错误解码位 的比率。因此,例如,具有10_9的BER的解码器对于处理的每十亿个解码位平均产生1个错 误位。BER越小,解码器越好。当解码器失败,即,解码器终止而没有收敛到解码正确的码字 DCCff时,LDPC解码器的BER增大(恶化)。LDPC解码器的BER受解码器的输入信号的信噪比(SNR)的强烈影响。作为SNR的函数的BER图通常包括两个不同区域初始“瀑布”区域,其中对于SNR的单位增加,BER迅 速改善(下降);以及随后的“错误平台”区域,其中SNR的单位增加仅产生BER的略微改 善。因此,在错误平台区域中实现显著的BER改进需要SNR增加之外的方法。一种改善LDPC解码的错误平台特性的方法是增加码字长度。然而,增加码字长度 也增加LDPC解码所需的存储器和其它计算资源。因此,如果这些资源是紧缺的,HD驱动器 上的读通道设备通常就是这种情况,必须寻找其它方法产生必要的错误平台改进。另一种稀缺的资源是处理周期。通常,为了实现指定的吞吐率,HD驱动器为 解码一个码字安排固定数目的读通道处理周期预算。超出该预算的方法(S卩,计划外 (off-the-fly)的方法)将减小吞吐率。更希望在时钟周期分配内恢复DCCW,并且因此不 减小吞吐率的计划内的方法。陷阱集合和优势陷阱集合(a, b)陷阱集合是解码器不能在最大数目的迭代内满足 的b个USC以及与这些 USC相关联的a个错误位节点(EBN)的集合。大部分陷阱集合包括少于5个USC和少于10 个EBN。陷阱集合对LDPC解码器的错误平台特性具有显著影响,即,当LDPC解码器未能收 敛到DCCW时,通常是因为陷阱集合。改进LDPC解码器的错误平台特性的一种方法是(i)校验失败的解码器的 矢量 中的USC,并且识别陷阱集合(如果有的话),(ii)识别与这些USC相关联的EBN,(iii)翻 转与这些陷阱集合相关联的一个或更多个EBNdP (iV)重新启动解码器。在一种可能的实 现中,如果LDPC解码器刚被初始化,即,解码器处于状态0,翻转EBN包括(i)逆转EBN的 L。h值的硬判决值,即,1变为0,并且反之亦然,和(ii)将量值位,即,相同L。h值的置信度设 置为最大,例如,全为1。如果解码器处于不是状态0的某个状态,则翻转EBN包括(i)确 定EBN的P值(以上面的等式7定义)的硬判决值,(ii)将EBN的L。h值、P值和所有相关 联的QnmLLR的硬判决值设置为与步骤⑴的硬判决值相反,和(iii)将EBN的L。h值、P值 和所有相关联的QnmLLR的量值位设置为最大。通常,翻转一个或两个EBN将“中断”陷阱集 合,并且重新启动的解码器将收敛到DCCW。当被中断时,不同的陷阱集合产生错误平台特性的不同改进。优势陷阱集合指其 中断产生EBR/错误平台特性的指定改进的最小陷阱集合。例如,DTS-I指产生BER的单个 数量级改进,例如,从10_9到10,的最小陷阱集合,而DTS-3指产生BER的三个数量级改进, 例如,从10,到10_13的最小陷阱集合。近码字的列表解码列表解码是用于检测和中断陷阱集合的一种后处理方法。在列表解码中,将矢量 中的观察到的陷阱集合与已知陷阱集合的一个列表或多个列表进行匹配。陷阱集合列表 通常包括列表中的每个陷阱集合内的所有USC的索引,以及与这些USC相关联的一个或更 多个EBN的索引。如果发现了该列表中的与观察到的陷阱集合匹配的陷阱集合,则从列表 中检索EBN索引值(多个)。然后,翻转这些位节点,并且重新开始图3的解码处理300。陷阱集合仿真通常使用软件和硬件仿真工具离线产生列表解码所需的陷阱集合列表。图4是 用于识别陷阱集合并且记录关于这些陷阱集合的各种信息的离线陷阱集合(TS)仿真工 具400的方框图。工具400可被实现在例如现场可编程门阵列(FPGA)内。LDPC正确码字(CCW) 402被发送到信道和信号模块404,信道和信号模块404模拟图1的有噪信道114的行为。信道和信号模块404向LDPC解码器408输出Leh值406。如果LDPC解码器408产生 近码字(NCW) 410,则NCW410被发送到校验子校验模块412和误匹配位置记录器414。校验子校验模块412输出NCW410中的所有USC的索引416。误匹配位置记录器414比较NCW410 和CCW402,并且输出NCW410中的所有EBN的索引418。USC索引416加上EBN索引418构 成陷阱集合(TS)信息420。对于给定的LDPC实现,所有可能的陷阱集合可能有数以百万。然而,实现该实现的错误平台的显著(即,一个数量级或更多)改进通常仅需要所有可能的陷阱集合的一个 子集,即,优势陷阱集合(DTS)。因此,离线TS仿真工具400包括DTS-N汇编器422,它获取 输入的TS信息420,并且产生DTS-N信息424。DTS-N汇编器422使用三个步骤的处理收集、评分和评估。陷阱集合收集方法 使用基于码图结构的确定性噪声激励,以便检测陷阱集合。然后,按照距错误边界的距离 (DEB)值给收集的陷阱集合评分,其中具有低DEB值的陷阱集合对错误平台贡献更大。然后使用重要性采样评估陷阱集合,并且确认预测的评分。实际上,这种基于FPGA的离线仿真可能要被执行一年。例如,为了识别对于4Gb/ s的HD驱动器将产生10_15BER的陷阱集合,需要将离线仿真工具(例如,图4的工具400) 运行大约289天。通常,由于在HD驱动器读通道的最终设计和芯片的量产之间通常有1到2年的延迟,这种时间限制不是问题。陷阱集合只读存储器(TS-ROM)因此,使用图4的离线TS仿真工具400,可以事先识别对于特定的LDPC实现,将 产生错误平台特性的改进的一个或更多个陷阱集合或优势陷阱集合。一种在运行时环境中 实现列表解码的方法是在陷阱集合只读存储器(TS-ROM)中存储图4的离线产生的陷阱集合信息420,并且将TS-ROM与列表解码器程序耦联。TS-ROM列表解码器程序对jf中观察到 的USC和存储在TS-ROM中的陷阱集合进行比较。如果发现匹配,则TS-ROM列表解码器程 序在LDPC解码器中翻转适当的位节点值,并且重新启动解码器。通常,TS-ROM信息随机地存储在单向或双向链表内,其中使用暴力顺序搜索搜索 该表。通常,每个(a,b)陷阱集合在TS-ROM列表中占用(2+a+b)个记录。因此,对于(4,4) 陷阱集合简档(即,4个USC和4个EBN),将有10个记录一个指示存在4个USC的记录, 之后是4个单独的USC记录,然后一个指示存在4个EBN的记录,之后是4个单独的EBN记 录。典型的TS-ROM列表实现大约存储100个陷阱集合,并且不存储关于误满足校验节点的 任何信息。为了经济地实现这种TS-ROM实现,单个TS-ROM必需能够实现大量实现中所需的 错误平台改进。然而,陷阱集合随着实现的不同而不同,甚至当实施相同的LDPC码时也是 如此。例如,即使在两个HD驱动器上使用的LDPC码相同,与HD驱动器相关联的陷阱集合 也可能不同。具体地,研究发现陷阱集合受HD驱动器的抖动曲线、符号间干扰特性和脉冲 成形方案的影响。这些因素不仅可以在不同制造商的HD驱动器之间改变,而且还可以在来 自相同制造商的不同HD驱动器型号之间,甚至在相同型号的不同产品批次改变。因此,即 使在两个相同型号的硬盘驱动器之间,陷阱集合也可能改变。仿真如此众多的不同HD驱动 器的LDPC陷阱集合是不现实的。另外,当与特定HD驱动器配对使用时,仅装载了大量HD驱动器公共的陷阱集合的TS-ROM可能不能产生所需的错误平台改进级别。一种改进TS-ROM的性能的方法是给由基于FPGA的离线仿真工具(例如,图4的 工具400)产生的信息补充从制造的设备的测试模型获得的结果。典型地,一旦结束了电路 设计,将制造并且分发该设计的有限数目的测试模型,以便在开始大量生产之前进行测试。 虽然可能要花费一年以便确定对于特定的HD驱动器实现产生10_15的BER的陷阱集合,但 仅用一天就可以确定产生10_12的BER的陷阱集合。因此,测试模型被以LDPC测试模式运 行有限的时间段,并且存储任意发现的陷阱集合。将未在TS-ROM中的任意被发现的陷阱集 合添加到TS-ROM内。通过使用分发给消费者的实际设备,这种方法可以捕捉可能逃过了基 于FPGA的离线仿真工具(例如,图4的工具400)的陷阱集合。
陷阱集合随机访问存储器(TS-RAM)一种对TS-ROM的静态陷阱集合列表的运行时替换是在陷阱集合随机访问存储器 (TS-RAM)中存储陷阱集合信息,并且将图4的离线陷阱集合仿真工具400变为运行在实际 的单个设备(例如,HD驱动器)上的运行时陷阱集合收集和分析工具。取代从信道和信号 模块(例如,图4的模块404)接收初始值,运行时工具处理特定设备的实际信号。运行时工 具包括列表解码器功能,即,它将尝试匹配观察到的USC和TS-RAM中存储的陷阱集合信息, 并且如果发现了匹配,使用存储的信息改变解码器的位节点值,并且重新启动解码器。如果 未发现匹配,则运行时工具分析观察到的陷阱集合,即,识别与该USC相关联的EBN,并且确 定观察到的陷阱集合是否满足存储在TS-RAM中的阈值要求(例如,DTS-N中的成员资格)。在理论上,上述的TS-RAM工具适合于任意实现的陷阱集合简档。现实是由图4的 离线仿真工具400执行的陷阱集合/优势陷阱集合仿真是计算复杂的。特别地,从可能的 数十亿个陷阱集合构建优势陷阱集合尤其复杂。这种复杂性使得上述TS-RAM工具不适合 于大多数HD驱动器。通常,HD驱动器高速输出数据(每秒4吉比特),并且需要非常低的 BER/错误平台率(例如,10_13到10_15),但是仅在其固件中提供不多的计算资源。另外,TS-RAM工具,例如,图4的离线仿真工具400,需要正确码字(CCW)以便产生 EBN索引。容易在离线仿真环境中获得CCW,但是在运行时环境中不易获得。根据本发明的某些实施例,执行用于在ROM中组织存储的陷阱集合简档的方法。 按照优势,即,按照其对LDPC解码器的错误平台特性的影响给陷阱集合简档评分。更具优 势的陷阱集合简档包含关于不满足校验节点(USC)和误满足校验节点(MSC)两者的信息, 而具有较少优势的陷阱集合简档仅包含关于USC的信息。然后,将陷阱集合简档信息组织 到若干链接的分层数据表内,这些表允许使用指针跟随搜索迅速定位并且检索优势最大的 匹配的陷阱集合简档。根据本发明的某些实施例,执行用于在RAM中收集和识别优势陷阱集合的高效的 运行时方法。如果可能,新发现的陷阱集合被存储在RAM中,并且然后根据一个或更多个下 列因素排序或评分自最后匹配一个陷阱集合以来,RAM被搜索的次数;自被添加到RAM内 以来,陷阱集合被匹配的总次数;不满足校验节点的数目;和错误位节点的数目。评分低的 陷阱集合简档被从RAM中删除,并且给新发现的陷阱集合简档留出空间。因此,除了或取代 使用诸如图4的DTS-N汇编器422中所使用的用于事先识别优势陷阱集合的高计算复杂度 的离线方法,本发明的这些实施例执行低计算复杂度的在后方法,其中尽可能多地存储新 发现的陷阱集合,并且通过周期评分和删除去除非优势陷阱集合简档。
本发明的实施例通常是计划内(on-the-fly)的方法,即,它们能够在LDPC解码的时钟周期预算内恢复DCCW,并且因此不会负面影响系统的吞吐率。图5是根据本发明的一个实施例的LDPC解码系统500的方框图。在与图1的现 有技术的HD驱动器100类似的本发明的HD驱动器中,图5的LDPC解码系统500将被实现 为与图1的LDPC解码器112类似的LDPC解码器的一部分。对此而言,图5的输入Leh值类 似于图1的解码器输入L。h值,并且图5的输出‘矢量类似于图1的解码信息字。LDPC解码器502接收Leh值,执行图3的LDPC解码处理300,并且向后处理器504 和TS-RAM更新器506输出矢量 。后处理器504被连接到后处理(PP)方法列表508,后处 理(PP)方法列表508是包含表示后处理方法,例如,TS-ROM列表解码、TS-RAM列表解码等 的一个或更多个可执行程序的存储器。如果后处理器504需要执行特定的PP方法,后处理 器504从PP方法列表508中读取可执行程序,并且运行该程序。后处理器504可以并行或 串行执行任意数目的这些PP方法。后处理器504输出矢量,除了作为LDPC解码系统500 的输出之外,矢量、Ρ还被发送到TS-RAM更新器506。数据表在执行过程中,特定PP方法可能需要访问与PP方法的可执行程序代码相分 离的数据结构。具体地,TS-ROM和TS-RAM列表解码方法分别访问存储在TS-R0M510和 TS-RAM520中的陷阱集合信息的一个或更多个列表。在图5的示例实施例中,TS-R0M510包括4个表:Β表512、Ρ表514、Ε表516和EI 表518。TS-RAM520包括2个表,RAM P表522和RAM索引524。表是被组织在一个或更多 个相等大小的行(记录)和一个或更多个相等大小的列(字段)内的数字数据的二维矩阵。 表的记录被从上到下从0开始顺序编号。这个编号是记录号。P表514和522包含关于USC和其相关EBN的信息。B表512包含用于ROM P表 514的指针信息。EI表518包含关于MSC的信息,并且E表516包含用于EI表518的指针 信息。RAM索引表524包含用于RAM B表522的指针信息。图6是图5的ROM P表514的示例布局。ROM P表514包含陷阱集合简档信息, 艮口,USC和EBN索引。ROM P表514包含若干记录(行),每一个记录用于一个存储的陷阱 集合的一个USC。记录号602是记录在P表514中的从0开始的顺序位置。ROM P表514中的每个记录包括3个字段LAYER 604,USC_INDEX 606和 INDEX 608。某些LDPC解码器被配置为并行地执行被另称为层的一组更新操作。LAYER 604 指示包含在USC中的解码层的数目。USC_INDEX 606包含USC的索引。EBN_INDEX 608包 含与该USC相关联的一个或两个EBN的索引。ROM P表514首先被按照b (即, 中USC的数目)排序,例如,首先是b = 2的所有 陷阱集合,后面是所有b = 3的陷阱集合等。因此,存在用于b = 2值域中的每个陷阱集合 (例如,610、612)的两个记录,最后跟着用于b = 3的陷阱集合的三记录集合(例如,614、 616),用于b = 4的陷阱集合的四记录集合(例如,618、620)等等。在每个b值域中,按照优势,S卩,陷阱集合对错误平台特性的影响对陷阱集合排 序。对错误平台特性具有更大影响的陷阱集合出现在该b值域的开头处,并且具有较少影 响的陷阱集合出现在靠近结尾处。然后按照USC_INDEX 606给特定陷阱集合的记录排序。图7是图5的B表512的示例布局。对于ROM P表514中的每个b值,B表512包含指向该b值在ROM P表514和E表516中的首次出现的指针,以及该b值在E表516中 的记录的数目。因此,B表512中存在用于每个b值的单个记录,其中由记录号702指示b 值。然而,记录号702从0开始,而b值通常从2或更大开始。因此,在本发明的这种示例 实施例中,给记录号702添加一个偏移,以便产生相应的b值。例如,如果仅存储b > 2的 陷阱集合,则给每个记录号添加偏移2,以便得到相应的b值。字段PTABLE_START_OFFSET 704包含特定b值在ROM P表514中首次出现的位置。字段ETABLE_START_OFFSET 706包含特定b值在E表516中首次出现的位置。字段NUM_ ETABLE_ENTRIES 708包含这个特定b值在E表516中的记录数目。图8是图5的E表516的示例布局。E表516包含指向EI表518中的MSC记录的 指针。E表516中的每个记录具有记录号802、EITABLE_START_ADDRESS字段804和EITABLE_ END_ADDRESS 字段 806。EITABLE_START_ADDRESS 字段 804 包含指向相应数据在 EI 表 518 中的首次出现的指针,并且EITABLE_END_ADDRESS字段806包含指向相应数据在EI表518 中的最后出现的指针。图9是图5的EI表518的示例布局。EI表518存储与MSC相关联的EBN的索引。 EI表518中的每个记录具有记录号902,并且包含两个字段BL0CK_C0LUMN字段904和B_ INDEX字段906。BL0CK_C0LUMN字段904指示EBN所在的块列,并且B_INDEX字段906是 EBN的索引。图10是图5的RAM P表522的示例布局。RAM P表522存储不能在ROM P表514 中找到的新识别出的陷阱集合的简档。RAM P表522中的每行(S卩,记录)具有记录号1002, 并且包括两个字段两位TAG字段1004和R_W0RD字段1006。TAG字段1004的4个可能的 值指示记录类型和R_W0RD字段1006内的数据的结构。如果TAG字段1004具有值11,则 该记录是包含关于整个陷阱集合的信息的主记录。如果TAG字段1004具有值10,则该记 录是包含关于陷阱集合简档内的特定USC的信息的副记录。如果TAG字段1004具有值00 或01,则R_W0RD字段1006为空,S卩,这个记录是可用于存储新识别的陷阱集合的简档信息。 陷阱集合简档通常包括单个主记录,后面跟有b个副记录。如果记录是主记录,则1 _101 字段1006包含4个子字段(i)b值子字段1008, (ii) a值子字段1010,其记录陷阱集合EBN的数目,(iii) LAST_HIT_NUM子字段1012,其指 示最后匹配这个陷阱集合的TS-RAM搜索的数目,和(iV)HIT_C0UNTER子字段1014,其记录 自从这个陷阱集合被存储在TS-RAM内以来,这个特定的陷阱集合简档已经与观察到的陷 阱集合匹配了多少次。如果记录是副记录,R_W0RD字段1006包含陷阱集合内的单个USC的层(LAYER字 段1016)和索引(USC_INDEX字段1018),以及与该USC相关联的一个或更多个EBN的索引 (EBN_INDEX 字段 1020)。图11是图5的RAM索引表524的示例布局。RAM索引表524中有用于RAM P表522 中的每个陷阱集合简档的记录。RAM索引表524中的每个记录包括单个字段,RAM_PTABLE_ OFFSET 1102οRAM_PTABLE_OFFSET 1102是指向RAM索引表524中的特定陷阱集合简档的开 始的指针,即,RAM_PTABLE_OFFSET 1102包含陷阱集合简档主记录的图10的记录号1002。 RAM索引表524中的记录被按照优势排序,从而RAM索引表524中最后的记录指向RAM P表 522中最不具优势的记录。
图12是由图5的LDPC解码系统500使用的示例处理1200的流程图。处理在步 骤1202处开始,并且进入步骤1204,由图5的LDPC解码器对Leh值进行LDPC解码。如果 步骤1204的LDPC解码产生DCCW,则处理1200在步骤1218处终止。否则,处理进入步骤 1206的TS-ROM列表解码(由图5的后处理器504执行)。如果步骤1206产生DCCW,则处理1200在步骤1218处终止。否则,处理进入步骤 1208的TS-RAM列表解码(由图5的后处理器504执行)。如果步骤1208产生DCCW,则处 理1200在步骤1218处终止。否则,处理进入以类似方式操作的一个或更多个附加的后处 理方法1210、1212.....1214 (由图5的后处理器504执行)。如果TS-RAM列表解码1208或附加的后处 理方法1210、1212. . .、1214产生DCCW, 则处理进入步骤1216,其中可能以TS-RAM更新器508更新图5的TS-RAM520。然后,处理 在步骤1218处终止。图12显示了后处理方法1207-1214的一种可能的顺序。可以采用后处理方法的 几乎任意顺序,虽然某些顺序比其它顺序更实用。例如,希望将TS-ROM列表解码安排在 TS-RAM列表解码之前,以便确保已经存储在ROM中的陷阱集合不会在RAM中重复。TS-ROM列表解码图13是由图5的后处理器504执行的图12的示例TS-ROM列表解码处理1206的 流程图。处理在步骤1302处开始,并且进入步骤1304,其中处理1206确定从图12的LDPC 解码器1204接收的矢量 中的观察到的USC的数目b。bsCTred是否大于0并且小于可由处理 1206有效地处理的USC的最大数目bmax。如果b。
= 0,则矢量jf中没有USC(即,f是近 码字,误校正),并且因此,不存在要匹配的陷阱集合。如果步骤1304的估计为假,则处理 1206终止。否则,处理继续到步骤1306。在步骤1306,存储解码器的当前状态,并且将其标记为状态1。然后处理继续到步 骤1308,其中对观察到的USC排序,首先按照解码层排序,然后按照索引排序。接着,在步骤 1310,从图5的B表512中取出并且存储下面4个值(1)对于 b = bobserved,图 7 的 PTABLE_START_OFFSET 字段 704 ;(2)对于 b = bobserved+l,图 7 的 PTABLE_START_OFFSET 字段 704 ;(3)对于 b = bobserved,图 7 的 ETABLE_START_OFFSET 字段 706 ;禾口(4)对于 b = bobserved,图 7 的 NUM_ETABLE_ENTRIES 字段 708。第一个值指示处理1206从哪里开始其对图5的P表514中的匹配陷阱集合信息 (即,USC和EBN索引)的搜索,并且第二个值指示处理1206何时结束其搜索。类似地,第 三个值和第四个值指示处理1206从哪里开始和结束其对扩展信息(即,MSC索引)的搜索。因此,例如,如果b。bsCTved = 5,则处理1206取回对于b = 5和b = 6的图7的 PTABLE_START_OFFSET 字段 704,以及对于 b = 5 的图 7 的 ETABLE_START_OFFSET 字段 706 禾口图 7 的 NUM_ETABLE_ENTRIES 字段 708。接着,在步骤1312,处理1206选择图5的P表514,并且进入由b = bobserved的 PTABLE_START_OFFSET的存储值所指示的地址。接着,在步骤1314,在TS-ROM中搜索与观 察到的USC匹配的陷阱集合。图14是图13的示例TS-ROM搜索处理1314的流程图。处理1314在步骤1402开 始,并且在步骤1404搜索图5的P表514中的作为观察到的USC的同构匹配的下一个记录。观察到的use的特定集合的同构匹配是陷阱集合,其中USC的数目和这些USC之间的距离 与观察到的USC相同。因此,如果观察到的USC是[1,3,10],贝丨J [1,3,10]是一种匹配,并 且[2,4,11]是一种同构匹配,同样还有[3,5,12],[4,6,13]等等。如果未发现匹配,则处 理1314以无匹配状态1406终止。相反,如果在步骤1404发现匹配,则在步骤1408,存储匹配的P表记录的图6的 EBN_INDEX字段608的值。EBN_INDEX字段包含与这个匹配的陷阱集合相关联的一个或可 能两个错误位节点的索引。接着,处理1314试图定位任何扩展信息,S卩,与这个匹配的陷阱集合中的误满足校验节点(MSC)相关联的EBN的索引。扩展信息保持在EI表518中。然而,不是为存储在 P表514内的所有陷阱集合保持扩展信息,而是仅为每个b值域中的陷阱集合的一个子集保 持。该子集与特定b值域中更有优势的陷阱集合相对应,S卩,对错误平台特性具有更显著影 响的那些陷阱集合。如上所述,在P表514内,特定b值域内的陷阱集合按优势排序;因此, 仅为b值域内的前χ个记录保持扩展信息。以B表512中的字段ETABLE_START_0FFSET706 和NUM_ETABLE_ENTR1ES 708指示EI表518中每个b值域的开始和结束。处理1314在搜索ROM P表514时保持陷阱集合的内部计数。因此,例如,如果处 理1314正在搜索图6的P表514中的b = 2的陷阱集合,处理1314将记录0和1识别为 陷阱集合0 (例如,图6的陷阱集合610),将记录2和3识别为陷阱集合1 (例如,图6的陷 阱集合612)并且依此类推。这个陷阱集合号被称为TSNUM。在步骤1410,对TSNUM和在图13的步骤1310存储的NUM_ETABLE_ENTRIES字段的 值进行比较。如果TSNUM大于NUM_ETABLE_ENTRIES的值,则没有可获得的扩展信息,并且 处理1314以没有扩展信息1412的匹配状态终止。相反,如果在步骤1410发现TSNUM小于或等于NUM_ETABLE_ENTRIES的存储值,贝Ij 存在这个匹配的陷阱集合的扩展信息。在步骤1414,将TSNUM加到ETABLE_START_OFFSET 的存储值,以便产生变量ETABLE_ENTRY_ADDRESS。接着,在步骤1416,处理1314选择图5的E表516,进入具有等于变量ETABLE_ ENTRY_ADDRESS的值的地址的记录,并且存储图8的EITABLE_START_ADDRESS字段804和图 8 的 EITABLE_END_ADDRESS 字段 806 的值。接着,在步骤1418,处理1314选择图5的EI表518,并且存储在所存储的EITABLE_ START_ADDRESS 和 EITABLE_END_ADDRESS 的值之间的每个记录的图 9 的 BL0CK_C0LUMN 字 段904和图9的B_INDEX字段906的值。最后,处理1314以具有扩展信息1420的匹配状 态退出。返回图13,如果步骤1314以无匹配状态终止,则处理1206在步骤1316终止。如果步骤1314以无扩展信息匹配状态终止,则处理1206拥有USC索引以及与这 个陷阱集合相关联的某些EBN索引,但是没有扩展信息(即,与MSC相关联的EBN的索引)。 在这种情况下,步骤1318翻转这些EBN索引处的位节点,并且在步骤1320执行迭代LDPC 解码。除了跳过解码器初始化步骤304和校验子校验步骤306之外,步骤1320的处理与图 3的处理300相同。如果步骤1320收敛到DCCW,则处理1206在步骤1316终止。否则,在 步骤1322,解码器恢复到状态1,并且在步骤1314寻找下一个匹配的陷阱集合。如果步骤1314以具有扩展信息的匹配状态终止,则处理1206拥有与匹配的陷阱集合相关联的所有EBN的索引。在该情况下,不必执行信任传播(例如,图3的步骤310和 312)。相反,在步骤1324,翻转EBN,并且将得到的矢量提交校验子校验1326。如果矢量jf 在步骤1326未通过校验子校验,则处理1206进入步骤1322。相反,如果矢量 在步骤1326 通过了校验子校验(即,矢量是有效的码字),则在步骤1328,对矢量jf执行CRC校验,以便 确定它实际上是否是正确的码字。如果矢量 通过了 CRC校验1328 (即,矢量jf是DCCW)JlJ 处理1206在步骤1316终止。如果矢量£未通过CRC校验1328,则处理1206进入步骤1322。 TS-RAM列表解码由图5的后处理器504使用的另一种PP方法是图12的TS-RAM列表解码1208,即, 使用存储在易失存储器诸如随机访问存储器内的陷阱集合信息对陷阱集合解码。TS-RAM列 表解码类似于TS-ROM列表解码,S卩,图5的RAM P表522存储所选择的陷阱集合的USC和 EBN信息。然而,与ROM P表514不同,在运行时过程中由图5的TS-RAM更新器506改变 RAM P表522。因此,仅存储最重要的信息,例如,USC和EBN索引。不在TS-RAM中保持扩 展信息(例如,图5的EI表518)。不以任意方式对RAM P表522中简档排序。相反,一个单独的图16的RAM索引表 524保持按优势排序的存储在RAM P表522内的陷阱集合简档的地址列表。图15是图12的示例TS-RAM列表解码处理1208的流程图。处理在步骤1502开 始,并且进入步骤1504,步骤1504的目的和操作与图13的步骤1304相同。如果步骤1504 估计为假,处理1208在步骤1506终止;否则,处理继续到步骤1508,其中记录当前解码器 状态,并且将其标记为状态1。然后处理继续到步骤1510。在步骤1510,处理1208进入图5的RAM P表522中的最具优势的陷阱集合简档。 具体地,由于RAM索引表524按照优势给RAMP表522中的简档评分,处理1208进入RAM索 引表524中的第一个记录,并且检索图11的RAM_PTABLE_OFFSET字段1102的值。然后,处 理1208将RAM P表522中的指针移动到存储的偏移值。在步骤1512,处理1208递增全局变量RAM_SEARCH_COUNT,全局变量RAM_SEARCH_ COUNT跟踪执行的TS-RAM搜索的总数,S卩,已经执行处理1208的总次数。另外,在步骤 1512,处理1208以由RAM索引表524指定的顺序,S卩,以下降的优势的顺序在RAMP表522 内的简档中校验观察到的USC的同构匹配。如果未发现匹配,则处理继续到步骤1514。相反,如果在步骤1512发现了匹配,则步骤1516,匹配的简档的图10的LAST_ HIT_NUM字段1012被设置为全局变量RAM_SEARCH_COUNT的值,并且图10的HIT_C0UNTER 字段1014增加1。然后,在步骤1518,存储图10的EBN_INDEX字段1020的值。步骤1520 翻转位于EBN_INDEX值处的位节点,并且在步骤1522,执行LDPC解码。步骤1522与图13 的步骤1320相同。如果解码处理1522收敛到DCCW,则处理继续到步骤1514 ;否则,在步骤 1524,解码器被重置为状态1,并且然后处理继续到步骤1512,其中在P表522中寻找另一 个同构匹配。在步骤1514,处理1208更新图11的RAM索引表524。具体地,步骤1514按照RAM P表522中的字段,例如,LAST_HIT_NUM1012、HIT_C0UNTER字段1014、USC节点数目字段 1008和EBN数目字段1010的任意组合对RAM P表522中的所有TS-RAM简档排序。然后所 有有序简档的地址,即,所有主记录的记录号1002被存储为图11的RAM索引表524中的记 录。简档地址被以在步骤1514中排序的相同顺序存储在RAM索引表524中(例如,从最具优势到最不具优势)。一旦完成了步骤1514,处理在步骤1506终止。TS-RAM 更新器如在对图12的处理1200的讨论中解释的,如果除了TS-ROM列表解码1206之外的 任意后处理方法获得了 DCCW,则可能意味着发现了新的陷阱集合。如果是这样,步骤1216 可以尝试将新的陷阱集合添加到图5的RAM P表522。在一个实施例中,步骤1216是用于保留TS-RAM520中的优势陷阱集合的低复杂 度处理。具体地,在这个实施例中,步骤1216不执行穷尽性计算,以便事先确定优势陷阱 集合,诸如由图4的DTS-N汇编器422执行的计算,而是相反(i)按照一个或更多个因素, 例如,自从陷阱集合被最后匹配以来,TS-RAM已被搜索了多少次、陷阱集合已被匹配的总次 数、USC数目、EBN数目等的任意组合给TS-RAM陷阱集合评分;并且然后(ii)清除评分最 低的陷阱集合,以便给新发现的陷阱集合留出空间。使用这些因素给TS-RAM520中的陷阱 集合评分通常比由离线仿真工具(例如,图4的汇编器422)执行的分析的复杂度低得多。图16是图12的示例TS-RAM更新处理1216的流程图。处理在步骤1602开始,并 且进入步骤1604,其中确定是否由图12的TS-RAM列表解码处理1208产生了 DCCW。如果 为是,则不需要向TS-RAM中添加陷阱集合简档,并且处理1216在步骤1608终止。相反,如果步骤1604估计为否/假,则意味着不同于TS-ROM或TS-RAM列表解码 的某个后处理方法获得了 DCCW,因此已经发现了新的陷阱集合,并且应当将其附加到RAM。 在步骤1610,产生陷阱集合简档。陷阱集合简档包括陷阱集合USB的索引和与这些USB相 关联的EBN的索引。已经由图5的LDPC解码器502产生了 USB索引。为了产生EBN索引, 步骤1610对由后处理器504产生的DCCW 由LDPC解码器502产生的矢量 进行比较。在步骤1612,确定是否存在足够的空间以便附加新的陷阱集合简档。如果是这样, 则在步骤1614,新的陷阱集合简档被附加到RAMP表522,并且处理1216进入步骤1616。然而,如果在步骤1612,RAM P表522中没有足够的空间以便附加新的陷阱集合简 档,则在步骤1618,清除评分最低的符合清除条件的陷阱集合简档。在这个例子中,按照自 从该简档被最后匹配以来RAM被搜索的次数,即,全局变量RAM_SEARCH_COUNT的值减去简 档的LAST_HIT_NUM字段的值确定简档对清除条件的符合性。如果插入搜索的数目大于指 定阈值,则简档符合清除条件。假设所有简档首先按照对清除条件的符合性评分,所有符合 清除条件的记录在图11的RAM索引表524的结尾处。因此,在步骤1618,选择RAM索引表524中的最后记录,并且检索RAM_PTABLE_ OFFSET字段1102的值。如果RAM P表522内的位于存储的偏移值(由检索到的RAM_PTABLE_ OFFSET值指示)处的简档符合清除条件,则删除RAM P表522中的位于存储的偏移值处的 主记录和相关联的副记录。在步骤1620,更新RAM索引表MSB,并且控制循环回到步骤1612, 其中确定RAM P表522内是否存在足够的空间以便附加新的陷阱集合简档。步骤1620的 处理与图15的步骤1514的处理相同。相反,如果评分最低的简档不符合清除条件,则处理继续到步骤1616。在步骤 1616,更新RAM索引表523,并且处理在步骤1608终止。步骤1616的处理与图15的步骤 1514的处理相同。虽然以实施LDPC编码和解码的硬盘驱动器的上下文描述了本发明,但本发明不限于此。一般地,本发明可被实现在涉及LPDC编码和解码的任意适合的通信路径中。另外,虽然上面使用的示例信任传播算法是偏移量最小和算法(0MS),但本发明不限于此,而可以用于任意信任传播变体,例如,和积算法(SPA)或 Bah 1 -Cocke-Je 1 inek-Raviν(BCJR)算法。另外,虽然上面使用的信任传播例子使用特定的解码调度(泛滥调度),其中在 单个校验节点更新步骤中更新所有校验节点,之后在单个位节点更新步骤中更新所有位节 点,但本发明不限于此,而可以用于任意解码调度,例如,行串行调度、列串行调度和行-列 串行调度。另外,虽然上面使用的示例LDPC解码器是不分层的解码器,但本发明不限于此, 而可以使用分层解码器和不分层解码器。另外,虽然上面给出的示例TS-RAM实现假设在HD驱动器的读通道内的RAM中存 储陷阱集合简档,但本发明不限于此。RAM P表(例如,图5的522)还可以存储在HD驱动 器的盘片上,或存储在诸如闪存的单独存储器内。另外,虽然以只读存储器的上下文描述了上面给出的示例TS-ROM实现,但本发明 不限于此。一般地,说明书和权利要求书使用的术语“ROM”应当被解释为指存储静态TS简 档数据的任意数据存储设备,不论该设备内的数据是否能够被修改。另外,虽然以LDPC码的上下文描述了本发明的实施例,但本发明不限于此。可以 为可由图定义的任意码实现本发明的实施例,例如,tornado码、结构化IRA码,因为它们都 是具有陷阱集合问题的以图定义的码。虽然以接收对数似然比描述了本发明,但本发明不限于此。可设想处理诸如似然 比的其它软值或硬判决值的本发明的实施例。本发明可被表达为方法和用于实现这些方法的装置的形式。本发明可被表达为包 含在有形介质内的程序代码的形式,所述有形介质诸如是磁记录介质、光学记录介质、固态 存储器、软盘、CD-ROM、硬盘驱动器或任意其它机器可读的存储介质,其中当程序代码被装 入诸如计算机的机器并且由其执行时,该机器成为实现本发明的装置。本发明还可被表达 为,例如,存储在存储介质内的、被装入和/或由机器执行的、或在某种传输介质或载体上 传输的程序代码的形式,诸如在电线或电缆上传输、通过光纤传输或通过电磁辐射传输,其 中当程序代码被装入诸如计算机的机器并且由其执行时,该机器成为实现本发明的装置。 当在通用处理器上实现时,该程序代码段与处理器相结合,以便提供类似于专用逻辑电路 操作的独特设备。除非明确说明,每个数值和范围应被解释为是近似的,就如同在该值或范围前面 加有单词“大约”或“近似” 一样。还应当理解,本领域的技术人员可以对为了解释本发明的属性而描述和示出的部 件的细节、材料和布置进行各种改变,而不脱离由所附的权利要求书表述的本发明的范围。权利要求书中使用的附图号和/或附图参考标记旨在标识所要求的主题内容的 一个或更多个可能的实施例,以便于解释权利要求。这种使用不能被认为是将这些权利要 求的范围必然地限制为相应附图中示出的实施例。应当理解,此处提出的示例方法的步骤不必然需要以描述的顺序执行,并且这些 方法的步骤的顺序应当被理解为仅是例子。同样,这些方法中可以包括附加步骤,并且可以在根据本发明的各种实施例的方法中忽略或组合某些步骤。虽然以相应的标记以特定顺序叙述,如果有的话,下面的方法权利要求中的元素, 除非权利要求表述暗示着实现某些或全部这些元素的特定顺序,这些元素不必然旨在局限 于以该特定顺序实现。此处对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性可被包括在本发明的至少一个实施例中。在说明书各处出现的短语“在一个实 施例中”不必然全部指相同的实施例,不同的或可替换的实施例也不必然互相排除在其它 实施例之外。这同样适用于术语“实现”。
权利要求
一种对使用基于图的码编码的编码数据进行解码的方法,该方法包括以下步骤(a)对所述编码数据解码以产生候选解码码字,和(b)如果所述候选解码码字不是解码正确的码字,执行陷阱集合TS-ROM列表解码方法,以便试图产生解码正确的码字,其中所述候选解码码字具有至少一个不满足校验节点,其中不满足校验节点是奇偶校验失败的校验节点;所述TS-ROM列表解码方法访问存储在ROM存储器内的一个或更多个TS简档;第一个存储的TS简档包括至少一个不满足校验USC节点的存储信息以及至少一个误满足校验MSC节点的存储信息,其中MSC节点是与错误位节点EBN相关联、并且满足奇偶校验的校验节点;以及第二个存储的TS简档与具有一个或更多个USC节点和一个或更多个MSC节点的陷阱集合相关联,其中第二个存储的TS简档包括一个或更多个USC节点的存储信息,但是不包含关于一个或更多个MSC节点的信息。
2.如权利要求1所述的方法,其中第一个存储的TS简档与比第二个存储的TS简档的 陷阱集合更具优势的陷阱集合相关联。
3.如权利要求1所述的方法,其中所述TS-ROM列表解码方法包括以下步骤(bl)识别与所述候选解码码字中的至少一个USC节点相关联的一个或更多个EBN ; (b2)如果(i)所述候选解码码字具有一个或更多个MSC节点,并且(ii)所述ROM存储 器包含关于所述一个或更多个MSC节点的信息,则识别与所述一个或更多个MSC相关联的 一个或更多个EBN ;(b3)修改识别出的EBN;和 (b4)执行进一步的处理,其中如果步骤(b2)识别出一个或更多个EBN,则所述进一步处理包括对修改后的候选解码 码字执行校验子校验;和如果步骤(b2)未识别出一个或更多个EBN,则所述进一步处理包括解码修改后的编码 数据。
4.如权利要求1所述的方法,其中对于TS简档中的每个不满足校验节点,所述TS简档包括 所述不满足校验节点所在的解码层(例如,LAYER); 所述不满足校验节点USC在所述解码层内的索引(例如,USC_INDEX);和 与所述不满足校验节点相关联的一个或更多个错误位节点EBN的一个或更多个索引 (例如,raN_INDEX);禾口对于TS简档中的每个误满足校验节点,所述TS简档包括与所述误满足校验节点相关联的一个或更多个错误位节点的位置信息(例如,BLOCK, COLUMN, B_INDEX)。
5.如权利要求4所述的方法,其中 所述ROM存储器包括多个存储的TS简档;用于多个存储的TS简档的解码层、USC索引和EBN索引存储在第一个表内(例如,P表 514);和与误满足校验节点相关联的错误位节点的位置信息存储在第二个表内(例如,EI表 518)。
6.如权利要求5所述的方法,其中所述存储的TS简档被基于所述存储的TS内的不满足校验节点的数目在第一个表内分组;具有相同不满足校验节点数目的每组存储的TS简档中的存储的TS简档被按照TS简 档的优势排序,其中TS简档的优势取决于相关联的陷阱集合对步骤(a)的解码的错误平台 特性的影响。
7.如权利要求6所述的方法,其中对于具有多个不满足校验节点的每个TS简档 按解码层在所述TS简档中给所述不满足校验节点分组;和按照USC索引排列具有相同解码层的不满足校验节点组内的不满足校验节点。
8.如权利要求5所述的方法,其中所述ROM存储器还包括第三个表(例如,E表516) 和第四个表(例如,B表512),其中第三个表标识匹配的TS简档的与误满足校验节点相关联的错误位节点的位置信息在 第二个表中的地址(例如,EITABLE_START_ADDRESS,EITABLE_END_ADDRESS);对于第一个表中具有相同数目的不满足校验节点的每组存储的TS简档,第四个表标识(i)该组存储的TS简档在第一个表中的开始地址(例如,PTABLE_START_OFFSET); ( )该组中具有关于误满足校验节点的位置信息的TS简档的数目(例如,NUM_ ETABLE_ENTRIES);禾口(iii)该组存储的TS简档在第三个表中的开始地址(例如,ETABLE_START_OFFSET)。
9.如权利要求1所述的方法,其中所述基于图的码字是低密度奇偶校验LDPC码。
10.一种用于对使用基于图的码编码的编码数据进行解码的装置,该装置包括(a)解码器,被配置为对编码数据解码以产生候选解码码字,和(b)后处理器,被配置为如果候选解码码字不是解码正确的码字,则执行陷阱集合 TS-ROM列表解码方法,以便试图产生解码正确的码字,其中所述候选解码码字具有至少一个不满足校验节点,其中不满足校验节点是奇偶校验失 败的校验节点;所述TS-ROM列表解码方法访问存储在ROM存储器内的一个或更多个TS简档; 第一个存储的TS简档包括至少一个不满足校验USC节点的存储信息,以及用于至少一 个误满足校验MSC节点的存储信息,其中MSC节点是与错误位节点EBN相关联、并且满足奇 偶校验的校验节点;和第二个存储的TS简档与具有一个或更多个USC节点和一个或更多个MSC节点的陷阱 集合相关联,其中第二个存储的TS简档包括一个或更多个USC节点的存储信息,但是不包 含关于一个或更多个MSC节点的信息。
11.如权利要求10所述的装置,其中第一个存储的TS简档与比第二个存储的TS简档 的陷阱集合更具优势的陷阱集合相关联。
12.如权利要求10所述的装置,其中对于所述TS-ROM列表解码方法,所述后处理器 (bl)识别与所述候选解码码字中的至少一个USC节点相关联的一个或更多个EBN ;(b2)如果(i)所述候选解码码字具有一个或更多个MSC节点,并且(ii)所述ROM存储 器包含关于所述一个或更多个MSC节点的信息,则识别与所述一个或更多个MSC相关联的 一个或更多个EBN ;(b3)修改识别出的EBN;和 (b4)执行进一步的处理,其中如果所述后处理器识别出与所述一个或更多个MSC相关联的一个或更多个EBN,则所 述后处理器对修改后的候选解码码字执行校验子校验;和如果所述后处理器未识别出与所述一个或更多个MSC相关联的一个或更多个EBN,则 所述后处理器解码修改后的编码数据。
13.如权利要求10所述的装置,其中对于TS简档中的每个不满足校验节点,所述TS简档包括 所述不满足校验节点所在的解码层(例如,LAYER); 所述不满足校验节点USC在所述解码层内的索引(例如,USC_INDEX);和 与所述不满足校验节点相关联的一个或更多个错误位节点EBN的一个或更多个索引 (例如,raN_INDEX);禾口对于TS简档中的每个误满足校验节点,所述TS简档包括与所述误满足校验节点相关联的一个或更多个错误位节点的位置信息(例如,BLOCK, COLUMN, B_INDEX)。
14.如权利要求13所述的装置,其中 所述ROM存储器包括多个存储的TS简档;用于多个存储的TS简档的解码层、USC索引和EBN索引存储在第一个表内(例如,P表 514);和与误满足校验节点相关联的错误位节点的位置信息存储在第二个表内(例如,EI表 518)。
15.如权利要求14所述的装置,其中所述存储的TS简档被基于所述存储的TS内的不满足校验节点的数目在第一个表内分组;具有相同不满足校验节点数目的每组存储的TS简档中的存储的TS简档被按照TS简 档的优势排序,其中TS简档的优势取决于相关联的陷阱集合对解码器的错误平台特性的影响。
16.如权利要求15所述的装置,其中对于具有多个不满足校验节点的每个TS简档 按解码层在所述TS简档中给所述不满足校验节点分组;和按照USC索引布置具有相同解码层的不满足校验节点组内的不满足校验节点。
17.如权利要求14所述的装置,其中所述ROM存储器还包括第三个表(例如,E表516) 和第四个表(例如,B表512),其中第三个表标识匹配的TS简档的与误满足校验节点相关联的错误位节点的位置信息在 第二个表中的地址(例如,EITABLE_START_ADDRESS,EITABLE_END_ADDRESS);对于第一个表中具有相同数目的不满足校验节点的每组存储的TS简档,第四个表标识(i)该组存储的TS简档在第一个表中的开始地址(例如,PTABLE_START_OFFSET); ( )该组中具有关于误满足校验节点的位置信息的TS简档的数目(例如,NUM_ ETABLE_ENTRIES);禾口(iii)该组存储的TS简档在第三个表中的开始地址(例如,ETABLE_START_OFFSET)。
18.如权利要求10所述的装置,其中所述基于图的码字是低密度奇偶校验LDPC码。
全文摘要
本发明的某些实施例是用于在ROM中组织陷阱集合简档,以及用于在(LDPC)列表解码过程中搜索这些简档的方法。按照优势,即,按照其对解码器的错误平台特性的影响给简档评分。更具优势的陷阱集合简档包含关于不满足校验节点(USC)和误满足校验节点(MSC)两者的信息,而优势较少的陷阱集合简档仅包含关于USC的信息。陷阱集合简档被组织到若干链接的分层数据表内,这些数据表允许使用指针跟随搜索迅速定位和检索最具优势的匹配的陷阱集合简档。
文档编号H03M13/00GK101803206SQ200880106457
公开日2010年8月11日 申请日期2008年12月12日 优先权日2008年8月15日
发明者K·关纳姆 申请人:Lsi公司