專利名稱:節(jié)省存儲資源的多元ldpc碼譯碼方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信系統(tǒng),屬于數(shù)字通信系統(tǒng)中的前向糾錯裝置,特別是提供一種多 元LDPC碼的譯碼方法,可以在信道編碼方式為多元LDPC碼的通信系統(tǒng)中采用,尤其適用于 以自適應(yīng)編碼調(diào)制技術(shù)為核心的寬帶無線通信系統(tǒng),以滿足高速高效的要求。
背景技術(shù):
LDPC碼是一類校驗矩陣為稀疏矩陣的線性分組碼,最早由Gallager于1962年提 出,譯碼器使用了低復(fù)雜度的迭代譯碼算法。由于受到當(dāng)時計算能力的限制,LDPC碼曾一 度被認(rèn)為是一種不實用碼,很長的一段時間內(nèi)被人們所忽視。到了上世紀(jì)90年代初Turbo 碼的問世,特別是硬件水平的飛速發(fā)展,LDPC碼的優(yōu)異性能才重新為人們所認(rèn)識。1996年, MacKay和Neal指出具有線性譯碼復(fù)雜度的隨機構(gòu)造的LDPC長碼可以與Turbo碼匹敵。 1997年Luby等擴展了 Gallager的規(guī)則LDPC碼,提出了性能更優(yōu)越的非規(guī)則LDPC碼。目 前,大部分研究工作以及發(fā)明專利是針對二元LDPC碼的。一些具有高速、快速譯碼算法、 低存儲器需求的結(jié)構(gòu)型二元LDPC譯碼器已經(jīng)被廣泛應(yīng)用到各種通信系統(tǒng)中,如3GPP2、 802. 16e、802. Iln 等等。1998年,Davey和MacKay研究了多元LDPC碼,結(jié)果表明其性能要優(yōu)于二元LDPC 碼,但這是以更大的編譯碼復(fù)雜度換取的。2005年,Shu Lin等人提出了幾種基于有限域構(gòu) 造多元準(zhǔn)循環(huán)LDPC碼的方法,其編碼增益超過采用代數(shù)譯碼算法下相同碼長和碼率的RS碼。與二元LDPC碼相比,多元LDPC碼的不僅具有更好的糾錯性能,并且抗突發(fā)錯誤能 力強、適合高速率傳輸。但是現(xiàn)有的多元LDPC的研究工作做得相對較少,存在很多問題 包括較高的存儲空間以及較復(fù)雜的編碼過程等方面。尤其是在多元LDPC碼的譯碼問題上, 多元LDPC符號所在的域是GF(q),其中q = 2m。由于多元LDPC碼譯碼算法是在符號級上 的,所以標(biāo)準(zhǔn)的和積算法的實現(xiàn)復(fù)雜度會隨著m的增加而迅速增加。另一方面,為提高多元 LDPC碼的糾突發(fā)錯誤能力,又希望增大m,因此就形成了多元LDPC碼在譯碼算法復(fù)雜度和 糾錯性能之間的不平衡性。
發(fā)明內(nèi)容
本發(fā)明的目的是為了克服現(xiàn)有技術(shù)的不足,提供一種節(jié)省存儲資源的多元LDPC 碼譯碼方法及設(shè)備,以實現(xiàn)多元LDPC碼中譯碼復(fù)雜度和糾錯性能的平衡,在譯碼復(fù)雜度固 定情況下,降低對譯碼設(shè)備中存儲空間的高容量需求,以便使GF (q)域上的多元LDPC碼在 實際系統(tǒng)中得到更好的應(yīng)用。為實現(xiàn)上述目的,本發(fā)明提出一種節(jié)省存儲資源的多元LDPC碼譯碼裝置,包括加載模塊,用于接收并存儲軟信息;變量節(jié)點更新模塊,用于接收校驗節(jié)點傳輸?shù)男畔⒉⑵浒闯羞\算,更新變量 節(jié)點的信息,并將更新后的自身信息傳輸給校驗節(jié)點更新模塊;
校驗節(jié)點更新模塊,用于接收變量節(jié)點傳輸?shù)男畔⒉⑵浒闯羞\算,更新校驗 節(jié)點的信息,并將更新后的信息傳輸給變量節(jié)點更新模塊;路由模塊,用于存儲校驗矩陣H中變量節(jié)點和校驗節(jié)點的互聯(lián)信息,傳輸給變量 節(jié)點更新模塊和校驗節(jié)點更新模塊作為迭代時的運算關(guān)系;卸載模塊,用于接收和判決每輪變量節(jié)點更新模塊迭代運算完成后的信息序列C, 如果CHt = 0成立,則將譯碼結(jié)果C中的信息位輸出;如若達到最大迭代次數(shù),無論CHT = 0 是否成立,都要將譯碼結(jié)果c中的信息位輸出;控制邏輯模塊,用于向所述的各個模塊傳送控制信息,使其處于正常的工作時序 下,保證數(shù)據(jù)流動的正確性。為實現(xiàn)上述目的,本發(fā)明提出的一種節(jié)省存儲資源的多元LDPC譯碼方法,包括如 下步驟(1)加載模塊接收和儲存調(diào)器輸出的解調(diào)信息向量;(2)變量節(jié)點更新模塊從加載模塊中讀取解調(diào)信息向量,并將向量中的nm個較大 實值及其對應(yīng)的域值傳遞給校驗節(jié)點,nffl ^ q, q為多元LDPC碼所在的GF (q)域的大??;(3)校驗節(jié)點更新模塊從路由模塊中讀取信息向量,首先對信息向量做域值置換, 之后對信息向量進行超行運算,并對運算結(jié)果做逆域值置換,最后將運算結(jié)果填入路由模 塊中的存儲空間;(4)變量節(jié)點更新模塊從路由模塊中讀取信息向量,進行超列運算后,將運算結(jié)果 填入路由模塊中的存儲空間,并將更新后全部變量節(jié)點信息組成的譯碼序列c傳遞給卸載 模塊;(5)卸載模塊對譯碼序列c進行判決,若滿足cHT = 0或達到最大迭代次數(shù),則將 譯碼序列中的信息位輸出,并記錄當(dāng)前輪次迭代次數(shù);否則,轉(zhuǎn)到步驟(3)。本發(fā)明的技術(shù)優(yōu)點在于1)在初始化變量節(jié)點更新模塊和校驗節(jié)點更新模塊之間存儲空間向量深度時,只 存儲有限域階數(shù)q值中的部分值m,可節(jié)省很大的存儲資源。利用本發(fā)明所述的方法,如將 存儲向量的深度降低至原來的1/2,可以節(jié)省總存儲資源的25%。2)利用變量節(jié)點更新模塊和校驗節(jié)點更新模塊在迭代計算的過程中的迭代時間 差,在實現(xiàn)上可以只需一塊存儲空間用來存儲變量節(jié)點更新模塊和校驗節(jié)點更新模塊的運 算結(jié)果。任一個模塊將單口存儲空間中的數(shù)據(jù)取出進行相關(guān)運算后,運算得出的數(shù)據(jù)分別 回填至原同一塊存儲空間中的相同地址中,可用于另一模塊進行下次迭代運算填入數(shù)據(jù)。 由于變量節(jié)點更新模塊和校驗節(jié)點更新模塊在迭代計算的過程中需要存儲的數(shù)據(jù)量很大, 采用本發(fā)明所述的方法可以大大降低迭代運算所需的存儲資源。在存儲資源固定的情況 下,可將節(jié)約下的存儲資源分配給加載模塊中的乒乓存儲空間,以便接收和存儲更多幀軟 信息。如若不分配給加載模塊,單此方法又可減少總存儲資源的25%。綜上所述,采用本發(fā)明所提出的譯碼設(shè)備和實現(xiàn)方法可節(jié)省存儲資源總需求的 50%,因此本發(fā)明所述的實現(xiàn)方法具有較大的實際意義。
圖1是本發(fā)明的多元LDPC譯碼裝置總體結(jié)構(gòu)示意圖2是本發(fā)明多元LDPC譯碼裝置中的加載模塊存儲器結(jié)構(gòu)示意圖;圖3是本發(fā)明多元LDPC譯碼裝置中變量節(jié)點更新模塊結(jié)構(gòu)示意圖;圖4是本發(fā)明多元LDPC譯碼裝置中降序器結(jié)構(gòu)示意圖;圖5是本發(fā)明多元LDPC譯碼裝置中校驗節(jié)點更新模塊結(jié)構(gòu)示意圖;圖6是本發(fā)明多元LDPC譯碼裝置中路有模塊中存儲結(jié)構(gòu)示意圖;圖7是本發(fā)明的多元LDPC譯碼方法流程圖;圖8是本發(fā)明采用的多元LDPC碼校驗矩陣分塊結(jié)構(gòu)示意圖。
具體實施例方式參照圖1,本發(fā)明的多元LDPC譯碼裝置主要由加載模塊、變量節(jié)點更新模塊、校驗 節(jié)點更新模塊、路由模塊、控制邏輯模塊和卸載模塊組成。其中加載模塊,用于接收并存儲軟信息,供變量節(jié)點更新模塊讀取。該模塊的結(jié)構(gòu)如圖 2所示,其存儲空間區(qū)域分為相同大小的兩部分RAMI和RAM2,區(qū)別這兩部分主要靠寫地址 W_ADD或讀地址R_ADD的最高位,最高位為0時,表示在對RAMI部分進行寫或讀操作,反之, 則表示在對RAM2部分進行寫或讀操作。在對RAMI部分寫入數(shù)據(jù)緩沖時,讀出RAM2部分的 數(shù)據(jù)進行譯碼;在對RAM2部分寫入數(shù)據(jù)緩沖時,讀出RAMI部分的數(shù)據(jù)進行譯碼;如此交替 完成數(shù)據(jù)的緩沖存儲和迭代譯碼時的讀取工作。這里要說明的是譯碼對象是GF(q)域上的 多元LDPC碼,需要對數(shù)據(jù)降序排列后再寫入存儲空間。在完成一幀數(shù)據(jù)緩沖,即寫入RAMI 部分后,發(fā)出一個存儲位置地址信息和接收完畢信號給控制邏輯模塊。由控制邏輯模塊發(fā) 出譯碼開始信號;同時將寫地址指向RAM2,即將接下來的一幀軟信息緩存入RAM2部分;讀 地址指向RAMI,即等待下一幀軟信息并開始本幀軟信息的譯碼。變量節(jié)點更新模塊,用于實現(xiàn)初始化、變量節(jié)點更新和譯碼判決三個功能,它需要的數(shù)據(jù)來自兩個方面,一方面是加載模塊中存儲的初始軟信息,另一方面是校驗節(jié)點傳遞 給變量節(jié)點的信息。該變量節(jié)點更新模塊在首次迭代中只進行初始化,之后的每次迭代,只 進行變量節(jié)點更新以及譯碼判決。所述的初始化功能只需要將初始軟信息向量中的^個 較大實值及其對應(yīng)的域值傳遞給校驗節(jié)點,其中,q,q為多元LDPC碼所在的GF(q)域 的大小。所述的變量節(jié)點更新功能需要計算出所有變量節(jié)點傳遞給校驗節(jié)點的信息向量, 其中某一變量節(jié)點傳遞給與其相連的校驗節(jié)點的信息向量的計算需要兩部分信息向量,一 部分是除該校驗節(jié)點之外與該變量節(jié)點相連的校驗節(jié)點傳遞的信息向量,另一部分是初始 解調(diào)信息向量向量。對這些信息向量進行超列運算的過程是首先從中任選兩個信息向量 作為超列運算的輸入,之后的每次超列運算的兩個輸入為前一次運算的結(jié)果以及任意一個 未參與過運算的信息向量,如此直至所有信息向量均參與過超列運算,并且將最后一次超 列運算的結(jié)果傳遞給相應(yīng)校驗節(jié)點。超列運算的結(jié)構(gòu)如圖3所示,它的兩個輸入向量MEM_ VI和MEM_VA分別包含實值向量Rvi和Rva及其對應(yīng)的域值向量α VI和α VA,輸出為向量Rvb 及其對應(yīng)的域值向量ανΒ,所有向量長度均為nm,nm<q,q為多元LDPC碼所在的GF(q)域 的大小,具體運算如下for all (j from 0 to nm_l)doif (aVI[j] e a VA) thenk aVA[k] = aVI[j]
elseS ^ [R11I]+Y^AJ])end ifend forfor all (i from 0 to nm_l)doif( α以thenS<^{Rl/A\i]+Y,aVA\i]}end ifend for上式中S ^是指將數(shù)據(jù)送入排序器。該排序器的結(jié)構(gòu)如圖4所示,它包含nm ^ q 個比較器和寄存器,q為多元LDPC碼所在的GF (q)域的大小,每個寄存器根據(jù)輸入的實值 與寄存器的實值的比較結(jié)果決定是否更新,若輸入的實值大于該寄存器的實值并且小于其 左側(cè)寄存器的值,則將輸入更新為該寄存器的值,若輸入的實值大于該寄存器的實值并且 大于其左側(cè)寄存器的值,則將其左側(cè)寄存器的值更新為該寄存器的值,否則不更新該寄存 器。所述的譯碼判決功能是將與變量節(jié)點相連的所有校驗節(jié)點傳遞的信息向量以及解調(diào)信 息向量向量進行超列運算的結(jié)果中最大實值對應(yīng)的域值作為判決結(jié)果c,并將c傳遞給卸 載模塊。校驗節(jié)點更新模塊,用于完成域值置換、校驗節(jié)點更新和逆域值置換三個功能,它 首先對接收信息向量中的域值做域值置換,之后計算出校驗節(jié)點傳遞給變量節(jié)點的信息向 量,最終對傳遞的信息向量中的域值做逆域值置換。所述的域值置換功能是對接收向量中 的域值與其在校驗矩陣中對應(yīng)的域值做域上乘法運算,并且用運算結(jié)果覆蓋接收向量中的 域值,為了減少域上乘法運算,將校驗矩陣中的域值與域上的所有元素逐一做域上乘法,結(jié) 果存儲于ROM中,則域值置換只需讀取ROM中存儲的值,ROM的讀地址與需要置換的域值大 小相同。所述的校驗節(jié)點更新功能需要計算出所有校驗節(jié)點傳遞給變量節(jié)點的信息向量, 其中某一校驗節(jié)點傳遞給與其相連的變量節(jié)點的信息向量的計算,僅需要該變量節(jié)點之外 與該校驗節(jié)點相連的變量節(jié)點傳遞的信息向量。對這些信息向量進行超行運算的過程是 首先從中任選兩個信息向量作為超行運算的輸入,之后的每次超行運算的兩個輸入為前一 次運算的結(jié)果以及任意一個未參與過運算的信息向量,如此直至所有信息向量均參與過超 行運算并且將最后一次超行運算的結(jié)果傳遞給相應(yīng)變量節(jié)點。超行運算如圖5所示,它的 兩個輸入向量MEM_CI和MEM_CA分別包含實值向量Ra和Rca及其對應(yīng)的域值向量α CI和 α 輸出為實值向量Rcb及其對應(yīng)的域值向量α c;B,所有向量長度均為nm,nffl ^ q, q為多元 LDPC碼所在的GF(q)域的大小,具體運算采用如下的超行運算for all (i from 0 to nm_l)do5 ^= {RCM + Ra
aa [(φ·,θ}end forfor all (i from 0 to nm-l) doi = indexA
j = indexl
+lif( aCA [/] @ aC] [/] ^B) thenS <= {Rca [/] + Ra [j\aCA [/] θ αα i, j]end ifend for上式中S ^是指將數(shù)據(jù)送入排序模塊。所述的逆域值置換功能是對傳遞信息向量 中的域值與其在校驗矩陣中對應(yīng)的域值的域上除法運算,并且運算結(jié)果覆蓋傳遞信息向量 中的域值,為了減少域上除法運算,將校驗矩陣中的域值與域上的所有元素逐一做域上除 法,并將結(jié)果存儲于ROM中,則逆域值置換只需讀取ROM中存儲的值,ROM的讀地址與傳遞 信息向量中的域值大小相同。路由模塊,用于完成傳遞互聯(lián)信息和分配存儲空間兩個功能。所述傳遞互聯(lián)信息 的功能是將變量節(jié)點和校驗節(jié)點之間的互聯(lián)信息分別傳遞給變量節(jié)點更新模塊和校驗節(jié) 點更新模塊。該路由模塊傳遞給變量節(jié)點更新模塊的互聯(lián)信息包括兩方面內(nèi)容,一方面是 與每一個變量節(jié)點相連的校驗節(jié)點個數(shù),另一方面是每一個校驗節(jié)點在校驗矩陣H中的位 置;該路由模塊傳遞給校驗節(jié)點更新模塊的互聯(lián)信息包括兩方面內(nèi)容,一方面是與每一個 校驗節(jié)點相連的變量節(jié)點個數(shù),另一方面是每一個變量節(jié)點在校驗矩陣H中的位置。所述 分配存儲空間的功能是為迭代過程中的所有信息向量分配存儲區(qū)域,具體規(guī)則為校驗節(jié) 點傳遞給同一個變量節(jié)點的若干個信息向量必須存儲于不同的存儲區(qū)域,同時,變量節(jié)點 傳遞給同一個校驗節(jié)點的若干個信息向量必須存儲于不同的存儲區(qū)域。為了節(jié)省存儲資 源,該路由模塊將變量節(jié)點更新模塊和校驗節(jié)點更新模塊的運算結(jié)果存儲在相同的存儲區(qū) 域。存儲結(jié)構(gòu)如圖6所示,存儲區(qū)域劃分成連續(xù)的基本存儲單元,每個基本存儲單元的深度 為IV nffl ^ q, q為多元LDPC碼所在的GF(q)域的大小,對基本存儲單元的讀取和存儲過程 是變量節(jié)點更新模塊從基本存儲單元中讀取信息向量用于運算,運算得出的信息向量回 填至同一塊基本存儲單元,這樣校驗節(jié)點更新模塊就可以直接從基本存儲單元中讀取信息 向量進行運算,運算結(jié)束后,同樣將運算結(jié)果回填至同一塊基本存儲單元??刂七壿嬆K,用于調(diào)度譯碼器中各個模塊的工作。該邏輯控制模塊接收其它模 塊返回的狀態(tài)信號,根據(jù)不同的狀態(tài)信息向其它模塊發(fā)出相應(yīng)的控制信號。一幀解調(diào)信息 向量接收完成后,該邏輯控制模塊向變量節(jié)點更新模塊發(fā)出“首次迭代”信號;變量節(jié)點更 新模塊完成更新后,該邏輯控制模塊向卸載模塊發(fā)出“校驗譯碼結(jié)果”信號;校驗節(jié)點更新 模塊完成更新后,該邏輯控制模塊向變量節(jié)點更新模塊發(fā)出“開始更新”信號;若卸載模塊 返回“校驗不成功”信號,該邏輯控制模塊向校驗節(jié)點發(fā)出“開始運算”信號,若卸載模塊返 回“校驗成功”信號,該邏輯控制模塊開始對下一幀數(shù)據(jù)進行譯碼。卸載模塊,用于判斷cHT = 0是否成立,若cHT = 0成立或者當(dāng)前迭代次數(shù)為最大 迭代次數(shù),則把c中的信息位輸出;否則不輸出信息。參照圖7,本發(fā)明的譯碼方法,包括如下步驟步驟1,加載模塊接收和儲存調(diào)器輸出的解調(diào)信息向量。1. 1,加載模塊接收N個解調(diào)信息向量,每一個解調(diào)信息向量包含q個實數(shù)值及其對應(yīng)的域值,N為多元LDPC碼的碼長,q為多元LDPC碼所在的GF (q)域的大小;1. 2,加載模塊在存儲解調(diào)信息向量之前,先要將解調(diào)信息向量包含的q個實數(shù)值按照降序排列,再放入存儲區(qū)域。步驟2,初始化,即變量節(jié)點更新模塊將解調(diào)信息向量傳遞給校驗節(jié)點;2. 1,變量節(jié)點更新模塊從加載模塊中讀取解調(diào)信息向量的nm個較大實值及其對應(yīng)的域值,nm≤ q, q為多元LDPC碼所在的GF (q)域的大?。?. 2,變量節(jié)點更新模塊將讀出的信息向量放入路由模塊中的存儲區(qū)域。步驟3,校驗節(jié)點更新模塊完成所有校驗節(jié)點的更新。3. 1,校驗節(jié)點更新模塊從路由模塊中同時讀取j < N個校驗節(jié)點所需的信息向 量,待更新完成再次同時讀取j個校驗節(jié)點所需的信息向量,直至路由模塊中存儲的所有 信息向量全部被讀出,N為多元LDPC碼的碼長;3. 2,校驗節(jié)點更新模塊對讀取的信息向量中的域值做置換,首先把信息向量在校 驗矩陣中對應(yīng)的域值作為乘數(shù),之后與信息向量中的每個域值在域上相乘,最后用相乘的 結(jié)果覆蓋信息向量中的域值;3. 3,校驗節(jié)點更新模塊同時計算j個校驗節(jié)點傳遞給變量節(jié)點的信息向量。某一 校驗節(jié)點傳遞給與其相連的變量節(jié)點的信息向量的計算,僅需要該變量節(jié)點之外與該校驗 節(jié)點相連的變量節(jié)點傳遞的信息向量。對這些信息向量進行超行運算的過程是首先從中 任選兩個信息向量作為超行運算的輸入,之后的每次超行運算的兩個輸入為前一次運算的 結(jié)果以及任意一個未參與過運算的信息向量,如此直至所有信息向量均參與過超行運算并 且將最后一次超行運算的結(jié)果作為傳遞給變量節(jié)點的信息向量;3. 4,校驗節(jié)點更新模塊對傳遞給變量節(jié)點的信息向量做逆域值置換,首先把該信 息向量在校驗矩陣中對應(yīng)的域值作為除數(shù),之后與信息向量中的每個域值在域上相除,最 后用相除的結(jié)果覆蓋信息向量中的域值;3. 5,校驗節(jié)點更新模塊把傳遞給變量節(jié)點的信息向量放入路由模塊中的存儲空 間,傳遞給不同校驗節(jié)點的信息向量放入不同的存儲區(qū)域。步驟4,變量節(jié)點更新模塊完成變量節(jié)點的更新。4. 1,變量節(jié)點更新模塊從路由模塊中同時讀取i < N個變量節(jié)點所需的信息向 量,待更新完成再次同時讀取i個校驗節(jié)點所需的信息向量,直至路由模塊中存儲的所有 信息向量全部被讀出,N為多元LDPC碼的碼長;4. 2,變量節(jié)點更新模塊同時更新i個變量節(jié)點傳遞給校驗節(jié)點的信息向量。其中 某一變量節(jié)點傳遞給與其相連的校驗節(jié)點的信息向量的計算需要兩部分信息向量,一部分 是除該校驗節(jié)點之外與該變量節(jié)點相連的校驗節(jié)點傳遞的信息向量,另一部分是初始解調(diào) 信息向量向量。對這些信息向量進行超列運算的過程是首先從中任選兩個信息向量作為 超列運算的輸入,之后的每次超列運算的兩個輸入為前一次運算的結(jié)果以及任意一個未參 與過運算的信息向量,如此直至所有信息向量均參與過超列運算,并且將最后一次超列運 算的結(jié)果作為傳遞給校驗節(jié)點的信息向量。4. 3,變量節(jié)點更新模塊把傳遞給變量節(jié)點的信息向量放入路由模塊,并將譯碼序 列c傳遞給卸載模塊;步驟5,校驗與輸出。5. 1,計算cHT并判斷cHT = 0是否成立;5. 1,若cHT = 0成立或達到最大迭代次數(shù),則將譯碼序列中的信息位輸出,并記錄當(dāng)前輪次迭代次數(shù);否則,轉(zhuǎn)到步驟3。 實施例參照圖8,本發(fā)明實施例所采用的GF(64)上的多元LDPC碼的校驗矩陣,該多元 LDPC碼的碼長為174符號,碼率為1/2,其中的斜線代表矩陣中非零元。該校驗矩陣H分成18塊相同的29*29基矩陣,其中14塊基矩陣中存在GF(64)域 上的非零元,同一塊基矩陣中的非零元唯一,且非零元在矩陣中以準(zhǔn)循環(huán)結(jié)構(gòu)排列。變量節(jié)點分成六塊屮0、?1汴2、50、51和52。其中P0、Pl和P2為校驗部分,它們 的度分別為2、2和1 ;SO、Sl和S2為信息部分,且度均為3 ;PO對應(yīng)的GF (64)域上的非零 元為1和2 ;Pl對應(yīng)的GF(64)域上的非零元為1和2 ;P2對應(yīng)的GF(64)域上的非零元為 1 ;SO對應(yīng)的GF (64)域上的非零元為6、12以及5 ;S1對應(yīng)的GF (64)域上的非零元為32、48 以及40 ;S2對應(yīng)的GF(64)域上的非零元為3、5以及15。校驗節(jié)點分成三塊H0、H1和H2,其度分別為4、5和5。迭代譯碼步驟A,由加載模塊接收174個解調(diào)信息向量,每一個解調(diào)信息向量包含64個實值和64 個域值,將實值和域值一一對應(yīng);并將解調(diào)信息向量包含的64個實數(shù)值按照降序排列,再 放入存儲區(qū)域;B,變量節(jié)點更新模塊從加載模塊中讀取解調(diào)信息向量的32個較大實值及其對應(yīng) 的域值,并將讀出的信息向量放入路由模塊中的存儲區(qū)域;C,校驗節(jié)點更新模塊同時讀取3個校驗節(jié)點需要的信息向量,并且3個校驗節(jié)點 分別屬于HO、Hl和H2,待更新完成后再讀取3個校驗節(jié)點需要的信息向量,直至路由模塊 中存儲的所有信息向量全部被讀出;D,校驗節(jié)點更新模塊對讀取的信息向量中的域值部分做域值置換,這里僅以HO 中的校驗節(jié)點和PO中的變量節(jié)點之間傳遞的信息向量為例加以說明,HO中的校驗節(jié)點和 PO中的變量節(jié)點對應(yīng)的校驗矩陣中的GF (64)域上的非零元為1,校驗節(jié)點更新模塊讀取的 信息向量中的域值都與1做GF(64)域上的乘法,相乘的結(jié)果覆蓋信息向量中的域值;E,校驗節(jié)點更新模塊同時對HO、Hl和H2中的校驗節(jié)點進行更新,這里僅以度為 4的HO中的校驗節(jié)點的更新為例加以說明,該校驗節(jié)點的更新需要分別計算出傳遞給P0、 SO,Sl和S2中變量節(jié)點的信息向量,例如,該校驗節(jié)點傳遞給PO中變量節(jié)點的信息向量的 計算過程為首先完成來自SO和Sl的信息向量的超行運算,之后將運算結(jié)果與來自S2的 信息向量做超行運算并將其結(jié)果作為傳遞給PO中的變量節(jié)點的信息向量;F,校驗節(jié)點更新模塊對校驗節(jié)點傳遞給變量節(jié)點的信息向量做逆域值置換,這里 僅以HO中的校驗節(jié)點傳遞給PO中的變量節(jié)點傳遞的信息向量為例加以說明,HO中的校驗 節(jié)點和PO中的變量節(jié)點對應(yīng)的校驗矩陣中的GF(64)域上的非零元為1,信息向量中的所有 域值都與該非零元做一次GF(64)域上的除法,并用相除的結(jié)果覆蓋信息向量中原有的域 值;G,校驗節(jié)點更新模塊將校驗節(jié)點的更新結(jié)果放入路由模塊中的存儲空間,這里僅 以HO中的校驗節(jié)點傳遞給變量節(jié)點的信息向量的存儲為例加以說明,HO中的校驗節(jié)點分 別向P0、SO、Sl和S2中的變量節(jié)點各傳遞一個信息向量,校驗節(jié)點更新模塊把這些信息向量放入路由模塊中不同的存儲區(qū)域,并覆蓋校驗節(jié)點更新模塊已經(jīng)讀取的信息向量;H,變量節(jié)點更新模塊從存儲空間中讀取校驗節(jié)點更新模塊傳遞的信息向量,校驗 節(jié)點更新模塊同時讀取6個變量節(jié)點需要的信息向量,并且6個變量節(jié)點分別屬于P0、P1、 P2、S0、S1和S2,待更新完成后再讀取6個校驗節(jié)點需要的信息向量,直至路由模塊中存儲 的所有信息向量全部被讀出;I,變量節(jié)點更新模塊同時計算上述6個變量傳遞給校驗節(jié)點的信息向量,這里僅以度為3的SO的中的變量節(jié)點為例加以說明,該變量節(jié)點的更新需要分別計算出傳遞給 H0、H1、H2中的校驗節(jié)點的信息向量,例如,該校驗節(jié)點傳遞給HO中校驗節(jié)點的信息向量的 計算過程為首先完成來自Hl和H2的信息向量的超行運算;之后將運算結(jié)果與解調(diào)信息 向量做超行運算并將其結(jié)果作為傳遞給HO中的變量節(jié)點的信息向量;最后完成來自HO與 傳遞的信息向量的超行運算并將結(jié)果中最大實值對應(yīng)的域值作為譯碼判決結(jié)果;J,變量節(jié)點更新模塊將變量節(jié)點的更新結(jié)果放入路由模塊中的存儲空間,這里僅 以SO中的變量節(jié)點傳遞給校驗節(jié)點的信息向量的存儲為例加以說明,SO中的變量節(jié)點分 別向HO、HI、H2中的校驗節(jié)點各傳遞一個信息向量,校驗節(jié)點更新模塊把這些信息向量放 入路由模塊中不同的存儲區(qū)域,并覆蓋已經(jīng)讀取的信息向量;變量節(jié)點更新模塊把所有變 量節(jié)點的譯碼判決結(jié)果組成的譯碼序列c傳遞給卸載模塊;K,由卸載模塊計算cHT并判斷cHT = 0是否成立,若cHT = 0成立或達到最大迭代 次數(shù),則將譯碼序列c中的信息位輸出,并記錄當(dāng)前輪次迭代次數(shù);否則,迭代繼續(xù)進行。
權(quán)利要求
一種節(jié)省存儲資源的多元LDPC碼譯碼裝置,包括加載模塊,用于接收并存儲解調(diào)器輸出的解調(diào)信息向量;變量節(jié)點更新模塊,用于接收校驗節(jié)點傳輸?shù)男畔⒉⑵浒闯羞\算,運算結(jié)果存入存儲空間,該存儲空間的向量深度低于有限域GF(q)的階數(shù);更新變量節(jié)點的信息,并將更新后的自身信息傳輸給校驗節(jié)點更新模塊;校驗節(jié)點更新模塊,用于接收變量節(jié)點傳輸?shù)男畔⒉⑵浒闯羞\算,運算結(jié)果存入存儲空間,該存儲空間的向量深度低于有限域GF(q)的階數(shù);更新校驗節(jié)點的信息,并將更新后的自身信息傳輸給變量節(jié)點更新模塊;路由模塊,用于存儲校驗矩陣H中變量節(jié)點和校驗節(jié)點的互聯(lián)信息,傳輸給變量節(jié)點更新模塊和校驗節(jié)點更新模塊作為迭代時的運算關(guān)系;卸載模塊,用于接收和判決每輪變量節(jié)點更新模塊迭代運算完成后的譯碼序列c,如果cHT=0成立,則將譯碼序列c中的信息位輸出;如若達到最大迭代次數(shù),無論cHT=0是否成立,都要將譯碼序列c中的信息位輸出;控制邏輯模塊,用于向所述的各個模塊傳送控制信息,使其處于正常的工作時序下,保證數(shù)據(jù)流動的正確性。
2.根據(jù)權(quán)利要求1所述的節(jié)省存儲資源的多元LDPC碼譯碼設(shè)備,其特征在于加載模 塊將接收的軟信息按數(shù)值降序排列送入存儲器。
3.一種節(jié)省存儲資源的多元LDPC譯碼方法,包括如下步驟(1)加載模塊接收和儲存調(diào)器輸出的解調(diào)信息向量;(2)變量節(jié)點更新模塊從加載模塊中讀取解調(diào)信息向量,并將向量中的nm個較大實值 及其對應(yīng)的域值傳遞給校驗節(jié)點,nffl ^ q, q為多元LDPC碼所在的GF(q)域的大小;(3)校驗節(jié)點更新模塊從路由模塊中讀取信息向量,首先對信息向量做域值置換,之后 對信息向量進行超行運算,并對運算結(jié)果做逆域值置換,最后將運算結(jié)果填入路由模塊中 的存儲空間;(4)變量節(jié)點更新模塊從路由模塊中讀取信息向量,進行超列運算后,將運算結(jié)果填 入路由模塊中的存儲空間,并將更新后全部變量節(jié)點信息組成的譯碼序列c傳遞給卸載模 塊;(5)卸載模塊對譯碼序列c進行判決,若滿足cHT= 0或達到最大迭代次數(shù),則將譯碼 序列中的信息位輸出,并記錄當(dāng)前輪次迭代次數(shù);否則,轉(zhuǎn)到步驟(3)。
4.根據(jù)權(quán)利要求3所述的多元LDPC碼譯碼方法,其特征在于步驟(3)所述的校驗節(jié)點 更新模塊按超行運算,采用多路并行結(jié)構(gòu)。
5.根據(jù)權(quán)利要求3所述的多元LDPC碼譯碼方法,其特征在于步驟(4)所述的變量節(jié)點 更新模塊按超列運算,采用多路并行結(jié)構(gòu)。
6.根據(jù)權(quán)利要求3所述的多元LDPC碼譯碼方法,特征在于步驟(3)所述的校驗節(jié)點更 新模塊和步驟(4)所述的變量節(jié)點更新模塊將運算結(jié)果填入存儲空間,按如下規(guī)則填寫當(dāng)任一單方模塊運算完成后,將運算結(jié)果回填至同一存儲空間中參與節(jié)點更新運算的 數(shù)據(jù)地址;當(dāng)任一單方模塊結(jié)束更新運算后,另一方將存儲空間中的內(nèi)容擦除繼續(xù)使用同一存儲 空間存入。
全文摘要
本發(fā)明公開了一種多元LDPC碼譯碼設(shè)備,主要解決現(xiàn)有多元LDPC碼譯碼設(shè)備的復(fù)雜度高和占用存儲資源多的問題。其設(shè)備包括加載模塊、變量節(jié)點更新模塊、校驗節(jié)點更新模塊、路由模塊、卸載模塊和控制邏輯模塊;加載模塊接收并存儲解調(diào)器輸出的解調(diào)信息向量,變量節(jié)點更新模塊從加載模塊和路由模塊中讀取數(shù)據(jù)并完成所有變量節(jié)點的更新,校驗節(jié)點更新模塊從路由模塊中讀取信息向量并完成校驗節(jié)點的更新,路由模塊存儲變量節(jié)點和校驗節(jié)點互相傳遞的信息以及它們之間的互聯(lián)關(guān)系,卸載模塊完成對譯碼結(jié)果的校驗以及信息的輸出,控制邏輯模塊向所述各個模塊發(fā)出控制信號。本發(fā)明利用迭代時間差可節(jié)省總體50%存儲資源,實現(xiàn)了譯碼設(shè)備對存儲資源的低需求和高效率。
文檔編號H03M13/11GK101834614SQ20101013786
公開日2010年9月15日 申請日期2010年4月2日 優(yōu)先權(quán)日2010年4月2日
發(fā)明者何光華, 李博, 李琪, 林偉, 白寶明 申請人:西安電子科技大學(xué)