首页> 中国专利> 生成LDPC码的方法以及采用该LDPC码的装置

生成LDPC码的方法以及采用该LDPC码的装置

摘要

一种用于生成LDPC码(低密度奇偶校验码)的方法,包括步骤:根据预定的编码率和约束长度,确定构成该LDPC码的矩阵的行数和列数;根据预定的列重,将该矩阵划分为多个层;选择一个并行度因子;根据该并行度因子,将该矩阵中的至少一个所述层划分为多个子层和将每一个所述子层划分为多个单元数据块;根据所述列重和预定的行重,确定每个单元数据块中的具有重量的元素的位置,以形成该LDPC码。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-04-27

    未缴年费专利权终止 IPC(主分类):H03M13/11 授权公告日:20111123 终止日期:20150306 申请日:20060306

    专利权的终止

  • 2012-02-22

    专利权的转移 IPC(主分类):H03M13/11 变更前: 变更后: 登记生效日:20120111 申请日:20060306

    专利申请权、专利权的转移

  • 2011-11-23

    授权

    授权

  • 2007-11-07

    实质审查的生效

    实质审查的生效

  • 2007-09-12

    公开

    公开

说明书

技术领域

本发明涉及纠错码技术领域,具体涉及一种用于生成线性纠错码LDPC码(低密度奇偶校验码)的方法以及采用该方法的装置。

技术背景

LDPC(Low Density Parity Check)码是一种具有稀疏校验矩阵的线性纠错码。因其具有逼近“香农限(Shannon Limit)”、系统复杂度低和易于实现的优点,在数字通信领域中,尤其是在采用正交频分复用技术的无线通信领域中,LDPC码已经展露出良好的应用前景。

由于利用LDPC码所形成的校验矩阵,不仅可用于对接收端收到的经过编码的信息进行译码,还可通过特定的转换,例如通过高斯消元而得到生成矩阵,该生成矩阵可用于对来自发送端的信息进行编码。因此,在当前有关LDPC码的研究中,多数的技术方案都是围绕着LDPC码编码器或LDPC码译码器提出的。

在所提出的LDPC码编码器中,例如:一种采用准循环LDPC码(quasi-cyclic LDPC codes)的编码器,由于采用了数字反馈移位寄存器的形式进行编码,因而该LDPC码编码器的复杂度得到降低。然而,当采用由该LDPC码得到的校验矩阵进行译码时,却不能达到期望的吞吐量(throughput)。这里,吞吐量与编码率(code rate)、译码器中设置的迭代次数和采用的时钟频率以及选择的译码电路的并行度有关。

而在所提出的LDPC码译码器中,例如:一种采用并行结构的LDPC码译码器,由于消除了对同一个存储器进行寻址以存储同时计算出的数据而产生的冲突,因而该LDPC码译码器的吞吐量得到了有效的提高。但是,当采用该LDPC码得到的生成矩阵进行编码时,却导致了编码器的设计异常复杂。

因此,如何构造一个合适的LDPC码,既能够发挥LDPC码纠错能力强的优势,又能够兼顾编码的复杂度和译码的吞吐量两个方面的性能,正在成为目前关于LDPC码研究中的热点问题。

发明内容

本发明的一个目的是提供一种用于生成LDPC码的方法,该方法能够根据期望的吞吐量,灵活地设计LDPC码,从而既能够显著地提高译码器的译码速率,又不会增加LDPC码编码器的复杂度。

本发明的又一个目的是提供一种用于LDPC码译码器的方法,该方法充分地利用了译码电路中的并行度,既保证了高速的译码速率,又节省了译码器中硬件资源的消耗。

本发明的再一个目的是提供一种用于LDPC码编码器的方法,该方法在确保达到预期的吞吐量的前提下,进一步降低了LDPC码编码器的复杂度。

按照本发明的一种用于生成LDPC码的方法,包括步骤:根据预定的编码率和约束长度,确定构成该LDPC码的矩阵的行数和列数;根据预定的列重,将该矩阵划分为多个层;选择一个并行度因子;根据该并行度因子,将该矩阵中的至少一个所述层划分为多个子层和将每一个所述子层划分为多个单元数据块;根据所述列重和预定的行重,确定每个单元数据块中的具有重量的元素的位置,以形成该LDPC码。

