一种低密度校验码高速编码方法

文档序号:7612758阅读:226来源:国知局
专利名称:一种低密度校验码高速编码方法
技术领域
本发明属于通信领域,它特别涉及通信中的信道LDPC编码器设计和工程实现技术。
背景技术
低密度校验码(简称LDPC)是通信中一种受到广泛关注的纠错编码方式。1962年,Gallager提出了基于稀疏校验矩阵的线性码,即低密度校验码(Low-Density Parity-CheckCode,LDPC),证明了LDPC是一种好码。但是尽管它有好的性能,在Turbo码出现之前,LDPC码并未引起足够的重视。直到最近,由于具有接近香农限的性能,LDPC码才应用在AWGN和瑞利衰落信道中。已经证明,当LDPC码的码长很大时,LDPC码大大超出了卷积编码的性能。但是随着码长的增大,LDPC编码器的复杂度也会大幅提高,开销大幅增加,难于工程实现,极大地限制了LDPC码的应用。

发明内容
本发明的目的是提供一种高速LDPC编码的实现方法,按照本发明方法可以实现采用数据源矩阵和生成矩阵相乘的编码方法进行编码的LDPC编码器,使其具有运算速度快,系统开销低,性能优良等特点。
适应任意LDPC码的编码方法可以采用数据源矩阵和生成矩阵相乘的方法实现。
以矩阵A代表数据源矩阵,B代表生成矩阵。矩阵A中存放待编码数据,矩阵B中存放生成矩阵。则适应任意LDPC码的编码方法可表达为结果矩阵C=A×B。
不失一般性,以矩阵C=A×B说明本发明中矩阵乘法的实现方法,其中矩阵A的维数为m×(n×a)(其中,m为矩阵A的行数,(n×a)为矩阵A的列数,若矩阵A的列数不是n与a的乘积,那么可以用元素全为0的列补齐,使得矩阵A的列数为n与a的乘积);矩阵B的维数为(n×a)×(c×b)(其中,(n×a)为矩阵B的行数,(c×b)为矩阵B的列数。若矩阵B的行数不是n与a的乘积,那么可以用元素全为0的行补齐,使得矩阵B的行数为n与a的乘积;若矩阵B的列数不是c与b的乘积,同样用元素全为0的列补齐,使得矩阵B的列数为c与b的乘积)。(注m、n、a、b、c均为大于零的正整数)图1和图2分别描述了矩阵A和矩阵B的维数。随着矩阵维数的增大,矩阵乘法的数据运算量也会成倍的增加。
本发明提供了一种高速LDPC编码的实现方法,其特征是采用下面的步骤对数据源矩阵和生成矩阵进行划分。
下面结合附图具体阐述对数据源矩阵和生成矩阵的划分步骤步骤1对数据源矩阵A的划分图3对数据源矩阵A的划分方法进行了描述。具体步骤为将矩阵A按列划分为n个子矩阵(若矩阵A的列数不为n的整数倍,可以用元素全为0的列补齐,使得矩阵A的列数为n的整数倍,然后将补0后的矩阵A按列划分为n个子矩阵),每个子矩阵的列数为a,行数仍为m,这样矩阵A就被划分成n个维数为m×a的子矩阵。
步骤2对生成矩阵B的第一次划分图4对生成矩阵B的第一次划分方法进行了描述。具体步骤为将矩阵B按列划分为c个子矩阵(若矩阵B的列数不为c的整数倍,可以用元素全为0的列补齐,使得矩阵B的列数为c的整数倍,然后将补0后的矩阵B按列划分为c个子矩阵),每个子矩阵列数为b,行数仍为(n×a),这样矩阵B就被划分成c个维数为(n×a)×b的子矩阵。
在完成对矩阵B的第一次划分后,继续对矩阵B的每一个子矩阵B1,B2......Br,......Bc进行进一步的划分。
步骤3对生成矩阵B的任意一个子矩阵Br的第二次划分图5对矩阵B的某一个子矩阵Br的进一步划分进行了描述。具体步骤为保持矩阵Br的列不变,将矩阵Br按行划分为n个子矩阵(若矩阵Br的行数不为n的整数倍,可以用元素全为0的行补齐,使得矩阵Br的行数为n的整数倍,然后将补0后的矩阵Br按行划分为n个子矩阵),每个子矩阵的行数为a,列数仍为b,这样矩阵Br就被划分成n个维数为(a×b)的子矩阵。同理,就可以完成对矩阵B的所有子矩阵B1,B2......Br,......Bc的划分。经过上述对矩阵B的两次划分,矩阵B就被划分为n×c个维数为(a×b)的子矩阵。
经过上述对数据源矩阵A和生成矩阵B的划分步骤后,采用数据源矩阵和生成矩阵相乘的LDPC编码方法,即数据源矩阵A和生成矩阵B的乘法就转换为矩阵A的n个维数为(m×a)的子矩阵与矩阵B的n×c个维数为(a×b)的子矩阵的乘法。
这样,基于上述对数据源矩阵A和生成矩阵B的划分步骤,数据源矩阵A与生成矩阵B的乘法运算可以采用下面的步骤步骤4基于步骤2对生成矩阵B的第一次划分结果,将A×B的运算分解为A与B的各子矩阵B1、B2、B3...Br...Bc分别相乘的乘法运算。
A×B=[A×B1,A×B2,A×B3,...,A×Br,...,A×Bc] ...①步骤5基于步骤1对数据源矩阵A的划分结果和步骤3对生成矩阵B的第二次划分结果,将A与B的各子矩阵B1、B2、B3...Br...Bc的乘法运算,即A×Br(1≤r≤c)的运算分解为A的各子矩阵A1、A2、A3...An与Br的各子矩阵Br1、Br2、Br3、...Brn对应相乘并进行累加的运算。
图6对A×Br的计算步骤进行了描述。具体步骤为用生成矩阵A的第一个子矩阵A1与矩阵Br中的第一个子矩阵Br1对应相乘,计算完成后保留结果;继续用矩阵A的第二个子矩阵A2与Br矩阵中第二个子矩阵Br2对应相乘,在计算完成后保留结果;然后按照前述方法,用矩阵A的第3个、第4个......第i个、......第n个子矩阵分别与Br矩阵的第3个、第4个......第i个、......第n个子矩阵对应相乘,并分别保留结果,将各次结果相加即得到矩阵A×Br的相乘结果。
上述过程,如下所示A×Br=[Σi=1nAi×Bri]---(1≤r≤c)]]>...②步骤6根据步骤5的计算方法,将得到的A×Br(1≤r≤c)的结果代入①式右端,即可得到矩阵A×B结果,也就是LDPC的码字。
经过以上步骤,就可以实现LDPC编码。
本发明的实质是对于采用数据源矩阵和生成矩阵相乘的LDPC编码方法,经过对数据源矩阵A和生成矩阵B的划分步骤后,即数据源矩阵A和生成矩阵B的乘法就转换为矩阵A的n个维数为(m×a)的子矩阵与矩阵B的n×c个维数为(a×b)的子矩阵的乘法。
本发明的创新之处在于本发明是通过对数据源矩阵和生成矩阵的划分,将数据源矩阵A和生成矩阵B的乘法运算转换为矩阵A的n个维数为(m×a)的子矩阵与矩阵B的n×c个维数为(a×b)的子矩阵的乘法运算。通过这种方案将大数据量分配到各子矩阵中,由此实现的LDPC编码器,具有运算速度快,系统开销低,性能优良等特点。它比传统的LDPC编码方法具有更好的工程可实现性,且编码速度更快。
本发明的优点本发明提出了一种适应任意LDPC码的编码方法,它相比较于以前提出的LDPC码的编码方法有以下的优点
1).该方案有效地解决了数据存储以及数据吞吐量的难题,使得LDPC编码器在工程上易于实现,提高了LDPC码在实际工程中的应用性;2).由于过对数据源矩阵和生成矩阵的划分,合理地将大数据量分配到各子矩阵中,避免了对大数据量的同时计算,有效地降低了系统开销,提高LDPC码编码的可实现性;3).由于采用并行的编码方式,本发明有效提升了LDPC编码的速度。
本发明通过对两个矩阵进行划分,避免了对大数据量的同时计算,合理地将大数据量分配到各子矩阵中,提高了LDPC编码在工程应用中的可实现性。


