LDPC解码方法和装置转让专利

申请号 : CN201010255866.9

文献号 : CN101895301B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 汤姆·理查森金辉弗拉基米尔·诺维奇科夫

申请人 : 高通股份有限公司

摘要 :

描述了灵活的并且硬件效率较高的LDPC解码器。利用小于用于控制解码过程的码结构的全部并行度的并行度级别实现所述解码器。每个用于描述码结构的相对简单控制码命令能被存储并被执行多次以完成码字解码。使用相同控制码指令组来支持不同的码字长度,但根据码字长度,码被实现的次数不同。在不需要改变储存的码描述信息的情况下,仅通过改变指示码字长度和用于控制解码过程的码提升因子,所述解码器能在对不同长度的码字进行解码之间切换。当解码比最大可支持码字长度短的码字时,一些块存储单元可以不使用。

权利要求 :

1.一种实现可编程LDPC解码器系统的方法,所述方法包括步骤:在第一时间周期期间,将第一组解码指令存储到LDPC解码器的一个模块中,所述第一组解码指令对应于第一LDPC码结构;

操作所述LDPC解码器以使用所述存储的第一组解码指令执行LDPC解码操作;

在第二时间周期期间,存储第二组解码指令,所述第二组解码指令不同于所述第一组解码指令,并且对应于不同于所述第一LDPC码结构的第二LDPC码结构;以及操作所述LDPC解码器以使用所述存储的第二组解码指令执行LDPC解码操作。

2.如权利要求1所述的方法,其中,在不同的时间周期期间使用所述第一组和第二组解码指令来执行解码操作。

3.如权利要求1所述的方法,其中,存储所述第一组解码指令的所述步骤是对接收到一个信号做出的响应,该信号指示对应于第一组码描述信息的码字将被使用。

4.如权利要求1所述的方法,其中,存储第一组解码指令的所述步骤是对接收到一个信号做出的响应,该信号包括的码字是依据对应于所述第一组解码指令的码结构进行编码的。

5.如权利要求1所述的方法,其中,在所述第一和第二时间周期期间,将所述第一和第二组解码指令存储在所述模块中,所述模块是存储设备。

6.如权利要求5所述的方法,其中,多个所述解码指令包括写操作激活/禁止指示符。

7.如权利要求5所述的方法,其中,所述多个解码指令中的每一个包括旋转控制信息。

8.如权利要求7所述的方法,其中,所述多个解码指令中的每一个进一步包括存储器地址信息。

说明书 :

LDPC解码方法和装置

[0001] 本申请是申请日为2005年07月20日,题为“LDPC解码方法和装置”,申请号为200580031678.5的专利申请的分案申请。

技术领域

[0002] 本发明涉及用于执行低密度奇偶校验(LDPC)解码操作的方法和装置,尤其涉及非常适合解码对应于码字的数据的解码方法,例如使用能被表示为乘积提升(product lifting)的码结构生成的码字。

背景技术

[0003] 在通信和数据存储系统中,纠错码是普遍存在的。近来在已知为低密度奇偶校验(LDPC)码的码类中产生了相当大的兴趣。可证明LDPC码是好码。在各种信道上,已经证实LDPC码真正接近于信道容量-由克劳德.香农创建的传输速率上限。
[0004] 通常由称作Tanner图的二分图来表示LDPC码,见图1的示例性图100,其中,一组节点,即变量节点102,对应于码字的比特,并且另一组节点,即约束节点106,有时也称为校验节点,对应于一组定义码的奇偶校验约束。图100中的边104将变量节点102连接到约束节点106。如果变量节点与约束节点由图中的边连接,那么它们被称作邻居。LDPC码的Tanner图表示可以由图2的奇偶校验矩阵表示H 202代替。当且仅当比特序列x 206与H的乘积等于全零时,即:Hx=0,比特序列x 206是一个码字。
[0005] 当且仅当对于每个约束节点,与该约束相邻的比特(经由与这些比特相关联的变量节点)的模二和为零时,即它们包括偶数个一时,那么与变量节点一一相关联的比特序列是码的一个码字。
[0006] 在一些情况下,这些编码比特可能是收缩(punctured)的或已知的。在特定码结构中收缩比特是期望的,并且,在提升(见下面)中,收缩以及已知比特都能用于获得不是提升倍数的块长度。收缩比特以及已知比特可以,并且通常被排除在发射的码字之外。
[0007] 连接到例如变量节点或约束节点的边的数量称作该节点的度数。规则图或码中所有变量节点具有相同的度数,例如j,以及所有约束节点具有相同的度数,例如k。在这种情况下,我们说该码是(j,k)规则码。这些是最初由Gallager(1961)考虑的码。对比“规则”码,非规则码具有不同度数的约束节点和/或变量节点。例如,一些变量节点可以是度数4,其他是度数3以及其他是度数2。
[0008] 尽管非规则码的表示和/或实现更加复杂,但是已经显示当与规则LDPC码比较时,非规则LDPC码能提供较高的错误纠正/检测性能。
[0009] 将理解,通过执行例如错误纠正和检测操作的LDPC解码操作,对结合LDPC编码生成的接收码字进行处理,以生成原始码字的重构形式。然后重构码字经受数据解码以恢复被编码的原始数据。数据解码过程可以是,例如,从重构码字简单地选择比特的指定子集。
[0010] LDPC解码操作通常包括消息传递算法。存在许多潜在有用的消息传递算法,并且这些算法的使用不限于LDPC解码。消息传递算法的原理是:经由连接边,每个节点将它对与所述边相关联比特的置信迭代地传送到它的邻居,下一个迭代的置信依赖于在当前迭代接收的置信。
[0011] 对应于大图结构的大块长度LDPC码在错误弹性方面比较小码提供了许多优点。
[0012] 为了使用较小图实现大图结构,可以将多个置换(permutation)应用到较小图结构的多个副本中,并且这些副本能被连接在一起以生成较大图结构。在解码操作中,通过这里称为置换器,也交换地称为变换器的切换设备实现这样的置换操作,当例如在解码操作情况下的消息这样的元素在存储器与并行执行LDPC操作的向量处理单元之间通过时,切换设备在该元素上应用置换操作。
[0013] 尽管已知各种LDPC解码器实现,但仍需要能减少LDPC解码器硬件实现成本,和/或考虑它能解码的LDPC码的数量和/或能由LDPC解码器解码的码字长度,使LDPC解码器更加灵活的方法和装置。

发明内容