按照本发明的一种编码方法,该方法采用的编码由一种LDPC码得到的矩阵形成,其中,用于生成该LDPC码的方法,包括步骤:根据预定的编码率和约束长度,确定构成该LDPC码的矩阵的行数和列数;根据预定的列重,将该矩阵划分为多个层;选择一个并行度因子;根据该并行度因子,将该矩阵中的至少一个所述层划分为多个子层和将每一个所述子层划分为多个单元数据块;根据所述列重和预定的行重,确定每个单元数据块中的具有重量的元素的位置,以形成构成该LDPC码的矩阵;该编码方法,还包括步骤:通过执行矩阵运算,以使得构成该LDPC码的矩阵的右上角出现一个对角阵;利用具有该对角阵的LDPC码,对欲发送的数据进行编码。

按照本发明的一种译码方法,该方法采用的译码由一种LDPC码得到的校验矩阵形成,其中,用于生成该LDPC码的方法,包括步骤:根据预定的编码率和约束长度,确定构成该LDPC码的矩阵的行数和列数;根据预定的列重,将该矩阵划分为多个层;选择一个并行度因子;根据该并行度因子,将该矩阵中的至少一个所述层划分为多个子层和将每一个所述子层划分为多个单元数据块;根据所述列重和预定的行重,确定每个单元数据块中的具有重量的元素的位置,以形成构成该LDPC码的矩阵;该译码方法,还包括步骤:利用构成该LDPC码的矩阵,得到一个校验矩阵;采用该校验矩阵,对接收的数据进行译码。

按照本发明的一种编码器,该编码器采用的编码由一种LDPC码得到的矩阵形成,其中,形成该编码的模块具有一个用于生成该LDPC码的模块:该LDPC码生成模块,根据预定的编码率和约束长度,确定构成该LDPC码的矩阵的行数和列数;根据预定的列重,将该矩阵划分为多个层;根据选择的并行度因子,将该矩阵中的至少一个所述层划分为多个子层和将每一个所述子层划分为多个单元数据块;和根据所述列重和预定的行重,确定每个单元数据块中的具有重量的元素的位置,以形成构成该LDPC码的矩阵;该形成编码的模块,对LDPC码生成模块所形成的构成该LDPC码的矩阵执行矩阵运算,以使得构成该LDPC码的矩阵的右上角出现一个对角阵;并利用具有该对角阵的LDPC码,对欲发送的数据进行编码。

按照本发明的一种译码器,该译码器采用的译码由一种LDPC码得到的校验矩阵形成,其中,形成该译码的模块具有一个用于生成该LDPC码的模块:该LDPC码生成模块,根据预定的编码率和约束长度,确定构成该LDPC码的矩阵的行数和列数;根据预定的列重,将该矩阵划分为多个层;根据选择的并行度因子,将该矩阵中的至少一个所述层划分为多个子层和将每一个所述子层划分为多个单元数据块;根据所述列重和预定的行重,确定每个单元数据块中的具有重量的元素的位置,以形成构成该LDPC码的矩阵;该形成译码的模块,利用构成该LDPC码的矩阵,得到一个校验矩阵;采用该校验矩阵,对接收的数据进行译码。

通过参考以下结合附图的说明以及权利要求书中的内容,并且随着对本发明的更全面的理解,本发明的其他目的及效果将变得更加清楚和易于理解。

附图说明

以下将参照附图,通过实施例详细地描述本发明,其中:

图1是按照本发明一个实施例的生成LDPC码的方法的流程图;

图2A是按照本发明一个实施例的生成LDPC码的方法、对构成该LDPC码的矩阵进行分层的示意图;

图2B是按照本发明一个实施例的生成LDPC码的方法、将所分的层进一步划分为子层和单元数据块的示意图;

图3是按照本发明一个实施例的生成LDPC码的方法、确定每个单元数据块中的非零元素的列位置的流程图;

图4是按照本发明一个实施例的生成LDPC码的方法、确定每个单元数据块中的非零元素的行位置的流程图;

图5是按照本发明一个实施例的生成LDPC码的方法、调整单元数据块中的非零元素的行位置的流程图;

图6是按照本发明一个实施例的生成LDPC码的方法、将该LDPC码的矩阵的第一层划分的示意图。