图1矩阵A的结构示意图其中m表示矩阵A的行数,(n×a)表示矩阵A的列数(若矩阵A的列数不是a的整数倍,那么可以用元素全为0的列补齐,使得矩阵A的列数为a的整数倍),m×(n×a)表示数据源矩阵A的维数。
图2矩阵B的结构示意图其中(n×a)表示矩阵B的行数,(c×b)表示矩阵B的列数(若矩阵B的行数不是a的整数倍,那么可以用元素全为0的行补齐,使得矩阵B的行数为a的整数倍;若矩阵B的列数不是b的整数倍,同样用元素全为0的列补齐,使得矩阵B的列数为b的整数倍),(n×a)×(c×b)表示生成矩阵B的维数。
图3矩阵A的划分结果示意图其中A1、A2......A(n-1)、An分别表示矩阵A的n个子矩阵,m表示矩阵A及它的n个子矩阵的行数,a表示矩阵A的n个子矩阵的列数,(n×a)表示矩阵A的列数,(m×a)表示数据源矩阵A的n个子矩阵A1、A2......A(n-1)、An的维数,m×(n×a)表示数据源矩阵A的维数。
图4矩阵B的第一次的划分结果示意图其中,B1、B2、B3...Br...Bc表示矩阵B第一次划分后的c个子矩阵;(n×a)表示矩阵B及其c个子矩阵的行数,b表示矩阵B的各子矩阵的列数,(c×b)表示矩阵B的列数,(n×a)×b表示生成矩阵B的c个子矩阵B1、B2、B3...Bc的维数,(n×a)×(c×b)表示生成矩阵B的维数。
图5矩阵B的子矩阵Br的第二次划分结果示意图其中,Br1、Br2......Brn分别表示矩阵Br的n个子矩阵,a表示Br的n个子矩阵Br1、Br2......Brn的行数,b表示Br的n个子矩阵Br1、Br2......Brn的列数,(n×a)表示矩阵Br的行数,(n×a)×b表示矩阵Br的维数,(a×b)表示矩阵Br的n个子矩阵Br1、Br2......Brn的维数。
图6A×Br的计算方法示意7本发明流程框图
具体实施例方式B3G TDD方式下行链路设计中的数字基带发送部分使用的LDPC编码器可以采用本发明中LDPC的编码方法。设计中,采用SDRAM存储数据源矩阵A(维数为64×(32×76))和生成矩阵B(维数为(32×76)×(8×483)),配合Xilinx公司的Vertex II Pro芯片Xc2vp70实现本发明中的LDPC编码器。经过验证,当系统时钟工作在80MHZ时,该LDPC编码器可以在一个TTI=40ms的时间内完成对1664个码块的编码(每个码块的长度为2404),系统数据吞吐量达到了100Mbps。
因此,本发明LDPC的编码方法,可以通过使用SDRAM等存储器存储数据源矩阵和生成矩阵,配合FPGA实现LDPC编码器。该LDPC编码器具有运算速度快,系统开销低,性能优良等特点。本发明避免大矩阵相乘时,存储器的速度瓶颈问题,从而提高LDPC编码器的可实现性。
权利要求
1.一种高速LDPC编码的实现方法,其特征是采用下面的步骤步骤1对数据源矩阵A的划分将矩阵A按列划分为n个子矩阵若矩阵A的列数为n的整数倍,则每个子矩阵的列数为a,行数仍为m,这样矩阵A就被划分成n个维数为m×a的子矩阵;若矩阵A的列数不为n的整数倍,可以用元素全为0的列补齐,使得矩阵A的列数为n的整数倍,然后将补0后的矩阵A按列划分为n个子矩阵,则每个子矩阵的列数为a,行数仍为m,这样矩阵A就被划分成n个维数为m×a的子矩阵;步骤2对生成矩阵B的第一次划分将矩阵B按列划分为c个子矩阵若矩阵B的列数为c的整数倍,则每个子矩阵列数为b,行数仍为(n×a),这样矩阵B就被划分成c个维数为(n×a)×b的子矩阵;若矩阵B的列数不为c的整数倍,可以用元素全为0的列补齐,使得矩阵B的列数为c的整数倍,然后将补0后的矩阵B按列划分为c个子矩阵,则每个子矩阵列数为b,行数仍为(n×a),这样矩阵B就被划分成c个维数为(n×a)×b的子矩阵;在完成对矩阵B的第一次划分后,继续对矩阵B的每一个子矩阵B1,B2……Br,……Bc进行进一步的划分;步骤3对生成矩阵B的任意一个子矩阵Br的第二次划分保持矩阵Br的列不变,将矩阵Br按行划分为n个子矩阵若矩阵Br的行数为n的整数倍,则每个子矩阵的行数为a,列数仍为b,这样矩阵Br就被划分成n个维数为(a×b)的子矩阵;若矩阵Br的行数不为n的整数倍,可以用元素全为0的行补齐,使得矩阵Br的行数为n的整数倍,然后将补0后的矩阵Br按行划分为n个子矩阵,则每个子矩阵的行数为a,列数仍为b,这样矩阵Br就被划分成n个维数为(a×b)的子矩阵;m、n、a、b、c均为大于零的正整数;同理,就可以完成对矩阵B的所有子矩阵B1,B2……Br,……Bc的划分;经过上述对矩阵B的两次划分,矩阵B就被划分为n×c个维数为(a×b)的子矩阵;步骤4利用步骤2对生成矩阵B的第一次划分结果,将数据源矩阵A×生成矩阵B的运算分解为数据源矩阵A与生成矩阵B的各子矩阵B1、B2、B3…Br…Bc分别相乘的乘法运算;A×B=[A×B1,A×B2,A×B3,…,A×Br,…,A×Bc]…①步骤5基于步骤1对数据源矩阵A的划分结果和步骤3对生成矩阵B的第二次划分结果,将数据源矩阵A与生成矩阵B的各子矩阵B1、B2、B3…Br…Bc的乘法运算,即A×Br(1≤r≤c)的运算分解为A的各子矩阵A1、A2、A3…An与Br的各子矩阵Br1、Br2、Br3、…Brn对应相乘并进行累加的运算;用生成矩阵A的第一个子矩阵A1与矩阵Br中的第一个子矩阵Br1对应相乘,计算完成后保留结果;继续用矩阵A的第二个子矩阵A2与Br矩阵中第二个子矩阵Br2对应相乘,在计算完成后保留结果;然后按照前述方法,用矩阵A的第3个、第4个……第i个、……第n个子矩阵分别与Br矩阵的第3个、第4个……第i个、……第n个子矩阵对应相乘,并分别保留结果,将各次结果相加即得到矩阵A×Br的相乘结果;上述过程,如下所示A×Br=[Σi=1nAi×Bri](1≤r≤c)---(2)]]>步骤6根据步骤5的计算方法,将得到的A×Br(1≤r≤c)的结果代入①式右端,即可得到矩阵A×B的结果,即LDPC的码字;经过以上步骤,就可以实现LDPC编码。
全文摘要
本发明公开了一种低密度校验码高速编码方法,它是通过对数据源矩阵和生成矩阵的划分,将数据源矩阵A和生成矩阵B的乘法运算转换为矩阵A的n个维数为(m×a)的子矩阵与矩阵B的n×c个维数为(a×b)的子矩阵的乘法运算。本发明LDPC的编码方法,可以通过使用SDRAM等存储器存储数据源矩阵和生成矩阵,配合FPGA实现LDPC编码器。由此实现的LDPC编码器,具有运算速度快,系统开销低,性能优良等特点。它比传统的LDPC编码方法具有更好的工程可实现性,且编码速度更快。本发明避免大矩阵相乘时,存储器的速度瓶颈问题,从而提高LDPC编码器的可实现性。
文档编号H04L1/00GK1862971SQ200510020880
公开日2006年11月15日 申请日期2005年5月11日 优先权日2005年5月11日
发明者刘皓, 武文杰, 何旭, 李少谦 申请人:电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1