專利名稱:一種高效通用的qc-ldpc碼譯碼器及其譯碼方法
技術領域:
本發(fā)明涉及數(shù)字通信系統(tǒng)中的糾錯編碼,尤其涉及一種糾錯編碼 方式為QC-LDPC碼的譯碼方法。
背景技術:
數(shù)字信號在傳輸過程中由于受到噪聲和干擾的影響會出現(xiàn)差錯, 在通信系統(tǒng)中 一般采用糾錯編碼技術來保證可靠的傳輸。低密度校驗 (LDPC)碼最早由Gallager提出,是一種校驗矩陣非常稀疏的線性分 組碼,其校驗矩陣中"1"的個數(shù)遠小于"0"的個數(shù)。Mackay等人的進一 步研究表明,LDPC碼的性能在置信傳播(BeliefPropagation)譯碼算 法下可以接近香農(nóng)極限(Shannon Limit),而譯碼復雜度遠比Turbo碼 低,且具有較低的誤碼平臺(ErrorFloor)。因此,LDPC碼被認為是目 前最有前途的糾4昔編碼方式之一 。
為了解決LDPC碼編碼復雜度較高的問題,近年來提出了 一種具 有準循環(huán)(Quasi Circulant)結(jié)構(gòu)的LDPC碼。QC-LDPC碼的校驗矩 陣由若干子矩陣構(gòu)成。這些子矩陣要么是一個全零子陣,要么是一個 由單位矩陣循環(huán)移位得到的循環(huán)置換矩陣(Circulant Permutation Matrix )。更一般的,非全零子陣還可以由多個循環(huán)置換矩陣構(gòu)成。 QC-LDPC碼可以采用簡單的移位寄存器的方式進行編碼,同時由于其 校驗矩陣結(jié)構(gòu)的規(guī)律性,可以大量減少校驗矩陣所需的存儲空間,且 有利于譯碼過程中數(shù)據(jù)的尋址。
LDPC碼的i奪碼過程是 一 種不斷迭代的消息傳遞(Message Passing )過程, 一般包括如下4個步驟
1、 初始化根據(jù)接收到的碼元信號,計算各變量節(jié)點的初始信息。
2、 校驗節(jié)點更新各校驗節(jié)點根據(jù)與之相連的變量節(jié)點傳遞來的 信息,計算新的校驗節(jié)點信息,并傳遞給與之相連的變量節(jié)點。
3、 變量節(jié)點更新各變量節(jié)點根據(jù)與之相連的校驗節(jié)點傳遞來的 信息,計算新的變量節(jié)點信息。
4、 奇偶校驗將新的變量節(jié)點信息代入校驗方程進行奇偶校驗。 若所有校驗方程均滿足,則說明譯碼成功;若有校驗方程不滿足,則 將新的變量節(jié)點信息再次傳遞給校驗節(jié)點,重復步驟2和3,直至譯碼 成功或達到最大迭代次數(shù)。
LDPC譯碼器通常采用專用的硬件電路來實現(xiàn),通過并行的結(jié)構(gòu)來 提高譯碼吞吐量,然而其固定的結(jié)構(gòu)很難滿足對不同參數(shù)(碼長、碼 率)和才交驗矩陣結(jié)構(gòu)的LDPC碼進行i奪碼。采用^l件的方法雖然可以 實現(xiàn)LDPC譯碼器的通用性,但是對于復雜的信息處理尤其是校驗節(jié) 點更新將消耗大量的運算時間,很難實現(xiàn)高效的譯碼吞吐量。
發(fā)明內(nèi)容
為此,本發(fā)明針對QC-LDPC碼的結(jié)構(gòu),采用軟件的方式,輔以硬 件加速器,提出了一種高效通用的QC-LDPC碼譯碼器,其包括
通用處理器,用于根據(jù)QC-LDPC碼校驗矩陣的結(jié)構(gòu),對數(shù)據(jù)存儲 區(qū)進行空間分配,同時為數(shù)據(jù)的尋址建立索引,以及用于對所述譯碼
過程進行控制,對各信息處理運算進行調(diào)度,并在譯碼過程中實現(xiàn)包 括奇偶校驗、校驗節(jié)點更新、變量節(jié)點更新的信息處理運算中的部分;
數(shù)據(jù)存儲區(qū),用于存儲所述譯碼過程中所需的信息,所述信息包 括變量節(jié)點的初始信息、迭代過程中的校驗節(jié)點信息和變量節(jié)點信息,
針對QC-LDPC碼校驗矩陣準循環(huán)的特性,信息以塊為單位進行存儲;
硬件加速器,用于在譯碼過程中實現(xiàn)包括奇偶校驗、校驗節(jié)點更 新、變量節(jié)點更新的信息處理運算中的部分或全部;
所述硬件加速器還包括數(shù)據(jù)接口,用于對寫入/讀出數(shù)據(jù)的時序 和格式進行適配;數(shù)據(jù)緩存器,用于存儲信息處理過程中的中間變量; 運算單元,用于完成對信息的運算處理;控制單元,用于對硬件加速
器的運行過程進行控制。
本發(fā)明另 一方面l是出 一種高效通用的QC-LDPC碼譯碼方法,其包 括以下步驟
使用通用處理器、根據(jù)QC-LDPC碼校驗矩陣的結(jié)構(gòu)、對數(shù)據(jù)存儲 區(qū)進行空間分配,同時為數(shù)據(jù)的尋址建立索引;
使用數(shù)據(jù)存儲區(qū)存儲所述譯碼過程中所需的信息,包括變量節(jié)點 的初始信息、迭代過程中的校驗節(jié)點信息和變量節(jié)點信息,針對 QC-LDPC碼校驗矩陣準循環(huán)的特性,信息以塊為單位進行存儲;
對數(shù)據(jù)存儲區(qū)進行初始化,然后由通用處理器或硬件加速器以行 塊為單位進行奇偶校驗;
若所有行塊的校驗方程均滿足,則判決輸出,若有校驗方程不滿 足,則在通用處理器的調(diào)度下,由通用處理器或硬件加速器以行塊為
單位進行校驗節(jié)點更新以及以列塊為單位進行變量節(jié)點更新;
通用處理器與硬件加速器之間信息以塊為單位進行傳輸;
若已達到最大迭代次數(shù),則判決輸出,否則再次進入奇偶校驗的 步驟,開始新一次的迭代。
本發(fā)明的QC-LDPC碼譯碼器具有以下特點
1、 具有較強的通用性,可以對不同參數(shù)(碼長、碼率)和校驗矩 陣結(jié)構(gòu)的QC-LDPC碼進行i奪碼;
2、 由于將譯碼過程中較復雜的信息處理部分交由硬件加速器來完 成,極大的提高了譯碼吞吐量,可滿足寬帶傳輸?shù)囊螅?br>
3、 針對QC-LDPC碼校驗矩陣準循環(huán)的特性,以塊為單位對信息 進行存儲、處理和傳輸,提高了譯碼的效率。
4、 可以適用于規(guī)則或者非規(guī)則QC-LDPC碼。
5、 可以適用于多種消息傳遞譯碼算法。
6、 可以適用于多種消息傳遞調(diào)度策略。
圖1為本發(fā)明的QC-LDPC碼譯碼器的構(gòu)成框圖2為圖1中的硬件加速器的一種優(yōu)選結(jié)構(gòu)圖3為優(yōu)選實施例1中使用的QC-LDPC碼校馬全矩陣H的結(jié)構(gòu)圖4為優(yōu)選實施例1中使用的QC-LDPC碼譯碼器工作流程圖; 圖5為優(yōu)選實施例1中的循環(huán)置換矩陣所對應的存儲塊示意圖; 圖6為優(yōu)選實施例2中使用的QC-LDPC碼譯碼器工作流程圖。
具體實施例方式
下面結(jié)合附圖對本發(fā)明的高效通用的QC-LDPC碼譯碼器的優(yōu) 選實施例進行詳細i兌明。
圖1為本發(fā)明的QC-LDPC碼譯碼器的構(gòu)成框圖。
如圖1所示,本發(fā)明的QC-LDPC碼譯碼器由通用處理器1、數(shù)據(jù) 存儲區(qū)2和硬件加速器3三個部分組成。
通用處理器1根據(jù)QC-LDPC碼校驗矩陣的結(jié)構(gòu),對數(shù)據(jù)存儲區(qū)2 進行空間分配,同時建立查找表,存儲校驗矩陣的結(jié)構(gòu),為譯碼過程 中數(shù)據(jù)的尋址提供索引。通用處理器1還負責對迭代譯碼的過程進行 控制,通過對各信息處理單元的調(diào)度,實現(xiàn)不同的消息傳遞調(diào)度策略, 如Flood 、 Turbo 、 Shuffle 、 Group Shuffle 、 Replica Shuffle等。
數(shù)據(jù)存儲區(qū)2用于存儲譯碼過程中所需的信息,如變量節(jié)點的初 始信息、迭代過程中的校驗節(jié)點信息和變量節(jié)點信息。針對QC-LDPC 碼校驗矩陣準循環(huán)的特性,將信息以塊為單位進行存儲,即為每一個 循環(huán)置換矩陣分配一段存儲塊,其在整個存儲區(qū)中的位置可以任意分配。
為了有利于譯碼過程中信息的處理和傳輸,同一行塊(或列塊) 中循環(huán)置換矩陣所對應的存儲塊在數(shù)據(jù)存儲區(qū)2中可以連續(xù)排放。例
如當由硬件加速器3進行校驗節(jié)點更新時,同一行塊中循環(huán)置換矩陣
所對應的存儲塊在數(shù)據(jù)存儲區(qū)2中連續(xù)排放;當由硬件加速器進行變 量節(jié)點更新時,同 一列塊中循環(huán)置換矩陣所對應的存儲塊在數(shù)據(jù)存儲 區(qū)2中連續(xù)排放。
特別地,對于規(guī)則QC-LDPC碼,由于每一個列塊(行塊)中循環(huán) 置換矩陣的數(shù)量相同,存儲塊在數(shù)據(jù)存儲區(qū)2中還可以按一定的規(guī)律 排放,以方便譯碼過程中對數(shù)據(jù)的尋址。例如同一行塊中循環(huán)置換矩 陣所對應的存儲塊在數(shù)據(jù)存儲區(qū)2中連續(xù)地或者等間隔地排放;同一 列塊中循環(huán)置換矩陣所對應的存儲塊在數(shù)據(jù)存儲區(qū)2中連續(xù)地或者等 間隔地排;改。
硬件加速器3可以是獨立于通用處理器1之外的硬件電路,或者 可以作為專用協(xié)處理器與通用處理器1集成在一起,還可以是在通用 處理器1的指令集的基礎上針對QC-LDPC譯碼增加的特殊指令集。硬 件加速器3用于完成譯碼過程中的部分或者全部信息處理功能,如奇 偶校驗、校驗節(jié)點更新、變量節(jié)點更新,余下的信息處理功能則由通 用處理器l完成。
如圖1所示,硬件加速器3由數(shù)據(jù)接口 4、數(shù)據(jù)緩存器5、運算單 元6和控制單元7這四個部分組成。數(shù)據(jù)接口 4用于對寫入/讀出數(shù)據(jù) 的時序和格式進行適配;數(shù)據(jù)緩存器5用于存儲信息處理過程中的中 間變量;運算單元6用于完成對信息的運算處理;控制單元7用于對 硬件加速器3的運行過程進行控制。
在上述信息處理過程中,奇偶校驗和校驗節(jié)點更新以行塊(Row Block)為單位進4f。由于循環(huán)置換矩陣中"l"的位置具有循環(huán)移位的特
性,根據(jù)各循環(huán)置換矩陣相對于單位矩陣的偏移量,可以方便找到參 與該行塊的每一個校驗方程的變量節(jié)點的位置并進行奇偶校驗,同時 也可以方便的找到參與該行塊的每一個校驗節(jié)點更新的變量節(jié)點的位
置并計算新的校驗節(jié)點信息。變量節(jié)點更新則以列塊(ColumnBlock) 為單位進行。同樣由于循環(huán)置換矩陣中"l"的位置具有循環(huán)移位的特 性,根據(jù)各循環(huán)置換矩陣相對于單位矩陣的偏移量,可以方便找到參 與該列塊的每一個變量節(jié)點更新的校驗節(jié)點的位置,并計算新的變量 節(jié)點信息。
在上述信息處理過程中,通過采用不同的運算規(guī)則,可以實現(xiàn)如 Standard BP、 Min-Sum近似、Normalized BP、 Offset BP等不同的譯碼算法。
由于校驗節(jié)點更新部分的信息處理運算最為復雜,故該部分功能 由硬件加速器3完成。另外,由于Min-Sum近似i奪碼算法4交適合^5更件 實現(xiàn),且經(jīng)過一定的修正后其性能與Standard BP i爭碼算法相比幾乎沒 有損失,故在進行校驗節(jié)點更新時可以采用基于Min-Sum近似的改進 譯碼算法。實現(xiàn)上述功能的硬件加速器的結(jié)構(gòu)如圖2所示。
圖2為圖1中的硬件加速器的一種優(yōu)選結(jié)構(gòu)圖。
如圖2所示,硬件加速器3中包括四個數(shù)據(jù)緩存器。符號(Sign) 緩存器8用于存儲變量節(jié)點信息的符號;最小值(Min)緩存器9用于 存儲參與同 一個校驗節(jié)點更新的變量節(jié)點信息絕對值的最小值;索引 (Index )緩存器10用于存儲^C得所述最小值的變量節(jié)點的位置;次小 值(Sub-Min)緩存器11用于存儲參與同一個校驗節(jié)點更新的變量節(jié) 點信息絕對值的次小值。
通用處理器1以塊為單位向硬件加速器3寫入變量節(jié)點信息。輸
入數(shù)據(jù)接口 13將信息的符號輸入符號緩存器8,將其絕對值輸入比較 器12。由于循環(huán)置換矩陣中"l"的位置具有循環(huán)移位的特性,控制單元 7根據(jù)各循環(huán)置換矩陣相對于單位矩陣的偏移量,可以方便的找到當前 寫入的變量節(jié)點信息參與第幾個校驗節(jié)點更新,通過將所述當前寫入 的變量節(jié)點信息絕對值與最小值緩存器9和次小值緩存器11中同樣參 與該校驗節(jié)點更新的已寫入的變量節(jié)點信息絕對值的最小值和次小值 進行比較,得到新的最小值、次小值和最小值的位置,并根據(jù)所述的 比較結(jié)果更新最小值緩存器9、次小值緩存器11和索引緩存器10存儲 的內(nèi)容。
完成變量節(jié)點信息寫入后,通用處理器1以塊為單位從硬件加速 器3讀出校驗節(jié)點信息。輸出數(shù)據(jù)接口 14根據(jù)符號緩存器8、最小值 緩存器9、次小值緩存器11和索引緩存器10中的值,并經(jīng)過一定的修 正處理后,輸出新的校驗節(jié)點信息。
以下為本發(fā)明優(yōu)選實施例1的說明。
圖3為優(yōu)選實施例1中使用的QC-LDPC碼才交驗矩陣H的結(jié)構(gòu)圖。
如圖3所示,本優(yōu)選實施例中使用碼長為9216、碼率為1/2的(3, 6)規(guī)則QC-LDPC碼,其校驗矩陣H由18x36個子矩陣構(gòu)成,其中每 一個子陣的大小為256。
校驗矩陣H在垂直方向上分為18個行塊,每一行塊中循環(huán)置換矩 陣的數(shù)量為6;同時在水平方向上分為36個列塊,每一列塊中循環(huán)置 換矩陣的數(shù)量為3。從而該校驗矩陣H中共有18x6 = 36x3 = 108個循
環(huán)置換矩陣。
本實施例中的QC-LDPC碼譯碼器中,通用處理器1由DSP (數(shù)字 信號處理器)實現(xiàn),數(shù)據(jù)存儲區(qū)2為所述DSP的片內(nèi)RAM (隨機存儲 器)。奇偶校驗和變量節(jié)點更新由DSP完成,校驗節(jié)點更新則交由以 FPGA (現(xiàn)場可編程門陣列)實現(xiàn)的硬件加速器3來完成。
本實施例中的QC-LDPC碼譯碼器采用Normalized BP i奪碼算法, 具體計算公式如下。
<formula>formula see original document page 15</formula>其中,Zn為變量節(jié)點n的信息,Z^為變量節(jié)點n傳遞給校驗節(jié) 點m的信息,LLRn為各接收碼元的對數(shù)似然比(Log-Likelihood Ratio )。
校驗節(jié)點更新
<formula>formula see original document page 15</formula>其中,Lmil為校驗節(jié)點m傳遞給變量節(jié)點n的信息,N(m)\n表示 與校驗節(jié)點m相連的除變量節(jié)點n之外的所有變量節(jié)點的集合,上標 i表示迭代次數(shù),符號表示取符號運算,min表示取最小值運算,a為 歸一化因子。
變量節(jié)點更新 臓 " ,L 腳
w w 固
其中,M(n)\m表示與變量節(jié)點n相連的除校驗節(jié)點m之外的所有 校驗節(jié)點的集合,M(n)表示與變量節(jié)點n相連的所有校驗節(jié)點的集合。
上述譯碼過程要求數(shù)據(jù)存儲區(qū)2包括三個部分,即LLR緩存器、 Z緩存器和L緩存器。其中,LLR緩存器用于存儲各接收碼元的對數(shù) 似然比LLRn,共9216個數(shù)據(jù);Z緩存器用于存儲變量節(jié)點信息Zn, 共9216個數(shù)據(jù);L緩存器用于存儲校驗節(jié)點信息L皿和變量節(jié)點信息 Znm,共108x256個數(shù)據(jù),也就是為所述108個循環(huán)置換矩陣中的每個 循環(huán)置換矩陣分配一段大小為256的存儲塊。由于每一列塊中循環(huán)置 換矩陣的數(shù)量相同,可以將同一列塊中的循環(huán)置換矩陣對應的存儲塊 在L緩存器中以36x256 = 9216為間隔周期地排;改。
由DSP建立3個查找表,即位置表(Position—Table )、偏移表 (Shift—Table)和行塊表(Row_Table )。所述位置表共18行,每一行 6列,記錄該行塊中6個循環(huán)置換矩陣所對應的存儲塊在所述Z緩存器 中的位置。所述偏移表共18行,每一行6列,記錄該行塊中6個循環(huán) 置換矩陣相對于單位矩陣的偏移量。所述行塊表共18行,每一行6列, 記錄該行塊中6個循環(huán)置換矩陣所對應的存儲塊在L緩存器中的位置。
本優(yōu)選實施例的QC-LDPC碼譯碼器采用Flood的消息傳遞調(diào)度策略。
圖4為優(yōu)選實施例1中使用的QC-LDPC碼譯碼器工作流程圖。
如圖所示,首先在步驟S41的初始化中,將變量節(jié)點信息Znm和
Zn(n=l, 2,…,9216, m=l, 2,…,4608)的值均初始化為LLRn (n=l, 2,…,9216)。
然后步驟S42中對所有行塊進行奇偶校驗。奇偶校驗以行塊為單 位進行。由于每一行塊中參與奇偶校驗的變量節(jié)點的位置具有準循環(huán) 的特性,在對第i(i-l, 2, ..., 18)行塊進行奇偶校驗時,DSP根據(jù) 所述位置表和偏移表的第i行,初始化6個指針使其分別指向參與第1 個校驗方程的6個變量節(jié)點信息Zn在Z緩存器中的位置。
圖5為優(yōu)選實施例1中的循環(huán)置換矩陣所對應的存儲塊示意圖。
如圖所示,該存儲塊為某一偏移量為shift的循環(huán)置換矩陣所對應 的存儲塊,其在Z緩存器中的位置為position,圖中的標號表示該變量 節(jié)點所參與的校驗方程的序號。采用循環(huán)尋址(CircularAddressing),
可以方便找到參與該行塊的每一個校驗方程的6個變量節(jié)點信息Zn在 Z緩存器中的位置。利用Zn的符號進行奇偶校驗,直至完成該行塊中
的256個校-驗方程。
所有行塊的奇偶校驗完成后,進入步驟S43,判斷是否滿足所有的 校驗方程,若所有行塊的校驗方程均滿足,則說明譯碼成功,根據(jù)Zn 的符號進入S47步驟,即判決輸出。
若在S43步驟中,判斷有校-瞼方程不滿足,則進入S44步驟,對 所有行塊進行校^r節(jié)點更新。
校驗節(jié)點更新同樣以行塊為單位進行。在對第i(i-l, 2, ..., 18) 行塊進行校驗節(jié)點更新時,DSP根據(jù)所述行塊表的第i行,可以找到該 行塊的6個循環(huán)置換矩陣所對應的存儲塊在L緩存器中的位置。通過
輸入數(shù)據(jù)接口 13,將L緩存器中的該6塊變量節(jié)點信息(每塊256個 數(shù)據(jù))寫入FPGA。
參見圖2, FPGA中包括四個數(shù)據(jù)緩存器,即符號緩存器8、最小 值緩存器9、索引緩存器IO和次小值緩存器11。其中,符號緩存器8 用于存儲變量節(jié)點信息的符號,共包括6x256個符號;最小值緩存器9 用于存儲參與同一個校驗節(jié)點更新(共256個校驗節(jié)點)的變量節(jié)點 信息絕對值的最小值,共包括256個數(shù)據(jù);索引緩存器10用于存儲取 得所述最小值的變量節(jié)點的位置,共包括256個數(shù)據(jù);次小值緩存器 11用于存儲參與同 一個校驗節(jié)點更新的變量節(jié)點信息絕對值的次小 值,共256個數(shù)據(jù)。
FPGA將信息的符號輸入符號緩存器8,將其絕對值輸入比較器 12。同樣,由于每一行塊中參與校驗節(jié)點更新的變量節(jié)點的位置具有 準循環(huán)的特性,F(xiàn)PGA根據(jù)所述偏移表的第i行,可以方便的找到當前 寫入的變量節(jié)點信息Znm參與第幾個校驗節(jié)點更新。通過將所述當前寫 入的變量節(jié)點信息絕對值與最小值緩存器9和次小值緩存器11中同樣 參與該校驗節(jié)點更新的已寫入的變量節(jié)點信息絕對值的最小值和次小 值進行比較,得到新的最小值、次小值和最小值的位置,并根據(jù)比較 結(jié)果更新最小值緩存器9、次小值緩存器11和索引緩存器10中的內(nèi)容。
變量節(jié)點信息寫入完成后,DSP通過輸出數(shù)據(jù)接口 14,將相應的 6塊校驗節(jié)點信息(每塊256個數(shù)據(jù))從FPGA中讀出,并更新L緩 存器。FPGA根據(jù)符號緩存器8、最小值緩存器9、次小值緩存器11 和索引緩存器10中的值,利用(3)式輸出新的校驗節(jié)點信息L^。
由于DSP與FPGA之間的數(shù)據(jù)傳輸可以采用DMA (直接存儲器 存取)的方式,所以在另外的實施例中,可以使得S42步驟的奇偶校 驗與S44步驟的校驗節(jié)點更新同時進行,以進一步提高譯碼吞吐量。
S44步驟的所有行塊的校驗節(jié)點更新完成后,進入S45步驟,對所 有的列塊進行變量節(jié)點更新。
S45步驟中的變量節(jié)點更新以列塊為單位進行。在對第j (j=l, 2, ..., 36)列塊進行變量節(jié)點更新時,由于同一列塊中的循環(huán)置換矩 陣所對應的存儲塊在L緩存器中以9216為間隔周期地排;故,故DSP 可以方便的找到該列塊的3個循環(huán)置換矩陣所對應的存儲塊在L緩存
器中的位置。利用(4)式和(5)式計算新的變量節(jié)點信息Z^和Zn,
并更新L緩存器和Z緩存器的內(nèi)容,直至完成該列塊中的256個變量
節(jié)點更新。
當S45步驟中所有列塊的變量節(jié)點更新完成后,進入S46步驟, 判斷此時是否已達到最大迭代次數(shù),若是,則直接進入S47步驟,即 根據(jù)Zn的符號判決輸出;若否,則再次進入S42步驟,對所有行塊進 行奇偶校驗,開始新一次的迭代。
以下為本發(fā)明優(yōu)選實施例2的說明。
本優(yōu)選實施例中使用碼長為17280,碼率為3/4的非規(guī)則QC-LDPC 碼,其校驗矩陣H由120x480個子矩陣構(gòu)成,每一個子陣的大小為36。
將校驗矩陣H在垂直方向上分為120個行塊,每一行塊中循環(huán)置 換矩陣的數(shù)量為Ri (i=l, 2, ..., 120);在水平方向上分為480個列
塊,每一列塊中循環(huán)置換矩陣的數(shù)量為Cj (j=l,2,...,480)。校驗矩陣H
120 480
中共有 '=i 產(chǎn)1 個循環(huán)置換矩陣。
本優(yōu)選實施例2的QC-LDPC碼譯碼器的通用處理器1由嵌入式 MPU (微處理器)實現(xiàn),數(shù)據(jù)存儲區(qū)2為片夕卜SDRAM (同步動態(tài)隨 機存儲器)。奇偶校驗和變量節(jié)點更新由MPU完成,校驗節(jié)點更新則 交由以與MPU集成的協(xié)處理器實現(xiàn)的硬件加速器3來完成。
本優(yōu)選實施例2的QC-LDPC碼譯碼器采用Offset BP譯碼算法, 具體計算公式如下。
<formula>formula see original document page 20</formula>
其中,Zn為變量節(jié)點n的信息,Z固為變量節(jié)點n傳遞給校驗節(jié)點 m的信息,LLRn為各接收碼元的對數(shù)似然比。
校驗節(jié)點更新
<formula>formula see original document page 20</formula>
其中,L圓為校驗節(jié)點m傳遞給變量節(jié)點n的信息,N(m》n表示 與校驗節(jié)點m相連的除變量節(jié)點n之外的所有變量節(jié)點的集合,上標 i表示迭代次數(shù),符號表示取符號運算,min表示取最小值運算,max 表示取最大值運算,p為偏移因子。
變量節(jié)點更新
<formula>formula see original document page 21</formula>
其中,M(n)\m表示與變量節(jié)點n相連的除校驗節(jié)點m之外的所有 校驗節(jié)點的集合,M(n)表示與變量節(jié)點n相連的所有校驗節(jié)點的集合。
上述譯碼過程中也需要三個數(shù)據(jù)存儲區(qū),即LLR緩存器、Z緩存 器和L緩存器。其中,LLR緩存器用于存儲各接收碼元的對數(shù)似然比 LLRn,共包括17280個數(shù)據(jù);Z緩存器用于存儲變量節(jié)點信息Zn,共 包括17280個數(shù)據(jù);L緩存器用于存儲校驗節(jié)點信息L,和變量節(jié)點信 息Znm,共包括Kx36個數(shù)據(jù),即為每一個循環(huán)置換矩陣分配一段大小 為36的存儲塊。為了有利于校驗節(jié)點更新過程中MPU與協(xié)處理器之 間的信息傳輸,同一行塊中循環(huán)置換矩陣對應的存儲塊在L緩存器中 連續(xù)排放。
由MPU建立4個查找表,即位置表(Position—Table )、偏移表 (Shift—Table )、行塊表(Row—Table )以及列塊表(Column—Table )。 所述位置表共120行,每一行包括R個有效數(shù)據(jù),用于記錄該行塊中 Ri個循環(huán)置換矩陣對應的存儲塊在Z緩存器中的位置;所述偏移表共 120行,每一行包括Ri個有效數(shù)據(jù),用于記錄該行塊中Rj個循環(huán)置換 矩陣相對于單位矩陣的偏移量;所述行塊表共120行,每一行包括Ri 個有效數(shù)據(jù),用于記錄該行塊中Ri個循環(huán)置換矩陣對應的存儲塊在L 緩存器中的位置;所述列塊表共480行,每一行包括Cj個有效數(shù)據(jù),
用于記錄該列塊中Cj個循環(huán)置換矩陣對應的存儲塊在L緩存器中的位置。
本優(yōu)選實施例2中的QC-LDPC譯碼器采用Group Shuffle的消息
傳遞調(diào)度策略。
圖6為優(yōu)選實施例2中使用的QC-LDPC碼"^碼器工作流程圖。
如圖6所示,首先在步驟S601的初始化中,將變量節(jié)點信息Znm 和ZX 2,…,17280, m=l, 2, 4320)的值均初始化為LLRn (n=l, 2,17280)。隨后通過步驟S602將行塊數(shù)i設為0,并通 過步驟S603對行塊數(shù)i進行循環(huán)。
然后進入S604步驟,對第i行塊進行奇偶校驗。奇偶校驗以行塊 為單位進行。由于每一行塊中參與奇偶校驗的變量節(jié)點的位置具有準 循環(huán)的特性,故在對第i(i=l, 2, ..., 120)行塊進行奇偶校驗時, MPU根據(jù)所述位置表和偏移表的第i行,可以方便的找到參與該行塊 的每一個校驗方程的Ri個變量節(jié)點信息Z。在Z緩存器中的位置。利用 Zn的符號進行奇偶校驗,直至完成該行塊中的36個校驗方程。
這時進入步驟S605,判斷是否滿足當前行塊的校驗方程,如果當 前行塊的校驗方程均滿足,并且在S606步驟中判斷i還未滿120,則 回到步驟S603并使得i加1,繼續(xù)對下一行塊進行奇偶校驗,若在S606 步驟中判斷i為120,即所有行塊的校驗方程均滿足,則說明譯碼成功,
進入步驟S613,根據(jù)Zn的符號判決輸出。
如果在步驟S605中判斷當前行塊中有校驗方程未能滿足,則進入 S607步驟,將列塊數(shù)j初始為0,并通過步驟S608對列塊數(shù)j進行循環(huán)。
對應于480個列塊,將變量節(jié)點分為480個組。首先在步驟S609 中對第1個列塊相關的行塊進行校驗節(jié)點更新,即對第1個列塊中的 d個循環(huán)置換矩陣所在的行塊進行校驗節(jié)點更新,接著步驟S610中對 第1個列塊進行變量節(jié)點更新。
然后對第2個列塊相關的行塊進行校驗節(jié)點更新,再對第2個列 塊進行變量節(jié)點更新,依次類推,只要在S611步驟中判斷j未達到480, 則返回步驟S608并使得j加1,繼續(xù)對下一個列塊相關的行塊進行校 驗節(jié)點更新和對下一個列塊進行變量節(jié)點更新。由于每一組變量節(jié)點 更新后的新信息馬上應用于之后各組的校驗節(jié)點更新,可以有效的加 快譯碼收斂速度,減少迭代次數(shù),從而提高i奪碼吞吐量。
校驗節(jié)點更新同樣以行塊為單位進行。在對第i(i=l, 2, ..., 120) 行塊進行校驗節(jié)點更新時,MPU根據(jù)所述行塊表第i行,可以找到該 行塊的R,個循環(huán)置換矩陣對應的存儲塊在L緩存器中的位置。通過內(nèi) 部數(shù)據(jù)總線,將L緩存器中的該Ri塊變量節(jié)點信息(每塊36個數(shù)據(jù)) 寫入?yún)f(xié)處理器,同時通知其該次寫入的行塊號i和該行塊中循環(huán)置換矩 陣的數(shù)量Ri。由于同一行塊中循環(huán)置換矩陣對應的存儲塊在L緩存器 中連續(xù)排放,故該Ri塊變量節(jié)點信息可以連續(xù)寫入。
協(xié)處理器中需要四個數(shù)據(jù)緩存器,即符號緩存器、最小值緩存器、 索引緩存器和次小值緩存器,其工作原理同優(yōu)選實施例1中FPGA的 四個數(shù)據(jù)緩存器,不同之處在于本實施例中的符號緩存器存儲Rix36 個符號,最小值緩存器、索引緩存器和次小值緩存器分別存儲36個數(shù)據(jù)。
變量節(jié)點信息寫入完成后,MPU通過內(nèi)部數(shù)據(jù)總線,將相應的Ri
塊校驗節(jié)點信息(每塊36個數(shù)據(jù))從協(xié)處理器中讀出,并更新L緩存 器。同樣,由于同一行塊中循環(huán)置換矩陣對應的存儲塊在L緩存器中 連續(xù)排放,故該Ri塊校驗節(jié)點信息可以連續(xù)讀出。協(xié)處理器根據(jù)符號 緩存器、最小值緩存器、次小值緩存器和索引緩存器中的值,利用(6) 式輸出新的校驗節(jié)點信息Lmn。
變量節(jié)點更新以列塊為單位進行。在對第j(j^, 2,…,480)列 塊進行變量節(jié)點更新時,MPU根據(jù)所述列塊表的第j行,可以找到該 列塊的Cj個循環(huán)置換矩陣對應的存儲塊在L緩存器中的位置。利用(7 )
式和(8)式計算新的變量節(jié)點信息Znm和Z。,并更新L緩存器和Z緩
存器,直至完成該列塊中的36個變量節(jié)點更新。
當步驟S611中判斷結(jié)果為〗=480,即所有列塊的變量節(jié)點更新完 成時,進入S612步驟,判斷此時是否已達到最大迭代次數(shù),若是,則 進入S613步驟,根據(jù)Zn的符號判決輸出,若否,則再次進入S602步 驟進行奇偶校驗,開始新一次的迭代。
以上為本發(fā)明的兩個優(yōu)選實施例的說明,但是本發(fā)明不局限于上 述特定實施例子,在不背離本發(fā)明精神及其實質(zhì)情況下,熟悉本領域 技術人員可才艮據(jù)本發(fā)明作出各種相應改變和變形,^f旦這些相應改變和 變形都應屬于本發(fā)明所附權利要求保護范圍之內(nèi)。
權利要求
1、一種高效通用的QC-LDPC碼譯碼器,其特征在于,包括通用處理器(1),用于根據(jù)QC-LDPC碼校驗矩陣的結(jié)構(gòu),對數(shù)據(jù)存儲區(qū)(2)進行空間分配,同時為數(shù)據(jù)的尋址建立索引,以及用于對QC-LDPC碼譯碼過程進行控制,對該譯碼過程中的各信息處理運算進行調(diào)度,并在該譯碼過程中實現(xiàn)包括奇偶校驗、校驗節(jié)點更新和變量節(jié)點更新的信息處理運算中的部分;數(shù)據(jù)存儲區(qū)(2),用于存儲所述譯碼過程中所需的信息,所述信息包括變量節(jié)點的初始信息、迭代過程中的校驗節(jié)點信息和變量節(jié)點信息,所述數(shù)據(jù)存儲區(qū)(2)以塊為單位對所述信息進行存儲;硬件加速器(3),用于在譯碼過程中實現(xiàn)包括奇偶校驗、校驗節(jié)點更新、變量節(jié)點更新的信息處理運算中的部分或全部。
2、 如權利要求1所述的譯碼器,其特征在于,所述硬件加速器(3 ) 進一步包括數(shù)據(jù)接口 (4),用于對寫入/讀出數(shù)據(jù)的時序和格式進行適配; 數(shù)據(jù)緩存器(5),用于存儲信息處理過程中的中間變量; 運算單元(6),用于完成對信息的運算處理; 控制單元(7),用于對硬件加速器(3)的運行過程進行控制。
3、 如權利要求2所述的譯碼器,其特征在于,所述數(shù)據(jù)緩存器(5 ) 進一步包括符號緩存器(8),用于存儲變量節(jié)點信息的符號; 最小值緩存器(9),用于存儲參與同一個校驗節(jié)點更新的變量節(jié)點信息絕對值的最小值;索引緩存器(10),用于存儲取得所述最小值的變量節(jié)點的位置;次小值緩存器(11),用于存儲參與同一個校驗節(jié)點更新的變量節(jié) 點信息絕對值的次小值。
4、 如權利要求1所述的譯碼器,其特征在于,所述QC-LDPC碼 校驗矩陣的同 一行塊或列塊中的循環(huán)置換矩陣所對應的存儲塊在數(shù)據(jù) 存儲區(qū)(2)中連續(xù)排放。
5、 如權利要求1所述的i奪碼器,其特征在于,對于^見則QC-LDPC 碼,其校驗矩陣的同 一行塊或列塊中的循環(huán)置換矩陣所對應的存儲塊 在數(shù)據(jù)存儲區(qū)(2)中連續(xù)或等間隔排放。
6、 如權利要求1所述的譯碼器,其特征在于,硬件加速器(3) 為獨立于通用處理器(1)之外的硬件電路,或者與通用處理器(1) 集成的專用處理器,或者是在通用處理器(1)指令集的基礎上針對 QC-LDPC碼譯碼增加的特殊指令集。
7、 如權利要求1所述的譯碼器,其特征在于,所述奇偶校驗與校 驗節(jié)點更新同時進行,以進一步提高譯碼吞吐量。
8、 如權利要求1所述的譯碼器,其特征在于,所述校驗節(jié)點更新 與變量節(jié)點更新交替地進行,以加快譯碼收斂速度,減少迭代次數(shù)。
9、 一種高效通用的QC-LDPC碼譯碼方法,其特征在于,該方法 采用軟件的方式并輔以硬件加速器實現(xiàn)QC-LDPC碼譯碼過程,具體包 括以下步驟使用通用處理器(1 )、根據(jù)QC-LDPC碼校驗矩陣的結(jié)構(gòu)、對數(shù)據(jù) 存儲區(qū)(2)進行空間分配,同時為數(shù)據(jù)的尋址建立索引;使用數(shù)據(jù)存儲區(qū)(2)存儲所述QC-LDPC碼譯碼過程中所需的信 息,包括變量節(jié)點的初始信息、迭代過程中的校驗節(jié)點信息和變量節(jié) 點信息,所述數(shù)據(jù)存儲區(qū)(2)以塊為單位對所述信息進行存儲;對數(shù)據(jù)存儲區(qū)(2)進行初始化,然后由通用處理器(1)或硬件 加速器(3)以行塊為單位進行奇偶校驗;若所有行塊的校驗方程均滿足,則判決輸出,若有校驗方程不滿 足,則在通用處理器(1)的調(diào)度下,由通用處理器(1)或硬件加速 器(3)以行塊為單位進行校驗節(jié)點更新以及以列塊為單位進行變量節(jié) 點更新;所述通用處理器(1)與硬件加速器(3)之間以塊為單位對信息 進行傳輸;若已達到最大迭代次數(shù),則判決輸出,否則再次進入奇偶校驗的 步驟,開始新一次的迭代。
10、如權利要求9所述的譯碼方法,其特征在于,還包括如下步驟數(shù)據(jù)接口 (4)將通用處理器(1)寫入硬件加速器(3)的信息輸 入運算單元(6);控制單元(7)將數(shù)據(jù)緩存器(5)中的值輸入運算單元(6)與所 述寫入的信息進行運算,并更新數(shù)據(jù)緩存器(5)存儲的內(nèi)容;數(shù)據(jù)接口 (4)根據(jù)數(shù)據(jù)緩存器(5)中的值,輸出信息處理運算的結(jié)果。
11、 如權利要求9或IO所述的譯碼方法,其特征在于,所述校驗 節(jié)點更新包括如下步驟輸入數(shù)據(jù)接口 ( 13 )將通用處理器(1 )寫入硬件加速器(3 )的 變量節(jié)點信息的符號輸入符號緩存器(8),同時將所述信息的絕對值 輸入比較器(12 );控制單元(7)將最小值緩存器(9)和次小值緩存器(11)中參 與同一個校驗節(jié)點更新的變量節(jié)點信息的絕對值輸入比較器(12)與 所述寫入的變量節(jié)點信息的絕對值進行比較,得到新的最小值、次小 值和最小值的位置,并更新最小值緩存器(9)、次小值緩存器(ll) 和索引緩存器(10)存儲的內(nèi)容;輸出數(shù)據(jù)接口 (13)根據(jù)最小值緩存器(9)、次小值緩存器(11) 和索引緩存器(10)中的值,并經(jīng)過一定的修正處理后,輸出新的校 驗節(jié)點信息。
12、 如權利要求9所述的譯碼方法,其特征在于,所述QC-LDPC 碼校驗矩陣的同 一行塊或列塊中的循環(huán)置換矩陣所對應的存儲塊在數(shù) 據(jù)存儲區(qū)(2)中連續(xù)排放。
13、 如權利要求9所述的譯碼方法,其特征在于,對于規(guī)則 QC-LDPC碼,其才L瞼矩陣的同一行塊或列塊中的循環(huán)置換矩陣所對應 的存儲塊在數(shù)據(jù)存儲區(qū)(2)中連續(xù)或等間隔排放。
14、 如權利要求9所述的譯碼方法,其特征在于,所述奇偶校驗與校驗節(jié)點更新同時進行,以進一步提高譯碼吞吐量。
15、 如權利要求9所述的譯碼方法,其特征在于,所述校驗節(jié)點 更新與變量節(jié)點更新交替地進行,以加快譯碼收斂速度,減少迭代次數(shù)。
全文摘要
本發(fā)明提出了一種高效通用的QC-LDPC碼譯碼器,其包括通用處理器,其對數(shù)據(jù)存儲區(qū)進行空間分配,并為數(shù)據(jù)的尋址建立索引;數(shù)據(jù)存儲區(qū),用于存儲譯碼過程中所需的信息;硬件加速器,用于實現(xiàn)包括奇偶校驗、校驗節(jié)點更新、變量節(jié)點更新的信息處理運算中的部分或全部。本發(fā)明同時提出一種相應的QC-LDPC碼譯碼方法,包括對變量節(jié)點信息進行初始化并對所述校驗矩陣以行塊為單位進行奇偶校驗;若判斷有校驗方程不滿足,則以行塊為單位進行校驗節(jié)點更新以及以列塊為單位進行變量節(jié)點更新。本發(fā)明的譯碼器具有較強的通用性,提高了譯碼吞吐量,適用于規(guī)則或者非規(guī)則QC-LDPC碼。
文檔編號H03M13/11GK101350625SQ20071011920
公開日2009年1月21日 申請日期2007年7月18日 優(yōu)先權日2007年7月18日
發(fā)明者葉睿睿, 曹曉衛(wèi), 群 李, 楊慶華, 王秋生, 申紅兵, 棟 白, 文 陳, 濤 陶, 炬 馬 申請人:北京泰美世紀科技有限公司