用于低密度奇偶校验码的改善的解码器的制造方法

文档序号:7546474阅读:234来源:国知局
用于低密度奇偶校验码的改善的解码器的制造方法
【专利摘要】描述了用于对LDPC码进行解码的方法和装置。LDPC码可以表现为Tanner图,包括位节点和校验节点和其间的连接。在实施例中,支持具有任何子矩阵尺寸的很多不同LDPC码的可配置的LDPC解码器包括几个独立可寻址存储器,被用于存储对于每个位节点的软判决数据。解码器还包括数量P个校验节点处理系统,其产生更新的软判决数据。更新的值然后经由混排系统传递回存储器。如果由校验节点处理系统并行处理的校验节点的数量是PCNB(其中P≥PCNB),并且对于位节点的软判决数据是q位字长,那么独立可寻址存储器的总宽度大于PCNB*q位。
【专利说明】用于低密度奇偶校验码的改善的解码器

【背景技术】
[0001] 对于给定的消息字,低密度奇偶校验(LDPC)码,像诸如汉明码的其他码一样使用 多个位。每个奇偶校验覆盖不同组的消息位,并且奇偶校验重叠,以便任何一个消息位被多 于一个的奇偶校验覆盖。这意味着当存在有限数量的错误时,可以识别错误的位置。LDPC 码的特征在于表示为H的奇偶校验矩阵,其具有对于每个奇偶校验的行、以及对于总码字 中每个位的列。对于LDPC码而言,这些奇偶校验矩阵非常大且稀疏(即,其包括很多0并 只有几个1),结果导致非常长的码字。
[0002] 奇偶校验矩阵H还可以以Tanner图的形式表现,并且图1示出示例奇偶校验矩阵 102和对应的Tanner图104。Tanner图104示出位节点106和校验节点108以及其间的连 接(或者边缘)。对于码字中的每个位(并且这些对应于奇偶校验矩阵102中的列)有一 个位节点,并且对于每个奇偶校验(并且这些对应于奇偶校验矩阵102中的行)有一个校 验节点。
[0003] LDPC码典型地使用软输入软输出方法解码,其中前级将信息传递至解码器,其说 明了对于每个位的估计值(1或〇)和与该估计关联的置信度值。置信度值可以是对数似 然比(LLR)的形式。解码器以相同的形式(即,估计值和与该估计关联的置信度)输出信 息。解码器使用基于置信传播的迭代消息传递算法来执行解码。根据该算法的示例,位节 点告知连接的校验节点其当前LLR估计,并且校验节点使用该信息来执行其奇偶校验,并 将信息提供回关于关联的位是1的可能性的每个连接的位节点。在收到更新的信息时,位 节点将其从所有连接的校验节点接收的值合并。然后重复该方法,位节点向校验节点提供 更新的LLR,尽管从位节点向任何校验节点传递的值可能不同,使得校验节点仅接收"新的" 信息,其指示在之前的迭代中其他连接的校验节点如何修改了LLR(即,校验节点接收有关 由除了其自身的所有其他连接的校验节点对LLR做出的改变的信息)。该方法是2通道 消息传递(TPMP,Two-PassMessagePassing)的示例,并且通过合并2个通道可以更有效 地进行解码,并且结果可以是合并计划消息收发传递(MSMP,Merged-ScheduleMessaging Passing)算法。
[0004] 使用MSMP,对于每个位节点的当前LLR估计被用于计算并存储代表校验节点至位 节点消息的值,并且一旦已计算了值,该值被用于更新临时变量,该临时变量是对于每个位 节点的LLR更新的运行总数。一旦已处理所有的校验节点(以及被用于更新运行总数的它 们的校验节点至位节点消息),则运行总数被用于更新对于每个位的LLR的存储的值(当前 LLR估计)。如之前的一样,然后重复该方法。
[0005] 对于LDPC码有很多应用,因为LDPC码已被发现提供了可靠且有效的方法,用于在 有噪声的传输通道上传输数据。示例包含在很多数字电视标准中的使用(无论是地面、卫 星、有线还是移动使用),诸如DVB-T2、DVB-S2和DVB-C2、以及其他无线标准,诸如WiMAX? 和一些WIFI?变型。
[0006] 下述实施例不限于解决了已知的LDPC解码器的任何或者所有缺点的实施方式。


【发明内容】