在所有附图中,相同的标号表示相似或相应的特征或功能。

具体实施方式

在本发明的生成LDPC码的方法中,当构造LDPC码的矩阵时,首先,根据译码器电路中可能采用的并行度,将矩阵划分为多个子层和将每个子层划分为多个单元数据块,然后,再根据预定的列重(也称为列权重)和行重(也称为行权重),确定每个单元数据块中的非零元素,即:具有重量(weight)的元素的位置。由于这种构造LDPC码的方式,充分地考虑了译码器电路的并行处理结构,因此,能够有效地提高译码时的吞吐量。

以下,将根据本发明的一个实施例,结合附图详细地描述本发明的上述生成LDPC码的方法。

图1是按照本发明一个实施例的用于生成LDPC码的方法的流程图。如图1所示,首先:根据预定的编码率和约束长度,确定构成LDPC码的矩阵的行数和列数(步骤S10)。对于LDPC码,编码率R通常由下述表达式(1)表示:

        R=1-K/N=1-x/y   ------表达式(1)

其中,N表示矩阵的列数,其数值取决于预定的LDPC码的约束长度;K表示矩阵的行数,其数值取决于预定的编码率和约束长度;x表示预定的该矩阵的列重,即:在该矩阵的每一列中包含的非零元素“1”的个数;y表示预定的该矩阵的行重,即:在该矩阵的每一行中包含的非零元素“1”的个数。

接着,根据列重x,将该矩阵划分为多个层(步骤S20)。考虑到译码速率,在步骤S20中,应当最好使得在每一层的每一列中仅有一个列重量,即:将该矩阵划分为x层,且每一层的每一列中有且仅有一个非零元素。划分为x层后的矩阵可参见附图2A。

之后,根据期望的吞吐量(throughput),选择并行度因子(步骤S30)。由于吞吐量与编码率、译码器中设置的迭代次数和采用的时钟频率有关,因此,在选择并行度因子(parallelization factor)时,应使得并行度因子M满足下述表达式(2):

            M≥(T·L)/(R·F)  ------表达式(2)

其中,T表示期望的吞吐量,L表示译码器中设置的迭代次数,R是编码率,F是译码器中采用的时钟频率。

根据选择的并行度因子M,将上述x层中的至少一个层划分为多个子层,并将每一个子层进一步划分为多个单元数据块(步骤S40)。这里,多个子层包括2个或2个以上的子层。具体的:当Mod(K,x·M)=0时,将每一层,沿着矩阵的行方向,划分为M个子层;并将每一个子层,沿着矩阵的列方向,进一步划分为N/M个单元数据块。

经过上述划分后,在每个子层中,具有K/x/M行和N列的元素,即:每个子层的大小为(K/x/M)·N;而在每个单元数据块中,具有K/x/M行和M列的元素,即:每个单元数据块的大小为(K/x/M)·M。

附图2B示出了其中第二层被划分为M个子层和其中的每个子层被划分为N/M个单元数据块的示意图。

然后,根据预定的列重x和行重y,确定每个单元数据块中的非零元素,即:具有重量的元素的位置,以形成该LDPC码(步骤S50)。考虑到译码速率,应当尽可能使得行重量和列重量均匀地分布在每个单元数据块中。在本发明的优选实施例中,每个单元数据块中仅存在一个具有重量的元素,即:每个单元数据块中,只具有一个非零元素。

以下,将结合附图3和4,描述本发明的确定在每个单元数据块中、非零元素的列位置和行位置。

图3是按照本发明一个实施例的生成LDPC码的方法、确定每个单元数据块中的非零元素的列位置的流程图。如图3所示,首先,将被划分为多个子层的一个层(例如:上述实施例中的被划分为M个子层的第二层)中的单元数据块,沿着矩阵的列方向,划分为多个组,每一组中包括分别处于不同子层中的一个单元数据块(步骤S110)。

例如,假定第二层被划分成为M个子层和N/M个单元数据块,则沿着矩阵的列方向,将:

处于第一个子层中的第1个单元数据块、处于第二个子层中的第1个单元数据块....与处于第M个子层中的第1个单元数据块一起构成第一组;

处于第一个子层中的第2个单元数据块、处于第二个子层中的第2个单元数据块....与处于第M个子层中的第2个单元数据块一起构成第二组;

