两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

基于tdmp的超高速低功耗qc-ldpc碼解碼器的制作方法

文檔序號:7516921閱讀:133來源:國知局
專利名稱:基于tdmp的超高速低功耗qc-ldpc碼解碼器的制作方法
技術(shù)領(lǐng)域
本發(fā)明屬于無線通信和微電子技術(shù)領(lǐng)域,具體涉及一種超高速低功耗可配置QC-LDPC碼解碼器,可以應(yīng)用于超高速的無線數(shù)字通信、光纖通信、衛(wèi)星通信、多媒體數(shù)字廣播和磁光學(xué)存儲等諸多系統(tǒng)。

背景技術(shù)
低密度奇偶校驗碼(LDPC,Low-Density Parity-Check Codes)于20世紀60年代初由Gallager博士發(fā)明。由于其解碼復(fù)雜度很高,起初30多年不被重視。直到20世紀90年代中期被重新發(fā)現(xiàn)和證明具有相當好的功率有效性,LDPC碼獲得了高速發(fā)展和廣泛運用。準循環(huán)LDPC (QC-LDPC)碼作為其中一個非常重要的分支,具有線性編碼復(fù)雜度和非常有利的部分并行解碼結(jié)構(gòu),被廣泛地應(yīng)用于如DVB-S2、IEEE 802.11n(WirelessLAN)、IEEE 802.16e(WiMAX)、DTMB和CMMB等系統(tǒng)中。
QC-LDPC碼解碼算法不斷簡化。Gallager博士提出的兩相迭代解碼算法(Two-PhaseMessage-Passing Algorithm)計算復(fù)雜,需要大量的指數(shù)運算、乘法運算和查表運算。由于指數(shù)運算數(shù)據(jù)動態(tài)范圍特別大、解碼不夠穩(wěn)定,解碼算法從實數(shù)域演進到對數(shù)似然比(Logarithmic Likelihood Ratio)解碼算法?;诖?,出現(xiàn)了三種簡化解碼算法1)最小和解碼算法(Min-Sum);2)基于偏移量最小和(Offset-Based Min-Sum)解碼算法;3)歸一化最小和(Normalized Min-Sum)解碼算法。第一種算法解碼復(fù)雜度最低,但性能較差;第二、三種算法在解碼復(fù)雜度和性能上取得折中。歸一化最小和解碼算法由于能最大限度的降低保存中間信息的存儲器資源,被廣泛采用。為了加快收斂速度,出現(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碼的特點是碼長越長,性能越好。為了獲得最好的性能,絕大部分QC-LDPC碼碼長介于1000到10000之間。折中考慮面積和吞吐量,部分并行的結(jié)構(gòu)被絕大部分解碼器采用。隨之而來產(chǎn)生了很多部分并行解碼器,不同之處只在于橫向更新和縱向更新的并行度。對于QC-LDPC碼(M,N,b,t),典型的部分并行度有k×M、k×N和k×b(k是一個大于零的實數(shù),比如1、2、3、4、1/2、1/3、1/4等等)。
隨著現(xiàn)代通信廣播系統(tǒng)向著超高數(shù)據(jù)吞吐率、大容量、高可靠性的方向發(fā)展,以及標準層出不窮和多樣化,一種可以兼容多標準的超高速可配置QC-LDPC解碼器硬件結(jié)構(gòu)成為大勢所趨。同時隨著無線通信廣播的高速發(fā)展,以及便攜式移動終端用戶群不斷擴大,超低功耗實現(xiàn)尤為重要。


發(fā)明內(nèi)容
本發(fā)明的目的在于提出一種吞吐量大、芯片功耗低、可避免存儲器訪問沖突的可配置QC-LDPC碼解碼器。
在保證解碼性能的前提下,本發(fā)明需要解決以下四個關(guān)鍵技術(shù)問題。
可配置性解碼結(jié)構(gòu)能夠很好的移植到其它任何規(guī)則或者非規(guī)則的QC-LDPC碼(M,N,b,t)中。全串行結(jié)構(gòu)具有可配置性,但解碼吞吐量極低。全并行結(jié)構(gòu)解碼吞吐量高(所有行或者所有列同時并行更新),但缺乏可配置性。典型的部分并行結(jié)構(gòu)不僅具有較高的吞吐量,而且具有較強的可配置性。
吞吐量在可配置性較強的基礎(chǔ)上,最大限度的提高解碼吞吐量。對于QC-LDPC碼(M,N,b,t),并行度為M、N或者b時,解碼器能夠達到的吞吐量一般小于250兆比特每秒(Mb/s)。為了進一步提高吞吐量,并行度需要提高到M、N或者b的整數(shù)倍k(k大于1)。本文設(shè)計的目標是當工作在200兆赫茲和10次迭代時,解碼器能夠達到1千兆比特每秒(Gb/s)左右。
芯片功耗在滿足可配置性和吞吐量要求的情況下,最大限度的降低芯片功耗。比如減少存儲器資源、降低存儲器訪問次數(shù)、減少算術(shù)邏輯單元、降低寄存器翻轉(zhuǎn)次數(shù)等等。本文設(shè)計的目標是對于WiMAX中的QC-LDPC碼(M,N,b,t),功耗效率能夠小于50皮焦每比特每次迭代(pJ/bit/iteration)。
存儲器訪問沖突對于QC-LDPC碼(M,N,b,t),并行度為M、N或者b時,部分并行解碼器一般不存在存儲器訪問沖突。當并行度提高到M、N或者b的整數(shù)倍k(k大于1)時,大量的存儲器訪問沖突就會出現(xiàn)。在避免使用更多存儲器資源的情況下,如何解決存儲器訪問沖突是一大難點。
本發(fā)明提出的基于TDMP的QC-LDPC碼解碼器,如圖2所示,由主控制器(CentralController)、可配置只讀存儲器(ROM)、輸入緩存寄存器堆(I_BUF Bank)、變量節(jié)點和值寄存器堆(SUM Bank)、校驗節(jié)點信息組件寄存器堆(MAG、POS、FLAG、SIGN Banks)(圖中為絕對值、位置、標志位寄存器堆和符號堆存器)、算術(shù)邏輯運算單元(ALU)和輸出緩存寄存器堆(O_BUF Bank)組成。四塊只讀存儲器(ROM)分別存儲列塊交織相關(guān)信息、橫向更新相關(guān)信息、縱向更新相關(guān)信息和偏移量調(diào)整信息。該解碼器橫向處理并行度為b,b為子矩陣擴展因子;縱向處理并行度為2×b。算術(shù)邏輯單元包括兩個獨立的b路置換網(wǎng)絡(luò)(置換網(wǎng)絡(luò)A、置換網(wǎng)絡(luò)B)、四個獨立的b路恢復(fù)器陣列(恢復(fù)器陣列A1、B1、A2、B2)、一個b路橫向更新處理器堆(b CNU Processors)和一個b路縱向更新處理器堆(b VNU Processors)。一路橫向更新處理器包括加法單元、分解單元、奇偶校驗單元和保持電路;一路縱向更新處理器包括加法單元和硬判決電路。
所述解碼器的數(shù)據(jù)流程如下 橫向更新和縱向更新按行序每個時鐘周期分別掃描并處理兩個非零子矩陣。先前的變量節(jié)點和值從和值寄存器堆取出,經(jīng)過兩個獨立可配置置換網(wǎng)絡(luò)A、B。同時,恢復(fù)器陣列A1和B1從校驗節(jié)點信息組件恢復(fù)先前的自信息。所有經(jīng)過置換網(wǎng)絡(luò)的和值和恢復(fù)得到的自信息進入96個橫向更新處理器,更新校驗節(jié)點信息組件。橫向更新所得外信息暫時存儲到和值寄存器堆。當一個行塊的橫向更新完成之后,更新之后的信息組件回寫到信息組件寄存器堆;同時送入恢復(fù)器陣列A2和B2恢復(fù)更新之后的自信息。所有恢復(fù)得到的自信息和從和值寄存器堆讀取的外信息送入192個縱向更新處理器,更新變量節(jié)點和值,最后寫入和值寄存器堆。
本發(fā)明設(shè)計的解碼器,采用優(yōu)化的TDMP解碼算法,即用歸一化最小和解碼算法(Normalized Min Sum)替換TDMP算法中的軟輸入軟輸出引擎(SISO engine),其解碼步驟如下 步驟1按自然順序存儲從信道接收過來的本征信息到輸入緩存寄存器堆中; 步驟2按交織順序從輸入緩存寄存器堆讀出本征信息(通過地址映射完成列塊交織),初始化變量節(jié)點和值寄存器堆; 步驟3按行序每次掃描兩個非零子矩陣,并行讀取相應(yīng)變量節(jié)點和值(兩個列塊)和相應(yīng)校驗節(jié)點信息組件(一個行塊); 步驟4通過兩個置換網(wǎng)絡(luò)置換和值,同時通過兩個恢復(fù)器陣列從信息組件恢復(fù)自信息; 步驟5通過橫向更新處理器,計算外信息(置換后的和值減去恢復(fù)得到的自信息); 步驟6寫外信息、更新校驗節(jié)點信息組件、做奇偶校驗等等,如果所有行塊都滿足奇偶校驗或者達到最大迭代次數(shù),轉(zhuǎn)入步驟11; 步驟7按行序重新每次掃描兩個非零子矩陣,從和值寄存器堆讀取相應(yīng)外信息(兩個列塊); 步驟8通過兩個恢復(fù)器陣列恢復(fù)更新后的自信息; 步驟9更新變量節(jié)點和值和硬判決; 步驟10寫回更新后的和值,轉(zhuǎn)入步驟3; 步驟11硬判決結(jié)果從置換網(wǎng)絡(luò)送入輸出緩存寄存器堆,通過地址解映射完成列塊解交織; 步驟12從輸出緩存寄存器堆輸出解碼結(jié)果,解碼結(jié)束; 其中,步驟3、4、5和6屬于橫向更新過程;步驟7、8、9和10屬于縱向更新過程。一次子迭代按照步驟3、4、5、6、7、8、9和10完成一個行塊更新;一次迭代按照步驟3、4、5、6、7、8、9和10完成所有行塊更新。
本發(fā)明設(shè)計的解碼器采用對稱六級流水線(Symmetrical Six-Stage Pipelining)結(jié)構(gòu)以提高吞吐量和幫助解決和值寄存器堆訪問沖突。橫向更新采用四級流水線(Four-StagePipelining) 流水線1讀取變量節(jié)點和值和校驗節(jié)點信息組件(Rd); 流水線2置換和值和恢復(fù)自信息; 流水線3計算外信息; 流水線4寫入暫態(tài)外信息、更新校驗節(jié)點信息組件和奇偶校驗(Wr)。
縱向更新同樣采用四級流水線(Four-Stage Pipelining) 流水線1讀取暫態(tài)外信息(Rd); 流水線2恢復(fù)更新后的自信息; 流水線3更新變量節(jié)點和值以及硬判決; 流水線4回寫更新后的和值(Wr)。
對于橫向更新和縱向更新,第一級流水都是存儲器讀操作;第四級流水都是存儲器寫操作。使用雙口和值寄存器堆(Two-Port Register File),第一級流水和第四級流水可以互相交疊。因此,整個解碼流程采用的是對稱的六級流水線結(jié)構(gòu)。對于同一存儲器地址,寫操作始終發(fā)生在讀操作三個時鐘周期之后。對稱性帶來的好處是只需解決存儲器讀訪問沖突,而寫訪問沖突隨著讀訪問沖突的消失而消失。
本發(fā)明中,QC-LDPC碼的基矩陣(Base Matrix)的24個列塊(以0到23依次標號)被劃分為四個象限(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ā)明中,為了解決和值寄存器堆讀訪問沖突,需要對QC-LDPC碼基矩陣做以下三項預(yù)處理(Preprocessing) 預(yù)處理1列塊交織(Block Column Interleaving); 預(yù)處理2行塊交織(Block Row Interleaving); 預(yù)處理3非零子矩陣重排序(Nonzero Sub-matrix Reordering)。
預(yù)處理1對基矩陣的列塊進行重新排序,對于每一行塊,確保所有非零子矩陣盡量均等的分布在所述的四個不同象限之中。
預(yù)處理2對基矩陣的行塊進行重新排序,確保連續(xù)兩行塊的相關(guān)性總和(相關(guān)性定義對于連續(xù)兩行塊,同時有非零子矩陣的列塊個數(shù))盡量少。
預(yù)處理3對基矩陣中非零子矩陣的掃描順序進行重新排序,確保每個時鐘周期讀取四個不同象限的相關(guān)信息。
所有三項預(yù)處理不是唯一的。
本發(fā)明中,和值寄存器堆被劃分為四個堆(Bank),對應(yīng)四個象限(Quadrant) 和值寄存器堆0存儲象限0所對應(yīng)的所有位置的和值和外信息; 和值寄存器堆1存儲象限1所對應(yīng)的所有位置的和值和外信息; 和值寄存器堆2存儲象限2所對應(yīng)的所有位置的和值和外信息; 和值寄存器堆3存儲象限3所對應(yīng)的所有位置的和值和外信息; 四個和值寄存器堆不僅存儲變量節(jié)點的和值,而且作為FIFO存儲兩相之間傳遞的暫態(tài)外信息。對于存儲器同一地址,信息讀寫順序如下 讀取和值(Rd)→寫入暫態(tài)外信息(Wr)→讀取暫態(tài)外信息(Rd)→回寫更新后的和值(Wr)。
對于6比特量化,該操作可以省掉11520比特額外存儲單元。
本發(fā)明中,為了最大限度降低芯片功耗,本文引入存儲器讀寫旁路技術(shù)(Read-WriteBypass Technique)。由于基矩陣的列重(Column Weight)大于等于二,每一列塊都存在非零子矩陣的相關(guān)性(Correlation)。當兩個非零子矩陣的距離滿足一定的限制時,讀寫旁路就可引入。即當橫向更新正準備讀取縱向更新即將要寫入的數(shù)據(jù)單元時,縱向更新后的數(shù)據(jù)直接傳到橫向更新單元(不經(jīng)過存儲器)。這樣做的好處是可以省掉很大一部分的存儲器讀寫功耗。針對WiMAX中的QC-LDPC碼,24.3%-48.8%的存儲器讀寫操作可以被旁路。
本發(fā)明中,解碼器有兩個可配置的96路置換網(wǎng)絡(luò)(Permutation Network)處理雙通道數(shù)據(jù)。每個置換網(wǎng)絡(luò)由兩個級聯(lián)的算術(shù)移位器(Logarithmic Shifter)組成。第一個算術(shù)移位器移位寬度(Shift Width)是一個小于b的任意正整數(shù)(b≤96),因此需要七級級聯(lián)移位;第二個算術(shù)移位器移位寬度(Shift Width)是一個小于b且被4整除的任意正整數(shù),因此只需要五級級聯(lián)移位,省掉兩級。與當前其它可配置置換網(wǎng)絡(luò)相比,可以節(jié)省14.2%(2/(2×7))的硬件資源。
本發(fā)明中,解碼器有四個恢復(fù)器陣列(Recoverer)恢復(fù)所需的自信息橫向更新兩個;縱向更新兩個。每路恢復(fù)器由一個核心的四選一選擇器(Four-to-One Multiplexer)組成。為了避免在橫向更新處理器中使用減法單元(減法需要額外的1的補碼和加1操作),本文只需改變相應(yīng)兩個恢復(fù)器陣列中的選擇器的真值表。這樣做的好處是在沒有任何硬件代價的情況下,橫向更新處理器陣列采用了更加簡單的加法操作單元替代減法操作單元,節(jié)省大量的芯片面積。
本發(fā)明中,橫向更新處理器陣列(CNU Processors)的核心單元包括加法單元(Adder)、分解單元(Decomposer)、奇偶校驗單元(Parity Checker)和保持電路(Holding Circuit)。由于采用雙通道并行計算,每個橫向更新處理器需要兩個兩輸入加法單元,一個以兩輸入比較和選擇(Compare-and-Select)為核心的分解單元,一個以三輸入異或門(Xor Gate)為核心的奇偶校驗單元和四個以反饋移位寄存器(Feedback Shift Register)為核心的保持電路。保持電路是為了向后續(xù)縱向更新單元提供穩(wěn)定的校驗節(jié)點信息組件(無需從存儲器中讀取),從而只需面積更小的單口存儲器存儲校驗節(jié)點信息組件。
根據(jù)本發(fā)明方案,本發(fā)明采取了如下一些技術(shù)措施。
A)雙通道并行計算(Dual-Path Parallel Computing) 橫向更新和縱向更新都是按行序串行掃描整個基矩陣。掃描完一行對應(yīng)一次子迭代;掃描完整個矩陣對應(yīng)一次迭代。與傳統(tǒng)的每次掃描處理一個非零子矩陣不同,橫向更新和縱向更新每個時鐘周期都掃描兩個非零子矩陣,并行處理。這樣解碼延時可以縮短一半;吞吐量提高一倍。
B)兩相完全交疊(Fully-Overlapped Two Phases) 傳統(tǒng)設(shè)計當中,兩相是交替進行,或者是部分交疊在一起的,交疊長度取決于數(shù)據(jù)依賴性(Data Dependency)。本發(fā)明完全克服了數(shù)據(jù)依賴關(guān)系,橫向更新和縱向更新完完全全交疊在一起;同時保證如Turbo碼信息傳遞解碼算法一樣,橫向更新始終使用縱向更新的最新結(jié)果(“最新”的定義依據(jù)同一列塊中非零子矩陣的依賴關(guān)系)。這樣解碼延時可以再縮短一半;吞吐量再提高一倍。
C)對稱六級流水線(Symmetrical Six-Stage Pipelining) 為了提高吞吐量和幫助解決存儲器讀寫訪問沖突,本發(fā)明采用對稱六級流水線結(jié)構(gòu)。對稱性體現(xiàn)在1)橫向更新采用四級流水線,縱向更新采用四級流水線;2)對于橫向和縱向更新,第一級和最后一級都是對存儲器的讀寫訪問。當使用雙口和值寄存器堆時,橫向更新和縱向更新的第一級和最后一級相互交疊在一起。對于同一個存儲器地址單元,寫操作始終發(fā)生在讀操作的三個時鐘周期之后;也就是說,如果解決了存儲器讀訪問沖突,存儲器寫訪問沖突就會自然而然消失。
D)基矩陣列塊交織(Block Column Interleaving) 這是對基矩陣預(yù)處理的第一步。對基矩陣的列塊進行重新排序,對于每一行塊,確保所有非零子矩陣盡量均等的分布在四個不同象限之中。對于雙通道并行計算和兩相完全交疊解碼器,通過簡單的存儲器四象限劃分,就可以有效地避免存儲器訪問沖突。
E)基矩陣行塊交織(Block Row Interleaving) 這是對基矩陣預(yù)處理的第二步。對基矩陣的行塊進行重新排序,確保連續(xù)兩行塊的相關(guān)性總和(相關(guān)性定義對于連續(xù)兩行塊,同時有非零子矩陣的列塊個數(shù))盡量少。相關(guān)性表明解碼流程中數(shù)據(jù)的相互依賴關(guān)系;相關(guān)性小可以有效地降低流水線氣泡,使解碼能夠緊湊的進行。
F)非零子矩陣重排序(Nonzero Sub-matrix Reordering) 這是對基矩陣預(yù)處理的第三步。對基矩陣中非零子矩陣的橫向更新掃描順序和縱向更新掃描順序進行重新排序。對于雙通道并行計算和兩相完全交疊解碼器,確保每個時鐘周期并行讀取四個不同象限的相關(guān)信息。
G)和值寄存器堆四象限劃分(Sum Memory Partition With Four Quadrants) 雙口和值寄存器堆劃分為四個象限,可以同時提供四個獨立的讀取或者寫入端口。經(jīng)過基矩陣行塊交織、基矩陣列塊交織和非零子矩陣重排序,解碼器每個時鐘周期都從四個不同象限讀取或者寫入相關(guān)信息。因此,和值寄存器堆四象限劃分可以避免為增加端口使用大量的額外存儲單元。
H)和值寄存器堆讀寫旁路(Read-Write Bypass to Sum Memory) 本發(fā)明計引入大量和值寄存器堆讀寫旁路技術(shù),降低芯片功耗。同一列塊中,非零子矩陣的相關(guān)性表明了數(shù)據(jù)的依賴關(guān)系。當兩個非零子矩陣的距離滿足設(shè)定的界限時,縱向更新的和值可以直接傳到橫向更新單元,避免使用兩次存儲器訪問操作寫入和值和讀取和值。在本發(fā)明中,多達24.3-48.8%的存儲器訪問操作可以被旁路。
I)避免使用FIFO(No FIFO) 對于很多QC-LDPC解碼器,橫向更新和縱向更新之間存在一個很大的FIFO存儲兩相之間傳遞的外信息。FIFO的大小跟行重成正比例關(guān)系。在本發(fā)明中,和值寄存器堆通過四象限劃分,不僅存儲變量節(jié)點和值,還存儲兩相之間傳遞的外信息。因此,在沒有任何硬件代價的情況下,本設(shè)計避免使用FIFO,節(jié)省了芯片面積,同時降低了芯片功耗。
J)可配置置換網(wǎng)絡(luò)(Configurable Permutation Network) 本發(fā)明提出另外一種可配置置換網(wǎng)絡(luò)由兩個96路算術(shù)移位器級聯(lián)組成。根據(jù)WiMAX的特點,第一個算術(shù)移位器需要七級,而第二個算術(shù)移位器只需要五級。因此,該設(shè)計可以節(jié)省14.2%的硬件資源。
有益效果 該QC-LDPC碼解碼器實現(xiàn)了雙通道并行計算和兩相完全交疊,克服了存儲器訪問沖突,避免使用大的FIFO資源,大大降低了芯片面積、提高了解碼吞吐量和硬件資源使用率。同時通過旁路技術(shù),大大減少了對存儲器的訪問次數(shù),從而降低了芯片功耗。該解碼器架構(gòu)具有很強的可配置性,可以容易地移植到其它任何規(guī)則或者非規(guī)則的QC-LDPC碼(M,N,b,t)。該解碼器芯片成功地應(yīng)用到WiMAX系統(tǒng)之中,解碼性能優(yōu)異,峰值頻率能夠達到214兆赫茲,吞吐量可以達到1千兆比特每秒左右,芯片功耗僅有397毫瓦。