[0007] 提供该
【发明内容】
来以简化形式介绍概念的选择,其在【具体实施方式】中进一步在下 面述。该
【发明内容】
不意图识别权利要求的主题的关键特征或者基本特征,也并非意图被用 来协助确定权利要求的主题的范围。
[0008] 描述了用于对LDPC码进行解码的方法和装置。LDPC码可以表现为Tanner图,包 括位节点(码字中的每位一个)和校验节点(每奇偶校验一个)和其间的连接。在实施例 中,支持具有任何子矩阵尺寸的很多不同LDPC码的可配置的LDPC解码器,包括几个独立的 可寻址存储器,被用于存储对于每个位节点的软判决数据。解码器还包括数量P的校验节 点处理系统,其产生更新的软判决数据。更新的值然后经由混排系统传递回存储器。如果 由校验节点处理系统并行处理的校验节点数量是Pras (其中P>PaJ,并且对于位节点的软 判决数据是q位的字长,那么独立可寻址存储器的总宽度大于Pc:NB*q位。
[0009] 第一方面提供可配置的LDPC解码器,被布置为支持具有任何子矩阵尺寸的多个 不同的LDPC码构造,所述LDPC解码器包括:多个独立可寻址存储器,被布置为共同存储对 于每个位节点的、用于解码LDPC码的软判决数据,并且每个存储器具有宽度,存储器的所 述宽度包括在单个周期从所述存储器可访问的数据的量;多个校验节点处理系统,被布置 为并行操作,并产生对所述位节点软判决数据的更新;第一混排系统,被布置为将数据从多 个独立可寻址存储器传递至多个校验节点处理系统;以及第二混排系统,被布置为将对所 述位节点软判决数据的更新从所述多个校验节点处理系统传递至所述多个独立可寻址存 储器,其中所述多个独立可寻址存储器的总宽度大于由所述校验节点处理系统并行处理的 校验节点的数量与对于位节点的所述软判决数据的宽度之积。
[0010] 第二方面提供LDPC码的解码的方法,包括:在单个周期从多个独立可寻址存储器 访问对于多个位节点的软判决数据,每个存储器具有宽度,并且存储器的宽度包括在单个 周期从所述存储器可访问的数据的量;将访问的软判决数据提供给多个校验节点处理系 统;以及在所述校验节点处理系统中并行产生对于所述多个位节点的对所述软判决数据的 更新;以及在所述多个独立可寻址存储器中存储对于所述多个位节点的更新的软判决数 据,其中在至少一个周期中,访问对于多个位节点的软判决数据包括:访问软判决数据的总 量,其大于由所述校验节点处理系统并行处理的校验节点的数量与对于位节点的所述软判 决数据的宽度之积。
[0011] 另一方面提供实质上如参考附图的图5、7和9任一个描述的LDPC解码器;实质上 如参考附图的图14描述的方法;其上编码有计算机可读程序代码的计算机可读存储介质, 用于产生包括本文描述的LDPC解码器的处理器;以及其上编码有计算机可读程序代码的 计算机可读存储介质,用于产生配置为执行本文描述的方法的处理器。
[0012] 本文描述的方法可以由计算机执行,该计算机配置有以机器可读形式存储在有形 存储介质上的软件,例如以计算机程序的形式,包括用于配置计算机以执行描述的方法的 组成部分的计算机可读程序代码;或者以计算机程序的形式,包括适于执行本文描述的任 何方法的所有步骤的计算机程序代码单元(当在计算机上运行程序,并且计算机程序可以 体现在计算机可读存储介质上之时)。有形(或者非暂时性)存储介质的示例包含盘、拇指 驱动器、存储卡等,并且不包含传播的信号。软件可以适于在并行处理器或者串行处理器上 执行,使得方法步骤可以以任何适当的顺序、或者同时进行。
[0013] 本文描述的硬件组件可以由其上编码有计算机可读程序代码的非暂时性计算机 可读存储介质产生。
[0014] 这承认了固件和软件可以分开使用并且是有价值的。意图包括软件,其运行或者 控制"哑(dumb)"或者标准硬件来进行期望的功能。还意图包括"描述"或者定义硬件的配 置的软件,诸如HDL(硬件描述语言)软件,其用于设计硅芯片、或者用于配置通用可编程芯 片,来进行期望的功能。
[0015] 如对技术人员将是明显的,优选特征可以适当组合,并可以与本发明的任何方面 组合。
[0016] 附图描述
[0017] 将参考下面的附图,以示例的方式描述本发明的实施例,其中:
[0018] 图1示出示例奇偶校验矩阵和对应的Tanner图;
[0019] 图2示出2个示例奇偶校验矩阵;
[0020] 图3是示出示例LDPC解码器的示意图;
[0021] 图4示出奇偶校验矩阵的示例片段;
[0022] 图5示出示例解码器和包括单个子矩阵的H矩阵的片段示意图;
[0023] 图6示出2个示例子矩阵;
[0024] 图7示出另一个示例解码器的示意图;
[0025] 图8示出示例校验节点处理系统的示意图;
[0026] 图9示出另一个示例解码器的示意图;
[0027] 图10示出来自图9所示的解码器的选择块的示意图;
[0028] 图11是示出用于特定校验节点块的数据如何对于特定码进行组装的示例的示意 图;
[0029] 图12示出另一个示例校验节点处理系统的示意图;
[0030] 图13示出另2个示例子矩阵;以及
[0031] 图14示出LDPC解码器的操作的示例方法的流程图。
[0032] 贯穿附图使用共同的附图标记,以指示类似的特征。

【具体实施方式】
[0033] 下面仅以示例的方式描述了本发明的实施例。这些示例代表目前 申请人:已知的将 本发明付诸实践的最佳方式,尽管它们并非是实现的唯一方式。描述陈述了示例的功能、以 及用于构建并操作该示例的步骤的顺序。然而,相同的或者等价的功能和顺序可以由不同 示例完成。
[0034] 上述LDPC解码算法涉及在临时变量(运行总数)中存储所有位节点更新,直至迭 代的结束,此时所有更新被立即应用。该技术被称为泛洪(flooding),并且如果给定的位 节点涉及多个校验节点计算,那么对于该位节点的相同的LLR估计被用于迭代内的所有计 算。然而,替代的方法允许首先处理的校验节点以立即更新其连接的位节点(并且因此,更 新对于这些位节点的当前LLR估计)。这意味着相同迭代内的接下来的校验节点使用更新 的LLR估计。该方法被称作分层解码,其与泛洪相比要求更少的存储设备,并且导致算法更 快速收敛。
[0035] -些LDPC码被设计用于分层解码,并且对于这些码而言,奇偶校验(或者Η)矩阵 被分割为多个层,每个层由一组行(即,一组校验节点)组成,并且每个层仅使用一次特定 位节点,如图2的第一示例202所示。由于层中的每行包含位的不同集合,因此层内的行可 以并行处理,不会有两个以上的校验节点试图同时更新相同的位节点导致的任何冲突。
[0036] 在一些示例中,除了将H矩阵水平分割为层外,矩阵被进一步垂直分割,以形成一 组子矩阵,每个尺寸为S1乘以S2,如图2中的第二示例204所示。子矩阵的行构成层,并且 每个子矩阵每列仅含有一个" 1 "以及每行仅含有一个" 1 "。这样组成的码称作"架构感知", 并且使得与之前的示例相比在解码器中显著的逻辑节省。
[0037] 尽管下面的描述是指分层解码,但该方法还可以适用到非分层码,诸如DVB-T2 码,如下参考图13所述。
[0038] 图3是示出示例LDPC解码器300的示意图。其包括一个或多个存储器,该存储器 形成被布置为存储对于每个位节点的估计的LLR(其可以称作软判决或者"位节点值")的 λRAM302。这些值可以表示为Qj[k],其中j指位节点,并且k是迭代数。LDPC解码器300 还包括并行操作的多个校验节点处理系统(或者校验节点处理块)304。每个校验节点处理 系统304与校验对位(check-to-bit)节点消息存储306接合,并且该存储可以由一个或多 个存储器(例如每个校验节点处理系统304可以有一个存储器)提供。这些校验对位节点 消息可以表示为Rij [k],其中i指校验节点。LPDC解码器300额外包括2个混排系统308、 310,其从λRAM302获得用于处理的适当的位节点数据,并将其传递至校验节点处理系统 304,进而将更新的位节点数据返回至λRAM302中的适当点。
[0039] 图3所示的解码器300包括P个校验节点处理系统304 (其中P是整数),因此, 解码器可以最大并行处理P个校验节点。并行处理的校验节点的组可以称作校验节点块 (CNB),并且CNB402的示例可以在图4的H矩阵400的示例片段中看到。CNB包括Pras个校 验节点,并且在图4的示例中Pras = 3。在利用了所有校验节点处理系统304的示例实施方 式中,P=Ρ? (对于特定LDPC码),尽管如下所述在一些示例中,Ρ>Ρ_ (由于由LDPC解码 器支持的各种码的子矩阵尺寸的差异)。通过增加CNB的尺寸(即通过增加PaJ增加了吞 吐量,然而,硬件尺寸也增加了(作为额外校验节点处理系统304的结果,即随着P增加)。 在示例中,层中的校验节点的数量可以是CNB尺寸的整数倍,以便整数个CNB包括层(例如 在图4中,层中有9个校验节点,并且CNB中有3个校验节点)。在示例中,对于DVB-T2而 言,解码器在每个层可以使用8个CNB,其中CNB尺寸为45 (即Pcmb = 45),或者通过在提升 的内部时钟频率上运行解码器,可以减小CNB尺寸。
[0040] 混排系统308被布置为在校验节点处理系统304呈现正确的位节点数据。抓取用 于CNB的数据(如校验节点处理系统304要求的)涉及从λRAM302挑选出多组软判决数 据(即多组%阳值),长度为一个CNB(即每个时钟周期为Pras值)。尽管H矩阵可以布置 为一组子矩阵,其中每个子矩阵包括空矩阵或者一个或多个单循环移位的单位矩阵(例如 图4所示的),但单位矩阵的循环移位意味着要求的来自λRAM302的多组数据可以在伪随 机布置的开始点开始。当子矩阵尺寸等于P或者等于Ρ*Ν(其中N是整数)时,那么开始点 将是规律的,并且(由混排系统308)要求的混排不太复杂。然而,当子矩阵尺寸不等于Ρ*Ν 时,那么开始点将是不规律的,并且混排系统执行更复杂的操作。例如,当多组数据在伪随 机布置的开始点开始时(并且尽管是以连续的顺序),其将绕子矩阵边界环绕。这在图4所 示的H矩阵400的示例片段的右手子矩阵中的CNB2中显示。
[0041] 处理校验节点要求!Ti个位节点值(其中!Ti是连接至校验节点i的位节点的数量), 并且在图4所示的示例中,每个非空子矩阵向每个校验节点贡献一个位节点值。^的值对于 CNB中的所有校验节点相同,并且等于子矩阵的数量,位节点数据需要从所述子矩阵供应。
[0042] 如果每个校验节点处理系统304具有单个q位输入和单个q位输出(其中q是位 节点LLR数据的字宽度、[k]),那么连接的位节点数据以串行方式传递至每个校验节点处 理系统,并且当解码器300在ri时钟周期处理P个校验节点时,实现了最大吞吐量。为了 在XRAM302的输入和输出匹配该吞吐量,ARAM302要求P*q位的总RAM宽度(对于双端口 RAM而言);然而,如果总RAM宽度恰好等于P*q位(对于双端口RAM而言),那么在混排系 统308、310内实现的重新排序系统为了以正确的顺序呈现数据(给校验节点处理系统304 和λRAM302)是复杂的,并且这会导致显著的延迟。此外,当对角线(循环移位的单位矩阵 中)没有对齐存储单元边界时,需要存储在一个周期(即对于一个CNB)拉出的数据用于接 下来的CNB的处理,并且这可以参考图4描述。
[0043] 在图4所示的H矩阵400的示例片段中,子矩阵尺寸S(其中S是整数)是CNB的 尺寸Pras的整数倍。在示出的示例中,Pcmb = 3并且S= 9,S卩,子矩阵中有3个CNB并且存 储器宽度是3个位节点(即3q,恰好等于P_*q)。参考回图3,对应的解码器包括3个校验 节点处理系统304(P= 3 =PaJ。在图4所示的示例中,每个子矩阵也仅有一个单位矩阵, 尽管本文描述的方法可以适用于:每个子矩阵有多于一个单位矩阵的码,如参考图13在下 面描述。
[0044] 为了处理CNB0,左手子矩阵要求的所有数据可以通过访问存储器单元0获得(例 如在第一周期,一个位节点值被传递给3个校验节点处理系统304中的每个);然而,为了 访问用于右手子矩阵的数据(中心子矩阵是空矩阵,并被忽略对于CNB0-2),访问存储单元 6和7 (其占用2个周期)。在访问这两个存储单元时,获得了比处理CNBO所需更多的数据, 并且该附加的数据是处理CNBl和2所要求的。由于总RAM宽度等于PCNB*q(在该示例中P =PaJ,因此没有可用的RAM吞吐量来再次访问相同的数据(当处理CNBl或者2时),并 且因此该附加的数据需要被保留。保留该数据是有问题的,因为其导入了延迟(即,其导入 了一段时间,在该此期间数据在λRAM外缓存,并且在此期间,在相同的位节点在下一行馈 送至非空子矩阵的情况下,那么新的子矩阵行无法被处理)。这使得难以保证更新以正确的 顺序处理,并且要求例如以缓存形式的、用于附加数据的额外存储。
[0045] 本文描述的是可配置的改善的LDPC解码器(或者解码器架构),其支持很多不同 的LDPC码,并且这些支持的LDPC码可以具有任何尺寸的子矩阵。此外,在改善的LDPC解 码器中,总存储器宽度(即,在单个周期可以从整个λΜΜ302访问的数据的量)宽于P*q, 这能使对于每个子矩阵完整的CNB有价值的数据在单个周期被访问(例如对存储器单个访 问),不论对角线放置在子矩阵的哪里,并且不需要任何存储供以后使用的不希望的数据。 λRAM302可以包括多个独立可寻址存储器(即M个独立可寻址存储器,其中M是整数)。在 各种示例中,M个存储器可以包括与P*q宽度的基线要求相比一个或多个额外库(bank)的 存储器(例如图7所示的)、和/或更宽的存储器库(例如图9所示的)。在很多示例中,M 个存储器库可以都具有相同的宽度;然而,在其他示例中,存储器可以具有不同宽度(例如 4个更大宽度的存储器和2个更小宽度的存储器,其中M= 6)。
[0046] 在可以用于DVB-T2的示例中,Pcnb = 45 =P并且λRAM302可以包括多个存储器 库,每个为15个软判决宽(例如每个具有15q的宽度)。在该示例中,3个存储器将匹配 P(并可以表示为基线存储器要求);然而,在改善的解码器示例中,可以有4个存储器。在 第二示例中,可以使用3个更宽的存储器,每个存储器具有2/3*P*q的宽度(而非作为基线 要求的l/3*P*q)。
[0047] 当P=Pcmb时,基线存储器要求可以表示为P*q或者Pc;NB*q。然而,当P>Pc;NB时,对 于特定码的基线存储器要求是Pc:NB*q,并且对于解码器(其可以是能对多码解码的解码器) 的基线存储器要求是P*q(由于其由校验节点处理系统的数量确定,并非用于任何码的CNB 的实际尺寸)。当基线要求(P*q)由Mmin个存储器满足时,每个宽度为P/Mmin*q,可能有多于 Mmin个存储器(即M>Mmin)和/或每个存储器可能具有超过P/Mmin*q的宽度。
[0048] 图5示出示例可配置的LDPC解码器500的示意图,其支持很多不同的LDPC码(具 有任何尺寸的子矩阵)以及包括单个子矩阵502的H矩阵的片段,其中子矩阵尺寸是36。 在该示例中,P=Pcmb = 9 (因此有9个校验节点处理系统304并且Pcmb是子矩阵尺寸的整 数约数),并且λRAM302包括4个存储器504 (记为A-D)。每个存储器的存储器宽度是3 位节点值(即3q),使得3个存储器将满足(P*q的)基线要求;然而,该系统包括额外的存 储器(给出总存储器宽度为12q= 4/3*P*q)。应该理解的是,包括4个存储器的该布置仅 示出为示例的方式,并且在其他示例中,根据子矩阵尺寸、要求的吞吐量等,可以使用不同 数量的存储器。例如,可以使用M个存储器的任何布置,其中那些M个存储器的M-I的总 宽度至少可以供应Pras-I位节点值,即对于每个具有w位节点值的宽度的M个存储器而言, (M-I)w> (Pcnb-I)。
[0049] 尽管图5示出Pcmb作为子矩阵尺寸的整数约数,但应该理解的是这可能并不总是 可能的(例如当S是素数时)。
[0050] 解码器500还包括2个混排系统508、510。第一混排系统508被布置为在校验节 点处理系统304呈现正确的位节点数据,并且第二混排系统510被布置为将更新的位节点 数据(例如以更新的形式或者更新值,如下文更详细描述的那样)返回至λRAM504。
[0051] 从子矩阵502取出位节点数据的操作对于CNBO由图5中的阴影示出,并且该操作 由第一混排系统508实现。如图5所示,通过访问RAMC单元0、RAMD单元0、RAMA单元 1和RAMB单元1获得了所有要求的位节点值,并且所有这些值可以在单个周期中被访问 (因为从每个存储器仅有单个单元被访问)。然后,从自RAMC访问的数据丢弃2个位节点 值,并且从自RAMB访问的数据丢弃1个位节点值。可以贡献给每个CNB的存储单元的数 量依赖于架构设计。
[0052] 图6示出类似于图5所示的第一示例子矩阵600,其对应于每个存储单元具有3 个软判决的4个存储器布置(M= 4);然而,该在示例子矩阵600中,每个子矩阵仅有3个 CNB,因此子矩阵尺寸是27 (与图5中的S= 36相比,每个子矩阵有4个CNB)。这意味着在 子矩阵600中,有9个存储单元贡献给子矩阵:这是行的第一子矩阵,使得这些包括来自每 个存储器的单元〇和1,以及额外地来自RAMA的单元2。
[0053] 在该示例中可见,处理子矩阵600中的CNBO将要求从存储器A的2个单元(A0和 A2)拉取数据,而存储器B保持未使用,因此这是不可能的。
[0054] 相反,在图6中的第二示例子矩阵602中,当跨所有RAM(例如从每个RAMl至M的 单元X)应用任何RAM单元(或者RAM地址)时,仅从一个子矩阵访问数据,并且这避免了 有关子矩阵600的上述的问题。在第二示例中,有3个RAM(M= 3)并且每个存储单元是5 个软判决的宽度。每个RAM对每个子矩阵供应2个单元,并且6个单元提供30位节点的存 储器宽度。这导致3个浪费的位节点(在该示例中的存储单元Cl),然而,当绕子矩阵边界 环绕时,这启动了存储器的循环选择(即为了不必对于单个的CNB从相同的存储器中的2 个单元读出)。在像这样的示例中,当有未使用的RAM数据通路时,可以使用缺口封闭(gap closing)硬件,参考图9在以下对其进行描述。
[0055]GB20600码(用于数字地面电视的LDPC码的示例)使用127的子矩阵尺寸,其是 素数。如果实现了能够并行处理45个校验节点(P= 45,因为这是对于另一个码的最佳布 置)的硬件,那么对于GB20600码有效分裂为CNB将是每个子矩阵有3个CNB,尺寸为42、 42和43,因为这会有效使用可用的校验节点处理系统。如上所述,具有4个存储器布置,并 且这可能对于其他码(例如DVB-T2)是最佳的;以及15个软判决的存储单元宽度,这在每 个子矩阵给出9个RAM单元(9个存储器宽度给出135个软判决)。然而,在该布置中,当跨 所有RAM(例如每个RAMl至M中的单元X)应用任何RAM单元时,将不会仅从一个子矩阵访 问数据(如以上描述),反而,将有一些当跨所有RAM应用时从多于一个的子矩阵访问数据 的RAM单元。这意味着循环选择将跨子矩阵边界打破,因此是不可能的。为了使用4个存 储器(M= 4)布置来处理该码,每个子矩阵可以使用12个RAM单元(M的倍数)。换言之, 这样设计的系统对每个子矩阵将使用4个CNB,尺寸为32或者31 (3*32+31 = 127)。每个 CNB从3个存储单元获取数据,并有71 %的硬件利用率效率(因为使用了 45个校验节点处 理系统中的32个)。
[0056] 在该4个存储器(M= 4)的布置下,不同的子矩阵尺寸可能导致非常不同的硬件 利用率。例如,在该子矩阵尺寸下,每个子矩阵可以使用S= 60的4个RAM单元,因此,完 全利用15个RAM数据路径。每个子矩阵有2个CNB时,有使用的30个校验节点处理系统 (来自总数为45个的校验节点处理系统),效率为67%。然而,对于S= 61,每个子矩阵需 要使用8个RAM单元,因此,7个或者8个RAM单元实际上被用于每个RAM。这意味着使用 20或者21的CNB尺寸,(每个子矩阵3个CNB),效率降至45%。所以,根据子矩阵尺寸,4 个存储器布置可能不是最佳的,参考图9在下面描述了替代的布置。
[0057] 如上所述,为了避免与必须从相同的RAM、任何RAM单元(或者RAM地址)访问2 个存储单元关联的问题,当跨所有RAM应用时,仅从一个子矩阵访问数据,即从每个RAMl至 M的单元X访问相同的子矩阵。因此,子矩阵中的存储单元的数量是在一起形成ARAM的利 用的独立可寻址存储器(M)的数量的倍数。
[0058] 图7是支持很多LDPC不同码(具有任何尺寸的子矩阵)的另一个示例可配置的 LDPC解码器700的示意图,其中总存储器宽度超过P*q的基线值。正如图5的示例,图7中 的示例包括4个存储器701-704,并且具有4/3*P*q的总存储器宽度。
[0059] 如图5的示例那样,解码器700包括2个混排系统706、708。在λRAM701-704的 输出的混排系统708包括读出桶式移位器(readbarrelshifter) 710、以及多个互相连接 的复用器712。来自RAM701-704的读出数据应用到读出桶式移位器710,其处理H矩阵内 的每个对角线的开始可能没有对齐存储器宽度的事实。因此桶式移位器710从RAM701-704 得到4P/3个软判决,并输出要求的P软判决,将位节点与其必要的校验节点对齐,并且丢弃 处理中不希望的P/3个软判决。在桶式移位器710的输入的所述多组复用器712对RAM输 出重新排序,以处理含有更高校验节点的存储器将根据对角线的位置而改变的事实,并以 一致的顺序(例如在示出的示例中,左侧为最高校验节点,右侧为最低校验节点)向桶式移 位器710提供位节点。
[0060] 单个CNB的处理包括依次从每个非空子矩阵(从λRAM701-704)读出位节点数 据,并将其通过桶式移位器710流至校验节点处理系统714。然后,对于位数据的更新以相 同的顺序从校验节点处理系统(或者系统)714流出,进入(作为第二混排系统706的部分 的)写入桶式移位器716(writebarrelshifter)。该桶式移位器716执行与读出桶式移 位器710相反的功能,将数据与RAM701-704中要求的位置重新对齐。复用器组718然后将 正确的值指引至每个RAM。由于RAM701-704得到4P/3个输入值,而仅P个值从校验节点处 理系统714到达,因此一些值将是无效的,并且其被遮蔽以防止由一组写入启动控制720写 入。
[0061] 应该理解的是,本文指代的读出和写入桶式移位器的操作(例如读出桶式移位器 710和写入桶式移位器716)不同于可以被用于常规LDPC解码器的常规桶式移位器。常规 桶式移位器被配置用于特定尺寸的码子矩阵,并只是执行输入元件的循环旋转,进而将这 些循环旋转的输入元件(即,相同数量的元件输出作为输入)输出。然而,如上所述,在本 文描述的可配置的LDPC解码器中实现的桶式移位器输入并输出不同数量的元件(例如,根 据精确的RAM布置、LDPC码构造等)。
[0062] 图8示出示例校验节点处理系统800的示意图。每个校验节点处理系统接收一条 位节点数据,每个时钟周期为% [L-1],(其中L是对于分层解码的层指数),因此其占用ri 个时钟周期来积累充分的数据以继续计算。因此,在校验节点处理系统800的输入位置的 Qj寄存器801-802是双缓冲的:当对于一个校验节点的数据进入时,对于之前的校验节点 的数据被处理。
[0063] 校验节点处理的第一级是从上次迭代减去存储的校验对位节点消息:从Qj[L_l] 值减去RijDi-I](块803)。在一些示例中,RijDc-I]值可以以"压缩的"形式(例如最小、最 小指数、符号位的组和最小但是一个值)存储在存储804中。该数据以双缓冲方式"解压 缩"(在块806-807中),使得解压缩的Rij[k-Ι]值看起来与对应的Qj[L-1]值一致(在块 803)。
[0064] 新的校验对位节点消息的组RijDO然后(在块808中)可以使用如下计算:
[0065] & [A] = |ρ,.[£ - 1] - - 1]|) (I) -間nu,
[0066] 其中Sij是由符号的XOR函数确定的符号校正因子(参见下方的公式⑷),并且 表达式j'eR[i]\{j}代表指数j'跨连接的位节点的组运行,但是跳过当前指数j。新的 校验对位节点消息以压缩的形式(压缩在块810中执行)被重新存储(在存储804中),为 下一次迭代准备好。
[0067] 下面的公式然后可以被用于更新位节点值:
[0068] Qj [L] =Qj [L-1]-Rij [k~l]+Rij [k] (2)
[0069] 然而,在图8所示的示例中,从校验节点处理块800出现的值只 是,办-1]+1^[?部分(如块812中产生的那样),并且与Qj[L-l]的相加是由位于存储 回RAM701-704之前的加法器722完成的(如图7所示)。
[0070] 下面更详细地描述上面的公式(1)和(2)。
[0071] 图9是支持很多不同LDPC码(具有任何子矩阵尺寸)的其他示例可配置的LDPC解码器900的示意图,其中,总存储器宽度超过P*q的基线值。在该示例中,有3个 λRAM901_903(M= 3),其中每个具有2/3*P*q的存储器宽度,给出2P*q的总宽度。图9所 示的架构是非常灵活的,并可以容纳很多不同子矩阵尺寸(例如从对于一些无线标准的小 的子矩阵尺寸、到对于数字电视标准的显著更大的子矩阵尺寸),并且因此很多不同码。
[0072] 在该示例中,混排系统904、906的实施方式略不同于图7所示和上面描述的,尽管 应该理解的是任一解码器700、900都可以使用任何适当的架构来实现混排系统。在图9的 示例中,读出预移位器908-909和写入后移位器910-911进行操作,以封闭由RAM中未使用 的数据路径导致的任何缺口。通过将该缺口填充硬件导入至架构,可以从每个存储单元出 现的软判决的数量(即位节点值)是变量,其可以针对特定应用选择。
[0073] 在RAM中的所有数据路径被使用的标准(S卩,对于RAM中的所有数据路径被使用 的子矩阵尺寸,P=PaJ中,预移位器和后移位器值保持在0,并且这些级没有效果。这例 如是具有Pcmb = 36的DVB-T2中的情况。对于该码,可以使用360的子矩阵尺寸,其可以被 分割为10个CNB,为了 100%利用可以设置在示例解码器中的36个校验节点处理系统(其 中S= 360,P= 36)。每个RAM单元具有24个软判决(因为存储器宽度为2/3*P*q并且 2/3*36 = 24),每个子矩阵有15个RAM单元,其是3-RAM系统要求的3的倍数(由于参考 图6的上述原因)。
[0074] 对于运行在相同硬件上的GB20600的情况(不同的数字电视标准),S= 127并且 仅有6个RAM单元组成子矩阵(6是用于每个RAM单元的结果导致< 24个软判决的3的最 小倍数);所以仅有21或者22个软判决实际上来自每个RAM单元,给出子矩阵尺寸为127。 当有36个数据路径可用(P= 36)时,可以使用的最大CNB尺寸是36并且每个子矩阵可以 使用4个CNB,因此实际的CNB尺寸--Pcmb是31或者32 ;导致88%的利用图(由PeNB/P 给出)。
[0075] 如该示例展示的那样,为了改善效率,PaJCNB尺寸)应该接近P,因为这意味着校 验节点处理硬件没有未充分利用,受到如下约束:组成子矩阵的RAM单元的数量是独立可 寻址存储器的数量的倍数,并且每个单元的软判决的数量不超过单独存储器的宽度。
[0076] 读出预移位器908-909将数据从"边远的"存储单元向内朝向中心移位,这能创建 有未使用的数据路径的"重叠"。这些预移位器908-909接下来的选择块912然后包括2对1 复用器,来选择已创建重叠的适当的行,即,在来自一个存储器的不希望的数据与来自第二 存储器的希望的数据之间的重叠的区域,选择块将选择第二存储器。图10示出选择块912 的示意图,简化为P= 12的情况;以及图11示出对于特定CNB的数据如何对于GB20600的 情况进行组装的示例。
[0077] 在图11中,希望的数据1102示出为对角阴影,并且这对应于在(在H矩阵片段 1105中)CNBO内示出的粗对角线1104。不希望的数据1106示出为没有任何阴影,并且来 自未使用的RAM数据路径1108的数据示出为点状图案。应该理解的是,CNB尺寸和使用的 RAM数据路径的数量两者可以根据H矩阵中的位置而变化。
[0078] 在该示例中,未使用的数据位于"右手"存储器数据路径(即,具有最高位节点指 数的数据路径)。这在移位/选择设计中会引起不对称(例如图9或者10中)。来自存储 器B的输出向右移位,以将未使用路径丢失,然而,该区域中的数据总是来自存储器B(即其 移位至之前也由来自存储器B的数据占据的位置),因此不需要选择器。来自存储器A的输 出向左移位,以与存储器C的未使用的区域重叠,并且选择块选择该区域中的存储器A。因 此,封闭了不希望的缺口。
[0079] 图9-11中示出并在上面所描述的缺口封闭硬件,能使系统有效改变RAM的宽度, 以应对不同的子矩阵尺寸(通过允许系统保证该数据分割为子矩阵尺寸)。当有多于一个 被封闭的缺口时,不同缺口的尺寸不需要相同。
[0080] 图9所示的示例解码器不包括任何加法器(例如,对应于图7的加法器722)。在 这种情况下将-Hk-U+Ryk]相加至QjL-I]是在校验节点处理系统914内执行的,并且 图12示出这样的校验节点处理系统1200的示例的示意图。
[0081] 在图12所示的示例校验节点处理系统1200中,在之前的迭代上来自该校验节点 的Rij消息事先从RijRAM1202取回;这些然后随着它们进入校验节点处理系统1200被解压 缩(在块1204中),并且从Qj值中减去(在块1206中),形成Qji位对校验节点消息。随 着这些进入,系统记录它们的符号,并保持最小以及下个最小幅度的运行估计。Qji消息也存 储在FIF01208中。一旦对于特定CNB的上次位节点值已进入,每个校验节点处理系统然后 可以形成Ru消息的新的压缩组(在块1210中)用于存储。这些消息存储在小缓冲1212 中;以及当从该缓冲输出时,它们可以被解压(在块1214中),并相加至从FIF01208出现 的^消息(在块1216中),形成新的%值用于输出回λRAM。
[0082] 在图9-12中示出的LDPC解码器900的变化中,对于读出和写入两者示出的2个 级别的移位(即移位器和预移位器)可以合并为对于每个读出和写入的单个移位级。在示 例中,移位级可以借助适当的遮蔽向每个左、中和右组的LLR适用单个移位,进而将其在一 起逻辑或。这在功能上等同于图9-12中示出的2级方法,并应该理解的是在移位策略上也 可以有在功能上等价的其他变化。
[0083] 在图9-12中示出的架构被设计为与多个不同码操作,并作为结果,校验节点处理 系统1200的架构略不同于图8所示和以上描述的架构。如果对于特定码的每个校验节点 具有相同数量的连接的位节点,那么%缓冲可以构造为双缓冲系统(如图8中的示例):一 个缓冲被用于积累对于当前校验节点的消息,而另一个缓冲读出用于之前的校验的消息, 形成修改的%输出。然而,在每个校验节点可能没有恒定数量的连接的位节点(例如对于 一些DVB-T2码,该数量从一个层到下个层会变化)的实施方式中,使用这样的双缓冲布置 将使得操作停顿并丢失处理周期(例如,如果要读出的位节点的数量多于读入数量,那么 校验节点处理系统的操作停顿以等待读出结束)。
[0084] 为了避免通过这样停顿,图12的实施方式中的压缩的Rij缓冲1212是具有3个位 置的非常小的FIFO。如果!"《?是该码中每个校验节点的最大数量的位节点,那么在"天的 开始"(开始迭代),读出校验节点被延迟了 周期。这意味着当系统首先开始读出时,Qji FIF01208保持rmxf条目;并且系统写入至Rij缓冲1212中的第二或者第三位置(根据第 一个CNB是否具有少于或者等于rMX个连接)。这然后给予充分的缓冲,以保证读出或者处 理操作都不需要从那里开始停顿。
[0085] 尽管图9所示的示例LDPC解码器900包括3个λRAM(M= 3),但在另一个示例中 可能仅有2个λRAM(M= 2)。在这样的示例中,移位逻辑与3λRAM示例中相同,除了相同 的LLR(来自一个ARAM的)被用于左和右LLR数据路径(例如,块910-911),使得移位逻 辑作为桶式移位器。
[0086] 在上述示例码中,每个子矩阵有一个单位矩阵,尽管本文描述的方法可以应用到 每个子矩阵有多于一个单位矩阵的码。这样的码的示例是DVB-T2或者DVB-S2,并且这些码 不是架构感知的。然而,这些码确实具有可以重新布置的构造和H矩阵,以采用以下形式: 含有循环移位的单位矩阵(除了不与模式拟合的一个奇偶性位)的尺寸为360x360节点的 子矩阵。
[0087] 因为这些码不是"架构感知的",因此每个子矩阵要么可以是空矩阵,要么可以含 有一个或多个移位的单位矩阵。多于一个单位矩阵存在时,这可以称作"多对角线",并且在 一些示例中,高达4个单位矩阵可以存在于单个子矩阵中。
[0088] 这些多对角线使得不可能将H矩阵拆分为真正层。在多对角线子矩阵中,将多次 使用相同组的位节点,其连接至不同的校验节点。在很多情形下,子矩阵内的多个校验节点 将尝试更新相同的位节点。这具有2个含义:首先,这些校验节点对于每个位节点将都使用 相同的输入值(这意味着从分层解码的想法出发,每次使用已由之前的校验节点更新的位 节点)。其次,不用修改上述架构,这将意味着对位节点的两个更新中的一个将覆盖另一个, 使得更新中的一个将丢失。
[0089] 这些含义的第一个具有的效果是:解码器性能下降至纯泛洪解码器(所有校验节 点从相同组的位节点馈送)与真正分层解码器(位节点在每次使用之间更新)之间。
[0090] 这些含义的第二个具有更严重的后果:如果校验节点更新持续丢失,那么这将降 低码的性能。仿真示出了如果这被允许发生,那么一些位节点将卡住,并没能朝向改善的 LLR值迁移。冲突的数量通过使用CNB(如上所述)减小,并且可以通过去除在每个CNB内冲 突的那些边缘(即连接)来处理任何剩余冲突,如参考图13所示的示例子矩阵1300、1301 解释的。
[0091] 在第一示例子矩阵1300中,以多于CNB的尺寸隔开了 2个对角线1302、1304,因 此在用于任何CNB的位节点之间没有冲突。如果对角线之间的间距减小到少于CNB尺寸, 那么冲突将开始出现,如第二示例子矩阵1301所示,仅当2个对角线相邻放置时发生最大 冲突。假定在实际码中在对角线之间一般有合理的间距,并且本文描述的方法对CNB而非 子矩阵进行操作,需要在任何迭代中排除的边缘的数量实际上非常小。在第二示例子矩阵 1301中,需要排除的边缘被圈出1306,并且可见这些仅是涉及相同的CNB内的2个奇偶校 验的位节点的这些点。
[0092] 当处理具有多对角线的子矩阵时,抓取CNB输入数据(由混排系统)将涉及访问 相同的子矩阵两次(每个情况下对于对角线为不同的开始位置)。这可以潜在地将相同的 位节点数据放入处理管道两次。当数据回到RAM(再次从混排系统)时,将会有使得更新被 覆盖的重复的写入地址。将被保留、即不覆盖的该值与上次出现的地址关联;并且这依赖于 当起初读出数据时对子矩阵索引的顺序。通过循环旋转顺序(对角线以该顺序被参考),当 从λRAM拉出数据时(通过混排系统),不同的更新在不同迭代上对于给定层保留。参考回 图13中的第二示例子矩阵1301,有2个对角线1308、1310。在第一迭代中,首先参考对角 线1308,在该情况下,从圈边缘1306导致的更新将被覆盖(并且因此那些边缘将从系统被 有效排除)。在第二迭代中,首先参考另一个对角线1310,并因此从圈边缘1306导致的更 新将实际上覆盖从冲突边缘导致的更新,并且因此这些圈边缘1306将被保留。
[0093]在示例实施方式中,顺序的循环旋转(其中对角线以该顺序被参考)可以使用二 维表来记录对于每行的H矩阵信息,如下所示:
[0094]

