專利名稱:一種通用型ldpc譯碼器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種LDPC碼譯碼器,特別涉及具有通用性的LDPC譯碼器,屬于譯碼技 術(shù)領(lǐng)域。
背景技術(shù):
隨著深空通信、移動衛(wèi)星通信等技術(shù)的不斷發(fā)展,低信噪比通信成為通信技術(shù)發(fā) 展的一個(gè)重要方向。為了能夠可靠的進(jìn)行通信,高增益的信道編碼成為低信噪比通信系統(tǒng) 不可或缺的一部分,在迄今為止所發(fā)明和應(yīng)用的糾錯(cuò)編碼技術(shù)中,只有Turbo碼和LDPC碼 具有接近香農(nóng)極限的性能。與Turbo碼相比,LDPC碼在運(yùn)算速度、譯碼門限和錯(cuò)誤平層方 面都具有明顯的優(yōu)勢,成為當(dāng)前信道編碼領(lǐng)域的研究熱點(diǎn)。歐洲數(shù)字電視廣播組織(DVB) 已經(jīng)宣布在其下一代衛(wèi)星數(shù)字電視標(biāo)準(zhǔn)(DVB-S2)中放棄Turbo碼而采用LDPC碼作為前向 糾錯(cuò)的編碼方案。而下一代蜂窩移動通信,寬帶衛(wèi)星通信,無線個(gè)人區(qū)域網(wǎng)(802. 15),無線 移動寬帶接入網(wǎng)(802.20)以及其它諸如數(shù)據(jù)存儲介質(zhì)設(shè)備訪問和有線調(diào)制解調(diào)器(Cable Modem)、數(shù)字用戶線(DSL)等通信系統(tǒng)也正在考慮將其作為信道編碼規(guī)范。LDPC(Low-Density Parity Check Code)碼是一種線性分組碼,它的校驗(yàn)矩陣是 一個(gè)非常稀疏的矩陣,矩陣中的非零元素的數(shù)量相對于行列長度來說很少。如果校驗(yàn)矩陣 的每一列(或行)都有相同的重量稱這種LDPC碼是規(guī)則的,否則稱為不規(guī)則LDPC碼。由 于非規(guī)則LDPC碼的校驗(yàn)矩陣中元素1的位置基本沒有規(guī)律可循,導(dǎo)致編碼復(fù)雜度高,實(shí)現(xiàn) 難度比較大。而規(guī)則LDPC碼,特別是準(zhǔn)循環(huán)規(guī)則LDPC碼可以采用簡單的移位寄存器完成 編碼,硬件復(fù)雜度大大降低?,F(xiàn)有的LDPC碼譯碼器基本上都不具備通用性,一種碼長對應(yīng)一種譯碼器,變化碼 長后需要重新設(shè)計(jì)譯碼器,大大增加了研發(fā)時(shí)間和研發(fā)成本。對于星上使用的LDPC譯碼 器,由于工作環(huán)境特殊,必須要有一種通用型的LDPC譯碼器來兼容不同的通信系統(tǒng)協(xié)議, 因此LDPC碼譯碼器的通用性在星上環(huán)境尤為關(guān)鍵。
發(fā)明內(nèi)容
本發(fā)明的技術(shù)解決問題是克服現(xiàn)有技術(shù)的不足,提供了一種通用型LDPC譯碼 器。采用本發(fā)明解決了對不同碼長LDPC碼譯碼器不兼容的問題,以通用型譯碼結(jié)構(gòu)實(shí)現(xiàn)了 對不同長度LDPC碼的譯碼。本發(fā)明的技術(shù)解決方案是—種通用型LDPC譯碼器,包括調(diào)度模塊、接收模塊、譯碼模塊和發(fā)送模塊,接收模 塊接收LDPC編碼數(shù)據(jù)并將編碼數(shù)據(jù)逐段輸出到譯碼模塊;譯碼模塊對接收模塊輸入的編 碼數(shù)據(jù)進(jìn)行譯碼,并將譯碼數(shù)據(jù)輸出給發(fā)送模塊;發(fā)送模塊將譯碼模塊分段輸出的譯碼數(shù) 據(jù)排序后組成信息數(shù)據(jù)輸出,其特征在于所述的調(diào)度模塊與以握手命令的方式采用狀態(tài) 機(jī)實(shí)現(xiàn)對接收模塊、譯碼模塊和發(fā)送模塊的交互控制;所述的譯碼模塊可對通用長度的LDPC編碼數(shù)據(jù)進(jìn)行譯碼,譯碼模塊包括校驗(yàn)節(jié)
4點(diǎn)處理模塊CNPMi, i=0......n-l,n為校驗(yàn)矩陣原模圖的行數(shù)、變量節(jié)點(diǎn)處理模塊VNPMj.,
j = 0......m-l,m為校驗(yàn)矩陣原模圖的列數(shù)、輸入數(shù)據(jù)存儲器Yj、輸出數(shù)據(jù)存儲器Dj、迭代
計(jì)算存儲器Ru和Qij ;VNPMj具有i+Ι個(gè)從0到i編號的輸入端和i個(gè)從0到i_l編號的輸出端,VNPMj 的編號為i的輸入端與Y」的輸出端相連,VNPM^的編號從0到i-Ι的輸入端按編號與Rij的 輸出端對應(yīng)相連,VNPMj的編號從0到i-Ι的輸出端按編號與Qu的輸入端對應(yīng)相連;接收到數(shù)據(jù)接收指令后,VNPM^將Yj緩存輸入的編碼數(shù)據(jù)段復(fù)制i次,并保存編碼 數(shù)據(jù)段后,再從i個(gè)輸出端同時(shí)輸出到相連的Qu中;接收到開始譯碼指令后,譯碼模塊進(jìn)入迭代譯碼過程,VNPMj將每次從i-Ι個(gè)輸入 端輸入的數(shù)據(jù)與修正因子相乘,再與保存的編碼數(shù)據(jù)段相加后保存所得結(jié)果;再將結(jié)果從 i個(gè)輸出端同時(shí)輸出,并寫入到對應(yīng)的Qu ;其中作為加數(shù)的i_l個(gè)輸入端不包括與VNPMj編 號j相同的輸入端所輸入的數(shù)據(jù);CNPMi具有j個(gè)從0到j(luò)-Ι編號的輸入端與j個(gè)0到j(luò)_l編號的輸出端;CNPMi的 j個(gè)輸入端按編號與Qu的輸出端對應(yīng)相連,CNPMi的j個(gè)輸出端按編號與Ru的輸入端對應(yīng) 相連;CNPMi將每次從j個(gè)輸入端輸入的數(shù)據(jù)中絕對值最小與次小的數(shù)據(jù)選出;從與輸 入最小絕對值數(shù)據(jù)的輸入端編號相同的輸出端輸出絕對值次小的數(shù)據(jù),從其它j-ι個(gè)輸出 端輸出絕對值最小的數(shù)據(jù);CNPMi將j個(gè)輸出端口輸出的數(shù)據(jù)寫入到對應(yīng)的Rqj ;在迭代譯碼過程中,CNPMi和VNPM^依次迭代進(jìn)行工作,并分別接收從Qu和Rij輸 出的數(shù)據(jù),Qij和Rij在輸出數(shù)據(jù)時(shí),按照預(yù)先規(guī)定的讀取地址循環(huán)讀取上次迭代時(shí)分別由 VNPMj和CNPMi寫入的數(shù)據(jù);下標(biāo)相同的Qu和Ru為一組對應(yīng)于校驗(yàn)矩陣原模圖每行中的每 個(gè)元素節(jié)點(diǎn),一組Qjq和Rjq具有相同的讀取地址和末尾地址,所述的讀取地址等于與Qjq和 Rjq對應(yīng)的元素節(jié)點(diǎn)擴(kuò)展后子矩陣的偏移量;所述的末尾地址等于與和!^對應(yīng)的元素節(jié) 點(diǎn)擴(kuò)展后子矩陣的秩;所述讀取地址和末尾地址需要再譯碼前根據(jù)碼長進(jìn)行配置;接收到結(jié)束譯碼指令后,VNPMdf編號從0到的輸入端輸入的數(shù)據(jù)與保存的編 碼數(shù)據(jù)段求和后進(jìn)行硬判決后從1個(gè)輸出端輸出到Dp并由A按編號順序?qū)⒆g碼數(shù)據(jù)輸出。所述的譯碼模塊還可設(shè)計(jì)為包括校驗(yàn)節(jié)點(diǎn)處理模塊CNPMi, i=0......n-l,n為
校驗(yàn)矩陣原模圖的行數(shù)、變量節(jié)點(diǎn)處理模塊VNPMp j = 0......m-l,m為校驗(yàn)矩陣原模圖的
列數(shù)、輸入數(shù)據(jù)存儲器Y”輸出數(shù)據(jù)存儲器Dp迭代計(jì)算存儲器Rtu.和Qtu.,q = 0......k-1,
k為校驗(yàn)矩陣原模圖每列中校驗(yàn)節(jié)點(diǎn)的個(gè)數(shù);VNPMj具有k+Ι個(gè)從0到k編號的輸入端和k個(gè)從0到k_l編號的輸出端,VNPMj 的編號為k的輸入端與Y」的輸出端相連,VNPM^的編號從0到k-Ι的輸入端按編號與Rqj的 輸出端對應(yīng)相連,VNPMj的編號從0到k-Ι的輸出端按編號與Qtu.的輸入端對應(yīng)相連;接收到數(shù)據(jù)接收指令后,VNPM^將Yj緩存輸入的編碼數(shù)據(jù)段復(fù)制k次,并保存編碼 數(shù)據(jù)段后,再從k個(gè)輸出端同時(shí)輸出;接收到開始譯碼指令后,譯碼模塊進(jìn)入迭代譯碼過程,VNPMj將每次從k-Ι個(gè)輸入 端輸入的數(shù)據(jù)與修正因子相乘,再與保存的編碼數(shù)據(jù)段相加后保存;將結(jié)果從k個(gè)輸出端 同時(shí)輸出,并寫入到對應(yīng)的Qtu.;其中作為加數(shù)的k-Ι個(gè)輸入端不包括與VNPM^編號j相同的 輸入端所輸入的數(shù)據(jù);
5
CNPMi具有I個(gè)從0到I-I編號的輸入端與I個(gè)0到I-I編號的輸出端,所述的I 為校驗(yàn)矩陣原模圖每行中變量節(jié)點(diǎn)的個(gè)數(shù);CNPMi的I個(gè)輸入端與Qtu.的輸出端,按校驗(yàn)矩陣 原模圖第i行中變量節(jié)點(diǎn)的位置對應(yīng)相連,CNPMi的I個(gè)輸出端與Rtu.的輸入端,按校驗(yàn)矩陣 原模圖i行中變量節(jié)點(diǎn)的位置對應(yīng)相連;CNPMi將每次從I個(gè)輸入端輸入的數(shù)據(jù)中絕對值最小與次小的數(shù)據(jù)選出;從輸入 最小絕對值數(shù)據(jù)的輸入端編號相同的輸出端輸出絕對值次小的數(shù)據(jù),從其它I-I個(gè)輸出端 輸出絕對值最小的數(shù)據(jù);CNPMi將I個(gè)輸出端口輸出的數(shù)據(jù)寫入到對應(yīng)的Rqj ;在迭代譯碼過程中,CNPMi和VNPMj依次迭代進(jìn)行工作,并分別接收從Qjq和Rjq輸 出的數(shù)據(jù),Qjt^P Rjq在輸出數(shù)據(jù)時(shí),按照預(yù)先規(guī)定的讀取地址循環(huán)讀取上次迭代寫入的數(shù) 據(jù);下標(biāo)相同Qm和&為一組并按列對應(yīng)于校驗(yàn)矩陣原模圖每行中的校驗(yàn)節(jié)點(diǎn),一組QM和 Rjq具有相同的讀取地址,所述的讀取地址等于與Qjq和Rjq對應(yīng)的校驗(yàn)節(jié)點(diǎn)擴(kuò)展后子矩陣的 偏移量;接收到結(jié)束譯碼指令后,VNPM^將編號從0到k-Ι的輸入端輸入的數(shù)據(jù)與保存的編 碼數(shù)據(jù)段求和后進(jìn)行硬判決后從1個(gè)輸出端輸出到Dp并由A按編號順序?qū)⒆g碼數(shù)據(jù)輸出。所述的通用長度為校驗(yàn)矩陣原模圖每行變量節(jié)點(diǎn)個(gè)數(shù)的整數(shù)倍。所述的修正因子取值在0 1間。本發(fā)明與現(xiàn)有技術(shù)相比具有如下優(yōu)點(diǎn)(1)、本發(fā)明的譯碼模塊采用的設(shè)計(jì)結(jié)構(gòu),可實(shí)現(xiàn)對不同碼長LDPC的譯碼,只需要 重新配置譯碼模塊中的讀取地址便可適應(yīng)不同的碼長的LDPC碼,具有良好的靈活性與極 強(qiáng)的兼容性。(2)、本發(fā)明各個(gè)模塊間采用狀態(tài)機(jī)進(jìn)行實(shí)現(xiàn),各個(gè)工作模塊在調(diào)度模塊的握手式 控制下獨(dú)立工作,提高了譯碼器的可靠性。(2)、由于本發(fā)明具有通用型譯碼結(jié)構(gòu),因此可采用固定的FPGA資源并配合外置 RAM進(jìn)行實(shí)現(xiàn),并且FPGA資源占用少,邏輯資源不隨碼長的增加而增多,節(jié)省了設(shè)計(jì)與實(shí)現(xiàn) 階段的軟硬件資源,尤其適應(yīng)于資源有限的航天器工作環(huán)境。
圖1為本發(fā)明系統(tǒng)框圖;圖2為本發(fā)明狀態(tài)機(jī)圖;圖3為譯碼模塊結(jié)構(gòu)設(shè)計(jì)圖;圖4為實(shí)施例校驗(yàn)矩陣原模圖;圖5為譯碼性能曲線圖。
具體實(shí)施例方式一、發(fā)明原理準(zhǔn)循環(huán)LDPC碼的校驗(yàn)矩陣Hq。如式(1)所示,各子矩陣Am是bXb的循環(huán)右移置 換矩陣或者是bXb的0矩陣。
由于循環(huán)置換矩陣Aiij的形式完全決定于矩陣的偏移量,因此,總可以用母矩陣Hb =[P(i,j)]mXn來表征校驗(yàn)矩陣扎。,其中,p(i,j)為Aiij的偏移量。若p(i,j) >0,則表示Hq。矩陣中對應(yīng)的Aiij是向右偏移量為ρ (i,j)的置換矩陣, 即通過將單位矩陣循環(huán)右移P (i,j)位,可得到Aiij ;若p(i,j) = 0,則表示Ay為單位陣,即不對單位陣進(jìn)行循環(huán)移位;若p(i,j) < 0,則表示Aiij為全0矩陣。這樣在設(shè)計(jì)中只要存儲母矩陣就可以表示校驗(yàn)矩陣H,。,借此原理使得對LDPC碼 的通用譯碼方法具備了可實(shí)現(xiàn)性。在本發(fā)明所述的技術(shù)方案就是基于準(zhǔn)循環(huán)LDPC碼的譯 碼器。原模圖(J Thorpe,((Low-Density Parity-Check(LDPC)Codes Constructed from Protographs)),與 D. Divsalar, ((Construction of ProtographLDPC Codes with Linear Minimum Distance))))可以認(rèn)為是節(jié)點(diǎn)數(shù)量較少的LDPC碼的校驗(yàn)矩陣,對應(yīng)式(1)中的子 矩陣Am (b Xb的矩陣),若在原模圖中令b為1,則Am僅代表O和1兩種值,因此,原模圖 具有LDPC碼校驗(yàn)矩陣的所有屬性?;谠D的LDPC碼構(gòu)造是在原模圖基礎(chǔ)上擴(kuò)展Ai,j, 通過改變b的值,使譯碼器通用于各種碼長的LDPC碼。原模圖經(jīng)擴(kuò)展后得到LDPC碼的校驗(yàn)矩陣后,由于Ai, j的b大于1,所以,擴(kuò)展倍數(shù) 不同,相同位置的Ai, j可能會對應(yīng)多種不同的偏移量,不同的偏移量對應(yīng)到新的LDPC碼所 體現(xiàn)的也就性能不同,因此,在選擇原模圖校驗(yàn)矩陣時(shí),需要通過計(jì)算機(jī)仿真搜索,選出一 個(gè)性能優(yōu)異的原模圖矩陣。二、設(shè)計(jì)方案本發(fā)明的通用型LDPC譯碼器包括調(diào)度模塊、接收模塊、譯碼模塊和發(fā)送模塊。如 圖1所示,為譯碼器各模塊間連接示意圖。1、狀態(tài)機(jī)設(shè)計(jì)調(diào)度模塊是譯碼器中的全局控制模塊,調(diào)度模塊對其他模塊進(jìn)行握手方式交互控 制,即調(diào)度模塊向各個(gè)模塊發(fā)出控制命令,在等待模塊工作完成并回復(fù)命令后,再發(fā)出下一 條命令。整個(gè)譯碼器是以命令驅(qū)動的狀態(tài)機(jī)方式進(jìn)行工作。如圖2所示,為譯碼器狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)換圖。采用狀態(tài)機(jī)的觸發(fā)工作模式消除了 因碼長變化對各模塊處理時(shí)間的影響,同時(shí)確保了處理模塊間互不影響的并行工作,也提 高了譯碼器工作的可靠性。整個(gè)狀態(tài)機(jī)包括5個(gè)工作狀態(tài)分別為等待狀態(tài)Idle (空閑)、接收狀態(tài)Si、變量 節(jié)點(diǎn)更新狀態(tài)S2、校驗(yàn)節(jié)點(diǎn)更新狀態(tài)S3和輸出狀態(tài)S4。Idle狀態(tài)為譯碼器的起始工作狀態(tài)。此時(shí)各個(gè)模塊之間無數(shù)據(jù)傳輸,處于等待 調(diào)度模塊調(diào)度命令的狀態(tài)。
Sl狀態(tài)為譯碼器的接收模塊的工作狀態(tài)。當(dāng)有譯碼數(shù)據(jù)到來時(shí),調(diào)度模塊向接 收模塊發(fā)送接收命令,啟動接收模塊接收譯碼數(shù)據(jù),接收模塊對輸入的譯碼數(shù)據(jù)進(jìn)行緩沖, 然后按照譯碼數(shù)據(jù)的輸入順序進(jìn)行分段存儲,然后向調(diào)度模塊回復(fù)并等待調(diào)度模塊的發(fā)送 命令,收到發(fā)送命令后接收模塊將分段后的譯碼數(shù)據(jù)分別并同時(shí)輸出給譯碼模塊。S2、S3狀態(tài)為譯碼器的譯碼模塊迭代譯碼工作的狀態(tài)。在譯碼過程中,S2狀態(tài) 和S3狀態(tài)循環(huán)迭代進(jìn)行,其中,S2狀態(tài)為VNPM的工作狀態(tài),對應(yīng)于變量節(jié)點(diǎn)更新操作;S3 狀態(tài)為CNPM的工作狀態(tài),對應(yīng)于校驗(yàn)節(jié)點(diǎn)更新操作。譯碼模塊工作時(shí),不考慮輸入的譯碼數(shù)據(jù)的碼字長度,只是根據(jù)調(diào)度模塊的開始 譯碼命令與停止譯碼命令進(jìn)行工作。當(dāng)譯碼模塊接收到調(diào)度模塊的開始譯碼命令后,開始 進(jìn)行譯碼。此時(shí)譯碼器處于S2狀態(tài),然后,按照變量節(jié)點(diǎn)信息更新(S2狀態(tài))、校驗(yàn)節(jié)點(diǎn)信 息更新(S3狀態(tài))的轉(zhuǎn)換順序循環(huán)進(jìn)行迭代譯碼計(jì)算。每完成一次變量節(jié)點(diǎn)更新操作與校 驗(yàn)節(jié)點(diǎn)更新操作相當(dāng)于完成一次迭代,譯碼過程中,調(diào)度模塊對迭代次數(shù)進(jìn)行累加計(jì)數(shù)。當(dāng) 達(dá)到預(yù)定的迭代次數(shù)時(shí),調(diào)度模塊向譯碼模塊發(fā)送停止命令,譯碼模塊接收到停止命令后, 停止譯碼,輸出譯碼數(shù)據(jù)。S4狀態(tài)為譯碼器的輸出模塊工作的狀態(tài)。當(dāng)有譯碼數(shù)據(jù)輸出時(shí),調(diào)度模塊向輸 出模塊發(fā)送輸出命令,啟動輸出模塊接收譯碼模塊的輸出數(shù)據(jù)并進(jìn)行緩沖,由于譯碼器接 收模塊接收的輸入數(shù)據(jù)是分段存儲的,因此輸出緩存D中的數(shù)據(jù)也要依次輸出,即Dtl的數(shù) 據(jù)全部輸出完畢后,再輸出D1中的數(shù)據(jù),依次類推。2、模塊設(shè)計(jì)譯碼模塊譯碼器的核心是譯碼矩陣模塊,本發(fā)明譯碼模塊結(jié)合原模圖結(jié)構(gòu)產(chǎn)生了具備通用 性的LDPC譯碼結(jié)構(gòu)。原模圖本質(zhì)上是一個(gè)較小規(guī)模的準(zhǔn)循環(huán)LDPC碼的校驗(yàn)矩陣,它規(guī)定了每一行和 每一列的子矩陣Ai, j個(gè)數(shù),以及全0矩陣和非0矩陣的位置。在設(shè)計(jì)譯碼器時(shí),原模圖的 結(jié)構(gòu)決定了 LDPC碼的譯碼結(jié)構(gòu),因此,只要不改變原模圖的結(jié)構(gòu)(即非0矩陣的個(gè)數(shù)和位 置),即使LDPC編碼的碼長改變,那么譯碼模塊的譯碼結(jié)構(gòu)就不會改變,從而使譯碼器具備 了通用性。在設(shè)計(jì)譯碼模塊前,先優(yōu)選一個(gè)性能優(yōu)異的原模圖,以該原模圖為藍(lán)本建立譯碼 結(jié)構(gòu),所謂性能優(yōu)異的原模圖是指在相同的誤碼率條件下,若信噪比越低,則原模圖的性能 越好。在碼長變化時(shí),不改變原模圖的結(jié)構(gòu),只是調(diào)整子矩陣Am的大小和偏移量使其滿足 碼長要求,子矩陣的大小根據(jù)碼長值可以直接算出,偏移量需要通過LDPC譯碼仿真模型進(jìn) 行篩選。本發(fā)明的譯碼模塊為達(dá)到通用性的目的,須要對子矩陣Ai, j大小和偏移量的改變 能夠自適應(yīng)。在具體設(shè)計(jì)時(shí),采用了兩種設(shè)計(jì)結(jié)構(gòu)。結(jié)構(gòu)一對于一個(gè)大小為nXm的校驗(yàn)矩陣原模圖,需要η個(gè)校驗(yàn)節(jié)點(diǎn)處理模塊CNPMi,并按 照從0到η-1進(jìn)行編號;m個(gè)變量節(jié)點(diǎn)處理模塊VNPMj,并按照從0到m-1進(jìn)行編號。同時(shí), 為存儲接收模塊分段輸入的編碼數(shù)據(jù)段和分段輸出譯碼數(shù)據(jù)段,還需要與于VNPM^對應(yīng)的 j個(gè)輸入數(shù)據(jù)存儲器Yj和j個(gè)輸出數(shù)據(jù)存儲器 ,Yj和A同樣按照0到m-1進(jìn)行編號,并
8按編號與對應(yīng)的VNPM^相聯(lián)接。對應(yīng)于原模圖校驗(yàn)矩陣中的每個(gè)元素經(jīng)擴(kuò)展后獲得的子矩 陣,同時(shí)設(shè)置迭代計(jì)算存儲器Ru和Qu,一個(gè)Rtu.和一個(gè)Qtu.定為一組。對于變量節(jié)點(diǎn)處理模塊VNPMj,具有i+Ι個(gè)從0到i編號的輸入端和i個(gè)從0到 i-1編號的輸出端,VNPMj的第i個(gè)輸入端與Y」的輸出端相連,VNPMj的編號從0到i_l的 輸入端按編號與Ru的輸出端對應(yīng)相連,VNPMj的編號從0到i-Ι的輸出端按編號與Qij的 輸入端對應(yīng)相連。對于校驗(yàn)節(jié)點(diǎn)處理模塊CNPMi,具有就個(gè)從0到j(luò)-Ι編號的輸入端與j個(gè)0到j(luò)_l 編號的輸出端。CNPMi的j個(gè)從0到j(luò)-Ι編號的輸入端與Qu的輸出端按編號對應(yīng)相連,CNPMi 的就個(gè)從0到j(luò)-Ι編號的輸出端與Qu的輸入端按編號對應(yīng)相連。如圖3所示,為校驗(yàn)矩陣原模圖H = [AijJ2x4時(shí),采用結(jié)構(gòu)一實(shí)現(xiàn)的譯碼模塊。圖 3中,對應(yīng)于校驗(yàn)矩陣原模圖的行數(shù)設(shè)置有2個(gè)CNPM,列數(shù)設(shè)置有4個(gè)VNMP,并設(shè)置有2X4 組R和Q,分別按照行列進(jìn)行編號。并按照上述連接方式進(jìn)行了連接。結(jié)構(gòu)二同樣對一個(gè)大小為nXm的校驗(yàn)矩陣原模圖,結(jié)構(gòu)二與結(jié)構(gòu)一相比,其主要區(qū)別在 于使用的R與Q的數(shù)量變?yōu)镽tu.和Qtu.,其中,若按列優(yōu)先進(jìn)行排列,則q對應(yīng)于校驗(yàn)矩陣原模 圖每列中校驗(yàn)節(jié)點(diǎn)的個(gè)數(shù)k,按照從0到k-Ι進(jìn)行編號。則結(jié)合校驗(yàn)矩陣原模圖進(jìn)行分析, 結(jié)構(gòu)二相對于結(jié)構(gòu)一省略了對應(yīng)于校驗(yàn)矩陣原模圖中對應(yīng)于0元素位置的R與Q。為適應(yīng)R與Q數(shù)量的改變,VNPM和CNPM的輸入與輸出端進(jìn)行了相應(yīng)的變化。對于 變量節(jié)點(diǎn)處理模塊VNPMj,具有k+Ι個(gè)從0到k編號的輸入端和k個(gè)從0到k-Ι編號的輸出 端,VNPMj的第k個(gè)輸入端與Yj的輸出端相連,VNPMj的編號從0到k_l的輸入端按編號與 Rqj的輸出端對應(yīng)相連,VNPMj的編號從0到k-Ι的輸出端按編號與Qtu.的輸入端對應(yīng)相連。對于校驗(yàn)節(jié)點(diǎn)處理模塊CNPMi,具有I個(gè)從0到I-I編號的輸入端與I個(gè)0到I-I 編號的輸出端,所述的I為校驗(yàn)矩陣原模圖每行中變量節(jié)點(diǎn)的個(gè)數(shù)。在校驗(yàn)矩陣原模圖中, 一行中具有多個(gè)不同的變量節(jié)點(diǎn)(變量節(jié)點(diǎn)的個(gè)數(shù)可以為0),所以,對于不同的CNPMi與 VNPMj具有不同的對應(yīng)連接關(guān)系。由于,原模圖在進(jìn)行擴(kuò)展式,0元素?cái)U(kuò)展后為全0的子矩 陣,因此,在按此原理設(shè)計(jì)譯碼模塊的結(jié)構(gòu)時(shí),可進(jìn)一步總結(jié)為,按行編號的CNPMi與校驗(yàn)矩 陣原模圖中第i行存在校驗(yàn)節(jié)點(diǎn)的VNPM^具有連接,而CNPMi和VNPM^的連接點(diǎn)便為Rqj和在CNPMi和Rtu.和Qtu.的連接時(shí),CNPMi的I個(gè)從0到1_1編號的輸入端與Qtu.的輸 出端,按校驗(yàn)矩陣原模圖第i行中變量節(jié)點(diǎn)的位置對應(yīng)相連,CNPMi的I個(gè)從0到I-I編號 的輸出端與Rtu.的輸入端,按校驗(yàn)矩陣原模圖i行中變量節(jié)點(diǎn)的位置對應(yīng)相連。此種設(shè)計(jì),使得在進(jìn)行迭代的過程中,CNPMi和VNPM^分別按照校驗(yàn)節(jié)點(diǎn)和變量節(jié) 點(diǎn)的對應(yīng)位置進(jìn)行工作,從而會出現(xiàn)暫時(shí)空閑的CNPMi和VNPMj。但由于采用了與校驗(yàn)矩陣 原模圖中校驗(yàn)節(jié)點(diǎn)(變量節(jié)點(diǎn))總數(shù)的Rtu.和Qtu.,因此,、和Qtu.在每次迭代過程中均會被 使用,始終處于工作中。相對于結(jié)構(gòu)一進(jìn)一步節(jié)省了硬件資源。譯碼算法本發(fā)明采用了乘性修正最小和(MSMA)譯碼算法進(jìn)行譯碼。接收到開始譯碼指令后,譯碼模塊進(jìn)入迭代譯碼過程,VNPMj將每次從k_l或i_l 個(gè)輸入端輸入的數(shù)據(jù)與修正因子相乘,再與保存的編碼數(shù)據(jù)段相加后保存;將結(jié)果從k或i
9個(gè)輸出端同時(shí)輸出,并寫入到對應(yīng)的Q中;其中作為加數(shù)的輸入端不包括與VNPM^編號j相 同的輸入端所輸入的數(shù)據(jù);CNPMi將每次從I或j個(gè)輸入端輸入的數(shù)據(jù)中絕對值最小與次小的數(shù)據(jù)選出;從輸 入最小絕對值數(shù)據(jù)的輸入端編號相同的輸出端輸出絕對值次小的數(shù)據(jù),從其它I-I或j-1 個(gè)輸出端輸出絕對值最小的數(shù)據(jù);CNPMi將I或j個(gè)輸出端口輸出的數(shù)據(jù)寫入到對應(yīng)的R 中。在迭代譯碼過程中,CNPMi和VNPM^分別接收從與其相連的Q和R輸出的數(shù)據(jù)。Q 和R在輸出數(shù)據(jù)時(shí),按照預(yù)先規(guī)定的讀取地址循環(huán)讀取上次迭代寫入的數(shù)據(jù)一組Q和R具 有相同的讀取地址,讀取地址等于與Q和R對應(yīng)的校驗(yàn)節(jié)點(diǎn)擴(kuò)展后所得子矩陣的偏移量。在每組Q和R中,寫入數(shù)據(jù)的首地址為0,末尾地址為b_l,b為每組Q和R所對應(yīng) 校驗(yàn)矩陣原模圖子矩陣的秩。循環(huán)讀取的規(guī)則為,Q和R以預(yù)先規(guī)定的讀取地址ADDx為首 地址讀取暫存于其中的數(shù)據(jù),當(dāng)讀取到數(shù)據(jù)末地址b-Ι時(shí),在從0開始讀取直到ADDx-1,通 過此循環(huán)讀取,實(shí)現(xiàn)對其中暫存數(shù)據(jù)的循環(huán)移位輸出。按照這個(gè)設(shè)計(jì)方案,只需要在Q和R中預(yù)先按照對應(yīng)的子矩陣的偏移量設(shè)置好每 次讀取數(shù)據(jù)的起始地址(讀取地址),CNPMi和VNPM^分別獨(dú)立進(jìn)行進(jìn)行,調(diào)度模塊累加統(tǒng) 計(jì)迭代次數(shù),從而可以在編碼長度改變時(shí),只需要通過程序改變每個(gè)Q和R中的讀取地址與 b,便可在不影響譯碼結(jié)構(gòu)的情況下,對不同編碼長度的LDPC碼進(jìn)行譯碼,實(shí)現(xiàn)了譯碼器的 通用性設(shè)計(jì)。對于結(jié)構(gòu)二的設(shè)計(jì),由于省略了校驗(yàn)矩陣原模圖中與0元素相對應(yīng)的Q和R,但是, 結(jié)構(gòu)二中的Q和R仍與校驗(yàn)矩陣原模圖中的非零元素存在對應(yīng)關(guān)系,因此可以按照同樣的 方式設(shè)置讀取地址。接收模塊用于接收輸入譯碼器的編碼數(shù)據(jù),并對編碼數(shù)據(jù)進(jìn)行分段,接受模塊對編碼數(shù)據(jù) 的分段原則是根據(jù)譯碼模塊中Yj的個(gè)數(shù)對輸入的編碼數(shù)據(jù)按照先后順序進(jìn)行的。分段完成 后的編碼數(shù)據(jù)段在調(diào)度模塊的控制下,逐段依次序輸入到譯碼模塊的Y」中,即按照從\到 Ym的順序進(jìn)行接收。輸出模塊輸出模塊在調(diào)度模塊的控制下接收譯碼模塊輸出的譯碼數(shù)據(jù)段,并將分段輸出的 譯碼數(shù)據(jù)重新組合后輸出。按照譯碼模塊接收編碼數(shù)據(jù)段的先后順序,將譯碼數(shù)據(jù)段編排 后輸出,即按照從Dtl到Dm的順序進(jìn)行輸出。調(diào)度模塊調(diào)度模塊對接收模塊、譯碼模塊與輸出模塊進(jìn)行握手控制,以狀態(tài)轉(zhuǎn)換的方式控 制各個(gè)模塊獨(dú)立工作。三、實(shí)施例以下以1/2碼率為例,對可配置碼長的通用LDPC譯碼器的設(shè)計(jì)過程進(jìn)行說明。本方案通過仿真模型選擇的原模圖矩陣如圖4,按照原模圖設(shè)計(jì)的譯碼結(jié)構(gòu)中 QC-LDPC碼的母矩陣Hb = [BijJ8xi6,譯碼結(jié)構(gòu)包括8個(gè)校驗(yàn)節(jié)點(diǎn)處理模塊CNPM,16個(gè)變量 節(jié)點(diǎn)處理模塊VNPM ;16個(gè)輸入數(shù)據(jù)存儲器Y ;16個(gè)輸出數(shù)據(jù)存儲器D ;48個(gè)交互信息存儲 器R ;48個(gè)交互信息存儲器Q。
48組R和Q分為16列,每一列上的3組R和Q均對應(yīng)一個(gè)VNPM,根據(jù)圖4中,校 驗(yàn)矩陣原模圖每列中校驗(yàn)節(jié)點(diǎn)的個(gè)數(shù),每個(gè)VNPM具有4個(gè)輸入端與3個(gè)輸出端,其中每個(gè) VNPM的第4個(gè)輸入端與Y相連。其余3個(gè)輸入端分別連接本列中的3個(gè)R的輸出端,而3 個(gè)輸出端分別連接本列中的3個(gè)Q的輸入端,同時(shí)復(fù)用1個(gè)輸出端用于在譯碼結(jié)束時(shí)向D 輸出譯碼數(shù)據(jù)。CNPM同樣具有6個(gè)輸入端與6個(gè)輸出端。48組R和Q分為16列后,將共有3行。 8個(gè)校驗(yàn)節(jié)點(diǎn)處理模塊CNPM分別對應(yīng)于8行,并根據(jù)圖4矩陣中每行變量節(jié)點(diǎn)的位置對應(yīng) 連接R和Q。本方案中原模圖的子矩陣是bXb的循環(huán)右移置換矩陣,根據(jù)圖4可知,利用此校 驗(yàn)矩陣原模圖可對碼長L = 16 * b的LDPC碼進(jìn)行譯碼(這里的碼長需為16的整數(shù)倍)。 使用前,通過原模圖到LDPC碼校驗(yàn)矩陣的仿真模型,可得到對應(yīng)碼長校驗(yàn)矩陣的偏移量, 進(jìn)而可以設(shè)置每個(gè)R和Q的讀取地址。本實(shí)施例中使用xiIinx公司的Virtex4SX55的FPGA芯片,占用的邏輯資源為 25%,相當(dāng)于150萬門的邏輯。存儲器Q和R的容量分別為(8 ^ 4kbits),這樣在配置碼 長時(shí),只要子矩陣的大小不超過存儲器Q(和R)的容量上限即可。按照碼長公式L= 16 * b,當(dāng)b = 4k時(shí),碼長最長為64k,這個(gè)范圍內(nèi)的碼長足以滿足現(xiàn)有的LDPC碼的使用要求。此外,采用本發(fā)明設(shè)計(jì)的譯碼器也具有較好的譯碼性能,如圖5所示,可配置碼長 的LDPC譯碼器分別生成的碼長為6912( “ □”線)和2048( “〇”線)的碼性能曲線,圖中 X軸為信噪比(eb/nO),Y軸為誤碼率。資料顯示,CCSDS標(biāo)準(zhǔn)中碼率為1/2,碼長為8192的 LDPC碼在10-8誤碼率條件下eb/nO為1. 5dB ;碼長2048的LDPC碼在10_6誤碼率條件下 eb/nO為2dB。比較可知,本方法中的可配置碼長的LDPC碼在性能上與CCSDS標(biāo)準(zhǔn)的差距 不到0. 3dB。本發(fā)明未詳細(xì)說明部分屬本領(lǐng)域技術(shù)人員公知常識。
1權(quán)利要求
一種通用型LDPC譯碼器,包括調(diào)度模塊、接收模塊、譯碼模塊和發(fā)送模塊,接收模塊接收LDPC編碼數(shù)據(jù)并將編碼數(shù)據(jù)逐段輸出到譯碼模塊;譯碼模塊對接收模塊輸入的編碼數(shù)據(jù)進(jìn)行譯碼,并將譯碼數(shù)據(jù)輸出給發(fā)送模塊;發(fā)送模塊將譯碼模塊分段輸出的譯碼數(shù)據(jù)排序后組成信息數(shù)據(jù)輸出,其特征在于所述的調(diào)度模塊與以握手命令的方式采用狀態(tài)機(jī)實(shí)現(xiàn)對接收模塊、譯碼模塊和發(fā)送模塊的交互控制;所述的譯碼模塊可對通用長度的LDPC編碼數(shù)據(jù)進(jìn)行譯碼,譯碼模塊包括校驗(yàn)節(jié)點(diǎn)處理模塊CNPMi,i=0......n 1,n為校驗(yàn)矩陣原模圖的行數(shù)、變量節(jié)點(diǎn)處理模塊VNPMj,j=0......m 1,m為校驗(yàn)矩陣原模圖的列數(shù)、輸入數(shù)據(jù)存儲器Yj、輸出數(shù)據(jù)存儲器Dj、迭代計(jì)算存儲器Rij和Qij;VNPMj具有i+1個(gè)從0到i編號的輸入端和i個(gè)從0到i 1編號的輸出端,VNPMj的編號為i的輸入端與Yj的輸出端相連,VNPMj的編號從0到i 1的輸入端按編號與Rij的輸出端對應(yīng)相連,VNPMj的編號從0到i 1的輸出端按編號與Qij的輸入端對應(yīng)相連;接收到數(shù)據(jù)接收指令后,VNPMj將Yj緩存輸入的編碼數(shù)據(jù)段復(fù)制i次,并保存編碼數(shù)據(jù)段后,再從i個(gè)輸出端同時(shí)輸出到相連的Qij中;接收到開始譯碼指令后,譯碼模塊進(jìn)入迭代譯碼過程,VNPMj將每次從i 1個(gè)輸入端輸入的數(shù)據(jù)與修正因子相乘,再與保存的編碼數(shù)據(jù)段相加后保存所得結(jié)果;再將結(jié)果從i個(gè)輸出端同時(shí)輸出,并寫入到對應(yīng)的Qij;其中作為加數(shù)的i 1個(gè)輸入端不包括與VNPMj編號j相同的輸入端所輸入的數(shù)據(jù);CNPMi具有j個(gè)從0到j(luò) 1編號的輸入端與j個(gè)0到j(luò) 1編號的輸出端;CNPMi的j個(gè)輸入端按編號與Qij的輸出端對應(yīng)相連,CNPMi的j個(gè)輸出端按編號與Rij的輸入端對應(yīng)相連;CNPMi將每次從j個(gè)輸入端輸入的數(shù)據(jù)中絕對值最小與次小的數(shù)據(jù)選出;從與輸入最小絕對值數(shù)據(jù)的輸入端編號相同的輸出端輸出絕對值次小的數(shù)據(jù),從其它j 1個(gè)輸出端輸出絕對值最小的數(shù)據(jù);CNPMi將j個(gè)輸出端口輸出的數(shù)據(jù)寫入到對應(yīng)的Rqj;在迭代譯碼過程中,CNPMi和VNPMj依次迭代進(jìn)行工作,并分別接收從Qij和Rij輸出的數(shù)據(jù),Qij和Rij在輸出數(shù)據(jù)時(shí),按照預(yù)先規(guī)定的讀取地址循環(huán)讀取上次迭代時(shí)分別由VNPMj和CNPMi寫入的數(shù)據(jù);下標(biāo)相同的Qij和Rij為一組對應(yīng)于校驗(yàn)矩陣原模圖每行中的每個(gè)元素節(jié)點(diǎn),一組Qjq和Rjq具有相同的讀取地址和末尾地址,所述的讀取地址等于與Qjq和Rjq對應(yīng)的元素節(jié)點(diǎn)擴(kuò)展后子矩陣的偏移量;所述的末尾地址等于與Qjq和Rjq對應(yīng)的元素節(jié)點(diǎn)擴(kuò)展后子矩陣的秩;所述讀取地址和末尾地址需要再譯碼前根據(jù)碼長進(jìn)行配置;接收到結(jié)束譯碼指令后,VNPMj將編號從0到i 1的輸入端輸入的數(shù)據(jù)與保存的編碼數(shù)據(jù)段求和后進(jìn)行硬判決后從1個(gè)輸出端輸出到Dj,并由Dj按編號順序?qū)⒆g碼數(shù)據(jù)輸出。
2.根據(jù)權(quán)利要求1所述的一種通用型LDPC譯碼器,其特征在于所述的譯碼模塊還可設(shè)計(jì)為包括校驗(yàn)節(jié)點(diǎn)處理模塊CNPMi, i=0......n-l,n為校驗(yàn)矩陣原模圖的行數(shù)、變量節(jié)點(diǎn)處理模塊VNPMj, j=0......m-1,m為校驗(yàn)矩陣原模圖的列數(shù)、輸入數(shù)據(jù)存儲器Yj、輸出數(shù)據(jù)存儲器Dj、迭代計(jì)算存儲器Rqj和Qqj, q = 0......k-1,k為校驗(yàn)矩陣原模圖每列中校驗(yàn)節(jié)點(diǎn)的個(gè)數(shù);VNPMj具有k+Ι個(gè)從0到k編號的輸入端和k個(gè)從0到k-Ι編號的輸出端,VNPMj的編 號為k的輸入端與Yj的輸出端相連,VNPM^的編號從0到k-Ι的輸入端按編號與Rtu.的輸出端對應(yīng)相連,VNPMj的編號從0到k-Ι的輸出端按編號與Qtu.的輸入端對應(yīng)相連;接收到數(shù)據(jù)接收指令后,VNPM^將Yj緩存輸入的編碼數(shù)據(jù)段復(fù)制k次,并保存編碼數(shù)據(jù) 段后,再從k個(gè)輸出端同時(shí)輸出;接收到開始譯碼指令后,譯碼模塊進(jìn)入迭代譯碼過程,VNPMj將每次從k-Ι個(gè)輸入端輸 入的數(shù)據(jù)與修正因子相乘,再與保存的編碼數(shù)據(jù)段相加后保存;將結(jié)果從k個(gè)輸出端同時(shí) 輸出,并寫入到對應(yīng)的Qtu.;其中作為加數(shù)的k-Ι個(gè)輸入端不包括與VNPM^編號j相同的輸入 端所輸入的數(shù)據(jù);CNPMi具有I個(gè)從0到I-I編號的輸入端與I個(gè)0到I-I編號的輸出端,所述的I為校 驗(yàn)矩陣原模圖每行中變量節(jié)點(diǎn)的個(gè)數(shù);CNPMi的I個(gè)輸入端與Qtu.的輸出端,按校驗(yàn)矩陣原模 圖第i行中變量節(jié)點(diǎn)的位置對應(yīng)相連,CNPMi的I個(gè)輸出端與Rtu.的輸入端,按校驗(yàn)矩陣原模 圖i行中變量節(jié)點(diǎn)的位置對應(yīng)相連;CNPMi將每次從I個(gè)輸入端輸入的數(shù)據(jù)中絕對值最小與次小的數(shù)據(jù)選出;從輸入最小 絕對值數(shù)據(jù)的輸入端編號相同的輸出端輸出絕對值次小的數(shù)據(jù),從其它I-I個(gè)輸出端輸出 絕對值最小的數(shù)據(jù);CNPMi將I個(gè)輸出端口輸出的數(shù)據(jù)寫入到對應(yīng)的Rqj ;在迭代譯碼過程中,CNPMi和VNPMj依次迭代進(jìn)行工作,并分別接收從Qjq和Rjq輸出的 數(shù)據(jù),Qm和在輸出數(shù)據(jù)時(shí),按照預(yù)先規(guī)定的讀取地址循環(huán)讀取上次迭代寫入的數(shù)據(jù);下 標(biāo)相同Qm和、為一組并按列對應(yīng)于校驗(yàn)矩陣原模圖每行中的校驗(yàn)節(jié)點(diǎn),一組QM和&具 有相同的讀取地址,所述的讀取地址等于與Qjt^P Rjq對應(yīng)的校驗(yàn)節(jié)點(diǎn)擴(kuò)展后子矩陣的偏移 量;接收到結(jié)束譯碼指令后,VNPM^將編號從0到k-Ι的輸入端輸入的數(shù)據(jù)與保存的編碼數(shù) 據(jù)段求和后進(jìn)行硬判決后從1個(gè)輸出端輸出到~,并由A按編號順序?qū)⒆g碼數(shù)據(jù)輸出。
3.根據(jù)權(quán)利要求1所述的一種通用型LDPC譯碼器,其特征在于所述的通用長度為校 驗(yàn)矩陣原模圖每行變量節(jié)點(diǎn)個(gè)數(shù)的整數(shù)倍。
4.根據(jù)權(quán)利要求1所述的一種通用型LDPC譯碼器,其特征在于所述的修正因子取值 在0 1間。
5.根據(jù)權(quán)利要求1或4所述的一種通用型LDPC譯碼器,其特征在于所述的修正因子 取值 0.8125。
全文摘要
一種通用型LDPC譯碼器,包括調(diào)度模塊、輸入模塊、譯碼模塊和輸出模塊。輸入模塊、譯碼模塊和輸出模塊采用狀態(tài)機(jī)的方式在調(diào)度模塊的控制下進(jìn)行獨(dú)立工作,其中,譯碼模塊具有通用型硬件設(shè)計(jì),可對不同長度的LDPC碼進(jìn)行譯碼。
文檔編號H03M13/11GK101977063SQ20101053267
公開日2011年2月16日 申請日期2010年11月1日 優(yōu)先權(quán)日2010年11月1日
發(fā)明者侴勝男, 惠騰飛, 李雄飛, 楊磊, 趙雨, 龔險(xiǎn)峰 申請人:西安空間無線電技術(shù)研究所