处于第一个子层中的第N/M个单元数据块、处于第二个子层中的第N/M个单元数据块....与处于第M个子层中的第N/M个单元数据块一起构成第N/M组。

这种沿着矩阵的列方向进行划分而形成的多个组,其中的每个组,在本发明中,可被称为一个列标志组。每个列标志组中包括用于标识处于不同子层中的单元数据块的多个列标志(identifier)。

经过上述划分而形成的多个列标志组,可用二维数组a[i][j]表示,其中,i用于标识单元数据块,在本实施例中取值范围为i∈[1...N/M],j用于标识子层,在本实施例中取值范围为j∈[1...M]。

这样,a[1][j]、a[2][j]、a[3][j]...a[N/M][j]分别表示不同的列标志组;在每个列标志组中的各个列标志,即:i值相同而j值不同的数组,表示处于不同子层中的单元数据块。

按照上述定义,在该实施例中,处于不同子层中的第1个单元数据块构成列标志组a[1][j],处于不同子层中的第2个单元数据块构成列标志组a[2][j]...处于不同子层中的第N/M个单元数据块构成列标志组a[N/M][j],即:总共N/M个列标志组。由于j的取值范围是j∈[1...M],因此,每个列标志组中包括M个列标志。

从而,例如:列标志组a[2][j],表示由a[2][1]、a[2][2]、a[2][3]...a[2][M]共M个列标志组成,其中的每个列标志表示分别处于第一个子层、第二个子层、第三个子层...第M个子层中的第二个数据块。

在按照上述方式,将多个单元数据块、沿着所述矩阵的列方向、划分为多个列标志组后,根据并行度因子M,生成M个列位置指示(步骤S120)。每个列位置指示(indicator),对应于在一个单元数据块中非零元素的列位置。

由于在一个单元数据块中,共有1,2...M列,因此,在步骤S120中所生成的M个列位置指示,分别取数值1,2...M,以用于标识在一个单元数据块中非零元素的列位置。

然后,将多个列位置指示分别分配给每个列标志组中的各个列标志,以得到在每个单元数据块中的非零元素的列位置(步骤S130)。即:将多个列位置指示1,2...M,分别分配给列标志组a[1][j]、a[2][j]...a[N/M][j]中的各个列标志,以得到在每个单元数据块中的非零元素的列位置。

由于不同的列位置指示是对应于单元数据块中不同的列位置,并且每个列标志组中的每个列标志分别标识的是处于不同子层中的单元数据块,因此,在步骤S130中,在将不同的列位置指示分配给不同的列标志时,在同一个列标志组中的处于不同子层中的单元数据块,将分配得到不同的列位置;从而,在步骤S130中,所述分配无论是采取随机的方式,还是某一特定的方式,都能够满足预定的列重以及本实施例前述中“每一层的每一列中仅有一个列重量”和“每个单元数据块中仅存在一个具有重量的元素”的特定方案。

在确定了每个单元数据块中的非零元素的列位置后,以下将结合附图4,描述按照本发明一个实施例的生成LDPC码的方法、确定每个单元数据块中的非零元素的行位置的过程。

如图4所示,首先,将每一层中的单元数据块,沿着所述矩阵的行方向,划分为多个组,每一组中包括处于同一子层中的单元数据块(步骤S210)。

仍旧以第二层为例。假定处于第一个子层中的单元数据块构成第一组、处于第二个子层中的单元数据块构成第二组...处于第M个子层中的单元数据块构成第M组,则在步骤S210中,将得到M个组。

这种沿着矩阵的行方向进行划分而形成的多个组,其中的每个组,在本发明中,可被称为一个行标志组。每个行标志组中包括用于标识处于同一子层中的单元数据块的多个行标志(identifier)。

经过上述划分而形成的多个行标志组,可用二维数组b[i][j]表示,其中,i用于标识子层,在本实施例中取值范围为i∈[1...M],j用于标识单元数据块,在本实施例中取值范围为j∈[1...N/M]。

这样,b[1][j]、b[2][j]、...b[M][j]分别表示不同的行标志组;在每个行标志组中的各个行标志,即:i值相同而j值不同的数组,表示处于同一子层中的单元数据块。

