專利名稱:Ldpc編碼方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及為了利于錯誤檢測和/或糾正的目的,用于編碼數(shù)據(jù)的方法和裝置, 例如,通過使用諸如低密度奇偶校驗(LDPC)碼的奇偶校驗碼。
背景技術(shù):
在通信和數(shù)據(jù)存儲系統(tǒng)中,糾錯碼是普遍存在的。通過在數(shù)據(jù)流中引入冗余,糾錯 碼補償在這些系統(tǒng)中信息傳遞的固有不可靠性。近來在已知為低密度奇偶校驗(LDPC)碼 的碼類中產(chǎn)生了相當(dāng)大的興趣??勺C明LDPC碼是好碼。在各種信道上,已經(jīng)證實LDPC碼 真正接近于信道容量-由克勞德.香農(nóng)創(chuàng)建的傳輸上限。通常由稱作Tarmer圖的二分圖來表示LDPC碼,其中,一組節(jié)點,即變量節(jié)點,對應(yīng) 于碼字的比特,并且另一組節(jié)點,即約束節(jié)點,有時也稱為校驗節(jié)點,對應(yīng)于一組用于定義 碼的奇偶校驗約束。圖中的邊將變量節(jié)點連接到約束節(jié)點。如果變量節(jié)點與約束節(jié)點由圖 中的邊連接,那么它們被稱作鄰居。當(dāng)且僅當(dāng)對于每個約束節(jié)點,與約束(經(jīng)由與這些比特相關(guān)聯(lián)的變量節(jié)點)相鄰 的比特的模二和為零時,即,它們包括偶數(shù)個一時,那么與變量節(jié)點一一相關(guān)聯(lián)的比特序列 是碼的碼字。圖1示出了示例性二分圖100,其確定示例性的長為十以及二分之一速率的(3,6) 規(guī)則LDPC碼。長度十表明存在十個變量節(jié)AV1-Vltl,每個由碼字X1-Xltl的一個比特標(biāo)識。在 圖1中,通過參考數(shù)字102標(biāo)識該組變量節(jié)點V1-Vltlt5 二分之一速率表明存在變量節(jié)點一半 的校驗節(jié)點,例如,存在通過參考數(shù)字106標(biāo)識的五個校驗節(jié)點C1-C5。二分之一速率進(jìn)一步 表明五個約束是線性獨立的。示例性二分圖100包括邊104,其中,示例性(3,6)規(guī)則LDPC 碼具有連接到每個變量節(jié)點的3條邊和連接到每個約束節(jié)點的6條邊以及任意兩個節(jié)點之 間的最多一條邊。盡管圖1說明了與長為10的碼相關(guān)聯(lián)的圖,但是能理解,表示長為1000的碼字的 圖將復(fù)雜100倍。LDPC碼Tarmer圖表示的替代是諸如圖2的圖200中示出的奇偶校驗矩陣表示。 在這種碼表示中,通常稱為奇偶校驗矩陣的矩陣H 202包括相應(yīng)的邊連接、變量節(jié)點以及 約束節(jié)點信息。在矩陣H 202中,每列對應(yīng)于變量節(jié)點之一,而每行對應(yīng)于約束節(jié)點之一。 因為在示例性碼中存在10個變量節(jié)點和5個約束節(jié)點,因此矩陣H 202包括10列及5行。 如果在圖中出現(xiàn)邊,即,如果兩個節(jié)點是鄰居,那么將對應(yīng)于特定變量節(jié)點和特定約束節(jié)點 的矩陣202中的項設(shè)置為1,否則,設(shè)置為0。例如,因為由邊將變量節(jié)點V1連到約束節(jié)點 C1,因此,將一設(shè)置在矩陣202的最左上角。然而,變量節(jié)點V5沒有連到約束節(jié)點C1,因此將 0設(shè)置在矩陣202的第一行的第五個位置,這表明沒有連接對應(yīng)的可變及約束節(jié)點。我們說,如果H 202的行在GF[2]上是線性獨立的向量,那么約束是線性獨立的,其中GF[2]是 二進(jìn)制伽羅瓦域。在矩陣表示的情況下,將被發(fā)送的碼字X能表示為向量204,向量204包括將被處 理的碼字的比特XfXn。當(dāng)且僅當(dāng)矩陣202與矩陣204的乘積等于零時,即HX = 0,比特序 列X1-Xn是一個碼字。編碼LDPC碼指的是從一組信息比特中產(chǎn)生碼字的過程。通過預(yù)處理LDPC圖表示 或矩陣表示,在實際編碼前能確定對應(yīng)于信息比特的一組變量節(jié)點。為了建立通用LDPC碼的編碼器,第一步是要找到H的行和列的置換 (permutation),因此,相當(dāng)于重排序,我們能把mXn矩陣H劃分成如下的子矩陣 其中,T是txt上三角子矩陣,即,在主對角線以下的所有項都是零,E是gXt子 矩陣,A是tXg,C是gXg,B是gX (n-m),D是gX (n-m)并且t+g = m。此夕卜,gXg矩陣
是可逆的(我們這里假設(shè)H是行滿秩)。然后如下繼續(xù)編碼。給定信息比特Xs,為了編碼碼字
使用回 代,對于y,我們首先解 對于JC&,接下來我們解 對于這步,預(yù)先計算矩陣ΦΛ最后,使用回代,對于解 向量ΧΡ2 xs「組成碼字。盡管編碼效率和高數(shù)據(jù)率是重要的,但對于在例如消費設(shè)備的廣泛設(shè)備范圍中使 用的實用性的編碼系統(tǒng),編碼器能夠以合理的成本實現(xiàn)是重要的。因此,例如在硬件成本方 面,高效地實現(xiàn)用于錯誤糾正和/或檢測目的的編碼方案的能力,是重要的考慮。考慮上述的討論,應(yīng)該理解,存在針對用于實現(xiàn)LDPC碼高效體系結(jié)構(gòu)的編碼器裝 置和方法的需要。允許重用相同硬件以編碼不同長度碼字的裝置和方法將是有益的和期望 的。這是因為它將允許在編碼器使用期間更大的靈活性,并且允許使用不同尺寸碼字來編 碼不同組數(shù)據(jù),因此在不需要多個編碼器支持這樣靈活性的情況下,允許為特定的編碼應(yīng) 用,例如,通信會話或數(shù)據(jù)存儲應(yīng)用,來選擇碼字尺寸。
發(fā)明內(nèi)容
本發(fā)明針對編碼方法和裝置,例如,用于實現(xiàn)低密度奇偶校驗(LDPC)編碼器的方 法和裝置。本發(fā)明的各個實施例針對允許使用單個編碼器來編碼不同長度碼字的特別靈活 的編碼器。這允許本發(fā)明的LDPC編碼器在編碼用于例如第一通信應(yīng)用或數(shù)據(jù)存儲應(yīng)用這 樣的第一應(yīng)用的第一長度碼字,和編碼用于第二應(yīng)用的第二長度碼字之間切換。實際上,使用相同硬件能支持很多種碼字長度,該相同硬件允許通過對編碼器中使用的碼字描述的簡 單修改來改變碼字長度。在相對簡單的微碼中可以反映碼字描述,該微碼被執(zhí)行來滿足特 定應(yīng)用的需要。本發(fā)明的編碼器能儲存對應(yīng)于不同碼結(jié)構(gòu)的多組微碼。當(dāng)選擇碼結(jié)構(gòu)以用于編碼 時,就選擇相應(yīng)的微碼,并且生成對應(yīng)于所選碼結(jié)構(gòu)的特定長度的碼字。對于給定的碼結(jié) 構(gòu),通過選擇不同的碼提升因子,可以生成不同長度的碼字。使用比最大可支持碼提升因子 小的碼提升因子,通常會導(dǎo)致在編碼器存儲器中沒有使用一些存儲單元,例如塊存儲單元。 通常由最大可支持碼字尺寸確定在存儲器中提供的塊存儲單元的數(shù)量。本發(fā)明的編碼器能在不同的提升因子間切換,因此,這允許編碼器在生成不同長 度的碼字間切換。因此,本發(fā)明的編碼器能用于生成很適合于特定應(yīng)用的長度的碼字,并且 不受硬件產(chǎn)生單一長度碼字的約束。然而,在許多情況下,最大可支持碼字長度取決于在編 碼期間可用于存儲比特塊的存儲器量。對于包括(NXL)比特整數(shù)倍直到最大值K倍的不同尺寸的碼字,最大可支持碼字 尺寸可以是KXNXL比特,其中K、N和L都是正整數(shù)。本發(fā)明的編碼器特別適合編碼依據(jù)用于定義碼并擁有特定分層結(jié)構(gòu)的LDPC圖生 成的碼字,其中,在很大程度上,整個LDPC圖看起來是由多個副本組成,例如Z個較小的圖 組成。Z個圖副本可以是,但不需要是相同的。為了解釋本發(fā)明的目的,我們將把所述較小 的圖稱為投影圖,把全圖稱為提升圖,并把Z稱為提升因子。因此,投影圖用作生成或描述 較大提升圖的基礎(chǔ),其中,提升圖描述了用于控制編碼的碼結(jié)構(gòu)。考慮通過1,...,j,...Ζ來索引投影LDPC圖,其中j是用作投影圖索引的整數(shù), 并且ζ是用于定義提升圖的投影圖總數(shù)。在通過簡單地復(fù)制投影圖Z次來生成提升圖的嚴(yán) 格并行圖中,圖j中的變量節(jié)點僅連接到圖j中的約束節(jié)點。即,在用于形成較大提升圖的 投影圖的邊之間,不存在相互影響。本發(fā)明的編碼器不受限制于此。根據(jù)本發(fā)明,可能取一條向量邊,其包括每條邊來 自Z個圖副本的每一個的對應(yīng)邊,并允許在Z條邊內(nèi)的置換,例如,我們準(zhǔn)許置換對應(yīng)于該 待置換向量邊內(nèi)的邊的約束節(jié)點,例如,重排序。我們把置換限制在標(biāo)記為Ψ的ZXZ置換矩陣集合(通常是群)空間內(nèi)。因此, 這里將使用Ψ來指通常是置換矩陣群的置換矩陣集合。我們假設(shè)Ψ中置換的逆還在Ψ 中。通常能使用各種準(zhǔn)則來選擇Ψ集合。上面結(jié)構(gòu)的主要目的之一是要簡化解碼器和編 碼器的硬件實現(xiàn)。因此,把Ψ限制為能在硬件中高效實現(xiàn)的置換是有益的,例如,在交換網(wǎng) 中。根據(jù)本發(fā)明,并且在各個實施例中,LDPC編碼過程被展開為矩陣加法及乘法操作 的有序序列,該LDPC編碼過程可以轉(zhuǎn)化為一系列命令。為了描述的方便,我們把示例性圖G 的這一系列編碼命令標(biāo)記為G的編碼微碼。然后,使用本發(fā)明的編碼器,通過順序執(zhí)行G的 微碼來完成實際編碼,該編碼器根據(jù)在預(yù)先裝載了例如將被編碼的比特這樣的信息比特的 物理存儲器上的微碼,執(zhí)行各種操作。每個命令包括操作符op和存儲單元指示符。根據(jù)操 作符ορ,編碼器控制邏輯讀出位于由存儲單元指示符確定的存儲器中的比特單元,并把它 累加到寄存器,或者把寄存器值寫到存儲單元a并把寄存器值復(fù)位為零。微碼的尺寸,即, 其內(nèi)的命令數(shù),至少等于圖G中的邊數(shù);通常,他們大致相同。
考慮具有提升因子Z的提升LDPC圖。給定將用于形成較大圖的小的、投影的圖, 例如,投影圖,通過用ZXZ矩陣替代H中的每個元素,我們能形成Z倍大的LDPC圖。用標(biāo) 記為0的零矩陣替代H中的元素0。用來自Ψ的矩陣替代H中的每個元素1。在這種方式 下,我們將LDPC圖“提升”到Z倍大。表示的復(fù)雜度大致包括指定置換矩陣所需要的比特 數(shù),|ΕΗ| οδ|ψ加上表示H所需要的復(fù)雜度,其中IehI標(biāo)記η中一⑴的數(shù)量,并且|ψ 標(biāo)記ψ中不同置換數(shù)。例如,如果ψ是循環(huán)置換的空間,那么I ψ I = ζ。實際上,我們可 以有,例如,對于η 1000,Z= 16,其中η是碼字塊長度。下面示出了提升小奇偶校驗矩 陣H的例子,其中,利用投影圖來替換H中每個是一的元素,來產(chǎn)生在右面示出的較大的投 影矩陣H。
在矩陣H中,σ ii1,·..,16是這里示出的從變量節(jié)點側(cè)索引的ψ的元素(矩陣)。讓我們回憶,當(dāng)且僅當(dāng)Hx = 0時,向量χ是碼字。在提升矩陣表示中,把χ看作 GF(2"Z)中元素的向量,替代二進(jìn)制元素的向量,其中GF(2~Z)是2~Z個元素的伽羅瓦域。 就此而論,可以模仿作為在背景部分展開的矩陣_向量乘法和向量加法的編碼過程投影 圖中的矩陣中的每個非零元素1由它的相應(yīng)ZXZ置換矩陣替代;向量中的每個比特由Z比 特向量替代。使用G作為投影圖的LDPC圖的編碼過程大部分被指定為上述用于投影圖的編碼 過程的提升。這通過將原始算法中的比特操作替換為提升算法中的比特向量操作來完成。 在編碼處理中的一個或多個點,在從存儲器讀出后,Z比特向量經(jīng)受置換操作,例如,重排序 操作。重排序操作可以是旋轉(zhuǎn)操作,或簡稱旋轉(zhuǎn)。這些旋轉(zhuǎn)操作通常對應(yīng)于與向量邊相關(guān) 聯(lián)的旋轉(zhuǎn),該向量邊互連投影圖的Z個副本以形成單個大圖。因此,在提升的微碼中,每個 命令包括操作符OP、旋轉(zhuǎn)數(shù)r、以及存儲單元指示符。提升投影圖的微碼在很大程度上指定了用于提升圖的編碼。一個例外是,在投影 圖中存在矩陣求逆,即用于計算矩陣ΦΛ在這樣的情況下,該求逆不直接提升到提升圖中 的矩陣求逆。而是,在ZXZ置換矩陣的環(huán)中完成矩陣求逆,并且對應(yīng)的編碼命令產(chǎn)生一組 指定矩陣求逆的新命令。在那些命令中,在適當(dāng)?shù)腖DPC表示預(yù)處理之后,需要的旋轉(zhuǎn)是顯 然的。因此,根據(jù)本發(fā)明用于描述提示圖的微碼尺寸大致等于投影圖中邊的數(shù)量加上通 常很小的指定求逆的附加命令的數(shù)量。因此,對于相同塊長度,增加提升因子通常會減少編 碼微碼的尺寸。對于大的塊長度,這可以顯著節(jié)省微碼描述存儲器,例如,相對小的存儲器 可用于存儲描述將用于編碼的大圖的信息。在實際通信或數(shù)據(jù)存儲系統(tǒng)中,通常要求編碼器的吞吐量匹配解碼器的吞吐量。 對于具有提升因子Z的提升圖,對編碼器和解碼器實現(xiàn)硬件并行度Z,通常產(chǎn)生的編碼器吞 吐量比為了匹配解碼器吞吐量所需的編碼器吞吐量高,因為解碼器需要多幾個的迭代來收斂,例如,完成碼字的解碼?;诎l(fā)明者提供的這個啟示,應(yīng)該理解,在給定時間周期處理的碼字?jǐn)?shù)量方面,期 望編碼器使用比解碼器小的實現(xiàn)并行度,并達(dá)到相同吞吐量,利用本發(fā)明這是可能的。對于另一個實例,在描述大圖時使用大的提升因子Z實現(xiàn)上面提到的節(jié)省存儲器 的好處的情況下,使用實現(xiàn)并行度Z引起高的并行單元數(shù),生成過度的吞吐量。給定硬件復(fù)雜度正比于實現(xiàn)并行度N而圖描述復(fù)雜度正比于提升因子Z的事實 下,期望當(dāng)使用以大提升因子Z描述的提升圖時,由實現(xiàn)并行度得到的吞吐量匹配需求,但 不過度。本發(fā)明的各種特征針對使用描述具有提升因子Z的提升圖的微碼,實現(xiàn)具有實現(xiàn) 并行度N的向量LDPC編碼器的方法和裝置,其中,N是Z的除數(shù)。選擇實現(xiàn)并行度N以匹 配所需吞吐量,因此使用最小硬件復(fù)雜性。此外,根據(jù)本發(fā)明,具有實現(xiàn)并行度N的向量LDPC編碼器能夠根據(jù)描述具有提升 因子Z的提升圖的相同微碼,生成例如編碼數(shù)據(jù),以產(chǎn)生對應(yīng)于一類具有相同速率但不同 塊尺寸的LDPC碼的碼字。特別地,作為實例,假定Z可用因子分解SK1XK2XN,并且投影圖 具有η個變量節(jié)點,則新穎編碼器可以生成不同碼字尺寸NXn,K2XNXn以及K1XK2XNXn 的三個不同碼。因此,使用本發(fā)明編碼器的設(shè)備能,并且經(jīng)常,根據(jù)應(yīng)用,在使用存儲的微碼中描 述的不同圖進(jìn)行編碼之間切換,使得生成的碼字是適于特定應(yīng)用的塊尺寸。例如,可以生成 用于無線通信的第一尺寸的碼字,而且可以生成用于光纖通信目的的第二尺寸的碼字。
圖1說明了長度為十的示例性規(guī)則LDPC碼的二分圖表示。圖2是圖1中以圖說明的碼的矩陣表示。圖3說明了根據(jù)本發(fā)明實現(xiàn)的示例性編碼器,并且也說明了根據(jù)本發(fā)明的編碼方 法生成的編碼器內(nèi)的各種信號和信息的流程。圖4說明了例如移動節(jié)點的設(shè)備,其使用根據(jù)本發(fā)明實現(xiàn)的可編程LDPC編碼器。圖5包含圖5Α和圖5Β的結(jié)合,是運行根據(jù)本發(fā)明實現(xiàn)的示例性通信設(shè)備以執(zhí)行 根據(jù)本發(fā)明的編碼和解碼的示例性方法的流程圖。
具體實施例方式本發(fā)明針對用于實現(xiàn)LDPC編碼器的方法和裝置。本發(fā)明的各個實施例針對LDPC 編碼器和編碼方法,該LDPC編碼器和編碼方法能以硬件高效的方式實現(xiàn),同時關(guān)于能在編 碼期間使用的碼結(jié)構(gòu)和生成的碼字尺寸相對靈活。圖3說明了根據(jù)本發(fā)明實現(xiàn)的示例性的LDPC編碼器300。編碼器包括圖3中所示 的耦合在一起的存儲器模塊302、控制模塊312、基于碼提升(lifting)的塊選擇模塊310、 N元素可控制置換器304、N元素向量累加器模塊306以及可控制存儲設(shè)備308。注意,在本 應(yīng)用中術(shù)語置換器和變換器被交替使用來指相同的事物。以下將會詳細(xì)地描述LDPC編碼 器300的各個單元和它們的功能。如上所討論,使用不同的碼描述和/或?qū)τ谙嗤拇a描述使用由不同提升因子指示的不同碼字長度,本發(fā)明的編碼器300能支持不同的碼。存儲器模塊302包括一組 KXNXL存儲單元(318、320、322),其中,KXNXL是最大可支持的碼字尺寸。輸入301允 許將被編碼的數(shù)據(jù)寫入所述存儲器。一旦編碼完成時,輸出303允許儲存在存儲器314中 的碼字被讀出。存儲器模塊302還包括用于儲存臨時值的一組KXNXl個存儲單元(319、 321、323)。其他實施例可以不需要和不使用臨時存儲值。使用存儲器314也能支持較小尺 寸的碼字。將存儲器314中的存儲單元排列成用于儲存碼字值的K個NXL塊Blk 1 318、 Blk 2 320、Blk K 322,以及用于儲存臨時值的 K 個 NX 1 Blk 1 319、Blk 2 321、Blk K 323。KXNXL個存儲單元中的每個存儲單元通常是1比特。KXNX 1個存儲單元中的每個 存儲單元通常也是1比特。存儲器尋址邏輯316控制從存儲器314的存儲單元讀以及向存 儲器314的存儲單元寫,該存儲器尋址邏輯316響應(yīng)于其他存儲器組件生成的各種輸入生 成存儲器訪問信號324 (地址和讀/寫信號)。通常一次從存儲器模塊314中讀或?qū)慛個 比特。N比特寬總線340將存儲器模塊302的N比特寬讀輸出耦合到N元素可控制置換器 304的N比特寬輸入,其中,在通過N比特寬總線342將比特提供給N元素向量累加器306 前,N元素可控制置換器304能重排序比特。N元素可控制置換器304接收重排序控制信號 r2 373,其是根據(jù)所儲存的碼描述信息,例如,諸如微碼的控制碼,生成的。在比特被提供給 N元素向量累加器模塊306前,如果需要,信號r2 373控制對從存儲器獲得的N個比特將要 執(zhí)行什么樣的比特重排序。N元素向量累加器模塊306包括并行排列的N個累加器電路。N個累加器電路中 的每個生成來自N元素可控制置換器304的N個輸入比特中的一個以及對應(yīng)的從可控制存 儲設(shè)備308讀出的N個比特中的一個的一比特模二和。這是執(zhí)行XOR操作有效的方法。因 此,每個累加器電路執(zhí)行一個XOR操作。在這種方式中,N元素向量累加器306并行地生成 N個累加值。由累加器模塊306生成的N個值通過N比特寬總線344被并行地提供給可控 制存儲設(shè)備308??煽刂拼鎯υO(shè)備308包括輸入MUX 328、輸出MUX 308、以及一組K個N比 特寄存器326。當(dāng)讀/寫控制信號350指示向量累加器模塊的輸出將要被儲存到可控制存 儲設(shè)備308時,由塊選擇控制信號360控制輸入MUX 328,以確定將N比特塊寫入到K個N 比特寄存器332、334、336中的哪一個。輸出MUX 330耦合到N比特寬總線346,并且當(dāng)讀/ 寫控制信號350指示將要執(zhí)行讀操作時,輸出MUX 330輸出由塊選擇控制信號360指示的 N比特塊。將從可控制存儲設(shè)備308讀出的每組N個比特提供給存儲器模塊302和N元素 向量累加器模塊306的第二個輸入。例如由存儲的碼描述確定的,在累加器操作序列結(jié)束 時將N比特寫到存儲器??刂颇K312負(fù)責(zé)根據(jù)特定碼描述生成多種控制信號,所述特定碼描述存儲在編 碼器描述信息模塊372中、被選擇在特定時間點使用,例如,諸如微碼的控制碼。在可編程 的實施例中,例如,經(jīng)由輸入371,從設(shè)備主存儲器,能將碼描述信息裝載到所存儲編碼器描 述信息模塊372。在預(yù)裝載和使用單一碼描述的實施例中,例如,對于對應(yīng)于相同碼結(jié)構(gòu)的 不同長度的碼字,可以忽略輸入371。由外環(huán)計數(shù)器374生成的控制信號375來驅(qū)動由編碼 器描述信息模塊372產(chǎn)生的信號的生成。由內(nèi)環(huán)計數(shù)器370生成的內(nèi)環(huán)控制信號377來驅(qū) 動外環(huán)計數(shù)器374。內(nèi)環(huán)計數(shù)器370根據(jù)碼提升因子控制信號SK 348生成第二選擇模塊控 制信號356以及內(nèi)環(huán)控制信號377,其中,碼提升因子控制信號SK 348作為控制值被提供 給內(nèi)環(huán)計數(shù)器370。碼提升因子控制信號用于指定將要生成的碼字的長度,并采取從1到K
8的值,其中K指示在存儲器314中的NXL比特塊的總數(shù)。因此,通過使用不同的碼提升因 子,可以生成不同尺寸的碼字,其中每個不同可支持的碼字尺寸將會是NXL的整數(shù)倍。在 SK < K的情況下,通常不使用存儲器314中的一個或多個塊以及寄存器組326中的一個或 多個寄存器。所存儲編碼器描述信息模塊372包括例如微碼的控制碼。當(dāng)響應(yīng)于外環(huán)控制信號 375執(zhí)行該碼時,這個碼生成由在微碼的執(zhí)行行中包含的op值指定的讀/寫信號350。將 信號350提供給存儲器模塊302和可控制存儲設(shè)備308。所存儲編碼器描述信息模塊372 也生成當(dāng)要執(zhí)行讀/寫操作時提供給存儲器模塊302的存儲器地址控制信號352、提供給 基于碼提升的塊選擇模塊310的第一選擇模塊控制信號rl 354、以及提供給可控制置換器 304以控制對從存儲器模塊302讀出值的重排序的重排序控制信號r2 373?;诖a提升的塊選擇模塊310接收來自所存儲編碼器描述信息模塊372的第一選 擇模塊控制信號rl 354和由內(nèi)環(huán)計數(shù)器370生成的第二選擇模塊控制信號356。基于碼提 升的塊選擇模塊310生成提供給存儲器尋址邏輯316的塊地址選擇信號358,以指示將在特 定時間點訪問的存儲器314的特定塊?;诖a提升的塊選擇模塊310也生成塊選擇控制信 號360,其用于控制哪個信息塊,例如,哪個寄存器332、334、336比特將在特定時間點在可 控制存儲設(shè)備308中被訪問。由公共時鐘信號驅(qū)動編碼器300的各個組件,因此,各種操作和計數(shù)器370、374的 遞增以同步的方式工作。在多個處理相互作用后,作為在所存儲編碼器描述信息模塊372指導(dǎo)下執(zhí)行的編 碼器處理操作以及存儲器訪問操作的結(jié)果,最初存儲在存儲器模塊314中的一組信息比特 將被變換為碼字。這個碼字可以被讀出,并且例如,被發(fā)送或存儲。為了獲得高錯誤復(fù)原級別,通常使用相對長的碼字。例如,通過執(zhí)行編碼操作生成 的單個碼字可以包括總共T個比特,其中T可以是幾百個或甚至幾千個比特。為了解釋本 發(fā)明的目的,應(yīng)該理解將被編碼的比特可以被排列成KXNXL比特向量,其中,N是正整數(shù), 并且K是大于1的正整數(shù)。從存儲器中讀取每個N比特向量。然后能夠并行地使用N個處 理單元處理從存儲器中讀出的向量?,F(xiàn)有系統(tǒng)在編碼器中使用實現(xiàn)并行度N等于Z,該編 碼器使用具有提升因子Z的特定提升LDPC碼來編碼碼字,與現(xiàn)有系統(tǒng)相比,本發(fā)明允許編 碼器中的并行度級別不同于總的所支持的提升因子Z。更特別地,Z = KXN,其中K是大于 1的整數(shù)。因此,根據(jù)本發(fā)明,在各種實現(xiàn)中,并行度N的級別低于提升因子Z。此外,在一 些實施例中,可以使用相同的碼描述信息組能生成不同尺寸的碼字。通過選擇小于最大可 支持提升因子控制值K的碼提升因子控制值SK,對于給定實現(xiàn)可以創(chuàng)建小于最大碼字尺寸 (LXKXN)的碼字。不同尺寸的碼字將會是NXL比特的倍數(shù)。2004 年 2 月 26 日提交的、名為 “METHOD AND APPARATUS FOR PERFORMING LOW-DENSITY PARITY-CHECK (LDPC) CODE OPERATIONS USING A MULTI-LEVEL PERMUTATION” 的美國專利申請S. N. 10/788,115以及相應(yīng)的具有相同標(biāo)題和提交日期的PCT申請PCT/ US2004/005783,在此被明確地引入作為參考。這些專利申請描述了 LDPC碼的乘積提升方 法。這些乘積提升方法將在提升中使用的ZXZ置換矩陣群限定為能被分解成為子群的直 接乘積的群。例如,我們假設(shè)Ψ是三個子群的直接乘積,即,Ψ = Ψ1ΧΨ2ΧΨ3ο Ψ的維 數(shù)等于Wi維數(shù)的乘積,其中Wi是KiXKi置換矩陣群。因此,大的提升可以作為多個小的
9順序提升來實現(xiàn)。假設(shè)群Wi的維數(shù)等于該群內(nèi)矩陣的維數(shù),因此,Z = K1XK2XK3,其中, K1, K2, K3分別是Ψ1; Ψ2,Ψ3的維數(shù)。根據(jù)本發(fā)明,我們將提升群Ψ限定為乘積提升群。如上面提到的,乘積提升能等 同地被看作多維提升。因此,本發(fā)明的當(dāng)前編碼器300使用的提升能作為多維提升實現(xiàn)。假 設(shè)投影碼的尺寸是P,即,具有P個變量節(jié)點??梢赃x擇用于提升的尺寸為64的循環(huán)群。根 據(jù)本發(fā)明,備選是尺寸為16的循環(huán)群和尺寸為4的循環(huán)群的乘積(注意16X4 = 64)。這 個群能由以下表示。使用對(a,b),a = 0,...,15并且b = 0,. . .,3,通過可逆映射L = 4a+b,考慮索引L = 0,. . .,63。這個乘積群的一個元素是一對(c,d),c = 0,. . .,15并且 d = 0,· · ·,3。(c,d)對(a,b)的作用是把對(a,b)置換為(a+c模16,d+b模4)。這個群 也具有階64。然而,得到的提升圖能被解釋為尺寸為4P的碼乘以16、或尺寸為16P的碼乘 以4、或尺寸為P的碼乘以64的提升。在本發(fā)明的編碼器和硬件實現(xiàn)的上下文中,實現(xiàn)由乘積提升提供的各種優(yōu)點。在 編碼器中通過使用乘積提升增加的值是本發(fā)明許多特征之一。由不是乘積的群的提升,例 如,由循環(huán)群的提升,允許任意尺寸的提升,但不能提供乘積提升的靈活性。名為"METHOD AND APPARATUS FOR PERFORMING LOW-DENSITY PARITY-CHECK (LDPC) CODE OPERATIONS USING A MULT I-LEVEL PERMUTATION,,的美國專利申 請S. N. 10/788,115描述了乘積提升圖和使用這些圖的可能益處。通過描述使用提升因子Z = KXN的新穎編碼器300,本發(fā)明擴(kuò)展了在該申請中描 述的一些基本概念。本發(fā)明的各個特征針對用于以靈活但相對硬件高效的方式,利用實現(xiàn) 并行度N來對圖編碼的方法和裝置。當(dāng)N是固定的時,K能被用作提升控制因子,并能指示 將要生成的碼字的尺寸。我們假定具有提升因子Z = KXN的提升LDPC圖。提升群Ψ是乘積提升群Ψ = W1XW2,其中K是群W1的維數(shù),并且N是群屯2的維數(shù)。我們能生成具有提升因子Z的提 升圖的微碼,微碼是一系列命令,其中每個命令包含操作符op、旋轉(zhuǎn)數(shù)r、以及存儲單元a。 使用并行度Z實現(xiàn)的編碼器300用以下方式執(zhí)行每個命令如果op指示讀,那么控制器在 存儲單元a處從存儲器讀Z比特向量,用量r對其重排序,并將重排序的值累加到Z比特寄 存器;如果op指示寫,那么控制器將Z比特寄存器的值寫入存儲器的存儲單元a處。并且 通過執(zhí)行整個系列的命令完成編碼。執(zhí)行的微碼可以存儲在編碼器描述信息模塊372中,除了存儲要被使用的微碼 外,編碼器描述信息模塊372還負(fù)責(zé)訪問并執(zhí)行包含在微碼中的指令。使用并行度N,即,N個并行處理單元,而不是并行度Z = KXN,能獲得執(zhí)行例如本 發(fā)明命令的微碼指令的相同結(jié)果。然而,在我們的N并行實現(xiàn)中,我們執(zhí)行相同的基本命令 K次,每次完成處理Z個比特工作的1/K。為了更好地理解本發(fā)明的編碼過程,讓我們首先考慮一個命令,該命令從存儲單 元a中讀出Z比特向量,并且通過量r重排序,并且然后將重排序的值累加到Z比特寄存 器。我們寫出原始數(shù)據(jù)向量d= (d1,d2,...dk),每個dj是N比特向量,其中j是用作索引 的整數(shù)值。給定提升群是乘積提升Ψ = W1XW2,其中屯工具有維數(shù)K并且屯2具有維數(shù) N,讓我們寫出重排序量r = Ovr2),其中Γι是群W1中的重排序量,例如循環(huán)旋轉(zhuǎn)量,并且 r2是群Ψ2中的重排序量,例如循環(huán)旋轉(zhuǎn)量。我們使用標(biāo)記W1(Cbr)來表示通過量r對群
10Ψ中的向量d (K個元素)的重排序,以及使用標(biāo)記Ψ2((1,r)來表示通過量r對群Ψ2中 的向量d(N個元素)的重排序。也能把重排序認(rèn)為是位置置換,因此,在最初位置j中的元 素…轉(zhuǎn)到在重排序數(shù)據(jù)中標(biāo)記為的新位置。那么能將重排序認(rèn)為是2級重排序過 程。第一級在群Ψ2中對N個(1比特)元素重排序來生成向量d’ = (W2(C^r2), Ψ2((12, r2),. . .,Ψ2 (dk,r2))。然后第二級在群W1中對K個(N比特)元素重排序來生成向量d” zWjd’,!^)。然后將重排序的數(shù)據(jù)d”累加到Z比特寄存器。如以下將要討論的,在圖3 的實現(xiàn)中,Z比特寄存器是作為一組K個N比特寄存器332、334、336實現(xiàn)的。我們現(xiàn)在描述如何將上述提及的使用并行度Z的讀_重排序_累加的單個步驟分 解成為使用并行度N的讀-重排序-累加的K個步驟,以實現(xiàn)諸如LDPC編碼器300的LDPC 編碼器。它是由編碼器300使用的一系列這樣的K個步驟。假設(shè)我們有K個寄存器332、 334、336并假設(shè)將存儲單元a處的Z比特向量d物理排列為K個N比特向量(屯,d2,. . . dK), 其中N比特向量Clj存儲在塊j中的單元a處。如果在步驟j,我們在由a和j確定的地址讀 出數(shù)據(jù)Clj,并例如使用N元素可控制置換器304,通過群Ψ2中的量r2重排序讀出的數(shù)據(jù),生 成W2(C^r2)15然后,我們將重排序的數(shù)據(jù)累加到這K個寄存器332、334、336的第
個寄存器中。這完成了第j步。通過運行j = 1,. . .,k,我們獲得與利用Z比特向量操作 執(zhí)行命令相同的結(jié)果,但是利用較低的編碼器并行度N達(dá)到這個結(jié)果,其中,N < Z。實際上以非常簡單的方式,根據(jù)本發(fā)明,把Z比特寄存器寫到存儲單元a并復(fù)位Z 比特寄存器的命令也能被分解為K步。在步驟j,我們將K個N比特寄存器332、334、336的 第j個寄存器寫到由j和存儲單元a確定的存儲單元,并且復(fù)位該寄存器332、334或336。 通過運行j = 1,. . .,k,我們獲得與利用Z比特向量操作執(zhí)行命令相同的結(jié)果。以上討論在原理上描述了我們?nèi)绾问褂貌⑿卸萅來實現(xiàn)對應(yīng)于提升因子Z的微 碼,例如,儲存在編碼器描述信息模塊372中的微碼。參考圖3,我們現(xiàn)在將更加詳細(xì)地描述用于實現(xiàn)K步編碼過程的示例性編碼器 300,當(dāng)使用Z > N的提升因子Z時,所述K步編碼過程允許并行度N。在圖300中,控制模塊312通過內(nèi)環(huán)計數(shù)器370來控制執(zhí)行命令的步驟數(shù)。在每 個步驟,計數(shù)器370增加1并且在達(dá)到由碼提升因子控制信號348確定的最大計數(shù)時復(fù)位。 每次內(nèi)環(huán)計數(shù)器370到達(dá)最大值時,它觸發(fā)外環(huán)計數(shù)器374增加1。通過訪問所存儲編碼器 描述信息模塊372,外環(huán)計數(shù)器374確定當(dāng)前所執(zhí)行的編碼命令。所存儲編碼器描述信息模 塊372以依據(jù)該命令生成的各種信號的形式輸出該命令,該命令將被應(yīng)用于由外環(huán)計數(shù)器 374確定的存儲單元。命令包含操作符op、重排序量r、以及存儲單元a。操作op指定對存 儲器模塊302的讀/寫信號350,存儲單元a確定耦合到存儲器模塊302的存儲器地址控制 信號352,并且重排序量r分成兩部分Ovr2),每部分分別指定在群W1和Ψ2中的重排序 元素。將信號巧354提供給用于生成塊地址選擇信號358的基于碼提升的塊選擇模塊310, 該塊地址選擇信號358用于控制訪問存儲器模塊302中的哪個存儲塊,同時將信號r2 373 提供給置換器304,以控制對從存儲器302中讀出塊的N個元素的置換。為了接收信號Γι 354,基于碼提升的塊選擇模塊310具有第一選擇模塊控制信 號354,其耦合到來自所述控制模塊312的命令中的重排序量r的^部分。由控制模 塊312的內(nèi)環(huán)計數(shù)器370生成的第二選擇控制信號356驅(qū)動,并由控制信號巧354控 制,基于碼提升的塊選擇模塊310輸出取值從1到K的塊地址選擇信號358,以及取值U1 (2),· · ‘Ψ1,Γ, (K)的塊選擇控制信號360。存儲器模塊302具有耦合到所存儲編碼器描述信息的操作符op輸出的用于接收 讀/寫信號350的輸入,以及用于接收存儲器地址控制信號352的另一個輸入,存儲器地址 控制信號352對應(yīng)于在特定時間點被執(zhí)行的存儲在模塊372中的微碼指令中包含的存儲單元a。存儲器模塊302包括存儲器314,其排列成KX (NXL)個1比特存儲單元318、320、 322以及KX (NXl)個1比特存儲單元319、321、323。為了方便,我們把具有K塊(NXL) 個1比特單元的存儲單元標(biāo)識為用于碼字存儲的塊1,...,K,并且我們把具有K塊(NX 1) 個1比特單元的存儲單元標(biāo)識為用于值的臨時存儲的塊1,. . .,K。在作為存儲地址控制信 號a 352和塊地址選擇信號k 358的函數(shù)的存儲單元處訪問存儲器314。存儲器尋址邏輯 模塊316實現(xiàn)這樣的函數(shù)。給定(a,k),根據(jù)讀/寫信號350指示應(yīng)該執(zhí)行讀還是寫操作, 存儲器模塊302在第k個塊中的單元a上讀或?qū)慛比特向量。存儲器模塊302的讀出操作輸出從存儲器314中讀出的N比特向量340。將這N 比特向量饋入到N元素可控制置換器模塊304。模塊304實現(xiàn)群Ψ2中的重排序;它的重排 序控制信號耦合到所存儲編碼器描述信息模塊372的r2信號輸出。r2信號導(dǎo)出自重排序 數(shù)r,從在特定時間點執(zhí)行的來自信息模塊372的微碼命令獲得在該特定時間點使用的重 排序量r。置換器模塊304的重排序N比特向量輸出耦合到N元素向量累加器模塊306的第 一個N比特向量輸入342。累加器模塊306的第二個N比特向量輸入346是從包括K個N 比特寄存器332、334、336的可控制存儲設(shè)備模塊308饋入的。向量累加器模塊306生成作 為兩個N比特向量輸入的XOR和的N比特向量輸出。在各個實施例中,使用并行排列的N 個XOR電路實現(xiàn)向量累加器模塊306,其中,每個XOR電路耦合到一個不同加法器,該加法器 用于將由N個XOR電路的特定一個產(chǎn)生的XOR操作結(jié)果與最近生成的XOR結(jié)果相加。將累 加器模塊的N比特寬輸出耦合到可控制存儲設(shè)備模塊308的輸入344。可控制存儲設(shè)備模塊308包括K個寄存器,每個寄存器存儲N個比特。耦合到基于 碼提升的塊選擇模塊310的塊選擇控制信號360確定在特定時間點要訪問K個寄存器中的 哪一個。耦合到來自控制模塊312的命令中包含的操作符op的讀/寫控制信號350確定 訪問模式,例如,讀或?qū)懺L問模式。假定塊選擇控制信號360指示j。如果控制信號是讀,則 來自可控制存儲設(shè)備模塊308的N比特輸出向量取第j個寄存器的值,并將來自N元素向 量累加器模塊306的累加值寫到第j個寄存器。換句話說,將來自N元素可控制置換器模 塊304的重排序值累加到由塊選擇控制信號360指示的第j個寄存器。如果讀/寫控制信 號350是寫,輸出向量再次假設(shè)第j個寄存器的值,并且我們?nèi)缓髲?fù)位第j個寄存器為零。概括地,給定具有提升因子Z = KXN的提升圖的微碼,本發(fā)明的各個實施例針對 執(zhí)行N比特向量操作的編碼器。每個N比特向量操作包括微碼中的命令的執(zhí)行,該微碼描 述用于編碼的碼結(jié)構(gòu)。為了實現(xiàn)包括Z比特的碼字的編碼,在順序的K個步驟中實現(xiàn)每個 N比特命令,該K個步驟由部分所存儲微碼命令信息和一個或多個計數(shù)器控制。在本發(fā)明的各個實施例中,所提出的編碼器能生成不同的碼,這些碼共享與投影 圖相同的速率,但具有不同碼字長度。這通過使用選擇的提升因子控制值SK作為對于每個 命令執(zhí)行的步驟數(shù)來完成,SK是K的除數(shù)而不是K本身。更特別地,在乘積提升中的群W1是兩個群的直接乘積W1 = Ψη X Ψ12,并且SK是矩陣Ψ12維數(shù),并且J是W11的維數(shù),因 此,K = JXSK。作為特殊情況,ψη可能是單一元素1的群以及ψ12是因此SK = K并 且J= 1。無論如何,在提升圖中,如果我們忽略提升圖內(nèi)的分量,則我們有具有提升 因子Z/J = SKXN的提升圖。不同的理解方法是我們采用原始圖并將它投影到提升群ψη 上,因此,在奇偶校驗矩陣中,指示ZXZ置換矩陣的每個非零項現(xiàn)在被投影到Z/JXZ/J置 換矩陣。這樣,根據(jù)群論的基本原理,即使對于矩陣逆Φ—1,在較大圖中的與矩陣乘法相同 的解碼過程序列對于投影圖仍然成立。因此,描述具有提升因子Z的較大圖的微碼也是描述具有提升因子Z/J = SKXN 的投影圖的微碼。與以上提及的關(guān)于Z的情況相同的推理路線,通過按照由存儲在所存儲 編碼器描述信息模塊372中的部分命令信息控制的順序,在SK個步驟中執(zhí)行微碼內(nèi)的每個 命令,我們能使用具有N比特向量操作的相同編碼器來編碼具有提升因子SKXN的碼。如果Ψ1仍然能寫為兩個其他群的直接乘積Ψ1 = Ψη' X Ψ12',那么存在共用 相同微碼的不同塊長度的其他碼,其是本發(fā)明的各個實現(xiàn)中的情況。根據(jù)本發(fā)明,通過指定 相應(yīng)的SK,具有并行度N的相同編碼器能編碼具有提升因子Z/J'的碼,其中,J'是W11' 的維數(shù)。W1中更多的附加結(jié)構(gòu)可以導(dǎo)致更多的不同塊長度的碼可在相同編碼器硬件上編 碼。因此,通過依據(jù)群結(jié)構(gòu)控制SK,編碼器能生成具有不同塊長度的一類LDPC碼。在圖300中,能通過碼提升因子控制信號348指定選擇的碼提升因子,由于該選擇 的碼提升因子將控制生成的碼字的長度,因而能作為碼字長度選擇信號。信號348被提供 給內(nèi)環(huán)計數(shù)器370并確定內(nèi)環(huán)計數(shù)器370的最大計數(shù)。本發(fā)明編碼器的靈活性和它能通過使用控制碼實現(xiàn)的方便性,將由于以下的控制 碼實例而顯而易見。以下的碼可作為碼描述信息,碼描述信息被存儲在所存儲編碼器描述 信息模塊372中,并被執(zhí)行,例如,每次一行,以實現(xiàn)編碼操作。以下包含表IA與IB組合的表1列出了與具有最大提升因子Z = 64的碼結(jié)構(gòu)對應(yīng) 的例如微碼的示例性控制碼的指令。在實例中,對于其中N = 16,K = 4以及L = 10的情 況設(shè)計碼。Z = ΚΧΝ,并且因此Z = 64 = 4X16。最大可支持碼字長度將是KXNXL,其在 這個實例中是640。由具有4個校驗節(jié)點和10個變量節(jié)點的碼來描述投影圖。當(dāng)由最大提 升因子Z提升時,這將導(dǎo)致具有256(64X4)個校驗節(jié)點和640 (64 X 10)個變量節(jié)點的碼結(jié) 構(gòu)。將硬件設(shè)計為在并行度N的級別操作,其中N= 16。在這個實施例中用于指定碼字長 度的提升因子控制信號SK能夠是K的任何除數(shù),其中如上提到K是4(Κ = Ζ/Ν = 64/16), 即,最大可支持提升因子控制值。因此,通過選擇不同的提升因子控制信號以控制表1的微 碼的重復(fù)數(shù),編碼對應(yīng)于3個不同長度的碼字是可能的,例如,當(dāng)SK = 1時,碼字長度將等 于(1X16X10)160比特,當(dāng)SK = 2時,碼字長度將等于(2X16X10)320比特,并且當(dāng)SK =K = 4時,碼字長度將等于(4X 16X 10)640比特。在表1中示出的微碼中,在op列中,1 用于指示讀指令而0用于指示寫指令??刂浦祌l和r2都存儲在值r中。從值r中確定rl 為當(dāng)r被N除時的整除結(jié)果。S卩,rl = r除以N。通過取r/N的模數(shù)從值r中確定r2。在 這個實例中N = 16??紤]例如第一個指令1434。這個指令應(yīng)該解釋為讀(op = 1)指令, Π = (r 除以 N) = (43 除以 16) = 2,而 r2 = (r 模 N) = (43 模 16) = 11??刂浦?a 由 表直接提供,并且在第一個指令的情況下是4。當(dāng)控制值在0,...,L-I的范圍內(nèi)時,例如, 對于該示例性微碼為0. . . 9,被訪問的存儲器用于碼字存儲,例如,訪問K個塊318、320、322中的一個。當(dāng)控制值在0,...,L-I的范圍外時,例如,對于該示例性微碼為10,被訪問的存 儲器用于值的臨時存儲,例如,訪問K個塊319、321、323中的一個。(開始) 表格 IA(繼續(xù)) 表格IB本發(fā)明的方法和裝置能用于實現(xiàn)廣泛的各種設(shè)備,包括,例如,無線終端、基站、數(shù) 據(jù)存儲設(shè)備以及可能使用編碼和/或解碼數(shù)據(jù)以防止和/或糾正錯誤的其他類型設(shè)備。圖4是根據(jù)使用本發(fā)明方法的LDPC編碼器/解碼器設(shè)備實現(xiàn)的例如移動節(jié)點的 示例性無線終端(WT) 1000的圖。示例性WT 1000包括接收機(jī)1002、接收機(jī)天線1004、可編 程LDPC解碼器1006、發(fā)射機(jī)1008、發(fā)射機(jī)天線1010、可編程LDPC編碼器1012、處理器1014、 用戶I/O設(shè)備1015以及存儲器1016。經(jīng)由總線1018將可編程LDPC解碼器1006、可編程 LDPC編碼器1012 (其能使用圖3的編碼器300實現(xiàn))、處理器1014、用戶I/O設(shè)備1015以 及存儲器1016耦合到一起,各種元件可以通過總線1018相互交換數(shù)據(jù)和信息。將接收機(jī)1002耦合到接收機(jī)天線1004,經(jīng)由接收機(jī)天線1004,WT 1000可以接收 來自其他設(shè)備的信號,例如,來自基站的已編碼下行鏈路信號。接收機(jī)1002也耦合到可編 程LDPC解碼器1006,其可以根據(jù)本發(fā)明解碼所接收的下行鏈路信號。除了例如LDPC編碼 數(shù)據(jù)之外,接收的信號還可以包括例如控制信息的信號,該信號用于指示用于編碼正被接 收的數(shù)據(jù)的LDPC碼結(jié)構(gòu)和/或包括在接收數(shù)據(jù)中的碼字的碼字長度。接收的數(shù)據(jù)可以包 括對應(yīng)于不同應(yīng)用的碼字。根據(jù)本發(fā)明,解碼器可以從解碼對應(yīng)于第一個碼結(jié)構(gòu)和碼字長 度的數(shù)據(jù)切換到解碼對應(yīng)于第二個碼結(jié)構(gòu)和第二個碼字長度的數(shù)據(jù)。第一個和第二個碼字 結(jié)構(gòu)可以不同,響應(yīng)于包含在接收信息中的信息,用例如微碼形式的控制碼這樣的適當(dāng)碼 結(jié)構(gòu)信息裝載解碼器。通常不使用LDPC碼來編碼控制信息,以便于控制信息的快速檢測和 解釋。第一個和第二個碼字長度也可以不同。在一些情況下,第一個和第二個碼結(jié)構(gòu)是相 同的,但是對應(yīng)于不同應(yīng)用的數(shù)據(jù)的碼字長度可以是不同的。在這樣的情況下,不需要更新 碼結(jié)構(gòu)信息來解碼不同尺寸的碼字,并且,隨著接收數(shù)據(jù)的碼字長度改變,僅需要將例如提 升因子信息的碼字長度信息提供給解碼器??梢詫⒋a字長度信息指定為正在使用的碼結(jié)構(gòu) 的碼提升因子。如以下將要討論的,例如控制碼的碼結(jié)構(gòu)信息能用于控制可編程LDPC解碼 器,而碼字長度信息能用于設(shè)置碼字長度,用于解碼目的。這樣的信息經(jīng)由總線1018能從 存儲器1016傳送到解碼器1006。將發(fā)射機(jī)1008耦合到發(fā)射機(jī)天線1010,WT 1000可以通過發(fā)射機(jī)天線1010向基
站發(fā)射包括已編碼的上行鏈路信號的上行鏈路信號。將發(fā)射機(jī)1008耦合到可編程LDPC編 碼器1012,可編程LDPC編碼器1012在傳輸前編碼各種上行鏈路信號,例如,對應(yīng)于不同應(yīng) 用的數(shù)據(jù)信號。給編碼器裝載對應(yīng)于不同碼結(jié)構(gòu)的不同組碼描述信息,例如,諸如微碼的不 同組控制碼。另外,將用于控制由編碼器1012生成的碼字的長度的碼字長度信息,例如, 以碼提升因子信息的形式,提供給編碼器1012。可以從接收的信息中獲得選擇碼字結(jié)構(gòu)和 /或碼字長度的信息,例如,編碼器可以使用與用于解碼的相同碼字結(jié)構(gòu)和碼字長度來編碼
17由應(yīng)用生成的數(shù)據(jù),該相同碼字結(jié)構(gòu)和碼字長度被用于解碼為該生成數(shù)據(jù)的特定應(yīng)用接收 的數(shù)據(jù)。因此,可以編程編碼器,以匹配由與無線終端相互作用的另一個設(shè)備使用的編碼結(jié) 構(gòu)和碼字長度?;蛘?,設(shè)備用戶可以指定使用特定的碼字結(jié)構(gòu)和/或碼字長度,或者這樣的 信息可由通信程序或存儲在無線終端中的其他程序指定。經(jīng)由總線1018,能將碼結(jié)構(gòu)信息和/或碼字長度信息從存儲器1016傳送到可編程 LDPC編碼器1012。例如鍵盤、揚聲器、傳聲器、顯示器等的用戶I/O設(shè)備1015提供接口,以 使用戶輸入數(shù)據(jù)和信息,例如,將被編碼并傳送到另一個WT的數(shù)據(jù)和信息,以及使用戶輸 出和/或顯示接收的數(shù)據(jù)/信息,例如,來自同等節(jié)點的已經(jīng)被解碼的接收數(shù)據(jù)和信息。用 戶I/O設(shè)備1015提供接口,以允許用戶選擇和/或指定將由可編程LDPC解碼器1006和/ 或可編程LDPC編碼器1012使用的與一組數(shù)據(jù)相關(guān)聯(lián)的碼、碼長度指示符、和/或多組碼描 述信息。處理器1014,例如CPU,執(zhí)行程序并使用存儲器1016中的數(shù)據(jù)/信息,以控制無線 終端1000的操作并實現(xiàn)本發(fā)明的方法。存儲器1016包括編碼器碼描述信息組1026、1028的群1025,以及解碼器碼描述信 息組1030、1032的群1029。每個編碼器碼描述信息組1026、1028包括反映將被用于對數(shù)據(jù) 編碼的碼的碼結(jié)構(gòu)的控制碼,例如微碼。每組信息1026、1028對應(yīng)不同的碼結(jié)構(gòu)。編碼器 碼描述信息能被裝載到可編程LDPC編碼器1012的編碼器控制模塊,并例如作為存儲的編 碼器描述信息,用于控制數(shù)據(jù)的編碼。類似地,每個解碼器碼描述信息組1030、1032包括反 映將被用于對數(shù)據(jù)解碼的碼的碼結(jié)構(gòu)的控制碼,例如微碼。每組解碼器碼描述信息1030、 1032對應(yīng)不同碼結(jié)構(gòu)。解碼器碼描述信息能被裝載到可編程LDPC解碼器1006的控制模 塊,并例如作為存儲的解碼器描述信息,用于控制數(shù)據(jù)的解碼。存儲器1016包括通信程序1020、編碼器碼和碼字長度選擇程序1022、以及解碼器 碼和碼字長度選擇程序1024。通信程序1020可以控制與其他無線設(shè)備通常的通信和相互 作用。當(dāng)使用LDPC碼編碼和/或解碼數(shù)據(jù)時,對于給定應(yīng)用實現(xiàn)的通信程序可以指定將 用于特定通信應(yīng)用的碼結(jié)構(gòu)和和/或碼字長度。編碼器碼和碼字選擇程序1022負(fù)責(zé)選擇 將用于特定應(yīng)用的碼結(jié)構(gòu)以及因此相應(yīng)的編碼器碼描述信息1026、1028?;趶耐ㄐ懦绦?1020接收的信息、經(jīng)由接收機(jī)1002或從用戶輸入接收的信息來作出這個選擇。如果編碼 器碼和碼字長度選擇程序1022還沒有被配置為根據(jù)選擇的碼和碼字長度執(zhí)行編碼,那么 它負(fù)責(zé)用選擇的碼描述信息裝載可編程LDPC編碼器1012,并負(fù)責(zé)將例如選擇的碼提升因 子的信息提供給可編程編碼器1012。如果解碼器碼和碼字長度選擇程序1024還沒有被配 置為根據(jù)選擇的碼和碼字長度執(zhí)行解碼,那么它負(fù)責(zé)用選擇的碼描述信息裝載可編程LDPC 解碼器1006,并負(fù)責(zé)將例如選擇的碼提升因子的信息提供給可編程解碼器1006。除了以上討論的涉及編碼和解碼的程序和信息外,存儲器1016還可用于存儲接 收的解碼器信息1038,例如,由指示將用于解碼的碼結(jié)構(gòu)和碼字長度的解碼器碼和碼字長 度選擇程序1024使用的接收信息。另外,接收的編碼器信息1044,例如,由指示將用于編碼 的碼結(jié)構(gòu)和碼字長度的編碼器碼和碼字長度選擇程序1022使用的接收的信息,可存儲在 存儲器1016中。涉及解碼的用戶輸入信息1036以及涉及編碼的用戶輸入信息1042也存 儲在存儲器1016中。這樣的信息與解碼器信息1038和編碼器信息1044相同或類似,但是 它經(jīng)由用戶I/O設(shè)備1015而不是經(jīng)由接收機(jī)1002從用戶獲得。
對于能夠并且在一些實施例中用作可編程LDPC解碼器1006的示例性可編程LDPC 解碼器的詳細(xì)討論,見具有2005年7月21日的提交日期、發(fā)明者名字為Tom Richardson, Hui Jin 和 Vladimir Novichkov、名為 “LDPC DECODING METHODS AND APPARATUS” 的美國 專利申請S. N. 10/895,645,在此被明確地引入作為參考。為了提供背景信息的目的,美國專 利N0. 6,633,856也明確地引入作為參考。使用上述討論的程序和存儲的編碼器/解碼器信息,根據(jù)例如用戶信息或經(jīng)由接 收機(jī)1002接收的信息這樣的接收信息,為了編碼和解碼目的,無線終端能在使用不同碼結(jié) 構(gòu)和碼字長度間切換。也可由在特定時間點執(zhí)行的特定通信程序1020來觸發(fā)編碼器/解 碼器改變。因此,利用通過碼更新的使用而容易被修改的單個一組硬件,本發(fā)明在LDPC碼 的編碼和解碼中允許很大的靈活性,該碼更新對應(yīng)于不同碼結(jié)構(gòu)和/或碼字長度控制參數(shù) 的改變。涉及本發(fā)明依賴的LDPC碼結(jié)構(gòu)的各個概念在2003年7月11日提交的,名為 "MEHTOD AND APPARATUS FOR ENCODING LDPC CODES,,的美國專利申請 S. N. 10/618, 325 中 描述和討論,并在此被明確地引入作為參考。當(dāng)按照引入的專利申請中提供的討論來看時, 能獲得對本發(fā)明的方法和裝置的技術(shù)和好處的更好評價。包括圖5A和圖5B組合的圖5是操作根據(jù)本發(fā)明實現(xiàn)的例如WT1000的示例性通 信設(shè)備以執(zhí)行根據(jù)本發(fā)明的編碼和解碼的示例性方法的流程圖1100。操作在步驟1102開 始,在其中WT 1000接通電源并初始化。操作從步驟1102繼續(xù)進(jìn)行到步驟1104、1106、以及 步驟1108。在步驟1104,操作WT 1000接收編碼/解碼信息和/或從接收的數(shù)據(jù)生成控制信 息??梢越?jīng)由通過接收機(jī)1002處理的接收信號和/或經(jīng)由用戶1/0設(shè)備1015接收的用戶 輸入來接收編碼/解碼信息,例如,用于可編程LDPC編碼器1012和/或可編程LDPC解碼 器的控制信息。另外,處理接收的編碼數(shù)據(jù)以生成控制信息。例如,使用不同的碼結(jié)構(gòu)信息 和/或不同碼字長度能執(zhí)行解碼的多次嘗試。一旦成功解碼,在一些實施例中生成控制信 息,該控制信息指示將用于解碼到來數(shù)據(jù)以及在一些實施例中編碼輸出數(shù)據(jù)的碼結(jié)構(gòu)和/ 或碼字長度。經(jīng)由連接節(jié)點A 1110,操作從步驟1104繼續(xù)進(jìn)行到步驟1112。在步驟1112, 操作WT 1000以確定接收的編碼/解碼控制信息的類型。基于步驟1112的確定,操作繼續(xù) 進(jìn)行到步驟 1114、1116、1118 或 1120。如果在步驟1112確定控制信息的類型是編碼器碼結(jié)構(gòu)信息,則操作繼續(xù)進(jìn)行到 步驟1114。在步驟1114,操作WT 1000來用一組碼描述信息,例如對應(yīng)于由控制信息指示 的碼結(jié)構(gòu)信息的控制碼,裝載編碼器1012。操作從步驟1114繼續(xù)進(jìn)行到連接節(jié)點B 1122。如果在步驟1112確定信息的類型是編碼器碼字長度信息,則操作繼續(xù)進(jìn)行到步 驟1116。在步驟1116,操作WT 1000將對應(yīng)于由控制信息指示的碼字長度的碼字長度指 示符,例如選擇的提升因子,提供給編碼器1012。操作從步驟1116繼續(xù)進(jìn)行到連接節(jié)點B 1122。如果在步驟1112確定控制信息的類型是解碼器碼結(jié)構(gòu)信息,則操作繼續(xù)進(jìn)行到 步驟1118。在步驟1118,操作WT 1000來用一組碼描述信息,例如對應(yīng)于由控制信息指示 的碼結(jié)構(gòu)的控制碼,裝載解碼器1006。操作從步驟1118繼續(xù)進(jìn)行到連接節(jié)點B 1122。如果在步驟1112確定信息的類型是解碼器碼字長度信息,則操作繼續(xù)進(jìn)行到步驟1120。在步驟1120,操作WT 1000將對應(yīng)于指示碼字長度的碼字長度指示符,例如選擇 的提升因子,提供給解碼器1006。操作從步驟1120繼續(xù)進(jìn)行到連接節(jié)點B 1122。操作從連接節(jié)點B 1122返回到步驟1104,其中,WT 1104等待接收其他編碼/解 碼信息,例如,完成可編程解碼器1006和/或可編程編碼器1012的配置的信息,和/或改 變解碼器1006和/或編碼器1012的選擇的設(shè)置的信息,例如,碼字長度設(shè)置。在步驟1106,操作包括先前配置的可編程解碼器1006的WT1000,通過接收機(jī)1002 接收將被解碼的數(shù)據(jù),例如,來自WT 1000的同等節(jié)點的已編碼用戶數(shù)據(jù)。將接收的數(shù)據(jù) 轉(zhuǎn)發(fā)給解碼器1006。操作從步驟1106繼續(xù)進(jìn)行到步驟1124。在步驟1124,依據(jù)在解碼器 1006中的所存儲碼描述信息和已經(jīng)被提供給解碼器的碼字長度指示符信息,操作解碼器 1006以解碼數(shù)據(jù)。操作從步驟1124繼續(xù)進(jìn)行到步驟1106,在步驟1106中接收將被解碼的 附加數(shù)據(jù)。在步驟1108,操作包括先前配置的可編程編碼器1012的WT 1000,通過用戶I/O 設(shè)備1015接收將被編碼的數(shù)據(jù),例如,來自WT 1000用戶的將要被編碼并被傳送給WT 1000 的同等節(jié)點的輸入數(shù)據(jù)。將接收的數(shù)據(jù)轉(zhuǎn)發(fā)給編碼器1012。操作從步驟1108繼續(xù)進(jìn)行到 步驟1126。在步驟1126,依據(jù)所存儲碼描述信息和被提供給編碼器的碼字長度指示符信 息,操作編碼器1012以編碼數(shù)據(jù)。操作從步驟1126繼續(xù)進(jìn)行到步驟1108,在步驟1108中 接收將被編碼的附加數(shù)據(jù)。在時間上,隨著被裝載到編碼器1012和解碼器1006的、對應(yīng)于例如選擇的提升因 子這樣的碼字長度信息的控制信息改變,碼字長度將會改變。因此,隨著無線終端從對應(yīng)于 第一個設(shè)備和/或應(yīng)用而接收數(shù)據(jù)切換到對應(yīng)于第二個設(shè)備和/或應(yīng)用而處理數(shù)據(jù),碼字 長度能,并且在各個實現(xiàn)中將改變。另外,在時間上隨著無線終端與不同的設(shè)備相互作用和 /或?qū)崿F(xiàn)不同的應(yīng)用,能改變由編碼器1012和/或解碼器1006使用的碼結(jié)構(gòu)信息。因此, 在第一個時間點,編碼器和解碼器可以處理對應(yīng)第一個長度和/或碼結(jié)構(gòu)的碼字,并且在 另一個時間處理對應(yīng)于第二個長度和/或碼結(jié)構(gòu)的碼字。在其他的時間點,本發(fā)明的可編 程LDPC編碼器1012和解碼器1006可以使用其他的碼結(jié)構(gòu)和/或碼字長度。各個可支持 的碼字長度通常將會達(dá)到由編碼器1012和解碼器1006中可用存儲器量和/或可用寄存器 數(shù)量和尺寸確定的最大尺寸。以下的專利申請和專利提供關(guān)于編碼和/或解碼LDPC碼的信息,并在此被明確 地引入作為參考。2004年2月26日提交的美國專利申請S. N. 10/788,115 ;2002年4月 4日提交的美國專利申請S. N. 10/177,264 ;美國專利申請S. N. 10/618,325以及美國專利 6,633,856。關(guān)于本發(fā)明的方法和裝置的眾多改變是可能的。因此,用于實現(xiàn)本發(fā)明的模塊可 以作為軟件、硬件、或軟件及硬件的組合實現(xiàn)。例如,可以用硬件和/或軟件實現(xiàn)本發(fā)明的 各種特征。例如,本發(fā)明的一些方面可以實現(xiàn)為處理器執(zhí)行的程序指令?;蛘撸蛄硗?,本 發(fā)明的一些方面可以實現(xiàn)為例如,諸如ASIC的集成電路。本發(fā)明的裝置針對軟件、硬件和 /或軟件與硬件的組合。設(shè)想了包括用于控制機(jī)器來實現(xiàn)根據(jù)本發(fā)明的一個或多個方法步 驟的指令的機(jī)器可讀媒介,其被認(rèn)為在本發(fā)明的一些實施例的范圍內(nèi)。本發(fā)明尤其針對能用于控制處理器以執(zhí)行根據(jù)本發(fā)明的編碼和/或解碼的軟件。 本發(fā)明的方法和裝置能用于OFDM通信系統(tǒng)以及包括CDMA系統(tǒng)的其他類型通信系統(tǒng)。
權(quán)利要求
一種實現(xiàn)可編程LDPC編碼器系統(tǒng)的方法,所述方法包括步驟在第一時間周期期間,將第一組碼結(jié)構(gòu)描述信息存儲到LDPC編碼器的一個模塊中,所述第一組碼結(jié)構(gòu)描述信息對應(yīng)于第一LDPC碼結(jié)構(gòu);操作所述LDPC編碼器,以使用所述存儲的第一組碼描述信息執(zhí)行LDPC編碼操作;在第二時間周期期間,將第二組碼結(jié)構(gòu)描述信息存儲到LDPC編碼器的所述模塊中,所述第二組碼結(jié)構(gòu)描述信息對應(yīng)于第二LDPC碼結(jié)構(gòu);以及操作所述編碼器,以使用所述存儲的第二組碼描述信息執(zhí)行LDPC編碼操作。
2.如權(quán)利要求1所述的方法,其中,在不同的時間周期期間使用所述存儲的第一和第 二組碼結(jié)構(gòu)描述信息來執(zhí)行編碼操作。
3.如權(quán)利要求1所述的方法,其中,所述存儲第一組碼描述信息的步驟是對接收到一 個信號的響應(yīng),該信號指示對應(yīng)于所述第一組碼描述信息的碼字將被使用。
4.如權(quán)利要求1所述的方法,其中,所述存儲第一組碼描述信息的步驟是對接收到一 個信號的響應(yīng),該信號包括依據(jù)對應(yīng)于所述第一組碼描述信息的碼結(jié)構(gòu)進(jìn)行編碼的碼字。
5.如權(quán)利要求1所述的方法,其中,所述第一組碼描述信息包括編碼器控制指令。
6.如權(quán)利要求5所述的方法,其中,每個編碼器控制指令包括讀和寫操作指示符之一。
7.如權(quán)利要求6所述的方法,其中,每個編碼器控制指令進(jìn)一步包括旋轉(zhuǎn)控制信息。
8.如權(quán)利要求7所述的方法,其中,每個編碼器控制指令進(jìn)一步包括存儲器地址信息。
全文摘要
描述了靈活并相對硬件高效的LDPC編碼器(300)。利用小于用于控制編碼過程的碼結(jié)構(gòu)的全部并行度的并行度級別來實現(xiàn)所述編碼器(301)。每個用于描述碼結(jié)構(gòu)的相對簡單微碼命令能被存儲并被執(zhí)行多次以完成對碼字的編碼(354)。使用相同組微碼指令能支持不同的碼字長度,但取決于所選將被使用的提升因子,碼被實現(xiàn)的次數(shù)不同(310)。在不需要改變儲存的碼描述信息的情況下,僅通過改變用于控制編碼過程的碼提升因子,所述LDPC編碼器能在編碼不同長度的碼字間切換(310)。當(dāng)編碼比最大可支持碼字長度短的碼字時,一些塊存儲單元和/或寄存器可以不使用(308)。
文檔編號H03M13/11GK101917199SQ201010261210
公開日2010年12月15日 申請日期2005年7月20日 優(yōu)先權(quán)日2004年7月21日
發(fā)明者湯姆·理查森, 金輝 申請人:高通股份有限公司