專利名稱:解碼裝置的制作方法
技術領域:
本發(fā)明涉及一種解碼設備、解碼方法和程序。更具體地,本發(fā)明涉及一種用于將使用低密度奇偶校驗碼(LDPC碼)進行編碼的代碼解碼的解碼設備和解碼方法、及其程序。
背景技術:
近年來,例如,在諸如移動通信和深空通信的通信領域、以及諸如陸地波或衛(wèi)星數字廣播的廣播領域中的研究進步顯著。與此情形一起出現(xiàn)的是,積極地開展了對用于使糾錯編碼和解碼高效的編碼理論的研究。
作為代碼性能的理論極限,由所謂的Shannon(C.E.Shannon)信道編碼定理表示的Shannon極限是眾所周知的。出于開發(fā)顯示出接近此Shannon極限的性能的代碼的目的,已經開展了對編碼理論的研究。例如,近年來,作為顯示出接近Shannon極限的性能的編碼方法,開發(fā)了通常被稱為“增強編碼”的技術,如并行級聯(lián)卷積碼(PCCC)和串行級聯(lián)卷積碼(SCCC)。此外,盡管開發(fā)了此增強編碼,但是作為人們知道了長時間的編碼方法,低密度奇偶校驗碼(以下稱為“LDPC碼”)吸引了注意力。
在R.G.Gallager的“Low Density Parity Check Codes(低密度奇偶校驗碼)”(Cambridge,MassachusettsM.I.T.Press,1963)中首次提出了LDPC碼。隨后,在D.J.C.Mackay的“Good error correcting codes based on very sparsematrices(基于極稀疏矩陣的良好糾錯碼)”(提交給IEEE Trans.Inf.Theory,IT-45,pp.399-431,1999)以及M.G.Luby、M.Mitzenmacher、M.A.Shokrollachi和D.A.Spielman的“Analysis of low density codes and improved designs usingirregular graphs(低密度碼的分析和使用不規(guī)則圖形的改進設計)”(Proceedingsof ACM Symposium on Theory of Computing,pp.249-258,1998)中,LDPC再次吸引了注意力。
根據這個新近的研究,人們開始知道,對于LDPC碼,與增強編碼相似,當碼長度增大時,可以獲得接近Shannon極限的性能。此外,由于LDPC碼具有最小長度與碼長度成比例的性質,因此,它們具有這樣的優(yōu)點塊錯誤概率特性良好,并且,在增強編碼的解碼特性中觀察到的所謂的錯誤平底(error floor)現(xiàn)象幾乎不出現(xiàn)。
現(xiàn)在,將在下面詳細描述這樣的LDPC碼。LDPC碼是線性碼,并且不總是是二維的,但是在這里,假設LDPC是二維的來給出描述。
LDPC碼的最大特征是定義LDPC碼的奇偶校驗矩陣是稀疏的。這里,以矩陣元素中1的數目非常小這樣的方式來形成稀疏矩陣。如果將稀疏校驗矩陣表示為H,則其示例包括這樣的校驗矩陣,其中,如圖1所示,每列的Hamming(漢明)權重(1的數目;權重)為“3”,而每行的Hamming權重為“6”。
如上所述,由每行和每列的Hamming權重固定的校驗矩陣H定義的LDPC碼被稱為“規(guī)則LDPC碼”。另一方面,由每行和每列的Hamming權重不固定的校驗矩陣H定義的LDPC碼被稱為“不規(guī)則LDPC碼”。
通過在校驗矩陣H的基礎上產生生成(generation)矩陣G,并且將此生成矩陣G乘以二維信息消息而生成碼字,來實現(xiàn)利用這種LDPC碼的編碼。更具體地說,用于利用LDPC碼進行編碼的編碼設備計算生成矩陣G,其中,對于校驗矩陣H的轉置矩陣HT,等式GHT=0成立。這里,當生成矩陣G為k×n矩陣時,編碼設備將生成矩陣G乘以k位信息消息(向量u),并生成n位碼字c(=uG)。在將值為“0”的碼位映射到“+1”、而將值為“1”的碼位映射到“-1”的情況下,傳送由此編碼設備生成的碼字,并且,通過預定通信信道在接收側接收它。
另一方面,可以通過消息傳遞算法、利用所謂Tanner圖上的信念傳播(belief propagation)來進行LDPC碼的解碼,其中,所述Tanner圖由可變節(jié)點(也稱為消息節(jié)點)和校驗節(jié)點構成;此消息傳遞算法由Gallager提出,并作為“概率解碼”而為人所知。在下文中,可變節(jié)點和校驗節(jié)點在適當的地方也被簡稱為節(jié)點。
然而,在概率解碼中,由于在節(jié)點之間交換的消息是實數值,因此,為了找到解析解,有必要查明采取連續(xù)值的消息的概率分布。這使得包括大難度的分析成為必要。因此,Gallager提出了算法A或算法B作為用于將LDPC碼解碼的算法。
通常,根據圖2中示出的過程來進行LDPC碼的解碼。這里,將接收值表示為U0(u0i),將從校驗節(jié)點輸出的消息表示為uj,而將從可變節(jié)點輸出的消息表示為vi。這里,所述消息是實數值,使得用所謂的對數似然比來代表該值的“0”相似性(likeness)。
在LDPC碼的解碼中,最初,如圖2所示,在步驟S11中,接收值U0(u0i)被接收,消息uj被初始化為0,并且,將整數作為迭代過程的計數器的變量k被初始化為0。然后,過程進行到步驟S12。在步驟S12,基于所接收值U0(u0i),通過進行式(1)中示出的計算來確定消息vi。此外,基于此消息vi,通過進行式(2)中示出的計算來確定消息uj。
這里,式(1)和(2)中的dv和dc分別為指示校驗矩陣H的垂直方向(行的方向)和水平方向(列的方向)上的1的數目的參數,并且,可以按照所希望的來選擇它們。例如,在(3,6)碼的情況中,dv=3并且dc=6。
在式(1)和(2)的每一個的計算中,由于從輸出消息的棱(edge)輸入的消息不被用作和或積計算的參數,因此,和或積計算的范圍是從1至dv-1、或者從1至dc-1。實際上,通過事先創(chuàng)建式3中示出的函數R(v1,v2)的表,并且如圖4所示連續(xù)地(遞歸地)使用此表,來進行式(2)中示出的計算,其中,所述函數R(v1,v2)由關于兩個輸入v1和v2的一個輸出來定義。
x=2tanh-1{tanh(v1/2)tanh(v2/2)}=R(v1,v2)(3) 此外,在步驟S12,將變量k增加1,然后,過程進行到步驟S13。在步驟S13,確定變量k是否大于或等于迭代解碼的預定數目N。當在步驟S13確定變量k不大于或等于N時,過程返回步驟S12,并且再次進行同樣的處理。
當在步驟S13確定變量k大于或等于N時,過程進行到步驟S14,在該處,確定并輸出作為進行式(5)中示出的計算的結果而最后輸出的、充當解碼結果的消息v。這完成了LDPC碼的解碼過程。
這里,與式(1)的計算不同,使用來自連接到可變節(jié)點的所有棱的輸入消息來進行式(5)的計算。
在這樣的LDPC碼解碼過程中,例如,在(3,6)碼的情況中,如圖3所示,在節(jié)點之間交換消息。在圖3中由“=”表示的節(jié)點(可變節(jié)點)中,進行式(1)中示出的計算。在由“+”表示的節(jié)點(校驗節(jié)點)中,進行式(2)中示出的計算。具體地說,在算法A中,消息被形成為二維;在由“+”表示的節(jié)點中,進行dc-1個輸入消息的異或計算;而在由“=”表示的節(jié)點中,對于所接收值R,當所有dv-1個輸入消息是不同的位值時,符號被取反并被輸出。
此外,近年來,開展了對LDPC碼解碼的實現(xiàn)方法的研究。在描述實現(xiàn)方法之前,以示意的形式來描述LDPC碼的解碼。
圖4示出了(3,6)LDPC碼(編碼率為1/2,碼長度為12)的奇偶校驗矩陣示例。可以通過使用Tanner圖來寫出LDPC碼的奇偶校驗矩陣,如圖5所示。在圖5中,由“+”表示的節(jié)點是校驗節(jié)點,而由“=”表示的節(jié)點是可變節(jié)點。校驗節(jié)點和可變節(jié)點分別對應于奇偶校驗矩陣的行和列。校驗節(jié)點和可變節(jié)點之間的連接線是棱,并且對應于校驗矩陣的“1”。也就是說,當校驗矩陣的第j行及第i列的元素為1時,在圖5中,從頂部起第i個可變節(jié)點(“=”的節(jié)點)和從頂部起第j個校驗節(jié)點(“+”的節(jié)點)通過棱而互相連接。棱表示對應于可變節(jié)點的符號位具有對應于校驗節(jié)點的約束條件。圖5示出了圖4的校驗矩陣的Tanner圖。
在作為將LDPC碼解碼的方法的和積算法中,重復進行可變節(jié)點的計算和校驗節(jié)點的計算。
在可變節(jié)點中,如圖6所示,進行式(1)的計算。也就是說,在圖6中,通過使用來自連接到可變節(jié)點的其余棱的消息u1和u2、以及所接收信息u0i,來計算對應于要計算的棱的消息v1。對應于其它棱的消息也被類似地計算。
在描述校驗節(jié)點計算之前,通過使用式a×b=exp{ln(|a|)+ln(|b|)}×sign(a)×sign(b)來重寫式(2),如式(6)所示,其中,sign(x)在x≥0時為1,而在x<0時為-1。
此外,在x≥0的情況中,當做出定義
時,由于
因此,可將式(6)寫為式(7)。
在校驗節(jié)點中,如圖7所示,進行式(7)的計算。也就是說,在圖7中,通過使用來自連接到校驗節(jié)點的其余棱的消息v1、v2、v3、v4和v5,來計算對應于將為之進行計算的棱的消息uj。對應于其它棱的消息也被類似地計算。
函數
也可以被表示為
并且,當x>0時,
當函數
和
被作為硬件實現(xiàn)時,存在這樣的情況,其中,使用LUT(查找表)來實現(xiàn)它們,并且,它們兩者均為相同的LUT。
當和積算法被作為硬件實現(xiàn)時,有必要利用適當的電路規(guī)模并以適當的操作頻率,來重復進行由式(1)表示的可變節(jié)點計算和由式(7)表示的校驗節(jié)點計算。
作為實現(xiàn)解碼設備的示例,首先給出對在這樣的情況中的實現(xiàn)方法的描述,其中,通過簡單地按順序依次進行每個節(jié)點的計算來進行解碼(完全連續(xù)解碼)。
這里,例如,假設將由圖8的30(行)×90(列)校驗矩陣代表的碼(編碼率為2/3,并且碼長度為90)解碼。圖8的校驗矩陣的1的數目為269;因此,在Tanner圖中,棱的數目變?yōu)?69。這里,在圖8的校驗矩陣中,利用“.”來代表0。
圖9示出了用于將LDPC碼解碼一次的解碼設備的結構示例。
在圖9的解碼設備中,對于該設備以其操作的每個時鐘(clock),計算對應于一條棱的消息。
更具體地說,圖9的解碼設備包括兩個用于棱的存儲器100和102、一個校驗節(jié)點計算器101、一個可變節(jié)點計算器103、一個用于接收的存儲器104、和一個控制部件105。
在圖9的解碼設備中,從用于棱的存儲器100或102依次讀取消息數據,并且,通過使用該消息數據,計算對應于所希望的棱的消息數據。然后,將通過該計算確定的消息數據依次存儲在后級的用于棱的存儲器100或102中。當要進行迭代解碼時,通過連續(xù)級聯(lián)多個用于將LDPC碼解碼一次的圖9的解碼設備、或者通過重復使用圖9的解碼設備,來實現(xiàn)迭代解碼。這里,例如,假設連接多個圖9的解碼設備。
用于棱的存儲器100按照一定的順序存儲從前級解碼設備的可變節(jié)點計算器103(未示出)提供的消息D100,該順序是后級的校驗節(jié)點計算器101讀取它們的順序。然后,在校驗節(jié)點計算階段,用于棱的存儲器100將消息D100作為消息輸出D101而以它們被存儲的順序提供給校驗節(jié)點計算器101。
基于從控制部件105提供的控制信號D106,校驗節(jié)點計算器101通過使用從用于棱的存儲器100提供的消息D101、根據式(7)進行計算,并將通過該計算確定的消息D102提供給后級的用于棱的存儲器102。
用于棱的存儲器102按照一定的順序存儲從前級的校驗節(jié)點計算器101提供的消息D102,該順序是后級的可變節(jié)點計算器103讀取它們的順序。然后,在可變節(jié)點計算階段,用于棱的存儲器102將消息D102作為消息D103并以存儲它們的順序提供給可變節(jié)點計算器103。
此外,將控制信號D107從控制部件105提供給可變節(jié)點計算器103,并且,將所接收數據D104從用于接收的存儲器104提供給可變節(jié)點計算器103。基于控制信號D107,可變節(jié)點計算器103通過使用從用于棱的存儲器100提供的消息D103、和從用于接收的存儲器100提供的所接收數據D104,根據式(1)進行計算,并將作為計算結果而獲得的消息D105提供給后級的解碼設備的用于棱的存儲器100(未示出)。
在用于接收的存儲器104中,存儲所接收的被轉換為LDPC碼的數據(LDPC碼)??刂撇考?05將用于控制可變節(jié)點計算的控制信號D106、和用于控制校驗節(jié)點計算的控制信號D107分別提供給校驗節(jié)點計算器101和可變節(jié)點計算器103。當所有棱的消息均被存儲在用于棱的存儲器100中時,控制部件105將控制信號D106提供給校驗節(jié)點計算器101,而當所有棱的消息均被存儲在用于棱的存儲器102中時,控制部件105將控制信號D107提供給可變節(jié)點計算器103。
圖10示出了圖9的用于依次進行校驗節(jié)點計算的校驗節(jié)點計算器101的結構示例。
在圖10中,通過假設每個消息和符號位一起被量化為總共6位,來示出校驗節(jié)點計算器101。此外,在圖10中,進行由圖8的校驗矩陣代表的LDPC碼的校驗節(jié)點計算。此外,將時鐘ck提供給圖10的校驗節(jié)點計算器101,此時鐘ck被提供給必要的塊。每個塊與時鐘ck同步地進行處理。
例如,基于從控制部件105提供的1位控制信號D106,圖10的校驗節(jié)點計算器101通過使用從用于棱的存儲器100依次讀取的消息D101來進行根據式(7)的計算。
更具體地說,在校驗節(jié)點計算器101中,依次讀取來自對應于校驗矩陣的每一列的可變節(jié)點的6位消息D101(消息vi),作為其較低階(lower-order)位的絕對值D122(|vi|)被提供給LUT 121,而作為其最高位的符號位D121被分別提供給EXOR電路129和FIFO(先入先出)存儲器133。此外,將控制信號D106從控制部件105提供給校驗節(jié)點計算器101,并且,將該控制信號D106提供給選擇器124和選擇器131。
LUT 121讀取對絕對值D122(|vi|)進行式(7)中的
的計算所得的5位計算結果D123
并將其提供給加法器122和FIFO存儲器127。
加法器122通過將計算結果D123
和存儲在寄存器123中的9位值D124加到一起來累計(integrate)計算結果D123
并將由此獲得的9位累計值再次存儲在寄存器123中。當累計了來自校驗矩陣一行上的所有棱的消息D101的絕對值D122(|vi|)的計算結果時,寄存器123被復位。
當依次讀取校驗矩陣一行上的消息D101,并且,將對于一行的計算結果D123的累計值存儲在寄存器123中時,從控制部件105提供的控制信號D106從0改變?yōu)?。例如,當行權重為“9”時,控制信號D106在第1至第8個時鐘為“0”,而在第9個時鐘為“1”。
當控制信號D106為“1”時,選擇器124選擇存儲在寄存器123中的值,即從來自校驗矩陣一行上所有棱的消息D101(消息vi)確定的
所得的9位值D124
從i=1至i=dc),并將該值作為值D125輸出到寄存器125,由此來存儲它。寄存器125將所存儲的值D125作為9位值D126提供給選擇器124和加法器126。當控制信號D106為“0”時,選擇器124選擇從寄存器125提供的值D126,并將該值輸出到選擇器124,由此來再次存儲它。也就是說,寄存器125將先前累計的
提供給選擇器124和加法器126,直到累計了從來自校驗矩陣一行上所有棱的消息D101(消息vi)確定的
為止。
另一方面,F(xiàn)IFO存儲器127將LUT 121輸出的計算結果D123
延遲,直到從寄存器125輸出新值D126
從i=1至i=dc)為止,并將計算結果D123作為5位值D127提供給減法器126。減法器126從寄存器125提供的值D126中減去從FIFO存儲器127提供的值D127,并將減法結果作為5位相減值D128提供給LUT 128。也就是說,減法器126從由來自校驗矩陣一行上所有棱的消息D101(消息vi)所確定的
的累計值中,減去由來自要確定的棱的消息D101(消息vi)所確定的
并將相減值
從i=1至i=dc-1)作為相減值D128提供給LUT 128。
LUT 128輸出對相減值D128
從i=1至i=dc-1)進行式(7)中的
的計算所得的5位計算結果D129
在進行上述處理的同時,EXOR電路129通過計算存儲在寄存器130中的1位值D131和符號位D121的異或,來進行符號位的乘法,并將1位乘法結果D130再次存儲在寄存器130中。當來自校驗矩陣一行上所有棱的消息D101的符號位D121均被乘入時,寄存器130被復位。
當存儲了將來自校驗矩陣一行上所有棱的消息D101的符號位D121相乘所得的乘法結果D130(Пsign(vi),從i=1至i=dc)時,從控制部件105提供的控制信號D106從“0”改變?yōu)椤?”。
當控制信號D106為“1”時,選擇器131選擇存儲在寄存器130中的值,即,將來自校驗矩陣一行上所有棱的消息D101的符號位D121相乘所得的值D131(Пsign(vi),從i=1至i=dc),并將該值作為1位值D133輸出到寄存器132,由此來存儲它。寄存器132將所存儲的值D132作為1位值D132提供給選擇器131和EXOR電路134。當控制信號D106為“0”時,選擇器131選擇從寄存器132提供的值D133,并將該值輸出到寄存器132,由此來再次存儲它。也就是說,寄存器132將先前存儲的值提供給選擇器131和EXOR電路134,直到來自校驗矩陣一行上所有棱的消息D101(消息vi)的符號位D121被乘入為止。
另一方面,F(xiàn)IFO存儲器133將符號位D121延遲,直到新值D133(Пsign(vi),從i=1至i=dc)被從寄存器132提供給EXOR電路134為止,并且,其將該結果作為1位值D134提供給EXOR電路134。EXOR電路134通過計算從寄存器132提供的值D133和從FIFO存儲器133提供的值D134的異或,來將值D133除以值D134,并將1位除法結果作為相除值D135輸出。也就是說,EXOR電路134將來自校驗矩陣一行上所有棱的消息D101的符號位D121(sign(|vi|))的相乘值除以來自要確定的棱的消息D101的符號位D121(sign(|vi|)),并將相除值(Пsign(vi),從i=1至i=dc-1)作為相除值D135輸出。
在校驗節(jié)點計算器101中,將總共6位作為消息D102(消息uj)輸出,其中,從LUT 128輸出的5位計算結果D129是較低階的5位,而從EXOR電路134輸出的1位相除值D135是最高階位。
如上所述,在校驗節(jié)點計算器101中,進行式(7)的計算,并確定消息uj。
由于圖8的校驗矩陣的行權重最大值為9,也就是說,由于提供給校驗節(jié)點的消息的最大數目為9,因此,校驗節(jié)點計算器101具有用于將9個消息
延遲的FIFO存儲器127和FIFO存儲器133。當要計算權重小于9的行的消息時,F(xiàn)IFO存儲器127和FIFO存儲器133中的延遲量減小為行權重的值。
圖11示出了圖9的用于依次進行可變節(jié)點計算的可變節(jié)點計算器103的結構示例。
在圖11中,通過假設每個消息和符號位一起被量化為總共6位來示出可變節(jié)點計算器103。在圖11中,進行由圖8的校驗矩陣代表的LDPC碼的可變節(jié)點計算。此外,將時鐘ck提供給圖11的可變節(jié)點計算器103,并將該時鐘ck被提供給必要的塊。每個塊與時鐘ck同步地進行處理。
例如,基于從控制部件105提供的1位控制信號D107,圖11的可變節(jié)點計算器103通過使用從用于棱的存儲器102依次讀取的消息D103、和從用于接收的存儲器104讀取的接收數據D104,來進行根據式(1)的計算。
更具體地說,在可變節(jié)點計算器103中,依次讀取來自對應于校驗矩陣每一行的校驗節(jié)點的6位消息D103(消息uj),并將消息D103提供給加法器151和FIFO存儲器155。此外,在可變節(jié)點計算器103中,從用于接收的存儲器104依次讀取6位接收數據D104,并將其提供給加法器156。此外,將控制信號D107從控制部件105提供給可變節(jié)點計算器103,并將該控制信號D107提供給選擇器153。
加法器151通過將消息D103(消息uj)和存儲在寄存器152中的9位值D151加到一起來累計消息D103,并將9位累計值再次存儲在寄存器152中。當累計了來自校驗矩陣一行上所有棱的消息D103時,寄存器152被復位。
當依次讀取來自校驗矩陣一行上所有棱的消息D103、并且將累計一列的消息D103所得的值存儲在寄存器152中時,從控制部件105提供的控制信號D107從“0”改變?yōu)椤?”。例如,當列權重為“5”時,控制信號D107在第1時鐘到第4時鐘為“0”,而在第5時鐘為“0”。
當控制信號D107為“1”時,選擇器153選擇存儲在寄存器152中的值,即,累計來自校驗矩陣一行上所有棱的消息D103(消息uj)所得的9位值D151(∑uj,從j=1至j=dv),并將該值輸出到寄存器154,由此來存儲它。寄存器154將所存儲的值D151作為9位值D152提供給選擇器153和加法-減法器156。當控制信號D107為“0”時,選擇器153選擇從寄存器154提供的值D152,并將該值輸出到寄存器154,由此來再次存儲它。也就是說,寄存器154將先前累計的值提供給選擇器153和加法-減法器156,直到累計了來自校驗矩陣一行上所有棱的消息D103(消息uj)為止。
另一方面,F(xiàn)IFO存儲器155將來自校驗節(jié)點的消息D103延遲,直到從寄存器154輸出新值D152(∑uj,從j=1至j=dv)為止,并將消息D103作為6位值D153提供給加法-減法器156。加法-減法器156從寄存器154提供的值D152中減去從FIFO存儲器155提供的值D153。也就是說,加法-減法器156從來自校驗矩陣一行上所有棱的消息D103(消息uj)的累計值中減去來自要確定的棱的消息uj,并確定相減值(∑uj,從j=1至j=dv-1)。此外,加法-減法器156將從用于接收的存儲器104提供的接收數據D104加到相減值(∑uj,從j=1至dv-1)上,并將由此獲得的6位值作為消息D105(消息vi)輸出。
如上所述,在可變節(jié)點計算器103中,進行式(1)的計算,并確定消息vi。
由于圖8的校驗矩陣的列權重最大值為5,也就是說,由于提供給可變節(jié)點的消息的最大數目為5,因此,可變節(jié)點計算器103具有用于延遲5個消息(uj)的FIFO存儲器155。當要計算權重小于5的列的消息時,F(xiàn)IFO存儲器155中的延遲量減小為列權重的值。
在圖9的解碼設備中,根據校驗矩陣的權重來從控制部件105提供控制信號。根據圖9的解碼設備,只要用于棱的存儲器100和102、以及校驗節(jié)點計算器101和可變節(jié)點計算器103的FIFO存儲器127、133和155的容量足夠,就可以通過只改變控制信號來將各種校驗矩陣的LDPC碼解碼。
盡管未在圖9的解碼設備中示出,但是在解碼的最后一級,進行式(5)的計算而不是式(1)的可變節(jié)點計算,并將計算結果作為最終解碼結果輸出。
當通過重復使用圖9的解碼設備來將LDPC碼解碼時,交替進行校驗節(jié)點計算和可變節(jié)點計算。也就是說,在圖9的解碼設備中,可變節(jié)點計算器103通過使用校驗節(jié)點計算器101的校驗節(jié)點計算結果來進行可變節(jié)點計算,而校驗節(jié)點計算器101通過使用可變節(jié)點計算器103的可變節(jié)點計算結果來進行校驗節(jié)點計算。
因此,對于使用圖8的具有269條棱的校驗矩陣來進行一次解碼,需要269×2=538個時鐘。例如,為了進行50次迭代解碼,當接收到將90個碼(接收數據)設為一幀的一個幀時,538×50=26900個時鐘操作是必需的,其中所述一個幀是碼長度,因而,近似為接收頻率的大約300(≈26900/90)倍高的高速操作變成必需的。如果假設接收頻率為數十MHz,則需要GHz或更高速度的操作。
此外,例如,在級聯(lián)50個圖9的解碼設備以將LDPC碼解碼的情況中,可同時進行多個可變節(jié)點計算和校驗節(jié)點計算。例如,當進行第一幀的可變節(jié)點計算時,進行第二幀的校驗節(jié)點計算,并且進行第三幀的可變節(jié)點計算。在此情況中,當接收到90個碼時,由于需要計算269條棱,因此解碼設備需要以近似為接收頻率的3(≈269/90)倍高的頻率來操作,因而很有可能實現(xiàn)。然而,在此情況中,簡單地說,電路規(guī)模變?yōu)閳D9的解碼設備的50倍大。
接下來,給出對在通過同時進行所有節(jié)點計算來進行解碼(完全并行解碼)的情況中解碼設備實現(xiàn)方法的描述。
例如,在C.Howland和A.Blanksby的“Parallel Decoing Architectures forLow Density Parity Check Codes(低密度奇偶校驗碼的并行解碼架構)”(Symposium on Circuits and Systems,2001)中描述了此實現(xiàn)方法。
圖12A至12C示出了用于將由圖8的校驗矩陣代表的碼(編碼率為2/3,并且碼長度為90)解碼的解碼設備示例的結構。圖12A示出了解碼設備的總體結構。圖12B示出了圖12A的解碼設備的由虛線B環(huán)繞的圖中上部的詳細結構。圖12C示出了圖12A的解碼設備的由虛線C環(huán)繞的圖中下部的詳細結構。
圖12A至12C的解碼設備包括一個用于接收的存儲器205、兩個棱互換裝置200和203、兩個用于棱的存儲器202和206、由30個校驗節(jié)點計算器2011至20130組成的校驗節(jié)點計算器201、和由90個可變節(jié)點計算器2041至20490組成的可變節(jié)點計算器204。
在圖12A至12C的解碼設備中,從用于棱的存儲器202或206同時讀取對應于269條棱的所有消息數據,并且,通過使用該消息數據,計算對應于這269條棱的新消息數據。此外,將作為計算結果確定的所有新消息數據同時存儲在后級的用于棱的存儲器206或202中。通過重復使用圖12A至12C的解碼設備,實現(xiàn)了迭代解碼?,F(xiàn)在,將在下面詳細描述每個部件。
用于棱的存儲器206同時存儲來自前級的可變節(jié)點計算器2041至20490的所有消息D2061至D20690,在下一個時鐘(下一個時鐘的時刻)讀取消息D2061至D20690作為消息D2071至D20790,并將它們作為消息D200(D2001至D20090)提供給后級的棱互換裝置200。棱互換裝置200根據圖8的校驗矩陣來重新排列(互換)從用于棱的存儲器206提供的消息D2001至D20090的順序,并將它們作為D2011至D20130提供給校驗節(jié)點計算器2011至20130。
校驗節(jié)點計算器2011至20130通過使用從棱互換裝置200提供的消息D2011至D20130來進行根據式(7)的計算,并將作為計算結果而獲得的消息D2021至D20230提供給用于棱的存儲器202。
用于棱的存儲器202同時存儲從前級的校驗節(jié)點計算器2011至20130提供的所有消息D2021至D20230,并且在下一個時刻將所有消息D2021至D20230作為消息D2031至D20330提供給后級的棱互換裝置203。
棱互換裝置203根據圖8的校驗矩陣來重新排列從用于棱的存儲器202提供的消息D2031至D20330的順序,并將它們作為消息D2041至D20490提供給可變節(jié)點計算器2041至20490。
可變節(jié)點計算器2041至20490通過使用從棱互換裝置203提供的消息D2041至D20490、和從用于接收的存儲器205提供的接收數據D2051至D20590,來進行根據式(1)的計算,并將作為計算結果而獲得的消息D2061至D20690提供給后級的用于棱的存儲器206。
圖13示出了圖12A至圖12C的用于同時進行校驗節(jié)點計算的校驗節(jié)點計算器201m(m=1、2、...、30)的結構示例。
在圖13的校驗節(jié)點計算器201m中,與圖10的校驗節(jié)點計算器101相似,進行式(7)的校驗節(jié)點計算,并且同時對所有棱進行校驗節(jié)點計算。
更具體地說,在圖13的校驗節(jié)點計算器201m中,同時讀取從棱互換裝置200提供的、來自對應于圖8的校驗矩陣每一行的可變節(jié)點的所有消息D2211至D2219(vi),并且,將作為其各自的較低階5位的絕對值D2221至D2229(|vi|)分別提供給LUT 2211至2219。將作為消息D2211至D2219(vi)的最高階位的1位符號位D2231至D2239分別提供給EXOR電路2261至2269,并且還將其提供給EXOR電路225。
LUT 2211至2219讀取分別對絕對值D2221至D2229(|vi|)分別進行式(7)中的
計算所得的5位計算結果D2241至D2249
并將它們提供給各個加法器2231至2239。LUT 2211至2219將計算結果D2241至D2249
提供給加法器222。
加法器222對計算結果D2241至D2249
的值的總和(對于一行的計算結果的總和)進行計算,并將9位計算結果D225
從i=1至i=9)提供給減法器2231至2239。減法器2231至2239分別從計算結果D225中減去計算結果D2241至D2249
并將5位相減值D2271至D2279提供給LUT2241至2249。也就是說,減法器2231至2239從由來自所有棱的消息vi所確定的
的累計值中減去從由來自要確定的棱的消息vi所確定的
并將相減值D2271至D2279
從i=1至i=8)分別提供給LUT 2241至2249。LUT 2241至2249讀取對相減值D2271至D2279進行式(7)中的
計算所得的5位計算結果D2281至D2289,并輸出它們。
另一方面,EXOR電路225通過計算所有符號位D2231至D2239的異或,來進行符號位D2231至D2239的相乘,并且將1位相乘值D226(對于一行的符號位的相乘值(Пsign(vi),從i=1至i=9))提供給各個EXOR電路2261至2269。通過分別計算相乘值D226和符號位D2231至D2239的異或,EXOR電路2261至2269確定將相乘值D226分別除以符號位D2231至D2239所得的1位相除值D2291至D2299(Пsign(vi),從i=1至i=8),并輸出它們。
在校驗節(jié)點計算器201m中,將總共6位輸出為作為校驗節(jié)點計算結果而獲得的消息D2301至D2309,其中,使從LUT 2241至2249輸出的5位計算結果D2281至D2289各自成為5個較低階位,而使從EXOR電路2261至2269輸出的相除值D2291至D2299各自成為最高階位。
以上述方式,在校驗節(jié)點計算器201m中,進行式(7)的計算,并確定消息uj。
在圖13中,通過假設將每個消息和符號位一起被量化為總共6位來示出校驗節(jié)點計算器201m。圖13的電路對應于一個校驗節(jié)點。對于圖8中將在這里處理的校驗矩陣,由于存在30行的校驗節(jié)點,因此圖12A至12C的解碼設備具有30個圖13中示出的校驗節(jié)點計算器201m,其中,30是校驗矩陣的行的數目。
在圖13的校驗節(jié)點計算器201m中,可以同時計算9個消息。對于圖8中將在這里處理的校驗矩陣的行權重,第一行的權重為8,而第二行的權重為9,也就是說,存在一種提供給校驗節(jié)點的消息數目為8的情況,而存在9種消息數目為9的情況。因此,校驗節(jié)點計算器2011具有能夠類似于圖13的電路而同時計算8個消息的電路結構,并且,按照與圖13的電路相同的方式來配置其余的校驗節(jié)點計算器2012至20130。
圖14示出了圖12A至12C的用于同時進行可變節(jié)點計算的可變節(jié)點計算器204p(p=1、2、...、90)的結構示例。
在圖14的可變節(jié)點計算器204p中,與圖11的可變節(jié)點計算器103相似,進行式(1)的可變節(jié)點計算,并且同時對所有棱進行可變節(jié)點計算。
更具體地說,在圖14的可變節(jié)點計算器204p中,同時讀取從棱互換裝置203提供的、來自對應于校驗矩陣每一行的校驗節(jié)點的所有6位消息D2511至D2515(消息uj),并將這些消息提供給各個加法器2521至2525,并且還將其提供給加法器251。此外,將接收數據D271從用于接收的存儲器205提供給可變節(jié)點計算器204p,并將接收數據D271提供給加法-減法器2521至2525。
加法器251累計所有消息D2511至D2515(消息uj),并將9位累計值D252(對于一行的消息的總和值(∑uj,從j=1至j=5))提供給加法-減法器2521至2525。加法-減法器2521至2525分別從相加值D252中減去消息D2511至D2515(消息uj)。也就是說,加法-減法器2521至2525分別從來自所有棱的消息uj的累計值D252中,減去來自要確定的棱的消息D2511至D2515(消息uj),并確定相減值(∑uj,從j=1至j=4)。
此外,加法-減法器2521至2525將接收數據D271(u0i)加到相減值(∑uj,從j=1至j=4)上,并將6位相加值D2531至2535作為可變節(jié)點計算結果輸出。
以上述方式,在可變節(jié)點計算器204p中進行式(1)的計算,并確定消息vi。
在圖14中,通過假設將每個消息和符號位一起量化為6位來示出可變節(jié)點計算器204p。圖14的電路對應于一個可變節(jié)點。對于將在這里處理的圖8中的校驗矩陣,由于存在90列的可變節(jié)點,因此圖12A至12C的解碼設備具有90個圖14中示出的電路,其中,90為校驗矩陣的列的數目。
在圖14的可變節(jié)點計算器204p中,有可能同時計算5個消息。將在此處理的圖8中的校驗矩陣具有權重分別為5、3、2和1的15、45、29和1列。因此,可變節(jié)點計算器2041至20490中的15個可變節(jié)點計算器具有與圖14的電路結構相同的電路結構。其余的45、29和1個可變節(jié)點計算器具有能夠類似于圖14的電路而同時計算3、2、和1個消息的電路結構。
盡管也沒有在圖12A至12C中的解碼設備中示出,但是,與圖9的情況相似,在解碼的最后階段,進行式(5)的計算而不是式(1)的可變節(jié)點計算,并將計算結果作為最終解碼結果輸出。
根據圖12A至12C的解碼設備,有可能在一個時鐘同時計算對應于269條棱的所有消息。
當通過重復使用圖12A至12C的解碼設備來進行解碼時,交替進行校驗節(jié)點計算和可變節(jié)點計算,并且可以以兩個時鐘來進行一次解碼。因此,例如,為了進行50次解碼,當接收到其中碼長度為90的碼為一幀的接收數據時,解碼設備需要以2×50=100個時鐘操作,這樣,可以使用與接收頻率近似相同的操作頻率。一般而言,由于LDPC碼的碼長度高達數千到數萬,因此,如果使用圖12A至12C的解碼設備,則可以顯著增大解碼數目,并且可以期望改善糾錯性能。
然而,在圖12A至12C的解碼設備中,由于并行進行對應于Tanner圖的所有棱的消息計算,因此電路規(guī)模與碼長度成比例增大。當圖12A至12C的解碼設備被配置為用于進行具有特定校驗矩陣的、特定碼長度和特定編碼率的LDPC碼解碼的設備時,該解碼設備難以進行具有另一校驗矩陣的、另一碼長度和另一編碼率的LDPC碼的解碼。也就是說,與圖9的解碼設備不同,圖12A至12C的解碼設備難以應付各種碼的解碼,即使只改變控制信號也是如此,并且,對碼的依賴性高。
除了圖9和圖12A至12C的解碼設備以外,例如,在E.Yeo、P.Pakzad、B.Nikolic和V.Anantharam的“VLSI Architectures for Iterative Decoders inMagnetic Recording Channels(用于磁記錄信道中的迭代解碼器的VLSI架構)”(IEEE Transactions on Magnetics,Vol.37,No.2,2001年3月)中,描述了用于以4個消息而不是1個消息或全部消息為單位來同時計算消息的實現(xiàn)方法。在此情況中,通常,存在這樣的問題不易避免從存儲器不同地址的同時讀出、或者到存儲器不同地址的同時寫入,并且,存儲器訪問控制困難。
此外,還提出了通過逼近和積算法來實現(xiàn)的方法。然而,在此方法中,致使出現(xiàn)性能惡化。對于將和積算法作為硬件來實現(xiàn),如上所述,存在以下方法依次連續(xù)進行對應于棱的消息計算(校驗節(jié)點計算和位節(jié)點計算)的方法;并行(完全并行)進行所有消息的計算的方法;以及以若干計算為單位而并行(并行)進行消息計算的方法。
然而,在依次進行對應于棱的消息計算的方法中,需要高操作頻率。相應地,作為用于增大吞吐量的方法,用于以管線(pipeline)結構來布置設備的方法是公知的。在此情況中,電路規(guī)模,具體地說,存儲器(的容量)增大。
在并行進行所有消息的計算的方法中,用于邏輯的電路規(guī)模增大,并且對碼的依賴性高。
在以若干計算為單位來并行進行消息的計算的方法中,存儲器訪問控制困難。
發(fā)明內容
考慮到這樣的情況而形成了本發(fā)明。本發(fā)明的目的是將操作頻率限制在足夠可行的范圍內,同時限制用于邏輯和存儲器的電路規(guī)模,并且能夠容易地控制存儲器訪問。
提供了一種用于將低密度奇偶校驗(LDPC)碼解碼的解碼設備,所述LDPC碼通過由多個子矩陣組成的校驗矩陣來表示,所述子矩陣包括P×P單位矩陣、準單位矩陣、移位矩陣、和矩陣、以及P×P 0矩陣,其中準單位矩陣是具有用0代替了一個或更多1的單位矩陣,移位矩陣是被循環(huán)移位的單位矩陣或準單位矩陣,和矩陣是所述單位矩陣、所述準單位矩陣、和所述移位矩陣中的兩個或更多的和,所述解碼設備包括第一計算部件,用于同時進行用于將所述LDPC碼解碼的P個校驗節(jié)點計算;第二計算部件,用于同時進行用于將所述LDPC碼解碼的P個可變節(jié)點計算;和消息存儲部件,用于讀取和寫入對應于P條棱的消息數據,所述消息數據是作為所述P校驗節(jié)點計算或者所述P可變節(jié)點計算的結果而獲得的;其中,對于其權重為2或更大的子矩陣,所述消息存儲部件將對應于P條棱的消息存儲在相同地址處,所述P條棱屬于相加起來形成其權重為2或更大的所述子矩陣的每個單位矩陣、準單位矩陣和/或移位矩陣。
當把以下矩陣用作子矩陣時,利用多個子矩陣的組合來代表LDPC碼的校驗矩陣,所述矩陣為(P×P)單位矩陣;準單位矩陣,其中用0代替了作為單位矩陣元素的一個或更多1;移位矩陣,其中單位矩陣或準單位矩陣被循環(huán)移位;和矩陣,其為單位矩陣、準單位矩陣、和移位矩陣的兩個或更多的和;或(P×P)0矩陣,本發(fā)明的解碼設備包括第一計算部件,用于同時進行p個用于將LDPC碼解碼的校驗節(jié)點計算;和第二計算部件,用于同時進行p個用于將LDPC碼解碼的可變節(jié)點計算。
第一計算部件可具有p個用于進行校驗節(jié)點計算的校驗節(jié)點計算器,并且,第二計算部件可具有p個用于進行可變節(jié)點計算的可變節(jié)點計算器。
解碼設備還可以包括消息存儲部件,用于同時讀取和寫入對應于p條棱的消息數據,其中,作為p個校驗節(jié)點計算或p個可變節(jié)點計算的結果而獲得所述消息數據。
消息存儲部件可以存儲對應于棱的消息數據,其中,在校驗節(jié)點計算期間,以在行的方向上將校驗矩陣的1充填(pack)得更加緊密這樣的方式來讀取所述消息數據。
消息存儲部件可以存儲對應于棱的消息數據,其中,在可變節(jié)點計算期間,以在列的方向上將校驗矩陣的1充填得更加緊密這樣的方式來讀取所述消息數據。
當以權重為1的單位矩陣、準單位矩陣、或移位矩陣的和的形式來表示代表校驗矩陣的子矩陣中權重為2或更大的子矩陣時,消息存儲部件可以在相同地址處存儲對應于p條棱的消息,其中,所述p條棱屬于權重為1的單位矩陣、準單位矩陣、或移位矩陣。
消息存儲部件可以包括行數/p個FIFO和列數/p個FIFO,并且所述行數/p個FIFO和列數/p個FIFO各自分別具有對應于校驗矩陣的行權重和列權重的多個字。
消息存儲部件可以包括RAM(隨機存取存儲器),并且該RAM可以按照將消息數據充填得更加緊密這樣的方式而按照讀出順序存儲消息數據,并按照存儲位置順序讀出該消息數據。
解碼設備還可以包括接收信息存儲部件,用于存儲所接收的LDPC碼信息,以及同時讀取p個接收信息。
接收信息存儲部件可以按照這樣的方式來存儲所接收信息,該方式為可按照對于可變節(jié)點計算所必需的順序來讀取所接收信息。
解碼設備還可以包括重新排列部件,用于重新排列作為p個校驗節(jié)點計算或p個可變節(jié)點計算的結果而獲得的消息。
重新排列部件可以包括桶式移位器(barrel shifter)。
第一計算部件和第二計算部件可以確定對應于p條棱的消息。
第一計算部件可以進行所述p個校驗節(jié)點計算和p個可變節(jié)點計算的一些,而第二計算部件可以進行所述p個可變節(jié)點計算的其它一些。
第一計算部件可以包括用于進行所述p個校驗節(jié)點計算和p個可變節(jié)點計算的一些的p個計算器,而第二計算部件可以包括用于進行所述p個可變節(jié)點計算的其它一些的p個計算器。
解碼設備還可以包括第一解碼中間(in-progress)結果存儲部件,用于同時讀取和寫入對應于p條棱的第一解碼中間結果,其中,第一計算部件通過進行所述p個校驗節(jié)點計算和p個可變節(jié)點計算的一些來獲得所述第一解碼中間結果。
第一解碼中間結果存儲部件可以按照在行方向上將校驗矩陣的1充填得更加緊密這樣的方式來存儲對應于棱的第一解碼中間結果,其中,當進行所述p個可變節(jié)點計算的其它一些時讀取所述第一解碼中間結果。
第一解碼中間結果存儲部件可以是兩個單端口RAM(隨機存取存儲器)。
所述兩個單端口RAM可以以第一解碼中間結果的p為單位來交替存儲第一解碼中間結果。
所述兩個單端口RAM(隨機存取存儲器)每一個都可以讀取存儲在相同地址處的第一解碼中間結果。
當以權重為1的單位矩陣、準單位矩陣、或移位矩陣的和的形式來表示代表校驗矩陣的子矩陣中的權重為2或更大的子矩陣時,第一解碼中間結果存儲部件可以在相同地址處存儲對應于p條棱的第一解碼中間結果,其中,所述p條棱屬于權重為1的單位矩陣、準單位矩陣、或移位矩陣。
解碼設備還可以包括第二解碼中間結果存儲部件,用于同時讀取和寫入對應于p條棱的第二解碼中間結果,其中,第二計算部件通過進行所述p個可變節(jié)點計算的其它一些來獲得所述第二解碼中間結果。
解碼設備還可以包括接收信息存儲部件,用于存儲所接收的LDPC碼信息,并且同時讀取p個接收信息。
接收信息存儲部件可以按照這樣的方式來存儲所接收信息,該方式為可按照對于所述p個可變節(jié)點計算的其它一些所必需的順序來讀取所接收信息。
解碼設備還可以包括重新排列部件,用于重新排列由第一計算部件通過進行所述p個校驗節(jié)點計算和p個可變節(jié)點計算的一些而獲得的第一解碼中間結果、或者由第二計算部件通過進行所述p個可變節(jié)點計算的其它一些而獲得的第二解碼中間結果。
重新排列部件可以包括桶式移位器。
第一計算部件可以進行所述p個校驗節(jié)點計算的一些,而第二計算部件可以進行所述p個校驗節(jié)點計算的其它一些、和p個可變節(jié)點計算。
第一計算部件可以包括用于進行所述p個校驗節(jié)點計算的一些的p個計算器,而第二計算部件可以包括用于進行所述p個校驗節(jié)點計算的其它一些、和p個可變節(jié)點計算的p個計算器。
解碼設備還可以包括第一解碼中間結果存儲部件,用于同時讀取和寫入對應于p條棱的第一解碼中間結果,其中,第一計算部件通過進行所述p個校驗節(jié)點計算的一些來獲得所述第一解碼中間結果。
解碼設備還可以包括第二解碼中間結果存儲部件,用于同時讀取和寫入對應于p條棱的第二解碼中間結果,其中,第二計算部件通過進行所述p個校驗節(jié)點計算的其它一些和p個可變節(jié)點計算來獲得所述第二解碼中間結果。
第二解碼中間結果存儲部件可以存儲對應于棱的第二解碼中間結果,其中,當進行所述p個校驗節(jié)點計算的其它一些和p個可變節(jié)點計算的時候,按照在列方向上將校驗矩陣的1充填得更加緊密這樣的方式來讀取所述第二解碼中間結果。
第二解碼中間結果存儲部件可以是兩個單端口RAM(隨機存取存儲器)。
所述兩個單端口RAM可以以第二解碼中間結果的p為單位來交替存儲第二解碼中間結果。
所述兩個單端口RAM(隨機存取存儲器)每一個都可以讀取存儲在相同地址處的第二解碼中間結果。
當以權重為1的單位矩陣、準單位矩陣、或移位矩陣的和的形式來表示代表校驗矩陣的子矩陣中權重為2或更大的子矩陣時,第二解碼中間結果存儲部件可以在相同地址處存儲對應于p條棱的第二解碼中間結果,其中,所述p條棱屬于權重為1的單位矩陣、準單位矩陣、或移位矩陣。
解碼設備還可以包括接收信息存儲部件,用于存儲所接收的LDPC碼信息,并同時讀取p個接收信息。
在根據權利要求36的解碼設備中,接收信息存儲部件可以按照這樣的方式來存儲所接收信息,該方式為可按照對于所述p個校驗節(jié)點計算的其它一些、和p個可變節(jié)點計算所必需的順序來讀取所接收信息。
解碼設備還可以包括重新排列部件,用于重新排列由第一計算部件通過進行所述p個校驗節(jié)點計算的一些而獲得的第一解碼中間結果、或由第二計算部件通過進行所述p個校驗節(jié)點計算的其它一些、和p個可變節(jié)點計算而獲得的第二解碼中間結果。
重新排列部件可以包括桶式移位器。
當把以下矩陣用作子矩陣時,利用多個子矩陣的組合來代表LDPC碼的校驗矩陣,其中所述矩陣為(P×P)單位矩陣;準單位矩陣,其中用0代替了作為單位矩陣元素的一個或更多1;移位矩陣,其中單位矩陣或準單位矩陣被循環(huán)移位;和矩陣,其為單位矩陣、準單位矩陣、和移位矩陣的兩個或更多的和;或(P×P)0矩陣;本發(fā)明的解碼方法包括第一計算步驟,同時進行p個用于將LDPC碼解碼的校驗節(jié)點計算;以及第二計算步驟,同時進行p個用于將LDPC碼解碼的可變節(jié)點計算。
本發(fā)明的程序包括第一計算步驟,同時進行p個用于將LDPC碼解碼的校驗節(jié)點計算;以及第二計算步驟,同時進行p個用于將LDPC碼解碼的可變節(jié)點計算。
在本發(fā)明中,當把以下矩陣用作子矩陣時,利用多個子矩陣的組合來代表LDPC碼的校驗矩陣,其中所述矩陣為(P×P)單位矩陣;準單位矩陣,其中用0代替了作為單位矩陣元素的一個或更多1;移位矩陣,其中單位矩陣或準單位矩陣被循環(huán)移位;和矩陣,其為單位矩陣、準單位矩陣、和移位矩陣的兩個或更多的和;或(P×P)0矩陣,同時進行p個用于將LDPC碼解碼的校驗節(jié)點計算,并且同時進行p個用于將LDPC碼解碼的可變節(jié)點計算。
圖1圖示LDPC碼的校驗矩陣H。
圖2是圖示用于將LDPC碼解碼的過程的流程圖。
圖3圖示消息流。
圖4示出LDPC碼的校驗矩陣示例。
圖5示出校驗矩陣的Tanner圖。
圖6示出可變節(jié)點。
圖7示出校驗節(jié)點。
圖8示出LDPC碼的校驗矩陣示例。
圖9是示出用于依次進行節(jié)點計算的LDPC碼解碼設備的結構示例的方框圖。
圖10是示出用于依次計算消息的校驗節(jié)點計算器的結構示例的方框圖。
圖11是示出用于依次計算消息的可變節(jié)點計算器的結構示例的方框圖。
圖12A是示出用于同時進行所有節(jié)點計算的LDPC碼解碼設備的結構示例的方框圖。
圖12B是示出用于同時進行所有節(jié)點計算的LDPC碼解碼設備的結構示例的方框圖。
圖12C是示出用于同時進行所有節(jié)點計算的LDPC碼解碼設備的結構示例的方框圖。
圖13是示出用于同時計算消息的校驗節(jié)點計算器的結構示例的方框圖。
圖14是示出用于同時計算消息的可變節(jié)點計算器的結構示例的方框圖。
圖15示出被分為5×5單元的矩陣。
圖16A是示出應用本發(fā)明的解碼設備實施例的結構示例的方框圖。
圖16B是示出應用本發(fā)明的解碼設備實施例的結構示例的方框圖。
圖16C是示出應用本發(fā)明的解碼設備實施例的結構示例的方框圖。
圖17是圖示圖16A至16C的解碼設備的解碼過程的流程圖。
圖18是示出應用本發(fā)明的解碼設備實施例的結構示例的方框圖。
圖19是示出校驗節(jié)點計算器的結構示例的方框圖。
圖20是示出可變節(jié)點計算器的結構示例的方框圖。
圖21是示出圖18的計算器結構示例的方框圖。
圖22是示出圖18的計算器結構示例的方框圖。
圖23是示出圖18的用于存儲解碼中間結果的存儲器結構示例的方框圖。
圖24是圖示圖18的用于存儲解碼中間結果的RAM操作的時序圖。
圖25是圖示圖18的解碼設備的解碼過程的流程圖。
圖26是示出應用本發(fā)明的解碼設備實施例的結構示例的方框圖。
圖27是示出校驗節(jié)點計算器的結構示例的方框圖。
圖28是示出可變節(jié)點計算器的結構示例的方框圖。
圖29是示出圖26的計算器的結構示例的方框圖。
圖30是示出圖26的計算器的結構示例的方框圖。
圖31是示出圖26的用于存儲解碼中間結果的存儲器結構示例的方框圖。
圖32是圖示圖31的用于存儲解碼中間結果的RAM操作的時序圖。
圖33是圖示圖26的解碼設備的解碼過程的流程圖。
圖34是示出應用本發(fā)明的計算機實施例的結構示例的方框圖。
具體實施例方式 下面,將參考附圖來詳細描述應用本發(fā)明的特定實施例。
圖15示出了被分為5×5矩陣單元的30×9校驗矩陣的示例。圖15的校驗矩陣與圖8中示出的校驗矩陣相同。
在圖15中,用以下矩陣的組合來代表校驗矩陣5×5單位矩陣;用0代替了單位矩陣的元素-一個或更多1的矩陣(在下文中,在適當的地方稱為“準單位矩陣”);單位矩陣或準單位矩陣被循環(huán)移位的矩陣(在下文中,在適當的地方稱為“移位矩陣”);單位矩陣、準單位矩陣和移位矩陣的兩個或更多(多個)的和(在下文中,在適當的地方稱為“和矩陣”);和5×5的0矩陣。由圖15的校驗矩陣代表的LDPC碼具有2/3的編碼率和值為9的碼長度。
可以說,圖15的校驗矩陣由5×5矩陣、準單位矩陣、移位矩陣、和矩陣、和0矩陣形成。因此,在下文中,將在適當的地方把形成校驗矩陣的這些5×5矩陣稱為“子矩陣”。
圖16A至16C示出了用于將由圖15的校驗矩陣代表的LDPC碼解碼的解碼設備實施例的結構示例。圖16A至16C是示出這種解碼設備實施例的結構示例的方框圖。圖16A示出了解碼設備的總體結構。圖16B示出了圖16A的解碼設備的被虛線B環(huán)繞的圖中左部的詳細結構。圖16C示出了圖16A的解碼設備的被虛線C環(huán)繞的圖中右部的詳細結構。
圖16A至16C的解碼設備300包括開關310和315、由6個FIFO 3111至3116組成的棱數據存儲器311、選擇器312、由5個校驗節(jié)點計算器3131至3135組成的校驗節(jié)點計算器313、兩個循環(huán)移位電路314和320、由18個FIFO 3161至31618組成的棱數據存儲器316、選擇器317、用于存儲所接收信息的接收數據存儲器318、可變節(jié)點計算器319、和控制部件321。
在詳細描述解碼設備300的每個部件之前,首先將描述把數據存儲在棱數據存儲器311和316中的方法。
棱數據存儲器311包括6個FIFO 3111至3116,該數目是將校驗矩陣的行數目30除以行數目5所得。FIFO 311y(y=1、2、...、6)以這樣的方式形成可以同時讀取或寫入對應于5條棱的消息,其中,5為子矩陣的行和列的數目。其長度(級的數目)為9,這是校驗矩陣的行方向上的1的最大數目(Hamming權重)。
在FIFO 3111中,以對于每一行,在水平方向上(在列方向上)將1充填得更加緊密這樣的方式(以忽略0的方式)來存儲對應于從圖15的校驗矩陣的第1行至第5行的1的位置的數據。也就是說,如果將第j行第i列表示為(j,i),則在FIFO 3111的第1元素(第一級)中,存儲對應于從校驗矩陣的(1,1)至(5,5)的5×5單位矩陣的1的位置的數據。在第2元素中,存儲對應于從校驗矩陣的(1,21)至(5,25)的移位矩陣(將5×5單位矩陣向右循環(huán)移動3的移位矩陣)的1的位置的數據,該移位矩陣是校驗矩陣的子矩陣。此外,在第3至第8元素中,類似地,按照這樣的方式來存儲數據,以便對應于校驗矩陣的子矩陣。在第9元素中,存儲對應于從校驗矩陣的(1,86)至(5,90)的移位矩陣(用0代替了5×5單位矩陣中第一行的1、并將該單位矩陣向左循環(huán)移動1的移位矩陣)的1的位置的數據。這里,在從校驗矩陣的(1,86)至(5,90)的移位矩陣中,由于第一行中沒有1,因此僅僅對FIFO 3111的第一行,元素數目變?yōu)?,而對于其余的行,元素數目變?yōu)?。
在FIFO 3112中,存儲對應于從圖15的校驗矩陣的第6行至第10行的1的位置的數據。也就是說,在FIFO 3112的第1元素中,存儲對應于形成校驗矩陣的從(6,1)至(10,5)的和矩陣(該和矩陣為第一移位矩陣和第二移位矩陣的和,其中,在第一移位矩陣中,5×5單位矩陣被向右循環(huán)移動1,在第二移位矩陣中,5×5單位矩陣被向右循環(huán)移動2)的第一移位矩陣的1的位置的數據。在第二元素中,存儲對應于形成校驗矩陣的從(6,1)至(10,5)的和矩陣的第二移位矩陣的1的位置的數據。
更具體地說,對于權重為2或更大的子矩陣,當用以下矩陣的兩個或更多的和的形式來代表子矩陣時,將對應于權重為1的單位矩陣、準單位矩陣、或移位矩陣的1的位置的數據(對應于屬于單位矩陣、和矩陣、或移位矩陣的棱的消息)存儲在相同地址(FIFO 3111至3116中的相同F(xiàn)IFO)處,其中,所述矩陣為權重為1的(P×P)單位矩陣;準單位矩陣,其中,用0代替了作為單位矩陣的元素的一個或更多1;以及移位矩陣,其中,單位矩陣或準單位矩陣被循環(huán)移位。
隨后,對于第3至第9元素,以這樣的方式來存儲數據,以便對應于校驗矩陣。對于所有的行,F(xiàn)IFO 3112的元素數目為9。
類似地,對于FIFO 3113至3116,以這樣的方式來存儲數據,以便對應于校驗矩陣,并且,F(xiàn)IFO 3113至3116的每一個的長度為9。
用于存儲棱數據的存儲器316由18個FIFO 3161至31618構成,該數目為校驗矩陣的行數目90除以子矩陣的行數目5所得。以這樣的方式來構成FIFO 316x(x=1、2、...、18),該方式為可以同時讀取或寫入對應于5條棱的消息,該數目為子矩陣的行數目和列數目。
在FIFO 3161中,以對于每一列、在垂直方向上(在行方向)上將1充填得更加緊密這樣的方式(以忽略0的方式)來存儲對應于圖15的校驗矩陣從第1列至第5列的1的位置的數據。也就是說,在FIFO 3161的第一元素(第一級)中,存儲對應于校驗矩陣從(1,1)至(5,5)的5×5單位矩陣的1的位置的數據。在第二元素中,存儲對應于形成校驗矩陣的(6,1)至(10,5)的和矩陣(該和矩陣為第一移位矩陣和第二移位矩陣的和,其中,在第一移位矩陣中,5×5單位矩陣被向右循環(huán)移動1,在第二移位矩陣中,5×5單位矩陣被向右循環(huán)移動2)的第一移位矩陣的1的位置的數據。在第3元素中,存儲對應于形成校驗矩陣的(6,1)至(10,5)的和矩陣的第二移位矩陣的1的位置的數據。
更具體地說,對于權重為2或更大的子矩陣,當用以下矩陣的兩個或更多的和的形式來代表子矩陣時,將對應于權重為1的單位矩陣、準單位矩陣、或移位矩陣的1的位置的數據(對應于屬于單位矩陣、準單位矩陣、或移位矩陣的棱的消息)存儲在相同地址(FIFO 3161至31618中的相同F(xiàn)IFO)處,其中,所述矩陣為權重為1的(P×P)單位矩陣;準單位矩陣,其中,用0代替了單位矩陣的元素1;以及移位矩陣,其中,單位矩陣或準單位矩陣被循環(huán)移位。
隨后,對于第4和第5元素,同樣以這樣的方式來存儲數據,以便對應于校驗矩陣。FIFO 3161的元素數目(級的數目)為5,該數目是校驗矩陣從第1列至第5列的行方向上的1的最大數目(Hamming權重)。
此外,對于FIFO 3162和3163,類似地,以這樣的方式來存儲數據,以便對應于校驗矩陣,并且,其長度(級的數目)的每一個為5。此外,對于FIFO3164至31612,類似地,以這樣的方式來存儲數據,以便對應于校驗矩陣,并且其長度的每一個為3。此外,對于FIFO 31613至31618,類似地,以這樣的方式來存儲數據,以便對應于校驗矩陣,并且其長度的每一個為2。然而,由于FIFO 31618的第1元素對應于校驗矩陣的(1,86)至(5,90),并且在第5列(校驗矩陣的(1,90)至(5,90))中沒有1,因此,不存儲數據。
現(xiàn)在,將在下面詳細給出對圖16A至16C的解碼設備300的每個部件的操作的描述。將5個消息(數據)D319從循環(huán)移位電路320提供給開關310。此外,將控制信號D320從控制部件321提供給開關310,其中,控制信號D320指示關于消息(數據)屬于校驗矩陣的哪一行的信息(矩陣數據)?;诳刂菩盘朌320,從FIFO 3111至3116中選擇用于存儲5個消息(數據)D319的FIFO,并將這5個消息數據D319按順序集體存儲在所選擇的FIFO中。
棱數據存儲器311包括6個FIFO 3111至3116。在棱數據存儲器311的FIFO 3111至3116中,從開關310按順序集體提供5個消息D319,并且FIFO3111至3116按順序(同時)集體存儲這5個消息D319。此外,當要讀取數據時,棱數據存儲器311從FIFO 3111中順次讀取這5個消息(數據)D3111,并將它們提供給后級的選擇器312。在從FIFO 3111讀取消息D3111完成之后,棱數據存儲器311還分別從FIFO 3111至3116順次讀取消息D3111至D3116,并將它們提供給選擇器312。
將選擇信號D321從控制部件321提供給選擇器312,并且,還將5個消息(數據)D3111至D3116從棱數據存儲器311提供給選擇器312,其中,選擇信號D321指示從FIFO 3111至3116中選擇從中讀取消息數據的FIFO(當前從中讀取了數據的FIFO)。選擇器312根據選擇信號D321而從FIFO 3111至3116中選擇當前從中讀取了數據的FIFO,并將從所選擇的FIFO提供的5個消息數據作為消息D312提供給校驗節(jié)點計算部件313。
校驗節(jié)點計算部件313包括5個校驗節(jié)點計算器3131至3135。將5個消息D312通過選擇器312提供給校驗節(jié)點計算部件313,并且將消息D312單獨提供給校驗節(jié)點計算器3131至3135的每一個。此外,將控制信號D322從控制部件321提供給校驗節(jié)點計算器313,并將控制信號D322提供給校驗節(jié)點計算器3131至3135。校驗節(jié)點計算器3131至3135通過使用消息D312來同時進行根據式(7)的計算,并且,作為計算結果而確定對應于5條棱的消息D313。校驗節(jié)點計算部件313通過校驗節(jié)點計算器3131至3135將作為計算結果獲得的5個消息D313提供給循環(huán)移位電路314。
從控制部件321提供給校驗節(jié)點計算器313的控制信號D322對應于圖10的控制信號D106。校驗節(jié)點計算部件3131至3135被各自按照與圖10中示出的校驗節(jié)點計算器101相同的方式配置。
將在校驗節(jié)點計算部件313中計算的5個消息D313提供給循環(huán)移位電路314。此外,將控制信號D323從控制部件321提供給循環(huán)移位電路314,其中,控制信號D323指示關于這樣的事實的信息(矩陣數據),該事實為作為例如將形成校驗矩陣基礎的單位矩陣循環(huán)移位多少次的結果而連接對應于消息D313的棱。循環(huán)移位電路314根據控制信號D323將5個消息D313循環(huán)移位,并將結果作為消息D314提供給開關315。
將控制信號D324提供給開關315,并且還將消息D314從循環(huán)移位電路314提供給開關315,其中,控制信號D324指示關于從循環(huán)移位電路314提供的5個消息(數據)D314屬于校驗矩陣的哪一列的信息?;诳刂菩盘朌324,開關315從FIFO 3161至31618中選擇用于存儲消息D314的FIFO,并按順序集體提供這5個消息D314。
棱數據存儲器316包括18個FIFO 3161至31618。將5個消息D314按順序(同時)從開關315集體提供給棱數據存儲器316的FIFO 3161至31618,并且,F(xiàn)IFO 3161至31618按順序集體存儲這5個消息D314。此外,當要讀取數據時,用于存儲棱數據的存儲器316從FIFO 3161中順次讀取5個消息D3151,并將它們提供給后級的選擇器317。在從FIFO 3161讀取數據完成之后,用于存儲棱數據的存儲器316還從FIFO 3161至31618順次讀取消息D3152至D31318,并將它們提供給選擇器317。
將選擇信號D325從控制部件321提供給選擇器317,并且,還將消息數據D3151至D31318從棱數據存儲器316提供給選擇器317,其中,選擇信號D325指示從FIFO 3161至31618中選擇用于讀取消息數據的FIFO(當前從中讀取了數據的FIFO)?;谶x擇信號D325,選擇器317從FIFO 3161至31618中選擇當前從中讀取了數據的FIFO,并將從所選擇的FIFO提供的5個消息數據作為消息D316提供給可變節(jié)點計算部件319和上述用于進行式(5)的計算的塊(未示出)。
另一方面,用于所接收數據的存儲器318已經從通過通信信道接收的信息計算了接收LLR(對數似然比)。將5個所計算的接收LLR作為所接收數據D317(LDPC碼)集體(同時)提供給可變節(jié)點計算部件319和用于接收式(5)的計算的塊(未示出)。用于所接收數據的存儲器318按照對于可變節(jié)點計算部件319的可變節(jié)點計算所必需的順序來讀取所接收數據D317。
可變節(jié)點計算部件319包括5個可變節(jié)點計算器3191至3195。將5個消息D316通過選擇器317提供給可變節(jié)點計算部件319,并將消息D316單獨提供給可變節(jié)點計算器3191至3195的每一個。此外,將5個所接收數據D317從用于所接收數據的存儲器318提供給可變節(jié)點計算部件319,并且將所接收數據D317單獨提供給可變節(jié)點計算器3191至3195的每一個。此外,將控制信號D326從控制部件321提供給可變節(jié)點計算部件319,并將控制信號D326提供給可變節(jié)點計算器3191至3195。
可變節(jié)點計算器3191至3195通過使用消息D316和所接收數據D317來進行根據式(1)的計算,并且,作為計算結果而確定對應于5條棱的消息D318??勺児?jié)點計算部件319將作為可變節(jié)點計算器3191至3195的結果獲得的5個消息D318提供給循環(huán)移位電路320。
這里,從控制部件521提供給可變節(jié)點計算部件319的控制信號D326對應于圖11的控制信號D107,并且,可變節(jié)點計算器3191至3195被各自按照與圖11的可變節(jié)點計算器103相同的方式配置。
將5個消息D318從可變節(jié)點計算部件319提供給循環(huán)移位電路320。此外,將控制信號D327從控制部件321提供給循環(huán)移位電路320,該控制信號D327指示關于這樣的事實的信息(矩陣數據),該事實為作為例如將形成校驗矩陣基礎的單位矩陣循環(huán)移位多少次的結果而連接對應于消息D318的棱?;诳刂菩盘朌327,循環(huán)移位電路320進行重新排列消息D327的循環(huán)移位,并將結果作為消息D319提供給開關310。
控制部件321將選擇信號D320提供給開關320,并將選擇信號D321提供給選擇器312,以便分別控制它們。控制部件321將控制信號D322提供給校驗節(jié)點計算部件313,將控制信號D323提供給循環(huán)移位電路314,并將控制信號D324提供給開關315,以便分別控制它們。此外,控制部件321將選擇信號D325提供給選擇器317,將控制信號D326提供給可變節(jié)點計算部件319,并將控制信號D327提供給循環(huán)移位電路320,以便分別控制它們。
作為將上述操作循環(huán)一次的結果,可以進行一次LDPC碼的解碼。在圖16A至16C的解碼設備將LDPC碼解碼了預定次數之后,解碼設備300根據式(5)來確定最終解碼結果(未示出),并輸出它。
對于缺少棱數據(對應于棱的消息)的部分,在存儲在存儲器中期間(當把數據存儲在棱數據存儲器311和316中時),不存儲消息。在節(jié)點計算期間(在校驗節(jié)點計算部件313處的校驗節(jié)點計算期間和在可變節(jié)點計算部件319處的可變節(jié)點計算期間),不進行計算。
圖17是圖示圖16A至16C的解碼設備300的解碼過程的流程圖。當把所接收的要解碼的數據存儲在用于所接收數據的存儲器318中時,開始此過程。
在步驟S31中,可變節(jié)點計算部件319進行可變節(jié)點計算。
更具體地說,將5個消息D316(消息uj)通過選擇器317提供給可變節(jié)點計算部件319。也就是說,棱數據存儲器316從FIFO 3161中順次讀取在步驟S39(將在以后描述)存儲的5個消息D3161,并且,隨后,還從FIFO 3162至31618順次讀取消息D3162至D31618,并將它們提供給選擇器317。
將選擇信號D307從控制部件321提供給選擇器317,其中,選擇信號D307指示從FIFO 3161至31618中選擇將從中讀取消息(數據)的FIFO(當前從中讀取了數據的FIFO),此外,將消息數據D3161至D31618從棱數據存儲器316提供給選擇器317?;谶x擇信號D307,選擇器317從FIFO 3161至31618中選擇當前從中讀取了數據的FIFO,并將從所選擇的FIFO提供的5個消息數據作為消息D316提供給可變節(jié)點計算部件319。
當尚未對從存儲器306提供的所接收數據D309進行校驗節(jié)點計算、并且消息D304沒有被存儲在棱數據存儲器316中時,可變節(jié)點計算部件319將消息uj設置為用于可變節(jié)點計算的初始值。
將5個所接收數據D309(所接收值u0i)從用于所接收數據的存儲器318提供給可變節(jié)點計算部件319,并且,將所接收數據D309單獨提供給可變節(jié)點計算器3191至3195的每一個。此外,將控制信號D315從控制部件321提供給可變節(jié)點計算部件319,并且將控制信號D315提供給可變節(jié)點計算器3191至3195。
基于控制信號D315,可變節(jié)點計算器3191至3195通過使用消息D316和所接收數據D309來同時進行根據式(1)的計算,并且作為計算結果而確定5個消息D319。
也就是說,由控制部件321提供給可變節(jié)點計算部件319的控制信號D315對應于參考上述圖11而描述的控制信號D107??勺児?jié)點計算器3191至3195的每一個根據控制信號D309而通過選擇器317從棱數據存儲器316讀取一個必需的消息D314(D316),并且,還分別讀取從用于所接收數據的存儲器318提供的5個所接收數據D309,進行可變節(jié)點計算,并且作為計算結果而同時確定5個消息D319。
在步驟S31的處理之后,該過程進行到步驟S32,在該步驟處,可變節(jié)點計算部件319將作為可變節(jié)點計算器3191至3195的可變節(jié)點計算結果而獲得的5個消息D319(消息vi)提供給循環(huán)移位電路320。然后,該過程進行到步驟S33。
在步驟S33,循環(huán)移位電路320將從可變節(jié)點計算部件319提供的5個消息D318循環(huán)移位(重新排列)。
更具體地說,將消息D318從可變節(jié)點計算部件319提供給循環(huán)移位電路320。此外,將控制信號D327從控制部件321提供給循環(huán)移位電路320,其中,控制信號D327指示關于這樣的事實的信息(矩陣數據),該事實為作為例如將形成校驗矩陣基礎的單位矩陣循環(huán)移位了多少次的結果而連接接對應于消息D318的棱。基于控制信號D327,循環(huán)移位電路320將5個消息D327循環(huán)移位,并將結果作為消息D319提供給開關310。
在步驟S33的處理之后,該過程進行到步驟S34,在該步驟處,開關310將從循環(huán)移位電路320提供的5個消息D319提供給棱數據存儲器311。
更具體地說,將消息(數據)304從循環(huán)移位電路320提供給開關310,此外,將控制信號D312提供給開關310,其中,控制信號D312指示關于消息D304屬于校驗矩陣的哪一行的信息?;诳刂菩盘朌312,開關310從FIFO3001至3006中選擇用于存儲消息D304的FIFO,并順次將5個消息數據D304集體存儲在所選擇的FIFO中。
然后,棱數據存儲器311的FIFO 3001至30018按順序集體存儲從開關310提供的5個消息數據D304。
在步驟S34的處理之后,該過程進行到步驟S35,在該步驟處,控制部件321確定可變節(jié)點計算部件319是否計算了棱的總數目的消息。當確定沒有計算棱的總數目的消息時,該過程返回步驟S31,并且再次進行上述處理。
另一方面,當在步驟S35確定可變節(jié)點計算部件319計算了棱的總數目的消息時,該過程進行到步驟S36,在該步驟處,校驗節(jié)點計算部件313進行校驗節(jié)點計算。
更具體地說,將5個消息D302通過選擇器312提供給校驗節(jié)點計算部件313。也就是說,棱數據存儲器311從FIFO 3111順次讀取在步驟S34存儲的5個消息D3111(消息vi),隨后,還從FIFO 3112至3116順次讀取消息數據D3112至D3116,并將它提供給選擇器312。
將選擇信號D321從控制部件321提供給選擇器312,該控制信號D321指示從FIFO 3111至3116中選擇用于讀取消息數據的FIFO(當前從中讀取了數據的FIFO),此外,將消息數據D3111至D3116從棱數據存儲器311提供給選擇器312?;谶x擇信號D321,選擇器301選擇當前從中讀取了數據的FIFO,并將從所選擇的FIFO提供的5個消息數據作為消息D311提供給校驗節(jié)點計算部件313。
此外,將控制信號D322從控制部件321提供給校驗節(jié)點計算部件313?;诳刂菩盘朌322,校驗節(jié)點計算部件313的校驗節(jié)點計算器3131至3135通過使用消息D302而同時進行根據式(7)的校驗節(jié)點計算,并且,作為計算結果而確定5個消息D303(消息uj)。
更具體地說,由控制部件321提供給校驗節(jié)點計算部件313的控制信號D322對應于上述圖10中的控制信號D106。基于控制信號D322,當校驗節(jié)點計算器3131至3135通過選擇器312從棱數據存儲器311讀取一個必需的消息D311(D312)時,它們每一個都進行校驗節(jié)點計算,并且作為計算的結果而同時確定5個消息D313。
在步驟S37的處理之后,該過程進行到步驟S38,在該步驟處,校驗節(jié)點計算部件313將作為校驗節(jié)點計算結果獲得的5個消息D313輸出到循環(huán)移位電路314。然后,該過程進行到步驟S38。
在步驟S38,循環(huán)移位電路314將從校驗節(jié)點計算部件313提供的5個消息D313循環(huán)移位。
更具體地說,將消息D313從校驗節(jié)點計算部件313提供給循環(huán)移位電路314。此外,將控制信號D314從控制部件321提供給循環(huán)移位電路314,該控制信號D314指示關于這樣的事實的信息(矩陣數據),該事實為作為例如將形成校驗矩陣基礎的單位矩陣循環(huán)移位多少次的結果而連接對應于消息D313的棱?;诳刂菩盘朌314,循環(huán)移位電路314將5個消息D313循環(huán)移位,并將結果作為消息D304提供給開關315。
在步驟S38的處理之后,該過程進行到步驟S39,在該步驟,開關315將從循環(huán)移位電路314提供的5個消息D304存儲在棱數據存儲器316中。
更具體地說,將5個消息(數據)D304從循環(huán)移位電路314提供給開關316,此外,將控制信號D324從循環(huán)移位電路314提供給開關316,該控制信號D324指示關于消息(數據)D304屬于校驗矩陣的哪一行的信息?;诳刂菩盘朌324,開關316從棱數據存儲器316的FIFO 3161至31618中選擇用于存儲消息D304的FIFO,并按順序將5個消息數據D304集體提供給所選擇的FIFO。
然后,棱數據存儲器316的FIFO 3161至31618按順序集體存儲從開關316提供的5個消息數據D304。
在步驟S39的處理之后,該過程進行到步驟S40,在該步驟,控制部件321確定校驗節(jié)點計算部件313是否計算了棱的總數目的消息。當確定還沒有計算棱的總數目的消息時,該過程返回步驟S36,并且再次進行上述處理。
另一方面,當在步驟S40控制部件321確定校驗節(jié)點計算部件313已經計算了棱的總數目的消息時,該過程完成。
當解碼設備300將圖17的解碼過程重復進行所述解碼數目、并且校驗節(jié)點計算部件313進行最終校驗節(jié)點計算時,將作為校驗節(jié)點計算結果獲得的消息D304從棱數據存儲器316通過選擇器317提供給上述用于進行式(5)的計算的塊(未示出)。還將所接收數據D309從用于所接收數據的存儲器306提供給所述塊(未示出)。所述塊(未示出)通過使用消息D304和所接收數據D309來進行式(5)的計算,并將計算結果作為最終解碼結果輸出。
在上面的描述中,盡管使用FIFO來存儲棱數據(盡管利用FIFO來形成棱數據存儲器311和316),但是可以使用RAM來代替FIFO。在該情況中,對于RAM,需要可同時讀取p個棱信息(對應于棱的消息)的位寬度和棱的總數目/p個字。對于寫入到RAM中,在校驗矩陣信息的基礎上確定當下一次讀取將要寫入的數據時在哪個位置讀取該數據,并將數據寫入到那個位置。對于從RAM讀取,從該地址的開始順次讀取數據。也就是說,在RAM中,按照這樣的順序來存儲消息數據,其中,以將消息數據充填得更加緊密這樣的方式來讀取該消息數據,并且,按照存儲位置順序來讀取消息數據。如果使用RAM來代替FIFO,則選擇器312和317不是必備的。
當FIFO和RAM的物理位寬度不夠時,通過使用多個RAM來提供相同的控制信號,可以將這些在邏輯上假設為一個RAM。
在圖16A至16C的解碼設備300中,通過使用作為校驗節(jié)點計算結果而獲得的消息uj來進行可變節(jié)點計算,并且,通過使用作為該計算結果而獲得的消息vi來進行校驗節(jié)點計算。因此,需要用于存儲所有消息uj和所有消息vi的棱數據存儲器311和棱數據存儲器316,其中,消息uj對應于作為校驗節(jié)點計算結果而獲得的棱,而消息vi對應于作為可變節(jié)點計算結果而獲得的棱。也就是說,在解碼設備中,需要存儲多達校驗矩陣H的1的數目的2倍的消息所需的容量的存儲器。
因此,為了進一步減小解碼設備的電路規(guī)模,下面描述當與圖16A至16C的解碼設備300相比較時存儲器容量被進一步減小的解碼設備。
圖18是示出應用本發(fā)明的、用于將由圖15的校驗矩陣代表的LDPC碼解碼的解碼設備的另一實施例的結構示例的方框圖。
在圖18的解碼設備400中,圖16A和16B的棱數據存儲器311被形成為用于存儲解碼中間結果的存儲器40,其具有比棱數據存儲器311的容量小的容量。
解碼設備400包括用于存儲解碼中間結果的存儲器400、循環(huán)移位電路411、由5個計算器4121至4125組成的計算部件412、用于存儲解碼中間結果的存儲器413、循環(huán)移位電路414、由5個計算器4151至4155組成的計算部件415、用于接收的存儲器416、和控制部件417。
下面,將參考圖19至圖22給出對圖18的計算部件412的計算器4121至4125和計算部件415的計算器4151至4155、圖10的校驗節(jié)點計算器101、以及圖11的可變節(jié)點計算器103之間關系的描述。
圖19和圖20分別與示出校驗節(jié)點計算器101的圖10和示出可變節(jié)點計算器103的圖11相同。圖21示出了計算部件412k(k=1、2、...、5)的結構示例。圖22示出了計算部件415k(k=1、2、...、5)的結構示例。
在圖18的解碼設備400中,計算器412k進行校驗節(jié)點計算的一些和可變節(jié)點計算,并且計算部件415k進行可變節(jié)點計算的其它一些,而不是計算器412k進行校驗節(jié)點計算,并且計算部件415k進行可變節(jié)點計算。
更具體地說,圖21的計算器412k由塊A’和塊B’構成。塊A’被按照與圖19的校驗節(jié)點計算器101的用于進行校驗節(jié)點計算的塊A相同的方式配置。塊B’被按照與塊B相同的方式配置,其中,塊B是圖20的可變節(jié)點計算器103的一部分,用于從對應于校驗矩陣每一列的所有棱的消息uj的累計值中減去對應于要確定的棱的消息uj。另一方面,圖22的計算器415k由塊C’構成。塊C’被按照與塊C相同的方式配置,其中,塊C是圖20的可變節(jié)點計算器103的另一部分,用于累計對應于校驗矩陣每一列的棱的消息uj,并將所接收值u0i加到累計值上。
圖21的計算器412k將塊A和塊B的計算結果,即進行校驗節(jié)點計算和可變節(jié)點計算的一些所得的解碼中間結果uj,提供給用于存儲解碼中間結果的存儲器413。圖22的計算器415k將進行可變節(jié)點計算的其它一些所得的解碼中間結果v提供給用于存儲解碼中間結果的存儲器410。
因此,圖18的解碼設備400有可能通過交替進行計算器412k的計算和計算器415k的計算來進行校驗節(jié)點計算和可變節(jié)點計算,以便進行解碼。
在圖22的計算器412k中,由于從存儲在用于存儲解碼中間結果的存儲器413中的解碼中間結果v中減去對應于要確定的棱的解碼中間結果uj,其中,作為塊B中計算器415k通過使用對應于要確定的棱的解碼中間結果uj而進行的計算的結果,來獲得所述解碼中間結果v,因此,不需要圖20的FIFO存儲器155。
接下來,給出對通過使用多個等式而由計算器412k進行的計算和由計算器415k進行的計算的描述。
更具體地說,計算部件412根據上面描述的式(7)和下面描述的式(8)進行第一計算,并將作為第一計算的結果的解碼中間結果uj提供給用于存儲解碼中間結果的存儲器410,由此來存儲它們。計算部件415根據上述式(5)進行第二計算,并將作為第二計算結果的解碼中間結果v提供給用于存儲解碼中間結果的存儲器410,由此來存儲它們。
vi=v-udv ......(8) 式(8)的udv代表來自這樣的棱的校驗節(jié)點計算的中間結果(這里,是指校驗節(jié)點計算結果本身),其中,將對所述棱確定校驗矩陣H的第i列的消息。也就是說,udv是對應于要確定的棱的解碼中間結果。
更具體的說,作為根據上述式(5)的第二計算的結果而獲得的解碼中間結果v是這樣的將所接收的值u0i和校驗節(jié)點計算的解碼中間結果uj乘到一起,其中,所述解碼中間結果uj來自對應于校驗矩陣H第i列的每一行的1的所有棱。用于上述式(7)的值vi變?yōu)檫@樣的從作為根據式(5)的第二計算結果獲得的解碼中間結果v中,減去校驗節(jié)點計算的解碼中間結果uj中的校驗節(jié)點計算的解碼中間結果udv,其中,解碼中間結果uj來自對應于校驗矩陣H的第i列的每一行的1的棱,而解碼中間結果udv來自要確定其消息的棱。也就是說,用來確定用于式(7)的計算的值vi的式(1)的計算是結合了上述式(5)和式(8)的計算。
因此,在解碼設備400中,交替進行由計算部件412進行的根據式(7)和式(8)的第一計算、和由計算部件415進行的根據式(5)的第二計算,并且,計算部件415將最后的第二計算的結果作為解碼結果輸出,使得有可能進行LDPC碼的重復解碼。
這里,將根據式(7)和式(8)的第一計算結果描述為解碼中間結果uj,并且,這些解碼中間結果uj等于式(7)的校驗節(jié)點計算結果uj。
由于從第二計算確定的式(5)的v是這樣得到的把來自將確定其消息的棱的校驗節(jié)點計算結果uj加到式(1)的可變節(jié)點計算結果vi上,因此,對于校驗矩陣H的一列(一個可變節(jié)點),只確定一個v。
在解碼設備400中,計算部件412通過使用對應于校驗矩陣H的列的解碼中間結果v(第二解碼中間結果)來進行第一計算,其中,所述解碼中間結果v是由計算部件415進行的第二計算的結果,并且,把作為計算結果獲得的校驗節(jié)點計算的解碼中間結果uj(第一解碼中間結果)存儲在用于存儲解碼中間結果的存儲器413中,其中,所述解碼中間結果uj來自對應于校驗矩陣H的第i列的每一行的1的棱的消息(由每個校驗節(jié)點輸出到每個棱的消息)的棱。因此,用于存儲解碼中間結果的存儲器413的容量變?yōu)檫@樣的值,其類似于將校驗矩陣的1的數目(棱的總數目)和量化位的數目乘到一起。另一方面,計算部件415通過使用對應于校驗矩陣H的第i列的每一行的1的解碼中間結果uj、和所接收值u0i來進行第二計算,并將作為計算結果獲得的對應于第i列的解碼中間結果v存儲在用于存儲解碼中間結果的存儲器410中,其中,所述解碼中間結果uj是由計算部件412進行的第一計算的結果。因此,用于存儲解碼中間結果的存儲器410所必需的容量變?yōu)檫@樣的值,該值為將校驗矩陣的列的數目和量化位的數目的量化位的數目乘到一起,其中,校驗矩陣列的數目小于校驗矩陣的1的數目,即LDPC碼的碼長度。
因此,在用于將校驗矩陣中的1進行稀疏的LDPC碼解碼的解碼設備400中,當與圖16A和16B的棱數據存儲器311相比較時,用于存儲解碼中間結果的存儲器410的存儲容量可被減小。因此,可以減小解碼設備400的電路規(guī)模。
此外,在解碼設備400中,由于計算部件415進行根據式(5)的第二計算,因此解碼設備400不需要具有圖16A至16C的解碼設備300中用于進行式(5)的計算的塊(未示出),其中,式(5)用于計算最終解碼結果。因而,當與圖16A至16C的解碼設備300相比較時,圖18的解碼設備的電路規(guī)模可被減小。
現(xiàn)在,將詳細地給出對圖18的解碼設備400的每個部件操作的描述。
將對應于校驗矩陣的5列的5個解碼中間結果D415從計算部件415提供給用于存儲解碼中間結果的存儲器410,其中,這5個解碼中間結果是由計算部件415進行的第二計算的結果。用于存儲解碼中間結果的存儲器410從第一地址開始按順序存儲從計算部件415提供的這5個解碼中間結果D415。
更具體地說,在用于存儲解碼中間結果的存儲器410的第一地址處,存儲對應于校驗矩陣的列的解碼中間結果中從第1列至第5列的解碼中間結果v。類似地,在第二地址處,存儲從第6列至第10列的解碼中間結果v,并且在第三地址處,存儲從第11列至第15列的解碼中間結果。隨后,類似地,將從第16列至第90列的解碼中間結果以5個結果的單位存儲在第4地址至第18地址處,并且,將總共90個解碼中間結果v存儲在用于存儲解碼中間結果的存儲器410中。因此,用于存儲解碼中間結果的存儲器410的字的數目變?yōu)?8,即,圖15的校驗矩陣H的列的數目(LDPC碼的碼長度)90除以被同時讀取和寫入的解碼中間結果的數目5。
用于存儲解碼中間結果的存儲器410從已被存儲的解碼中間結果D415中同時讀取將由后級的計算部件412確定的解碼中間結果uj的5個解碼中間結果v,并將它們作為解碼中間結果D410提供給循環(huán)移位電路411,其中,所述5個解碼中間結果v是校驗矩陣H的對應行中的“1”。
用于存儲解碼中間結果的存儲器410由例如能夠同時讀取和寫入5個解碼中間結果的單端口RAM構成。由于在用于存儲解碼中間結果的存儲器410中存儲對應于這樣的列的解碼中間結果v,其中,通過計算部件415的第二計算來進行該列的計算,因此,存儲在用于存儲解碼中間結果的存儲器410中的數據量,即,用于存儲解碼中間結果的存儲器410所必需的存儲容量,是解碼中間結果的量化位數目和校驗矩陣H的列數目(LDPC碼的碼長度)的相乘值。
將5個解碼中間結果D410從用于存儲解碼中間結果的存儲器410提供給循環(huán)移位電路411。此外,將對應于解碼中間結果D410的控制信號D619從控制部件417提供給循環(huán)移位電路411,其中,控制信號D619指示關于這樣的事實的信息(矩陣數據),該事實為作為例如將形成校驗矩陣基礎的單位矩陣循環(huán)移位多少次的結果來排列校驗矩陣的1。循環(huán)移位電路611在控制信號D619的基礎上進行將所述5個解碼結果D410重新排列的循環(huán)移位,并將結果作為解碼中間結果D411提供給計算部件412。
計算部件412包括5個計算器4121至4125。將作為計算部件415的第二計算結果獲得的5個解碼中間結果D411(第二解碼中間結果)v從循環(huán)移位電路411提供給計算部件412。此外,將先前作為計算器4121至4125進行的第一計算的結果而獲得的5個解碼中間結果D413(第一解碼中間結果)uj從用于存儲解碼中間結果的存儲器413提供給計算部件412。將所述5個解碼中間結果D411和5個解碼中間結果D413提供給計算器4121至4125的每一個。此外,將控制信號D419從控制部件417提供給計算部件412,并將控制信號D419提供給計算器4121至4125。控制信號D419是5個計算器4121至4125共有的信號。
計算器4121至4125通過使用解碼中間結果D411和解碼中間結果D413來進行根據式(7)和式(8)的第一計算,并確定解碼中間結果D412(vi)。計算部件412將對應于校驗矩陣的5個1的5個解碼中間結果D412提供給用于存儲解碼中間結果的存儲器413,其中,作為計算器4121至4125進行的計算結果而獲得所述5個解碼中間結果D412。
用于存儲解碼中間結果的存儲器413由例如能夠同時讀取和寫入5個解碼中間結果的兩個單端口RAM構成。將5個解碼中間結果D412從計算部件412提供給用于存儲解碼中間結果的存儲器413,此外,將用于控制解碼中間結果413的讀取和寫入的控制信號D420從控制部件417提供給存儲器413。
基于控制信號D420,用于存儲解碼中間結果的存儲器413集體地存儲從計算部件412提供的5個解碼中間結果D412,并同時讀取已被存儲的5個解碼中間結果D412,并且,將它們作為解碼中間結果D413提供給計算部件412和循環(huán)移位電路414。也就是說,用于存儲解碼中間結果的存儲器413同時進行將被提供給計算部件412和循環(huán)移位電路414的解碼中間結果D413的讀取、和從計算部件412提供的解碼中間結果D412的寫入。
在用于存儲解碼中間結果的存儲器413中,存儲通過計算部件412的第一計算來計算的校驗節(jié)點計算的解碼中間結果uj,其中,該解碼中間結果uj來自對應于校驗矩陣H的第i列的每一行的1的棱。因此,存儲在用于存儲解碼中間結果的存儲器413的數據量,即,用于存儲解碼中間結果的存儲器413所必需的存儲容量,變?yōu)榻獯a中間結果的量化位數目和校驗矩陣的1的數目的相乘值。
將5個解碼中間結果D413(解碼中間結果uj)從用于存儲解碼中間結果的存儲器413提供給循環(huán)移位電路414。此外,將對應于解碼中間結果D413的控制信號D421從控制部件417提供給循環(huán)移位電路414,其中,控制信號D421指示關于這樣的事實的信息(矩陣數據),該事實為作為例如將形成校驗矩陣基礎的單位矩陣循環(huán)移位多少次的結果來排列校驗矩陣的1。循環(huán)移位電路414在控制信號D421的基礎上進行重新排列這5個解碼中間結果D413的循環(huán)移位,并將結果作為解碼中間結果D414提供給計算部件415。
計算部件415包括5個計算器4151至4155。將5個解碼中間結果D414從循環(huán)移位電路414提供給計算部件415,并將解碼中間結果D414提供給各個計算器4151至4155。此外,將5個所接收數據D417(LDPC碼)從用于接收的存儲器417提供給計算部件415,并將所接收數據D417提供給各個計算器4151至4155。此外,將控制信號D422從控制部件417提供給計算部件417,并將控制信號D422提供給計算器4151至4155??刂菩盘朌422是5個計算器4171至4175共有的信號。
計算器4151至4155每一個都通過使用解碼中間結果D414和所接收數據D417來進行根據式(5)的第二計算,并確定解碼中間結果D415。計算部件415將作為計算器4151至4155進行的第二計算的結果而獲得的5個解碼中間結果D415(v)提供給用于存儲解碼中間結果的存儲器410。此外,在當前正在進行的計算是最后的第二計算的時候,計算部件415將作為計算結果獲得的5個解碼中間結果D415作為最終解碼結果輸出。
用于接收的存儲器416將從通過通信信道接收的接收值(符號位)計算的接收LLR(對數似然比)作為所接收數據D417來存儲,該接收LLR是符號位的0相似性值。
也就是說,在用于接收的存儲器416的第1地址處,存儲對應于校驗矩陣的列的所接收數據D417中對應于校驗矩陣第1列至第5列的所接收數據D417。然后,在第2地址處,存儲對應于校驗矩陣第6列至第10列的所接收數據D417,并且在第3地址處,存儲對應于校驗矩陣第11列至第16列的所接收數據D417。隨后,類似地,在第4地址至第18地址處,以5個數據的單位存儲對應于第17列至第90列的所接收數據D417。
然后,用于接收的存儲器616以5個數據的單位、按照可變節(jié)點計算所必需的順序讀取已被存儲的所接收數據D417,并將它們提供給計算部件415。
用于接收的存儲器416由例如能夠同時讀取和寫入5個所接收數據的單端口RAM構成。存儲在用于接收的存儲器416中的數據量,即,用于接收的存儲器315所必需的存儲容量,是LDPC碼的碼長度和所接收數據的量化位的數目的相乘值。用于接收的存儲器416的字的數目為18,其為把LDPC碼的碼長度,即校驗矩陣的列的數目90,除以將被同時讀取的所接收數據D417的數目5所得的值。
控制部件417將控制信號D418提供給循環(huán)移位存儲器411,并將控制信號D419提供給計算部件412,以便分別控制它們??刂撇考?17將控制信號D420提供給用于存儲解碼中間結果的存儲器413,將控制信號D421提供給循環(huán)移位電路414,并將控制信號D421提供給計算部件415,以便分別控制它們。
作為按照用于存儲解碼中間結果的存儲器410、循環(huán)移位電路411、計算部件412、用于存儲解碼中間結果的存儲器413、循環(huán)移位電路414、和計算部件415的順序循環(huán)的數據的結果,解碼設備400可進行一次解碼。在解碼設備400中,在將解碼重復進行預定次數之后,將作為計算部件415的第二計算的結果的解碼中間結果D415作為最終解碼結果輸出。
圖21是示出圖18的計算部件412的計算器4121的結構示例的方框圖。
在圖21中,給出對計算器4121的描述,并且,計算器4122至計算器4125也被以相同的方式配置。
在圖21中,通過假設先前作為計算部件412進行的第一計算結果而獲得的解碼中間結果(udv)的每一個和符號位一起被量化為總共6位、并且作為計算器415進行的第二計算的結果而獲得的解碼中間結果(v)的每一個被量化為9位,來示出計算器4121。此外,將時鐘ck提供給圖21的計算器4121,并將此時鐘ck提供給必要的塊。然后,每個塊與時鐘ck同步地進行處理。
基于從控制部件417提供的控制信號D419,圖21的計算器4121通過使用從用于存儲解碼中間結果的存儲器413依次讀取的解碼中間結果D413(udv)、和從循環(huán)移位電路411依次讀取的解碼中間結果D411(v),來進行根據式(7)和式(8)的第一計算,其中,先前作為計算部件412的第一計算的結果而獲得所述解碼中間結果D413(udv)。
更具體地說,將從循環(huán)移位電路411提供的5個9位解碼中間結果D411(v)中的1個解碼中間結果D411提供給計算器4121。此外,將從用于存儲解碼中間結果的存儲器413提供的5個6位解碼中間結果D413(uj)中的1個解碼中間結果D413從提供給計算器4121,其中,所述5個6位解碼中間結果D413(uj)是先前由計算部件412進行的計算結果,所述1個解碼中間結果D413是先前由計算部件412進行的計算的結果。將9位解碼中間結果D411(v)和6位解碼中間結果D413(udv)提供給減法器D431。此外,將控制信號D419從控制部件417提供給計算器4121,并且將控制信號D419提供給選擇器435和選擇器442。
減法器431從9位解碼中間結果D411(v)中減去6位解碼中間結果D413(uj),并輸出6位相減值D431。也就是說,減法器431進行根據式(8)的計算,并且輸出作為計算結果的相減值D431(vi)。
將從減法器431輸出的6位相減值D431中的符號位D432(sign(vi))提供給EXOR電路440,其中,該符號位D432指示最高階位的正或負符號,并且,將5個較低階位的絕對值D433(|vi|)提供給LUT 432。
LUT 432讀取對絕對值D433(|vi|)進行式(7)中的
的計算所得的5位計算結果D434
并將它提供給加法器433和FIFO存儲器438。
加法器433通過將計算結果D434
和存儲在寄存器434中的9位值D435加到一起來累計計算結果D434,并將作為結果獲得的9位累計值再次存儲在寄存器434中。當累計了從對應于校驗矩陣一行上所有1的解碼中間結果D411確定的絕對值D433(|vi|)的計算結果時,寄存器433被復位。
當依次讀取校驗矩陣一行上的解碼中間結果D411、并且累計對于一行的計算結果D434所得的累計值被存儲在寄存器434中時,從控制部件417提供的控制信號D419從0改變?yōu)?。例如,當行權重為“9”時,控制信號D419在第1至第8時鐘為“0”,而在第9時鐘為“1”。
當控制信號D419為“1”時,選擇器435選擇存儲在寄存器434中的值,即,累計從解碼中間結果D411(解碼中間結果v)確定的
所得的9位值D435
從i=1至i=dc),并將該值作為值D436輸出到寄存器436,由此來存儲它,其中,所述解碼中間結果D411對應于校驗矩陣一行上的所有1。寄存器436將所存儲的值D436作為9位值D437提供給選擇器435和加法器437。當控制信號D419為“0”時,選擇器435選擇從寄存器436提供的值D437,并將該值輸出到寄存器436,由此來再次存儲它。也就是說,寄存器436將先前累計的
提供給選擇器435和加法器437,直到累計了從對應于校驗矩陣一行上所有1的解碼中間結果D411(解碼中間結果v)確定的
為止。
另一方面,F(xiàn)IFO存儲器438將LUT 432輸出的計算結果D434
延遲,直到從寄存器436輸出了新值D437
從i=1至i=dc)為止,并將它作為5位值D438提供給減法器437。減法器437從寄存器436提供的值D437中減去從FIFO存儲器438提供的值D438,并將減法結果作為5位相減值D439提供給LUT 439。也就是說,減法器437從根據對應于校驗矩陣一行上所有1的解碼中間結果D411(解碼中間結果v)確定的累計值
中,減去對應于要確定的棱的解碼中間結果,即,根據對應于預定的校驗矩陣的1的解碼中間結果D411(解碼中間結果v)確定的
并將相減值
從i=1至i=dc-1)作為相減值D439提供給LUT 439。
LUT 439輸出對相減值D439
從i=1至i=dc-1)進行式(7)中的
計算所得的5位計算結果D440
在進行上面處理的同時,EXOR電路440通過計算存儲在寄存器441中的1位值D442和符號位D432的異或,來進行符號位相乘,并將1位乘法結果D441再次存儲在寄存器441中。當從對應于校驗矩陣一行上所有1的解碼中間結果D411確定的符號位D432均被乘入時,寄存器441被復位。
當把從對應于校驗矩陣一行上所有1的解碼中間結果D411確定的符號位D432相乘所得的乘法結果D441(Пsign(vi),從i=1至i=dc)被存儲在寄存器441中時,從控制部件417提供的控制信號D419從“0”改變?yōu)椤?”。
當控制信號D419為“1”時,選擇器442選擇存儲在寄存器441中的值,即,把從對應于校驗矩陣一行上所有1的解碼中間結果D411確定的符號位D432相乘所得的值D442(Пsign(vi),從i=1至i=dc),并將該值作為1位值D443輸出到寄存器443。寄存器443將所存儲的值D443作為1位值D444提供給選擇器442和EXOR電路445。當控制信號D419為“0”時,選擇器442選擇從寄存器443提供的值D444,并將該值輸出到寄存器443,由此來再次存儲它。也就是說,寄存器443將先前存儲的值提供給選擇器442和EXOR電路445,直到從對應于校驗矩陣一行上所有1的解碼中間結果D411(解碼中間結果v)確定的符號位D432均被乘入為止。
另一方面,F(xiàn)IFO存儲器444將符號位D432延遲,直到新值D444(Пsign(vi),從i=1至i=dc)被從寄存器443提供給EXOR電路445為止,并將它作為1位值D445提供給EXOR電路445。EXOR電路445通過計算從寄存器443提供的值D444和從FIFO存儲器444提供的值D445的異或,而將值D444除以值D445,并將1位相除值作為相除值D446輸出。也就是說,EXOR電路445將從對應于校驗矩陣一行上所有1的解碼中間結果D411確定的符號位D432(sign(vi))的相乘值除以從對應于預定的校驗矩陣的1的解碼中間結果D411確定的符號位D432(sign(vi)),并將相除值(Пsign(vi),從i=1至i=dc-1)作為相除值D446輸出。
在計算器4121中,將總共6位作為解碼中間結果D412(解碼中間結果uj)輸出,其中,從LUT 439輸出的5位計算結果D440是5個較低階位,而從EXOR電路445輸出的1位相除值D446是最高階位。
如上所述,在計算器4121中,進行式(7)和式(8)的計算,并確定解碼中間結果uj。
由于圖15的校驗矩陣的行權重最大值為9,也就是說,由于提供給計算器4121的解碼中間結果D411(v)和解碼中間結果D413(udv)的最大數目為9,因此,計算器4121具有FIFO存儲器438,用于延遲從9個解碼中間結果D411確定的9個計算結果D434
和FIFO存儲器444,用于延遲9個符號位D432。當要計算權重小于9的行的消息時,F(xiàn)IFO存儲器438和FIFO存儲器444中的延遲量減小為該行的權重值。
圖22是示出計算部件415的計算器4151的結構示例的方框圖。
在圖22中,給出對計算器4151的描述,并且,計算器4152至計算器4155也被以相同的方式配置。
在圖22中,通過假設作為計算器412進行的第一計算結果獲得的每個解碼中間結果(uj)和符號位一起被量化為總共6位來示出計算器4151。此外,將時鐘ck提供給圖22的計算器4151,并且,將此時鐘ck提供給必要的塊。每個塊與時鐘ck同步地進行處理。
基于從控制部件417提供的控制信號D422,圖22的計算器4151通過使用從用于接收的存儲器416依次讀取的所接收數據D417(所接收值u0i)、和從循環(huán)移位電路414依次讀取的解碼中間結果D414(uj),來進行根據式(5)的第二計算。
更具體地說,在計算器4151中,從循環(huán)移位電路414依次讀取對應于校驗矩陣每一行的1的6位解碼中間結果D414(解碼中間結果uj),并將解碼中間結果D414提供給加法器417。此外,在計算器4151中,從用于接收的存儲器416依次讀取6位所接收數據D417,并將其提供給加法器475。此外,將控制信號D422從控制部件417提供給計算器4151,并將控制信號D422提供給選擇器473。
加法器471通過將解碼中間結果D414(解碼中間結果uj)和存儲在寄存器472中的9位累計值D471加到一起,來累計解碼中間結果D414,并將9位累計值再次存儲在寄存器472中。當累計了對應于校驗矩陣一行上所有1的解碼中間結果D414時,寄存器472被復位。
當依次讀取校驗矩陣一行的解碼中間結果D414、并且累計一行的解碼中間結果D414所得的值被存儲在寄存器472中時,從控制部件417提供的控制信號D422從“0”改變?yōu)椤?”。例如,當列的權重為“5”時,控制信號D422在第1時鐘到第4時鐘為“0”,而在第5時鐘為“1”。
當控制信號D422為“1”時,選擇器473選擇存儲在寄存器472中的值,即,累計來自校驗矩陣一行上所有棱的解碼中間結果D414(解碼中間結果uj)所得的9位值471(∑uj,從j=1至i=dv),并將該值輸出到寄存器474,由此來存儲它。寄存器474將所存儲的值D471作為9位值D472提供給選擇器471和加法器475。當控制信號D422為“0”時,選擇器473選擇從寄存器474提供的值D472,并將該值輸出到寄存器474,由此來再次存儲它。也就是說,寄存器474將先前累計的值提供給選擇器473和加法器475,直到累計了來自校驗矩陣一行上所有棱的解碼中間結果D414(解碼中間結果uj)為止。
加法器475將9位值D472和從用于接收的存儲器416提供的6位所接收數據D417加到一起,并將由此獲得的6位值作為解碼中間結果D415(解碼中間結果v)輸出。
如上所述,在計算器4151中,進行式(5)的計算,并確定解碼中間結果v。
由于圖8的校驗矩陣的列權重的最大值為5,也就是說,由于提供給計算器4151的解碼中間結果uj的最大數目為5,因此計算器4151將5個6位解碼中間結果uj的最大值加到一起。所以,計算器4151的輸出是9位值。
圖23是示出圖18的用于存儲解碼中間結果的存儲器413的結構示例的方框圖。
用于存儲解碼中間結果的存儲器413包括開關501和504、以及兩個用于存儲解碼中間結果的RAM 502和503,其中,所述RAM為單端口RAM。
在詳細描述用于存儲解碼中間結果的存儲器413的每個部件之前,首先將描述把數據存儲在用于存儲解碼中間結果的RAM 502和503中的方法。
用于存儲解碼中間結果的RAM 502和503存儲通過開關501提供的解碼中間結果D412,其中,作為第一計算的結果而獲得所述解碼中間結果D412。
更具體地說,在用于存儲解碼中間結果的RAM 502的第1地址至第9地址處,按照對于每一行、在水平方向上(在列方向上)將圖15的校驗矩陣H從第1行至第5行的1充填得更加緊密這樣的方式(按照忽略0的方式),存儲對應于它們的解碼中間結果D412(D501)。
更具體地說,當把第j行第i列表示為(j,i)時,在用于存儲解碼中間結果的RAM 502的第1地址處,存儲對應于從(1,1)至(5,5)的5×5單位矩陣的1的數據,其中,所述5×5單位矩陣是圖15的校驗矩陣的子矩陣。在第2地址處,存儲對應于從(1,21)至(5,25)的移位矩陣(5×5單位矩陣被向右循環(huán)移動3的移位矩陣)的1的數據,其中,所述移位矩陣是圖15的校驗矩陣的子矩陣。類似地,在第3至第8地址處,同樣以這樣的方式來存儲數據,以便對應于圖15的校驗矩陣的子矩陣。然后,在第9地址處,存儲對應于從校驗矩陣的(1,86)至(5,90)的移位矩陣(用0代替了5×5單位矩陣的第一行的1、并將該單位矩陣向左循環(huán)移動1的移位矩陣)的1的數據。這里,在圖15的校驗矩陣從(1,86)至(5,90)的移位矩陣中,由于在第1行中不存在1,因此在第9地址處不存儲數據。
在用于存儲解碼中間結果的RAM 502的第10地址至第18地址處,存儲對應于圖15的校驗矩陣從第11行至第15行的1的數據。也就是說,在第10地址處,存儲對應于這樣的矩陣的1的數據,在該矩陣中,將校驗矩陣從(11,6)至(15,10)的5×5單位矩陣向右循環(huán)移動3。在第11地址處,存儲對應于組成校驗矩陣從(11,11)至(15,15)的和矩陣(該和矩陣為5×5單位矩陣與5×5單位矩陣被向右循環(huán)移動3的移位矩陣的和)的移位矩陣的1的數據。在第12地址處,存儲組成校驗矩陣從(11,6)至(15,10)的和矩陣的單位矩陣的1的數據。隨后,同樣,在第13地址至第18地址處,以這樣的方式來存儲數據,以便對應于校驗矩陣。
更具體地說,對于權重為2或更大的子矩陣,當用以下矩陣的兩個或更多的和的形式來代表子矩陣時,在相同地址處存儲對應于權重為1的單位矩陣、準單位矩陣、或移位矩陣的1的位置的數據(對應于屬于單位矩陣、準單位矩陣、或移位矩陣的棱的消息的解碼中間結果),其中,所述矩陣為權重為1的(P×P)單位矩陣;準單位矩陣,其中用0代替了作為單位矩陣的元素的一個或更多1;以及移位矩陣,其中單位矩陣或準單位矩陣被循環(huán)移位。
類似地,在用于存儲解碼中間結果的RAM 502的第19地址至第27地址處,以這樣的方式來存儲對應于從第21行至第25行的1的數據,以便對應于圖15的校驗矩陣。也就是說,用于存儲解碼中間結果的RAM502的字的數目為27。
在用于存儲解碼中間結果的RAM 503的第1地址至第9地址處,按照對于每一行、在水平方向上(在列方向上)將圖15的校驗矩陣H從第6行至第10行的1充填得更加緊密這樣的方式(其中忽略0的方式),存儲對應于它們的解碼中間結果D412(D502)。
更具體的說,在用于存儲解碼中間結果的RAM 503的第1地址處,存儲對應于組成從(6,1)至(10,5)的和矩陣(該和矩陣為第一移位矩陣和第二移位矩陣的和,在第一移位矩陣中,5×5單位矩陣被向右循環(huán)移動1,而在第二移位矩陣中,所述單位矩陣被向右循環(huán)移動2)的第一移位矩陣的1的數據,其中,所述第一移位矩陣是校驗矩陣的子矩陣。在第2地址處,存儲對應于組成從(6,1)至(10,5)的和矩陣的第二移位矩陣的1的數據,其中,所述第二移位矩陣是校驗矩陣的子矩陣。隨后,同樣,在第3地址至第9地址處,以這樣的方式來存儲數據,以便對應于校驗矩陣的子矩陣。
類似地,在用于存儲解碼中間結果的RAM 503的第10至第18地址處,以這樣的方式來存儲對應于圖15的校驗矩陣從第16行至第20行的1的數據,以便對應于圖15的校驗矩陣。在第19地址至第27地址處,以這樣的方式來存儲對應于圖15的校驗矩陣從第26行至第30行的1的數據,以便對應于圖15的校驗矩陣。也就是說,用于存儲解碼中間結果的RAM 503的字的數目為27。
按照上述方式,用于存儲解碼中間結果的RAM 502和503的字的數目為27。也就是說,字的數目變?yōu)檫@樣的值將校驗矩陣的行權重9乘以行的數目30,將相乘結果(校驗矩陣的1的數目)除以被同時讀取的解碼中間結果D501的數目5,并進一步將結果除以用于存儲解碼中間結果的RAM 502的數目2,其中,用于存儲解碼中間結果的存儲器413擁有所述解碼中間結果。
現(xiàn)在,將詳細給出對圖23的用于存儲解碼中間結果的存儲器413的每個部件的操作的描述。
當計算部件412進行第一計算時,將作為第一計算結果獲得的解碼中間結果D412(uj)從計算部件412提供給用于存儲解碼中間結果的存儲器413,并且,將解碼中間結果D412寫入用于存儲解碼中間結果的RAM 502、和用于存儲解碼中間結果的RAM 503之一的預定地址處。同時,從其它RAM讀取作為先前由計算部件412進行的第一計算的結果而獲得的解碼中間結果D412(uj),并將其輸出到計算部件412。另一方面,當計算部件415進行第二計算時,用于存儲解碼中間結果的存儲器413不進行向用于存儲解碼中間結果的RAM 502、或用于存儲解碼中間結果的RAM 503的寫入,其從所述RAM之一的預定地址處讀取解碼中間結果,并將它們提供給循環(huán)移位電路414。
將5個解碼中間結果D412從計算部件412提供給開關501,此外,將控制信號D4201從控制部件417提供給開關501,其中,控制信號D4201指示選擇用于存儲解碼中間結果的RAM 502和用于存儲解碼中間結果的RAM 503之一,作為用于存儲解碼中間結果D412的存儲器。基于控制信號D4201,開關501選擇用于存儲解碼中間結果的RAM 502和用于存儲解碼中間結果的RAM 503之一,并將5個解碼中間結果D412提供給所選擇的RAM。
將5個解碼中間結果D412作為解碼中間結果D501從開關501提供給用于存儲解碼中間結果的RAM 502,此外,將指示地址的控制信號D4202從控制部件417提供給RAM 502。用于存儲解碼中間結果的RAM 502讀取已被存儲在由控制信號D4022指示的地址處的5個解碼中間結果D501,并將它們作為解碼中間結果D503提供給開關504,其中,作為先前由計算部件412進行的第一計算的結果而獲得所述5個解碼中間結果D501。此外,用于存儲解碼中間結果的RAM 502將從開關501提供的5個解碼中間結果D501存儲(寫入)到由控制信號D402指示的地址處。
將5個解碼中間結果D412作為解碼中間結果D502從開關501提供給用于存儲解碼中間結果的RAM 503,此外,將指示地址的控制信號D4203從控制部件417提供給RAM 503。用于存儲解碼中間結果的RAM 503讀取已被存儲在由控制信號D4203指示的地址處的5個解碼中間結果D502,并將它們作為解碼中間結果D504提供給開關504,其中,作為先前由計算部件412進行的第一計算的結果而獲得所述5個解碼中間結果D502。此外,用于存儲解碼中間結果的RAM 502將從開關501提供的5個解碼中間結果D502存儲(寫入)到由控制信號D4203指示的地址處。
將解碼中間結果D503從用于存儲解碼中間結果的RAM 502提供給開關504,或者將解碼中間結果D504從用于存儲解碼中間結果的RAM 503提供給開關504。此外,將控制信號D4204從控制部件417提供給開關504,其中,控制信號D4204指示選擇用于存儲解碼中間結果的RAM 502和用于存儲解碼中間結果的RAM 503之一?;诳刂菩盘朌4201,開關504選擇用于存儲解碼中間結果的RAM 502和用于存儲解碼中間結果的RAM 503之一,并將從所選擇的RAM提供的5個解碼中間結果作為5個解碼中間結果D413提供給計算部件412和循環(huán)移位電路414。
圖24是圖示用于存儲解碼中間結果的存儲器413的用于存儲解碼中間結果的RAM 502、和用于存儲解碼中間結果的RAM 503的讀取和寫入操作的時序圖。
在圖24中,水平軸表示時間(t)。
在用于存儲解碼中間結果的存儲器413中,當計算部件412要進行第一計算時,基于控制信號D4202,用于存儲解碼中間結果的RAM 502以5個結果的單位,從已存儲的解碼中間結果D501中將存儲在相同地址處的、對應于校驗矩陣從第1行至第5行的1的解碼中間結果D501讀取9次,并通過開關504將它們提供給計算部件412,其中,作為先前由計算部件412進行的第一計算的結果而獲得所述解碼中間結果D501。也就是說,由于圖15的校驗矩陣的行權重為9,因此存在9個對應于校驗矩陣H的每一行的1的解碼中間結果,并且,用于存儲解碼中間結果的RAM 502以5個結果的單位、將對應于從第1行至第5行的1的5個解碼中間結果D501讀取9次。
接下來,基于控制信號D4203,用于存儲解碼中間結果的RAM 503以5個結果的單位、從已存儲的解碼中間結果D502中將存儲在相同地址處的、對應于從第6行至第10行的1的解碼中間結果D502連續(xù)讀取9次,并通過開關504將它們提供給計算部件412,其中,作為先前由計算部件412進行的第一計算的結果而獲得所述解碼中間結果D502。同時,將對應于校驗矩陣的第1行至第5行的5個解碼中間結果D412作為解碼中間結果D501而通過開關501提供給用于存儲解碼中間結果的RAM 502,其中,作為當前正由計算部件412進行的第一計算的結果而獲得所述5個解碼中間結果D412。基于控制信號D4202,用于存儲解碼中間結果的RAM 502在存儲已讀取的解碼中間結果D503的地址處將解碼中間結果D501存儲9次。
隨后,基于控制信號D4202,用于存儲解碼中間結果的RAM 502以5個結果的單位,從已存儲的解碼中間結果D501中將存儲在相同地址處的、對應于校驗矩陣的從第11行至第15行的1的解碼中間結果D501讀取9次,并通過開關504將它們提供給計算部件412,其中,作為先前由計算部件412進行的第一計算的結果而獲得所述解碼中間結果D501。同時,將對應于校驗矩陣的從第6行至第10行的1的5個解碼中間結果D412作為解碼中間結果D502而通過開關501提供給用于存儲解碼中間結果的RAM 503,其中,作為當前正由計算部件412進行的第一計算的結果而獲得所述5個解碼中間結果D412。基于控制信號D4203,用于存儲解碼中間結果的RAM 503在存儲已讀取的解碼中間結果D504的地址處將解碼中間結果D502連續(xù)存儲9次。
隨后,類似地,用于存儲解碼中間結果的RAM 502和用于存儲解碼中間結果的RAM 503以9次為單位交替進行讀取或寫入,直到將對應于校驗矩陣的所有1的解碼中間結果存儲在用于存儲解碼中間結果的RAM 502或用于存儲解碼中間結果的RAM 503中為止,其中,作為計算部件412進行的第一計算的結果而獲得所述解碼中間結果。
在用于存儲解碼中間結果的存儲器413中,當計算部件415進行第二計算時,基于控制信號D4202,從用于存儲解碼中間結果的RAM 502中讀取已存儲的、作為第一計算結果獲得的解碼中間結果D503,或者基于控制信號D4203,從用于存儲解碼中間結果的RAM 503讀取已存儲的、作為第一計算結果獲得的解碼中間結果D504,并將讀出的解碼中間結果通過開關504提供給循環(huán)移位電路414。
圖25是圖示圖18的解碼設備400的解碼過程的流程圖。例如,在所接收的將要解碼的數據被存儲在用于接收的存儲器416中時,開始此過程。
在步驟S50中,循環(huán)移位電路414把從用于存儲解碼中間結果的存儲器413提供的、將在步驟S56(將在以后描述)存儲的5個解碼中間結果D413循環(huán)移位,并將它們提供給計算部件415。
更具體地說,將5個解碼中間結果D413從用于存儲解碼中間結果的存儲器413提供給循環(huán)移位電路414,此外,將對應于解碼中間結果D413的控制信號D421從控制部件417提供給循環(huán)移位電路414,其中,控制信號D421指示關于這樣的事實的信息(矩陣數據),該事實為作為例如將形成校驗矩陣基礎的單位矩陣循環(huán)移位多少次的結果來排列校驗矩陣的1。基于控制信號D421,循環(huán)移位電路414將這5個解碼中間結果D413循環(huán)移位(重新排列),并將結果作為解碼中間結果D414提供給計算部件415。
當尚未對提供給用于接收的存儲器416的所接收數據D417進行第一計算、并且解碼中間結果D413未被存儲在用于存儲解碼中間結果的存儲器413中時,計算部件415將解碼中間結果uj設置為初始值。
在步驟S51中,計算部件415進行第二計算,并將作為計算結果的解碼中間結果D415提供給用于存儲解碼中間結果的存儲器410。
更具體地說,在步驟S50中,將5個解碼中間結果D414從循環(huán)移位電路414提供給計算部件415,此外,將5個所接收數據D417從用于所接收數據的存儲器416提供給計算部件415。將解碼中間結果D415和所接收數據D417單獨提供給計算部件415的計算器4151至4155的每一個。此外,將控制信號D422從控制部件417提供給計算部件415,并將控制信號D422提供給計算器4151至4155。
基于控制信號D422,計算器4151至4155每一個都通過使用解碼中間結果D414和所接收數據D417來進行根據式(5)的計算,并將作為計算結果獲得的、對應于校驗矩陣的列的解碼中間結果D415(v)提供給用于存儲解碼中間結果的存儲器410。
在步驟S51的處理之后,該過程進行到步驟S52,在該步驟處,用于存儲解碼中間結果的存儲器410將在步驟S51從計算部件415提供的解碼中間結果D415存儲在相同地址處,然后,該過程進行到步驟S53。
在步驟S53,控制部件417確定計算部件415是否計算了對應于校驗矩陣的列的所有解碼中間結果D415。當確定沒有計算所有解碼中間結果D415時,該過程返回步驟S50,并且再次進行上述處理。
另一方面,當在步驟S53控制部件417確定計算部件415計算了對應于校驗矩陣的列的所有解碼中間結果D415時,該過程進行到步驟S54,在該步驟處,循環(huán)移位電路411將從用于存儲解碼中間結果的存儲器410提供的解碼中間結果D410(v)循環(huán)移位。
更具體地說,將5個解碼中間結果D410從用于存儲解碼中間結果的存儲器410提供給循環(huán)移位電路411。此外,將對應于解碼中間結果D410的控制信號D418從控制部件417提供給循環(huán)移位電路411,其中,控制信號D418指示關于這樣的事實的信息(矩陣數據),該事實為作為例如將形成校驗矩陣基礎的單位矩陣循環(huán)移位多少次的結果來排列校驗矩陣的1?;诳刂菩盘朌418,循環(huán)移位電路411將5個解碼中間結果D410循環(huán)移位(重新排列),并將它們作為解碼中間結果D411提供給計算部件412。
在步驟S54的處理之后,該過程進行到步驟S55,在該步驟處,計算部件412進行第一計算,并將作為計算結果的解碼中間結果D412提供給循環(huán)移位電路414。
更具體地說,在步驟S54,將5個解碼中間結果D411(v)從循環(huán)移位電路411提供給計算部件412。此外,將已經在步驟S56(將在以后描述)存儲的5個解碼中間結果D412(D413)(uj)提供給計算部件412,其中,作為先前由計算部件412進行的第一計算的結果而獲得這5個解碼中間結果D412(D413)(uj)。將解碼中間結果D411和解碼中間結果D413單獨提供給計算部件412的計算器4121至4125的每一個。此外,將控制信號D419從控制部件417提供給計算部件412,并將控制信號D419提供給計算器4121至4125。
基于控制信號D419,計算器4121至4125每一個都通過使用解碼中間結果D411和解碼中間結果D413來進行根據式(7)和式(8)的計算,并將作為計算結果獲得的解碼中間結果D412(uj)提供給用于存儲解碼中間結果的存儲器413。
在步驟S55的處理之后,該過程進行到步驟S56,在該步驟處,用于存儲解碼中間結果的存儲器413將在步驟S55從計算部件412提供的5個解碼中間結果D412存儲在相同地址處,然后,該過程進行到步驟S57。
在步驟S57,控制部件417確定計算部件412是否計算了對應于校驗矩陣的所有1的解碼中間結果D412。當確定沒有計算校驗矩陣的所有1時,該過程返回步驟S54,并再次進行上述處理。
另一方面,當在步驟S57控制部件417確定計算部件412計算了對應于所有1的解碼中間結果D412時,該過程完成。
解碼設備400將圖25的解碼過程重復進行所述解碼數目,并將作為最后的第二計算的結果獲得的消息D415作為最終解碼結果輸出。
在上面的描述中,盡管用于存儲解碼中間結果的存儲器413由兩個單端口RAM構成,但是,如果對一個RAM的讀取和寫入不同時發(fā)生,則存儲器413可以由三個或更多RAM構成。當RAM的物理位寬度不夠時,通過使用多個RAM來提供相同的控制信號,可以將這些RAM邏輯地假設為一個RAM。
對于缺少棱數據(對應于棱的消息)的部分,在存儲器中進行存儲的期間(當把數據存儲在用于存儲解碼中間結果的存儲器410和413中時),不存儲消息,而在計算期間(在計算部件412處的第一計算期間和在計算部件415處的第二計算期間),不進行計算。
圖26是示出應用本發(fā)明的、用于將由圖15的校驗矩陣代表的LDPC碼解碼的解碼設備的另一實施例的結構示例的方框圖。
在圖26的解碼設備600中,圖16A至16C的棱數據存儲器316被形成為用于存儲解碼中間結果的存儲器613,其具有小于棱數據存儲器316的容量的容量。
解碼設備600包括用于存儲解碼中間結果的存儲器610、循環(huán)移位電路611、由5個計算器6121至6125組成的計算部件612、用于存儲解碼中間結果的存儲器613、循環(huán)移位電路614、由5個計算器6151至6155組成的計算部件615、用于接收的存儲器616、和控制部件617。
參考圖27至圖30,給出對圖26的計算部件612的計算器6121至計算器6125、圖30的計算部件615的計算器6151至計算器6155、圖10的校驗節(jié)點計算器101、和圖11的可變節(jié)點計算器103之間關系的描述。
圖27和圖28分別與示出校驗節(jié)點計算器101的上述圖10和示出可變節(jié)點計算器103的上述圖11相同。圖29示出了計算器612k(k=1、2、...、5)的結構示例。圖30示出了計算器615k(k=1、2、...、5)的結構示例。
在圖26的解碼設備600中,計算器612k進行校驗節(jié)點計算的一些,并且計算器615k進行校驗節(jié)點計算的其它一些和可變節(jié)點計算的一些,而不是計算器612k進行校驗節(jié)點計算并且計算部件615k進行可變節(jié)點計算。
更具體地說,圖29的計算器612k由塊D’和塊E’構成。塊D’被按照與塊D相同的方式配置,其中,塊D用于累計對與校驗矩陣的每一列的所有棱對應的消息vi的絕對值進行
計算所得的值,塊D是圖27的校驗節(jié)點計算器101的一部分。塊E’被按照與塊E相同的方式配置,其中,塊E用于將對應于校驗矩陣每一列的所有棱的消息vi的符號位相乘。
另一方面,圖30的計算器615k由塊F’、G’、和H’構成。塊F’被按照與塊F相同的方式配置,其中,塊F用于將對應于校驗矩陣每一列所有棱的消息vi的符號位的相乘值除以對應于要確定的棱的消息vi的符號位;以及,通過從對與校驗矩陣每一列所有棱相對應的消息vi的絕對值進行計算
所得的值的累計值中,減去對與要確定的棱相對應的消息vi的絕對值進行
計算所得的值,對所獲得的值進行
計算,塊F’是圖19的校驗節(jié)點計算器101的另一部分。塊G’被按照與用于對消息vi的絕對值進行
計算的塊G相同的方式配置。塊H’被按照與用于進行圖20的可變節(jié)點計算器103的可變節(jié)點計算的塊H相同的方式配置。
圖29的計算器612k將塊A和塊B的計算結果,即,進行校驗節(jié)點計算的一些所得的解碼中間結果w提供給用于存儲解碼中間結果的存儲器613。圖30的計算器615k將進行了校驗節(jié)點計算的其它一些和可變節(jié)點計算所得的解碼中間結果vi’提供給用于存儲解碼中間結果的存儲器610。
因此,圖26的解碼設備600有可能通過交替進行計算器612k的計算和計算器615k的計算來進行校驗節(jié)點計算和可變節(jié)點計算,以便進行解碼。
在圖30的計算器615k中,通過使用存儲在用于存儲解碼中間結果的存儲器610中的、對應于要確定的棱的解碼中間結果vi’,塊C從作為計算器612k的計算結果獲得的解碼中間結果w的絕對值中,減去對應于要確定的棱的解碼中間結果vi’,并將該解碼中間結果w的符號位乘以對應于要確定的棱的解碼中間結果vi’的符號位。因此,不需要圖27的存儲器127和FIFO存儲器133。
接下來,通過使用等式,給出對計算部件612的計算器6121至計算器6125進行的計算、和計算部件615的計算器6151至計算器6155進行的計算的描述。
計算部件612進行根據式(9)的第一計算,并將作為第一計算的結果的解碼中間結果w提供給用于存儲解碼中間結果的存儲器613,由此來存儲它們。計算部件615進行上述式(1)以及根據式(9)和式(11)的第二計算,并將作為第二計算的結果的解碼中間結果vi’提供給用于存儲解碼中間結果的存儲器610,由此來存儲它們。
uj=Ф-1(|w|-|vi′|)×sign(vi′)×sing(w)(10) vi′=Ф(|vi|)×sign(vi)(11) 更具體地說,作為根據式(9)的第一計算結果獲得的解碼中間結果w是這樣的將校驗節(jié)點計算的解碼中間結果vi’的絕對值|vi’|的總和與符號位(vi’)乘到一起,其中,作為根據式(1)、式(10)和式(11)的第二計算結果獲得所述解碼中間結果vi’,并且,其對應于校驗矩陣H的第j行的所有1。因此,如式(10)所示,可以通過使用這樣的值來表示通過式(7)的校驗節(jié)點計算獲得的uj從作為根據式(9)的第一計算結果獲得的解碼中間結果w的絕對值|w|中,減去對應于校驗矩陣H的第j行的每一列的“1”(棱)的(多個)解碼中間結果vi’中的、對應于要確定的棱的解碼中間結果vi’的絕對值|vi’|。
在解碼設備600中,交替進行由計算部件612進行的根據式(9)的第一計算以及根據式(1)、式(10)和式(11)的第二計算,并且,計算部件615通過使用最后的第一計算結果而進行根據式(5)的第一計算,并將計算結果作為解碼結果輸出,由此進行LDPC碼的迭代解碼。
更具體地說,在解碼設備600中,計算部件612通過使用對應于校驗矩陣H第j行所有1的解碼中間結果vi’來進行第一計算,并將作為計算結果獲得的、對應于校驗矩陣每一行的解碼中間結果w存儲在用于存儲解碼中間結果的存儲器613中,其中,所述解碼中間結果vi’是計算部件615進行的第二計算的結果。因此,用于存儲解碼中間結果的存儲器613的容量變?yōu)閷⑿r灳仃嚨男袛的亢徒獯a中間結果w的量化位數目乘到一起所得的值,其中,所述校驗矩陣的行數目小于校驗矩陣的“1”的數目。計算部件615通過使用作為計算部件612進行的第一計算的結果的解碼中間結果w、和所接收值u0i,來進行第二計算,并將作為計算結果獲得的校驗節(jié)點計算的解碼中間結果vi’存儲在用于存儲解碼中間結果的存儲器610中,其中,所述解碼中間結果w對應于校驗矩陣H的第i列的每一行,解碼中間結果vi’對應于校驗矩陣第i列的1(棱)。因此,用于存儲解碼中間結果的存儲器610所必需的容量變?yōu)檫@樣得到的值類似于圖16A和16B的用于存儲可變節(jié)點計算結果的棱數據存儲器311,將校驗矩陣的1的數目和解碼中間結果vi’的量化位數目乘到一起。
因此,在解碼方法600中,當與圖16A和16B的棱數據存儲器311相比時,用于存儲解碼中間結果的存儲器610的存儲容量可被減小。這使得有可能減小解碼設備600的電路規(guī)模。
下面將詳細描述圖26的解碼設備600的每個部件的操作。
基于控制信號D618,用于存儲解碼中間結果的存儲器610集體地存儲從計算部件615提供的5個解碼中間結果D615,同時,讀出5個已被存儲的解碼中間結果D615,并將它們作為解碼中間結果D610提供給循環(huán)移位電路611和計算部件615。也就是說,用于存儲解碼中間結果的存儲器610同時進行提供給循環(huán)移位電路611的解碼中間結果D610的讀取、和從計算部件615提供的解碼中間結果D615的寫入。
在用于存儲解碼中間結果的存儲器610中,存儲由計算部件615通過第二計算所計算的解碼中間結果vi’(第二解碼中間結果),其對應于校驗矩陣的1(棱)。因此,存儲在用于存儲解碼中間結果的存儲器610中的數據量,即,用于存儲解碼中間結果的存儲器610所需的存儲容量,變?yōu)榻獯a中間結果的量化位數目和1的數目(棱的總數)的相乘值。
例如,用于存儲解碼中間結果的存儲器610包括兩個能夠同時讀取和寫入5個解碼中間結果的單端口RAM。將5個解碼中間結果D615從計算部件615提供給用于存儲解碼中間結果的存儲器610,此外,將用于控制解碼中間結果D615的讀取和寫入的控制信號D618從控制部件617提供給存儲器610。
將5個解碼中間結果D610從用于存儲解碼中間結果的存儲器610提供給循環(huán)移位電路611。此外,將對應于解碼中間結果D610的控制信號D619從控制部件617提供給循環(huán)移位電路611,其中,控制信號D619指示關于這樣的事實的信息(矩陣數據)作為例如將形成校驗矩陣基礎的單位矩陣循環(huán)移位多少次的結果來排列校驗矩陣的1?;诳刂菩盘朌619,循環(huán)移位電路611進行重新排列5個解碼結果D610的循環(huán)移位,并將結果作為解碼中間結果D611提供給計算部件612。
計算部件612包括5個計算器6121和6125。將5個解碼中間結果D611(第二解碼中間結果)(vi’)從循環(huán)移位電路611提供給計算部件612,并將5個解碼中間結果611(第一解碼中間結果)(w)分別提供給計算器6121至6125。將控制信號D620從控制部件617提供給計算部件612,并將控制信號D620提供給計算器6121至6125??刂菩盘朌620是5個計算器6121至6125共有的信號。
計算器6121至6125每一個都通過使用解碼中間結果D611而根據式(9)進行第一計算,以便確定解碼中間結果D612(w)。計算部件612將作為計算器6121至6125進行的計算結果而獲得的5個解碼中間結果D612提供給用于存儲解碼中間結果的存儲器613。
將對應于校驗矩陣的行的5個解碼中間結果D612從計算部件612提供給用于存儲解碼中間結果的存儲器613,其中,所述5個解碼中間結果D612是計算部件612進行的第一計算的結果。用于存儲解碼中間結果的存儲器613從第一地址開始按順序存儲從計算部件612提供的這5個解碼中間結果D612。
更具體地說,在用于存儲解碼中間結果的存儲器613的第1地址處,存儲對應于校驗矩陣的行的解碼中間結果中從第1行至第5行的解碼中間結果w。類似地,在第2地址處,存儲從第6行至第10行的解碼中間結果,并且在第3地址處,存儲從第11行至第15行的解碼中間結果w。隨后,類似地,以5個結果的單位在第4地址至第6地址處存儲從第16行至第30行的解碼中間結果w,并且,將總共60個解碼中間結果w存儲在用于存儲解碼中間結果的存儲器613中。因此,用于存儲解碼中間結果的存儲器610的字的數目變?yōu)?,該數目為將圖15的校驗矩陣H的行數目30除以被同時讀取和寫入的解碼中間結果的數目5。
用于存儲解碼中間結果的存儲器613從5個已被存儲的解碼中間結果D613中同時讀取5個解碼中間結果w,并將它們作為解碼中間結果D613提供給循環(huán)移位電路614,其中,所述5個解碼中間結果w是將由計算部件615確定的解碼中間結果vi’所對應的校驗矩陣H的列中的“1”。
例如,用于存儲解碼中間結果的存儲器613包括能夠同時讀取和寫入5個解碼中間結果的單端口RAM。由于通過計算部件612的第一計算所計算的、對應于行的解碼中間結果w被存儲在用于存儲解碼中間結果的存儲器613中,因此,存儲在用于存儲解碼中間結果的存儲器613中的數據量,即,用于存儲解碼中間結果的存儲器613所需的存儲容量,變?yōu)榻獯a中間結果的量化位數目和校驗矩陣H的行數目的相乘值。
將5個解碼中間結果D613(解碼中間結果w)從用于存儲解碼中間結果的存儲器613提供給循環(huán)移位電路614。此外,將對應于解碼中間結果D613的控制信號D621從控制部件617提供給循環(huán)移位電路614,其中,控制信號D621指示關于這樣的事實的信息(矩陣數據)作為例如將形成校驗矩陣基礎的單位矩陣循環(huán)移位多少次的結果來排列校驗矩陣的1。基于控制信號D621,循環(huán)移位電路614進行重新排列5個解碼中間結果D613的循環(huán)移位,并將結果作為解碼中間結果D614提供給計算部件615。
計算部件615包括5個計算器6151至6155。將5個解碼中間結果D614(w)從循環(huán)移位電路614提供給可變節(jié)點計算部件615,此外,將5個解碼中間結果D610(vi’)從用于存儲解碼中間結果的存儲器610提供給可變節(jié)點計算部件615。將解碼中間結果D614和解碼中間結果D610提供給計算器6151至6155的每一個。將5個所接收數據D617從用于接收的存儲器617提供給計算部件615,并將所接收數據D617單獨提供給計算器6151至6155的每一個。此外,將控制信號D622從控制部件617提供給計算部件617,并將控制信號D622提供給計算器6151至6155??刂菩盘朌622是5個計算器6171至6175共有的信號。
計算器6151至6155每一個都通過使用解碼中間結果D614和D611以及所接收數據D617(LDPC碼)而根據式(1)、式(10)和式(11)來進行第二計算,以便確定對應于校驗矩陣每一列的1的5個解碼中間結果(vi’)。計算部件615將作為計算器6151至6155進行第二計算的結果而獲得的5個解碼中間結果D615提供給用于存儲解碼中間結果的存儲器610。
用于接收的存儲器616將從通過通信信道接收的所接收值(符號位)計算的接收LLR(對數似然比)作為所接收數據D617來存儲,其中,接收LLR是符號位的0相似性值。
更具體地說,在用于接收的存儲器616的第一地址處,存儲對應于校驗矩陣的列的所接收數據D617中的、對應于校驗矩陣的第1列至第5列的所接收數據D617。在第2地址處,存儲對應于校驗矩陣的第6列至第10列的所接收數據D617,并且在第3地址處,存儲對應于校驗矩陣的第11列至第16列的所接收數據D617。隨后,類似地,在第4地址至第18地址處,以5個數據的單位存儲對應于第17列至第90列的所接收數據D617。
然后,用于接收的存儲器616以5個數據的單位、按照計算部件615進行第二計算所必需的順序來同時讀取已被存儲的所接收數據D617,并將它們提供給計算部件615。
例如,用于接收的存儲器616包括單端口RAM。存儲在用于接收的存儲器616中的數據量,即,用于接收的存儲器616所必需的存儲容量,是LDPC碼的碼長度和所接收數據的量化位數目的相乘值。此外,用于接收的存儲器616的字的數目是18,該數目是將LDPC碼的碼長度,即校驗矩陣的列數目90除以被同時讀取的所接收數據D617的數目。
控制部件617將控制信號D618提供給用于存儲解碼中間結果的存儲器610,并將控制信號D619提供給循環(huán)移位電路611,以便分別控制它們。此外,控制部件617將控制信號D620提供給計算部件612,并將控制信號D621提供給循環(huán)移位電路614,以便分別控制它們。
作為按照用于存儲解碼中間結果的存儲器610、循環(huán)移位電路611、計算部件612、用于存儲解碼中間結果的存儲器613、循環(huán)移位電路614、和計算部件615的順序循環(huán)的數據的結果,解碼設備600可進行一次解碼。在解碼設備600中,在將解碼重復進行預定次數之后,計算部件615進行根據式(5)的計算,并且,將該計算結果作為最終解碼結果輸出。
圖29是示出圖26的計算部件612的計算器6121的結構示例的方框圖。
在圖29中描述了計算器6121,并且,計算器6122至計算器6125也被以同樣的方式配置。
此外,在圖29中,通過假設作為計算器615進行的第二計算的結果而獲得的每個解碼中間結果(vi’)被量化為6位來示出計算器6121。將時鐘ck提供給圖29的計算器6121,并將時鐘ck提供給必要的塊。每個塊與時鐘ck同步地進行處理。
基于從控制部件617提供的控制信號D620,圖29的計算器6121通過使用從循環(huán)移位電路611依次讀取的解碼中間結果D611(vi’)來進行根據式(9)的第一計算。
更具體地說,將從循環(huán)移位電路611提供的5個6位解碼中間結果D611(vi’)中的一個解碼中間結果D611提供給計算器6121,將作為最高階位的符號位D631提供給EXOR電路635,并且將作為6位解碼中間結果D611(vi’)的5個較低階位的絕對值D632(|vi’|)提供給加法器631。此外,將控制信號D620從控制部件617提供給計算器6121,并將控制信號D620提供給選擇器633和選擇器637。
加法器631通過將絕對值D632(|vi’|)和存儲在寄存器632中的9位值D633加到一起來累計絕對值D632(|vi’|),并將作為結果獲得的9位累計值再次存儲在寄存器632中。當累計了從對應于校驗矩陣一行上所有1的解碼中間結果D611確定的絕對值D632(|vi’|)時,寄存器632被復位。
當依次讀取校驗矩陣一行上的解碼中間結果D611、并且累計一行的絕對值D632所得的累計值被存儲在寄存器632中時,從控制部件617提供的控制信號D620從0改變?yōu)?。例如,當行權重為“9”時,控制信號D620在第1至第8時鐘為“0”,而在第9時鐘為“1”。
當控制信號D620為“1”時,寄存器632選擇存儲在選擇器633中的值,即,累計對應于校驗矩陣一行上所有1的解碼中間結果D611(解碼中間結果vi’)的絕對值D632(|vi’|)所得的9位值D633(∑|vi’|,從i=1至i=dc),并將該值作為值D634輸出到寄存器634,由此來存儲它。寄存器634將所存儲的值D634作為9位值D635提供給選擇器633,并且還將它輸出。當控制信號D620為“0”時,選擇器633選擇從寄存器634提供的值D635,并將該值輸出到寄存器634,由此來再次存儲它。也就是說,寄存器634將先前累計的|vi’|提供給選擇器633,并且還將它輸出,直到累計了對應于校驗矩陣一行上所有1的解碼中間結果D611(解碼中間結果vi’)的絕對值D632(|vi’|)為止。
在進行上述處理的同時,EXOR電路635通過計算存儲在寄存器636中的1位值D637和符號位D631的異或,來進行符號位的相乘,并將1位相乘結果D636再次存儲在寄存器636中。當對應于校驗矩陣一行上所有1的解碼中間結果D611的符號位D631均被乘入時,寄存器636被復位。
當相乘結果D636(Пsign(vi’),從i=1至dc)被存儲在寄存器636中時,從控制部件617提供的控制信號D620從“0”改變?yōu)椤?”,其中,將從對應于校驗矩陣一行上所有1的解碼中間結果D611所確定的符號位D631相乘而得到所述相乘結果D636(Пsign(vi’),從i=1至dc)。
當控制信號D620為“1”時,選擇器637選擇存儲在寄存器636中的值,即,將對應于校驗矩陣一行上所有1的解碼中間結果D611的符號位D631相乘所得的值D637(Пsign(vi’),從i=1至i=dc),并將該值作為1位值D638輸出到寄存器638,由此來存儲它。寄存器638將所存儲的值D638作為1位值D639提供給選擇器637,并輸出它。當控制信號D620為“0”時,選擇器637選擇從寄存器638提供的值D639,并將該值輸出到寄存器638,由此來再次存儲它。也就是說,寄存器638將先前存儲的值提供給選擇器637,并輸出它,直到對應于校驗矩陣一行上所有1的解碼中間結果D611(解碼中間結果vi’)的符號位D631均被乘入為止。
在計算器6121中,將總共10位作為解碼中間結果D612(解碼中間結果w)輸出,其中,使從寄存器634輸出的9位值D635(∑|vi’|,從i=1至i=dc)成為9個較低階位,而使從寄存器638輸出的1位值D639(sign(vi’))成為最高階位。
如上所述,在計算器6121中,進行式(9)的計算,并確定解碼中間結果w。
圖30是示出圖26的計算部件615的計算器6151的結構示例的方框圖。
在圖30中描述了計算器6151,并且計算器6152至6155也被以相同的方式配置。
此外,在圖30中,通過假設作為計算器612進行的第一計算的結果而獲得的每個解碼中間結果(w)和符號位一起被量化為總共10位、并且先前作為第二計算結果而獲得的每個解碼中間結果(uj)和符號位一起被量化為總共6位,來示出計算器6151,其中,從用于存儲解碼中間結果的存儲器610提供所述解碼中間結果(uj)。此外,將時鐘ck提供給圖30的計算器6151,并將時鐘ck提供給必要的塊。每個塊與時鐘ck同步地進行處理。
基于從控制部件617提供的控制信號D622,圖30的計算器6151通過使用以下各項來進行根據式(1)、式(10)和式(11)的第二計算從用于接收的存儲器616依次讀取的所接收數據D617(所接收值u0i);從循環(huán)移位電路614依次讀取的解碼中間結果D614(w);從用于存儲解碼中間結果的存儲器610依次讀取的解碼中間結果D610(vi’),其中,先前作為由計算部件615進行的第二計算的結果而獲得該解碼中間結果。
更具體地說,在計算器6151中,從循環(huán)移位電路614依次讀取對應于校驗矩陣的行的10位解碼中間結果D614(解碼中間結果w)。從用于存儲解碼中間結果的存儲器610依次讀取先前作為計算部件615進行的第二計算的結果而獲得的6位解碼中間結果D610(解碼中間結果vi’)。將解碼中間結果D614的最高階位的符號位D651(sign(w))、和解碼中間結果D610的最高階位的符號位D653(sign(uj))提供給EXOR電路653。將解碼中間結果D614的9個較低階位的絕對值D652(|w|)、和解碼中間結果D610的9個較低階位的符號位D653(|vi’|)提供給減法器651。此外,在計算器6151中,從用于接收的存儲器616中依次讀取6位所接收數據D617,并將其提供給加法器658。此外,在計算器6151中,從控制部件617提供控制信號D622,并將控制信號D622提供給選擇器656。
減法器651從絕對值D652中減去絕對值D654,并將5位相減值D655提供給LUT 652。LUT 652輸出對相減值D655進行
計算所得的5位計算結果D656
另一方面,EXOR電路653通過計算符號位D651(sign(w))和符號位D653(sign(vi’))的異或來將符號位D651和符號位D653乘到一起,并將1位相乘結果作為相乘值D657輸出。然后,將6位值D658提供給加法器654,并且還將其提供給FIFO存儲器659,其中,在所述6位值D658中,使從LUT652提供的5位計算結果D656成為5個較低階位
并且使從EXOR電路653提供的1位值D657(sign(w)×sign(vi’))成為最高階位。
以上述方式,進行根據式(10)的計算,并將作為計算結果的6位值D658(uj)提供給加法器654,并且還將其提供給FIFO存儲器659。
加法器659通過將6位值D658(uj)和存儲在寄存器655中的9位值D659加到一起來累計值D658,并將作為結果獲得的9位累計值再次存儲在寄存器655中。當累計了對應于校驗矩陣一列上所有1的值D658時,寄存器655被復位。
當依次讀取校驗矩陣一列上的值D658,并且累計一列的值D658所得的值被存儲在寄存器655中時,從控制部件617提供的控制信號D622從“0”改變?yōu)椤?”。例如,當列權重為“5”時,控制信號D622在第1至第4時鐘為“0”,而在第5時鐘為“1”。
當控制信號D622為“1”時,選擇器656選擇存儲在寄存器655中的值,即,累計對應于校驗矩陣一列上的1的值D658(uj)所得的9位值D659(∑uj,從j=1至j=dv),并將該值輸出到寄存器657,由此來存儲它。寄存器657將所存儲的值D659作為9位值D660提供給選擇器471和加法器658。當控制信號D622為“0”時,選擇器656選擇從寄存器657提供的值D660,并將該值輸出到寄存器657,由此來再次存儲它。也就是說,寄存器657將先前累計的值提供給選擇器656和加法器658,直到累計了對應于校驗矩陣一列上的1的值D658為止。
加法器658將9位值D660和從用于接收的存儲器616提供的6位所接收數據D617加到一起,并提供作為結果獲得的9位值D661。
在計算器615中,當要進行最后的計算時,加法器658將9位值D661作為最終解碼結果輸出。也就是說,計算部件615進行根據式(5)的計算。
另一方面,F(xiàn)IFO存儲器659延遲6位值D658(uj),直到從寄存器665輸出新值D660(∑uj,從j=1至j=dv)為止,并將該值作為6位值D662提供給減法器660。減法器660從9位值D660中減去6位值D662,并輸出相減值D663。也就是說,減法器660從對應于校驗矩陣一列上的1的值D658的累計值中,減去對應于要確定的棱的值,即,對應于預定的校驗矩陣的1的值D658(uj),并將相減值(∑uj,從i=1至i=dv-1)作為6位相減值D663輸出。
以上述方式,進行根據式(1)的計算,并輸出作為計算結果的6位相減值D663(vi)。然后,將從減法器660輸出的6位相減值D663的5個較低階位的絕對值(|vi|)提供給LUT 661,并將最高階位的符號位(sign(vi))作為值D665輸出。
LUT 661輸出對絕對值(|vi|)進行
的計算所得的5位計算結果D666
然后,LUT 661將總共6位作為解碼中間結果(vi’)提供給用于存儲解碼中間結果的存儲器610,其中,使從LUT 661輸出的5位計算結果D666
成為5個較低階位,而使值D665(sign(vi))成為最高階位。
如上所述,在計算器6151中,進行式(1)、式(10)和式(11)的計算,并確定解碼中間結果vi’。
圖15的校驗矩陣的列權重的最大值為5,也就是說,提供給計算器6151的解碼中間結果D614(w)和解碼中間結果D610(vi’)的最大數目為5。因此,計算器6151具有FIFO存儲器659,用于延遲5個解碼中間結果D614和從解碼中間結果D610確定的5個計算結果D658(uj)。當要計算列權重小于5的消息時,F(xiàn)IFO存儲器659中的延遲量減小為列權重的值。
圖31是示出圖26的用于存儲解碼中間結果的存儲器610的結構示例的方框圖。
用于存儲解碼中間結果的存儲器610包括開關701和704、以及用于存儲解碼中間結果的RAM 702和703,其中,RAM 702和703是兩個單端口RAM。
在詳細描述用于存儲解碼中間結果的存儲器610的每個部件之前,首先將描述用來把數據存儲在用于存儲解碼中間結果的RAM 702和703中的方法。
用于存儲解碼中間結果的RAM 702和703存儲通過開關701提供的解碼中間結果D615,其中,作為計算部件612進行的第一計算的結果而獲得所述解碼中間結果D615。
更具體地說,在用于存儲解碼中間結果的RAM 702的第1地址至第5地址處,按照對于每一行、在水平方向上(在列方向)將圖15的校驗矩陣H的第1列至第5列的1充填得更加緊密的方式(按照忽略0的方式),來存儲對應于它們的解碼中間結果D615(D701)。
更具體地說,當把第j行第i列表示為(j,i)時,在用于存儲解碼中間結果的RAM 702的第1地址處,存儲對應于圖15的校驗矩陣從(1,1)至(5,5)的5×5單位矩陣的1的數據。在第2地址處,存儲對應于形成圖15的校驗矩陣從(6,1)至(10,5)的和矩陣(該和矩陣為第一移位矩陣和第二移位矩陣的和,其中,在第一移位矩陣中,5×5單位矩陣被向右循環(huán)移動1,而在第二移位矩陣中,5×5單位矩陣被向右循環(huán)移動2)的第一移位矩陣的1的位置的數據。此外,在第3地址處,存儲對應于形成校驗矩陣從(6,1)至(10,5)的和矩陣的第二移位矩陣的1的位置的數據。隨后,同樣,在第4地址和第5地址處,以這樣的方式來存儲數據,以便對應于圖15的校驗矩陣。
在用于存儲解碼中間結果的RAM 702的第6地址至第10地址處,存儲對應于圖15的校驗矩陣從第11列至第15列的1的數據。也就是說,在第6地址處,存儲對應于形成校驗矩陣從(11,11)至(15,15)的和矩陣(該和矩陣為5×5單位矩陣和第一移位矩陣的和,其中,在第一移位矩陣中,5×5單位矩陣被向右循環(huán)移動3)的第一移位矩陣的1的位置的數據,并且在第7地址處,存儲對應于形成校驗矩陣的(11,11)至(15,15)的和矩陣的單位矩陣的1的數據。隨后,同樣,在第8地址至第10地址處,以這樣的方式來存儲數據,以便對應于校驗矩陣。
類似地,在用于存儲解碼中間結果的RAM 702的第10地址至第28地址處,按照對應于圖15的校驗矩陣這樣的方式,存儲對應于從第21列至第25列、從第31列至第35列、從第41列至第45列、從第51列至第55列、從第61列至第65列、從第71列至第75列、從第81列至第85列的1的數據。也就是說,用于存儲解碼中間結果的RAM 702的字的數目為28。
在用于存儲解碼中間結果的RAM 703的第1地址至第5地址處,按照對于每一行、在水平方向上(在列方向上)將圖15的校驗矩陣H的第6列至第10列的1充填得更加緊密的方式(按照忽略0的方式),來存儲對應于它們的解碼中間結果D615(D702)。
更具體地說,在用于存儲解碼中間結果的RAM 703的第1地址處,存儲對應于形成校驗矩陣從(6,1)至(10,5)的和矩陣(該和矩陣為第一移位矩陣和第一移位矩陣的和,其中,在第一移位矩陣中,5×5單位矩陣被向右循環(huán)移動1,而在第二移位矩陣中,單位矩陣被向右循環(huán)移動2)的第一移位矩陣的1的數據,其中,第一移位矩陣為校驗矩陣的子矩陣。在第2地址處,存儲對應于形成從(6,1)至(10,5)的和矩陣的第二移位矩陣的1的數據,其中,第二移位矩陣是校驗矩陣的子矩陣。隨后,類似地,在第3地址至第5地址處,同樣,以這樣的方式來存儲數據,以便對應于校驗矩陣的子矩陣。
類似地,在用于存儲解碼中間結果的RAM 703的第6地址至第26地址處,存儲對應于圖15的校驗矩陣從第16列至第20列、從第26列至第30列、從第36列至第40列、從第46列至第50列、從第56列至第60列、從第66列至第70列、從第76列至第80列以及從第86列至第90列的1的數據。也就是說,用于存儲解碼中間結果的RAM 703的字的數目為26。
如上所述,用于存儲解碼中間結果的RAM 702的字的數目為28,并且用于存儲解碼中間結果的RAM 703的字的數目為26。
圖32是圖示用于存儲解碼中間結果的存儲器610的用于存儲解碼中間結果的RAM 702、和用于存儲解碼中間結果的RAM 703的讀取和寫入操作的時序圖。
在圖32中,水平軸表示時間(t)。
在用于存儲解碼中間結果的存儲器610中,當計算部件612要進行第一計算時,基于從控制部件617提供的控制信號D7202,從用于存儲解碼中間結果的RAM 702讀取作為第二計算結果而獲得的已被存儲的解碼中間結果D703,或者基于從控制部件617提供的控制信號D7203,從用于存儲解碼中間結果的RAM 703讀取作為第二計算結果而獲得的已被存儲的解碼中間結果D704。將所讀取的解碼中間結果通過開關704提供給循環(huán)移位電路614。
當計算部件615要進行第二計算時,將作為第二計算結果而獲得的解碼中間結果D615(vi’)從計算部件615提供給用于存儲解碼中間結果的存儲器610。在將解碼中間結果D615寫入到用于存儲解碼中間結果的RAM 702和用于存儲解碼中間結果的RAM 703之一的預定地址處的同時,從其它RAM讀取先前作為計算部件615進行的第二計算的結果而獲得的解碼中間結果D610(vi’),并通過循環(huán)移位電路614將其輸出到計算部件615。
將5個解碼中間結果D615從計算部件615提供給開關701,此外,將控制信號D7201提供給開關701,其中,控制信號D7201指示選擇用于存儲解碼中間結果的RAM 702和用于存儲解碼中間結果的RAM 703之一,作為用于存儲解碼中間結果D615的存儲器?;诳刂菩盘朌7201,開關701選擇用于存儲解碼中間結果的RAM 702和用于存儲解碼中間結果的RAM 703之一,并將5個解碼中間結果D612提供給所選擇的它們中的一個。
將5個解碼中間結果D612作為解碼中間結果D701從開關701提供給用于存儲解碼中間結果的RAM 702,此外,將指示地址的控制信號D7022從控制部件617提供給RAM 702。用于存儲解碼中間結果的RAM 702讀取已被存儲在由控制信號D7202指示的地址處的5個解碼中間結果D701,并將它們作為解碼中間結果D703提供給開關704,其中,先前作為計算部件615進行的第二計算的結果而獲得所述5個解碼中間結果D701。此外,用于存儲解碼中間結果的RAM 702將從開關701提供的5個解碼中間結果D702存儲(寫入)到由控制信號D7202指示的地址處。
將5個解碼中間結果D615作為解碼中間結果D702從開關701提供給用于存儲解碼中間結果的RAM 703,此外,將指示地址的控制信號D7203從控制部件617提供給RAM 703。用于存儲解碼中間結果的RAM 703讀取已被存儲在由控制信號D7203指示的地址處的5個解碼中間結果D702,并將它們作為解碼中間結果D704提供給開關704,其中,先前作為計算部件615進行的第二計算的結果而獲得所述5個解碼中間結果D702。此外,用于存儲解碼中間結果的RAM 702將從開關701提供的5個解碼中間結果D702存儲(寫入)到由控制信號D7203指示的地址處。
將解碼中間結果D703從用于存儲解碼中間結果的RAM 702提供給開關704,或者將解碼中間結果D704從用于存儲解碼中間結果的RAM 703提供給開關704。此外,將控制信號D7204從控制部件617提供給開關704,該控制信號D7204指示選擇用于存儲解碼中間結果的RAM 702和用于存儲解碼中間結果的RAM 703之一?;诳刂菩盘朌7204,開關704選擇用于存儲解碼中間結果的RAM 702和用于存儲解碼中間結果的RAM 703之一,并將從所選擇的RAM提供的5個解碼中間結果作為5個解碼中間結果D610提供給計算部件615。
在用于存儲解碼中間結果的存儲器610中,當計算部件615要進行第二計算時,基于控制信號D7202,用于存儲解碼中間結果的RAM 702以5個結果的單位,從先前作為計算部件615進行的第二計算的結果而獲得的已被存儲的解碼中間結果D701中,將存儲在相同地址處的、對應于校驗矩陣從第1列至第5列的1的解碼中間結果D701讀取5次,并通過開關704將它們提供給計算部件615。也就是說,由于圖15的校驗矩陣H的列權重為5,因此,存在5個對應于校驗矩陣H每一列的1的解碼中間結果,并且,用于存儲解碼中間結果的RAM 702以5個結果為單位、將對應于從第1列至第5列的1的解碼中間結果D701讀取5次。
接下來,基于控制信號D7203,用于存儲解碼中間結果的RAM 703從先前作為計算部件615進行的第二計算的結果而獲得的、已被存儲的解碼中間結果D702中,將存儲在相同地址處的、對應于校驗矩陣從第6列至第10列的1的5個解碼中間結果D702連續(xù)讀取5次,并將它們通過開關704和循環(huán)移位電路614提供給計算部件615。同時,將對應于校驗矩陣從第1列至第5列的1的5個解碼中間結果D615作為解碼中間結果D701通過開關701提供給用于存儲解碼中間結果的RAM 702,其中,作為當前正由計算部件615進行的第二計算的結果而獲得所述解碼中間結果D615。基于控制信號D7202,用于存儲解碼中間結果的RAM 702將解碼中間結果D701在存儲已讀取的解碼中間結果D703的地址處連續(xù)存儲5次。
隨后,基于控制信號D7202,用于存儲解碼中間結果的RAM 702以5個結果為單位,從先前作為計算部件615進行的第二計算的結果而獲得的、已被存儲的解碼中間結果D701中,將存儲在相同地址處的、對應于校驗矩陣從第11列至第15列的1的解碼中間結果D701連續(xù)讀取5次,并將它們通過開關704提供給計算部件615。同時,將對應于校驗矩陣從第6列至第10列的1的5個解碼中間結果D612作為解碼中間結果D702通過開關701提供給用于存儲解碼中間結果的RAM 703,其中,作為當前正由計算部件615進行的第二計算的結果而獲得所述解碼中間結果D612?;诳刂菩盘朌7203,用于存儲解碼中間結果的RAM 703將已讀取的解碼中間結果D702在存儲解碼中間結果D704的地址處連續(xù)存儲5次。
隨后,類似地,用于存儲解碼中間結果的RAM 702和用于存儲解碼中間結果的RAM 703交替進行5次讀取和寫入,直到作為計算部件615進行的第二計算的結果而獲得的、對應于所有1的解碼中間結果被存儲在用于存儲解碼中間結果的RAM 702或用于存儲解碼中間結果的RAM 703中為止。
圖33是圖示圖26的解碼設備600的解碼過程的流程圖。例如,當要解碼的所接收數據被存儲在用于接收的存儲器616中時,開始這個過程。
在步驟S70,循環(huán)移位電路614進行重新排列在步驟S76(將在以后描述)存儲的5個解碼中間結果D613的循環(huán)移位,并將它們提供給計算部件615,其中,從用于存儲解碼中間結果的存儲器613提供所述5個解碼中間結果D613。
更具體地說,將5個解碼中間結果D613從用于存儲解碼中間結果的存儲器613提供給循環(huán)移位電路614。此外,將對應于解碼中間結果D613的控制信號D621從控制部件617提供給循環(huán)移位電路614,其中,該控制信號D621指示關于這樣的事實的信息(矩陣數據)作為例如將形成校驗矩陣基礎的單位矩陣循環(huán)移位多少次的結果來排列校驗矩陣的1。基于控制信號D621,循環(huán)移位電路614將5個解碼中間結果D613循環(huán)移位(重新排列),并將它們作為解碼中間結果D614提供給計算部件615。
當還沒有對從用于接收的存儲器616提供的所接收數據D617進行第一計算、并且解碼中間結果D612還沒有被存儲在用于存儲解碼中間結果的存儲器613中時,計算部件615將結果設置為初始值。
在步驟S71,計算部件615進行第二計算,并將作為計算結果的解碼中間結果D615提供給用于存儲解碼中間結果的存儲器610。
更具體地說,在步驟S70,將5個解碼中間結果D614從循環(huán)移位電路614提供給計算部件615,并且,在步驟S72(將在以后描述),將先前的解碼中間結果D610從用于存儲解碼中間結果的存儲器610提供給計算部件615。從用于所接收數據的存儲器616提供5個所接收數據D617,并將5個解碼中間結果D615和D610以及所接收數據D617單獨提供給計算部件615的計算器6151至6155的每一個。此外,將控制信號D622從控制部件617提供給計算部件615,并將控制信號D622提供給計算器6151至6155。
基于控制信號D622,計算器6151至6155每一個都通過使用解碼中間結果D614和D610以及所接收數據D617來進行根據式(1)、式(10)和式(11)的計算,并將作為計算結果獲得的、對應于校驗矩陣每一列的1的解碼中間結果D615(vi’)提供給用于存儲解碼中間結果的存儲器610。
在步驟S71的處理之后,該過程進行到步驟S72,在該步驟處,用于存儲解碼中間結果的存儲器610將在步驟S71從計算部件615提供的解碼中間結果D615存儲在相同地址處,讀取已存儲的解碼中間結果D615(D610),并將它們提供給循環(huán)移位電路611和計算部件615。
在步驟S72的處理之后,該過程進行到步驟S73,在該步驟處,控制部件617確定計算部件615是否計算了對應于校驗矩陣每一列的1的所有解碼中間結果D615。當控制部件617確定沒有計算所有解碼中間結果D615時,該過程返回步驟S70,并再次進行上述處理。
另一方面,當在步驟S73中控制部件617確定計算部件615計算了所有解碼中間結果D615時,該過程進行到步驟S74,在該步驟處,循環(huán)移位電路611將從用于存儲解碼中間結果的存儲器610提供的解碼中間結果D610(vi’)循環(huán)移位。
更具體地說,將5個解碼中間結果D610從用于存儲解碼中間結果的存儲器610提供給循環(huán)移位電路611。此外,將對應于解碼中間結果D610的控制信號D619從控制部件617提供給循環(huán)移位電路611,其中,控制信號D619指示關于這樣的事實的信息(矩陣數據)作為例如將形成校驗矩陣基礎的單位矩陣循環(huán)移位多少次的結果來排列校驗矩陣的1?;诳刂菩盘朌619,循環(huán)移位電路611將5個解碼中間結果D610循環(huán)移位(重新排列),并將它們作為解碼中間結果D611提供給計算部件612。
在步驟S74的處理之后,該過程進行到步驟S75,在該步驟處,計算部件612進行第一計算,并將作為計算結果的解碼中間結果D612提供給循環(huán)移位電路614。
更具體地說,在步驟S74,將5個解碼中間結果D611(vi’)從循環(huán)移位電路611提供給計算部件612,并將解碼中間結果D611單獨提供給計算部件612的計算器6121至6125的每一個。此外,將控制信號D621從控制部件617提供給計算部件612,并將控制信號D621提供給計算器6121至6125。
基于控制信號D619,計算器6121至6125每一個都通過使用解碼中間結果D611來進行根據式(9)的計算,并將作為計算結果獲得的、對應于校驗矩陣的行的解碼中間結果D612(w)提供給用于存儲解碼中間結果的存儲器613。
在步驟S75的處理之后,該過程進行到步驟S76,在該步驟處,用于存儲解碼中間結果的存儲器613將在步驟S75從計算部件612提供的解碼中間結果D612存儲在相同地址處,然后,該過程進行到步驟S77。
在步驟S77,控制部件617確定計算部件612是否計算了對應于校驗矩陣所有行的解碼中間結果D612。當控制部件617確定沒有計算所有解碼中間結果時,該過程返回步驟S74,并再次進行上述處理。
另一方面,當在步驟S77中控制部件617確定計算部件612計算了對應于所有行的解碼中間結果D612時,該過程完成。
解碼設備600將圖33的解碼過程重復進行所述解碼數目,并將將作為根據上述式(5)的計算結果而由計算部件621獲得的值D661作為最終解碼結果輸出。
在上面的描述中,盡管用于存儲解碼中間結果的存儲器610由兩個單端口RAM構成,但是,如果對一個RAM的讀取和寫入不同時發(fā)生,則它可以由3個或更多RAM構成。當RAM的物理位寬度不夠時,通過使用多個RAM提供相同的控制信號,可以將這些RAM邏輯地假設為一個RAM。
對于缺少棱數據(對應于棱的消息)的部分,在存儲在存儲器期間(當數據被存儲在用于存儲解碼中間結果的存儲器610和613中時),不存儲消息,而在計算期間(在計算部件612處的第一計算期間和在計算部件615處的第二計算期間),不進行計算。
如果將桶式(barrel)移位器用于圖16A和16B的循環(huán)移位電路314和320、圖18的循環(huán)移位電路411和414、以及圖26的循環(huán)移位電路611和614,則可以在減小電路規(guī)模的同時實現(xiàn)所希望的操作。
在上述情況中,出于描述簡單的原因,將p為5,即形成校驗矩陣的子矩陣的行數目和計算數目為5的情況用作示例。子矩陣的行數目和列數目不一定為5,并且可以根據校驗矩陣而取不同的值。例如,p可以為360或392。
此外,在本實施例中,使用了碼長度為90和編碼率為2/3的LDPC碼。然而,碼長度和編碼率可以是任意值。例如,當子矩陣的行數目和列數目p為5時,如果棱的總數目小于或等于5,則可以通過只改變控制信號,使用圖16A至16C的解碼設備300、圖18的解碼設備400、和圖26的解碼設備600來將甚至是任意碼長度和編碼率的LDPC碼解碼。
此外,用于滿足一定條件的某種LDPC碼的解碼設備能夠將滿足該條件的所希望的任意編碼率和任意碼長度的LDPC碼解碼,其中,所述條件為子矩陣的行數目和列數目p為預定值,并且棱的總數目小于或等于特定值。
當校驗矩陣不是子矩陣的行和列數目p的倍數時,可以通過將全為0的元素分配到校驗矩陣的部分(fraction)之外而假設校驗矩陣是p的倍數,來應用本發(fā)明。
接下來,可以利用硬件來進行上述過程序列,并且,也可以利用軟件來進行該過程序列。當利用軟件來進行該過程序列時,將形成此軟件的程序安裝到通用計算機等中。
相應地,圖34示出安裝了用于執(zhí)行上述過程序列的程序的計算機的實施例的結構示例。
可以將程序事先記錄在合并在計算機內的充當記錄介質的硬盤905和RAM 903中。
可替換地,可以將程序臨時或永久存儲(記錄)在諸如軟盤、CD-ROM(致密盤只讀存儲器)、MO(磁光)盤、DVD(數字多用途盤)、磁盤或半導體存儲器的可移動記錄介質911中??梢宰鳛樗^的打包軟件來提供這樣的可移動記錄介質911。
除了從諸如上面所述的可移動記錄介質911安裝到計算機中以外,可以以無線的方式將程序從下載站點通過用于數字衛(wèi)星廣播的人造衛(wèi)星傳遞到計算機,或者可以將程序通過諸如LAN(局域網)或因特網的網絡有線地傳遞到計算機。在計算機中,可以在通信部件908處接收以這種方式傳遞的程序,并將其安裝到其中包含的硬盤905中。
計算機合并了CPU(中央處理單元)902。輸入/輸出接口910通過總線901連接到CPU 902。當用戶通過操作包括鍵盤、鼠標、麥克風等的輸入部件907而經由輸入/輸出接口910輸入指令時,CPU902根據該指令執(zhí)行存儲在ROM(只讀存儲器)903中的程序??商鎿Q地,CPU 902將以下程序加載到RAM(隨機存取存儲器)904中,并且CPU 902執(zhí)行該程序,其中,所述程序為存儲在硬盤905中的程序;從衛(wèi)星或網絡傳遞、由通信部件908接收并被安裝到硬盤905中的程序;或者從裝載在驅動器909中的可移動記錄介質911讀取、并被安裝到硬盤905中的程序。因此,CPU 902進行根據上述流程圖的處理或根據上述方框圖的處理。然后,例如,CPU 902從包括LCD(液晶顯示器)、揚聲器等的輸出部件906、通過輸入/輸出接口910輸出處理結果,從通信部件908傳送處理結果,并按照所需而進一步將它記錄在硬盤905中。
在本說明書中,不需要根據作為流程圖寫出的順序來以時間順序執(zhí)行寫入用于使計算機能夠進行各種處理的程序的處理步驟。此外,可以同時或單獨地執(zhí)行它們(例如,并行處理或基于對象的處理)。
所述程序可利用一臺計算機處理,或者可由多臺分布式計算機處理。此外,可以將程序傳遞到遠程計算機并且可以在那里進行處理。
對于將具有可由以下矩陣的組合代表的校驗矩陣的LDPC碼解碼,采用了用于同時進行p個校驗節(jié)點計算和p個可變節(jié)點計算的架構,其中,所述矩陣為(P×P)單位矩陣;準單位矩陣,其中用0代替了作為單位矩陣元素的一個或更多1;移位矩陣,其中單位矩陣或準單位矩陣被循環(huán)移位;和矩陣,其為單位矩陣、準單位矩陣、和移位矩陣的兩個或更多的和;以及(P×P)0矩陣。因此,通過同時進行p個節(jié)點計算,可以將操作頻率限制在可行的范圍內。這樣,盡管可以進行大量迭代解碼,但是,有可能防止在從存儲器(FIFO和RAM)讀取和寫入到存儲器(FIFO和RAM)期間對不同地址的同時訪問發(fā)生。
當通過重復使用圖16A至16C的解碼設備300來將由圖15的校驗矩陣代表的LDPC碼解碼時,有可能以對每個校驗節(jié)點和每個可變節(jié)點每5條棱的方式對269條棱進行計算。因此,對于一次解碼,解碼設備需要進行269/5×2≈108次時鐘操作。因此,為了進行50次解碼,當接收到90個碼信息時,解碼設備需要進行108×50=5400次時鐘操作,因而可以使用近似為接收頻率60倍高的操作頻率。因此,根據圖16A至16C的解碼設備,當與圖9的用于依次進行節(jié)點計算的解碼設備相比較時,只需要1/5的操作頻率。當從電路規(guī)模的方面看時,由于存儲器大小相同,因此,即使邏輯電路稍微變大,對整體的影響也是小的。
圖18的解碼設備400和圖26的解碼設備600具有小于圖16A至16C的解碼設備300的存儲容量的存儲容量。
例如,當LDPC碼的校驗矩陣為圖15的校驗矩陣、并且LDPC碼的量化位數目為6時,在圖16A至16C的解碼設備300中,棱數據存儲器需要兩個具有269(棱的總數目)×6=1614位的容量的RAM,即,對于兩個RAM,需要1614×2=3228位的容量。作為比較,例如,當解碼中間結果v的量化位數目為9時,在圖18的解碼設備400中,需要給用于存儲解碼中間結果的存儲器413提供具有棱的總數目的1614位容量的RAM,并且需要給用于存儲解碼中間結果的存儲器410提供這樣的RAM,其具有LDPC碼的碼長度(校驗矩陣的列數目)和解碼中間結果v的量化位數目的相乘值的容量,即90×9=810位的容量。這樣,可以減小解碼設備的電路規(guī)模。此外,在圖18的解碼設備400中,由于用于進行第二計算的計算部件415沒有必要具有FIFO存儲器,因此,可以減小邏輯的電路規(guī)模。
此外,例如,當LDPC碼的校驗矩陣是圖15的校驗矩陣、并且解碼中間結果v的量化位數目為10時,在圖26的解碼設備600中,需要給用于存儲解碼中間結果的存儲器610提供具有棱的總數目的1614位容量的RAM,并且需要給用于存儲解碼中間結果的存儲器613提供這樣的RAM,其具有校驗矩陣的行數目和解碼中間結果v的相乘值的容量,即30×10=300位的容量。這樣,可以減小解碼設備的電路規(guī)模。此外,在圖26的解碼設備600中,由于用于進行第一計算的計算部件612沒有必要具有FIFO存儲器,因此,可以減小邏輯的電路規(guī)模。
一般而言,由于LDPC碼的碼長度大到數千至數萬,因此使用p值大小為數百的LDPC碼。在該情況中,使用根據本發(fā)明的解碼設備的優(yōu)點增加。
此外,由于根據本發(fā)明的解碼設備如實地實現(xiàn)和積算法,因此不會出現(xiàn)除消息量化之外的解碼損失。
工業(yè)適用性 根據上述觀點,通過使用根據本發(fā)明的解碼設備,高性能解碼變得有可能。
權利要求
1.一種用于將低密度奇偶校驗LDPC碼解碼的解碼設備,所述LDPC碼通過由多個子矩陣組成的校驗矩陣來表示,所述子矩陣包括P×P單位矩陣、準單位矩陣、移位矩陣、和矩陣、以及P×P0矩陣,其中準單位矩陣是具有用0代替了一個或更多1的單位矩陣,移位矩陣是被循環(huán)移位的單位矩陣或準單位矩陣,和矩陣是所述單位矩陣、所述準單位矩陣、和所述移位矩陣中的兩個或更多的和,所述解碼設備包括
第一計算部件,用于同時進行用于將所述LDPC碼解碼的P個校驗節(jié)點計算;
第二計算部件,用于同時進行用于將所述LDPC碼解碼的P個可變節(jié)點計算;和
消息存儲部件,用于讀取和寫入對應于P條棱的消息數據,所述消息數據是作為所述P校驗節(jié)點計算或者所述P可變節(jié)點計算的結果而獲得的;
其中,對于其權重為2或更大的子矩陣,所述消息存儲部件將對應于P條棱的消息數據存儲在相同地址處,所述P條棱屬于相加起來形成其權重為2或更大的所述子矩陣的每個單位矩陣、準單位矩陣和/或移位矩陣。
2.根據權利要求1的解碼設備,其中,所述第一計算部件具有用于進行校驗節(jié)點計算的P個校驗節(jié)點計算器,以及
所述第二計算部件具有用于進行可變節(jié)點計算的P個可變節(jié)點計算器。
3.根據權利要求1的解碼設備,其中,所述消息存儲部件存儲在校驗節(jié)點計算期間以在行方向上將校驗矩陣的1充填得更加緊密這樣的方式來讀取的對應于棱的消息數據。
4.根據權利要求1的解碼設備,其中,所述消息存儲部件存儲在可變節(jié)點計算期間以在列方向上將校驗矩陣的1充填得更加緊密這樣的方式來讀取的對應于棱的消息數據。
5.根據權利要求1的解碼設備,其中所述消息存儲部件包括行數/P個先進先出FIFO和列數/P個FIFO,以及
所述行數/P個FIFO和所述列數/P個FIFO每一個都具有分別對應于所述校驗矩陣的行權重和列權重的多個字。
6.根據權利要求1的解碼設備,其中,所述消息存儲部件包括隨機存取存儲器,以及
所述隨機存取存儲器按照將所述消息數據充填得更加緊密這樣的方式、以讀出順序存儲所述消息數據,并以存儲位置順序讀取所述消息數據。
7.根據權利要求1的解碼設備,還包括
接收信息存儲部件,用于存儲所接收的LDPC碼的信息,以及同時讀取P個所述所接收信息。
8.根據權利要求7的解碼設備,其中,所述接收信息存儲部件按照這樣的方式來存儲所述接收信息,該方式為可按照所述可變節(jié)點計算所必需的順序來讀取所接收信息。
9.根據權利要求1的解碼設備,還包括
重新排列部件,用于重新排列作為所述P個校驗節(jié)點計算或所述P個可變節(jié)點計算的結果而獲得的消息。
10.根據權利要求9的解碼設備,其中,所述重新排列部件包括桶式移位器。
11.根據權利要求1的解碼設備,其中,所述第一計算部件和所述第二計算部件確定對應于P條棱的消息。
12.一種用于將低密度奇偶校驗LDPC碼解碼的解碼設備,所述LDPC碼通過由多個子矩陣組成的校驗矩陣來表示,所述子矩陣包括P×P單位矩陣、準單位矩陣、移位矩陣、和矩陣、以及P×P0矩陣,其中準單位矩陣是具有用0代替了一個或更多1的單位矩陣,移位矩陣是被循環(huán)移位的單位矩陣或準單位矩陣,和矩陣是所述單位矩陣、所述準單位矩陣、和所述移位矩陣中的兩個或更多的和,所述解碼設備包括
第一計算部件,用于同時進行用于將所述LDPC碼解碼的P個校驗節(jié)點計算;
第二計算部件,用于同時進行用于將所述LDPC碼解碼的P個可變節(jié)點計算;和
消息存儲部件,用于讀取和寫入對應于P條棱的消息數據,所述消息數據是作為所述P校驗節(jié)點計算或者所述P可變節(jié)點計算的結果而獲得的;
其中,對于由準單位矩陣組成的子矩陣,所述消息存儲部件將對應于P條棱的消息數據存儲在相同地址處,所述P條棱屬于相加起來形成由準單位矩陣組成的所述子矩陣的每個單位矩陣、準單位矩陣和/或移位矩陣。
13.根據權利要求12的解碼設備,其中,所述第一計算部件具有用于進行校驗節(jié)點計算的P個校驗節(jié)點計算器,以及
所述第二計算部件具有用于進行可變節(jié)點計算的P個可變節(jié)點計算器。
14.根據權利要求12的解碼設備,其中,所述消息存儲部件存儲在校驗節(jié)點計算期間以在行方向上將校驗矩陣的1充填得更加緊密這樣的方式來讀取的對應于棱的消息數據。
15.根據權利要求12的解碼設備,其中,所述消息存儲部件存儲在可變節(jié)點計算期間以在列方向上將校驗矩陣的1充填得更加緊密這樣的方式來讀取的對應于棱的消息數據。
16.根據權利要求12的解碼設備,其中所述消息存儲部件包括行數/P個先進先出FIFO和列數/P個FIFO,以及
所述行數/P個FIFO和所述列數/P個FIFO每一個都具有分別對應于所述校驗矩陣的行權重和列權重的多個字。
17.根據權利要求12的解碼設備,其中,所述消息存儲部件包括隨機存取存儲器,以及
所述隨機存取存儲器按照將所述消息數據充填得更加緊密這樣的方式、以讀出順序存儲所述消息數據,并以存儲位置順序讀取所述消息數據。
18.根據權利要求12的解碼設備,還包括
接收信息存儲部件,用于存儲所接收的LDPC碼的信息,以及同時讀取P個所述所接收信息。
19.根據權利要求18的解碼設備,其中,所述接收信息存儲部件按照這樣的方式來存儲所述接收信息,該方式為可按照所述可變節(jié)點計算所必需的順序來讀取所接收信息。
20.根據權利要求12的解碼設備,還包括
重新排列部件,用于重新排列作為所述P個校驗節(jié)點計算或所述P個可變節(jié)點計算的結果而獲得的消息。
21.根據權利要求20的解碼設備,其中,所述重新排列部件包括桶式移位器。
22.根據權利要求12的解碼設備,其中,所述第一計算部件和所述第二計算部件確定對應于P條棱的消息。
全文摘要
提供一種用于實現(xiàn)LDPC碼解碼的解碼裝置、解碼方法和解碼程序,其能夠限制電路尺寸、將操作頻率限制到足夠可行的范圍內、并容易地控制存儲器訪問。LDPC碼的校驗矩陣由p×p單位矩陣、一個或更多1變?yōu)?的單位矩陣、它們的循環(huán)移位、它們的和、以及p×p的0矩陣的組合組成。在可變節(jié)點計算部件(319)同時進行P個可變節(jié)點計算的同時,校驗節(jié)點計算部件(313)同時進行P個校驗節(jié)點計算。
文檔編號H03M13/09GK101567699SQ200910147019
公開日2009年10月28日 申請日期2004年4月19日 優(yōu)先權日2003年5月13日
發(fā)明者橫川峰志, 宮內俊之, 飯?zhí)锟挡?申請人:索尼株式會社