專利名稱:一種低密度校驗(yàn)碼高速編碼方法
技術(shù)領(lǐng)域:
本發(fā)明屬于通信領(lǐng)域,它特別涉及通信中的信道LDPC編碼器設(shè)計(jì)和工程實(shí)現(xiàn)技術(shù)。
背景技術(shù):
低密度校驗(yàn)碼(簡(jiǎn)稱LDPC)是通信中一種受到廣泛關(guān)注的糾錯(cuò)編碼方式。1962年,Gallager提出了基于稀疏校驗(yàn)矩陣的線性碼,即低密度校驗(yàn)碼(Low-Density Parity-CheckCode,LDPC),證明了LDPC是一種好碼。但是盡管它有好的性能,在Turbo碼出現(xiàn)之前,LDPC碼并未引起足夠的重視。直到最近,由于具有接近香農(nóng)限的性能,LDPC碼才應(yīng)用在AWGN和瑞利衰落信道中。已經(jīng)證明,當(dāng)LDPC碼的碼長(zhǎng)很大時(shí),LDPC碼大大超出了卷積編碼的性能。但是隨著碼長(zhǎng)的增大,LDPC編碼器的復(fù)雜度也會(huì)大幅提高,開銷大幅增加,難于工程實(shí)現(xiàn),極大地限制了LDPC碼的應(yīng)用。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種高速LDPC編碼的實(shí)現(xiàn)方法,按照本發(fā)明方法可以實(shí)現(xiàn)采用數(shù)據(jù)源矩陣和生成矩陣相乘的編碼方法進(jìn)行編碼的LDPC編碼器,使其具有運(yùn)算速度快,系統(tǒng)開銷低,性能優(yōu)良等特點(diǎn)。
適應(yīng)任意LDPC碼的編碼方法可以采用數(shù)據(jù)源矩陣和生成矩陣相乘的方法實(shí)現(xiàn)。
以矩陣A代表數(shù)據(jù)源矩陣,B代表生成矩陣。矩陣A中存放待編碼數(shù)據(jù),矩陣B中存放生成矩陣。則適應(yīng)任意LDPC碼的編碼方法可表達(dá)為結(jié)果矩陣C=A×B。
不失一般性,以矩陣C=A×B說明本發(fā)明中矩陣乘法的實(shí)現(xiàn)方法,其中矩陣A的維數(shù)為m×(n×a)(其中,m為矩陣A的行數(shù),(n×a)為矩陣A的列數(shù),若矩陣A的列數(shù)不是n與a的乘積,那么可以用元素全為0的列補(bǔ)齊,使得矩陣A的列數(shù)為n與a的乘積);矩陣B的維數(shù)為(n×a)×(c×b)(其中,(n×a)為矩陣B的行數(shù),(c×b)為矩陣B的列數(shù)。若矩陣B的行數(shù)不是n與a的乘積,那么可以用元素全為0的行補(bǔ)齊,使得矩陣B的行數(shù)為n與a的乘積;若矩陣B的列數(shù)不是c與b的乘積,同樣用元素全為0的列補(bǔ)齊,使得矩陣B的列數(shù)為c與b的乘積)。(注m、n、a、b、c均為大于零的正整數(shù))圖1和圖2分別描述了矩陣A和矩陣B的維數(shù)。隨著矩陣維數(shù)的增大,矩陣乘法的數(shù)據(jù)運(yùn)算量也會(huì)成倍的增加。
本發(fā)明提供了一種高速LDPC編碼的實(shí)現(xiàn)方法,其特征是采用下面的步驟對(duì)數(shù)據(jù)源矩陣和生成矩陣進(jìn)行劃分。
下面結(jié)合附圖具體闡述對(duì)數(shù)據(jù)源矩陣和生成矩陣的劃分步驟步驟1對(duì)數(shù)據(jù)源矩陣A的劃分圖3對(duì)數(shù)據(jù)源矩陣A的劃分方法進(jìn)行了描述。具體步驟為將矩陣A按列劃分為n個(gè)子矩陣(若矩陣A的列數(shù)不為n的整數(shù)倍,可以用元素全為0的列補(bǔ)齊,使得矩陣A的列數(shù)為n的整數(shù)倍,然后將補(bǔ)0后的矩陣A按列劃分為n個(gè)子矩陣),每個(gè)子矩陣的列數(shù)為a,行數(shù)仍為m,這樣矩陣A就被劃分成n個(gè)維數(shù)為m×a的子矩陣。
步驟2對(duì)生成矩陣B的第一次劃分圖4對(duì)生成矩陣B的第一次劃分方法進(jìn)行了描述。具體步驟為將矩陣B按列劃分為c個(gè)子矩陣(若矩陣B的列數(shù)不為c的整數(shù)倍,可以用元素全為0的列補(bǔ)齊,使得矩陣B的列數(shù)為c的整數(shù)倍,然后將補(bǔ)0后的矩陣B按列劃分為c個(gè)子矩陣),每個(gè)子矩陣列數(shù)為b,行數(shù)仍為(n×a),這樣矩陣B就被劃分成c個(gè)維數(shù)為(n×a)×b的子矩陣。
在完成對(duì)矩陣B的第一次劃分后,繼續(xù)對(duì)矩陣B的每一個(gè)子矩陣B1,B2......Br,......Bc進(jìn)行進(jìn)一步的劃分。
步驟3對(duì)生成矩陣B的任意一個(gè)子矩陣Br的第二次劃分圖5對(duì)矩陣B的某一個(gè)子矩陣Br的進(jìn)一步劃分進(jìn)行了描述。具體步驟為保持矩陣Br的列不變,將矩陣Br按行劃分為n個(gè)子矩陣(若矩陣Br的行數(shù)不為n的整數(shù)倍,可以用元素全為0的行補(bǔ)齊,使得矩陣Br的行數(shù)為n的整數(shù)倍,然后將補(bǔ)0后的矩陣Br按行劃分為n個(gè)子矩陣),每個(gè)子矩陣的行數(shù)為a,列數(shù)仍為b,這樣矩陣Br就被劃分成n個(gè)維數(shù)為(a×b)的子矩陣。同理,就可以完成對(duì)矩陣B的所有子矩陣B1,B2......Br,......Bc的劃分。經(jīng)過上述對(duì)矩陣B的兩次劃分,矩陣B就被劃分為n×c個(gè)維數(shù)為(a×b)的子矩陣。
經(jīng)過上述對(duì)數(shù)據(jù)源矩陣A和生成矩陣B的劃分步驟后,采用數(shù)據(jù)源矩陣和生成矩陣相乘的LDPC編碼方法,即數(shù)據(jù)源矩陣A和生成矩陣B的乘法就轉(zhuǎn)換為矩陣A的n個(gè)維數(shù)為(m×a)的子矩陣與矩陣B的n×c個(gè)維數(shù)為(a×b)的子矩陣的乘法。
這樣,基于上述對(duì)數(shù)據(jù)源矩陣A和生成矩陣B的劃分步驟,數(shù)據(jù)源矩陣A與生成矩陣B的乘法運(yùn)算可以采用下面的步驟步驟4基于步驟2對(duì)生成矩陣B的第一次劃分結(jié)果,將A×B的運(yùn)算分解為A與B的各子矩陣B1、B2、B3...Br...Bc分別相乘的乘法運(yùn)算。
A×B=[A×B1,A×B2,A×B3,...,A×Br,...,A×Bc] ...①步驟5基于步驟1對(duì)數(shù)據(jù)源矩陣A的劃分結(jié)果和步驟3對(duì)生成矩陣B的第二次劃分結(jié)果,將A與B的各子矩陣B1、B2、B3...Br...Bc的乘法運(yùn)算,即A×Br(1≤r≤c)的運(yùn)算分解為A的各子矩陣A1、A2、A3...An與Br的各子矩陣Br1、Br2、Br3、...Brn對(duì)應(yīng)相乘并進(jìn)行累加的運(yùn)算。
圖6對(duì)A×Br的計(jì)算步驟進(jìn)行了描述。具體步驟為用生成矩陣A的第一個(gè)子矩陣A1與矩陣Br中的第一個(gè)子矩陣Br1對(duì)應(yīng)相乘,計(jì)算完成后保留結(jié)果;繼續(xù)用矩陣A的第二個(gè)子矩陣A2與Br矩陣中第二個(gè)子矩陣Br2對(duì)應(yīng)相乘,在計(jì)算完成后保留結(jié)果;然后按照前述方法,用矩陣A的第3個(gè)、第4個(gè)......第i個(gè)、......第n個(gè)子矩陣分別與Br矩陣的第3個(gè)、第4個(gè)......第i個(gè)、......第n個(gè)子矩陣對(duì)應(yīng)相乘,并分別保留結(jié)果,將各次結(jié)果相加即得到矩陣A×Br的相乘結(jié)果。
上述過程,如下所示A×Br=[Σi=1nAi×Bri]---(1≤r≤c)]]>...②步驟6根據(jù)步驟5的計(jì)算方法,將得到的A×Br(1≤r≤c)的結(jié)果代入①式右端,即可得到矩陣A×B結(jié)果,也就是LDPC的碼字。
經(jīng)過以上步驟,就可以實(shí)現(xiàn)LDPC編碼。
本發(fā)明的實(shí)質(zhì)是對(duì)于采用數(shù)據(jù)源矩陣和生成矩陣相乘的LDPC編碼方法,經(jīng)過對(duì)數(shù)據(jù)源矩陣A和生成矩陣B的劃分步驟后,即數(shù)據(jù)源矩陣A和生成矩陣B的乘法就轉(zhuǎn)換為矩陣A的n個(gè)維數(shù)為(m×a)的子矩陣與矩陣B的n×c個(gè)維數(shù)為(a×b)的子矩陣的乘法。
本發(fā)明的創(chuàng)新之處在于本發(fā)明是通過對(duì)數(shù)據(jù)源矩陣和生成矩陣的劃分,將數(shù)據(jù)源矩陣A和生成矩陣B的乘法運(yùn)算轉(zhuǎn)換為矩陣A的n個(gè)維數(shù)為(m×a)的子矩陣與矩陣B的n×c個(gè)維數(shù)為(a×b)的子矩陣的乘法運(yùn)算。通過這種方案將大數(shù)據(jù)量分配到各子矩陣中,由此實(shí)現(xiàn)的LDPC編碼器,具有運(yùn)算速度快,系統(tǒng)開銷低,性能優(yōu)良等特點(diǎn)。它比傳統(tǒng)的LDPC編碼方法具有更好的工程可實(shí)現(xiàn)性,且編碼速度更快。
本發(fā)明的優(yōu)點(diǎn)本發(fā)明提出了一種適應(yīng)任意LDPC碼的編碼方法,它相比較于以前提出的LDPC碼的編碼方法有以下的優(yōu)點(diǎn)
1).該方案有效地解決了數(shù)據(jù)存儲(chǔ)以及數(shù)據(jù)吞吐量的難題,使得LDPC編碼器在工程上易于實(shí)現(xiàn),提高了LDPC碼在實(shí)際工程中的應(yīng)用性;2).由于過對(duì)數(shù)據(jù)源矩陣和生成矩陣的劃分,合理地將大數(shù)據(jù)量分配到各子矩陣中,避免了對(duì)大數(shù)據(jù)量的同時(shí)計(jì)算,有效地降低了系統(tǒng)開銷,提高LDPC碼編碼的可實(shí)現(xiàn)性;3).由于采用并行的編碼方式,本發(fā)明有效提升了LDPC編碼的速度。
本發(fā)明通過對(duì)兩個(gè)矩陣進(jìn)行劃分,避免了對(duì)大數(shù)據(jù)量的同時(shí)計(jì)算,合理地將大數(shù)據(jù)量分配到各子矩陣中,提高了LDPC編碼在工程應(yīng)用中的可實(shí)現(xiàn)性。
圖1矩陣A的結(jié)構(gòu)示意圖其中m表示矩陣A的行數(shù),(n×a)表示矩陣A的列數(shù)(若矩陣A的列數(shù)不是a的整數(shù)倍,那么可以用元素全為0的列補(bǔ)齊,使得矩陣A的列數(shù)為a的整數(shù)倍),m×(n×a)表示數(shù)據(jù)源矩陣A的維數(shù)。
圖2矩陣B的結(jié)構(gòu)示意圖其中(n×a)表示矩陣B的行數(shù),(c×b)表示矩陣B的列數(shù)(若矩陣B的行數(shù)不是a的整數(shù)倍,那么可以用元素全為0的行補(bǔ)齊,使得矩陣B的行數(shù)為a的整數(shù)倍;若矩陣B的列數(shù)不是b的整數(shù)倍,同樣用元素全為0的列補(bǔ)齊,使得矩陣B的列數(shù)為b的整數(shù)倍),(n×a)×(c×b)表示生成矩陣B的維數(shù)。
圖3矩陣A的劃分結(jié)果示意圖其中A1、A2......A(n-1)、An分別表示矩陣A的n個(gè)子矩陣,m表示矩陣A及它的n個(gè)子矩陣的行數(shù),a表示矩陣A的n個(gè)子矩陣的列數(shù),(n×a)表示矩陣A的列數(shù),(m×a)表示數(shù)據(jù)源矩陣A的n個(gè)子矩陣A1、A2......A(n-1)、An的維數(shù),m×(n×a)表示數(shù)據(jù)源矩陣A的維數(shù)。
圖4矩陣B的第一次的劃分結(jié)果示意圖其中,B1、B2、B3...Br...Bc表示矩陣B第一次劃分后的c個(gè)子矩陣;(n×a)表示矩陣B及其c個(gè)子矩陣的行數(shù),b表示矩陣B的各子矩陣的列數(shù),(c×b)表示矩陣B的列數(shù),(n×a)×b表示生成矩陣B的c個(gè)子矩陣B1、B2、B3...Bc的維數(shù),(n×a)×(c×b)表示生成矩陣B的維數(shù)。
圖5矩陣B的子矩陣Br的第二次劃分結(jié)果示意圖其中,Br1、Br2......Brn分別表示矩陣Br的n個(gè)子矩陣,a表示Br的n個(gè)子矩陣Br1、Br2......Brn的行數(shù),b表示Br的n個(gè)子矩陣Br1、Br2......Brn的列數(shù),(n×a)表示矩陣Br的行數(shù),(n×a)×b表示矩陣Br的維數(shù),(a×b)表示矩陣Br的n個(gè)子矩陣Br1、Br2......Brn的維數(shù)。
圖6A×Br的計(jì)算方法示意7本發(fā)明流程框圖
具體實(shí)施例方式B3G TDD方式下行鏈路設(shè)計(jì)中的數(shù)字基帶發(fā)送部分使用的LDPC編碼器可以采用本發(fā)明中LDPC的編碼方法。設(shè)計(jì)中,采用SDRAM存儲(chǔ)數(shù)據(jù)源矩陣A(維數(shù)為64×(32×76))和生成矩陣B(維數(shù)為(32×76)×(8×483)),配合Xilinx公司的Vertex II Pro芯片Xc2vp70實(shí)現(xiàn)本發(fā)明中的LDPC編碼器。經(jīng)過驗(yàn)證,當(dāng)系統(tǒng)時(shí)鐘工作在80MHZ時(shí),該LDPC編碼器可以在一個(gè)TTI=40ms的時(shí)間內(nèi)完成對(duì)1664個(gè)碼塊的編碼(每個(gè)碼塊的長(zhǎng)度為2404),系統(tǒng)數(shù)據(jù)吞吐量達(dá)到了100Mbps。
因此,本發(fā)明LDPC的編碼方法,可以通過使用SDRAM等存儲(chǔ)器存儲(chǔ)數(shù)據(jù)源矩陣和生成矩陣,配合FPGA實(shí)現(xiàn)LDPC編碼器。該LDPC編碼器具有運(yùn)算速度快,系統(tǒng)開銷低,性能優(yōu)良等特點(diǎn)。本發(fā)明避免大矩陣相乘時(shí),存儲(chǔ)器的速度瓶頸問題,從而提高LDPC編碼器的可實(shí)現(xiàn)性。
權(quán)利要求
1.一種高速LDPC編碼的實(shí)現(xiàn)方法,其特征是采用下面的步驟步驟1對(duì)數(shù)據(jù)源矩陣A的劃分將矩陣A按列劃分為n個(gè)子矩陣若矩陣A的列數(shù)為n的整數(shù)倍,則每個(gè)子矩陣的列數(shù)為a,行數(shù)仍為m,這樣矩陣A就被劃分成n個(gè)維數(shù)為m×a的子矩陣;若矩陣A的列數(shù)不為n的整數(shù)倍,可以用元素全為0的列補(bǔ)齊,使得矩陣A的列數(shù)為n的整數(shù)倍,然后將補(bǔ)0后的矩陣A按列劃分為n個(gè)子矩陣,則每個(gè)子矩陣的列數(shù)為a,行數(shù)仍為m,這樣矩陣A就被劃分成n個(gè)維數(shù)為m×a的子矩陣;步驟2對(duì)生成矩陣B的第一次劃分將矩陣B按列劃分為c個(gè)子矩陣若矩陣B的列數(shù)為c的整數(shù)倍,則每個(gè)子矩陣列數(shù)為b,行數(shù)仍為(n×a),這樣矩陣B就被劃分成c個(gè)維數(shù)為(n×a)×b的子矩陣;若矩陣B的列數(shù)不為c的整數(shù)倍,可以用元素全為0的列補(bǔ)齊,使得矩陣B的列數(shù)為c的整數(shù)倍,然后將補(bǔ)0后的矩陣B按列劃分為c個(gè)子矩陣,則每個(gè)子矩陣列數(shù)為b,行數(shù)仍為(n×a),這樣矩陣B就被劃分成c個(gè)維數(shù)為(n×a)×b的子矩陣;在完成對(duì)矩陣B的第一次劃分后,繼續(xù)對(duì)矩陣B的每一個(gè)子矩陣B1,B2……Br,……Bc進(jìn)行進(jìn)一步的劃分;步驟3對(duì)生成矩陣B的任意一個(gè)子矩陣Br的第二次劃分保持矩陣Br的列不變,將矩陣Br按行劃分為n個(gè)子矩陣若矩陣Br的行數(shù)為n的整數(shù)倍,則每個(gè)子矩陣的行數(shù)為a,列數(shù)仍為b,這樣矩陣Br就被劃分成n個(gè)維數(shù)為(a×b)的子矩陣;若矩陣Br的行數(shù)不為n的整數(shù)倍,可以用元素全為0的行補(bǔ)齊,使得矩陣Br的行數(shù)為n的整數(shù)倍,然后將補(bǔ)0后的矩陣Br按行劃分為n個(gè)子矩陣,則每個(gè)子矩陣的行數(shù)為a,列數(shù)仍為b,這樣矩陣Br就被劃分成n個(gè)維數(shù)為(a×b)的子矩陣;m、n、a、b、c均為大于零的正整數(shù);同理,就可以完成對(duì)矩陣B的所有子矩陣B1,B2……Br,……Bc的劃分;經(jīng)過上述對(duì)矩陣B的兩次劃分,矩陣B就被劃分為n×c個(gè)維數(shù)為(a×b)的子矩陣;步驟4利用步驟2對(duì)生成矩陣B的第一次劃分結(jié)果,將數(shù)據(jù)源矩陣A×生成矩陣B的運(yùn)算分解為數(shù)據(jù)源矩陣A與生成矩陣B的各子矩陣B1、B2、B3…Br…Bc分別相乘的乘法運(yùn)算;A×B=[A×B1,A×B2,A×B3,…,A×Br,…,A×Bc]…①步驟5基于步驟1對(duì)數(shù)據(jù)源矩陣A的劃分結(jié)果和步驟3對(duì)生成矩陣B的第二次劃分結(jié)果,將數(shù)據(jù)源矩陣A與生成矩陣B的各子矩陣B1、B2、B3…Br…Bc的乘法運(yùn)算,即A×Br(1≤r≤c)的運(yùn)算分解為A的各子矩陣A1、A2、A3…An與Br的各子矩陣Br1、Br2、Br3、…Brn對(duì)應(yīng)相乘并進(jìn)行累加的運(yùn)算;用生成矩陣A的第一個(gè)子矩陣A1與矩陣Br中的第一個(gè)子矩陣Br1對(duì)應(yīng)相乘,計(jì)算完成后保留結(jié)果;繼續(xù)用矩陣A的第二個(gè)子矩陣A2與Br矩陣中第二個(gè)子矩陣Br2對(duì)應(yīng)相乘,在計(jì)算完成后保留結(jié)果;然后按照前述方法,用矩陣A的第3個(gè)、第4個(gè)……第i個(gè)、……第n個(gè)子矩陣分別與Br矩陣的第3個(gè)、第4個(gè)……第i個(gè)、……第n個(gè)子矩陣對(duì)應(yīng)相乘,并分別保留結(jié)果,將各次結(jié)果相加即得到矩陣A×Br的相乘結(jié)果;上述過程,如下所示A×Br=[Σi=1nAi×Bri](1≤r≤c)---(2)]]>步驟6根據(jù)步驟5的計(jì)算方法,將得到的A×Br(1≤r≤c)的結(jié)果代入①式右端,即可得到矩陣A×B的結(jié)果,即LDPC的碼字;經(jīng)過以上步驟,就可以實(shí)現(xiàn)LDPC編碼。
全文摘要
本發(fā)明公開了一種低密度校驗(yàn)碼高速編碼方法,它是通過對(duì)數(shù)據(jù)源矩陣和生成矩陣的劃分,將數(shù)據(jù)源矩陣A和生成矩陣B的乘法運(yùn)算轉(zhuǎn)換為矩陣A的n個(gè)維數(shù)為(m×a)的子矩陣與矩陣B的n×c個(gè)維數(shù)為(a×b)的子矩陣的乘法運(yùn)算。本發(fā)明LDPC的編碼方法,可以通過使用SDRAM等存儲(chǔ)器存儲(chǔ)數(shù)據(jù)源矩陣和生成矩陣,配合FPGA實(shí)現(xiàn)LDPC編碼器。由此實(shí)現(xiàn)的LDPC編碼器,具有運(yùn)算速度快,系統(tǒng)開銷低,性能優(yōu)良等特點(diǎn)。它比傳統(tǒng)的LDPC編碼方法具有更好的工程可實(shí)現(xiàn)性,且編碼速度更快。本發(fā)明避免大矩陣相乘時(shí),存儲(chǔ)器的速度瓶頸問題,從而提高LDPC編碼器的可實(shí)現(xiàn)性。
文檔編號(hào)H04L1/00GK1862971SQ200510020880
公開日2006年11月15日 申請(qǐng)日期2005年5月11日 優(yōu)先權(quán)日2005年5月11日
發(fā)明者劉皓, 武文杰, 何旭, 李少謙 申請(qǐng)人:電子科技大學(xué)