專利名稱:基于tdmp的超高速低功耗qc-ldpc碼解碼器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于無(wú)線通信和微電子技術(shù)領(lǐng)域,具體涉及一種超高速低功耗可配置QC-LDPC碼解碼器,可以應(yīng)用于超高速的無(wú)線數(shù)字通信、光纖通信、衛(wèi)星通信、多媒體數(shù)字廣播和磁光學(xué)存儲(chǔ)等諸多系統(tǒng)。
背景技術(shù):
低密度奇偶校驗(yàn)碼(LDPC,Low-Density Parity-Check Codes)于20世紀(jì)60年代初由Gallager博士發(fā)明。由于其解碼復(fù)雜度很高,起初30多年不被重視。直到20世紀(jì)90年代中期被重新發(fā)現(xiàn)和證明具有相當(dāng)好的功率有效性,LDPC碼獲得了高速發(fā)展和廣泛運(yùn)用。準(zhǔn)循環(huán)LDPC (QC-LDPC)碼作為其中一個(gè)非常重要的分支,具有線性編碼復(fù)雜度和非常有利的部分并行解碼結(jié)構(gòu),被廣泛地應(yīng)用于如DVB-S2、IEEE 802.11n(WirelessLAN)、IEEE 802.16e(WiMAX)、DTMB和CMMB等系統(tǒng)中。
QC-LDPC碼解碼算法不斷簡(jiǎn)化。Gallager博士提出的兩相迭代解碼算法(Two-PhaseMessage-Passing Algorithm)計(jì)算復(fù)雜,需要大量的指數(shù)運(yùn)算、乘法運(yùn)算和查表運(yùn)算。由于指數(shù)運(yùn)算數(shù)據(jù)動(dòng)態(tài)范圍特別大、解碼不夠穩(wěn)定,解碼算法從實(shí)數(shù)域演進(jìn)到對(duì)數(shù)似然比(Logarithmic Likelihood Ratio)解碼算法。基于此,出現(xiàn)了三種簡(jiǎn)化解碼算法1)最小和解碼算法(Min-Sum);2)基于偏移量最小和(Offset-Based Min-Sum)解碼算法;3)歸一化最小和(Normalized Min-Sum)解碼算法。第一種算法解碼復(fù)雜度最低,但性能較差;第二、三種算法在解碼復(fù)雜度和性能上取得折中。歸一化最小和解碼算法由于能最大限度的降低保存中間信息的存儲(chǔ)器資源,被廣泛采用。為了加快收斂速度,出現(xiàn)了基于Turbo碼信息傳遞的解碼算法(Turbo-Decoding Message-Passing Algorithm)。
解碼結(jié)構(gòu)不斷更新。理論上存在三種典型的解碼硬件結(jié)構(gòu)1)全串行結(jié)構(gòu);2)部分并行結(jié)構(gòu);3)全并行結(jié)構(gòu)。QC-LDPC碼的特點(diǎn)是碼長(zhǎng)越長(zhǎng),性能越好。為了獲得最好的性能,絕大部分QC-LDPC碼碼長(zhǎng)介于1000到10000之間。折中考慮面積和吞吐量,部分并行的結(jié)構(gòu)被絕大部分解碼器采用。隨之而來(lái)產(chǎn)生了很多部分并行解碼器,不同之處只在于橫向更新和縱向更新的并行度。對(duì)于QC-LDPC碼(M,N,b,t),典型的部分并行度有k×M、k×N和k×b(k是一個(gè)大于零的實(shí)數(shù),比如1、2、3、4、1/2、1/3、1/4等等)。
隨著現(xiàn)代通信廣播系統(tǒng)向著超高數(shù)據(jù)吞吐率、大容量、高可靠性的方向發(fā)展,以及標(biāo)準(zhǔn)層出不窮和多樣化,一種可以兼容多標(biāo)準(zhǔn)的超高速可配置QC-LDPC解碼器硬件結(jié)構(gòu)成為大勢(shì)所趨。同時(shí)隨著無(wú)線通信廣播的高速發(fā)展,以及便攜式移動(dòng)終端用戶群不斷擴(kuò)大,超低功耗實(shí)現(xiàn)尤為重要。
發(fā)明內(nèi)容
本發(fā)明的目的在于提出一種吞吐量大、芯片功耗低、可避免存儲(chǔ)器訪問(wèn)沖突的可配置QC-LDPC碼解碼器。
在保證解碼性能的前提下,本發(fā)明需要解決以下四個(gè)關(guān)鍵技術(shù)問(wèn)題。
可配置性解碼結(jié)構(gòu)能夠很好的移植到其它任何規(guī)則或者非規(guī)則的QC-LDPC碼(M,N,b,t)中。全串行結(jié)構(gòu)具有可配置性,但解碼吞吐量極低。全并行結(jié)構(gòu)解碼吞吐量高(所有行或者所有列同時(shí)并行更新),但缺乏可配置性。典型的部分并行結(jié)構(gòu)不僅具有較高的吞吐量,而且具有較強(qiáng)的可配置性。
吞吐量在可配置性較強(qiáng)的基礎(chǔ)上,最大限度的提高解碼吞吐量。對(duì)于QC-LDPC碼(M,N,b,t),并行度為M、N或者b時(shí),解碼器能夠達(dá)到的吞吐量一般小于250兆比特每秒(Mb/s)。為了進(jìn)一步提高吞吐量,并行度需要提高到M、N或者b的整數(shù)倍k(k大于1)。本文設(shè)計(jì)的目標(biāo)是當(dāng)工作在200兆赫茲和10次迭代時(shí),解碼器能夠達(dá)到1千兆比特每秒(Gb/s)左右。
芯片功耗在滿足可配置性和吞吐量要求的情況下,最大限度的降低芯片功耗。比如減少存儲(chǔ)器資源、降低存儲(chǔ)器訪問(wèn)次數(shù)、減少算術(shù)邏輯單元、降低寄存器翻轉(zhuǎn)次數(shù)等等。本文設(shè)計(jì)的目標(biāo)是對(duì)于WiMAX中的QC-LDPC碼(M,N,b,t),功耗效率能夠小于50皮焦每比特每次迭代(pJ/bit/iteration)。
存儲(chǔ)器訪問(wèn)沖突對(duì)于QC-LDPC碼(M,N,b,t),并行度為M、N或者b時(shí),部分并行解碼器一般不存在存儲(chǔ)器訪問(wèn)沖突。當(dāng)并行度提高到M、N或者b的整數(shù)倍k(k大于1)時(shí),大量的存儲(chǔ)器訪問(wèn)沖突就會(huì)出現(xiàn)。在避免使用更多存儲(chǔ)器資源的情況下,如何解決存儲(chǔ)器訪問(wèn)沖突是一大難點(diǎn)。
本發(fā)明提出的基于TDMP的QC-LDPC碼解碼器,如圖2所示,由主控制器(CentralController)、可配置只讀存儲(chǔ)器(ROM)、輸入緩存寄存器堆(I_BUF Bank)、變量節(jié)點(diǎn)和值寄存器堆(SUM Bank)、校驗(yàn)節(jié)點(diǎn)信息組件寄存器堆(MAG、POS、FLAG、SIGN Banks)(圖中為絕對(duì)值、位置、標(biāo)志位寄存器堆和符號(hào)堆存器)、算術(shù)邏輯運(yùn)算單元(ALU)和輸出緩存寄存器堆(O_BUF Bank)組成。四塊只讀存儲(chǔ)器(ROM)分別存儲(chǔ)列塊交織相關(guān)信息、橫向更新相關(guān)信息、縱向更新相關(guān)信息和偏移量調(diào)整信息。該解碼器橫向處理并行度為b,b為子矩陣擴(kuò)展因子;縱向處理并行度為2×b。算術(shù)邏輯單元包括兩個(gè)獨(dú)立的b路置換網(wǎng)絡(luò)(置換網(wǎng)絡(luò)A、置換網(wǎng)絡(luò)B)、四個(gè)獨(dú)立的b路恢復(fù)器陣列(恢復(fù)器陣列A1、B1、A2、B2)、一個(gè)b路橫向更新處理器堆(b CNU Processors)和一個(gè)b路縱向更新處理器堆(b VNU Processors)。一路橫向更新處理器包括加法單元、分解單元、奇偶校驗(yàn)單元和保持電路;一路縱向更新處理器包括加法單元和硬判決電路。
所述解碼器的數(shù)據(jù)流程如下 橫向更新和縱向更新按行序每個(gè)時(shí)鐘周期分別掃描并處理兩個(gè)非零子矩陣。先前的變量節(jié)點(diǎn)和值從和值寄存器堆取出,經(jīng)過(guò)兩個(gè)獨(dú)立可配置置換網(wǎng)絡(luò)A、B。同時(shí),恢復(fù)器陣列A1和B1從校驗(yàn)節(jié)點(diǎn)信息組件恢復(fù)先前的自信息。所有經(jīng)過(guò)置換網(wǎng)絡(luò)的和值和恢復(fù)得到的自信息進(jìn)入96個(gè)橫向更新處理器,更新校驗(yàn)節(jié)點(diǎn)信息組件。橫向更新所得外信息暫時(shí)存儲(chǔ)到和值寄存器堆。當(dāng)一個(gè)行塊的橫向更新完成之后,更新之后的信息組件回寫到信息組件寄存器堆;同時(shí)送入恢復(fù)器陣列A2和B2恢復(fù)更新之后的自信息。所有恢復(fù)得到的自信息和從和值寄存器堆讀取的外信息送入192個(gè)縱向更新處理器,更新變量節(jié)點(diǎn)和值,最后寫入和值寄存器堆。
本發(fā)明設(shè)計(jì)的解碼器,采用優(yōu)化的TDMP解碼算法,即用歸一化最小和解碼算法(Normalized Min Sum)替換TDMP算法中的軟輸入軟輸出引擎(SISO engine),其解碼步驟如下 步驟1按自然順序存儲(chǔ)從信道接收過(guò)來(lái)的本征信息到輸入緩存寄存器堆中; 步驟2按交織順序從輸入緩存寄存器堆讀出本征信息(通過(guò)地址映射完成列塊交織),初始化變量節(jié)點(diǎn)和值寄存器堆; 步驟3按行序每次掃描兩個(gè)非零子矩陣,并行讀取相應(yīng)變量節(jié)點(diǎn)和值(兩個(gè)列塊)和相應(yīng)校驗(yàn)節(jié)點(diǎn)信息組件(一個(gè)行塊); 步驟4通過(guò)兩個(gè)置換網(wǎng)絡(luò)置換和值,同時(shí)通過(guò)兩個(gè)恢復(fù)器陣列從信息組件恢復(fù)自信息; 步驟5通過(guò)橫向更新處理器,計(jì)算外信息(置換后的和值減去恢復(fù)得到的自信息); 步驟6寫外信息、更新校驗(yàn)節(jié)點(diǎn)信息組件、做奇偶校驗(yàn)等等,如果所有行塊都滿足奇偶校驗(yàn)或者達(dá)到最大迭代次數(shù),轉(zhuǎn)入步驟11; 步驟7按行序重新每次掃描兩個(gè)非零子矩陣,從和值寄存器堆讀取相應(yīng)外信息(兩個(gè)列塊); 步驟8通過(guò)兩個(gè)恢復(fù)器陣列恢復(fù)更新后的自信息; 步驟9更新變量節(jié)點(diǎn)和值和硬判決; 步驟10寫回更新后的和值,轉(zhuǎn)入步驟3; 步驟11硬判決結(jié)果從置換網(wǎng)絡(luò)送入輸出緩存寄存器堆,通過(guò)地址解映射完成列塊解交織; 步驟12從輸出緩存寄存器堆輸出解碼結(jié)果,解碼結(jié)束; 其中,步驟3、4、5和6屬于橫向更新過(guò)程;步驟7、8、9和10屬于縱向更新過(guò)程。一次子迭代按照步驟3、4、5、6、7、8、9和10完成一個(gè)行塊更新;一次迭代按照步驟3、4、5、6、7、8、9和10完成所有行塊更新。
本發(fā)明設(shè)計(jì)的解碼器采用對(duì)稱六級(jí)流水線(Symmetrical Six-Stage Pipelining)結(jié)構(gòu)以提高吞吐量和幫助解決和值寄存器堆訪問(wèn)沖突。橫向更新采用四級(jí)流水線(Four-StagePipelining) 流水線1讀取變量節(jié)點(diǎn)和值和校驗(yàn)節(jié)點(diǎn)信息組件(Rd); 流水線2置換和值和恢復(fù)自信息; 流水線3計(jì)算外信息; 流水線4寫入暫態(tài)外信息、更新校驗(yàn)節(jié)點(diǎn)信息組件和奇偶校驗(yàn)(Wr)。
縱向更新同樣采用四級(jí)流水線(Four-Stage Pipelining) 流水線1讀取暫態(tài)外信息(Rd); 流水線2恢復(fù)更新后的自信息; 流水線3更新變量節(jié)點(diǎn)和值以及硬判決; 流水線4回寫更新后的和值(Wr)。
對(duì)于橫向更新和縱向更新,第一級(jí)流水都是存儲(chǔ)器讀操作;第四級(jí)流水都是存儲(chǔ)器寫操作。使用雙口和值寄存器堆(Two-Port Register File),第一級(jí)流水和第四級(jí)流水可以互相交疊。因此,整個(gè)解碼流程采用的是對(duì)稱的六級(jí)流水線結(jié)構(gòu)。對(duì)于同一存儲(chǔ)器地址,寫操作始終發(fā)生在讀操作三個(gè)時(shí)鐘周期之后。對(duì)稱性帶來(lái)的好處是只需解決存儲(chǔ)器讀訪問(wèn)沖突,而寫訪問(wèn)沖突隨著讀訪問(wèn)沖突的消失而消失。
本發(fā)明中,QC-LDPC碼的基矩陣(Base Matrix)的24個(gè)列塊(以0到23依次標(biāo)號(hào))被劃分為四個(gè)象限(Four Quadrants) 象限00、4、8、12、16和20; 象限11、5、9、13、17和21; 象限22、6、10、14、18和22; 象限33、7、11、15、19和23。
本發(fā)明中,為了解決和值寄存器堆讀訪問(wèn)沖突,需要對(duì)QC-LDPC碼基矩陣做以下三項(xiàng)預(yù)處理(Preprocessing) 預(yù)處理1列塊交織(Block Column Interleaving); 預(yù)處理2行塊交織(Block Row Interleaving); 預(yù)處理3非零子矩陣重排序(Nonzero Sub-matrix Reordering)。
預(yù)處理1對(duì)基矩陣的列塊進(jìn)行重新排序,對(duì)于每一行塊,確保所有非零子矩陣盡量均等的分布在所述的四個(gè)不同象限之中。
預(yù)處理2對(duì)基矩陣的行塊進(jìn)行重新排序,確保連續(xù)兩行塊的相關(guān)性總和(相關(guān)性定義對(duì)于連續(xù)兩行塊,同時(shí)有非零子矩陣的列塊個(gè)數(shù))盡量少。
預(yù)處理3對(duì)基矩陣中非零子矩陣的掃描順序進(jìn)行重新排序,確保每個(gè)時(shí)鐘周期讀取四個(gè)不同象限的相關(guān)信息。
所有三項(xiàng)預(yù)處理不是唯一的。
本發(fā)明中,和值寄存器堆被劃分為四個(gè)堆(Bank),對(duì)應(yīng)四個(gè)象限(Quadrant) 和值寄存器堆0存儲(chǔ)象限0所對(duì)應(yīng)的所有位置的和值和外信息; 和值寄存器堆1存儲(chǔ)象限1所對(duì)應(yīng)的所有位置的和值和外信息; 和值寄存器堆2存儲(chǔ)象限2所對(duì)應(yīng)的所有位置的和值和外信息; 和值寄存器堆3存儲(chǔ)象限3所對(duì)應(yīng)的所有位置的和值和外信息; 四個(gè)和值寄存器堆不僅存儲(chǔ)變量節(jié)點(diǎn)的和值,而且作為FIFO存儲(chǔ)兩相之間傳遞的暫態(tài)外信息。對(duì)于存儲(chǔ)器同一地址,信息讀寫順序如下 讀取和值(Rd)→寫入暫態(tài)外信息(Wr)→讀取暫態(tài)外信息(Rd)→回寫更新后的和值(Wr)。
對(duì)于6比特量化,該操作可以省掉11520比特額外存儲(chǔ)單元。
本發(fā)明中,為了最大限度降低芯片功耗,本文引入存儲(chǔ)器讀寫旁路技術(shù)(Read-WriteBypass Technique)。由于基矩陣的列重(Column Weight)大于等于二,每一列塊都存在非零子矩陣的相關(guān)性(Correlation)。當(dāng)兩個(gè)非零子矩陣的距離滿足一定的限制時(shí),讀寫旁路就可引入。即當(dāng)橫向更新正準(zhǔn)備讀取縱向更新即將要寫入的數(shù)據(jù)單元時(shí),縱向更新后的數(shù)據(jù)直接傳到橫向更新單元(不經(jīng)過(guò)存儲(chǔ)器)。這樣做的好處是可以省掉很大一部分的存儲(chǔ)器讀寫功耗。針對(duì)WiMAX中的QC-LDPC碼,24.3%-48.8%的存儲(chǔ)器讀寫操作可以被旁路。
本發(fā)明中,解碼器有兩個(gè)可配置的96路置換網(wǎng)絡(luò)(Permutation Network)處理雙通道數(shù)據(jù)。每個(gè)置換網(wǎng)絡(luò)由兩個(gè)級(jí)聯(lián)的算術(shù)移位器(Logarithmic Shifter)組成。第一個(gè)算術(shù)移位器移位寬度(Shift Width)是一個(gè)小于b的任意正整數(shù)(b≤96),因此需要七級(jí)級(jí)聯(lián)移位;第二個(gè)算術(shù)移位器移位寬度(Shift Width)是一個(gè)小于b且被4整除的任意正整數(shù),因此只需要五級(jí)級(jí)聯(lián)移位,省掉兩級(jí)。與當(dāng)前其它可配置置換網(wǎng)絡(luò)相比,可以節(jié)省14.2%(2/(2×7))的硬件資源。
本發(fā)明中,解碼器有四個(gè)恢復(fù)器陣列(Recoverer)恢復(fù)所需的自信息橫向更新兩個(gè);縱向更新兩個(gè)。每路恢復(fù)器由一個(gè)核心的四選一選擇器(Four-to-One Multiplexer)組成。為了避免在橫向更新處理器中使用減法單元(減法需要額外的1的補(bǔ)碼和加1操作),本文只需改變相應(yīng)兩個(gè)恢復(fù)器陣列中的選擇器的真值表。這樣做的好處是在沒(méi)有任何硬件代價(jià)的情況下,橫向更新處理器陣列采用了更加簡(jiǎn)單的加法操作單元替代減法操作單元,節(jié)省大量的芯片面積。
本發(fā)明中,橫向更新處理器陣列(CNU Processors)的核心單元包括加法單元(Adder)、分解單元(Decomposer)、奇偶校驗(yàn)單元(Parity Checker)和保持電路(Holding Circuit)。由于采用雙通道并行計(jì)算,每個(gè)橫向更新處理器需要兩個(gè)兩輸入加法單元,一個(gè)以兩輸入比較和選擇(Compare-and-Select)為核心的分解單元,一個(gè)以三輸入異或門(Xor Gate)為核心的奇偶校驗(yàn)單元和四個(gè)以反饋移位寄存器(Feedback Shift Register)為核心的保持電路。保持電路是為了向后續(xù)縱向更新單元提供穩(wěn)定的校驗(yàn)節(jié)點(diǎn)信息組件(無(wú)需從存儲(chǔ)器中讀取),從而只需面積更小的單口存儲(chǔ)器存儲(chǔ)校驗(yàn)節(jié)點(diǎn)信息組件。
根據(jù)本發(fā)明方案,本發(fā)明采取了如下一些技術(shù)措施。
A)雙通道并行計(jì)算(Dual-Path Parallel Computing) 橫向更新和縱向更新都是按行序串行掃描整個(gè)基矩陣。掃描完一行對(duì)應(yīng)一次子迭代;掃描完整個(gè)矩陣對(duì)應(yīng)一次迭代。與傳統(tǒng)的每次掃描處理一個(gè)非零子矩陣不同,橫向更新和縱向更新每個(gè)時(shí)鐘周期都掃描兩個(gè)非零子矩陣,并行處理。這樣解碼延時(shí)可以縮短一半;吞吐量提高一倍。
B)兩相完全交疊(Fully-Overlapped Two Phases) 傳統(tǒng)設(shè)計(jì)當(dāng)中,兩相是交替進(jìn)行,或者是部分交疊在一起的,交疊長(zhǎng)度取決于數(shù)據(jù)依賴性(Data Dependency)。本發(fā)明完全克服了數(shù)據(jù)依賴關(guān)系,橫向更新和縱向更新完完全全交疊在一起;同時(shí)保證如Turbo碼信息傳遞解碼算法一樣,橫向更新始終使用縱向更新的最新結(jié)果(“最新”的定義依據(jù)同一列塊中非零子矩陣的依賴關(guān)系)。這樣解碼延時(shí)可以再縮短一半;吞吐量再提高一倍。
C)對(duì)稱六級(jí)流水線(Symmetrical Six-Stage Pipelining) 為了提高吞吐量和幫助解決存儲(chǔ)器讀寫訪問(wèn)沖突,本發(fā)明采用對(duì)稱六級(jí)流水線結(jié)構(gòu)。對(duì)稱性體現(xiàn)在1)橫向更新采用四級(jí)流水線,縱向更新采用四級(jí)流水線;2)對(duì)于橫向和縱向更新,第一級(jí)和最后一級(jí)都是對(duì)存儲(chǔ)器的讀寫訪問(wèn)。當(dāng)使用雙口和值寄存器堆時(shí),橫向更新和縱向更新的第一級(jí)和最后一級(jí)相互交疊在一起。對(duì)于同一個(gè)存儲(chǔ)器地址單元,寫操作始終發(fā)生在讀操作的三個(gè)時(shí)鐘周期之后;也就是說(shuō),如果解決了存儲(chǔ)器讀訪問(wèn)沖突,存儲(chǔ)器寫訪問(wèn)沖突就會(huì)自然而然消失。
D)基矩陣列塊交織(Block Column Interleaving) 這是對(duì)基矩陣預(yù)處理的第一步。對(duì)基矩陣的列塊進(jìn)行重新排序,對(duì)于每一行塊,確保所有非零子矩陣盡量均等的分布在四個(gè)不同象限之中。對(duì)于雙通道并行計(jì)算和兩相完全交疊解碼器,通過(guò)簡(jiǎn)單的存儲(chǔ)器四象限劃分,就可以有效地避免存儲(chǔ)器訪問(wèn)沖突。
E)基矩陣行塊交織(Block Row Interleaving) 這是對(duì)基矩陣預(yù)處理的第二步。對(duì)基矩陣的行塊進(jìn)行重新排序,確保連續(xù)兩行塊的相關(guān)性總和(相關(guān)性定義對(duì)于連續(xù)兩行塊,同時(shí)有非零子矩陣的列塊個(gè)數(shù))盡量少。相關(guān)性表明解碼流程中數(shù)據(jù)的相互依賴關(guān)系;相關(guān)性小可以有效地降低流水線氣泡,使解碼能夠緊湊的進(jìn)行。
F)非零子矩陣重排序(Nonzero Sub-matrix Reordering) 這是對(duì)基矩陣預(yù)處理的第三步。對(duì)基矩陣中非零子矩陣的橫向更新掃描順序和縱向更新掃描順序進(jìn)行重新排序。對(duì)于雙通道并行計(jì)算和兩相完全交疊解碼器,確保每個(gè)時(shí)鐘周期并行讀取四個(gè)不同象限的相關(guān)信息。
G)和值寄存器堆四象限劃分(Sum Memory Partition With Four Quadrants) 雙口和值寄存器堆劃分為四個(gè)象限,可以同時(shí)提供四個(gè)獨(dú)立的讀取或者寫入端口。經(jīng)過(guò)基矩陣行塊交織、基矩陣列塊交織和非零子矩陣重排序,解碼器每個(gè)時(shí)鐘周期都從四個(gè)不同象限讀取或者寫入相關(guān)信息。因此,和值寄存器堆四象限劃分可以避免為增加端口使用大量的額外存儲(chǔ)單元。
H)和值寄存器堆讀寫旁路(Read-Write Bypass to Sum Memory) 本發(fā)明計(jì)引入大量和值寄存器堆讀寫旁路技術(shù),降低芯片功耗。同一列塊中,非零子矩陣的相關(guān)性表明了數(shù)據(jù)的依賴關(guān)系。當(dāng)兩個(gè)非零子矩陣的距離滿足設(shè)定的界限時(shí),縱向更新的和值可以直接傳到橫向更新單元,避免使用兩次存儲(chǔ)器訪問(wèn)操作寫入和值和讀取和值。在本發(fā)明中,多達(dá)24.3-48.8%的存儲(chǔ)器訪問(wèn)操作可以被旁路。
I)避免使用FIFO(No FIFO) 對(duì)于很多QC-LDPC解碼器,橫向更新和縱向更新之間存在一個(gè)很大的FIFO存儲(chǔ)兩相之間傳遞的外信息。FIFO的大小跟行重成正比例關(guān)系。在本發(fā)明中,和值寄存器堆通過(guò)四象限劃分,不僅存儲(chǔ)變量節(jié)點(diǎn)和值,還存儲(chǔ)兩相之間傳遞的外信息。因此,在沒(méi)有任何硬件代價(jià)的情況下,本設(shè)計(jì)避免使用FIFO,節(jié)省了芯片面積,同時(shí)降低了芯片功耗。
J)可配置置換網(wǎng)絡(luò)(Configurable Permutation Network) 本發(fā)明提出另外一種可配置置換網(wǎng)絡(luò)由兩個(gè)96路算術(shù)移位器級(jí)聯(lián)組成。根據(jù)WiMAX的特點(diǎn),第一個(gè)算術(shù)移位器需要七級(jí),而第二個(gè)算術(shù)移位器只需要五級(jí)。因此,該設(shè)計(jì)可以節(jié)省14.2%的硬件資源。
有益效果 該QC-LDPC碼解碼器實(shí)現(xiàn)了雙通道并行計(jì)算和兩相完全交疊,克服了存儲(chǔ)器訪問(wèn)沖突,避免使用大的FIFO資源,大大降低了芯片面積、提高了解碼吞吐量和硬件資源使用率。同時(shí)通過(guò)旁路技術(shù),大大減少了對(duì)存儲(chǔ)器的訪問(wèn)次數(shù),從而降低了芯片功耗。該解碼器架構(gòu)具有很強(qiáng)的可配置性,可以容易地移植到其它任何規(guī)則或者非規(guī)則的QC-LDPC碼(M,N,b,t)。該解碼器芯片成功地應(yīng)用到WiMAX系統(tǒng)之中,解碼性能優(yōu)異,峰值頻率能夠達(dá)到214兆赫茲,吞吐量可以達(dá)到1千兆比特每秒左右,芯片功耗僅有397毫瓦。
圖1帶交織和解交織的迭代解碼過(guò)程。
圖2基于雙通道并行計(jì)算和兩相完全交疊的QC-LDPC解碼器架構(gòu)。
圖3對(duì)稱六級(jí)流水線。
圖4基矩陣行塊和列塊交織。
圖5非零子矩陣重排序。
圖6和值寄存器堆四象限劃分。
圖7和值寄存器堆讀寫旁路技術(shù)。
圖8可配置置換網(wǎng)絡(luò)。
圖9自信息恢復(fù)器。
圖10雙通道橫向更新處理器。
具體實(shí)施例方式 解碼器采用改進(jìn)的TDMP(Turbo-Decoding Message-Passing)解碼算法,即用歸一化最小和(Normalized Min-Sum)算法替換TDMP算法中的軟輸入軟輸出引擎(SISO Engine)。每個(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ǔ)器資源。另外,橫向更新和縱向更新采用雙通道并行計(jì)算和兩相完全交疊技術(shù),進(jìn)一步提高了解碼器的吞吐量和硬件資源的使用率。
對(duì)于任意QC-LDPC碼(M,N,b,t),M表示基矩陣的行塊數(shù);N表示基矩陣的列塊數(shù);b表示子矩陣的展開(kāi)因子;t表示非零子矩陣的總個(gè)數(shù)。對(duì)于本發(fā)明所設(shè)計(jì)的解碼器,橫向更新并行度為b,縱向更新并行度為2×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雙通道并行計(jì)算和兩相完全交疊解碼算法,橫向更新過(guò)程如式(1)-(4)所示。
縱向更新過(guò)程如式(5)-(6)所示。
輸入數(shù)據(jù)流首先進(jìn)入輸入緩沖器,然后根據(jù)地址映射完成列塊交織,進(jìn)入迭代解碼;輸出比特流同樣根據(jù)地址映射完成列塊解交織,送入輸出緩沖器。整個(gè)解碼過(guò)程如圖1所示。
基于雙通道并行計(jì)算和兩相完全交疊的QC-LDPC解碼器架構(gòu)如圖2所示。該結(jié)構(gòu)不僅兼容所有WiMAX中的114種模式,而且可以實(shí)現(xiàn)對(duì)任意規(guī)則和非規(guī)則QC-LDPC碼(M,N,b,t)可配置。解碼器由主控制器、只讀存儲(chǔ)器、寄存器堆、置換網(wǎng)絡(luò)、恢復(fù)器、橫向更新處理器和縱向更新處理器組成。橫向更新處理器包括加法器、分解器、奇偶校驗(yàn)器和保持電路;縱向更新處理器包括加法器和硬判決器。
存儲(chǔ)器占據(jù)了芯片的大部分面積。單口ROM COL_MAP保存列塊交織信息,控制輸入數(shù)據(jù)流交織和輸出比特流解交織。單口ROM CNU_COL_OFFSET保存橫向更新中非零子矩陣的更新順序和對(duì)應(yīng)偏移量。單口ROM VNU_COL保存保存縱向更新中非零子矩陣的更新順序。單口ROM OFFSET_ADJUST保存不同模式下偏移量的調(diào)整信息。雙口寄存器堆PRE_OFFSET保存當(dāng)前更新的非零子矩陣所在列的前一個(gè)非零子矩陣的偏移量。雙口和值寄存器堆不僅保存變量節(jié)點(diǎn)和值,而且保存兩相之間傳遞的外信息。單口最小值、位置和標(biāo)志位寄存器堆以及雙口符號(hào)寄存器堆保存校驗(yàn)節(jié)點(diǎn)信息組件。此外,還有輸入緩沖寄存器堆和輸出緩沖寄存器堆。
橫向更新和縱向更新按行序每個(gè)時(shí)鐘周期分別掃描并處理兩個(gè)非零子矩陣。先前的變量節(jié)點(diǎn)和值
和
從和值寄存器堆取出,穿過(guò)兩個(gè)獨(dú)立可配置置換網(wǎng)絡(luò)。同時(shí),恢復(fù)器陣列A1和B1從校驗(yàn)節(jié)點(diǎn)信息組件(Cm(K-1,k))恢復(fù)先前的自信息(
和
)。所有交換后的和值和恢復(fù)得到的自信息進(jìn)入96個(gè)橫向更新處理器,更新校驗(yàn)節(jié)點(diǎn)信息組件。橫向更新所得外信息(
和
)暫時(shí)存儲(chǔ)到和值寄存器堆。當(dāng)一個(gè)行塊的橫向更新完成之后,更新之后的信息組件(Cm(K,k)回寫到信息組件寄存器堆;同時(shí)送入恢復(fù)器陣列A2和B2恢復(fù)更新之后的自信息(
和
)。所有恢復(fù)得到的自信息和從和值寄存器堆讀取的外信息送入192個(gè)縱向更新處理器,更新變量節(jié)點(diǎn)和值(
和
),最后寫入和值寄存器堆。
由于以下三點(diǎn)雙通道并行計(jì)算、兩相完全交疊、和值和外信息共享寄存器堆,對(duì)和值寄存器堆的讀寫訪問(wèn)是解碼的關(guān)鍵點(diǎn)。為了提高吞吐量和幫助解決寄存器堆的訪問(wèn)沖突,本發(fā)明提出一種對(duì)稱的六級(jí)深度流水線結(jié)構(gòu),如圖3所示。
橫向更新由四級(jí)流水線組成1)讀取變量節(jié)點(diǎn)和值和校驗(yàn)節(jié)點(diǎn)信息組件(Rd);2)置換和值和恢復(fù)自信息(Per/Rec);3)計(jì)算分解器的輸入信息,即外信息(Add);4)回寫外信息和更新信息組件(Wr/Dec)??v向更新同樣由四級(jí)流水線組成1)讀取外信息(Rd);2)恢復(fù)自信息(Rec);3)計(jì)算變量節(jié)點(diǎn)和值(Add);4)回寫更新后的和值(Wr)。理論上,由于沒(méi)有數(shù)據(jù)相關(guān)性,縱向更新中的前兩級(jí)流水線(讀入外信息和恢復(fù)自信息)可以同時(shí)處理。但是,為了幫助解決寄存器堆訪問(wèn)沖突,讀取外信息提前一個(gè)時(shí)鐘周期處理。因此,橫向更新和縱向更新具有對(duì)稱的四級(jí)流水線結(jié)構(gòu),對(duì)存儲(chǔ)器的讀寫訪問(wèn)操作集中在第一級(jí)和第四級(jí)流水線。也就是說(shuō),對(duì)于同一個(gè)寄存器堆地址單元,寫入操作始終發(fā)生在讀取操作的三個(gè)時(shí)鐘周期之后。
當(dāng)使用雙口和值寄存器堆時(shí),橫向更新和縱向更新的第一級(jí)和第四級(jí)流水線可以相互交疊在一起。因此,整個(gè)迭代解碼流程由六級(jí)流水線組成。對(duì)于雙通道并行計(jì)算和兩相完全交疊解碼器,和值寄存器堆必須提供四個(gè)獨(dú)立的讀和寫端口,因?yàn)槊總€(gè)時(shí)鐘周期需要四次讀取操作和四次寫入操作。對(duì)稱流水線表明,寫訪問(wèn)沖突會(huì)隨著讀訪問(wèn)沖突的消失而消失。所以本設(shè)計(jì)只專注于如何解決讀訪問(wèn)沖突問(wèn)題。
對(duì)于非規(guī)則QC-LDPC碼(M,N,b,t),非零子矩陣隨機(jī)、非均勻地分布在基矩陣中。如果按照非零子矩陣的原始行序掃描,必然會(huì)導(dǎo)致和值寄存器堆讀寫訪問(wèn)沖突。分布和相關(guān)是兩個(gè)描述基矩陣結(jié)構(gòu)的有效系數(shù)。分布表示非零子矩陣的物理地址,包括行塊和列塊索引。相關(guān)表示連續(xù)兩行塊中都有非零子矩陣的列塊總數(shù)。一種分布映射一種相關(guān);一種相關(guān)可能映射幾種分布。
為了解決和值寄存器堆訪問(wèn)沖突問(wèn)題,基矩陣需要做行塊和列塊交織的矩陣變換。變換之后的基矩陣盡可能滿足以下三點(diǎn) 1)對(duì)于每一個(gè)行塊,奇數(shù)列的非零子矩陣個(gè)數(shù)和偶數(shù)列的非零子矩陣的個(gè)數(shù)幾乎相等(|Nodd-Neven|=0|1); 2)非零子矩陣盡量均等的分布在所述的四個(gè)不同象限; 3)所有相關(guān)的總和盡可能少,包括最后一個(gè)行塊和第一個(gè)行塊(邏輯上連續(xù))。
基于以上三點(diǎn),WiMAX中QC-LDPC碼(12,24,96,76)的一種行塊和列塊交織如圖4所示,括號(hào)內(nèi)的數(shù)字表示行塊和列塊的原始位置。行塊和列塊交織信息存儲(chǔ)在ROM中。圖5是一種重新排列的非零子矩陣更新順序。橫向更新和縱向更新都按行序串行掃描,每個(gè)時(shí)鐘周期各處理兩個(gè)非零子矩陣。但是,它們之間的更新順序是獨(dú)立的、不同的。數(shù)據(jù)相關(guān)和流水線導(dǎo)致縱向更新晚于橫向更新六個(gè)時(shí)鐘周期。該QC-LDPC碼的行重是6或者7??紤]到解碼過(guò)程的對(duì)稱性和規(guī)則性,掃描完每個(gè)行塊都花費(fèi)四個(gè)時(shí)鐘周期。整個(gè)流水線中會(huì)有少量的流水線氣泡(空操作)。不同迭代無(wú)縫連接,迭代之間沒(méi)有任何等待周期??傊?,基矩陣變換和非零子矩陣重排序不是唯一的,而且只是改變更新順序而無(wú)任何性能損失。
如圖5所示,橫向更新和縱向更新的第一行都是掃描偶數(shù)列的非零子矩陣;第二行都是掃描奇數(shù)列的非零子矩陣。括號(hào)外的數(shù)字表示列塊索引;括號(hào)內(nèi)的數(shù)字表示列塊索引除以4的余數(shù)。絕大部分情況下,每個(gè)時(shí)鐘周期的四個(gè)余數(shù)各不相同(0、1、2和3)。但是,有一些例外比如第28個(gè)時(shí)鐘周期(0、1、0和3)和第38個(gè)時(shí)鐘周期(0、1、2和1)。這些特例完全可以通過(guò)讀寫旁路技術(shù)解決。比如,在第28個(gè)時(shí)鐘周期,橫向更新從第0和21列塊讀取和值;早兩個(gè)時(shí)鐘周期,縱向更新正好讀取這兩個(gè)列塊的外信息以更新和值。由于同一個(gè)非零子矩陣的寫操作始終發(fā)生在讀操作的三個(gè)時(shí)鐘周期之后,橫向更新需要的和值在第29個(gè)時(shí)鐘周期剛好準(zhǔn)備寫入和值寄存器堆。因此,和值直接從縱向更新傳到橫向更新,旁路了和值寄存器堆的讀寫操作。同樣的方法可以處理第38個(gè)時(shí)鐘周期。一般QC-LDPC碼都可以通過(guò)矩陣變換和重排序達(dá)到以上目的。
基于以上處理,和值寄存器堆可以通過(guò)簡(jiǎn)單的四象限劃分就可以避免訪問(wèn)沖突,如圖6所示。和值寄存器堆提供四個(gè)獨(dú)立的讀和寫端口。每個(gè)時(shí)鐘周期,橫向更新讀取兩個(gè)列塊的和值,同時(shí)寫入兩個(gè)非零子矩陣的外信息;縱向更新讀取兩個(gè)非零子矩陣的外信息,同時(shí)寫入兩個(gè)列塊更新后的和值。與其它解碼器不同,本設(shè)計(jì)充分利用了外信息的特點(diǎn),即外信息的生命周期介于橫向更新的讀取和值和縱向更新的寫入更新后的和值之間。因此,非零子矩陣的外信息可以保存在和值寄存器堆存儲(chǔ)相應(yīng)列塊和值的地址單元,省掉了11520比特額外存儲(chǔ)器資源。
一塊深度為N(=24)的和值寄存器堆劃分為四個(gè)象限,依次存儲(chǔ)第4×i+0、4×i+1、4×i+2和4×i+3(i=0,1,...,5)列塊的和值和外信息。堆號(hào)(Tbank)和堆地址(Abank)可以通過(guò)以下簡(jiǎn)單的求模和移位操作完成 Tbank=mod(n,4), (7-A) Abank=n>>2。(7-B) 通過(guò)和值寄存器堆劃分,解碼器每個(gè)時(shí)鐘周期從四個(gè)不同堆中讀取相關(guān)信息,同時(shí)寫入相關(guān)信息到四個(gè)不同堆中。圖7所示為和值寄存器堆的讀寫旁路和交叉控制技術(shù)。四路輸入信息通過(guò)輸入交叉控制模塊,找到相應(yīng)的和值寄存器堆。相反地,四路輸出信息通過(guò)輸出交叉控制模塊,找到相應(yīng)的數(shù)據(jù)通路。交叉控制模塊由四個(gè)列塊索引產(chǎn)生的堆號(hào)控制。旁路控制模塊根據(jù)橫向更新和縱向更新的列塊索引判斷信息是否可以旁路,即橫向更新所需要的兩路信息要么從和值寄存器堆讀取,要么直接從縱向更新傳遞過(guò)來(lái)。本設(shè)計(jì)所提出的旁路技術(shù)可以降低24.3-48.8%的和值寄存器堆訪問(wèn)次數(shù)。對(duì)于存儲(chǔ)器訪問(wèn)主導(dǎo)功耗的QC-LDPC碼解碼器來(lái)說(shuō),該設(shè)計(jì)可以有效地降低芯片功耗。
解碼器需要兩個(gè)獨(dú)立的置換網(wǎng)絡(luò)。每個(gè)網(wǎng)絡(luò)都由兩個(gè)級(jí)聯(lián)的96路算術(shù)移位器組成,如圖8所示。該置換網(wǎng)絡(luò)僅僅支持小于或等于96路的循環(huán)移位。這里,b代表擴(kuò)展因子;d代表非零子矩陣的偏移量。兩個(gè)參數(shù)把長(zhǎng)度為96的輸入序列分為三部分A、B和C。輸入序列首先經(jīng)過(guò)一個(gè)96路的算術(shù)移位器(循環(huán)移位偏移量為d),然后穿過(guò)第二個(gè)算術(shù)移位器(循環(huán)移位偏移量為96-b),最后進(jìn)入一組2選1選擇器。最終輸出序列由第一次移位后的序列的B塊和第二次移位后的序列的A塊組裝而成。參數(shù)d是一個(gè)0到b之間的隨機(jī)整數(shù),因此第一次算術(shù)移位器需要7級(jí)。參數(shù)b是一個(gè)24到96能被4整除的正整數(shù),因此第二個(gè)算術(shù)移位器僅僅需要5級(jí),最后兩級(jí)被旁路掉。該設(shè)計(jì)總共可以節(jié)省大約14.2%(2/(2×7))的硬件資源。
為了降低信息存儲(chǔ)量,一個(gè)校驗(yàn)節(jié)點(diǎn)的所有自信息被分解為信息組件1)最小絕對(duì)值;2)次小絕對(duì)值;3)最小絕對(duì)值的位置;4)符號(hào)位;5)標(biāo)志位。橫向更新所需的兩個(gè)自信息由恢復(fù)器A1和B1恢復(fù)得到;縱向更新所需的兩個(gè)自信息由恢復(fù)器A2和B2恢復(fù)得到?;謴?fù)器的核心單元是一個(gè)4選1的選擇器,有兩比特的選擇地址。一個(gè)比特是當(dāng)前列塊索引和最小絕對(duì)值位置的比較結(jié)果;另一個(gè)比特是自信息的符號(hào)位,由實(shí)時(shí)符號(hào)位和每行的標(biāo)志位異或得到。等式(3)表明,在橫向更新中,和值減去自信息得到外信息。等式(6)表明,在縱向更新中,外信息加上自信息得到更新后的和值。解碼器采用有符號(hào)數(shù)的2的補(bǔ)碼表示。為了實(shí)現(xiàn)減法器,需要額外的1的補(bǔ)碼和加1操作(占用大量的芯片面積)。因此,本設(shè)計(jì)從根本上解決了這個(gè)問(wèn)題,橫向更新和縱向更新處理器都采用加法器,唯一不同的是4選1選擇器的真值表,如圖9所示。也就是說(shuō),2的補(bǔ)碼操作從橫向更新處理器轉(zhuǎn)移到了恢復(fù)器,無(wú)需任何硬件代價(jià)。
圖10所示是一個(gè)雙通道橫向更新處理器,由兩個(gè)加法器、一個(gè)分解器、一個(gè)奇偶校驗(yàn)器和四個(gè)保持電路組成。外信息由兩個(gè)六比特加法器計(jì)算,送入分解器,同時(shí)暫時(shí)保存到和值存儲(chǔ)器中。分解器串行掃描更新校驗(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é)果送入主控制器控制解碼流程的中斷。保持電路是為接下來(lái)的縱向更新過(guò)程保持穩(wěn)定的校驗(yàn)節(jié)點(diǎn)信息組件。每個(gè)處理器接收雙通道數(shù)據(jù)進(jìn)行數(shù)據(jù)更新,所有運(yùn)算單元在行塊的起始點(diǎn)被同步。和值有兩個(gè)最高符號(hào)位。第一個(gè)是后驗(yàn)信息的硬判決結(jié)果,在每個(gè)列塊的最后一個(gè)非零子矩陣更新完之后更新。第二個(gè)是后驗(yàn)信息的符號(hào)位,在每個(gè)行塊的縱向更新完成之后都會(huì)更新。由于兩個(gè)符號(hào)位具有不同的更新周期,它們需要在和值寄存器堆中單獨(dú)存儲(chǔ)。
權(quán)利要求
1.一種基于TDMP的QC-LDPC碼解碼器,其特征在于由主控制器、可配置只讀存儲(chǔ)器、輸入緩存寄存器堆、變量節(jié)點(diǎn)和值寄存器堆、校驗(yàn)節(jié)點(diǎn)信息組件寄存器堆、算術(shù)邏輯運(yùn)算單元和輸出緩存寄存器堆組成;四塊可配置只讀存儲(chǔ)器分別存儲(chǔ)列塊交織相關(guān)信息、橫向更新相關(guān)信息、縱向更新相關(guān)信息和偏移量調(diào)整信息;該解碼器橫向處理并行度為b,b為子矩陣擴(kuò)展因子;縱向處理并行度為2×b;算術(shù)邏輯單元包括兩個(gè)獨(dú)立的b路置換網(wǎng)絡(luò)A、B、四個(gè)獨(dú)立的b路恢復(fù)器陣列A1、B1、A2、B2、一個(gè)b路橫向更新處理器陣列和一個(gè)b路縱向更新處理器陣列;一路橫向更新處理器包括加法單元、分解單元、奇偶校驗(yàn)單元和保持電路;一路縱向更新處理器包括加法單元和硬判決電路;該解碼器的數(shù)據(jù)流向如下
橫向更新和縱向更新按行序每個(gè)時(shí)鐘周期分別掃描并處理兩個(gè)非零子矩陣,先前的變量節(jié)點(diǎn)和值從和值寄存器堆取出,經(jīng)過(guò)兩個(gè)獨(dú)立可配置置換網(wǎng)絡(luò)A、B;同時(shí),恢復(fù)器陣列A1和B1從校驗(yàn)節(jié)點(diǎn)信息組件恢復(fù)先前的自信息;所有經(jīng)過(guò)置換網(wǎng)絡(luò)的和值和恢復(fù)得到的自信息進(jìn)入96個(gè)橫向更新處理器,更新校驗(yàn)節(jié)點(diǎn)信息組件;橫向更新所得外信息暫時(shí)存儲(chǔ)到和值寄存器堆;當(dāng)一個(gè)行塊的橫向更新完成之后,更新之后的信息組件回寫到信息組件寄存器堆;同時(shí)送入恢復(fù)器陣列A2和B2恢復(fù)更新之后的自信息;所有恢復(fù)得到的自信息和從和值寄存器堆讀取的外信息送入192個(gè)縱向更新處理器,更新變量節(jié)點(diǎn)和值,最后寫入和值寄存器堆。
2.如權(quán)利要求1所述的解碼器,其特征在于采用優(yōu)化的TDMP解碼算法,其解碼步驟如下
步驟1按自然順序存儲(chǔ)從信道接收過(guò)來(lái)的本征信息到輸入緩存寄存器堆中;
步驟按交織順序從輸入緩存寄存器堆讀出本征信息,初始化變量節(jié)點(diǎn)和值寄存器堆;
步驟3按行序每次掃描兩個(gè)非零子矩陣,并行讀取相應(yīng)變量節(jié)點(diǎn)和值和相應(yīng)校驗(yàn)節(jié)點(diǎn)信息組件;
步驟4通過(guò)兩個(gè)置換網(wǎng)絡(luò)置換和值,同時(shí)通過(guò)兩個(gè)恢復(fù)器陣列從信息組件恢復(fù)自信息;
步驟5通過(guò)橫向更新處理器,計(jì)算外信息,包括置換后的和值減去恢復(fù)得到的自信息;
步驟6寫外信息、更新校驗(yàn)節(jié)點(diǎn)信息組件、做奇偶校驗(yàn),如果所有行塊都滿足奇偶校驗(yàn)或者達(dá)到最大迭代次數(shù),轉(zhuǎn)入步驟11;
步驟7按行序重新每次掃描兩個(gè)非零子矩陣,從和值寄存器堆讀取相應(yīng)外信息;
步驟8通過(guò)兩個(gè)恢復(fù)器陣列恢復(fù)更新后的自信息;
步驟9更新變量節(jié)點(diǎn)和值和硬判決;
步驟10寫回更新后的和值,轉(zhuǎn)入步驟3;
步驟11硬判決結(jié)果從置換網(wǎng)絡(luò)送入輸出緩存寄存器堆,通過(guò)地址解映射完成列塊解交織;
步驟1從輸出緩存寄存器堆輸出解碼結(jié)果,解碼結(jié)束。
3.如權(quán)利要求2所述的解碼器,其特征在于采用對(duì)稱六級(jí)流水線結(jié)構(gòu)以提高吞吐量和幫助解決和值寄存器堆訪問(wèn)沖突;其中,橫向更新采用四級(jí)流水線
流水線1讀取變量節(jié)點(diǎn)和值和校驗(yàn)節(jié)點(diǎn)信息組件;
流水線2置換和值和恢復(fù)自信息;
流水線計(jì)算外信息;
流水線4寫入暫態(tài)外信息、更新校驗(yàn)節(jié)點(diǎn)信息組件和奇偶校驗(yàn);
縱向更新同樣采用四級(jí)流水線
流水線1讀取暫態(tài)外信息;
流水線2恢復(fù)更新后的自信息;
流水線更新變量節(jié)點(diǎn)和值以及硬判決;
流水線4回寫更新后的和值。
4.如權(quán)利要求3所述的解碼器,其特征在于對(duì)QC-LDPC碼基矩陣的24個(gè)列塊,以0到23依次標(biāo)號(hào),被劃分為四個(gè)象限
象限00、4、8、12、16和20;
象限11、5、9、13、17和21;
象限22、6、10、14、18和22;
象限33、7、11、15、19和23。
5.如權(quán)利要求4所述的解碼器,其特征在于對(duì)QC-LDPC碼基矩陣做以下三項(xiàng)預(yù)處理
預(yù)處理1列塊交織;
預(yù)處理2行塊交織;
預(yù)處理3非零子矩陣重排序;
預(yù)處理1對(duì)基矩陣的列塊進(jìn)行重新排序,對(duì)于每一行塊,確保所有非零子矩陣盡量均等的分布在所述的四個(gè)不同象限之中;
預(yù)處理2對(duì)基矩陣的行塊進(jìn)行重新排序,確保連續(xù)兩行塊的相關(guān)性總和盡量少;
預(yù)處理3對(duì)基矩陣中非零子矩陣的掃描順序進(jìn)行重新排序,確保每個(gè)時(shí)鐘周期讀取四個(gè)不同象限的相關(guān)信息。
6.如權(quán)利要求5所述的解碼器,其特征在于將所述的和值寄存器堆劃分為四個(gè)堆,對(duì)應(yīng)所述的四個(gè)象限
和值寄存器堆0存儲(chǔ)象限0所對(duì)應(yīng)的所有位置的和值和外信息;
和值寄存器堆1存儲(chǔ)象限1所對(duì)應(yīng)的所有位置的和值和外信息;
和值寄存器堆2存儲(chǔ)象限2所對(duì)應(yīng)的所有位置的和值和外信息;
和值寄存器堆3存儲(chǔ)象限3所對(duì)應(yīng)的所有位置的和值和外信息。
7.如權(quán)利要求5所述的解碼器,其特征在于還引入存儲(chǔ)器讀寫旁路技術(shù);即當(dāng)橫向更新正準(zhǔn)備讀取縱向更新即將要寫入的數(shù)據(jù)單元時(shí),縱向更新后的數(shù)據(jù)直接傳到橫向更新單元。
8.如權(quán)利要求1所述的解碼器,其特征在于該解碼器有兩個(gè)可配置的96路置換網(wǎng)絡(luò)處理雙通道數(shù)據(jù),每個(gè)置換網(wǎng)絡(luò)由兩個(gè)級(jí)聯(lián)的算術(shù)移位器組成,第一個(gè)算術(shù)移位器移位寬度是一個(gè)小于b的任意正整數(shù),b≤96,需要七級(jí)級(jí)聯(lián)移位;第二個(gè)算術(shù)移位器移位寬度是一個(gè)小于b且被4整除的任意正整數(shù),只需要五級(jí)級(jí)聯(lián)移位。
9.如權(quán)利要求1所述的解碼器,其特征在于該解碼器有四個(gè)恢復(fù)器陣列恢復(fù)所需的自信息橫向更新兩個(gè),縱向更新兩個(gè);每路恢復(fù)器由一個(gè)核心的四選一選擇器組成;為了避免在橫向更新處理器中使用減法單元,只需改變相應(yīng)兩個(gè)恢復(fù)器陣列中的選擇器的真值表。
10.如權(quán)利要求1所述的解碼器,其特征在于橫向更新處理器陣列的核心單元包括加法單元、分解單元、奇偶校驗(yàn)單元和保持電路;由于采用雙通道并行計(jì)算,每個(gè)橫向更新處理器有兩個(gè)兩輸入加法單元,一個(gè)以兩輸入比較和選擇為核心的分解單元,一個(gè)以三輸入異或門為核心的奇偶校驗(yàn)單元和四個(gè)以反饋移位寄存器為核心的保持電路,保持電路為向后續(xù)縱向更新單元提供穩(wěn)定的校驗(yàn)節(jié)點(diǎn)信息組件。
全文摘要
本發(fā)明屬于無(wú)線通信和微電子技術(shù)領(lǐng)域,具體為一種基于TDMP的超高速低功耗低密度奇偶校驗(yàn)碼(QC-LDPC)解碼器。通過(guò)對(duì)稱六級(jí)流水線、行塊和列塊交織、非零子矩陣重排序、和值寄存器堆四象限劃分以及讀寫旁路技術(shù),解碼器按行序串行掃描,橫向更新和縱向更新每個(gè)時(shí)鐘周期各處理兩個(gè)非零子矩陣。橫向更新和縱向更新完全交疊。特別地,和值寄存器堆不僅存儲(chǔ)變量節(jié)點(diǎn)的和值,還作為FIFO存儲(chǔ)兩相之間傳遞的暫態(tài)外信息。該解碼器架構(gòu)具有很強(qiáng)的可配置性,可以容易地移植到其它任何規(guī)則或者非規(guī)則的QC-LDPC碼,解碼性能優(yōu)異,峰值頻率能夠達(dá)到214兆赫茲,吞吐量可以達(dá)到1千兆比特每秒左右,芯片功耗僅有397毫瓦。
文檔編號(hào)H03M13/11GK101771421SQ20101012190
公開(kāi)日2010年7月7日 申請(qǐng)日期2010年3月11日 優(yōu)先權(quán)日2010年3月11日
發(fā)明者向波, 鮑丹, 黃雙渠, 曾曉洋 申請(qǐng)人:復(fù)旦大學(xué)