[0014] 本发明针对LDPC解码器,并且,尤其针对能以硬件高效方式实现和/或通过支持不同长度的码字和/或对应于不同码结构的码字的解码,允许自由度的LDPC解码器。
[0015] 在本发明的一些但不是全部实施例中,本发明的LDPC解码器是可编程的。通过改变用于控制解码器操作的码,例如微码,对依据不同码结构生成的码字进行解码是可能的。包括本发明解码器的设备,例如,诸如无线终端的通信设备,能存储描述不同码结构的控制码。基于在通信流中或从用户接收的信息,对应于将被接收并处理的LDPC编码数据的码被标识并从存储器取回。该码然后被装载到解码器并且用于控制解码,其中根据确定为对应于将被解码数据的码结构来控制解码。
[0016] 在一些实施例中,用对应于将由解码器使用来控制解码的单个预先选择的码结构的控制码(例如,微码)来装载解码器。尽管在特定实施例中,控制码可以是固定的,但是根据本发明,相同的控制码能用于解码上至最大码字尺寸的不同尺寸的码字,该最大码字尺寸由可用于支持码字解码的存储器和/或寄存器最大量确定。根据码字尺寸,可以改变存储在解码器中的控制命令被执行的次数。
[0017] 可以被表示为选择码提升因子的码字尺寸指示符能被用于为解码器指定将被解码的码字的尺寸。码字尺寸指示符通常按照最小块尺寸的倍数指示码字尺寸。
[0018] 尽管本发明的各种解码器支持可编程性以允许解码依据不同LDPC码结构和不同长度码字编码的数据,但是本发明的方法和装置还能用于实现对依据单个码结构和单个码字尺寸生成的数据执行LDPC解码操作的解码器。即,即使在可编程性和支持不同尺寸的码字不是重点的情况下,本发明的方法和装置也是有用的。
[0019] 本发明的各个实施例针对使用能表示为LDPC图的码结构编码的数据,LDPC图拥有特定分层结构,在其中,在很大程度上,完整LDPC图看起来是由多个副本组成,例如Z个较小的图组成,其中Z是整数。Z个图副本可以是相同的。为了解释本发明的目的,我们将把较小的图称为投影图,把完整图称为提升图,并把Z称为提升因子。
[0020] 考虑通过1,...,j,...Z来索引这些投影LDPC图。在严格并行图中,图j中的变量节点仅连接到图j中的约束节点。根据本发明,我们取一个向量边,其包括每条来自每个图副本的对应的边,并允许在Z条边内的置换,例如,我们准许置换对应于所述向量边内的边的约束节点,例如,重排序。
[0021] 我们可以把置换限制在标记为Ψ的Z×Z置换矩阵的子集(通常是一个群)空间内。我们假设Ψ中置换的逆还在Ψ中。通常能使用各种准则来选择子集Ψ。上面结构的主要动机之一是要简化解码器和编码器的硬件实现。因此,把Ψ限制为能在硬件中高效地实现的置换是有益的,例如,在交换网中。
[0022] 在美国专利6,633,856中,描述了利用提升结构的LDPC解码器结构。在这个结构中,我们向量化解码过程。特别地,当例如从变量节点侧转到约束节点侧时,我们允许向量边内的Z条边经历在投影图副本之间的置换,或者交换。在对应于Z个并行投影图的向量化消息传递(解码)过程中时,当从向量化图的一侧传递到另一侧时,通过置换向量消息内的消息来实现这个交换。
[0023] 我们简要地回顾示例性的向量化解码器实现。我们假设将用于存储从变量节点到校验节点的消息和/或从校验节点到变量节点的消息的存储器排列成Z×E个m比特存储单元,其中,E是边数,m是一个消息中携带的比特数,并且是大于1的整数。以Z个m比特为单位访问存储器,换句话说,每次访问读出或写入Z个m比特。该Z个m比特对应于在提升图的Z条提升边上的Z个消息。为了方便描述,我们将每组Z个m比特消息与投影图中的对应边相关联。例如,当我们说我们访问投影图中边e的消息时,我们实际访问对应于提升图中Z条边的Z个m比特消息。
[0024] 让我们回忆,在一般的消息传递算法中,在一个节点中的消息更新依赖于来自该节点的邻居的所有消息。假设投影图中的一个节点具有d条边,e1,e2,...ed。消息更新的基于边的实现可以读出ej的消息,应用相应的重排序;并且现在,对于提升图的所有Z个节点,重排序的消息处于适当的相邻群中。在美国专利6,633,856中,解码器结构具有用于节点处理的Z个并行处理单元。在一个或多个阶段,消息经历格式变换以便于高效的实现。例如,在变量节点侧和校验节点侧可能使用不同格式。
[0025] 向量解码器的好处是通过提供结构化并行度,它达到高吞吐量。提升结构使得以简洁方式描述并行处理单元,因为更新的Z个节点对应于投影图中的相同节点以及所有它们的相邻边对应于投影图中的相同边。除了用于指定较大图结构的小(投影)图的描述之外,描述提升(向量)解码器通常涉及与每条边相关联的重排序和节点信息的存储。假设每条边具有不变的描述尺寸,那么对解码器信息的总存储需求正比于投影图中的边数。为了方便描述,让我们称这组解码器描述信息为控制码,有时也称作提升图的解码微码。因此,对于相同的块长度,增大提升因子通常会减小解码微码的尺寸。对于大的块长度,这可以显著减少微码存储器的尺寸。
[0026] 在微码中,一半描述变量节点处理以及另一半描述校验接点处理。解码过程顺序地执行微码的每一半,分别被标记为解码迭代的一半。美国专利6,633,856的实施例包括交替地或同时地执行已知为一个完整迭代的LDPC解码迭代的两个一半(变量节点处理是一半以及校验节点处理是另一半)的结构。成功的解码将通常包括几个完整迭代,例如,直到解码处理产生被修改为收敛到一个已知码字的点的接收码字,可能需要多次迭代。
[0027] 向量化并行处理中的一个元素是由交换网促进的重排序模块。Z个副本间的连接是通过使用重排序模块实现的。在消息重排序后,处理仅包括Z个并行单元,每个并行单元对应于投影图的一个副本。
[0028] 根据该发明实现的具有实现并行度Z的向量(提升)LDPC解码器与具有并行度1的解码器相比,达到Z倍的高数据吞吐量。代价是在硬件复杂度上,它需要大致Z倍的门数。尽管把实现并行度设置为与提升图的提升因子相同是方便的,但不是必需的。在许多情况下,可能是不期望的。
[0029] 例如,让我们假定在描述大图时使用大的提升因子Z,以获得上面提到的节省微码存储器的好处。把实现并行度设置为等于提升因子Z导致了过度的吞吐量。
[0030] 已知硬件复杂度正比于实现并行度但图描述复杂度正比于提升因子Z的事实下,期望当使用以大提升因子Z描述的提升图时,我们能设置实现并行度使得得到的吞吐量匹配需求而不过度。这有益于处理单元复杂度和解码器描述存储。
[0031] 本发明针对使用具有提升因子Z的解码器描述,实现具有实现并行度N的向量LDPC解码器的方法和装置,其中,N是Z的除数。选择实现并行度N来匹配所需的吞吐量,因此使用最小硬件复杂度。
[0032] 如下完成这个。给定对于具有提升因子Z=K×N的提升图的微码,本发明指定具有实现并行度N的解码器,其把每次解码迭代扩展成K次迭代。每次迭代经历一次整个微码,完成由具有实现并行度Z的解码器解码迭代的1/K。因为存在N个并行处理单元,处理时间总量是相同的,这是期望的。本质上,在不改变微码-使用提升因子N描述解码器的情况下,我们把并行处理转移为顺序处理。
[0033] 此外,根据本发明,具有实现并行度N的向量LDPC解码器能够根据描述具有提升因子Z的解码器的相同微码来解码一类具有相同速率不同码字尺寸的LDPC码。特别地,作为实例,假定Z可以因子分解为K1×K2×N表示出,并且投影图码尺寸是n,其中Z、K1、K2、N和n中的每个都是正整数,则解码器可以解码块尺寸为N×n,K2×N×n以及K1×K2×N×n的三种不同码。
[0034] 下面以详细的描述来描述本发明的各种附加特性、好处和优点。