圖1帶交織和解交織的迭代解碼過程。
圖2基于雙通道并行計算和兩相完全交疊的QC-LDPC解碼器架構(gòu)。
圖3對稱六級流水線。
圖4基矩陣行塊和列塊交織。
圖5非零子矩陣重排序。
圖6和值寄存器堆四象限劃分。
圖7和值寄存器堆讀寫旁路技術(shù)。
圖8可配置置換網(wǎng)絡(luò)。
圖9自信息恢復(fù)器。
圖10雙通道橫向更新處理器。

具體實施例方式 解碼器采用改進的TDMP(Turbo-Decoding Message-Passing)解碼算法,即用歸一化最小和(Normalized Min-Sum)算法替換TDMP算法中的軟輸入軟輸出引擎(SISO Engine)。每個行塊對應(yīng)一個子碼(子迭代);所有子碼級聯(lián)在一起對應(yīng)一次迭代。信息不僅在不同迭代之間傳遞,而且在不同子碼(子迭代)之間傳遞。同時,每行只需保存校驗節(jié)點信息組件最小和次小絕對值、最小值位置、符號和標志位。因此,解碼器不僅能夠達到與TDMP算法一樣快的收斂速度,而且能夠最大限度的降低存儲器資源。另外,橫向更新和縱向更新采用雙通道并行計算和兩相完全交疊技術(shù),進一步提高了解碼器的吞吐量和硬件資源的使用率。
對于任意QC-LDPC碼(M,N,b,t),M表示基矩陣的行塊數(shù);N表示基矩陣的列塊數(shù);b表示子矩陣的展開因子;t表示非零子矩陣的總個數(shù)。對于本發(fā)明所設(shè)計的解碼器,橫向更新并行度為b,縱向更新并行度為2×b。假設(shè)(K,k)表示第K次迭代的第k次子迭代;向量S表示b個變量節(jié)點和值(對應(yīng)一個列塊);矩陣C表示b個校驗節(jié)點信息組件(對應(yīng)一個行塊);向量I表示b個自信息(對應(yīng)一個非零子矩陣);向量E表示b個兩相之間傳遞的外信息(對應(yīng)一個非零子矩陣)?;诟倪M的TDMP雙通道并行計算和兩相完全交疊解碼算法,橫向更新過程如式(1)-(4)所示。
縱向更新過程如式(5)-(6)所示。
輸入數(shù)據(jù)流首先進入輸入緩沖器,然后根據(jù)地址映射完成列塊交織,進入迭代解碼;輸出比特流同樣根據(jù)地址映射完成列塊解交織,送入輸出緩沖器。整個解碼過程如圖1所示。
基于雙通道并行計算和兩相完全交疊的QC-LDPC解碼器架構(gòu)如圖2所示。該結(jié)構(gòu)不僅兼容所有WiMAX中的114種模式,而且可以實現(xiàn)對任意規(guī)則和非規(guī)則QC-LDPC碼(M,N,b,t)可配置。解碼器由主控制器、只讀存儲器、寄存器堆、置換網(wǎng)絡(luò)、恢復(fù)器、橫向更新處理器和縱向更新處理器組成。橫向更新處理器包括加法器、分解器、奇偶校驗器和保持電路;縱向更新處理器包括加法器和硬判決器。
存儲器占據(jù)了芯片的大部分面積。單口ROM COL_MAP保存列塊交織信息,控制輸入數(shù)據(jù)流交織和輸出比特流解交織。單口ROM CNU_COL_OFFSET保存橫向更新中非零子矩陣的更新順序和對應(yīng)偏移量。單口ROM VNU_COL保存保存縱向更新中非零子矩陣的更新順序。單口ROM OFFSET_ADJUST保存不同模式下偏移量的調(diào)整信息。雙口寄存器堆PRE_OFFSET保存當前更新的非零子矩陣所在列的前一個非零子矩陣的偏移量。雙口和值寄存器堆不僅保存變量節(jié)點和值,而且保存兩相之間傳遞的外信息。單口最小值、位置和標志位寄存器堆以及雙口符號寄存器堆保存校驗節(jié)點信息組件。此外,還有輸入緩沖寄存器堆和輸出緩沖寄存器堆。
橫向更新和縱向更新按行序每個時鐘周期分別掃描并處理兩個非零子矩陣。先前的變量節(jié)點和值



