專利名稱:一種基于tdmp的高速可配置qc-ldpc碼解碼器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于無線通信和微電子技術(shù)領(lǐng)域,具體涉及一種基于TDMP的高速可配置 QC-LDPC碼解碼器,可以應(yīng)用于一些解碼吞吐量要求小于300兆比特每秒(Mb/s)的一般高 速系統(tǒng)。
背景技術(shù):
因?yàn)槠鋬?yōu)異的糾錯(cuò)性能和很好的部分并行解碼器結(jié)構(gòu),準(zhǔn)循環(huán)低密度奇偶校驗(yàn)碼 (QC-LDPC,Quasi-Cyclic Low-Density Parity-Check Codes)被廣泛地應(yīng)用到數(shù)字廣播及 通信領(lǐng)域中,諸如 DVB-S2、IEEE 802. lln (Wireless LAN)、IEEE 802. 16e (WiMAX), DTMB 和 CMMB等系統(tǒng)。在所有QC-LDPC碼解碼算法中,歸一化最小和(Normalized Min-Sum)解碼算法和 基于Turbo碼信息傳遞的(Turbo-Decoding Message-Passing)解碼算法被廣泛采用。前 者解碼復(fù)雜度最低,能最大限度的降低保存中間信息的存儲(chǔ)器資源;后者能夠最大限度的 提高解碼收斂速度,進(jìn)一步提高解碼吞吐量。在所有QC-LDPC碼解碼器結(jié)構(gòu)中,部分并行解碼器結(jié)構(gòu),折中考慮芯片面積和吞 吐量,獲得了高速發(fā)展。各種并行度的解碼器層出不窮。假設(shè)M表示基矩陣的行塊數(shù);N表 示基矩陣的列塊數(shù);b表示基矩陣的擴(kuò)展因子;t表示基矩陣中非零子矩陣的個(gè)數(shù)。對(duì)于 QC-LDPC碼(M,N,b,t),典型的部分并行度有M、N和b。隨著現(xiàn)代通信廣播系統(tǒng)向著高數(shù)據(jù)吞吐率、大容量、高可靠性的方向發(fā)展,以及標(biāo) 準(zhǔn)層出不窮和多樣化,一種可以兼容多標(biāo)準(zhǔn)的高速可配置QC-LDPC解碼器硬件結(jié)構(gòu)成為大 勢所趨。同時(shí)隨著無線通信廣播的高速發(fā)展,以及便攜式移動(dòng)終端用戶群不斷擴(kuò)大,低功耗 實(shí)現(xiàn)尤為重要。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種芯片的吞吐量大,功耗低,并可節(jié)省硬件資源的基于 TDMPQC-LDPC碼解碼器。本發(fā)明要解決如下一些技術(shù)問題橫向更新和縱向更新完全交疊以提高吞吐量。對(duì)于傳統(tǒng)的兩相迭代解碼算法,橫 向更新和縱向更新交替進(jìn)行。本發(fā)明在避免了存儲(chǔ)器訪問沖突的情況下,兩相完全交疊,吞 吐量可以提高兩倍。和值寄存器堆奇偶集劃分以提高存儲(chǔ)器讀寫頻率。兩相完全交疊,存儲(chǔ)器必須提 高讀寫訪問速率。在采用同一時(shí)鐘的同步系統(tǒng)中,只能通過增加存儲(chǔ)器端口達(dá)到此目的。但 對(duì)于非規(guī)則的QC-LDPC碼(M,N, b,t),需要通過矩陣變換避免存儲(chǔ)器訪問沖突。和值寄存器堆還存儲(chǔ)兩相之間傳遞的外信息以降低存儲(chǔ)器器資源。在本發(fā)明中, 和值寄存器堆不僅存儲(chǔ)變量節(jié)點(diǎn)和值,還存儲(chǔ)兩相之間傳遞的外信息。這樣可以省掉一塊 很大的同步FIFO。
橫向更新采用相對(duì)偏移量置換網(wǎng)絡(luò)以降低硬件資源。傳統(tǒng)的解碼器設(shè)計(jì),橫向更 新和縱向更新都需要一個(gè)絕對(duì)偏移量置換網(wǎng)路。對(duì)于很大的擴(kuò)展因子b,兩個(gè)置換網(wǎng)絡(luò)需要 大量的硬件資源。本設(shè)計(jì)只需要一個(gè)置換網(wǎng)絡(luò),對(duì)橫向更新所需的和值進(jìn)行相對(duì)偏移量置 換,而縱向更新后的和值無需進(jìn)行反置換。解碼結(jié)構(gòu)靈活,具有很好的可配置性。本設(shè)計(jì)采用行序串行掃描方法,同一行塊的 縱向更新緊隨橫向更新。該解碼器結(jié)構(gòu)無需較大的改動(dòng),就能夠移植到其它任何規(guī)則或者 非規(guī)則的QC-LDPC碼(M,N, b, t)中。本發(fā)明提供的基于TDMP兩相完全交疊的QC-LDPC碼解碼器,如圖2所示,由主控 制器、只讀存儲(chǔ)器、輸入和輸出緩存寄存器堆、交織和解交織器、變量節(jié)點(diǎn)和值寄存器堆、校 驗(yàn)節(jié)點(diǎn)信息組件寄存器堆、旁路和交叉控制器、置換器(即可配置相對(duì)偏移量置換網(wǎng)絡(luò))、 恢復(fù)器(包括恢復(fù)器陣列A和恢復(fù)器陣列B)、加法器、奇偶校驗(yàn)器、橫向更新處理器和縱向 更新處理器組成。該解碼器橫向更新和縱向更新并行度都是b,b為子矩陣擴(kuò)展因子。該解 碼器的數(shù)據(jù)流向如下先前的變量節(jié)點(diǎn)和值從和值寄存器堆取出,經(jīng)過旁路和交叉控制器,再經(jīng)過一個(gè) 獨(dú)立可配置相對(duì)偏移量置換網(wǎng)絡(luò);同時(shí),恢復(fù)器陣列A從校驗(yàn)節(jié)點(diǎn)信息組件寄存器堆恢復(fù) 先前的自信息;所有置換后的和值和恢復(fù)得到的自信息進(jìn)入96個(gè)加法器所組成的陣列;計(jì) 算結(jié)果作為外信息,一方面暫時(shí)保存到和值寄存器堆中,另一方面輸入到96個(gè)橫向更新處 理器,更新校驗(yàn)節(jié)點(diǎn)信息組件;當(dāng)一個(gè)行塊的橫向更新完成之后,更新之后的信息組件回寫 到信息組件寄存器堆;同時(shí)送入恢復(fù)器陣列B恢復(fù)更新之后的自信息;所有恢復(fù)得到的自 信息和從和值寄存器堆讀取的外信息送入96個(gè)縱向更新處理器,更新變量節(jié)點(diǎn)和值,最后 寫入和值寄存器堆。本發(fā)明中,輸入數(shù)據(jù)流和輸出比特流需要經(jīng)過特殊處理。輸入數(shù)據(jù)流先按原序?qū)?入輸入緩存寄存器堆,然后經(jīng)過列塊交織進(jìn)行和值寄存器堆初始化。輸出比特流經(jīng)過列塊 解交織寫入輸出緩存寄存器堆,然后輸出到下一級(jí)。本發(fā)明中,QC-LDPC解碼器采用優(yōu)化的TDMP解碼算法,即用歸一化最小和解碼算 法替換TDMP算法中的軟輸入軟輸出引擎,其解碼步驟如下步驟1 按自然順序存儲(chǔ)從信道接收過來的本征信息到輸入緩存寄存器堆中;步驟2 按交織順序從輸入緩存寄存器堆讀出本征信息(通過地址映射完成列塊 交織),初始化變量節(jié)點(diǎn)和值寄存器堆;步驟3 按行序每次掃描一個(gè)非零子矩陣,讀取相應(yīng)變量節(jié)點(diǎn)和值(一個(gè)列塊)和 相應(yīng)校驗(yàn)節(jié)點(diǎn)信息組件(一個(gè)行塊);步驟4 通過一個(gè)相對(duì)偏移量置換網(wǎng)絡(luò)對(duì)和值進(jìn)行循環(huán)移位,同時(shí)通過一個(gè)恢復(fù) 器陣列從信息組件恢復(fù)自信息,最后計(jì)算外信息(移位后的和值減去恢復(fù)得到的自信息)。步驟5 寫外信息、更新校驗(yàn)節(jié)點(diǎn)信息組件、做奇偶校驗(yàn)等等,如果所有行塊都滿 足奇偶校驗(yàn)或者達(dá)到最大迭代次數(shù),轉(zhuǎn)入步驟9 ;步驟6 按行序重新每次掃描一個(gè)非零子矩陣,從和值寄存器堆讀取相應(yīng)外信息 (一個(gè)列塊),同時(shí)通過一個(gè)恢復(fù)器陣列恢復(fù)更新后的自信息;步驟7 更新變量節(jié)點(diǎn)和值和硬判決;步驟8 寫回更新后的和值,轉(zhuǎn)入步驟3 ;
步驟9 硬判決結(jié)果從置換網(wǎng)絡(luò)送入輸出緩存寄存器堆,通過地址解映射完成列 塊解交織;步驟10 從輸出緩存寄存器堆輸出解碼結(jié)果,解碼結(jié)束;其中,步驟3、4和5屬于橫向更新過程;步驟6、7和8屬于縱向更新過程。一次子 迭代按照步驟3、4、5、6、7和8完成一個(gè)行塊更新;一次迭代按照步驟3、4、5、6、7和8完成 所有行塊更新。本發(fā)明中,解碼器采用對(duì)稱四級(jí)流水線(Symmetrical Four-Stage Pipelining) 結(jié)構(gòu)以提高吞吐量和幫助解決和值寄存器堆訪問沖突。橫向更新采用三級(jí)流水線 (Three-StagePipelining)流水線1 讀取變量節(jié)點(diǎn)和值和校驗(yàn)節(jié)點(diǎn)信息組件(Rd);流水線2 置換和值、恢復(fù)自信息和計(jì)算外信息;流水線3 寫入暫態(tài)外信息、更新校驗(yàn)節(jié)點(diǎn)信息組件和奇偶校驗(yàn)(Wr)??v向更新同樣采用三級(jí)流水線(Three-Stage Pipelining)流水線1 讀取暫態(tài)外信息和恢復(fù)更新后的自信息(Rd);流水線2 更新變量節(jié)點(diǎn)和值以及硬判決;流水線3 回寫更新后的和值(Wr)。對(duì)于橫向更新和縱向更新,第一級(jí)流水都是存儲(chǔ)器讀操作;第三級(jí)流水都是存儲(chǔ) 器寫操作。使用雙口和值寄存器堆(Two-Port Register File),第一級(jí)流水和第三級(jí)流水 可以互相交疊。因此,整個(gè)解碼流程采用的是對(duì)稱的四級(jí)流水線結(jié)構(gòu)。對(duì)于同一存儲(chǔ)器地 址,寫操作始終發(fā)生在讀操作兩個(gè)時(shí)鐘周期之后。對(duì)稱性帶來的好處是只需解決存儲(chǔ)器讀 訪問沖突,而寫訪問沖突隨著讀訪問沖突的消失而消失。本發(fā)明中,QC-LDPC基矩陣(Base Matrix)的24個(gè)列塊(以0到23依次標(biāo)號(hào))被 劃分為奇偶兩個(gè)集合(Odd/Even Set)奇數(shù)集合(OddSet) :1、3、5、7、9、11、13、15、17、19、21 和 23 ;偶數(shù)集合(EvenSet) :0、2、4、6、8、10、12、14、16、18、20 和 22。本發(fā)明中,為了解決和值寄存器堆讀訪問沖突,需要對(duì)QC-LDPC碼基矩陣做以下 三項(xiàng)預(yù)處理預(yù)處理1 列塊交織(Block Column Interleaving)對(duì)基矩陣的列塊進(jìn)行重新排 序,對(duì)于每一行塊,確保所有非零子矩陣盡量均等的分布在權(quán)利5所要求的奇數(shù)集合和偶 數(shù)集合。預(yù)處理2 行塊交織(Block Row Interleaving)對(duì)基矩陣的行塊進(jìn)行重新排序, 確保連續(xù)兩行塊的相關(guān)性總和(相關(guān)性定義對(duì)于連續(xù)兩行塊,同時(shí)有非零子矩陣的列塊 個(gè)數(shù))盡量少。預(yù)處理3 非零子矩陣重排序(Nonzero Sub-matrix Reordering)對(duì)基矩陣中非 零子矩陣的掃描順序進(jìn)行重新排序,確保每個(gè)時(shí)鐘周期讀取兩個(gè)不同集合的相關(guān)信息。本發(fā)明中,相應(yīng)的和值寄存器堆被劃分為兩個(gè)堆(Bank),對(duì)應(yīng)奇數(shù)集合和偶數(shù)集 合(Set)和值寄存器堆0 (偶數(shù)集)存儲(chǔ)偶數(shù)集合所對(duì)應(yīng)的所有位置的和值和外信息;和值寄存器堆1 (奇數(shù)集)存儲(chǔ)奇數(shù)集合所對(duì)應(yīng)的所有位置的和值和外信息;
本發(fā)明中,解碼器有一個(gè)可配置置換網(wǎng)絡(luò)(Permutation Network)(置換器),循 環(huán)移位讀取的和值。傳統(tǒng)解碼器不僅要對(duì)讀取的和值進(jìn)行循環(huán)移位,還要對(duì)更新后的和值 進(jìn)行循環(huán)反移位,這樣就需要兩 個(gè)置換網(wǎng)絡(luò)。本設(shè)計(jì)通過相對(duì)偏移量置換網(wǎng)絡(luò),即根據(jù)同一 列塊中當(dāng)前非零子矩陣和前一個(gè)非零子矩陣的偏移量差值進(jìn)行循環(huán)移位,省掉一個(gè)用于循 環(huán)反移位的置換網(wǎng)絡(luò)。本發(fā)明中,橫向更新處理器陣列(CNU Processors)的核心單元包括預(yù)處理器(包 括求絕對(duì)值、符號(hào)以及歸一化)、分解器、奇偶校驗(yàn)器和保持電路。其中,預(yù)處理器由取反和 移位加等電路組成;分解器由帶反饋回路的比較和選擇電路組成;奇偶校驗(yàn)器由帶反饋回 路的兩輸入異或門電路組成;保持電路由四個(gè)反饋移位寄存器電路組成。保持電路是為了 向后續(xù)縱向更新單元提供穩(wěn)定的校驗(yàn)節(jié)點(diǎn)信息組件。本發(fā)明中,采用一種特殊的提前終止策略一軟解碼和硬解碼相結(jié)合,可以節(jié)省 半次到一次迭代周期。通過特定的控制策略,當(dāng)軟解碼只剩下一個(gè)錯(cuò)誤比特時(shí),軟解碼提前 終止,剩下的一個(gè)錯(cuò)誤比特由非常簡單的硬解碼電路糾正。綜上所述,本發(fā)明采用了如下一些技術(shù)措施兩相完全交疊(Fully-Overlapped Two Phases)當(dāng)前絕大部分解碼器,橫向更新 和縱向更新時(shí)分交替進(jìn)行。由于其數(shù)據(jù)依賴性(Data D印endency),兩相不能完全交疊在一 起。本發(fā)明完全克服了數(shù)據(jù)依賴關(guān)系,橫向更新和縱向更新完完全全交疊在一起;同時(shí)保證 如Turbo碼信息傳遞解碼算法一樣,橫向更新始終使用縱向更新的最新結(jié)果(“最新”的定 義依據(jù)變換后的基矩陣同一列塊中非零子矩陣的依賴關(guān)系)。因此,解碼延時(shí)縮短一半;吞 吐量提高一倍。對(duì)稱四級(jí)流水線(Symmetrical Four-Stage Pipelining)四級(jí)流水線可以大大 提高吞吐量;對(duì)稱流水線可以協(xié)助解決存儲(chǔ)器讀寫訪問沖突。橫向更新采用三級(jí)流水線 存儲(chǔ)器讀、數(shù)據(jù)處理和存儲(chǔ)器謝;縱向更新同樣采用三級(jí)流水線存儲(chǔ)器讀、數(shù)據(jù)處理和存 儲(chǔ)器寫。對(duì)于橫向和縱向更新,第一級(jí)和最后一級(jí)都是對(duì)存儲(chǔ)器的讀寫訪問。當(dāng)使用雙口 和值寄存器堆時(shí),橫向更新和縱向更新的第一級(jí)和最后一級(jí)可以相互交疊在一起。對(duì)于任 何一個(gè)存儲(chǔ)器地址單元,寫操作始終發(fā)生在讀操作的兩個(gè)時(shí)鐘周期之后;存儲(chǔ)器寫訪問沖 突會(huì)隨著讀訪問沖突的消失而消失?;仃嚵袎K、行塊交織(Block Column/Row Interleaving)這是對(duì)基矩陣預(yù)處理 的前兩步。對(duì)基矩陣的列塊進(jìn)行重新排序,對(duì)于每一行塊,確保所有非零子矩陣盡量均等的 分布前述的奇偶集合之中。對(duì)于兩相完全交疊解碼器,通過簡單的存儲(chǔ)器奇偶集劃分,就可 以有效地避免存儲(chǔ)器訪問沖突。對(duì)基矩陣的行塊進(jìn)行重新排序,確保連續(xù)兩行塊的相關(guān)性 總和(相關(guān)性定義對(duì)于連續(xù)兩行塊,同時(shí)有非零子矩陣的列塊個(gè)數(shù))盡量少。相關(guān)性表明 解碼流程中數(shù)據(jù)的相互依賴關(guān)系;相關(guān)性小可以有效地降低流水線氣泡,使解碼能夠緊湊 的進(jìn)行。非零子矩陣重排序(Nonzero Sub-matrix Reordering)這是對(duì)基矩陣預(yù)處理的 第三步?;陬A(yù)處理前兩步,對(duì)基矩陣中非零子矩陣的橫向更新掃描順序和縱向更新掃描 順序進(jìn)行重新排序,確保無存儲(chǔ)器讀寫訪問沖突和流水線氣泡。和值寄存器堆奇偶集劃分(SumMemory Partition With Odd and Even Sets)雙 口和值寄存器堆劃分為奇偶兩個(gè)集合,可以同時(shí)提供兩個(gè)獨(dú)立的讀取或者寫入端口。經(jīng)過基矩陣列塊、行塊交織和非零子矩陣重排序,解碼器每個(gè)時(shí)鐘周期都從兩個(gè)不同集合讀取 或者寫入相關(guān)信息。因此,和值寄存器堆奇偶集劃分可以避免為增加端口使用大量的額外 存儲(chǔ)單元。同時(shí),和值寄存器堆不僅存儲(chǔ)變量節(jié)點(diǎn)的和值,還存儲(chǔ)兩相之間傳遞的外信息, 從而省掉一塊很大的FIFO。和值寄存器堆讀寫旁路(Read-Write Bypass to Sum Memory)本發(fā)明引入大量 和值寄存器堆讀寫旁路技術(shù),降低芯片功耗。同一列塊中,非零子矩陣的相關(guān)性表明了數(shù)據(jù) 的依賴關(guān)系。當(dāng)兩個(gè)非零子矩陣的距離滿足設(shè)定的界限時(shí),縱向更新的和值可以直接傳到 橫向更新單元,避免使用兩次存儲(chǔ)器訪問操作寫入和值和讀取和值??膳渲孟鄬?duì)偏移量置換網(wǎng)絡(luò)(即置換器)(Configurable Permutation Network WithRelative Offset)傳統(tǒng)解碼器不僅要對(duì)橫向更新讀取的和值進(jìn)行循環(huán)移位,還要對(duì) 縱向更新后的和值進(jìn)行循環(huán)反移位,這樣就需要兩個(gè)置換網(wǎng)絡(luò)。本設(shè)計(jì)通過相對(duì)偏移量置 換網(wǎng)絡(luò),即根據(jù)同一列塊中當(dāng)前非零子矩陣和前一個(gè)非零子矩陣的偏移量差值進(jìn)行循環(huán)移 位,省掉縱向更新中用于和值循環(huán)反移位的置換網(wǎng)絡(luò)。譯碼提前終止策略(Decoding Early Termination Strategy)本發(fā)明采用一種 特殊的提前終止策略一軟解碼和硬解碼相結(jié)合,可以節(jié)省半次到一次迭代周期。通過特 定的控制策略,當(dāng)軟解碼只剩下一個(gè)錯(cuò)誤比特時(shí),軟解碼提前終止,剩下的一個(gè)錯(cuò)誤比特由 非常簡單的硬解碼電路糾正。有益效果采用本發(fā)明的所述技術(shù)方案,該QC-LDPC碼解碼器實(shí)現(xiàn)了兩相完全交疊,克服了 存儲(chǔ)器訪問沖突,大大降低了芯片面積、提高了解碼吞吐量和硬件資源使用率。同時(shí)通過旁 路技術(shù),大大減少了對(duì)存儲(chǔ)器的訪問次數(shù),從而降低了芯片功耗。該解碼器架構(gòu)具有很強(qiáng)的 可配置性,可以容易地移植到其它任何規(guī)則或者非規(guī)則的QC-LDPC碼(M,N,b,t)中。該解 碼器芯片成功地應(yīng)用到WiMAX系統(tǒng)之中,解碼性能優(yōu)異,峰值頻率能夠達(dá)到150兆赫茲,吞 吐量可以達(dá)到250兆比特每秒以上,芯片功耗僅有282毫瓦,功耗效率為64皮焦每比特每 次迭代(pj/bit/iteration)。
圖1帶交織和解交織的迭代解碼過程。圖2基于TDMP兩相完全交疊的QC-LDPC解碼器架構(gòu)。圖3對(duì)稱四級(jí)流水線。圖4基矩陣列塊和行塊交織。圖5橫向更新和縱向更新的非零子矩陣重排序。圖6和值寄存器堆奇偶集劃分。圖7和值寄存器堆讀寫旁路和交叉控制。圖8相對(duì)偏移量置換網(wǎng)絡(luò)。圖9橫向更新處理器。圖10提前終止策略。
具體實(shí)施例方式解碼器采用改進(jìn)的TDMP (Turbo-Decoding Message-Passing)解碼算法,即 用歸一化最小和(Normal ized Min-Sum)算法替換TDMP算法中的軟輸入軟輸出引擎 (SISOEngine)。每個(gè)行塊對(duì)應(yīng)一個(gè)子碼(子迭代);所有子碼級(jí)聯(lián)在一起對(duì)應(yīng)一次迭代。信 息不僅在不同迭代之間傳遞,而且在不同子碼(子迭代)之間傳遞。同時(shí),每行只需保存校 驗(yàn)節(jié)點(diǎn)信息組件最小和次小絕對(duì)值、最小值位置、符號(hào)和標(biāo)志位。因此,解碼器不僅能夠達(dá) 到與TDMP算法一樣快的收斂速度,而且能夠最大限度的降低存儲(chǔ)器資源。另外,橫向更新 和縱向更新完完全全交疊在一起,提高了解碼器的吞吐量和硬件資源的使用率。對(duì)于任意QC-LDPC碼(M,N, b,t),M表示基矩陣的行塊數(shù);N表示基矩陣的列塊 數(shù);b表示子矩陣的展開因子;t表示非零子矩陣的總個(gè)數(shù)。對(duì)于本文所設(shè)計(jì)的解碼器,橫向 更新和縱向更新的并行度都是b。假設(shè)(K,k)表示第K次迭代的第k次子迭代;向量S表 示b個(gè)變量節(jié)點(diǎn)和值(對(duì)應(yīng)一個(gè)列塊);矩陣C表示b個(gè)校驗(yàn)節(jié)點(diǎn)信息組件(對(duì)應(yīng)一個(gè)行 塊);向量I表示b個(gè)自信息(對(duì)應(yīng)一個(gè)非零子矩陣);向量E表示b個(gè)兩相之間傳遞的外 信息(對(duì)應(yīng)一個(gè)非零子矩陣)?;诟倪M(jìn)的TDMP兩相完全交疊解碼算法,橫向更新過程如
式(1)_(4)所示。<formula>formula see original document page 9</formula>(1)<formula>formula see original document page 9</formula>(2)<formula>formula see original document page 9</formula>⑶<formula>formula see original document page 9</formula>(4)縱向更新過程如式(5)-(6)所示。<formula>formula see original document page 9</formula>(5)<formula>formula see original document page 9</formula>(6)整個(gè)解碼過程如圖1所示。輸入數(shù)據(jù)流首先進(jìn)入輸入緩沖器,然后根據(jù)地址映射 完成列塊交織,進(jìn)入迭代解碼;輸出比特流同樣根據(jù)地址映射完成列塊解交織,送入輸出緩 沖器?;赥DMP兩相完全交疊的QC-LDPC解碼器架構(gòu)如圖2所示。該結(jié)構(gòu)可以實(shí)現(xiàn)對(duì) 任意規(guī)則和非規(guī)則QC-LDPC碼(M,N, b,t)可配置(擴(kuò)展因子b小于或等于96)。解碼器 由主控制器、只讀存儲(chǔ)器、寄存器堆、可配置相對(duì)偏移量、置換網(wǎng)絡(luò)(置換器)、恢復(fù)器、加法 器、橫向更新處理器和縱向更新處理器組成。其中,寄存器堆包括輸入緩存寄存器堆、輸出 緩存寄存器堆、變量節(jié)點(diǎn)和值寄存器堆和校驗(yàn)節(jié)點(diǎn)信息組件寄存器堆。橫向更新和縱向更 新按行序每個(gè)時(shí)鐘周期分別掃描并處理一個(gè)非零子矩陣。解碼器一次子迭代過程如下先前的變量節(jié)點(diǎn)和值(Sn(K’ H))從和值寄存器堆取 出,穿過一個(gè)獨(dú)立可配置相對(duì)偏移量置換網(wǎng)絡(luò)。同時(shí),恢復(fù)器陣列A從校驗(yàn)節(jié)點(diǎn)信息組件 (C/k—U))恢復(fù)先前的自信息(Ip/-1’15))。所有交換后的和值和恢復(fù)得到的自信息進(jìn)入96 個(gè)加法器所組成的陣列。計(jì)算結(jié)果作為外信息(Eni(K’k)),一方面暫時(shí)保存到和值寄存器堆 中,另一方面輸入到96個(gè)橫向更新處理器,更新校驗(yàn)節(jié)點(diǎn)信息組件。當(dāng)一個(gè)行塊的橫向更 新完成之后,更新之后的信息組件(Cm(K’k))回寫到信息組件寄存器堆;同時(shí)送入恢復(fù)器陣列 B恢復(fù)更新之后的自信息(I『n(K’k))。所有恢復(fù)得到的自信息和從和值寄存器堆讀取的外信息送入96個(gè)縱向更新處理器,更新變量節(jié)點(diǎn)和值(Sn(K’k)),最后寫入和值寄存器堆。由于采用兩相完全交疊技術(shù)以及和值和外信息共享寄存器堆,解決對(duì)和值寄存器 堆的讀寫訪問沖突是關(guān)鍵。為了提高解碼器吞吐量和幫助解決寄存器堆的訪問沖突,本設(shè) 計(jì)提出一種對(duì)稱的四級(jí)流水線結(jié)構(gòu),如圖3所示。橫向更新由三級(jí)流水線組成1)讀取變量節(jié)點(diǎn)和值和校驗(yàn)節(jié)點(diǎn)信息組件(Rd) ;2) 置換和值、恢復(fù)自信息和計(jì)算外信息(Per/Rec/Add) ;3)回寫外信息和更新信息組件(Wr/ Dec)??v向更新同樣由三級(jí)流水線組成1)讀取外信息和恢復(fù)自信息(Rd/Rec) ;2)計(jì)算變 量節(jié)點(diǎn)和值(Add) ;3)回寫更新后的和值(Wr)。因此,橫向更新和縱向更新具有對(duì)稱的三 級(jí)流水線結(jié)構(gòu),對(duì)存儲(chǔ)器的讀寫訪問操作集中在第一級(jí)和第三級(jí)流水線。也就是說,對(duì)于同 一個(gè)寄存器堆地址單元,寫入操作始終發(fā)生在讀取操作的兩個(gè)時(shí)鐘周期之后。當(dāng)使用雙口和值寄存器堆時(shí),橫向更新和縱向更新的第一級(jí)和第三級(jí)流水線可以 相互交疊在一起。因此,整個(gè)迭代解碼流程由四級(jí)流水線組成。對(duì)于采用單一時(shí)鐘的兩相完 全交疊解碼器,和值寄存器堆必須提供兩個(gè)獨(dú)立的讀和寫端口,因?yàn)槊總€(gè)時(shí)鐘周期需要兩次 讀取操作和兩次寫入操作。對(duì)稱流水線表明,寫訪問沖突會(huì)隨著讀訪問沖突的消失而消失。對(duì)于非規(guī)則QC-LDPC碼(M,N,b,t),非零子矩陣隨機(jī)、非均勻地分布在基矩陣中。 如果按照非零子矩陣的原始行序掃描,必然會(huì)導(dǎo)致和值寄存器堆讀寫訪問沖突。分布和相 關(guān)是兩個(gè)描述基矩陣結(jié)構(gòu)的有效系數(shù)。分布表示非零子矩陣的物理地址,包括行塊和列塊 索引。相關(guān)表示連續(xù)兩行塊中都有非零子矩陣的列塊總數(shù)。一種分布映射一種相關(guān);一種 相關(guān)可能映射幾種分布。為了解決和值寄存器堆訪問沖突問題,基矩陣需要做行塊和列塊交織的矩陣變 換。變換之后的基矩陣需要滿足以下兩點(diǎn)1)對(duì)于每一個(gè)行塊,分布在奇數(shù)集合的非零子矩陣個(gè)數(shù)和分布在偶數(shù)集合的非零 子矩陣的個(gè)數(shù)滿足等式|N。dd-N_n| =0|1 ;2)所有連續(xù)兩行相關(guān)的總和盡可能少,包括最后一個(gè)行塊和第一個(gè)行塊?;谝陨蟽牲c(diǎn),WiMAX中QC-LDPC碼(12,24,96,76)的一種行塊和列塊交織如圖4 所示,括號(hào)內(nèi)的數(shù)字表示行塊和列塊的原始位置。行塊和列塊交織信息存儲(chǔ)在只讀存儲(chǔ)器 中。圖5是一種重新排列的非零子矩陣更新順序。橫向更新和縱向更新都按行序串行 掃描,每個(gè)時(shí)鐘周期各處理一個(gè)非零子矩陣。但是,它們之間的更新順序是獨(dú)立的、不同的。 數(shù)據(jù)相關(guān)和流水線導(dǎo)致縱向更新晚于橫向更新十二個(gè)時(shí)鐘周期。行與行之間的更新可以無 縫的連接在一起;整個(gè)流水線中不會(huì)出現(xiàn)任何氣泡(空操作)。不同迭代無縫連接,迭代之 間沒有任何等待周期。在任何一個(gè)時(shí)鐘周期,橫向更新和縱向更新分別掃描奇數(shù)集的非零 子矩陣和偶數(shù)集的非零子矩陣。括號(hào)外的數(shù)字表示列塊索引;括號(hào)內(nèi)的數(shù)字表示列塊索引 除以2的余數(shù)(余數(shù)對(duì)應(yīng)奇偶集)。WiMAX中所有其它碼率都可以通過矩陣變換和重排序 達(dá)到以上目的?;谝陨咸幚?,和值寄存器堆可以通過簡單的奇偶集劃分就可以避免訪問沖突, 如圖6所示。和值寄存器堆提供兩個(gè)獨(dú)立的讀和寫端口。每個(gè)時(shí)鐘周期,橫向更新讀取一個(gè) 列塊的和值,同時(shí)寫入一個(gè)非零子矩陣的外信息;縱向更新讀取一個(gè)非零子矩陣的外信息, 同時(shí)寫入一個(gè)列塊更新后的和值。
一塊深度為N( = 24)的和值寄存器堆劃分為奇偶兩個(gè)集合,分別存儲(chǔ)奇數(shù)列塊和 偶數(shù)列塊的和值和外信息。堆號(hào)(Tbank)和堆地址(Abank)可以通過以下簡單的求模和移位 操作完成Tbank = mod(n,2),(7)Abank = n > > 1。(8)圖7所示為和值寄存器堆的讀寫旁路和交叉控制技術(shù)。兩路輸入信息通過輸入十 字交叉控制模塊,找到相應(yīng)的和值寄存器堆。相反地,兩路輸出信息通過輸出十字交叉控制 模塊,找到相應(yīng)的數(shù)據(jù)通路。十字交叉控制模塊由兩個(gè)列塊索引產(chǎn)生的堆號(hào)控制。旁路控 制模塊根據(jù)橫向更新和縱向更新的列塊索引判斷信息是否可以旁路,即橫向更新所需要的 信息要么從和值寄存器堆讀取,要么直接從縱向更新傳遞過來。傳統(tǒng)解碼器不僅要對(duì)橫向更新讀取的和值進(jìn)行循環(huán)移位,還要對(duì)縱向更新后的和 值進(jìn)行循環(huán)反移位,這樣就需要兩個(gè)置換網(wǎng)絡(luò)。本設(shè)計(jì)通過相對(duì)偏移量置換網(wǎng)絡(luò),即根據(jù)同 一列塊中當(dāng)前非零子矩陣和前一個(gè)非零子矩陣的偏移量差值進(jìn)行循環(huán)移位,省掉縱向更新 中用于和值循環(huán)反移位的置換網(wǎng)絡(luò),如圖8所示。所有列塊前一個(gè)非零子矩陣的偏移量都 存儲(chǔ)在單口寄存器堆中。置換網(wǎng)絡(luò)都由兩個(gè)級(jí)聯(lián)的96路算術(shù)移位器組成。該置換網(wǎng)絡(luò)支 持所有小于或等于96路的循環(huán)移位。當(dāng)一個(gè)非零子矩陣處理完之后,當(dāng)前偏移量作為前一 次偏移量寫入單口寄存器堆中。相對(duì)偏移量的計(jì)算方法很簡單,當(dāng)當(dāng)前偏移量減去前一次 偏移量為正數(shù)時(shí),差值就是相對(duì)偏移量;當(dāng)當(dāng)前偏移量減去前一次偏移量為負(fù)數(shù)時(shí),差值加 上擴(kuò)展因子才是相對(duì)偏移量。圖9所示是一個(gè)橫向更新處理器,由一個(gè)預(yù)處理器、一個(gè)分解器、一個(gè)奇偶校驗(yàn)器 和四個(gè)保持電路組成。預(yù)處理器對(duì)輸入外信息做求絕對(duì)值和求歸一化。分解器串行掃描更 新校驗(yàn)節(jié)點(diǎn)信息組件1)最小絕對(duì)值;2)次小絕對(duì)值;3)最小絕對(duì)值的位置;4)符號(hào)位;5) 標(biāo)志位。奇偶校驗(yàn)器檢驗(yàn)每行是否符合奇偶校驗(yàn),校驗(yàn)結(jié)果送入主控制器控制解碼流程的 中斷。保持電路是為接下來的縱向更新過程保持穩(wěn)定的校驗(yàn)節(jié)點(diǎn)信息組件。所有運(yùn)算單元 在行塊的起始點(diǎn)(行塊同步信號(hào))被同步。本設(shè)計(jì)采用一種特殊的提前終止策略一軟解碼和硬解碼相結(jié)合,如圖10所示。 仿真結(jié)果表明,迭代譯碼最后一次迭代所糾錯(cuò)誤極少,大部分情況下只糾一個(gè)錯(cuò)誤比特。一 個(gè)錯(cuò)誤比特耗費(fèi)一次迭代,效率很低。因此,本發(fā)明提出通過軟解碼糾正絕大部分錯(cuò)誤比 特,通過簡單的硬解碼電路糾正最后一個(gè)錯(cuò)誤比特。假設(shè)某個(gè)錯(cuò)誤比特發(fā)生在某列重為3 的列塊中,通過不滿足奇偶校驗(yàn)方程的行塊內(nèi)的行序號(hào)i、j、k,計(jì)算它們的特征值,與基矩 陣的列塊位置和偏移量相關(guān)聯(lián),定位錯(cuò)誤比特的位置。當(dāng)定位成功時(shí),迭代譯碼(軟解碼) 終止,轉(zhuǎn)入硬解碼;當(dāng)定位失敗時(shí),迭代譯碼(軟解碼)繼續(xù)下去。
權(quán)利要求
一種基于TDMP高速可配置的QC-LDPC碼解碼器,其特征在于由主控制器、只讀存儲(chǔ)器、輸入緩存寄存器堆和輸出緩存寄存器堆、交織器和解交織器、變量節(jié)點(diǎn)和值寄存器堆、校驗(yàn)節(jié)點(diǎn)信息組件寄存器堆、旁路和交叉控制器、可配置相對(duì)偏移量置換網(wǎng)絡(luò)、恢復(fù)器、加法器、奇偶校驗(yàn)器、橫向更新處理器和縱向更新處理器組成,恢復(fù)器包括恢復(fù)器A和恢復(fù)器B,該解碼器橫向更新和縱向更新并行度都是b,b為子矩陣擴(kuò)展因子;該解碼器的數(shù)據(jù)流向如下先前的變量節(jié)點(diǎn)和值從和值寄存器堆取出,經(jīng)過旁路和交叉控制器,再經(jīng)過一個(gè)獨(dú)立可配置相對(duì)偏移量置換網(wǎng)絡(luò);同時(shí),恢復(fù)器陣列A從校驗(yàn)節(jié)點(diǎn)信息組件寄存器堆恢復(fù)先前的自信息;所有置換后的和值和恢復(fù)得到的自信息進(jìn)入96個(gè)加法器所組成的陣列;計(jì)算結(jié)果作為外信息,一方面暫時(shí)保存到和值寄存器堆中,另一方面輸入到96個(gè)橫向更新處理器,更新校驗(yàn)節(jié)點(diǎn)信息組件;當(dāng)一個(gè)行塊的橫向更新完成之后,更新之后的信息組件回寫到信息組件寄存器堆;同時(shí)送入恢復(fù)器陣列B恢復(fù)更新之后的自信息;所有恢復(fù)得到的自信息和從和值寄存器堆讀取的外信息送入96個(gè)縱向更新處理器,更新變量節(jié)點(diǎn)和值,最后寫入和值寄存器堆。
2.如權(quán)利要求1所述的解碼器,其特征在于輸入數(shù)據(jù)流和輸出比特流需要經(jīng)過特殊處 理。輸入數(shù)據(jù)流先按原序?qū)懭胼斎刖彺婕拇嫫鞫?,然后?jīng)過列塊交織進(jìn)行和值寄存器堆初 始化。輸出比特流經(jīng)過列塊解交織寫入輸出緩存寄存器堆,然后輸出到下一級(jí)。
3.如權(quán)利要求1所述的解碼器,其特征在于采用優(yōu)化的TDMP解碼算法,即用歸一化最 小和解碼算法替換TDMP算法中的軟輸入軟輸出引擎,其解碼步驟如下步驟1 按自然順序存儲(chǔ)從信道接收過來的本征信息到輸入緩存寄存器堆中;步驟2 按交織順序從輸入緩存寄存器堆讀出本征信息,初始化變量節(jié)點(diǎn)和值寄存器堆;步驟3 按行序每次掃描一個(gè)非零子矩陣,讀取相應(yīng)變量節(jié)點(diǎn)和值和相應(yīng)校驗(yàn)節(jié)點(diǎn)信 息組件;步驟4 通過一個(gè)相對(duì)偏移量置換網(wǎng)絡(luò)對(duì)和值進(jìn)行循環(huán)移位,同時(shí)通過一個(gè)恢復(fù)器陣 列從信息組件恢復(fù)自信息,最后計(jì)算外信息,即移位后的和值減去恢復(fù)得到的自信息;步驟5 寫外信息、更新校驗(yàn)節(jié)點(diǎn)信息組件、做奇偶校驗(yàn),如果所有行塊都滿足奇偶校 驗(yàn)或者達(dá)到最大迭代次數(shù),轉(zhuǎn)入步驟9 ;步驟6 按行序重新每次掃描一個(gè)非零子矩陣,從和值寄存器堆讀取相應(yīng)外信息,同時(shí) 通過一個(gè)恢復(fù)器陣列恢復(fù)更新后的自信息;步驟7 更新變量節(jié)點(diǎn)和值和硬判決;步驟8 寫回更新后的和值,轉(zhuǎn)入步驟3 ;步驟9:硬判決結(jié)果從置換網(wǎng)絡(luò)送入輸出緩存寄存器堆,通過地址解映射完成列塊解 交織;步驟10 從輸出緩存寄存器堆輸出解碼結(jié)果,解碼結(jié)束。
4.如權(quán)利要求3所述的的解碼器,其特征在于該解碼器采用對(duì)稱四級(jí)流水線結(jié)構(gòu),橫 向更新采用三級(jí)流水線流水線1 讀取變量節(jié)點(diǎn)和值和校驗(yàn)節(jié)點(diǎn)信息組件;流水線2 置換和值、恢復(fù)自信息和計(jì)算外信息;流水線3 寫入暫態(tài)外信息、更新校驗(yàn)節(jié)點(diǎn)信息組件和奇偶校驗(yàn)??v向更新同樣采用三級(jí)流水線流水線1 讀取暫態(tài)外信息和恢復(fù)更新后的自信息;流水線2 更新變量節(jié)點(diǎn)和值以及硬判決;流水線3:回寫更新后的和值;對(duì)于橫向更新和縱向更新,第一級(jí)流水都是存儲(chǔ)器讀操作;第三級(jí)流水都是存儲(chǔ)器寫 操作;使用雙口和值寄存器堆,第一級(jí)流水和第三級(jí)流水可以互相交疊。
5.如權(quán)利要求4所述的解碼器,其特征在于QC-LDPC碼的基矩陣的24個(gè)列塊,以O(shè)到 23依次標(biāo)號(hào),被劃分為奇偶兩個(gè)集合奇數(shù)集合:1、3、5、7、9、11、13、15、17、19、21 和 23 ; 偶數(shù)集合:0、2、4、6、8、10、12、14、16、18、20 和 22。
6.如權(quán)利要求5所述的解碼器,其特征在于對(duì)QC-LDPC碼基矩陣做以下三項(xiàng)預(yù)處理 預(yù)處理1 列塊交織對(duì)基矩陣的列塊進(jìn)行重新排序,對(duì)于每一行塊,確保所有非零子矩陣盡量均等的分布在所述的奇數(shù)集合和偶數(shù)集合;預(yù)處理2 行塊交織對(duì)基矩陣的行塊進(jìn)行重新排序,確保連續(xù)兩行塊的相關(guān)性總和盡 量少;預(yù)處理3 非零子矩陣重排序,對(duì)基矩陣中非零子矩陣的掃描順序進(jìn)行重新排序,確保 每個(gè)時(shí)鐘周期讀取兩個(gè)不同集合的相關(guān)信息。
7.如權(quán)利要求6所述的解碼器,其特征在于將和值寄存器堆劃分為兩個(gè)堆,對(duì)應(yīng)奇數(shù) 集合和偶數(shù)集合和值寄存器堆O 存儲(chǔ)偶數(shù)集合所對(duì)應(yīng)的所有位置的和值和外信息; 和值寄存器堆1 存儲(chǔ)奇數(shù)集合所對(duì)應(yīng)的所有位置的和值和外信息。
8.如權(quán)利要求1所述的解碼器,其特征在于所述的可配置相對(duì)偏移量置換網(wǎng)絡(luò)循環(huán)移 位讀取的和值,即根據(jù)同一列塊中當(dāng)前非零子矩陣和前一個(gè)非零子矩陣的偏移量差值進(jìn)行 循環(huán)移位。
9.如權(quán)利要求1所述的解碼器,其特征在于橫向更新處理器陣列的核心單元包括預(yù)處 理器、分解器、奇偶校驗(yàn)器和保持電路;其中,預(yù)處理器由取反和移位加等電路組成;分解 器由帶反饋回路的比較和選擇電路組成;奇偶校驗(yàn)器由帶反饋回路的兩輸入異或門電路組 成;保持電路由四個(gè)反饋移位寄存器電路組成。保持電路是為向后續(xù)縱向更新單元提供穩(wěn) 定的校驗(yàn)節(jié)點(diǎn)信息組件。
10.如權(quán)利要求1所述的解碼器,其特征在于采用一種特殊的提前終止策略---軟解碼 和硬解碼相結(jié)合,即當(dāng)軟解碼只剩下一個(gè)錯(cuò)誤比特時(shí),軟解碼提前終止,剩下的一個(gè)錯(cuò)誤比 特由非常簡單的硬解碼電路糾正。
全文摘要
本發(fā)明屬于無線通信和微電子技術(shù)領(lǐng)域,具體為基于TDMP的高速可配置QC-LDPC解碼器。該解碼器采用對(duì)稱四級(jí)流水線、行塊和列塊交織、非零子矩陣重排序、和值寄存器堆奇偶集劃分,橫向更新和縱向更新按行序串行掃描,每個(gè)時(shí)鐘周期各處理一個(gè)非零子矩陣等技術(shù)措施。橫向更新和縱向更新完全交疊;和值寄存器堆不僅存儲(chǔ)變量節(jié)點(diǎn)的和值,還存儲(chǔ)兩相之間傳遞的暫態(tài)外信息。解碼器采用相對(duì)偏移量置換網(wǎng)絡(luò),只對(duì)讀取的和值進(jìn)行循環(huán)移位。通過一種獨(dú)特的提前終止策略,可以節(jié)省半次到一次迭代周期。本發(fā)明解碼器架構(gòu)可以非常靈活地應(yīng)用到任何形式的規(guī)則、非規(guī)則QC-LDPC碼。
文檔編號(hào)H03M13/11GK101800559SQ20101012189
公開日2010年8月11日 申請(qǐng)日期2010年3月11日 優(yōu)先權(quán)日2010年3月11日
發(fā)明者向波, 曾曉洋, 鮑丹, 黃雙渠 申請(qǐng)人:復(fù)旦大學(xué)