附图说明

[0035] 图1说明了长度为十的示例性规则LDPC码的二分图表示。
[0036] 图2是图1中图示的码的矩阵表示。
[0037] 图3和4说明了把简单的一组微码的执行分解为K步的思想。
[0038] 图5说明了根据本发明的示例性解码器结构。
[0039] 图6说明了使用根据本发明实现的示例性可编程LDPC解码器的设备,例如移动节点。
[0040] 图7包含图7A和图7B的结合,是运行根据本发明的示例性通信设备以执行根据本发明的编码和解码的示例性方法的流程图。

具体实施方式

[0041] 本发明针对LDPC解码器,并且,尤其针对能以硬件高效方式实现的LDPC解码器。本发明的解码方法和装置能实现为可编程设备,和/或能接收码字长度指示符信息并解码不同长度的码字的设备。因此,尽管本发明的解码器能被实现为用于解码指定码字长度的码字的固定设备,但通过支持对不同长度的码字和/或对应于不同码结构的码字的解码,其允许灵活度。
[0042] 2004年 2月 26日 提 交 的、名 为“METHOD AND APPARATUSFOR PERFORMING LOW-DENSITY PARITY-CHECK(LDPC)CODEOPERATIONS USING A MULTI-LEVEL PERMUTATION”的美国专利申请S.N.10/788,115,描述了能用于LDPC码的乘积提升方法,在此被明确地引入作为参考。乘积提升进一步限定在提升中使用的Z×Z置换矩阵群为能被分解成为子群的直接乘积的群。例如,我们假设Ψ是二个群的直接乘积,即,Ψ=Ψ1×Ψ2。Ψ的维数等于Ψi维数的乘积,其中Ψi是Ki×Ki置换矩阵群,其中,Ki是整数。进一步假设群Ψi的维数等于群内矩阵的维数,因此,Z=K1×K2。
[0043] 根据本发明,我们将提升群Ψ限定为乘积提升群。乘积提升能等同地被看作多维提升。假设投影码的尺寸是P,即,具有P个变量节点。能选择用于提升的、尺寸为64的循环群。根据本发明,备选将是尺寸为16的循环群和尺寸为4的循环群的乘积。这个群能由以下表示。使用对(a,b),a=0,...,15并且b=0,...,3,通过可逆映射L=4a+b,考虑索引L=0,...,63。这个乘积群的一个元素是一对(c,d),c=0,...,15并且d=0,...,3。(c,d)对(a,b)的作用是把对(a,b)置换为(a+c模16,d+b模4)。这个群也具有阶
64。然而,得到的提升图能被解释为尺寸为4P的码乘以16、或尺寸为16P的码乘以4、或尺寸为P的码乘以64的提升。在本发明的解码器的环境中,实现由乘积提升提供的优点。通过使用乘积提升增加的值是本发明的特征。由不是乘积的群,例如由循环群的提升,允许任意尺寸的提升,但不提供乘积提升的灵活性。
[0044] 已经引入作为参考的美国专利申请S.N.10/788,115描述了乘积提升图和使用这些图的可能好处。
[0045] 本发明在引入的专利申请中描述的基本原理上扩展。特别地,这个申请描述了使用提升因子Z=K×N实现解码器的方法和装置,以及利用实现并行度N来解码图的相应方法和装置,其中,K、N和Z都是整数,并且N<Z。因此,本发明针对用于实现解码器并行度级别的解码器,例如,与提升因子Z相比,并行地使用较少的校验节点和/或变量节点(例如,N个节点)。
[0046] 我们假设有具有提升因子Z=K×N的提升LDPC图。提升群Ψ将是乘积提升群Ψ=Ψ1×Ψ2,其中K是群Ψ1的维数,并且N是群Ψ2的维数。因此,总的提升是两个较小提升的乘积。
[0047] 向量化并行处理中的元素是由交换网促进的重排序模块。依据与消息相关联的节点,例如,依据将被执行的处理,重排序消息。在Z并行的实施例中,实现的处理单元包括Z个并行单元,每个对应于投影图一个副本中的节点。
[0048] 根据发明,我们使用N个并行单元,而不是Z个并行单元。在处理中,在本发明的解码器中,我们并行地执行与N个节点而不是与Z个节点相关联的处理。在这样的实现中,通过执行微码K次,执行与处理由Z倍乘积提升指定的码相关联的解码,其中每次N个并行单元进行对于投影图的N个副本的消息更新。因此,在解码或解码趟(pass)的第j次执行中,对于投影图的第j个N个副本,消息被更新。回忆Z=N×K。因此,在第K次迭代结束时,一个解码趟应该完成。
[0049] 我们写出原始消息向量d=(d1,d2,...dk),每个dj是N个m比特的向量。给定提升群是乘积提升Ψ=Ψ1×Ψ2,让我们写出包含在每个解码器描述中的重排序信息r=(r1,r2),其中r1是群Ψ1中的重排序量,并且r2是群Ψ2中的重排序量。我们使用标记Ψi(d,r)来表示通过量r对群Ψi中的向量d(Ki个元素)的重排序。也能把重排序认为是位置置换,使得,在最初位置j的元素dj转到在重排序数据中标记为Ψ1,r(j)的新位置。那么能将重排序认为是2级重排序过程。第一级在群Ψ2中对N个(m比特)元素重排序来生成向量d’=(Ψ2(d1,r2),Ψ2(d2,r2),...,Ψ2(dk,r2))。然后第二级在群Ψ1中对K个(N个m比特)元素重排序来生成向量d”=Ψ1(d’,r1)。然后将重排序的数据d”馈入节点处理-1单元。为了方便,让Ψ1,r (j)表示函数Ψ1,r(j)的逆。
[0050] 因此对于第j个N个副本,在最初Z个m比特的向量内,他们的位置是 因此,对于在第j个解码趟中的边,我们读出数据 其中地址是a和j的函数,并且由群Ψ2中的r2量重排序读出的数据,生成Ψ2(d1,r2)。这组消息对应于与处理中N个节点相关的一组正确排序的边消息。
[0051] 为了方便理解,我们考虑一个实例。图3的700示出了用于具有最大提升因子Z=64的示例性提升图的解码过程,其中使用匹配这个提升因子的并行度级别。提升群是循环群4和循环群16的直接乘积。为了解释本发明的目的,我们现在将描述使用并行度级别等于Z=64,用于对应于投影图中的节点v的一组64个变量节点的解码过程;其中节点v具有度数2。对于度数不同于2或校验节点,解码过程将具有相同的特性。来自连接到v的两个边的消息在两个时钟被读出,a=(a0,a1,a2,a3)701,b=(b0,b1,b2,b3)702,每个aj(bj)是16个元素m比特的元素向量711。由箭头710指示时间进度。这两个64元素数据701、702经过由指示为(r1,r2)的重排序信息708控制的64元素置换器703,其中r1表示第一个循环群的置换信息并且r2表示第二个循环群的置换信息。在我们的实例中,数据a 701的重排序信息是(3,4)并且数据b 702的重排序信息是(1,6)。因此,在重排序后,并且 其中di表示循环群16中由量i置换数据d的结果。重排序数据704、705然后经过包含64个并行可配置节点处理单元706的节点处理模块,其中,由每个单元执行的并行处理是相互独立的。因此,在结果数据c=(c0,c1,c2,c3)707中,c0仅依靠a1和b3,c1依靠a2和b0,c2依靠a3和b1,c3依靠a0和b2。
解码器微码命令包括重排序信息r=(r1,r2)708和节点信息709。
[0052] 包含800的图4示出了我们如何按照支持总提升因子Z=64的微码使用实现并行度16(N=16)而不是并行度64(在置换器和并行处理单元中),来实现图3中示出的相同解码过程。在以4(K=4)循环执行微码中完成解码,其中,Z=K×N。根据本发明,根据循环计数器和由用于控制解码的微码指定的重排序控制信息r1来访问的数据。
[0053] 在解码开始处,用由接收信号生成的将被解码的数据装载存储器912,例如,经由数据输入901。这个将被解码的数据可以称为接收码字。由于信道干扰和/或其他可以将错误引入接收信号的因素,将要被解码的接收码字包括将要由解码过程检测和/或纠正的错误。可以以各种方法确定解码完成,例如,施加于码字上的所有约束都被满足,表明已经把接收码字解码为该码支持的码字。这可以描述为接收码字收敛为已知码字。解码码字能从存储器912读出和/或从节点处理模块906直接输出。
[0054] 在第一个循环827,例如,第一个处理迭代,解码器访问数据a1801和b3802;在第二个循环828,解码器访问数据a2803和b0804;在第三个循环829,解码器访问数据a3805和b1806;并且在第四个循环830,解码器访问数据a0807和b2808,其中,ai和bi表示16个m比特元素组,该元素例如为作为解码过程一部分传递的消息。每个消息通常包括多个比特,例如,包含可靠性信息的软值,其在一些消息中可以被传送。由于存在其他变量节点以及用于完成整组微码的循环,因此示例性的4组数据可以不邻接,其中,微码用于执行解码处理,例如,对应于将用于控制解码的码结构的整组变量节点的处理。每个受访数据单元(801、802、803、804、805、806、807、808)的这16个元素经过由重排序信息r2 825控制的16元素置换器810。然后,重排序数据经过包含16个
并行节点处理单元的节点处理模块820,该并行节点处理单元由包含在解码命令中的节点信息826控制。从该命令生成序列c0821、c1822、c2823、c3824。因此,通过使用4倍的处理时间,而具有大约1/4的硬件复杂性,由图4中的结构完成图3中的相同消息传递结果。即,能使用16而不是64并行度等级实现图4的解码器。
[0055] 以上讨论描述了我们如何使用并行度N来使用具有提升因子Z的微码进行解码,其中Z=N×K。
[0056] 我们现在将描述图5中示出的一个示例性LDPC解码器900的实现,其使用并行度级别N实现本发明的K循环解码过程,以达到使用并行度级别Z的效果。
[0057] 图5示出了根据本发明实现的示例性可编程解码器900。可以经由输入953,用不同的码描述信息组装载解码器900。在其他实施例中,在本发明的解码器不是可编程的情况下,解码器900被预先装载了例如单组码描述信息,并且输入953被省略。
[0058] 示例性的LDPC解码器900包括存储器源模块902、N元素可控制置换器模块904、节点处理模块(并行的N节点处理器)906、控制模块910、以及基于码提升的块选择模块908。存储器源模块902包括:(N×K×L)存储器(存储单元)912,其中每个存储单元能储存多个比特;地址生成模块916;以及在一些实施例中的可选解压缩模块914。在作为解码过程的部分在节点间传递的消息以压缩格式储存的实施例中,使用解压缩模块914。在这样的情况下,它们可以被生成并以压缩格式储存,并且然后,在经受进一步处理前经受解压缩。在一些实施例中不需要和不使用压缩,但消息压缩能节省存储器需求,并因此在一些实施例中实现。
[0059] 控制模块910包括所存储解码器描述信息模块942、内环计数器940、以及外环计数器944。所存储解码器描述信息模块942包括例如诸如微码的控制码的信息,其反映用于控制如何生成将要被解码的码字的码的结构,以及因此也用于控制对接收的已编码LDPC码字的解码。控制码通常包括命令序列,这些命令被执行由直到最大可支持提升因子K的选择的码提升因子SK指示的次数,其中,K和SK是整数。
[0060] 在图5的示例性LDPC解码器900中,基于内环计数器940的值,控制模块910确定在例如微码的控制码内的哪一个命令将被执行。内环计数器940在每步增加1,并且在达到最大计数时复位,该最大计数是对应于用于控制解码的所存储码描述的微码内的命令数。
[0061] 在一个示例性解码器实施例中,响应于从内环计数器940接收的控制信号而执行的每行存储微码具有格式:
[0062] op r a nci
[0063] 其中,op指示写操作;
[0064] 其中,r是提供置换的数,例如,消息旋转,信息r用作单独的旋转值r1、r2的压缩表示,并且通常由解码器描述模块942处理以生成置换信息信号r1和r2,或者,r1、r2可以不被组合成单个值r,包含在命令中。
[0065] 其中,存储单元指示符a是当执行指定的操作时,用于提供关于应该访问存储器912中的哪一个存储单元的信息的存储单元指示符,例如一个值;并且
[0066] 其中,nci节点配置信息指示节点处理模块906应该把包含在其中的节点配置为变量节点还是校验节点,和/或多少条边将通过节点和/或与变量节点相关联的各自比特来处理,该nci节点配置信息是收缩的或已知的。
[0067] 在非规则码的情况下,将由节点处理的边数根据在特定时间点、在例如图的码结构中哪个节点正被实现而变化。通过使用节点控制信息,避免了对单独的校验节点和变量节点处理模块的需要,节点处理模块能被重新配置来执行变量节点和校验节点处理操作。
[0068] 然而,具有单独的变量节点和校验节点处理模块的实现是可能的并且在本发明的范围内。在这样的实施例中,节点控制配置信息952将被提供给变量节点和校验节点处理模块,其中每个模块使用与特定模块相关的控制信息。
[0069] 现在将进一步讨论解码器900的操作。所存储解码器描述信息模块942存储用于控制解码的码描述信息。通过内环计数器940驱动,例如,通过输出适当的控制信号以实现命令,所存储解码器描述信息模块942执行解码命令。在N元素置换器模块处理一组数据的每个时钟周期期间,从存储器912读出一组N个元素。当写信号928被激活时,例如,响应于从指示将执行写的存储控制码生成的op信号,数据被写入到存储器。读和写能出现在相同置换器时钟周期中。已知无论写信号928的值,在每个置换器时钟周期期间读操作通常出现,那么当写信号928是激活的时,这将发生。这能通过使用双通道存储器或者以两倍于置换器904的速率操作存储器模块902来允许在一个置换器904时钟周期中出现对存储器912的读和写来完成。通常由公共时钟信号驱动解码器900的每个单元。然而,在一些实施例中,为存储器912提供较高速率的时钟,来允许在置换器904和/或节点处理模块906的周期中同时进行读和写。如上面讨论,命令包括,例如,操作符op,存储单元指示符a,重排序信息r以及节点配置信息nci。
[0070] 操作符op指定写信号928的值,例如,“1”用于指示写激活而“0”指示写禁用。写信号928从所存储解码器描述信息模块942输出并被输入到存储器源模块902。存储单元信息a用于生成第一地址控制信号(a)930,其从模块942提供到存储器源模块902。在这种方式下,存储器源模块902的地址生成模块916接收对应于将被实现的命令的信息a。重排序数r被分成两部分(r1,r2)。在各个实施例中,(r1,r2)每个分别指定群Ψ1和Ψ2中元素的重排序,其中,节点被排列到群Ψ1和Ψ2中以实现作为两个较小提升函数的图提升。控制值r1和r2存储在值r中。在一个示例性实施例中,对于给定实现由r指定r1,从值r确定r1为用N除r时的整除结果,其中N指示节点并行度实现级别。即,r1=r除以N。在这样的实施例中,通过取r/N的模数从值r中确定r2。假设例如N=16。考虑例如,如果r=43并且N=16,那么,r1=(r除以N)=(43除以16)=2,而r2=(r模N)=(43模16)=11。由模块942从r生成的重排序部分r1指定了从所存储解码器描述模块942输出的块重排序信息信号(r1)934。信号r1作为输入提供给码提升块选择模块908,而重排序部分r2确定从模块942输出的重排序控制信号(r2)950的值。信号r2作为输入提供给N元素可控制置换器模块904。
[0071] 包括在被执行命令中的节点配置信息确定从模块942输出的节点配置控制信号952。节点配置信息信号952作为输入提供给包括N个并行排列的可配置节点处理器的节点处理模块906。在许多但不必须是所有实施例中,节点配置信息使得模块906中的N个节点处理器的每一个在相同时间点被以相同方式配置。节点处理器在被配置为变量节点和校验节点之间切换。
[0072] 在一些实施例中,例如,在解码器900是可编程的实施例中,所存储解码器描述信息模块942包括输入953,输入953用于接收码描述信息,例如,反映在生成将要被解码的码字时使用的码结构的解码器控制指令。
[0073] 将由内环计数器940生成的内环计数信号946作为增量控制信号提供给外环计数器944。当内环计数器940达到最大内环计数值时,例如,投影图中的边数,它触发外环计数器944增加1并从0重新开始计数,例如,计数器回绕。外环计数器944确定从1到SK的哪个循环在一个完整迭代中正被执行,其中SK是能从1到K变动的选择提升因子,其中K和SK都是整数。一旦外环计数器944达到通过码提升因子控制信号(SK)948设置的最大值,解码器900就已经完成一个完整迭代,并且外环计数器944复位到零。在提升因子是固定的一些实施例中,省略SK信号输入,并且最大外环计数器值设置为K。
[0074] 基于码提升的块选择模块908从控制模块910的所存储解码器信息模块942接收块排序信息信号(r1)934,从来自所述控制模块910的命令中的重排序数r的r1分量确定块排序信息信号(r1)934。通过外环控制信号936由控制模块910的外环计数器944驱动,并由块排序信息信号(r1)934控制,基于码提升的块选择模块908生成并输出第二地址控制信号(块地址选择信号)932。
[0075] 存储器模块902从控制模块910接收传送操作符和存储单元a的写信号928以及第一地址控制信号(a)930。存储器源模块902的地址生成模块916接收第一地址控制信号(a)930和第二地址控制信号932。地址生成模块916生成由在接收的第一和第二地址控制信号930、932中的信息指定的存储器访问信号920,并将存储器访问信号920转发给存储器912。信号920用作读地址信号。对于N元素可控制置换器904的每个处理周期,从存储器
912读出一次信息。存储器地址信号920由时延954延迟以生成写地址控制信号956。可以由部分节点配置控制信号952控制在956和920之间延迟的周期数。写输出控制信号955可以与信号956相同,并指示解码结果被写入的地址。当写信号928被激活时,写地址控制信号控制节点处理模块906的输出将会被写入到存储器中的位置。
[0076] 如所示,存储器模块902经由数据输入928接收节点处理模块906的输出或通过输入901接收最初的输入。最初的输入可以是例如接收的将被解码的码字或部分码字。
[0077] 存储器模块902包括排列成K×(N×L)个m比特存储单元的存储器912,其中m表示在一个存储消息中的比特数,例如,存储消息为在节点间传送的软值。为了方便,我们把具有K块(N×L)个m比特单元的存储单元标识为块1,...,K。在是第一地址控制信号a930和第二地址控制信号k932的函数的单元访问存储器912。存储器地址生成模块916指示这样的函数。给定(a,k),存储器源模块902读出对应于第k个块中单元a的N元素向量。给定延迟的(a,k)并依靠写信号,存储器源模块902将N元素向量输入写到第k个块中的单元a。通过使用双通道存储器或以双倍速度运行存储器,对于存储器912的读和写操作可以同时发生。在一些实施例中,存储器912可以包括用于值的临时存储的附加存储器。
[0078] 以N元素单元将信息读出和写入到存储器912,其中每个元素包括m比特。一组N单元922被从存储器读出并被提供给N元素可控制置换器模块904的输入。在一些使用消息压缩的实施例中,解压模块914接收从存储器912读出的N个元素918,执行解压缩,并将N个元素输出到可控制置换器,其中,作为解压缩的结果,信号922中N个元素的每一个比最初从存储器读出的元素包括更多比特。在不使用解压缩模块914的实施例中,从存储器912读出的N元素单元918被提供给置换器模块904的输入。支持解压缩性能并允许节点处理模块以压缩格式生成消息的实施例允许使用比包括在解压后的每个消息中的比特数少的m比特存储消息。N元素可控制置换器模块904实现提供到那里的N个消息的重排序。这表示在群Ψ2中的重排序。
[0079] 在从存储器读出的N个元素被提供给节点处理模块906之前,重排序控制信号r2950控制置换器904来执行从存储器读出的N个元素的重排序,重排序控制信号r2950由控制模块910提供并从正执行的模块942的存储命令中生成。
[0080] 将从置换器模块904输出的重排序的N元素向量耦合到N元素节点处理模块906的N元素向量输入924。由来自所述控制模块910的命令中包含的节点配置控制信号952控制节点处理模块906。在说明的实施例中,将节点处理模块906的输出926馈入到存储器模块902和/或一些附加的存储器,例如,一旦解码已经成功完成,用于存储结果的存储器。
[0081] 应该注意,在描述的解码器实施例上的一个变化是使用类似于在一个专利申请中描述的编码器实现的解码器结构,该专利申请是具有2004年7月21日的提交日期、由代理人案号[Flarion-108]在第一页上标识、名为“LDPC ENCODING METHODS AND APPARATUS”的美国专利申请S.N.10/895547,其在此被明确地引入作为参考。根据该发明实现的这样的解码器使用内环重复并包括K个N元素寄存器以保存临时的节点处理结果。对于本领域的技术人员来说将是显然的,这个变化将被认为是在这个专利和发明的范畴内。这样的实现包括许多存储器模块902、置换器模块904以及所存储解码器描述信息模块942的这里讨论的特性。
[0082] 概括地,给定具有提升因子Z=K×N的提升图的微码,并且码字长度=K×N×L,本发明指定具有N个处理单元、执行相同解码器控制码K次的解码器,例如,在用于完成与提升图相关联的一个完整解码迭代的K趟中的每趟期间执行一次,其中,一个提升图对应于较小图的Z个副本,其能用于指定用于控制对将要被解码的码字进行编码的码结构。
[0083] 在本发明的各个实施例中,本发明的解码器能解码对应于共用与投影图相同的速率、但具有不同码字长度的一类码的码字。这通过使用选择的提升因子SK作为执行解码器控制码以控制对应于提升图的一个完整迭代的循环数来实现,其中SK是K的除数。
[0084] 更特别地,在这样的乘积提升中的群Ψ1仍然是两个群的直接乘积Ψ1=Ψ11×Ψ12,并且SK是矩阵Ψ12的维数,并且J是Ψ11的维数,因此,K=J×SK。作为特殊情况,Ψ12可能是单个元素1的群并且Ψ11是Ψ1,因此SK=1并且J=K。无论如何,在提升图中,如果我们忽略提升群内的Ψ11分量,那么我们有具有提升因子Z/J=SK×N的提升图。看这个的不同方式是我们采用原始图并将它投影到提升群Ψ11上,因此,在奇偶校验矩阵中,指示Z×Z置换矩阵的每个非零项现在被投影为Z/J×Z/J置换矩阵。这样,对于投影图仍然保持在较大图中的相同解码过程序列。
[0085] 因此,描述具有提升因子Z的较大图的微码根据本发明也能用作描述具有提升因子Z/J=SK×N的投影图的微码。与关于Z的情况相同的讨论路线,通过在SK个循环中执行微码以完成对应于提升图的一个解码处理迭代,我们能使用具有N个m比特向量操作的相同解码器来解码具有提升因子SK×N的码。
[0086] 如果Ψ1仍然能被写为两个其他群的直接乘积Ψ1=Ψ11×Ψ12,那么存在共用相同微码的不同码字长度例如块长度的其他码。根据本发明,通过指定相应的SK,具有并行度N的相同解码器能解码具有提升因子Z/J′这样的码,其中,J′是Ψ11′的维数。Ψ1中更多的附加结构可以导致更多的不同块长度的码可在相同硬件上解码。因此,通过依据在特定解码实现中使用的群结构来控制SK,解码器能解码具有不同码字长度的码字。
[0087] 在图5的示例性LDPC解码器900中,能通过码提升因子控制信号(SK)948指定码提升因子。信号948被耦合到外环计数器944,确定外环计数器944的最大计数。
[0088] 本发明的方法和装置能用于实现广泛的各种设备,包括,例如,无线终端、基站、数据存储设备以及可能使用数据的编码和/或解码来防止和/或纠正错误的其他类型设备。
[0089] 图6是根据使用本发明方法的LDPC编码器/解码器装置实现的例如移动节点的示例性无线终端(WT)1000的图。示例性WT 1000包括接收机1002、接收机天线1004、可编程LDPC解码器1006、发射机1008、发射机天线1010、可编程LDPC编码器1012、处理器1014、用户I/O设备1015以及存储器1016。可编程LDPC解码器1006(其能使用图5的解码器900实现)、可编程LDPC编码器1012、处理器1014、用户I/O设备1015以及存储器1016经由总线1018耦合到一起,各种元件可以通过总线1018相互交换数据和信息。
[0090] 将接收机1002耦合到接收机天线1004,经由接收机天线1004,WT 1000可以接收来自其他设备的信号,例如,来自基站的编码下行链路信号。接收机1002也耦合到可以根据本发明解码所接收的下行链路信号的可编程LDPC解码器1006。例如,除了LDPC编码数据之外,接收的信号可以包括用于指示用于编码正被接收的数据的LDPC码结构和/或包括在接收数据中的码字的码字长度的信号,例如,控制信息。接收的数据可以包括对应于不同应用的码字。根据本发明,解码器可以从解码对应于第一个码结构和码字长度的数据切换到解码对应于第二个码结构和第二个码字长度的数据。第一个和第二个码字结构可以不同,响应于包含在接收信息中的信息,用例如微码形式的控制码这样的适当码结构信息装载解码器。通常不使用LDPC码来编码控制信息,以便于控制信息的快速检测和解释。第一个和第二个码字长度也可以不同。在一些情况下,第一个和第二个码结构是相同的,但是对应于不同应用的数据的码字长度可以是不同的。在这样的情况下,不需要更新码结构信息来解码不同尺寸的码字,并且,随着接收数据的码字长度改变,仅需要将例如提升因子信息的码字长度信息提供给解码器。可以将码字长度信息指定为正在使用的码结构的码提升因子。如以下将要讨论的,例如控制码的码结构信息能用于控制可编程LDPC解码器,而码字长度信息能用于设置码字长度,用于解码目的。这样的信息经由总线1018能从存储器1016传送到解码器1006。
[0091] 将发射机1008耦合到发射机天线1010,WT 1000可以通过发射机天线1010向基站发射包括已编码的上行链路信号的上行链路信号。将发射机1008耦合到可编程LDPC编码器1012,可编程LDPC编码器1012在传输前编码各种上行链路信号,例如,对应于不同应用的数据信号。给编码器装载对应于不同码结构的不同组码描述信息,例如,诸如微码的不同组控制码。另外,将用于控制由编码器1012生成的码字的长度的码字长度信息,例如,以码提升因子信息的形式,提供给编码器1012。可以从接收的信息中获得选择码字结构和/或码字长度的信息,例如,编码器可以使用与用于解码的相同码字结构和码字长度来编码由应用生成的数据,该相同码字结构和码字长度被用于解码为该生成数据的特定应用接收的数据。因此,可以编程编码器以匹配正由与无线终端相互作用的另一个设备使用的编码结构和码字长度。或者,设备用户可以指定使用特定的码字结构和/或码字长度,或者这样的信息可由通信程序或存储在无线终端中的其他程序指定。
[0092] 经由总线1018,能将码结构信息和/或码字长度信息,例如以一组控制命令的形式,从存储器1016传送到可编程LDPC解码器1006和可编程LDPC编码器1012。例如键盘、扬声器、传声器、显示器等的用户I/O设备1015提供接口以使用户输入数据和信息,例如,将被编码并传送到另一个WT的数据和信息,以及使用户输出和/或显示接收的数据/信息,例如,来自已经被解码的同等节点的接收数据和信息。用户I/O设备1015提供接口,以允许用户选择和/或指定将由可编程LDPC解码器1006和/或可编程LDPC编码器1012使用的与一组数据相关联的码、码长度指示符、和/或多组码描述信息。
[0093] 处理器1014,例如CPU,执行程序并使用存储器1016中的数据/信息以控制无线终端1000的操作并实现本发明的方法。
[0094] 存储器1016包括编码器码描述信息组1026、1028的群1025,以及解码器码描述信息组1030、1032的群1029。每个编码器码描述信息组1026、1028包括反映用于对数据编码的码的码结构的控制码,例如微码。每组信息1026、1028对应不同的码结构。编码器码描述信息能被装载到可编程LDPC编码器1012的编码器控制模块,并例如作为存储编码器描述信息用于控制数据的编码。类似地,每个解码器码描述信息组1030、1032包括反映用于对数据解码的码的码结构的控制码,例如微码。每组解码器码描述信息1030、1032对应不同码结构。解码器码描述信息能被装载到可编程LDPC解码器1006的控制模块,并例如作为所存储解码器描述信息用于控制数据的解码。
[0095] 存储器1016包括通信程序1020、编码器码和码字长度选择程序1022、以及解码器码和码字长度选择程序1024。通信程序1020可以控制与其他无线设备通常的通信和相互作用。当使用LDPC码编码和/或解码数据时,对于给定应用实现的通信程序可以指定将用于特定通信应用的码结构和和/或码字长度。编码器码和码字选择程序1022负责选择将用于特定应用的码结构以及因此相应的编码器码描述信息1026、1028。基于从通信程序1020接收的信息、经由接收机1002或从用户输入接收的信息,来作出这个选择。如果编码器码和码字长度选择程序1022还没有被配置为根据选择的码和码字长度执行编码,那么它负责用选择的码描述信息装载可编程LDPC编码器1012,并负责将例如选择的码提升因子的信息提供给可编程编码器1012。解码器码和码字选择程序1024负责选择码结构以及因此相应的将被用于特定应用的解码器码描述信息1030、1032。基于从通信程序1020接收的信息、经由接收机1002或从用户输入接收的信息,来完成这个选择。如果解码器码和码字长度选择程序1024还没有被配置为根据选择的码和码字长度执行解码,那么它负责用例如控制码的选择的码描述信息装载可编程LDPC解码器1006,并负责将例如选择的码提升因子的信息提供给可编程解码器1006。
[0096] 除了以上讨论的涉及编码和解码的程序和信息外,存储器1016可用于存储接收的解码器信息1038,例如,由指示将用于解码的码结构和码字长度的解码器码和码字长度选择程序1024使用的接收信息。另外,接收的编码器信息1044,例如,由指示将用于编码的码结构和码字长度的编码器码和码字长度选择程序1022使用的接收的信息,可存储在存储器1016中。涉及解码的用户输入信息1036以及涉及编码的用户输入信息1042也可存储在存储器1016中。这些信息与解码器信息1038和编码器信息1044相同或类似,但是其经由用户I/O设备1015而不是经由接收机1002从用户获得。
[0097] 包括图7A和图7B组合的图7是操作根据本发明实现的例如WT1000的示例性通信设备以执行根据本发明的编码和解码的示例性方法的流程图1100。操作在步骤1102开始,在其中WT 1000接通电源并初始化。操作从步骤1102继续进行到步骤1104、1106、以及步骤1108。
[0098] 在步骤1104,操作WT 1000接收编码/解码信息和/或从接收的数据生成控制信息。可以经由通过接收机1002处理的接收信号和/或经由用户I/O设备1015接收的用户输入来接收编码/解码信息,例如,用于可编程LDPC编码器1012和/或可编程LDPC解码器1006的控制信息。另外,处理接收的编码数据以生成控制信息。例如,可以使用不同的码结构信息和/或不同码字长度执行解码的多次尝试。一旦成功解码,生成控制信息,该控制信息在一些实施例中指示将用于解码到来数据以及在一些实施例中编码输出数据的码结构和/或码字长度。经由连接节点A 1110,操作从步骤1104继续进行到步骤1112。在步骤1112,操作WT 1000以确定接收的编码/解码控制信息的类型。基于步骤1112的确定,操作继续进行到步骤1114、1116、1118或1120。
[0099] 如果在步骤1112确定控制信息的类型是编码器码结构信息,则操作继续进行到步骤1114。在步骤1114,操作WT 1000来用一组码描述信息,例如对应于由控制信息指示的码结构信息的控制码,装载编码器1012。操作从步骤1114继续进行到连接节点B 1122。
[0100] 如果在步骤1112确定信息的类型是编码器码字长度信息,则操作继续进行到步骤1116。在步骤1116,操作WT 1000将对应于由控制信息指示的码字长度的码字长度指示符,例如选择的提升因子,提供给编码器1012。操作从步骤1116继续进行到连接节点B1122。
[0101] 如果在步骤1112确定控制信息的类型是解码器码结构信息,则操作继续进行到步骤1118。在步骤1118,操作WT 1000来用一组码描述信息,例如对应于由控制信息指示的码结构的控制码,装载解码器1006。操作从步骤1118继续进行到连接节点B 1122。
[0102] 如果在步骤1112确定信息的类型是解码器码字长度信息,则操作继续进行到步骤1120。在步骤1120,操作WT 1000将对应于指示码字长度的码字长度指示符,例如选择的提升因子,提供给解码器1006。操作从步骤1120继续进行到连接节点B 1122。
[0103] 操作从连接节点B 1122返回到步骤1104,其中,WT 1104等待接收其他编码/解码信息,例如,完成可编程解码器1006和/或可编程编码器1012的配置的信息,和/或改变解码器1006和/或编码器1012的选择的设置的信息,例如,码字长度设置。
[0104] 在步骤1106,操作包括先前配置的可编程解码器1006的WT1000,通过接收机1002接收将被解码的数据,例如,来自WT 1000的同等节点的编码的用户数据。将接收的数据转发给解码器1006。操作从步骤1106继续进行到步骤1124。在步骤1124,依据在解码器1006中的所存储码描述信息和已经提供给解码器的码字长度指示符信息,操作解码器1006以解码数据。操作从步骤1124继续进行到步骤1106,在步骤1106中接收将被解码的附加数据。
[0105] 在步骤1108,操作包括先前配置的可编程编码器1012的WT1000,通过用户I/O设备1015接收将被编码的数据,例如,来自WT1000的用户将要被编码并被传送给WT 1000同等节点的输入数据。将接收的数据转发给编码器1012。操作从步骤1108继续进行到步骤1126。在步骤1126,依据所存储码描述信息和提供给编码器的码字长度指示符信息,操作编码器1012以编码数据。操作从步骤1126继续进行到步骤1108,在步骤1108中接收将被编码的附加数据。
[0106] 在时间上,随着被装载到编码器1012和解码器1006的、对应于例如选择的提升因子这样的码字长度信息的控制信息改变,码字长度将会改变。因此,随着无线终端从对应于第一个设备和/或应用而接收数据切换到对应于第二个设备和/或应用而处理数据,码字长度能,并且在各个实现中将改变。另外,在时间上随着无线终端与不同的设备相互作用和/或实现不同的应用,能改变由编码器1012和/或解码器1006使用的码结构信息。因此,在第一个时间点,编码器和解码器可以处理对应于第一个长度和/或码结构的码字,并且在另一个时间处理对应于第二个长度和/或码结构的码字。在其他的时间点,本发明的可编程LDPC编码器1012和解码器1006可以使用其他的码结构和/或码字长度。各种可支持的码字长度通常将会达到由编码器1012和解码器1006中可用存储器量和/或可用寄存器数量和尺寸确定的最大尺寸。
[0107] 对于能够并且在一些实施例中用作可编程LDPC编码器1012的示例性可编程LDPC编码器的详细讨论,见具有2004年7月21日的提交日期、由代理人案号Flarion-108在第一页上标识、发明者名字为Tom Richardson和Hui Jin、名为“LDPC ENCODING METHODSAND APPARATUS”的美国专利申请S.N.10/895547,在此被明确地引入作为参考。
[0108] 使用上述讨论的程序和存储的编码器/解码器信息,根据例如用户信息或经由接收机1002接收的信息这样的接收信息,为了编码和解码目的,无线终端能并且将在使用不同码结构和码字长度间切换。也可由在特定时间点执行的特定通信程序1020来触发编码器/解码器改变。因此,利用通过码更新的使用而容易被修改的单个一组硬件,本发明在LDPC码的编码和解码中允许很大的灵活性,该码更新对应于不同码结构和/或码字长度控制参数的改变。
[0109] 以下的专利申请和专利提供关于编码和/或解码LDPC码的信息,并在此被明确地引入作为参考。2004年2月26日提交的美国专利申请S.N.10/788,115;2002年4月4日提交的美国专利申请S.N.10/177,264;美国专利申请S.N.10/618,325以及美国专利
6,633,856。
[0110] 关于本发明的方法和装置的众多改变是可能的。例如,可以用硬件和/或软件实现本发明的各种特性。用于实现本发明的模块可以被实现为软件、硬件、或软件及硬件的组合。本发明的一些方面可以实现为处理器执行的程序指令。或者,或另外,本发明的一些方面可以实现为例如,诸如ASIC的集成电路。本发明的装置针对软件、硬件和/或软件与硬件的组合。设想了包括用于控制机器实现根据本发明的一个或多个方法步骤的指令的机器可读媒介,其被考虑在本发明的一些实施例的范围内。
[0111] 因此,本发明尤其针对能用于控制处理器以执行根据本发明的编码和/或解码的软件。本发明的方法和装置能用于OFDM通信系统以及包括CDMA系统的其他类型通信系统。