從和值寄存器堆取出,穿過兩個獨立可配置置換網(wǎng)絡(luò)。同時,恢復(fù)器陣列A1和B1從校驗節(jié)點信息組件(Cm(K-1,k))恢復(fù)先前的自信息(



)。所有交換后的和值和恢復(fù)得到的自信息進入96個橫向更新處理器,更新校驗節(jié)點信息組件。橫向更新所得外信息(



)暫時存儲到和值寄存器堆。當一個行塊的橫向更新完成之后,更新之后的信息組件(Cm(K,k)回寫到信息組件寄存器堆;同時送入恢復(fù)器陣列A2和B2恢復(fù)更新之后的自信息(



)。所有恢復(fù)得到的自信息和從和值寄存器堆讀取的外信息送入192個縱向更新處理器,更新變量節(jié)點和值(



),最后寫入和值寄存器堆。
由于以下三點雙通道并行計算、兩相完全交疊、和值和外信息共享寄存器堆,對和值寄存器堆的讀寫訪問是解碼的關(guān)鍵點。為了提高吞吐量和幫助解決寄存器堆的訪問沖突,本發(fā)明提出一種對稱的六級深度流水線結(jié)構(gòu),如圖3所示。
橫向更新由四級流水線組成1)讀取變量節(jié)點和值和校驗節(jié)點信息組件(Rd);2)置換和值和恢復(fù)自信息(Per/Rec);3)計算分解器的輸入信息,即外信息(Add);4)回寫外信息和更新信息組件(Wr/Dec)。縱向更新同樣由四級流水線組成1)讀取外信息(Rd);2)恢復(fù)自信息(Rec);3)計算變量節(jié)點和值(Add);4)回寫更新后的和值(Wr)。理論上,由于沒有數(shù)據(jù)相關(guān)性,縱向更新中的前兩級流水線(讀入外信息和恢復(fù)自信息)可以同時處理。但是,為了幫助解決寄存器堆訪問沖突,讀取外信息提前一個時鐘周期處理。因此,橫向更新和縱向更新具有對稱的四級流水線結(jié)構(gòu),對存儲器的讀寫訪問操作集中在第一級和第四級流水線。也就是說,對于同一個寄存器堆地址單元,寫入操作始終發(fā)生在讀取操作的三個時鐘周期之后。
當使用雙口和值寄存器堆時,橫向更新和縱向更新的第一級和第四級流水線可以相互交疊在一起。因此,整個迭代解碼流程由六級流水線組成。對于雙通道并行計算和兩相完全交疊解碼器,和值寄存器堆必須提供四個獨立的讀和寫端口,因為每個時鐘周期需要四次讀取操作和四次寫入操作。對稱流水線表明,寫訪問沖突會隨著讀訪問沖突的消失而消失。所以本設(shè)計只專注于如何解決讀訪問沖突問題。
對于非規(guī)則QC-LDPC碼(M,N,b,t),非零子矩陣隨機、非均勻地分布在基矩陣中。如果按照非零子矩陣的原始行序掃描,必然會導(dǎo)致和值寄存器堆讀寫訪問沖突。分布和相關(guān)是兩個描述基矩陣結(jié)構(gòu)的有效系數(shù)。分布表示非零子矩陣的物理地址,包括行塊和列塊索引。相關(guān)表示連續(xù)兩行塊中都有非零子矩陣的列塊總數(shù)。一種分布映射一種相關(guān);一種相關(guān)可能映射幾種分布。
為了解決和值寄存器堆訪問沖突問題,基矩陣需要做行塊和列塊交織的矩陣變換。變換之后的基矩陣盡可能滿足以下三點 1)對于每一個行塊,奇數(shù)列的非零子矩陣個數(shù)和偶數(shù)列的非零子矩陣的個數(shù)幾乎相等(|Nodd-Neven|=0|1); 2)非零子矩陣盡量均等的分布在所述的四個不同象限; 3)所有相關(guān)的總和盡可能少,包括最后一個行塊和第一個行塊(邏輯上連續(xù))。
基于以上三點,WiMAX中QC-LDPC碼(12,24,96,76)的一種行塊和列塊交織如圖4所示,括號內(nèi)的數(shù)字表示行塊和列塊的原始位置。行塊和列塊交織信息存儲在ROM中。圖5是一種重新排列的非零子矩陣更新順序。橫向更新和縱向更新都按行序串行掃描,每個時鐘周期各處理兩個非零子矩陣。但是,它們之間的更新順序是獨立的、不同的。數(shù)據(jù)相關(guān)和流水線導(dǎo)致縱向更新晚于橫向更新六個時鐘周期。該QC-LDPC碼的行重是6或者7??紤]到解碼過程的對稱性和規(guī)則性,掃描完每個行塊都花費四個時鐘周期。整個流水線中會有少量的流水線氣泡(空操作)。不同迭代無縫連接,迭代之間沒有任何等待周期??傊?,基矩陣變換和非零子矩陣重排序不是唯一的,而且只是改變更新順序而無任何性能損失。
如圖5所示,橫向更新和縱向更新的第一行都是掃描偶數(shù)列的非零子矩陣;第二行都是掃描奇數(shù)列的非零子矩陣。括號外的數(shù)字表示列塊索引;括號內(nèi)的數(shù)字表示列塊索引除以4的余數(shù)。絕大部分情況下,每個時鐘周期的四個余數(shù)各不相同(0、1、2和3)。但是,有一些例外比如第28個時鐘周期(0、1、0和3)和第38個時鐘周期(0、1、2和1)。這些特例完全可以通過讀寫旁路技術(shù)解決。比如,在第28個時鐘周期,橫向更新從第0和21列塊讀取和值;早兩個時鐘周期,縱向更新正好讀取這兩個列塊的外信息以更新和值。由于同一個非零子矩陣的寫操作始終發(fā)生在讀操作的三個時鐘周期之后,橫向更新需要的和值在第29個時鐘周期剛好準備寫入和值寄存器堆。因此,和值直接從縱向更新傳到橫向更新,旁路了和值寄存器堆的讀寫操作。同樣的方法可以處理第38個時鐘周期。一般QC-LDPC碼都可以通過矩陣變換和重排序達到以上目的。
基于以上處理,和值寄存器堆可以通過簡單的四象限劃分就可以避免訪問沖突,如圖6所示。和值寄存器堆提供四個獨立的讀和寫端口。每個時鐘周期,橫向更新讀取兩個列塊的和值,同時寫入兩個非零子矩陣的外信息;縱向更新讀取兩個非零子矩陣的外信息,同時寫入兩個列塊更新后的和值。與其它解碼器不同,本設(shè)計充分利用了外信息的特點,即外信息的生命周期介于橫向更新的讀取和值和縱向更新的寫入更新后的和值之間。因此,非零子矩陣的外信息可以保存在和值寄存器堆存儲相應(yīng)列塊和值的地址單元,省掉了11520比特額外存儲器資源。
一塊深度為N(=24)的和值寄存器堆劃分為四個象限,依次存儲第4×i+0、4×i+1、4×i+2和4×i+3(i=0,1,...,5)列塊的和值和外信息。堆號(Tbank)和堆地址(Abank)可以通過以下簡單的求模和移位操作完成 Tbank=mod(n,4), (7-A) Abank=n>>2。(7-B) 通過和值寄存器堆劃分,解碼器每個時鐘周期從四個不同堆中讀取相關(guān)信息,同時寫入相關(guān)信息到四個不同堆中。圖7所示為和值寄存器堆的讀寫旁路和交叉控制技術(shù)。四路輸入信息通過輸入交叉控制模塊,找到相應(yīng)的和值寄存器堆。相反地,四路輸出信息通過輸出交叉控制模塊,找到相應(yīng)的數(shù)據(jù)通路。交叉控制模塊由四個列塊索引產(chǎn)生的堆號控制。旁路控制模塊根據(jù)橫向更新和縱向更新的列塊索引判斷信息是否可以旁路,即橫向更新所需要的兩路信息要么從和值寄存器堆讀取,要么直接從縱向更新傳遞過來。本設(shè)計所提出的旁路技術(shù)可以降低24.3-48.8%的和值寄存器堆訪問次數(shù)。對于存儲器訪問主導(dǎo)功耗的QC-LDPC碼解碼器來說,該設(shè)計可以有效地降低芯片功耗。
解碼器需要兩個獨立的置換網(wǎng)絡(luò)。每個網(wǎng)絡(luò)都由兩個級聯(lián)的96路算術(shù)移位器組成,如圖8所示。該置換網(wǎng)絡(luò)僅僅支持小于或等于96路的循環(huán)移位。這里,b代表擴展因子;d代表非零子矩陣的偏移量。兩個參數(shù)把長度為96的輸入序列分為三部分A、B和C。輸入序列首先經(jīng)過一個96路的算術(shù)移位器(循環(huán)移位偏移量為d),然后穿過第二個算術(shù)移位器(循環(huán)移位偏移量為96-b),最后進入一組2選1選擇器。最終輸出序列由第一次移位后的序列的B塊和第二次移位后的序列的A塊組裝而成。參數(shù)d是一個0到b之間的隨機整數(shù),因此第一次算術(shù)移位器需要7級。參數(shù)b是一個24到96能被4整除的正整數(shù),因此第二個算術(shù)移位器僅僅需要5級,最后兩級被旁路掉。該設(shè)計總共可以節(jié)省大約14.2%(2/(2×7))的硬件資源。
為了降低信息存儲量,一個校驗節(jié)點的所有自信息被分解為信息組件1)最小絕對值;2)次小絕對值;3)最小絕對值的位置;4)符號位;5)標志位。橫向更新所需的兩個自信息由恢復(fù)器A1和B1恢復(fù)得到;縱向更新所需的兩個自信息由恢復(fù)器A2和B2恢復(fù)得到?;謴?fù)器的核心單元是一個4選1的選擇器,有兩比特的選擇地址。一個比特是當前列塊索引和最小絕對值位置的比較結(jié)果;另一個比特是自信息的符號位,由實時符號位和每行的標志位異或得到。等式(3)表明,在橫向更新中,和值減去自信息得到外信息。等式(6)表明,在縱向更新中,外信息加上自信息得到更新后的和值。解碼器采用有符號數(shù)的2的補碼表示。為了實現(xiàn)減法器,需要額外的1的補碼和加1操作(占用大量的芯片面積)。因此,本設(shè)計從根本上解決了這個問題,橫向更新和縱向更新處理器都采用加法器,唯一不同的是4選1選擇器的真值表,如圖9所示。也就是說,2的補碼操作從橫向更新處理器轉(zhuǎn)移到了恢復(fù)器,無需任何硬件代價。
圖10所示是一個雙通道橫向更新處理器,由兩個加法器、一個分解器、一個奇偶校驗器和四個保持電路組成。外信息由兩個六比特加法器計算,送入分解器,同時暫時保存到和值存儲器中。分解器串行掃描更新校驗節(jié)點信息組件1)最小絕對值;2)次小絕對值;3)最小絕對值的位置;4)符號位;5)標志位。奇偶校驗器檢驗每行是否符合奇偶校驗,校驗結(jié)果送入主控制器控制解碼流程的中斷。保持電路是為接下來的縱向更新過程保持穩(wěn)定的校驗節(jié)點信息組件。每個處理器接收雙通道數(shù)據(jù)進行數(shù)據(jù)更新,所有運算單元在行塊的起始點被同步。和值有兩個最高符號位。第一個是后驗信息的硬判決結(jié)果,在每個列塊的最后一個非零子矩陣更新完之后更新。第二個是后驗信息的符號位,在每個行塊的縱向更新完成之后都會更新。由于兩個符號位具有不同的更新周期,它們需要在和值寄存器堆中單獨存儲。
權(quán)利要求
1.一種基于TDMP的QC-LDPC碼解碼器,其特征在于由主控制器、可配置只讀存儲器、輸入緩存寄存器堆、變量節(jié)點和值寄存器堆、校驗節(jié)點信息組件寄存器堆、算術(shù)邏輯運算單元和輸出緩存寄存器堆組成;四塊可配置只讀存儲器分別存儲列塊交織相關(guān)信息、橫向更新相關(guān)信息、縱向更新相關(guān)信息和偏移量調(diào)整信息;該解碼器橫向處理并行度為b,b為子矩陣擴展因子;縱向處理并行度為2×b;算術(shù)邏輯單元包括兩個獨立的b路置換網(wǎng)絡(luò)A、B、四個獨立的b路恢復(fù)器陣列A1、B1、A2、B2、一個b路橫向更新處理器陣列和一個b路縱向更新處理器陣列;一路橫向更新處理器包括加法單元、分解單元、奇偶校驗單元和保持電路;一路縱向更新處理器包括加法單元和硬判決電路;該解碼器的數(shù)據(jù)流向如下
橫向更新和縱向更新按行序每個時鐘周期分別掃描并處理兩個非零子矩陣,先前的變量節(jié)點和值從和值寄存器堆取出,經(jīng)過兩個獨立可配置置換網(wǎng)絡(luò)A、B;同時,恢復(fù)器陣列A1和B1從校驗節(jié)點信息組件恢復(fù)先前的自信息;所有經(jīng)過置換網(wǎng)絡(luò)的和值和恢復(fù)得到的自信息進入96個橫向更新處理器,更新校驗節(jié)點信息組件;橫向更新所得外信息暫時存儲到和值寄存器堆;當一個行塊的橫向更新完成之后,更新之后的信息組件回寫到信息組件寄存器堆;同時送入恢復(fù)器陣列A2和B2恢復(fù)更新之后的自信息;所有恢復(fù)得到的自信息和從和值寄存器堆讀取的外信息送入192個縱向更新處理器,更新變量節(jié)點和值,最后寫入和值寄存器堆。
2.如權(quán)利要求1所述的解碼器,其特征在于采用優(yōu)化的TDMP解碼算法,其解碼步驟如下
步驟1按自然順序存儲從信道接收過來的本征信息到輸入緩存寄存器堆中;
步驟按交織順序從輸入緩存寄存器堆讀出本征信息,初始化變量節(jié)點和值寄存器堆;
步驟3按行序每次掃描兩個非零子矩陣,并行讀取相應(yīng)變量節(jié)點和值和相應(yīng)校驗節(jié)點信息組件;
步驟4通過兩個置換網(wǎng)絡(luò)置換和值,同時通過兩個恢復(fù)器陣列從信息組件恢復(fù)自信息;
步驟5通過橫向更新處理器,計算外信息,包括置換后的和值減去恢復(fù)得到的自信息;
步驟6寫外信息、更新校驗節(jié)點信息組件、做奇偶校驗,如果所有行塊都滿足奇偶校驗或者達到最大迭代次數(shù),轉(zhuǎn)入步驟11;
步驟7按行序重新每次掃描兩個非零子矩陣,從和值寄存器堆讀取相應(yīng)外信息;
步驟8通過兩個恢復(fù)器陣列恢復(fù)更新后的自信息;
步驟9更新變量節(jié)點和值和硬判決;
步驟10寫回更新后的和值,轉(zhuǎn)入步驟3;
步驟11硬判決結(jié)果從置換網(wǎng)絡(luò)送入輸出緩存寄存器堆,通過地址解映射完成列塊解交織;
步驟1從輸出緩存寄存器堆輸出解碼結(jié)果,解碼結(jié)束。
3.如權(quán)利要求2所述的解碼器,其特征在于采用對稱六級流水線結(jié)構(gòu)以提高吞吐量和幫助解決和值寄存器堆訪問沖突;其中,橫向更新采用四級流水線
流水線1讀取變量節(jié)點和值和校驗節(jié)點信息組件;
流水線2置換和值和恢復(fù)自信息;
流水線計算外信息;
流水線4寫入暫態(tài)外信息、更新校驗節(jié)點信息組件和奇偶校驗;
縱向更新同樣采用四級流水線
流水線1讀取暫態(tài)外信息;
流水線2恢復(fù)更新后的自信息;
流水線更新變量節(jié)點和值以及硬判決;
流水線4回寫更新后的和值。
4.如權(quán)利要求3所述的解碼器,其特征在于對QC-LDPC碼基矩陣的24個列塊,以0到23依次標號,被劃分為四個象限
象限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所述的解碼器,其特征在于對QC-LDPC碼基矩陣做以下三項預(yù)處理
預(yù)處理1列塊交織;
預(yù)處理2行塊交織;
預(yù)處理3非零子矩陣重排序;
預(yù)處理1對基矩陣的列塊進行重新排序,對于每一行塊,確保所有非零子矩陣盡量均等的分布在所述的四個不同象限之中;
預(yù)處理2對基矩陣的行塊進行重新排序,確保連續(xù)兩行塊的相關(guān)性總和盡量少;
預(yù)處理3對基矩陣中非零子矩陣的掃描順序進行重新排序,確保每個時鐘周期讀取四個不同象限的相關(guān)信息。
6.如權(quán)利要求5所述的解碼器,其特征在于將所述的和值寄存器堆劃分為四個堆,對應(yīng)所述的四個象限
和值寄存器堆0存儲象限0所對應(yīng)的所有位置的和值和外信息;
和值寄存器堆1存儲象限1所對應(yīng)的所有位置的和值和外信息;
和值寄存器堆2存儲象限2所對應(yīng)的所有位置的和值和外信息;
和值寄存器堆3存儲象限3所對應(yīng)的所有位置的和值和外信息。
7.如權(quán)利要求5所述的解碼器,其特征在于還引入存儲器讀寫旁路技術(shù);即當橫向更新正準備讀取縱向更新即將要寫入的數(shù)據(jù)單元時,縱向更新后的數(shù)據(jù)直接傳到橫向更新單元。
8.如權(quán)利要求1所述的解碼器,其特征在于該解碼器有兩個可配置的96路置換網(wǎng)絡(luò)處理雙通道數(shù)據(jù),每個置換網(wǎng)絡(luò)由兩個級聯(lián)的算術(shù)移位器組成,第一個算術(shù)移位器移位寬度是一個小于b的任意正整數(shù),b≤96,需要七級級聯(lián)移位;第二個算術(shù)移位器移位寬度是一個小于b且被4整除的任意正整數(shù),只需要五級級聯(lián)移位。
9.如權(quán)利要求1所述的解碼器,其特征在于該解碼器有四個恢復(fù)器陣列恢復(fù)所需的自信息橫向更新兩個,縱向更新兩個;每路恢復(fù)器由一個核心的四選一選擇器組成;為了避免在橫向更新處理器中使用減法單元,只需改變相應(yīng)兩個恢復(fù)器陣列中的選擇器的真值表。
10.如權(quán)利要求1所述的解碼器,其特征在于橫向更新處理器陣列的核心單元包括加法單元、分解單元、奇偶校驗單元和保持電路;由于采用雙通道并行計算,每個橫向更新處理器有兩個兩輸入加法單元,一個以兩輸入比較和選擇為核心的分解單元,一個以三輸入異或門為核心的奇偶校驗單元和四個以反饋移位寄存器為核心的保持電路,保持電路為向后續(xù)縱向更新單元提供穩(wěn)定的校驗節(jié)點信息組件。
全文摘要
本發(fā)明屬于無線通信和微電子技術(shù)領(lǐng)域,具體為一種基于TDMP的超高速低功耗低密度奇偶校驗碼(QC-LDPC)解碼器。通過對稱六級流水線、行塊和列塊交織、非零子矩陣重排序、和值寄存器堆四象限劃分以及讀寫旁路技術(shù),解碼器按行序串行掃描,橫向更新和縱向更新每個時鐘周期各處理兩個非零子矩陣。橫向更新和縱向更新完全交疊。特別地,和值寄存器堆不僅存儲變量節(jié)點的和值,還作為FIFO存儲兩相之間傳遞的暫態(tài)外信息。該解碼器架構(gòu)具有很強的可配置性,可以容易地移植到其它任何規(guī)則或者非規(guī)則的QC-LDPC碼,解碼性能優(yōu)異,峰值頻率能夠達到214兆赫茲,吞吐量可以達到1千兆比特每秒左右,芯片功耗僅有397毫瓦。
文檔編號H03M13/11GK101771421SQ20101012190
公開日2010年7月7日 申請日期2010年3月11日 優(yōu)先權(quán)日2010年3月11日
發(fā)明者向波, 鮑丹, 黃雙渠, 曾曉洋 申請人:復(fù)旦大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
宜春市| 京山县| 乐清市| 武定县| 永仁县| 睢宁县| 汪清县| 澄迈县| 龙游县| 甘谷县| 福鼎市| 伊宁县| 青田县| 西峡县| 章丘市| 牟定县| 海盐县| 正安县| 灌南县| 汽车| 紫金县| 蒙山县| 晋城| 离岛区| 枣强县| 印江| 海南省| 丹东市| 无极县| 邵阳市| 大宁县| 寿宁县| 梧州市| 奎屯市| 双流县| 和田县| 石门县| 调兵山市| 遵义县| 遂平县| 微山县|