按照上述定义,在该实施例中,处于第一个子层中的第1,2...N/M共计N/M个单元数据块构成行标志组b[1][j],处于第二个子层中的第1,2...N/M共计N/M个单元数据块构成行标志组b[2][j],...,处于第M个子层中的第1,2...N/M共计N/M个单元数据块构成行标志组b[M][j],即:总共M个行标志组。由于j的取值范围是j∈[1...N/M],因此,每个行标志组中包括N/M个行标志。

从而,例如:行标志组b[2][j],表示由b[2][1]、b[2][2]、...b[2][N/M]共计N/M个行标志组成,其中的每个行标志表示处于第二个子层中的第1个单元数据块、第2个单元数据块...第N/M个数据块。

在按照上述方式,将多个单元数据块、沿着所述矩阵的行方向、划分为多个行标志组后,根据并行度因子M和列数N,生成N/M个整数(步骤S220),若用z表示所生成的整数,则z的数值分别为1,2...N/M。

然后,根据每个单元数据块中的行数(在本实施例中,每个单元数据块中的行数为K/x/M),对所生成的整数z进行模数运算,以转换成为与一个行标志组中的各个行标志相对应的行位置指示(步骤S230)。每个行位置指示(indicator),对应于在一个单元数据块中非零元素的行位置。

例如:与第n个子层的行标志组b[n][j]中的行标志相对应的行位置指示,可以由下述的表达式(3)计算得到:

       b[n][j]=Mod(z,K/x/M)+1    ------表达式(3)

可以看到,由于整数z的最大数值为N/M,则按照表达式(3),将得到(N/M)/(K/x/M)组、每组数值都是1,2...K/x/M的行位置指示。

然后,将通过表达式(3)得到的行位置指示,分别分配给每个行标志组中的各个行标志,以得到在每个单元数据块中的非零元素的行位置(步骤S240)。

即:将上述(N/M)/(K/x/M)组、每组数值都是1,2...K/x/M的行位置指示,分别分配给行标志组b[1][j]、b[2][j]...b[M][j]中的各个行标志,以得到在每个单元数据块中的非零元素的行位置。

由于每个行标志组中的每个行标志分别标识的是处于同一个子层中的不同的单元数据块,因此,在步骤S240中,在将不同的行位置指示分配给不同的行标志时,满足本实施例前述中“每个单元数据块中仅存在一个具有重量的元素”的特定方案;并且,由前述表达式(1)可知K/N=x/y,上述产生的(N/M)/(K/x/M)组的行位置指示,即为y组行位置指示,因此,在步骤S240中,所述分配无论是采取随机的方式,还是某一特定的方式,都能够符合预定的行重。

上述结合附图3和4描述的确定在每个单元数据块中、非零元素的列位置和行位置的过程,仅是一种较佳的实施例。在构造LDPC矩阵时,根据预定的行重和列重,还可以构造出其他的矩阵,例如:不一定限制每个层中的每一列仅有一个列重量,也不一定限制每个单元数据块中仅有一个具有重量的元素。

而且,按照该较佳实施例中的“每一层的每一列中仅有一个列重量”和“每个单元数据块中仅存在一个具有重量的元素”的特定方案,也可以采取不同于上述结合附图3和4所述的方式,来确定每个单元数据块中、非零元素的列位置和行位置。

为了进一步描述本发明的上述用于生成LDPC码的方法,以下,将结合具体参数,描述按照本发明的上述较佳实施例而构造的LDPC矩阵。其中,在选定参数时,若矩阵列数N与并行度因子M和行重y满足下述表达式(4),则能够得到较好的构造结果:

        N≥M·y·6    ------表达式(4)

所设置的具体参数,包括:并行度因子M=2,矩阵列数N=72,行数K=36,列重x=3,行重y=6,编码率R=0.5。

首先,根据列重x=3,将该矩阵划分为3个层,并按照上述较佳实施例,设定在每个层中的每一列里仅有1个非零元素;接着,根据并行度因子M=2,沿着矩阵的行方向,将矩阵中的例如第二层划分为2个子层;又根据并行度因子M=2,沿着矩阵的列方向,将第二层中的每个子层划分为36个单元数据块(36=N/M=72/2)。