【权利要求】
1. 一种可配置的LDPC解码器(500、700、900),被布置为支持具有任何子矩阵尺寸的多 个不同的LDPC码构造,所述LDPC解码器包括: 多个独立可寻址存储器(504、701-704、901-903),被布置为共同存储对于每个位节点 的软判决数据,用于对LDPC码进行解码,并且每个存储器具有宽度,存储器的所述宽度包 括在单个周期可从所述存储器访问的数据的量; 多个校验节点处理系统(304、714、914),被布置为并行操作,并产生对所述软判决数据 的更新; 第一混排系统(508、708、906),被布置为从所述多个独立可寻址存储器将数据传递至 所述多个校验节点处理系统;以及 第二混排系统(510、706、904),被布置为从所述多个校验节点处理系统将对所述软判 决数据的所述更新传递至所述多个独立可寻址存储器, 其中,所述多个独立可寻址存储器的总宽度大于由所述校验节点处理系统并行处理的 校验节点的数量与对于位节点的所述软判决数据的宽度之积。
2. 如权利要求1所述的可配置的LDPC解码器,其中对于所述LDPC码的奇偶校验矩阵 包括多个子矩阵,校验节点块包括由所述校验节点处理系统并行处理的校验节点的组,并 且子矩阵包括多个校验节点块。
3. 如权利要求2所述的可配置的LDPC解码器,其中所述多个独立可寻址存储器包括 M个独立可寻址存储器,每个存储器包括多个存储单元,每个存储单元被布置为存储对于多 个位节点的软判决数据,其中每个子矩阵中的所述位节点分布在X个存储单元之间,其中X 是M的倍数并且M和X是整数。
4. 如权利要求2所述的可配置的LDPC解码器(500、700),其中所述多个独立可寻址存 储器包括第一多个独立可寻址存储器,和至少一个额外的独立可寻址存储器,所述第一多 个独立可寻址存储器中的每个存储器的宽度等于对于位节点的所述软判决数据的宽度与 校验节点块中的校验节点的数量之积。
5. 如权利要求4所述的可配置的LDPC解码器,其中每个额外的独立可寻址存储器的宽 度等于对于位节点的所述软判决数据的宽度与校验节点块中的校验节点的数量之积。
6. 如权利要求2所述的可配置的LDPC解码器(900),其中所述多个独立可寻址存储器 包括M个独立可寻址存储器,所述多个校验节点处理系统包括P个校验节点处理系统,对于 位节点的所述软判决数据的宽度是q,并且每个存储器的宽度大于P*q/M。
7. 如权利要求6所述的可配置的LDPC解码器,其中M = 3或者M = 2。
8. 如权利要求6所述的可配置的LDPC解码器,其中每个存储器的宽度是2*P*q/M。
9. 如权利要求2所述的可配置的LDPC解码器,其中所述第一混排系统被布置为访问多 个存储单元,以获得由所述多个校验节点处理系统处理的数据,并且丢弃任何来自那些存 储单元内的、在单个周期将不会由所述多个校验节点处理系统使用的访问数据。
10. 如权利要求9所述的可配置的LDPC解码器,其中所述第一混排系统包括缺口封闭 硬件(912),被布置为消除由丢弃的数据导致的、从多个存储单元访问的所述数据中的任何 缺口。
11. 如权利要求2所述的可配置的LDPC解码器,其中所述奇偶校验矩阵包括含有循环 移位的单位矩阵的子矩阵,每个单位矩阵称作对角线,并且其中,所述第一混排系统被布置 为将顺序进行循环旋转,其中当从所述多个独立可寻址存储器访问数据时所述对角线以所 述顺序被参考。
12. 如权利要求11所述的可配置的LDPC解码器,其中子矩阵包括D个对角线,所述子 矩阵中的每个对角线具有一指数,并且对于给定迭代L,所述对角线以根据其指数的顺序被 参考,以由L以D为模给出的指数开始。
13. 如之前任一权利要求所述的可配置的LDPC解码器,其中每个校验节点处理系统对 于连接至位节点的每个校验节点使用校验对位节点消息,来产生对于所述位节点的对软判 决数据的更新,并且其中每个校验对位节点消息是使用最小和算法和变量偏移计算的,其 中基于最低值的位对校验消息量级之间的差异来计算所述变量偏移。
14. 如权利要求13所述的可配置的LDPC解码器,其中从使用所述最小和算法计算的初 始位对校验节点消息中减去所述变量偏移。
15. -种LDPC码的解码的方法,包括: 在单个周期从多个独立可寻址存储器访问对于多个位节点的软判决数据(1402),每 个存储器具有宽度,并且存储器的所述宽度包括在单个周期从所述存储器可访问的数据的 量; 将访问的软判决数据提供给多个校验节点处理系统(1404);以及 在所述校验节点处理系统中并行产生对于所述多个位节点的对所述软判决数据的更 新(1406);以及 在所述多个独立可寻址存储器中存储对于所述多个位节点的更新的软判决数据 (1408), 其中,在至少一个周期中,访问对于多个位节点的软判决数据包括:访问总量大于由所 述校验节点处理系统并行处理的校验节点的数量与对于位节点的所述软判决数据的宽度 之积的软判决数据。
16. 如权利要求15所述的方法,其中在所述至少一个周期中,访问总量大于由所述校 验节点处理系统并行处理的校验节点的数量与对于位节点的所述软判决数据的宽度之积 的软判决数据包括: 访问多个存储单元来获得用于由所述多个校验节点处理系统进行处理的数据, 并且所述方法还包括: 在提供所述数据给所述校验节点处理系统之前,丢弃来自那些存储单元内的、将不会 在单个周期由所述多个校验节点处理系统使用的任何访问的数据(1410)。
17. 如权利要求15所述的方法,其中对于所述LDPC码的奇偶校验矩阵包括多个子矩 阵,校验节点块包括由所述校验节点处理系统并行处理的校验节点的组,子矩阵包括多个 校验节点块,并且至少一个校验节点块包括两个或更多个对角线,并且其中在单个周期从 多个独立可寻址存储器访问对于多个位节点的软判决数据包括: 将顺序进行循环旋转,其中当从所述多个独立可寻址存储器访问数据时所述对角线以 所述顺序被参考。
18. 如权利要求17所述的方法,其中子矩阵包括D个对角线,所述子矩阵中的每个对角 线具有一指数,并且对于给定迭代L,对角线以根据其指数的顺序被参考,以由L以D为模给 出的指数开始。
19.如权利要求15-18中任一项所述的方法,其中在所述校验节点处理系统中,并行产 生对于所述多个位节点的所述软判决数据的更新,对于每个位节点包括: 使用最小和算法,计算对于连接至所述位节点的每个校验节点的初始校验对位节点消 息(1414); 从每个初始校验对位节点消息减去变量偏移,以产生对于连接至所述位节点的每个校 验节点的最终校验对位节点消息(1416),其中基于最低值的位对校验节点消息之间的差异 来计算所述变量偏移;以及 基于对于连接至所述校验节点的每个位节点的最终校验对位节点消息,计算对所述软 判决数据的更新(1418)。
【文档编号】H03M13/11GK104426554SQ201410407562
【公开日】2015年3月18日 申请日期:2014年8月19日 优先权日:2013年8月27日
【发明者】C·欧文, A·J·安德森 申请人:想象力科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1