一種ldpc編碼方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種LDPC編碼方法及裝置,其中本發(fā)明LDPC編碼方法包括:將待編碼數(shù)據(jù)進(jìn)行串并變換后,形成包括第一至第N路數(shù)據(jù)的N路并行數(shù)據(jù);包括第一隨機(jī)存取存儲(chǔ)器RAM1至第N隨機(jī)存取存儲(chǔ)器RAMn的N個(gè)RAM分別利用所述N路并行數(shù)據(jù)和從母碼矩陣依次讀出的編碼信息位部分的值,執(zhí)行各自所有存儲(chǔ)單元的數(shù)據(jù)更新處理;在完成RAM1至RAMn的所有存儲(chǔ)單元數(shù)據(jù)更新處理之后,對依次從RAM1至RAMn中讀出的數(shù)據(jù)進(jìn)行求和運(yùn)算,并將每次求和運(yùn)算的數(shù)據(jù)分別寫入RAMn和第N+1個(gè)隨機(jī)存取存儲(chǔ)器RAMn+1中;對RAM1至RAMn+1的數(shù)據(jù)進(jìn)行邏輯運(yùn)算,得到其值為校驗(yàn)位的數(shù)據(jù)。本發(fā)明可以大大提高系統(tǒng)吞吐量。
【專利說明】—種LDPC編碼方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及微波通訊領(lǐng)域調(diào)制解調(diào)中的低密度奇偶校驗(yàn)碼(LDPC),特別涉及通過硬件實(shí)現(xiàn)編碼的一種LDPC編碼方法及裝置。
【背景技術(shù)】
[0002]微波通信與光纖通信、衛(wèi)星通信一起被稱為現(xiàn)代通信傳輸?shù)娜笾饕侄巍N⒉ㄍㄐ乓话悴捎命c(diǎn)對點(diǎn)的傳輸方式,目前主要應(yīng)用于2G/3G移動(dòng)的承載網(wǎng)絡(luò),為移動(dòng)運(yùn)營商提供語音和數(shù)據(jù)業(yè)務(wù)的傳輸,具有傳輸容量大,長途傳輸質(zhì)量穩(wěn)定,投資少,建設(shè)周期短,維護(hù)方便等特點(diǎn)。微波通訊中的編碼方案采用LDPC編碼來實(shí)現(xiàn)。
[0003]LDPC碼于1962年由Gallager提出,是一類由稀疏校驗(yàn)矩陣定義的線性分組碼,其迭代譯碼算法簡單,具有逼近香農(nóng)限的性能。從被MacKay和Neal于1995年重新發(fā)現(xiàn)至今,LDPC碼的理論研究和實(shí)際應(yīng)用都取得了很大進(jìn)展。目前,在很多通信系統(tǒng)的標(biāo)準(zhǔn)如DVB-S2, WiMAX, IEEE 802.3an, DMB-TH 中均采用了 LDPC 碼。
[0004]最初的LDPC碼編碼算法與普通的分組碼一樣,先通過高斯消去法將校驗(yàn)矩陣轉(zhuǎn)換成生成矩陣,然后用信息序列與生成矩陣相乘來得到碼字。但基于高斯消去的傳統(tǒng)編碼算法需要大量的存儲(chǔ)空間,實(shí)現(xiàn)復(fù)雜度較高,在中長碼長時(shí)不易實(shí)現(xiàn)。
[0005]為了降低LDPC碼的編碼復(fù)雜度,可采用半隨機(jī)LDPC碼,其編碼器結(jié)構(gòu)簡單,同時(shí)參數(shù)選擇也很靈活。
[0006]由此產(chǎn)生了一種編碼復(fù)雜度與碼長成線性關(guān)系的有效編碼算法,它通過預(yù)處理將校驗(yàn)矩陣化簡成為下三角或近似下三角的形式,然后直接利用校驗(yàn)矩陣實(shí)現(xiàn)近似線性編碼,但該算法所需存儲(chǔ)單元過多限制了它的應(yīng)用。
[0007]另一種利用移位寄存器的QC-LDPC編碼算法,其校驗(yàn)矩陣具有循環(huán)或準(zhǔn)循環(huán)結(jié)構(gòu),大幅度降低了編碼器所需要的存儲(chǔ)單元,可以用移位寄存器來實(shí)現(xiàn)線性復(fù)雜度編碼。但該算法需要使用大量的移位寄存器,從而增加了該編碼器的面積和功耗等,大大限制了它的使用范圍。
【發(fā)明內(nèi)容】
[0008]本發(fā)明的目的是提供一種LDPC編碼方法,用于解決傳統(tǒng)的LDPC編碼器結(jié)構(gòu)復(fù)雜,消耗資源比較大,不能支持多種場合的使用的技術(shù)問題。
[0009]本發(fā)明的另一目的是提供一種實(shí)施上述方法的一種LDPC編碼裝置。
[0010]根據(jù)本發(fā)明的第一方面,本發(fā)明的一種LDPC編碼方法包括以下步驟:
[0011]將待編碼數(shù)據(jù)進(jìn)行串并變換后,形成包括第一至第N路數(shù)據(jù)的N路并行數(shù)據(jù);
[0012]包括第一隨機(jī)存取存儲(chǔ)器RAM1至第N隨機(jī)存取存儲(chǔ)器RAMn的N個(gè)RAM分別利用所述N路并行數(shù)據(jù)和從母碼矩陣依次讀出的編碼信息位部分的值,執(zhí)行各自所有存儲(chǔ)單元的數(shù)據(jù)更新處理;
[0013]在完成RAM1至RAMn的所有存儲(chǔ)單元數(shù)據(jù)更新處理之后,對依次從RAM1至RAMn中讀出的數(shù)據(jù)進(jìn)行求和運(yùn)算,并將每次求和運(yùn)算的數(shù)據(jù)分別寫入RAMn和第N+1個(gè)隨機(jī)存取存儲(chǔ)器RAMn+1中;
[0014]對RAM1至RAMn+1的數(shù)據(jù)進(jìn)行邏輯運(yùn)算,得到其值為校驗(yàn)位的數(shù)據(jù);
[0015]其中,N是大于等于I的整數(shù)。
[0016]優(yōu)選地,所述母碼矩陣的編碼信息位部分的第一行數(shù)據(jù)至第N行數(shù)據(jù)分別對應(yīng)于RAM1至RAMn的初始地址。
[0017]優(yōu)選地,所述RAM1至RAMn的所有存儲(chǔ)單元數(shù)據(jù)更新處理是并行完成的。
[0018]優(yōu)選地,對于RAM1至RAMn中任一個(gè)隨機(jī)存取存儲(chǔ)器RAMk,執(zhí)行其所有存儲(chǔ)單元的數(shù)據(jù)更新處理包括:
[0019]讀取母碼矩陣的編碼信息位部分的第k行第一個(gè)數(shù)據(jù),得到RAMk的初始地址,再從該初始地址對應(yīng)的存儲(chǔ)單元中讀出一個(gè)數(shù)據(jù),并將該讀出的數(shù)據(jù)與到來的N路數(shù)據(jù)中第k路數(shù)據(jù)進(jìn)行異或運(yùn)算后更新其存儲(chǔ)單元數(shù)據(jù);
[0020]通過將RAMk地址加I,對RAMk中下一個(gè)存儲(chǔ)單元進(jìn)行與上一個(gè)存儲(chǔ)單元相同的數(shù)據(jù)更新處理,直至完成RAM-k所有存儲(chǔ)單元針對母碼矩陣編碼信息位部分第k行第一個(gè)數(shù)據(jù)的數(shù)據(jù)更新處理;
[0021]此后,按序逐一讀出母碼矩陣的編碼信息位部分的第k行的其他數(shù)據(jù),按照RAMk所有存儲(chǔ)單元針對上述第k行第一個(gè)數(shù)據(jù)的數(shù)據(jù)更新處理方式,反復(fù)更新RAM-k所有存儲(chǔ)單元的數(shù)據(jù),直至讀出所述k行中最后數(shù)據(jù),完成RAM-k所有存儲(chǔ)單元的最后數(shù)據(jù)更新處理;
[0022]其中k是大于等于I且小于等于N的整數(shù)。
[0023]優(yōu)選地,所述的對RAM1至RAMn+1的數(shù)據(jù)進(jìn)行邏輯運(yùn)算得到其值為校驗(yàn)位的數(shù)據(jù)包括:對每次寫入中的數(shù)據(jù)分別進(jìn)行異或運(yùn)算,得到其值為第一組校驗(yàn)位P(O)的數(shù)據(jù)。
[0024]優(yōu)選地,所述的對RAM1至RAMn+1的數(shù)據(jù)進(jìn)行邏輯運(yùn)算得到其值為校驗(yàn)位的數(shù)據(jù)還包括:當(dāng)所述P(O)輸出之后,依次讀取RAMn+1和RAM1中的數(shù)據(jù)并進(jìn)行異或運(yùn)算后,寫入RAMl中,并輸出該異或運(yùn)算的值,直至RAMn+1和RAM1中所有存儲(chǔ)單元中的數(shù)據(jù)均讀取完畢,并完成異或運(yùn)算,由此得到其值為第二組校驗(yàn)位P (I)的數(shù)據(jù)。
[0025]優(yōu)選地,所述的對RAM1至RAMn+1的數(shù)據(jù)進(jìn)行邏輯運(yùn)算得到其值為校驗(yàn)位的數(shù)據(jù)還包括:按照對依次讀取的RAMn+1和RAM1的數(shù)據(jù)進(jìn)行處理以得到第二組校驗(yàn)位P(I)的方式,對依次讀取的RAM1和RAM2的數(shù)據(jù),RAM2和RAM3的數(shù)據(jù),直至RAMn+1和RAMn的數(shù)據(jù)進(jìn)行相同的處理,分別得到第三組校驗(yàn)位P (2)、第四組校驗(yàn)位P (3),直至第N組校驗(yàn)位P (N-1)。
[0026]此外,本發(fā)明還可以根據(jù)編碼碼率與母碼矩陣碼率的關(guān)系,確定讀取母碼矩陣的編碼信息位部分?jǐn)?shù)據(jù)的個(gè)數(shù),和確定輸入第一組至第N組校驗(yàn)位中的一組校驗(yàn)位還是多組校驗(yàn)位。
[0027]根據(jù)本發(fā)明第二方面,本發(fā)明的一種LDPC編碼裝置包括:
[0028]串并變換模塊,用于將待編碼數(shù)據(jù)進(jìn)行串并變換,形成包括第一至第N路數(shù)據(jù)的N路并行數(shù)據(jù);
[0029]與用來編碼的母碼矩陣的N行一一對應(yīng)的N個(gè)RAM,包括第一隨機(jī)存取存儲(chǔ)器RAM1至第N隨機(jī)存取存儲(chǔ)器RAMn ;[0030]RAM數(shù)據(jù)更新模塊,用于分別利用從母碼矩陣依次讀出的編碼信息位部分的值和所述N路并行數(shù)據(jù),對RAM1至RAMn所有存儲(chǔ)單元的進(jìn)行數(shù)據(jù)更新處理
[0031]校驗(yàn)位生成模塊,用于在完成RAM1至RAMn的所有存儲(chǔ)單元更新處理之后,對依次從RAM1至RAMn中讀出的數(shù)據(jù)進(jìn)行求和運(yùn)算,并將每次求和運(yùn)算的數(shù)據(jù)分別寫入RAMn和第N+1個(gè)隨機(jī)存取存儲(chǔ)器RAMn+1中,然后對RAM1至RAMn+1的數(shù)據(jù)進(jìn)行邏輯運(yùn)算,得到其值為校驗(yàn)位的數(shù)據(jù);
[0032]其中,N是大于等于I的整數(shù)。
[0033]優(yōu)選地,所述的校驗(yàn)位獲取模塊包括:對依次從RAM1至RAMn中讀出的數(shù)據(jù)進(jìn)行求和運(yùn)算的求和運(yùn)算子模塊;對RAM1至RAMn+1的數(shù)據(jù)進(jìn)行異或運(yùn)算以便得到其值為校驗(yàn)位的數(shù)據(jù)的異或運(yùn)算子模塊。
[0034]相對于現(xiàn)有技術(shù),本發(fā)明的通過迭代訪問RAM來實(shí)現(xiàn)LDPC編碼校驗(yàn)位的計(jì)算LDPC編碼方法及裝置具有如下技術(shù)效果:
[0035]1、吞吐量大。編碼器的吞吐量與并行度有關(guān),并行度越高,吞吐量越大。并且沒有數(shù)據(jù)交織計(jì)算的時(shí)間,所以省略了數(shù)據(jù)交織時(shí)所需要的時(shí)間間隔。一個(gè)碼塊長度的數(shù)據(jù)可以連續(xù)輸入,而不需要等待,并能夠?qū)崟r(shí)輸出,大大提高了系統(tǒng)吞吐量。能夠滿足高吞吐量的需求和高速數(shù)據(jù)傳輸?shù)男枨螅?br>
[0036]2、延遲小。信息位一方面不需要進(jìn)行存儲(chǔ),可以直接輸出,節(jié)省了信息交織的時(shí)間,極大的減小了編碼器信息位的延遲。另一方面輸入的數(shù)據(jù)直接用于校驗(yàn)位的計(jì)算,保證校驗(yàn)位的及時(shí)輸出。
[0037]3、結(jié)構(gòu)簡單,占用資源小。只需要若干個(gè)小尺寸的RAM單元、一些寄存器和選擇器,采用迭代訪問存儲(chǔ)器的方法來實(shí)現(xiàn)LDPC編碼,而不需要移位寄存器進(jìn)行移位后再寫入RAM的操作。
[0038]4、通用性比較好,能夠支持不同行列類型的母碼矩陣的擴(kuò)展碼的計(jì)算,并能夠支持多種碼率的LDPC編碼,而不需要另外增加控制電路。若母碼矩陣的行數(shù)增多,只需要增加對應(yīng)RAM數(shù)目即可;若行數(shù)目不變化,只是增加列數(shù)目,則對應(yīng)的碼率和輸入信息位的碼長也要變化,電路結(jié)構(gòu)則不需要任何改動(dòng)即可實(shí)現(xiàn)對應(yīng)的操作。
[0039]5、能夠支持不同擴(kuò)展因子的母碼矩陣的編碼方式。RAM的尺寸可根據(jù)最大擴(kuò)展因子來選擇,較小的擴(kuò)展因子可通過調(diào)整訪問RAM的最大地址來控制。
[0040]下面結(jié)合附圖和【具體實(shí)施方式】對本方明的LDPC編碼方法及裝置作進(jìn)一步詳細(xì)描述,以便本領(lǐng)域技術(shù)人員便于理解本發(fā)明的目的、上述技術(shù)方案和技術(shù)效果。
【專利附圖】
【附圖說明】
[0041]圖1是本發(fā)明的一種LDPC編碼裝置的原理圖;
[0042]圖2是本發(fā)明的一種LDPC編碼方法的示意圖;
[0043]圖3是本發(fā)明的LDPC編碼實(shí)施例的結(jié)構(gòu)框圖;
[0044]圖4是本發(fā)明實(shí)施例的LDPC編碼訪問單個(gè)RAM的具體操作圖;
[0045]圖5是本發(fā)明實(shí)施例的校驗(yàn)位計(jì)算過程的流程圖;
[0046]圖6是本發(fā)明實(shí)施例的校驗(yàn)位輸出的流程圖?!揪唧w實(shí)施方式】
[0047]微波調(diào)制解調(diào)項(xiàng)目中的信道編碼采用準(zhǔn)循環(huán)結(jié)構(gòu)的LDPC碼,準(zhǔn)循環(huán)結(jié)構(gòu)的LDPC碼的校驗(yàn)陣可以通過一個(gè)母碼矩陣Hb擴(kuò)展得到,該母碼矩陣Hb為r行c列,其中前s列表示信息位部分,最后b(b = c-s)列對應(yīng)校驗(yàn)位部分,母碼矩陣中的每個(gè)值對應(yīng)的擴(kuò)展因子為z。為了說明計(jì)算過程,這里以4行32列的母碼矩陣為例來介紹。該矩陣中的前28列表示信息位部分,最后4列表示校驗(yàn)位部分。所以母碼碼率為28/32,擴(kuò)展因子為512。根據(jù)公式化簡,可采用迭代訪問存儲(chǔ)器的方法來實(shí)現(xiàn)。
[0048]LDPC編碼的核心就是對RAM的訪問控制。為了實(shí)現(xiàn)多路并行編碼方式,每次進(jìn)入編碼器的數(shù)據(jù)位寬為并行度P。假設(shè)以P = 8路并行為例,那么每個(gè)時(shí)鐘周期進(jìn)入編碼器的數(shù)據(jù)位寬為8bit ;若要實(shí)現(xiàn)P = 16路并行,那么每個(gè)時(shí)鐘周期進(jìn)入編碼器的數(shù)據(jù)位寬為16bit。在實(shí)際應(yīng)用中,若輸入的數(shù)據(jù)位寬為Ibit或其它bit,則可以通過一個(gè)串并轉(zhuǎn)換電路很容易的實(shí)現(xiàn)多路并行輸入方式。輸入的數(shù)據(jù)即為需要進(jìn)行編碼的信息部分。數(shù)據(jù)在輸入過程中就進(jìn)行編碼,輸入數(shù)據(jù)不進(jìn)行存儲(chǔ)。母碼矩陣中的值為定值,只有4x28個(gè)IObit寬的數(shù)據(jù)(最大數(shù)據(jù)為d512),所以可將其存儲(chǔ)在一個(gè)ROM中,也可以將其存儲(chǔ)在一個(gè)寄存器堆中。
[0049]圖1顯示了本發(fā)明的一種LDPC編碼裝置的原理,如圖1所示,該LDPC編碼裝置包括:
[0050]串并變換模塊,用于將待編碼數(shù)據(jù)進(jìn)行串并變換,形成包括第一至第N路數(shù)據(jù)的N路并行數(shù)據(jù);
[0051]與用來編碼的母碼矩陣的N行一一對應(yīng)的N個(gè)RAM,包括第一隨機(jī)存取存儲(chǔ)器RAM1至第N隨機(jī)存取存儲(chǔ)器RAMn ;
[0052]RAM數(shù)據(jù)更新模塊,用于分別利用從母碼矩陣依次讀出的編碼信息位部分的值和所述N路并行數(shù)據(jù),對RAM1至RAMn所有存儲(chǔ)單元的進(jìn)行數(shù)據(jù)更新處理,如圖1所示,RAM數(shù)據(jù)更新模塊包括分別對應(yīng)于每個(gè)RAM的數(shù)據(jù)更新子模塊,該子模塊可以是異或子模塊;
[0053]校驗(yàn)位生成模塊,用于在完成RAM1至RAMn的所有存儲(chǔ)單元更新處理之后,對依次從RAM1至RAMn中讀出的數(shù)據(jù)進(jìn)行求和運(yùn)算,并將每次求和運(yùn)算的數(shù)據(jù)分別寫入RAMn和第N+1個(gè)隨機(jī)存取存儲(chǔ)器RAMn+1中,然后對RAM1至RAMn+1的數(shù)據(jù)進(jìn)行邏輯運(yùn)算,得到其值為校驗(yàn)位的數(shù)據(jù)。
[0054]需要說明的是,本發(fā)明所涉及的N是大于等于I的整數(shù)。
[0055]本發(fā)明的校驗(yàn)位獲取模塊包括:對依次從RAM1至RAMn中讀出的數(shù)據(jù)進(jìn)行求和運(yùn)算的求和運(yùn)算子模塊(下文將結(jié)合圖5進(jìn)行詳細(xì)說明);對RAM1至RAMn+1的數(shù)據(jù)進(jìn)行異或運(yùn)算以便得到其值為校驗(yàn)位的數(shù)據(jù)的異或運(yùn)算子模塊(下文將結(jié)合圖6進(jìn)行詳細(xì)說明)。
[0056]圖2顯示了本發(fā)明的一種LDPC編碼方法,如圖2所示,該LDPC編碼包括:
[0057]將待編碼數(shù)據(jù)進(jìn)行串并變換后,形成包括第一至第N路數(shù)據(jù)的N路并行數(shù)據(jù);
[0058]包括第一隨機(jī)存取存儲(chǔ)器RAM1至第N隨機(jī)存取存儲(chǔ)器RAMn的N個(gè)RAM分別利用所述N路并行數(shù)據(jù)和從母碼矩陣依次讀出的編碼信息位部分的值,執(zhí)行各自所有存儲(chǔ)單元的數(shù)據(jù)更新處理;其中,RAM1至RAMn的所有存儲(chǔ)單元數(shù)據(jù)更新處理是并行完成的;
[0059]在完成RAM1至RAMn的所有存儲(chǔ)單元數(shù)據(jù)更新處理之后,對依次從RAM1至RAMn中讀出的數(shù)據(jù)進(jìn)行求和運(yùn)算,并將每次求和運(yùn)算的數(shù)據(jù)分別寫入RAMn和第N+1個(gè)隨機(jī)存取存儲(chǔ)器RAMn+1中;
[0060]對RAM1至RAMn+1的數(shù)據(jù)進(jìn)行邏輯運(yùn)算,得到其值為校驗(yàn)位的數(shù)據(jù)。
[0061]此外,母碼矩陣的編碼信息位部分的第一行數(shù)據(jù)至第N行數(shù)據(jù)分別對應(yīng)于RAM1至RAMn的初始地址。
[0062]此外,對于RAM1至RAMn中任一個(gè)隨機(jī)存取存儲(chǔ)器RAMk,執(zhí)行其所有存儲(chǔ)單元的數(shù)據(jù)更新處理包括:
[0063]讀取母碼矩陣的編碼信息位部分的第k行第一個(gè)數(shù)據(jù),得到RAMk的初始地址,再從該初始地址對應(yīng)的存儲(chǔ)單元中讀出一個(gè)數(shù)據(jù),并將該讀出的數(shù)據(jù)與到來的N路數(shù)據(jù)中第k路數(shù)據(jù)進(jìn)行異或運(yùn)算后更新其存儲(chǔ)單元數(shù)據(jù);
[0064]通過將RAMk地址加I,對RAMk中下一個(gè)存儲(chǔ)單元進(jìn)行與上一個(gè)存儲(chǔ)單元相同的數(shù)據(jù)更新處理,直至完成RAM-k所有存儲(chǔ)單元針對母碼矩陣編碼信息位部分第k行第一個(gè)數(shù)據(jù)的數(shù)據(jù)更新處理;
[0065]此后,按序逐一讀出母碼矩陣的編碼信息位部分的第k行的其他數(shù)據(jù),按照RAMk所有存儲(chǔ)單元針對上述第k行第一個(gè)數(shù)據(jù)的數(shù)據(jù)更新處理方式,反復(fù)更新RAM-k所有存儲(chǔ)單元的數(shù)據(jù),直至讀出所述k行中最后數(shù)據(jù),完成RAM-k所有存儲(chǔ)單元的最后數(shù)據(jù)更新處理;
[0066]其中,k是大于等于I且小于等于N的整數(shù)。
[0067]另外,對RAM1至RAMn+1的數(shù)據(jù)進(jìn)行邏輯運(yùn)算得到其值為校驗(yàn)位的數(shù)據(jù)包括:
[0068]對每次寫入RAMjP RAMn+1中的數(shù)據(jù)分別進(jìn)行異或運(yùn)算,得到其值為第一組校驗(yàn)位P(O)的數(shù)據(jù)。
[0069]對RAM1至RAMn+1的數(shù)據(jù)進(jìn)行邏輯運(yùn)算得到其值為校驗(yàn)位的數(shù)據(jù)包括:
[0070]當(dāng)所述P(O)輸出之后,依次讀取RAMn+1和RAM1中的數(shù)據(jù)并進(jìn)行異或運(yùn)算后,寫入RAMl中,并輸出該異或運(yùn)算的值,直至RAMn+1和RAM1中所有存儲(chǔ)單元中的數(shù)據(jù)均讀取完畢,并完成異或運(yùn)算,由此得到其值為第二組校驗(yàn)位P(I)的數(shù)據(jù);以及
[0071]按照對依次讀取的RAMn+1和RAM1的數(shù)據(jù)進(jìn)行處理得到第二組校驗(yàn)位P (I)的方式,對依次讀取的RAM1和RAM2的數(shù)據(jù),RAM2和RAM3的數(shù)據(jù),直至RAMn+1和RAMn的數(shù)據(jù)進(jìn)行相同的處理,分別得到第三組校驗(yàn)位P (2)、第四組校驗(yàn)位P (3),直至第N組校驗(yàn)位P (N-1)。
[0072]另一方面,本發(fā)明可以根據(jù)編碼碼率,確定讀取母碼矩陣的編碼信息位部分?jǐn)?shù)據(jù)的個(gè)數(shù),和確定輸入第一組至第N組校驗(yàn)位中的一組校驗(yàn)位還是多組校驗(yàn)位。一般來說,若編碼的碼率越低,則需要讀取母碼矩陣中信息位部分的數(shù)據(jù)個(gè)數(shù)就越少;若編碼的碼率越高,則需要輸出的校驗(yàn)位就越少。
[0073]下面結(jié)合圖3至圖6所示的本發(fā)明具體實(shí)施例,對上述LDPC編碼方法和編碼裝置進(jìn)行詳細(xì)說明。
[0074]圖3顯示了本發(fā)明的整個(gè)LDPC編碼的實(shí)現(xiàn)結(jié)構(gòu)。其中,RAM的個(gè)數(shù)與母碼矩陣的行數(shù)r有關(guān),若r = 4,則需要5個(gè)RAM ;若r = 8,則需要9個(gè)RAM。每個(gè)RAM大小結(jié)構(gòu)均相同。用4個(gè)或8個(gè)RAM分別對應(yīng)母碼矩陣中的行數(shù),這幾個(gè)RAM可以并行計(jì)算;最后一個(gè)RAM用于暫存計(jì)算過程中的數(shù)據(jù)。此外,圖3還顯示了一些輔助電路,包括:信息位輸入階段控制信號(hào)產(chǎn)生電路,它可以用來讀取母碼矩陣各行的數(shù)據(jù);校驗(yàn)位輸出階段控制信號(hào)產(chǎn)生電路產(chǎn)生,用來生成校驗(yàn)位的控制信號(hào);5個(gè)連接在控制信號(hào)產(chǎn)生電路與5個(gè)RAM之間的選擇電路,用來根據(jù)控制信號(hào)產(chǎn)生相應(yīng)的使能信號(hào)。
[0075]RAM的位寬由并行度P來決定,若數(shù)據(jù)為P = 8路并行輸入,則需要RAM位寬為Sbit15RAM深度由擴(kuò)展因子和并行度共同來決定,若擴(kuò)展因子z為512,要求每個(gè)RAM的存儲(chǔ)容量為512bit,又因?yàn)槲粚捠?bit,所以RAM深度為z/p = 64。以母碼矩陣為4行28列,擴(kuò)展因子為512為例如圖3,信號(hào)位寬P代表與RAM深度有關(guān)系,此處假定為前面計(jì)算出的64為例來詳細(xì)說明計(jì)算過程:
[0076]1、在信息位輸入階段,需要執(zhí)行兩個(gè)操作:1)將輸入的數(shù)據(jù)進(jìn)行寄存后直接輸出;對應(yīng)圖3中的信號(hào)data_in ;2)讀取母碼矩陣中每行的第一個(gè)值,并根據(jù)該值計(jì)算需要訪問四個(gè)RAM的初始地址。母碼矩陣中第一行的數(shù)據(jù)對應(yīng)RAMl的初始地址;母碼矩陣中第二行的數(shù)據(jù)對應(yīng)RAM2的初始地址;母碼矩陣中第三行的數(shù)據(jù)對應(yīng)RAM3的初始地址;母碼矩陣中第四行的數(shù)據(jù)對應(yīng)RAM4的初始地址。具體的計(jì)算方式就是將該值進(jìn)行求補(bǔ)運(yùn)算。并對五個(gè)RAM進(jìn)行初始化寫O操作。該步驟的完成是在圖3中的第一個(gè)模塊信息位輸入階段控制信號(hào)產(chǎn)生電路中完成的。
[0077]2、根據(jù)前一個(gè)步驟中計(jì)算出的RAM的初始地址來訪問對應(yīng)的RAM單元,同時(shí)信息位輸入階段控制信號(hào)產(chǎn)生電路模塊產(chǎn)生對應(yīng)的讀使能信號(hào)。首先從對應(yīng)的地址單元中讀出一個(gè)數(shù)據(jù)(此時(shí)讀出的數(shù)據(jù)應(yīng)該是O),與到來的數(shù)據(jù)進(jìn)行異或運(yùn)算,并將運(yùn)算結(jié)果寫入同樣的地址單元中。如圖4所示。圖中的讀寫地址位寬a= 1g2 (z/p)來計(jì)算得出。同時(shí)RAM的地址加I,等待下一個(gè)數(shù)據(jù)的到來。當(dāng)下一個(gè)數(shù)據(jù)到來時(shí)執(zhí)行同樣的操作:從RAM的地址對應(yīng)的單元中讀出數(shù)據(jù),與到來的數(shù)據(jù)進(jìn)行異或運(yùn)算,并將運(yùn)算結(jié)果寫入同樣的地址單元中。并且,RAM的地址信號(hào)加I。直至訪問到RAM的最后一個(gè)地址單元時(shí),地址信號(hào)進(jìn)行清零。再循環(huán)訪問RAM的第O個(gè)地址單元,直至計(jì)算到RAM的初始地址減一的存儲(chǔ)單元為止。此時(shí)完成了 RAM中所有存儲(chǔ)單元的更新。此過程是四個(gè)RAM的并行操作。
[0078]3、讀取母碼矩陣中每行的下一個(gè)數(shù)據(jù),并根據(jù)該數(shù)據(jù)用與步驟I同樣的方式來計(jì)算RAM的初始地址,并使用與步驟2同樣的方式進(jìn)行計(jì)算。不同的一點(diǎn)是:此時(shí)從RAM中讀取的數(shù)據(jù)是步驟2中寫入RAM的數(shù)據(jù),而非全O。
[0079]4、循環(huán)執(zhí)行步驟3,直至母碼矩陣中信息位部分全部讀取完畢。
[0080]5、此時(shí)LDPC編碼的信息位部分已經(jīng)輸入完畢,開始進(jìn)行校驗(yàn)位的計(jì)算和輸出。從圖3的RAMl?RAM4中的O地址開始依次讀取所有地址單元中的數(shù)據(jù)進(jìn)行求和運(yùn)算,并將結(jié)果寫入RAM5的中間地址(即32)開始的存儲(chǔ)單元中。即分別讀取RAMl?RAM4的O地址單元中的數(shù)據(jù)進(jìn)行求和運(yùn)算,寫入RAM5的地址為33的存儲(chǔ)單元中,同時(shí)寫入RAM4的地址為O的存儲(chǔ)單元中;再讀取地址單元I中的數(shù)據(jù)進(jìn)行求和運(yùn)算,并將結(jié)果寫入地址為34的存儲(chǔ)單元中,同時(shí)寫入RAM4的地址為I的存儲(chǔ)單元中;依次類推,直至四個(gè)RAM的地址單元63中的數(shù)據(jù)被讀取并進(jìn)行求和運(yùn)算,結(jié)果寫入RAM5的地址為31的地址單元中,同時(shí)寫入RAM4的地址為63的存儲(chǔ)單元中。如圖5所示,其中的邏輯運(yùn)算單元是上述的求和運(yùn)算子模塊。
[0081]6、校驗(yàn)位的輸出階段。在步驟5中異或運(yùn)算后的數(shù)據(jù)一方面寫入RAM4和RAM5中,另一方面可直接輸出,因?yàn)樵撝导礊榈谝唤M校驗(yàn)位P (O)的數(shù)據(jù)。當(dāng)P(O)輸出完畢后,從地址單元O開始依次讀取RAM5和RAMl中的數(shù)據(jù)并進(jìn)行異或運(yùn)算后,寫入RAMl中,并將該值進(jìn)行輸出,直至兩個(gè)RAM中所有存儲(chǔ)單元中的數(shù)據(jù)均讀取完畢,并計(jì)算完成。此時(shí),已完成了校驗(yàn)位P(I)的計(jì)算。計(jì)算校驗(yàn)位p(2)時(shí),可通過讀取RAMl和RAM2中的數(shù)據(jù)進(jìn)行異或運(yùn)算后寫入RAM2,并輸出。計(jì)算校驗(yàn)位P (3)時(shí),讀取RAM2、RAM3和RAM4中的數(shù)據(jù)進(jìn)行異或運(yùn)算后直接進(jìn)行輸出。此過程可采用流水線的方法來計(jì)算和輸出。此時(shí)已完成了所有信息位的輸出和校驗(yàn)位的計(jì)算和輸出過程,如圖6所示,其中圖6中的邏輯運(yùn)算單元是上述的異或運(yùn)算子模塊。
[0082]7、如果需要支持不同碼率不同碼長的編碼,若碼率低于28/32,可通過控制減少讀取母碼矩陣中的數(shù)據(jù)個(gè)數(shù)來實(shí)現(xiàn)。例如,若碼率為1/2,則只需要讀取母碼矩陣中信息位部分的最后四列數(shù)據(jù)即可實(shí)現(xiàn)。若碼率高于28/32,如碼率為28/29,可不需要步驟6的計(jì)算過程便可完成。因?yàn)榇藭r(shí)只需要輸出一組校驗(yàn)位P(O)即可完成計(jì)算。
[0083]綜上所述,該LDPC編碼結(jié)構(gòu)具有以下優(yōu)點(diǎn):1、吞吐量大,編碼器的吞吐量與并行度有關(guān),并行度越高,吞吐量越大;2、延遲小,輸入的信息位不需要存儲(chǔ),可直接進(jìn)行輸出;并且信息位輸入輸出完畢后,可連續(xù)輸出每組校驗(yàn)位,中間幾乎沒有延遲;3、電路實(shí)現(xiàn)結(jié)構(gòu)中的RAM位寬與并行度有關(guān),若確定了并行度,RAM位寬也能很容易確定下來;電路結(jié)構(gòu)簡單,資源開銷比較?。?、能夠支持多種碼率的LDPC編碼,而不需另外增加控制電路。5、若母碼矩陣的行列數(shù)目變化時(shí),若行數(shù)變多,只需要增加對應(yīng)RAM數(shù)目即可;若行數(shù)目不變,只是增加列數(shù)目,則對應(yīng)的碼率和輸入信息位的碼長也要變化,電路結(jié)果則不需要改動(dòng)即可實(shí)現(xiàn)對應(yīng)的操作。
[0084]盡管上文對本發(fā)明進(jìn)行了詳細(xì)說明,但是本發(fā)明不限于此,本【技術(shù)領(lǐng)域】技術(shù)人員可以根據(jù)本發(fā)明的原理進(jìn)行各種修改。因此,凡按照本發(fā)明原理所作的修改,都應(yīng)當(dāng)理解為落入本發(fā)明的保護(hù)范圍。
【權(quán)利要求】
1.一種LDPC編碼方法,其特征在于,包括以下步驟: 將待編碼數(shù)據(jù)進(jìn)行串并變換后,形成包括第一至第N路數(shù)據(jù)的N路并行數(shù)據(jù); 包括第一隨機(jī)存取存儲(chǔ)器RAM1至第N隨機(jī)存取存儲(chǔ)器RAMn的N個(gè)RAM分別利用所述N路并行數(shù)據(jù)和從母碼矩陣依次讀出的編碼信息位部分的值,執(zhí)行各自所有存儲(chǔ)單元的數(shù)據(jù)更新處理; 在完成RAM1至RAMn的所有存儲(chǔ)單元數(shù)據(jù)更新處理之后,對依次從RAM1至RAMn中讀出的數(shù)據(jù)進(jìn)行求和運(yùn)算,并將每次求和運(yùn)算的數(shù)據(jù)分別寫入RAMn和第N+1個(gè)隨機(jī)存取存儲(chǔ)器RAMn+1 中; 對RAM1至RAMn+1的數(shù)據(jù)進(jìn)行邏輯運(yùn)算,得到其值為校驗(yàn)位的數(shù)據(jù); 其中,N是大于等于I的整數(shù)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述母碼矩陣的編碼信息位部分的第一行數(shù)據(jù)至第N行數(shù)據(jù)分別對應(yīng)于RAM1至RAMn的初始地址。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,RAM1至RAMn的所有存儲(chǔ)單元數(shù)據(jù)更新處理是并行完成的。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,對于RAM1至RAMn中任一個(gè)隨機(jī)存取存儲(chǔ)器RAMk,執(zhí)行其所有存儲(chǔ) 單元的數(shù)據(jù)更新處理包括: 讀取母碼矩陣的編碼信息位部分的第k行第一個(gè)數(shù)據(jù),得到RAMk的初始地址,再從該初始地址對應(yīng)的存儲(chǔ)單元中讀出一個(gè)數(shù)據(jù),并將該讀出的數(shù)據(jù)與到來的N路數(shù)據(jù)中第k路數(shù)據(jù)進(jìn)行異或運(yùn)算后更新其存儲(chǔ)單元數(shù)據(jù); 通過將RAMk地址加1,對RAMk中下一個(gè)存儲(chǔ)單元進(jìn)行與上一個(gè)存儲(chǔ)單元相同的數(shù)據(jù)更新處理,直至完成RAM-k所有存儲(chǔ)單元針對母碼矩陣編碼信息位部分第k行第一個(gè)數(shù)據(jù)的數(shù)據(jù)更新處理; 此后,按序逐一讀出母碼矩陣的編碼信息位部分的第k行的其他數(shù)據(jù),按照RAMk所有存儲(chǔ)單元針對上述第k行第一個(gè)數(shù)據(jù)的數(shù)據(jù)更新處理方式,反復(fù)更新RAM-k所有存儲(chǔ)單元的數(shù)據(jù),直至讀出所述k行中最后數(shù)據(jù),完成RAM-k所有存儲(chǔ)單元的最后數(shù)據(jù)更新處理; 其中k是大于等于I且小于等于N的整數(shù)。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述的對RAM1至RAMn+1的數(shù)據(jù)進(jìn)行邏輯運(yùn)算得到其值為校驗(yàn)位的數(shù)據(jù)包括: 對每次寫入RAMn和RAMn+1中的數(shù)據(jù)分別進(jìn)行異或運(yùn)算,得到其值為第一組校驗(yàn)位P (O)的數(shù)據(jù)。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述的對RAM1至RAMn+1的數(shù)據(jù)進(jìn)行邏輯運(yùn)算得到其值為校驗(yàn)位的數(shù)據(jù)包括: 當(dāng)所述P(O)輸出之后,依次讀取RAMn+1和RAM1中的數(shù)據(jù)并進(jìn)行異或運(yùn)算后,寫入RAMl中,并輸出該異或運(yùn)算的值,直至RAMn+1和RAM1中所有存儲(chǔ)單元中的數(shù)據(jù)均讀取完畢,并完成異或運(yùn)算,由此得到其值為第二組校驗(yàn)位P (I)的數(shù)據(jù)。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述的對RAM1至RAMn+1的數(shù)據(jù)進(jìn)行邏輯運(yùn)算得到其值為校驗(yàn)位的數(shù)據(jù)包括:按照對依次讀取的RAMn+1和RAM1的數(shù)據(jù)進(jìn)行處理以得到第二組校驗(yàn)位P (I)的方式,對依次讀取的RAM1和RAM2的數(shù)據(jù),RAM2和RAM3的數(shù)據(jù),直至RAMlri和RAMn的數(shù)據(jù)進(jìn)行相同的處理,分別得到第三組校驗(yàn)位P (2)、第四組校驗(yàn)位P (3),直至第N組校驗(yàn)位P (N-1)。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,根據(jù)編碼碼率與母碼矩陣碼率的關(guān)系,確定讀取母碼矩陣的編碼信息位部分?jǐn)?shù)據(jù)的個(gè)數(shù),和確定輸入第一組至第N組校驗(yàn)位中的一組校驗(yàn)位還是多組校驗(yàn)位。
9.一種LDPC編碼裝置,其特征在于,包括: 串并變換模塊,用于將待編碼數(shù)據(jù)進(jìn)行串并變換,形成包括第一至第N路數(shù)據(jù)的N路并行數(shù)據(jù); 與用來編碼的母碼矩陣的N行一一對應(yīng)的N個(gè)RAM,包括第一隨機(jī)存取存儲(chǔ)器RAM1至第N隨機(jī)存取存儲(chǔ)器RAMn ; RAM數(shù)據(jù)更新模塊,用于分別利用從母碼矩陣依次讀出的編碼信息位部分的值和所述N路并行數(shù)據(jù),對RAM1至RAMn所有存儲(chǔ)單元的進(jìn)行數(shù)據(jù)更新處理 校驗(yàn)位生成模塊,用于在完成RAM1至RAMn的所有存儲(chǔ)單元更新處理之后,對依次從RAM1至RAMn中讀出的數(shù)據(jù)進(jìn)行求和運(yùn)算,并將每次求和運(yùn)算的數(shù)據(jù)分別寫入RAMn和第N+1個(gè)隨機(jī)存取存儲(chǔ)器RAMn+1中,然后對RAM1至RAMn+1的數(shù)據(jù)進(jìn)行邏輯運(yùn)算,得到其值為校驗(yàn)位的數(shù)據(jù); 其中,N是大于等于I的整數(shù)。
10.根據(jù)權(quán)利要 求9所述的LDPC編碼裝置,其特征在于,所述的校驗(yàn)位獲取模塊包括: 對依次從RAM1至RAMn中讀出的數(shù)據(jù)進(jìn)行求和運(yùn)算的求和運(yùn)算子模塊; 對RAM1至RAMn+1的數(shù)據(jù)進(jìn)行異或運(yùn)算以便得到其值為校驗(yàn)位的數(shù)據(jù)的異或運(yùn)算子模塊。
【文檔編號(hào)】H03M13/11GK103634014SQ201210305156
【公開日】2014年3月12日 申請日期:2012年8月24日 優(yōu)先權(quán)日:2012年8月24日
【發(fā)明者】張兵峰 申請人:中興通訊股份有限公司