本發(fā)明屬于信道編碼技術(shù)領(lǐng)域,具體說(shuō)是一種碼長(zhǎng)自適應(yīng)的llr-bp譯碼器。
背景技術(shù):
ldpc碼即低密度奇偶校驗(yàn)碼(lowdensityparitycheckcode),由robertg.gallager博士于1962年提出的一類具有稀疏校驗(yàn)矩陣的線性分組碼。不僅有逼近香農(nóng)極限的良好性能,且譯碼復(fù)雜度較低、結(jié)構(gòu)靈活,仍是近年信道編碼領(lǐng)域的研究熱點(diǎn),在移動(dòng)通信中具有良好的應(yīng)用前景。
隨著碼長(zhǎng)增加,ldpc譯碼矩陣維數(shù)大幅增加,算法復(fù)雜度大大增加,譯碼實(shí)現(xiàn)的硬件邏輯資源占用多。針對(duì)軟硬判決算法和fpga實(shí)現(xiàn)等方面展開較為深入的研究,主要有以下幾種算法。
(1)硬判決算法。主要算法有:比特翻轉(zhuǎn)算法(bf)、基于軟信息的加權(quán)比特翻轉(zhuǎn)法(wbf)、klf加權(quán)位翻轉(zhuǎn)譯碼(klf-wbf)算法、lp加權(quán)比特翻轉(zhuǎn)(lp-wbf)算法、修正權(quán)重bf譯碼算法(imwbf)、可靠性比特加權(quán)翻轉(zhuǎn)算法(rrwbf)、基于bf算法的聯(lián)合概率比特反轉(zhuǎn)(jpwbf)算法。
(2)軟判決算法。主要算法有:基于軟判決的ldpc譯碼算法、置信傳播(bp)算法、llr-bp算法、改進(jìn)llr-bp譯碼算法、最小和譯碼算法(min-sum)、歸一化最小和算法(normalizedmin-sum)、bp改進(jìn)算法、sbp(shuffled-bp,sbp)算法、交疊的shuffled-bp(overlappedshuffled-bp,osbp)譯碼算法。
ldpc碼性能優(yōu)越性通常在碼長(zhǎng)較長(zhǎng)時(shí)才能體現(xiàn),但碼率不變,校驗(yàn)矩陣h結(jié)構(gòu)固定,難以同時(shí)實(shí)現(xiàn)多碼長(zhǎng)的譯碼工作。另一方面,譯碼算法皆基于bp算法基礎(chǔ)上做出的改進(jìn),但llr-bp具有最好的誤碼性能。
ldpc譯碼器的fpga實(shí)現(xiàn)結(jié)構(gòu)主要有三種:全并行結(jié)構(gòu)、串行結(jié)構(gòu)和部分并行結(jié)構(gòu)。在全并行譯碼器中,所有校驗(yàn)節(jié)點(diǎn)或者變量節(jié)點(diǎn)同時(shí)進(jìn)行更新,譯碼速度非常快,但是譯碼器中節(jié)點(diǎn)處理單元的數(shù)目和和各處理單元與存儲(chǔ)單元之間連線的復(fù)雜度隨著碼長(zhǎng)的增長(zhǎng)快速增加,因此只適合于中短碼長(zhǎng)和對(duì)譯碼速率要求極高的場(chǎng)合。串行譯碼器中校驗(yàn)節(jié)點(diǎn)或變量節(jié)點(diǎn)的更新是單個(gè)依次進(jìn)行的,資源消耗比較少,但由于其譯碼速率過(guò)低小適合高速應(yīng)用。由于部分并行結(jié)構(gòu)既能快速實(shí)現(xiàn)譯碼,又能節(jié)省硬件資源優(yōu)點(diǎn)而被廣泛采用。但現(xiàn)有的ldpc譯碼器結(jié)構(gòu)適應(yīng)能力差、擴(kuò)展能力有限,僅能進(jìn)行單一碼長(zhǎng)的譯碼工作。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)傳統(tǒng)ldpc譯碼器適應(yīng)能力差、擴(kuò)展能力有限的缺點(diǎn),本發(fā)明提出了一種碼長(zhǎng)自適應(yīng)的llr-bp譯碼器,該譯碼器提高了譯碼速度、降低了硬件邏輯資源占有率,并解決了多碼長(zhǎng)同時(shí)譯碼的問(wèn)題。
為實(shí)現(xiàn)上述目的,本申請(qǐng)采用的技術(shù)方案是:一種碼長(zhǎng)自適應(yīng)的llr-bp譯碼器,包括:初始數(shù)據(jù)緩沖模塊、校驗(yàn)節(jié)點(diǎn)處理模塊、中間信息存儲(chǔ)模塊、變量節(jié)點(diǎn)處理模塊、控制模塊、輸出緩存模塊、譯碼判決模塊;所述中間信息存儲(chǔ)模塊,包括:地址控制器和后驗(yàn)概率信息存儲(chǔ)器;所述控制模塊分別與初始數(shù)據(jù)緩沖模塊、校驗(yàn)節(jié)點(diǎn)處理模塊、中間信息存儲(chǔ)模塊、變量節(jié)點(diǎn)處理模塊、輸出緩存模塊、譯碼判決模塊相連。
進(jìn)一步,初始數(shù)據(jù)緩沖模塊是用來(lái)緩存信道的待譯碼數(shù)據(jù),該模塊用來(lái)存儲(chǔ)量化后的初始數(shù)據(jù),緩沖模塊為12*24的存儲(chǔ)矩陣,每個(gè)存儲(chǔ)矩陣的大小z*z由碼的長(zhǎng)度n決定,z=n/24;鑒于這一特性,該模塊根據(jù)碼長(zhǎng)自動(dòng)調(diào)整存儲(chǔ)矩陣中子方陣pij(i表示行,j表示列)的大??;設(shè)待譯碼數(shù)據(jù)為[v1,v2,...vn-1,vn],n個(gè)待譯碼數(shù)按列方向?qū)?shù)據(jù)存入校驗(yàn)矩陣h數(shù)值為1的pij,校驗(yàn)矩陣h數(shù)值為0的位置不存儲(chǔ)數(shù)據(jù),cnp的讀寫地址可以按照0~23的順序進(jìn)行;信道信息皆為浮點(diǎn)型,量化放大后存儲(chǔ),位寬為12bit,最高位為符號(hào)位,以16進(jìn)制存儲(chǔ)。例:0.52427,精確到2-11,為0.10000110001(二進(jìn)制),然后按位左移得到12’h431,通過(guò)移位寄存器得到。緩沖模塊如圖2所示。
進(jìn)一步的,校驗(yàn)節(jié)點(diǎn)處理模塊完成校驗(yàn)節(jié)點(diǎn)信息更新功能,cnp的并行度為12,其中cnp的并行度是按ieee802.16e標(biāo)準(zhǔn)中校驗(yàn)矩陣行數(shù)最多的1/2碼率來(lái)設(shè)定的。從存儲(chǔ)矩陣中子方陣pij中讀取數(shù)據(jù)進(jìn)行校驗(yàn)節(jié)點(diǎn)更新,按照校驗(yàn)矩陣h每個(gè)比特節(jié)點(diǎn)所在的行進(jìn)行更新。
更進(jìn)一步的,將校驗(yàn)矩陣h劃分為多個(gè)子塊;在子塊中,所有校驗(yàn)節(jié)點(diǎn)共用一個(gè)校驗(yàn)節(jié)點(diǎn)處理模塊,所有變量節(jié)點(diǎn)共用一個(gè)變量節(jié)點(diǎn)處理模塊;子塊內(nèi)進(jìn)行串行譯碼,而子塊與子塊之間進(jìn)行全并行譯碼;初始數(shù)據(jù)緩沖模塊可以根據(jù)碼長(zhǎng)自動(dòng)調(diào)整存儲(chǔ)矩陣的大小。
更進(jìn)一步的,控制模塊給變量節(jié)點(diǎn)處理模塊一個(gè)啟動(dòng)信號(hào)vnp_on(高有效)開始,變量節(jié)點(diǎn)處理模塊從中間信息存儲(chǔ)模塊中的地址控制器里面讀取按列存儲(chǔ)的信息,vnp的讀寫地址按照rem((p(i,j))+n,24),n=0,1,2…23的順序輸出,p(i,j)為pij的子矩陣。rst=1’b0或vnp_on=1’b0,開始進(jìn)行變量節(jié)點(diǎn)的更新;從中間信息存儲(chǔ)模塊中的后驗(yàn)概率信息存儲(chǔ)器里面讀取rji,根據(jù)下面公式進(jìn)行更新,vnp的并行度為24;
l(pi)為初始概率似然比信息,i=1,2,…,n。
對(duì)每一個(gè)變量節(jié)點(diǎn)i和與其相鄰的檢驗(yàn)節(jié)點(diǎn)j∈c(i),設(shè)定變量節(jié)點(diǎn)傳向校驗(yàn)節(jié)點(diǎn)的初始信息;
l(l)(rji)為變量節(jié)點(diǎn)傳向校驗(yàn)節(jié)點(diǎn)的消息:
其中,設(shè)碼字c=(c1,c2,…,cn),經(jīng)過(guò)bpsk調(diào)制后,發(fā)送序列x=(x1,x2,…,xn),接收序列y=(y1,y2,…,yn),噪聲為n0;譯碼序列
進(jìn)一步的,控制模塊為該譯碼器的核心,既管理譯碼器所有模塊,且為存儲(chǔ)模塊提供讀寫地址信號(hào)??刂颇K完成系統(tǒng)控制的功能,包括迭代次數(shù)的控制:
根據(jù)變量節(jié)點(diǎn)處理模塊的結(jié)束信號(hào)donea1發(fā)出cnp_on=1’b0決定下一個(gè)狀態(tài)工作的是校驗(yàn)節(jié)點(diǎn)處理模塊;
根據(jù)校驗(yàn)節(jié)點(diǎn)處理模塊的結(jié)束信號(hào)doneb0發(fā)出vnp_on=1’b0決定下一個(gè)狀態(tài)工作的是變量節(jié)點(diǎn)處理模塊;
success=1’b0為譯碼成功標(biāo)志,可提前結(jié)束迭代,輸出譯碼結(jié)果;last_iter信號(hào)(高有效)為最后一個(gè)迭代周期,譯碼結(jié)束。用verilog硬件語(yǔ)言對(duì)control模塊進(jìn)行描述,控制模塊綜合電路如圖5所示。
更進(jìn)一步的,譯碼判決模塊接收來(lái)自輸出緩存模塊的信號(hào)result_out,通過(guò)公式
本發(fā)明由于采用以上技術(shù)方案,能夠取得如下的技術(shù)效果:本申請(qǐng)采用提前終止迭代譯碼策略,有效降低了算法迭代次數(shù);采用取極限方法實(shí)現(xiàn)llr-bp譯碼算法中復(fù)雜概率函數(shù)的運(yùn)算,降低算法實(shí)現(xiàn)的復(fù)雜度。在保證誤碼率的前提下,本譯碼器有效提高了譯碼速度、降低了硬件邏輯資源占有率,并解決了多碼長(zhǎng)同時(shí)譯碼的問(wèn)題。
附圖說(shuō)明
為了更清楚的說(shuō)明本發(fā)明的實(shí)施例或現(xiàn)有技術(shù)的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖做一簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例提供的部分并行譯碼器結(jié)構(gòu)框圖;
圖2為本發(fā)明實(shí)施例提供的初始數(shù)據(jù)緩沖模塊;
圖3為本發(fā)明實(shí)施例提供的cnp模塊綜合電路圖;
圖4為本發(fā)明實(shí)施例提供的vnp模塊框圖;
圖5為本發(fā)明實(shí)施例提供的控制模塊綜合電路圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)描述。
本實(shí)施例公開了一種碼長(zhǎng)自適應(yīng)的llr-bp譯碼器,為實(shí)現(xiàn)不同碼長(zhǎng)的譯碼,本譯碼器以1/2碼率為例,采用部分并行的結(jié)構(gòu)。所述譯碼器,包括初始數(shù)據(jù)緩沖模塊、校驗(yàn)節(jié)點(diǎn)處理模塊(checknodeprocessor,cnp)、中間信息存儲(chǔ)模塊(mess_mem)、變量節(jié)點(diǎn)處理模塊(variablenodeprocessor,vnp)、控制模塊(control)、輸出緩存模塊、譯碼判決模塊等;所述中間信息存儲(chǔ)模塊,包括:地址控制器rom和后驗(yàn)概率信息存儲(chǔ)器ram;部分并行譯碼器結(jié)構(gòu)框圖如圖1所示。
將校驗(yàn)矩陣h劃分為多個(gè)子塊。在子塊中,所有校驗(yàn)節(jié)點(diǎn)共用一個(gè)cnp模塊,所有變量節(jié)點(diǎn)共用一個(gè)vnp模塊。子塊內(nèi)進(jìn)行串行譯碼,而子塊與子塊之間進(jìn)行全并行譯碼。中間信息存儲(chǔ)模塊可以根據(jù)碼長(zhǎng)自動(dòng)調(diào)整存儲(chǔ)矩陣的大小。
信道信息經(jīng)過(guò)量化之后存入初始數(shù)據(jù)緩沖模塊,控制模塊發(fā)出指令cnp_on,譯碼開始。vnp模塊和cnp模塊在控制模塊的控制下交替完成所有變量節(jié)點(diǎn)和校驗(yàn)節(jié)點(diǎn)的運(yùn)算。vnp和cnp從中間信息存儲(chǔ)模塊中讀取信息,并將節(jié)點(diǎn)更新結(jié)果重新寫回中間信息存儲(chǔ)模塊。由于vnp和cnp是交替工作的,所以設(shè)計(jì)中可以通過(guò)地址控制模塊合理安排訪問(wèn),并且沒(méi)有訪問(wèn)沖突問(wèn)題。本譯碼器所有處理數(shù)據(jù)信息均采用12bit量化,最高位為符號(hào)位。
初始數(shù)據(jù)緩沖模塊是用來(lái)緩存信道的待譯碼數(shù)據(jù),該模塊用來(lái)存儲(chǔ)量化后的初始數(shù)據(jù),緩沖模塊為12*24的存儲(chǔ)矩陣,每個(gè)存儲(chǔ)矩陣的大小z*z由碼的長(zhǎng)度n決定,z=n/24。鑒于這一特性,該模塊根據(jù)碼長(zhǎng)的自動(dòng)調(diào)整存儲(chǔ)矩陣中子方陣pij(i表示行,j表示列)的大小。設(shè)待譯碼數(shù)據(jù)為[v1,v2,...vn-1,vn],n個(gè)待譯碼數(shù)按列方向?qū)?shù)據(jù)存入校驗(yàn)矩陣h數(shù)值為1的pij,校驗(yàn)矩陣h數(shù)值為0的位置不存儲(chǔ)數(shù)據(jù),cnp的讀寫地址可以按照0~23的順序進(jìn)行。信道信息皆為浮點(diǎn)型,量化放大后存儲(chǔ),位寬為12bit,最高位為符號(hào)位,以16進(jìn)制存儲(chǔ)。例:0.52427,精確到2-11,為0.10000110001(二進(jìn)制),然后按位左移得到12’h431,通過(guò)移位寄存器得到。緩沖模塊如圖2所示。
校驗(yàn)節(jié)點(diǎn)處理模塊完成校驗(yàn)節(jié)點(diǎn)信息更新功能,cnp的并行度為12,其中cnp的并行度是按ieee802.16e標(biāo)準(zhǔn)中校驗(yàn)矩陣行數(shù)最多的1/2碼率來(lái)設(shè)定的。從pij中讀取數(shù)據(jù)進(jìn)行校驗(yàn)節(jié)點(diǎn)更新運(yùn)算,按照校驗(yàn)矩陣h每個(gè)比特節(jié)點(diǎn)所在的行進(jìn)行更新。pij中的數(shù)據(jù)按列存儲(chǔ),便于cnp的讀寫地址順序輸出。
vnp模塊框圖如圖4所示。control模塊給vnp一個(gè)啟動(dòng)信號(hào)vnp_on(高有效)開始,vnp模塊從中間信息緩存模塊rom里面讀取按列存儲(chǔ)的信息,vnp的讀寫地址按照rem((p(i,j))+n,24),n=0,1,2…23的順序輸出,p(i,j)為pij的子矩陣。rst=1’b0或vnp_on=1’b0,開始進(jìn)行變量節(jié)點(diǎn)的更新。
控制模塊為該譯碼器的核心,既管理譯碼器所有模塊,且為存儲(chǔ)模塊提供讀寫地址信號(hào)??刂颇K完成系統(tǒng)控制的功能,包括迭代次數(shù)的控制,根據(jù)vnp(cnp)的結(jié)束信號(hào)donea1(doneb0)發(fā)出cnp_on=1’b0(vnp_on=1’b0)決定下一個(gè)狀態(tài)工作的是cnp模塊(vnp模塊);success=1’b0為譯碼成功標(biāo)志,可提前結(jié)束迭代,輸出譯碼結(jié)果;last_iter信號(hào)(高有效)為最后一個(gè)迭代周期,譯碼結(jié)束。用verilog硬件語(yǔ)言對(duì)control模塊進(jìn)行描述,控制模塊綜合電路如圖5所示。
譯碼判決模塊接收來(lái)自輸出緩沖模塊(result_mem)的信號(hào)result_out,通過(guò)公式
本發(fā)明提供了一種碼長(zhǎng)自適應(yīng)的llr-bp譯碼器,提高了譯碼速度、降低了硬件邏輯資源占有率,并解決了多碼長(zhǎng)同時(shí)譯碼的問(wèn)題。
以上所述,僅為本發(fā)明較佳的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明披露的技術(shù)范圍內(nèi),根據(jù)本發(fā)明的技術(shù)方案及其發(fā)明構(gòu)思加以等同替換或改變,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。