从而,在第二层中,存在2个子层,且每个子层的大小为6行和72列;每个子层,包括36个单元数据块,且每个数据块中的大小为6行和2列。

然后,确定在第二层中的每个单元数据块内、非零元素的列位置和行位置。

(1)确定在每个单元数据块中的非零元素的列位置

首先,根据并行度因子M=2,沿着矩阵的列方向,将第二层中的单元数据块划分成36个列标志组,每个列标志组中包括2个列标志。即:按照上述较佳实施例,对于列标志组a[i][j],i的取值范围为1到36,j的取值是1和2;且列标志a[1][1]和a[1][2]构成一个列标志组,列标志a[2][1]和a[2][2]构成一个列标志组...列标志a[36][1]和a[36][2]构成一个列标志组,共计36个列标志组。

接着,根据并行度因子M=2,生成2个列位置指示,且这两个列位置指示的取值分别为1和2,以分别对应于每个单元数据块中的第1列和第2列。

将这两个列标志指示,随机地分配给每个列标志组中的2个列标志,从而得到在每个单元数据块中的非零元素的列位置。

(2)确定在每个单元数据块中的非零元素的行位置

首先,根据并行度因子M=2,沿着矩阵的行方向,将第二层中的单元数据块划分成2个行标志组,每个行标志组中包括36个行标志。即:按照上述较佳实施例,对于行标志组b[i][j],i的取值为1和2,j的取值范围是1到36;且行标志b[1][1]、b[1][2]...b[1][36]构成一个行标志组,行标志b[2][1]、b[2][2]...b[2][36]构成一个行标志组,共计2个行标志组。

接着,根据并行度因子M=2和列数N=72,生成36个整数(36=N/M),用z表示这36个整数,则z的数值分别为1,2...36。

然后,根据每个单元数据块中的行数6,利用上述表达式(3),对所生成的整数z进行模数运算,以转换成为与一个行标志组中的各个行标志相对应的行位置指示。

对于第1个子层,由b[n][1]=Mod(z,6)+1,将得到6组,每组数值都是1到6的共36个行位置指示。其中,每组中的数值1到6,分别对应于每个单元数据块中的第1行到第6行。

将得到的36个行位置指示,随机分配给每个行标志组中的各个行标志,从而得到在每个单元数据块中的非零元素的行位置。

如上述较佳实施例中所述,按照这种方式构造的矩阵,不仅符合预定的行重为6、列重为3,而且还满足“每一层的每一列中仅有一个列重量”和“每个单元数据块中仅存在一个具有重量的元素”的较佳实施例的设计方案。

在上述确定了在每个单元数据块中、非零元素的列位置和行位置后,为了便于译码电路中的硬件的实现以及提高译码时的时钟速度和节省译码中占用的硬件资源,还可以进一步调整单元数据块中非零元素的行位置,以使得沿着矩阵的行方向的相邻单元数据块中的非零元素处于不同的行位置。

以下,将结合附图5,描述按照本发明一个实施例的调整单元数据块中的非零元素的行位置的过程。

如图5所示,以第n个子层为例。首先,比较该子层中第1个单元数据块中非零元素与第2个单元数据块中非零元素,是否位于同一行中(步骤S310)。

若第1个和第2个单元数据块中非零元素位于同一行中,则检查在同一子层中的与第2个单元数据块不相邻的另一个单元数据块(假定为第m个单元数据块)中的非零元素的行位置(步骤S320)。

若第m个单元数据块中的非零元素的行位置不同于第2个单元数据块中的非零元素的行位置,则将第2个单元数据块中的非零元素的行位置与第m个单元数据块中的非零元素的行位置进行交换(步骤S330)。

即:假定初始时在第1和第2个单元数据块中的非零元素均在第1行位置,在第m个单元数据块中的非零元素在第3行位置,则进行该行位置交换后,第2个单元数据块中的非零元素在第3行位置,在第m个单元数据块中的非零元素在第1行位置。

而若第m个单元数据块中的非零元素与第2个单元数据块中的非零元素也处于同一行中,则再检查另一个单元数据块(步骤S340)、例如第m+1个单元数据块中的非零元素的行位置,以判断该单元数据块中的非零元素的行位置是否不同于第2个单元数据块中的非零元素的行位置,以与第2个单元数据块中的非零元素的行位置进行交换。

