用于LDPC码的解码的提前收敛的制作方法

文档序号:32052652发布日期:2022-11-04 18:50阅读:55来源:国知局
用于LDPC码的解码的提前收敛的制作方法
用于ldpc码的解码的提前收敛


背景技术:

1.低密度奇偶校验(ldpc)码是一种类型的纠错码。在一些应用中,ldpc码用来纠正由(例如,有噪声的)通信信道或由(例如,退化的)存储介质引入的错误。改善ldpc系统性能的新技术将是合乎期望的。例如,减少处理时间将是合乎期望的,因为纠错数据被更快地输出和/或消耗较少的处理资源或功率。
附图说明
2.在以下详细描述和附图中公开了本发明的各种实施例。
3.图1是图示出具有提前收敛(early convergence)的低密度奇偶校验(ldpc)解码过程的实施例的流程图。
4.图2a是图示出在通信应用中使用的低密度奇偶校验(ldpc)编码器和解码器的实施例的图。
5.图2b是图示出在存储应用中使用的低密度奇偶校验(ldpc)编码器和解码器的实施例的图。
6.图3a是图示出最小和低密度奇偶校验(ldpc)解码器的示例的图。
7.图3b是图示出与变量节点到校验节点阶段相关联的校验节点到变量节点消息更新的示例的图。
8.图3c是图示出与校验节点到变量节点阶段相关联的变量节点到校验节点消息更新的示例的图。
9.图4是图示出没有提前收敛的分层最小和解码过程的示例的图。
10.图5是图示出分层最小和低密度奇偶校验(ldpc)解码器的实施例的图,该解码器监视状态以确定何时已出现提前收敛校验点。
11.图6a是图示出具有提前收敛的低密度奇偶校验(ldpc)解码过程的实施例的流程图,该解码过程监视校验节点状态以确定何时已出现提前收敛校验点。
12.图6b是图示出具有提前收敛的低密度奇偶校验(ldpc)解码过程的实施例的流程图,该解码过程监视循环状态(circulant state)以确定何时已出现提前收敛校验点。
13.图7a是图示出在第一层期间处理的矩阵中的qc-ldpc循环的实施例的图。
14.图7b是图示出在第二层期间处理的矩阵中的qc-ldpc循环的实施例的图。
15.图7c是图示出在第三层期间处理的矩阵中的qc-ldpc循环的实施例的图。
16.图8是图示出具有使用分式迭代计数的提前收敛的低密度奇偶校验(ldpc)解码过程的实施例的流程图。
17.图9是图示出置换矩阵的实施例的图。
18.图10是图示出用以确定最小分式迭代计数的过程的实施例的流程图。
具体实施方式
19.可以以许多方式来实现本发明,包括作为过程;装置;系统;合成物质;包含在计算
机可读存储介质上的计算机程序产品;和/或处理器,诸如被配置成执行存储在耦合到处理器的存储器上的和/或由所述存储器提供的指令的处理器。在本说明书中,这些实现方式或本发明可以采取的任何其他形式可被称为技术。一般地,在本发明的范围内可以更改所公开过程的步骤次序。除非另有声明,否则可以将描述为被配置成执行任务的诸如处理器或存储器的部件实现为暂时被配置成在给定时间执行任务的通用部件或被制造以执行任务的特定部件。如本文中所使用的,术语“处理器”是指被配置成处理数据(诸如计算机程序指令)的一个或多个设备、电路和/或处理核心。
20.下面连同说明本发明的原理的附图来提供对本发明的一个或多个实施例的详细描述。结合这样的实施例对本发明进行描述,但是本发明并不被限制到任何实施例。本发明的范围仅由权利要求限制,并且本发明涵盖许多替换方案、修改和等同物。在以下描述中阐述了许多特定细节,以便提供对本发明的透彻理解。出于示例的目的,提供这些细节,并且在没有这些特定细节中的一些或全部的情况下,可以根据权利要求来实践本发明。为了清楚的目的,在与本发明相关的技术领域中已知的技术材料未被详细地描述,以免不必要地使本发明含糊难懂。
21.本文中描述了检查提前收敛的低密度奇偶校验(ldpc)解码技术的各种实施例。如下面将更详细地描述的,(例如,分层最小和)ldpc解码器在执行完整的解码迭代之前(例如,在一些分式的、预先计算的迭代计数处)执行提前终止检查。当对具有相对较少错误的数据进行解码时,执行本文中所描述技术的ldpc解码器可以比其他类型的ldpc解码器更早地输出纠错数据,这减少了处理时间和/或节省了功率。下图描述了具有提前收敛的一个ldpc解码实施例。
22.图1是图示出具有提前收敛的低密度奇偶校验(ldpc)解码过程的实施例的流程图。在各种实施例中,可以以硬件实现方式(例如,专用集成电路(asic)或现场可编程门阵列(fpga))或软件实现方式(例如,包含在非暂时性计算机可读介质中的固件或计算机程序产品和计算机指令)来执行该过程。
23.在100处,接收具有一个或多个错误的低密度奇偶校验(ldpc)编码数据。例如,编码数据可能已从通信信道接收或从储存器读回(例如,在退化的存储介质上存储达许多年之后),并且错误被引入到ldpc编码数据中。
24.在102处,接收与提前收敛校验点相关联的信息。在一些实施例中,在步骤102处接收的信息是指示何时已到达或通过提前收敛校验点的信号(例如,基于监视状态的集合监视状态信号)。在一些实施例中,在步骤102处接收的信息是部分和/或分式迭代,其中分式迭代严格大于0并且严格小于1,并且分式迭代对应于提前收敛校验点。在这样的实施例中的ldpc解码器跟踪(分式)迭代计数,并且当达到在步骤102处接收的分式计数时暂停解码。
25.在104处,使用与提前收敛校验点相关联的信息来对ldpc编码数据执行(例如,分层最小和)ldpc解码,直至提前收敛校验点,并且生成解码码字,其中提前收敛校验点先于ldpc解码的第一完全迭代。
26.在106处,确定ldpc解码是否成功。例如,在步骤100处生成的解码码字可能仍包括错误,或者还可能不包括错误,并且不声明解码成功(在一个示例中),除非校验子向量(syndrome vector)为全零或以其它方式指示已从解码数据中成功地去除了所有错误。
27.如果在106处确定解码成功,则在110处输出解码码字(例如,在104处生成的)。例
如,如果仅存在几个错误,则完全迭代的一小部分就可能足以去除所有错误。在其他类型的ldpc解码器的情况下,解码器在检查解码是否成功之前完成至少一次完全迭代。在提前收敛检查的情况下,可以更快地输出解码数据,并且在可能的时候可以节省功率和处理资源(例如,不需要完整或完全解码迭代的仅几个错误)。
28.如果在106处确定解码未成功,则在108处继续(例如,分层最小和)ldpc解码(例如,直到成功或达到超时)。如果恢复的ldpc解码在步骤108处成功,则输出解码码字。在一些情况下,达到超时并且恢复的ldpc解码停止;然后声明错误或尝试不同类型的解码(例如,较强但较慢)。
29.在描述图1中所示出的提前解码终止过程的更详细示例之前,图示其中可以使用这样的技术的一些示例应用可能是有益的。下图图示了一些示例应用。
30.图2a是图示出在通信应用中使用的低密度奇偶校验(ldpc)编码器和解码器的实施例的图。在这个示例中,ldpc编码器(200a)输入输入数据以在传输之前进行编码。从ldpc编码器(200a)输出要传输的ldpc编码数据,并将其传递到发射器(202),所述发射器(202)针对特定通信信道酌情地调制和/或格式化ldpc编码数据,并且通过诸如有线或无线信道和/或网络之类的通信信道(204)发送所传输的数据。
31.耦合到通信信道(204)的接收器(206)输入接收的数据,并且从有错误的接收数据中解调和/或提取有错误的ldpc编码数据。ldpc解码器(208a)然后对接收到的压缩数据进行解码,并输出未压缩的数据。在一些实施例中,ldpc解码器(208a)执行提前解码终止过程(例如,图1),该过程允许ldpc解码比一些其他ldpc解码器结束得更早,从而减少延迟。
32.通信信道(204)引入噪声和/或错误,使得通过接收器(206)接收的数据包含噪声。在传输之前用ldpc码对数据进行纠错编码可以减少接收器处的错误和/或不可破译消息的数目。
33.图2b是图示出在存储应用中使用的低密度奇偶校验(ldpc)编码器和解码器的实施例的图。在这个示例中,将要编码的输入数据传递到ldpc编码器(200b)。ldpc编码器(200b)将要存储和/或写入的ldpc编码数据传递到存储接口(220),所述存储接口(220)继而将数据写入到储存器(222)。
34.为了获得原始数据,存储接口(220)读回存储在储存器(222)上的数据(有错误),并且将ldpc编码数据(有错误)传递到ldpc解码器(208b)。ldpc解码器(208b)对ldpc编码数据进行解码并输出数据(例如,根据需要或在需要情况下的纠错)。在一些实施例中,ldpc解码器(208b)执行提前解码终止过程(例如,图1),该过程允许ldpc解码比一些其他ldpc解码器结束得更早,从而减少延迟。
35.在描述提前解码终止的更详细示例之前,首先更详细地描述ldpc解码可能是有益的。首先,描述最小和ldpc解码的示例。然后,描述分层最小和ldpc解码示例。
36.图3a是图示出最小和低密度奇偶校验(ldpc)解码器的示例的图。低密度奇偶校验(ldpc)码在由ldpc解码器使用的低密度奇偶校验(ldpc)码的奇偶校验矩阵(在本文中也称为矩阵)中具有非常低的1的密度。这使得使用称为tanner图的二部图来表示ldpc码是方便的。tanner图中存在两种类型的节点,即变量节点(302a)和校验节点(304a)。每个变量节点(或校验节点)与奇偶校验矩阵的列(或行)对应。在本文中描述的示例中,
是变量节点的集合,并且是校验节点的集合。矩阵的每一行由索引,并且的每一列由索引。在tanner图中,如果,则变量节点经由边连接到校验节点,并且tanner图上的边的集合由集合e来表示。
37.准循环低密度奇偶校验(qc-ldpc)码是特殊的一类ldpc码,具有结构化的矩阵,其可通过扩展基矩阵来生成。基矩阵中每个1的元素可以通过循环右移b
×
b单位子矩阵来扩展。qc-ldpc码在编码和解码两者的硬件实现方式上具有相比于其他类型的ldpc码的优点。可以使用简单的移位寄存器来高效地实现qc-ldpc码的编码。在qc-ldpc解码器的一些硬件实现方式实施例中,代码的qc结构简化了用于消息传递的布线(wire routing)。
38.在这个示例中,示出了消息传递(mp)ldpc解码器。一般地,(分层)最小和解码控制器(300)控制变量节点(302a)与校验节点(304a)之间的消息传递。定期地,控制器(300)将检查校验子向量(308);如果校验子向量为全零,则已从ldpc编码数据中去除所有错误,并输出解码码字(310)。消息传递是实现ldpc码的近似最优解码的最高效的方式。在消息传递解码中,变量节点(vn)和校验节点(cn)如下来更新规则。为了简洁和符号简要,本文中描述的示例可以仅使用(而不是)来表示变量节点以及(而不是)来表示校验节点。变量节点从信道接收输入消息,通常是对应信道输出的对数似然比(llr),定义如下:其中是码位,并且是对应的接收符号。
39.迭代消息传递解码器在两个阶段之间交替:变量节点到校验节点阶段,在所述阶段期间,变量节点沿着它们的相邻边向校验节点发送消息;以及校验节点到变量节点阶段,在所述阶段期间,校验节点将消息发送到它们的相邻变量节点。在图3b和3c中分别示意性地描绘了消息更新规则(在下面更详细地对其进行描述)。
40.图3b是图示出与变量节点到校验节点阶段相关联的校验节点到变量节点消息更新的示例的图。在这个示例中,每个校验节点(304b)从其所有相邻的变量节点(302b)接收llr信息。对于每个这样的变量节点,使用来自所有其他相邻变量节点的输入来生成更新的校验到变量消息。
41.图3c是图示出与校验节点到变量节点阶段相关联的变量节点到校验节点消息更新的示例的图。在这个示例中,每个变量节点(302c)从其所有相邻的校验节点(304c)接收llr信息。对于每个这样的变量节点,使用来自所有其他相邻校验节点的输入来生成更新的变量到校验消息。
42.在解码过程的初始化步骤中,变量节点将相同的消息转发到其所有相邻的校验节点(),即从对应信道输出导出的。在校验节点到变量节点消息更新阶段中,校验节点使用传入的消息和cn更新规则来计算新的校验节点到变量节点消息并将其转
发到变量节点。变量节点然后根据变量节点更新规则来处理其传入的消息并且将更新的变量节点到校验节点消息转发到每个相邻的校验节点()。在预先指定的迭代次数之后,变量节点将所有传入的 llr 消息求和,以产生对应码位的估计。要注意,所有校验节点到变量节点消息更新可以并行完成,如所有变量节点到校验节点消息更新可以的那样。这使得实现迭代消息传递解码的高效、高速软件和硬件实现方式。
43.和分别是从变量节点发送到校验节点和从校验节点发送到变量节点的消息。()是直接与变量节点连接的校验节点的集合,并且()是直接与校验节点连接的变量节点的集合。然后,在spa解码中从变量节点发送到校验节点的消息由下式给出:并且从校验节点到变量节点的消息被计算为:。
44.是变量节点的后验概率(app)消息:。
45.解码字被定义为app消息的硬判决,即:其中如果,则为1,或者否则为0。如果结果得到的校验子向量(γ)为全零,则声明解码成功,使得:。
46.在解码过程期间,解码字()和校验子向量(γ)两者被初始化为全零,并且在处理每个变量节点时增量地更新。在数学上,这表示为:其中是更新的第i位硬判决,并且表示奇偶校验矩阵的第i行。
47.执行最小和解码的一种流行方式是:使变量节点将从信道接收的信息的对数似然比视为初始输入消息(即),并且采用以下等效的校验节点更新规则:
其中 0 《 α 和 β 《 1 分别是衰减因子和衰减舍入参数,可以对其进行预先固定或动态调整。这些满足以下要求:这确保为1的最小校验节点到变量节点消息不被衰减到零。
48.信道llr输入可以方便地缩放以进行最小和解码,但是对于原始和积解码需要精确信息。下面的记法帮助简化算法程序中的上面的计算。设:是二进制符号表示,其根据下式转换成实际符号值:。
49.设是所有变量节点到校验节点的总符号:。
50.设和分别是到校验节点的最小变量节点消息及其相关联的索引:并且设是到校验节点的第二最小(例如,第二最低)变量节点消息:。
51.设和是到校验节点的衰减最小和第二最小变量节点消息,即:并且因此,利用上面的记法,等式(8)方便地通过下式来重新表达:。
52.如果在第一完整迭代之后产生全零校验子,则声明解码成功。
53.当使用具有b
×
b循环的qc-ldpc码时,每个b位的循环独立地且并行地更新。
54.在迭代消息传递ldpc解码的硬件实现方式中,可以使用分层方法来进一步改善最小和解码的解码效率。分层最小和解码基于校验节点消息的串行(例如,顺序、有序等)更新。分层编码不是将所有消息从变量节点发送到校验节点,然后将所有消息从校验节点发
送到变量节点,而是以(一些)顺序次序越过(go over)校验节点,使得对于每个更新校验节点,所有消息被递送并处理,然后发送到相邻变量节点。对校验节点的这样的调度和/或串行更新使得能够立即传播新更新的消息,这与其中更新的消息只可以在下一迭代传播的泛洪方案不同。换言之,泛洪方法不服从在解码迭代之间停止或暂停或解码,并在那时输出解码码字,而分层解码的调度和/或串行方法确实准许或以其它方式允许这个。
55.与泛洪最小和解码方法相比,分层最小和解码方法将收敛速度大约增加两倍。此外,它提供了速度和存储器之间的良好权衡。这是通过在动态校验节点到变量节点消息上进行迭代来实现的,通过来表示。具体地,设变量节点,并且因此在层上的被定义为:其中上标
(last)
表示最近更新的数据片。要注意,在分层最小和解码中,利用在最后层处更新的变量节点到校验节点消息(除了最后的全都来自当前迭代)来更新当前层中的校验节点到变量节点。相比之下,在泛洪解码更新中,校验节点到变量节点消息利用每个在最后迭代处生成的变量节点到校验节点消息。存储器利用信道消息来初始化,并且不需要专门的存储器来存储,而利用泛洪方法,被存储,但不存储。被如下迭代地进行计算。设是当前层,并且是与变量节点相关联的前一层。前一层被声明或以其它方式被如下定义(例如,数学上)。设是与变量节点直接连接的所有校验节点,则针对,(下标字母)是(下标字母加数字1)的前一层,并且是(下标数字1)的前一层。
56.app消息在层处被计算为:其中(下标下标字母右箭头字母)是新更新的,并且由下式迭代地更新:其中是在前一迭代期间保存的。分层解码可以应用到所有类型的迭代消息传递解码,包括和积算法(spa)和最小和解码。图4中描述了一种没有提前收敛的硬件易处理的(amenable)分层最小和解码过程。
57.图4是图示出没有提前收敛的分层最小和解码过程的示例的图。在这个示例中,过程通过初始化数据(400)开始。在第1-8行(402)中,该过程然后通过分层消息传递的第一迭代并生成解码码字和校验子(γ)。
58.第9行(404)是输出(成功地)解码的码字的第一机会。如第9行中所示,解码过程必
须超出第一迭代。这意味着,在这个较旧且较慢的技术中,输出解码码字的第一机会刚好在第一迭代之后,当:(例如,参见第1行处的for循环),(例如,参见第2行处的for循环),并且(例如,参见第4行处的for循环)时。
59.注意,图4中所示的示例性解码过程将每个校验节点视为层,使得具有单元素。当使用具有b
×
b循环的qc-ldpc码时,循环内的b个校验节点被视为层,每个独立且并行地进行处理。在这个qc-ldpc场景中,图4中所示过程的第1行(406)将改为:换言之,是通过索引迭代的集合,使得使得。
60.返回到第9行(404)处第一迭代结束时的收敛检查,这背后的基本原理基于初始化值(400)。 要注意,解码字和校验子(γ)两者被初始化成全零。因此,如果在迭代开始时针对全零来检查校验子(例如,检查校验子向量是否指示解码成功并且已去除所有错误),则将发生假收敛(假阳性)。相比之下,在解码结束时(例如,在第一完整解码迭代结束时),由解码器更新所有变量位,从而真正反映解码字。因此,在第一迭代之后检查收敛并在校验子为全零时终止解码器是安全的。
61.虽然在第一完整迭代结束时检查校验子(如图4中所示)是确保没有假阳性的安全选择,但是利用分层解码,比那个更早地检查校验子是可能的,同时仍确保不将发生假阳性。例如,要注意,所有实际ldpc奇偶校验矩阵的列权重至少为2(即w≥ 2)。因此,由分层解码器在单个迭代中对每个变量位处理至少2次。在一些情况下(例如,当仅存在几个错误时),由解码器的单次通过就足以去除所有错误,并且那个迭代中的第二次通过(例如,由示例性列权重2所指示的)是不必要的。换句话说,在一些情况下,可能仅花费迭代的一小部分来成功地处理所有变量位。因此,在具有提前收敛的一些实施例中,跟踪未处理的变量位(例如,由变量节点输出的位)的数目,并且计数一达到零就执行校验子检查。下图示出了这个的示例。
62.图5是图示出分层最小和低密度奇偶校验(ldpc)解码器的实施例的图,该解码器监视状态以确定何时已出现提前收敛校验点。为了保持图的可读性,并未示出与技术不相关的一些元素(例如,校验节点)。
63.在非qc-ldpc示例中,存在输出多个变量位的个变量节点(500)。个监视块(502)每个输入对应的变量位,并且确定那个变量位(变量节点)何时已被(例如,充分地)处理,以便如果校验子检查被执行,则不将产生假阳性。例如,如果由监视器(502)输出的状态信号的值为1(作为示例),则那意味着对应的变量节点或变量位已经具有对它执行的至少一些ldpc解码(例如,因此可以信任由那个变量节点或变量位生成的校验子),而0意味着对应的变量位尚未被(例如,充分地)处理。监视块是说明性和/或示例性的以传达概念,并且在一些实施例中不是必要的,因为系统内已经存在可以重用或以其它方式改换意图作为状态信号的信号。
64.由监视块(402)生成的状态信号被输入到and块(504)以生成集合状态信号。当所
有变量位已被处理(例如,由状态信号全为1来指示)时,集合状态信号为1。
65.集合状态信号由分层最小和解码控制器(506)来输入。当集合状态信号从0变到1时,ldpc解码暂停(例如,消息传递暂停),同时控制器(506)检查校验子(508)以查看校验子是否为全零。如果校验子(508)为全零,则控制器(506)输出解码码字(510)作为输出数据。
66.在一些实施例中,使用qc-ldpc码。在这样的实施例中,矩阵是其中并行处理循环内所有位的准循环矩阵。因此,在qc-ldpc实施例中,跟踪未处理循环的数目就足够了。如本文中所示出的,在qc-ldpc示例中,监视块(502)跟踪循环(500)而非变量节点的状态。要注意,存在(多达)个循环(与非qc-ldpc示例中的个变量节点相反),因此相应地调整监视块(502)的数目,以便存在个监视块。
67.下图以流程图来更正式和/或一般地描述了这个。
68.图6a是图示出具有提前收敛的低密度奇偶校验(ldpc)解码过程的实施例的流程图,该解码过程监视校验节点状态以确定何时已出现提前收敛校验点。图6a与图1相关,并且为了方便起见,使用相同或类似的参考数字来指示相关步骤。
69.在100处,接收具有一个或多个错误的ldpc编码数据。
70.在102a处,接收与提前收敛校验点相关联的信息,包括通过接收至少部分地基于与多个变量节点相关联的多个状态的集合状态信号。例如,在图5中,由and块(504)基于来自监视块(502)的状态信号来输出集合状态信号。
71.在104a处,使用与提前收敛校验点相关联的信息来对ldpc编码数据执行解码,直至提前收敛校验点,并生成解码码字,其中提前收敛校验点先于分层最小和ldpc解码的第一完全迭代;并且响应于指示已到达提前收敛校验点的集合状态信号,暂停ldpc解码,其中ldpc解码包括分层最小和ldpc解码。例如,图5中的控制器(506)可以响应于集合状态信号的断言而停止变量节点(500)和校验节点之间的消息传递,以便控制器可以检查校验子(508)。
72.然后,该过程继续到图1中的步骤106,并且如上面所描述那样进行。
73.图6b是图示出具有提前收敛的低密度奇偶校验(ldpc)解码过程的实施例的流程图,该解码过程监视循环状态以确定何时已出现提前收敛校验点。图6b与图1相关,并且为了方便起见,使用相同或类似的参考数字来指示相关步骤。
74.在100b处,接收具有一个或多个错误的ldpc编码数据,其中ldpc编码数据包括qc-ldpc编码数据。
75.在102b处,接收与提前收敛校验点相关联的信息,包括通过接收至少部分地基于与多个循环相关联的多个状态的集合状态信号。如上面所描述的,利用qc-ldpc码,监视循环是足够的。这比监视所有变量节点(作为示例)更加高效(对于qc-ldpc实施例),因为存在比变量节点更少的循环,并且因此在监视循环时使用较少的监视逻辑和/或路由。
76.在104b处,使用与提前收敛校验点相关联的信息来对ldpc编码数据执行分层最小和ldpc解码,直至提前收敛校验点,并生成解码码字,包括通过响应于指示已到达提前收敛校验点的集合状态信号,暂停分层最小和ldpc解码,其中提前收敛校验点先于分层最小和ldpc解码的第一完全迭代,并且ldpc解码包括分层最小和ldpc解码。
77.然后,该过程继续到图1中的步骤106,并且如上面所描述那样来进行。
78.取决于实现方式和/或应用,用于确定何时已出现提前收敛校验点的不同实施例可以是合乎期望的。例如,假设由于分层最小和解码器的特定实现方式,变量节点或循环被分散开。因此,监视(在图5-6b中对其一些示例进行描述)可能会消耗比针对一些应用合乎期望的更多的路由区域。或者(再次由于特定实现方式),监视块(例如,图5中的502)的大小可能比针对一些应用合乎期望的更大。出于这些原因,可能期望具有其他方法来确定何时已出现提前收敛校验点。下面的示例描述(预)计算分式迭代计数,其中在当前分式迭代计数达到目标分式迭代计数时,分层最小和解码控制器停止。
79.利用分层最小和解码,其中在各种层中执行解码的顺序(例如,在第一层、第二层等之内处理变量位(用于qc-ldpc并行处理的循环)时的排序和/或时序)是提前已知的。这个已知的定序或排序允许确切的层数(用表示)连同对应于零个未处理变量位(qc-ldpc并行处理的循环)的相关联变量索引(qc-ldpc并行处理的循环索引)(用表示),这继而允许将分式迭代计数(用表示)计算或以其它方式确定为:其中是的层数(或者在qc并行处理的情况下是),并且表示第层的权重。然后,分层最小和解码器将跟踪分式迭代,并且在当前分式迭代计数超过分式迭代计数时,解码将暂停(例如,在下一个方便的点处,诸如在下一层结束时)。
80.下面各图示出了使用qc-ldpc示例进行此计算的视觉示例。
81.图7a是图示出在第一层期间处理的矩阵中的qc-ldpc循环的实施例的图。在这个示例中,矩阵(700a)给出分层解码调度,其中循环(由移位单位矩阵i0, i1, i2,
ꢀ……
, i
47
表示)按顺序次序迭代处理。在这个示例中,矩阵(700a)有6层(要注意,例如,矩阵中的6行),以及恒定权重为3(例如,每层或行被处理三次)。
82.在第一层(702)期间,处理移位单位矩阵i0–
i6。在第一迭代期间处理的具有非零值(即循环)的列通过使用那些列上方的复选标记来指示。
83.图7b是图示出在第二层期间处理的矩阵中的qc-ldpc循环的实施例的图。在第二层(710)期间,处理矩阵(700b)中的移位单位矩阵i7–i14
。在包含第二层中处理的那些移位单位矩阵的那些列上方已添加复选标记(即示出的复选标记是累积的)。
84.图7c是图示出在第三层期间处理的矩阵中的qc-ldpc循环的实施例的图。在第三层(720)期间,处理矩阵(700c)中的移位单位矩阵i
15
–i22
。在第三层结束之前(例如,从左转到右),i
20
(722)是循环,在该处,所有列已被处理至少一次,具有非零值和/或循环。要注意,例如,当处理顺序到达i
20
(722)时,每列上方存在复选标记。
85.一旦矩阵中的所有列已被用非零值处理至少一次,这就对应于其中存在零个未处理循环(或变体位)的状态,并且因此检查校验子是安全的,以查看解码过程是否可以停止,因为所有错误已被去除。换句话说,i
20
(722)对应于提前收敛校验点,在该处可以安全地执行解码器的检查,而并不担心假阳性。
86.返回到等式(19),分式迭代计数将使用等式(19)的qc-ldpc版本被计算为
,其中表示第层的汉明权重,并且表示最后未处理循环的阈值索引。从概念上讲,总和中的第一项表示到达i
20
(722)的完全或完整层的数目,在这种情况下,总共6层中的图7a中的第一层(702)和图7b中的第二层(710)。总和中的第二项表示到达i
20
(722)的最后层的部分或分式部分,在这种情况下,第三行(720)中到达i
20
(722)的列数在图7c中从左转到右。
87.作为一个实际问题,在层的中间暂停解码可能是困难的。例如,在图7c中,在一些实现方式中,恰好在i
20
(722)之后暂停处理可能是困难或不可能的,并且在第三层(720)结束时暂停处理可能是更实际或可行的。因此,更简单和/或更加硬件方便的分式迭代计数可以如下来计算:其中针对非qc-ldpc码给出了等式。从概念上讲,在图7c中所示矩阵(700c)的上下文中,是到达i
21
(722)的完整层或行的数目,加上最后(例如,部分)包含i
21
(722)的层或行的数目,除以层或行的总数(即)。描述这个的另一方式是说,对于其中解码器不能容易地或可行地停止在层或行中间的那些实施例,精确计算等式(19)中的第二项是不值得努力的,因此等式(19)中的第二项“四舍五入”到相当于整层或行。
88.短暂地返回到图4中所示出的解码示例,利用上面的技术,第9行(404)将以:“如果校验子γ=0且分式迭代数》 (任何适当的变体),则返回解码码字”来被替换。然而,与图4的示例不同,本文中描述的过程不需要在检查是否已去除所有错误之前完成完全或整个迭代。
89.下图以流程图来更加正式和/或一般地描述这些示例。
90.图8是图示出具有使用分式迭代计数的提前收敛的低密度奇偶校验(ldpc)解码过程的实施例的流程图。图8与图1相关,并且为了方便起见,使用相同或类似的参考数字来指示相关步骤。
91.在100处,接收具有一个或多个错误的ldpc编码数据。在一些实施例中,ldpc编码数据是qc-ldpc编码数据。
92.在102c处,接收与提前收敛校验点相关联的信息,包括通过接收分式迭代计数。例如,可以依照等式(19)来计算分式迭代计数(),或者可以依照等式(20)来计算分式迭代计数。
93.在104c处,使用与提前收敛校验点相关联的信息来对ldpc编码数据执行分层最小和ldpc解码,直至提前收敛校验点,并且生成解码码字,包括通过接收ldpc解码的当前迭代;并且响应于当前迭代超过分式迭代计数,暂停ldpc解码,其中提前收敛校验点先于ldpc解码的第一完全迭代,并且ldpc解码包括分层最小和解码。
94.如上面所描述的,在一些情况下,可能存在在该处更容易或更方便暂停解码的某
些点(例如,在层结束处),并且在一些实施例中,在那里暂停解码。
95.然后,该过程继续到图1中的步骤106,并且如上面所描述的那样来进行。
96.短暂地返回到图7a-7c,要注意,矩阵可以在行或列上预先置换(例如,以优化某些硬件设计度量,诸如将最小化),同时仍保持代码特性。下图示出了图7a-7c中所示矩阵的替代形式。
97.图9是图示出置换矩阵的实施例的图。在这个示例中,矩阵(900)是图7a-7c中所示出的矩阵(700a-700c)的置换。这个矩阵置换或操作仍然维持代码特性。
98.利用矩阵(900)中所示出的置换,解码器执行直至i
22
(902)的处理,以确保所有循环(或变量位)已被处理,以便检查校验子是安全的。在这个示例中,i
22
(902)位于第二行或层中,并且因此与图7a-7c的示例相比,在这个示例中的提前收敛校验点之前,解码器将“开启”达较短的持续时间。换句话说,可以探索矩阵的置换或替代形式(即与不同顺序或排序相关联)但其仍具有适当的代码特性,以便在提前收敛校验点出现之前将时间量最小化。
99.下图以流程图来更加正式和/或一般地描述这些示例。
100.图10是图示出用以确定最小分式迭代计数的过程的实施例的流程图。在一些实施例中,这个过程被用来确定在图1中的步骤102处作为与提前收敛校验点相关联的信息(其部分)接收的分式迭代计数。
101.在1000处,接收第一分层解码调度和第二分层解码调度。如本文中所使用的,分层解码调度指的是通过其来执行分层最小和解码(例如,其特定实现方式)的调度。例如,图7a-7c中的矩阵(700a-700c)示出了一个分层解码调度,并且图9中的矩阵(900)示出了另一分层解码调度。
102.在1002处,至少部分地基于第一分层解码调度来确定第一潜在分式迭代计数。在1004处,至少部分地基于第二分层解码调度来确定第二潜在分式迭代计数。例如,参见等式(19)和(20)以及图7a-7c中描述的示例。虽然这个示例仅描述了两个调度和两个潜在的分式迭代计数,但是可以分别输入和生成任何数字。
103.在1006处,将第一潜在分式迭代计数或第二潜在分式迭代计数中的最小一个选择成分式迭代计数。例如,较低的分式迭代计数允许更快地到达提前收敛校验点,以便可以节省更多功率和/或处理资源。
104.虽然已出于清楚理解的目的对前述实施例进行了一些详细描述,但是本发明并没有被限制到所提供的细节。存在实现本发明的许多替换方式。所公开的实施例是说明性的并且不是限制性的。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1