在确定第1个和第2个单元数据块中非零元素位于不同行位置之后,再接着判断第2个和第3个单元数据块、以及同一子层中后续的处于相邻位置的两个单元数据块中非零元素是否位于同一行中,从而使得经过上述调整过程,在每个子层中,相邻单元数据块中的非零元素均处于不同的行位置(步骤S350)。

在本发明的优选实施例中,为了进一步降低了LDPC码编码器的复杂度,在上述构造LDPC矩阵的过程中,还可以将该矩阵的第一层按照下述方式构造。

具体的,首先,根据预定的行重,将第一层沿着矩阵的列方向,划分为相应的多个数据块。在本发明的实施例中,行重为y,因此,将分成y个数据块。

对于本实施例中的K行和N列的矩阵而言,根据列重为x,则每个数据块的大小为K/x行和N/y列。

按照“每一层的每一列中仅有一个列重量”的特定方案,在每个数据块中,即:K/x行和N/y列的子矩阵中,沿着该子矩阵的对角线设置非零元素,从而构造出如附图6所示的LDPC矩阵的第一层中有y个子矩阵、且在每个子矩阵的对角线上布置有非零元素“1”的示意图。

在通过上述方法构造了本发明的LDPC码后,由该LDPC码,可得到一个校验矩阵,该校验矩阵用于在译码器中进行译码;而对由该LDPC码形成的矩阵,采用RU算法或递归算法进行处理,可以得到用于LDPC码编码器中使用的编码。其中,该RU算法,在有关信息理论的IEEE学报的第2001年、第47卷的第657-670页、作者为T.Richardson和R.Urbanke的题目为“低密度奇偶校验码的有效编码”的文章中有详细记载。

在本发明的优选实施例中,在设计LDPC码编码器时,采用了基于上述方式而得到的LDPC码、并对构成该LDPC的矩阵进行常规矩阵运算的方式,例如:可采用让矩阵中的行与行的位置互换、或列与列的位置互换、以及将行进行模2相加等运算方式,使得该LDPC矩阵的右上角出现一个对角阵,并将得到的具有该对角阵的LDPC码作为LDPC编码器中使用的编码,从而进一步简化LDPC码编码器的设计。在该对角阵中包含的行和列越多,LDPC码编码器的实现复杂度越低。

在发送端一侧,利用具有该对角阵的LDPC码,对欲发送的数据进行编码,并将编码后的数据发送出去。

而在接收端一侧,利用该LDPC码形成的校验矩阵,在译码器译码过程中,将所接收到的该编码后的数据进行解码,以得到发送端所发送的数据。

有益效果:

按照本发明的用于生成LDPC码的方法,由于在构造该LDPC矩阵时,采用了根据译码器电路中可能采用的并行度、将矩阵进一步划分为子层和将每个子层又进一步划分为单元数据块的方式,然后按照预定的行重和列重,通过确定每个单元数据块中的非零元素的位置而形成LDPC矩阵。因此,采用该LDPC矩阵,不仅可以灵活地设计用于译码的校验矩阵,而且能够在译码时取得高速的译码速率以达到期望的吞吐量;此外,这种将LDPC矩阵划分为单元数据块的方式,在采用该LDPC码进行编码时,亦不会增加编码器的复杂度。

并且,按照本发明的用于生成LDPC码的方法,在确定每个单元数据块中的非零元素的位置时,通过将在每个子层中的相邻单元数据块里的非零元素调整为不同的行位置,还能够在用于译码时,提高译码器时钟速度,节省译码器中硬件资源的消耗。

此外,按照本发明的用于生成LDPC码的方法,通过将LDPC矩阵的右上角生成对角阵,能够进一步降低LDPC码编码器的复杂度。

由于LDPC码所体现的优秀的纠错功能(编码增益),因此,基于本发明生成的LDPC码而得到的编码和译码,应当不仅仅局限在无线通信领域中,在有线通信网络、数字广播电视系统、包括硬盘信号处理电路在内的存储媒体系统等诸多技术领域,都有良好的应用前景,

本领域技术人员应当理解,对上述本发明所公开的生成LDPC码的方法,还可以在不脱离本发明内容的基础上做出各种改进。因此,本发明的保护范围应当由所附的权利要求书的内容确定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号