本發(fā)明涉及一種通信技術(shù)領(lǐng)域的譯碼器及譯碼方法;特別涉及通信系統(tǒng)中一種基于多進制ldpc碼的高速譯碼器及其譯碼方法。
背景技術(shù):
通信系統(tǒng)中,傳輸?shù)臄?shù)據(jù)源可能是數(shù)字信號,例如來自計算機、移動設(shè)備、鍵盤等。而在數(shù)字信道中存在各種各樣的噪聲,因此,在數(shù)據(jù)傳輸過程中,需要引進前向糾錯(fec)或者叫信道編碼,發(fā)送端通過加入冗余位,進行糾錯碼編碼,編碼過后的信號經(jīng)過有噪信道到達接收端后,再進行譯碼,可以直接進行一定程度的糾錯。
低密度奇偶校驗(ldpc)碼作為前向糾錯碼的一種,由gallager在1963年提出,其性能理論上可以無限接近香農(nóng)極限,當(dāng)時由于技術(shù)限制,沉寂了三十年后,再一次成為了編碼領(lǐng)域的研究熱點。目前已廣泛應(yīng)用于光纖通信、以太網(wǎng)(10g)、微波通信、ssd、硬盤通信、5g通信等無線通信標(biāo)準(zhǔn)中。研究表明,多進制ldpc碼能夠獲得比二進制ldpc碼更好的性能,并且擁有更廣泛的應(yīng)用場景,比如高階調(diào)制、中短碼長、糾突發(fā)錯誤等,但未像二進制ldpc碼一樣得到迅速推廣,其主要原因在于,目前還沒有一種能夠兼顧譯碼性能和復(fù)雜度的多進制ldpc碼譯碼算法,尤其是在高速應(yīng)用上。目前的通信系統(tǒng)中,對高速低延遲高吞吐量的通信越來越重視,因此很多研究者在設(shè)計結(jié)構(gòu)簡單、高吞吐量的譯碼器做了大量的工作,但該問題仍未得到完全的改善。
現(xiàn)有的基于多進制ldpc碼的譯碼算法主要有兩類:一類是基于置信度傳播(bp)算法,另一類是基于大數(shù)邏輯譯碼(mlgd)算法。假設(shè)傳輸碼字和校驗矩陣是基于gf(2p),校驗矩陣為hm×n,前者通過在檢驗節(jié)點和變量節(jié)點的邊上傳遞的是nm(nm≤2p)組可能的碼字及其置信度值,對于一個校驗節(jié)點,需要
目前常用的非二進制ldpc譯碼器的結(jié)構(gòu)方案有三種:全并行、串行、部分并行。全并行方案可以達到最快的吞吐量,但面積消耗最大,在通信系統(tǒng)中,由于占的面積過大,實用性不大;串行方案面積消耗最小,但是延遲最大,嚴重影響數(shù)據(jù)吞吐量,對于當(dāng)今高速通信系統(tǒng)中,實用性也不大;被廣泛應(yīng)用的方案是部分串行架構(gòu),因為它可以根據(jù)需要在吞吐量和面積消耗之間取一個很好的折中,準(zhǔn)循環(huán)多進制ldpc碼的設(shè)計給部分并行方案的硬件架構(gòu)設(shè)計提供了更有利的條件。
技術(shù)實現(xiàn)要素:
本發(fā)明針對上述問題,提出了一個基于層級全并行的多進制ldpc碼的譯碼器架構(gòu),該譯碼器具有低復(fù)雜度、低延遲、高吞吐量等特點。同時,本發(fā)明提出了適用于該譯碼器的譯碼方法,該方法采用了基于mlgd算法取兩組最可能碼字及其置信度進行更新的方法,降低了對校驗矩陣列重的依賴。具體發(fā)明內(nèi)容如下:
該基于層級全并行的多進制ldpc碼的譯碼器架構(gòu)包括:
1)計算單元,用于更新校驗節(jié)點和變量節(jié)點,計算用于硬判決的可靠度信息;
2)相對尋址單元,用于控制整個架構(gòu)的數(shù)據(jù)通路,協(xié)調(diào)計算單元的輸入輸出;
3)緩存單元,用于緩存計算單元的輸入數(shù)據(jù)。
計算單元包括2p-1個相同的基本計算單元,每個基本計算單元包括:
1)校驗節(jié)點處理單元,用于校驗節(jié)點的更新;
2)檢驗節(jié)點存儲單元,每個校驗節(jié)點存儲單元與相應(yīng)的校驗節(jié)點的輸入輸出一直相連,用于存儲每次其校驗節(jié)點更新的c-to-v信息;
3)變量節(jié)點處理單元,用于更新變量節(jié)點。
校驗節(jié)點處理單元包括:
1)外部信息獲取單元,用于將節(jié)點信息轉(zhuǎn)換成該節(jié)點信息對應(yīng)的外部信息;
2)符號幅值分離單元,用于將輸入數(shù)據(jù)的符號與幅值進行分離重組,分別獲得兩組最可靠的符號信息和最可靠的幅值累加信息;
3)符號操作單元,通過在gf(2p)上進行數(shù)值運算,用于將輸入的兩組符號信息轉(zhuǎn)換成三組外部信息和;
4)幅值操作單元,用于將輸入的兩組幅值信息轉(zhuǎn)換成三組可靠性度量信息;
5)加權(quán)因子獲取單元,通過漢明距離的計算,查詢表格,用于獲得三組加權(quán)因子信息;
6)乘法單元,用于將幅值單元的輸出值進行加權(quán)和添加正負號,并將對應(yīng)累加的結(jié)果輸出,獲得該校驗節(jié)點處理單元的輸出信息。
符號操作單元在計算校驗和的時候采用了二叉樹的結(jié)構(gòu),將該模塊的關(guān)鍵路徑減少到對數(shù)個最小模塊數(shù)。
幅值操作單元在計算最小值、次小值以及最小值編號時采用了類似二叉樹的結(jié)構(gòu),將該模塊的關(guān)鍵路徑減少到對數(shù)個最小模塊數(shù)。
乘法單元中的乘加權(quán)因子時,沒有直接采用乘法,而是用有限的左移操作和加法操作代替,這樣大大提高了該模塊的運算效率,降低了硬件資源消耗。
相對尋址單元提供兩種相對地址,一種相對地址是校驗矩陣中循環(huán)子矩陣中非零元素相對該循環(huán)子矩陣的列位置,另一種相對地址是校驗矩陣中上一層的非零元素與當(dāng)前層的非零元素間的相對地址。
緩存單元采用的是深度為1、寬度為輸入數(shù)據(jù)并行度的寄存器。
本發(fā)明譯碼器的譯碼方法,包括初始化、奇偶校驗判斷、最大迭代次數(shù)判斷、最大迭代層數(shù)判斷、校驗節(jié)點更新以及變量節(jié)點更新六個步驟:
(一)初始化階段接收的后驗概率先轉(zhuǎn)化為位的對數(shù)似然比,這與傳統(tǒng)的多進制ldpc譯碼的標(biāo)度或者符號的對數(shù)似然比不同,轉(zhuǎn)化的對數(shù)似然比包括了符號信息和置信度信息;
(二)信道輸入或者一次大的循環(huán)結(jié)束后的變量節(jié)點信息進行試探性譯碼,譯碼依據(jù)是:
將譯碼碼字帶入所有校驗節(jié)點和中,若能滿足所有的校驗節(jié)點為零,則結(jié)束譯碼,否則,將進入最大迭代次數(shù)判斷;
(三)判斷大循環(huán)的最大迭代次數(shù)是否達到,若達到最大迭代次數(shù)。則宣告譯碼失敗,否則,進入一次大循環(huán)中的迭代次數(shù)判斷;
(四)判斷一次大循環(huán)中的迭代次數(shù)是否達到分層層數(shù),若達到最大層數(shù),則返回進行試探性譯碼,否則,繼續(xù)校驗節(jié)點和變量節(jié)點的更新;
(五)校驗節(jié)點更新過程的輸入是按位的信息,包含了所有可能的組合符號信息,從中選擇最可靠和次最可靠的符號和置信度,按符號進行數(shù)值計算,輸出的值仍然是按位的信息;
(六)變量節(jié)點更新過程相對簡單,將校驗節(jié)點更新輸出值進行一步加法操作,輸出值返回下一層更新或者試探性譯碼。
本發(fā)明上述的譯碼器架構(gòu)與譯碼方法的結(jié)合,具有以下的有益效果:
首先,本發(fā)明譯碼器采用了層級全并行方案,利用較少的芯片面積提高了數(shù)據(jù)吞吐量;
其次,本發(fā)明譯碼器計算一層僅需要一個時鐘周期;
第三,本發(fā)明譯碼器層與層之間不需要多余的時鐘周期用于控制,這大大降低了整個譯碼過程的延遲;
第四,本發(fā)明譯碼器只有加法和移位操作,不包括乘法操作,降低了譯碼復(fù)雜度;
第五,本發(fā)明譯碼器架構(gòu)中的校驗節(jié)點單元中的各個模塊都盡可能優(yōu)化了其關(guān)鍵路徑,比如采用二叉樹結(jié)構(gòu)進行多個數(shù)加法和比較等。
第六,本發(fā)明譯碼方法采用了符號幅值格式數(shù)據(jù),將置信度與碼字向量結(jié)合在一起,成為一組帶有正負號的值,大大降低了存儲面積;
最后,本發(fā)明譯碼方法采用了最可靠和次最可靠信息進行譯碼,提高了譯碼的性能,降低了對校驗矩陣列重的依賴性;
最后,本發(fā)明譯碼算法通過改進初始化方案,采用層級譯碼流程,提高了譯碼的性能,加快了譯碼收斂速度。
附圖說明
圖1是本發(fā)明譯碼器的頂層架構(gòu)示意圖;
圖2是本發(fā)明譯碼器的計算單元的基本計算單元示意圖;
圖3是本發(fā)明譯碼器的基本計算單元的校驗節(jié)點處理單元示意圖;
圖4是本發(fā)明譯碼方法的流程圖;
圖5是本發(fā)明實施例的fer性能仿真曲線圖。
具體實施方式
下面將結(jié)合附圖對本發(fā)明的具體實施作更進一步的說明。首先介紹譯碼器架構(gòu),其次介紹適用于該譯碼器的譯碼方法。下面通過參考附圖描述的實施是示例性的,旨在用于解釋本發(fā)明,而不能理解為對本發(fā)明的限制。
首先介紹本發(fā)明譯碼器的架構(gòu)。
圖1中是本發(fā)明譯碼器的頂層架構(gòu)示意圖,包括計算單元、相對尋址單元和緩存單元。其中,計算單元,包括2p-1個重復(fù)的基本計算單元,每個單元的結(jié)構(gòu)完全一致,用于更新校驗節(jié)點和變量節(jié)點,計算用于硬判決的可靠度信息,包括2p-1個基本計算單元;相對尋址單元,用于控制整個架構(gòu)的數(shù)據(jù)通路,協(xié)調(diào)計算單元的輸入輸出;緩存單元,用于緩存計算單元的輸入數(shù)據(jù),緩存單元采用的是深度為1、寬度為輸入數(shù)據(jù)并行度的寄存器。相對尋址單元提供兩種相對地址,一種相對地址是校驗矩陣中循環(huán)子矩陣中非零元素相對該循環(huán)子矩陣的列位置,另一種相對地址是校驗矩陣中上一層的非零元素與當(dāng)前層的非零元素間的相對地址。
具體操作是:在第一次迭代循環(huán)中,首先是相對尋址單元選擇信道輸入管道,將其中相應(yīng)于奇偶校驗矩陣非零元素位的信道軟信息輸入到緩存單元中,同時將對應(yīng)的非零元素的gf值輸入到計算單元中,與緩存單元的輸出一起進入計算單元,更新校驗節(jié)點和變量節(jié)點的信息,輸出值由相對尋址單元選入,進入下一層的迭代計算,一次大循環(huán)結(jié)束后,進行一次譯碼判斷,若滿足h·zt=0,則將譯碼結(jié)果輸出,并終止譯碼器,否則,繼續(xù)下一層的迭代計算,直到最大迭代次數(shù)終止其譯碼。
圖2是本發(fā)明譯碼器的基本計算單元示意圖,包括校驗節(jié)點處理單元、校驗節(jié)點存儲單元和變量節(jié)點處理單元,其中,校驗節(jié)點處理單元,用于校驗節(jié)點的更新;檢驗節(jié)點存儲單元,用于存儲每次其校驗節(jié)點更新的c-to-v信息;變量節(jié)點處理單元,用于更新變量節(jié)點。
具體操作是:在迭代開始前,將校驗節(jié)點存儲單元初始化為全零矩陣。迭代開始后,由緩存單元輸入的符號可靠度向量
圖3是本發(fā)明譯碼器的基本計算單元的校驗節(jié)點處理單元示意圖(為了表示簡化,圖中的符號表達式的上下標(biāo)都做了省略),包括外部信息獲取單元、符號幅值分離單元、符號操作單元、幅值操作單元、加權(quán)因子獲取單元和乘法單元,其中,外部信息獲取單元,用于將節(jié)點信息轉(zhuǎn)換成該節(jié)點信息對應(yīng)的外部信息;符號幅值分離單元,用于將輸入數(shù)據(jù)的符號與幅值進行分離重組,分別獲得兩組最可靠的符號信息和相應(yīng)的最可靠的幅值累加信息;符號操作單元,通過在gf(2p)上進行數(shù)值運算,用于將輸入的兩組符號信息轉(zhuǎn)換成三組外部信息和;幅值操作單元,用于將輸入的兩組幅值信息轉(zhuǎn)換成三組可靠性度量信息;加權(quán)因子獲取單元,通過漢明距離的計算,查詢表格,用于獲得三組加權(quán)因子信息;乘法單元,用于將幅值單元的輸出值進行加權(quán)和添加正負號,并將對應(yīng)累加的結(jié)果輸出,獲得該校驗節(jié)點處理單元的輸出信息。
具體操作為:迭代開始后,首先由緩存單元輸入的位可靠度向量s和校驗節(jié)點存儲單元輸出的c-to-v信息向量r輸入到外部信息獲取單元中,一方面獲取外部信息向量e,作為符號幅值分離單元的輸入,另一方面對位可靠度向量s進行硬判決,根據(jù)
獲得硬判決符號zj(0≤j<n),作為加權(quán)因子獲取單元的一個輸入。符號幅值分離單元將基于比特位的外部信息向量e轉(zhuǎn)換成了基于符號的最可靠符號和次可靠符號以及它們對應(yīng)的可靠度值,所有的可靠度值均為非負值,最可靠和次可靠符號與相對尋址單元輸出的非零元素hi,j一同輸入到符號操作單元,進行基于伽羅華域的數(shù)值計算,同時,最可靠和次可靠的可靠度值輸入到幅值操作單元中,進行基于實數(shù)域上的數(shù)值計算。符號操作單元在計算校驗和的時候采用了二叉樹的結(jié)構(gòu),將該模塊的關(guān)鍵路徑減少到對數(shù)個最小模塊數(shù),幅值操作單元同樣在計算最小值、次小值以及最小值編號時采用了類似二叉樹的結(jié)構(gòu),將該模塊的關(guān)鍵路徑減少到對數(shù)個最小模塊數(shù)。符號操作單元的三組外部信息和與外部信息獲取單元的硬判決輸出同時進入到加權(quán)因子獲取單元中,計算得到的加權(quán)因子信息與符號操作單元的三組外部信息和以及幅值操作單元的三組可靠性度量信息輸入到乘法單元中,乘法單元將三個因子展開成按位的形式,并進行累乘,獲得按位c-to-v信息向量r,之后將r和e輸出到變量節(jié)點處理單元和校驗節(jié)點存儲單元中,如此循環(huán)往復(fù)。乘法單元中進行加權(quán)因子時,沒有直接采用乘法,而是用有限的左移操作和加法操作代替,這樣大大提高了該模塊的運算效率,降低了硬件資源消耗。
以下部分內(nèi)容用于說明以本發(fā)明的硬件架構(gòu)為基礎(chǔ)的優(yōu)化譯碼方法。
這里首先進行譯碼方法在高層次上的介紹,如圖4所示,包括初始化、奇偶校驗判斷是否為零、迭代次數(shù)是否達到最大值、迭代次數(shù)是否達到最大層數(shù)、校驗節(jié)點更新以及變量節(jié)點更新。
具體步驟為:
(一)初始化階段接收的后驗概率先轉(zhuǎn)化為位的對數(shù)似然比,這與傳統(tǒng)的多進制ldpc譯碼的標(biāo)度或者符號的對數(shù)似然比不同,轉(zhuǎn)化的對數(shù)似然比包括了符號信息和置信度信息,同時設(shè)定由漢明距離控制的(p+1)位的加權(quán)因子值,距離越大加權(quán)因子值越小,最小值為零,將按位的對數(shù)似然比直接送到步驟(二)中;
(二)信道輸入或者一次大的循環(huán)結(jié)束后的變量節(jié)點信息進行試探性譯碼,譯碼依據(jù)是:
將譯碼符號帶入所有校驗節(jié)點和中,計算h·zt,若能滿足所有的校驗節(jié)點為零,則結(jié)束譯碼,返回譯碼值,否則,將進入步驟(三);
(三)判斷大循環(huán)的最大迭代次數(shù)是否達到,若達到最大迭代次數(shù),則宣告譯碼失敗,否則,進入步驟(四);
(四)判斷一次大循環(huán)中的迭代次數(shù)是否達到分層層數(shù),若達到最大層數(shù),則返回步驟(二),進行試探性譯碼和最大迭代次數(shù)判斷,否則,繼續(xù)校驗節(jié)點和變量節(jié)點的更新,進入下一個步驟;
(五)校驗節(jié)點更新過程的輸入是按位的信息,包含了所有可能的組合符號信息,將按位信息轉(zhuǎn)換成按符號信息,從中選擇最可靠和次最可靠的符號和可靠度值,按符號進行數(shù)值計算,輸出的值仍然是按位的信息,將c-to-v信息輸入到變量節(jié)點更新中;
(六)變量節(jié)點更新過程相對簡單,將校驗節(jié)點更新輸出的c-to-v值進行一步加法操作,輸出值返回到步驟(四)。
其次結(jié)合上述硬件架構(gòu)說明譯碼方法,詳細說明了數(shù)據(jù)在硬件架構(gòu)中流動情況,以及數(shù)據(jù)預(yù)讀與計算的重疊方式。譯碼方法如下:
(一)初始化階段,將按位的對數(shù)似然比輸入到相對尋址單元,同時設(shè)定由漢明距離控制的(p+1)位的加權(quán)因子值,存入到查找表中,用于加權(quán)因子獲取單元的查找列表;
(二)信道輸入或者由計算單元經(jīng)過一次大的循環(huán)結(jié)束后的變量節(jié)點信息位可靠度向量s進行試探性譯碼,譯碼依據(jù)是:
將譯碼符號帶入所有校驗節(jié)點和中,計算h·zt,若能滿足所有的校驗節(jié)點為零,則結(jié)束譯碼,返回譯碼值,否則,將進入步驟(三);
(三)計算單元完成計算后,一方面,將位可靠度向量s輸出到相對尋址單元,以備下次迭代使用,另一方面,判斷大循環(huán)的最大迭代次數(shù)是否達到,若達到最大迭代次數(shù),則宣告譯碼失敗,否則,進入步驟(四);
(四)在每次大循環(huán)中,在算法流程中包含
(五)經(jīng)過前面的判斷后,進入相對尋址單元的位可靠度向量s通過緩存單元輸入到計算單元種,進行校驗節(jié)點與變量節(jié)點的更新,更新細節(jié)在前面已與圖2和圖3結(jié)合有詳細敘述。
補充說明:在高層次的譯碼方法流程圖中共六個步驟,而結(jié)合硬件架構(gòu)的流程說明只有五個步驟,是因為前者中步驟(五)和步驟(六)對校驗節(jié)點和變量節(jié)點的更新是按譯碼順序來說明的,而在后者與硬件架構(gòu)結(jié)合中,由于在硬件架構(gòu)上,變量節(jié)點的更新很簡單,校驗節(jié)點與變量節(jié)點的更新均在計算單元完成,所以將其歸納到一個步驟,這樣可以使得架構(gòu)的總體性更好,便于優(yōu)化設(shè)計。
實施例:將(837,726)多進制準(zhǔn)循環(huán)ldpc碼通過awgn信道,該碼的行重為27,列重為4,發(fā)送端采用bpsk調(diào)制,接收端基于以上譯碼架構(gòu)和方法,分別用verilog語言和c語言進行仿真實現(xiàn),得到的fer性能仿真曲線如圖5,從圖中可以看到,該譯碼方法在硬解碼算法和軟解碼算法中取了一個折中;同時,將基于verilog語言實現(xiàn)的rtl用synopsys工具進行綜合,采用的工藝是tsmc90nm的cmos工藝,綜合結(jié)果顯示,在頻率為207.04mhz條件下,總的邏輯門(最小單元為nand門)約為4.54m,在最大迭代次數(shù)為10次的條件下,總延遲只有40個時鐘周期,吞吐量可達到21.66gbps,面積效率約為4.77gbps/m-gates,目前,面積效率是在相同條件下同類型的譯碼器20倍以上。
通過本發(fā)明實施例的上述層級譯碼架構(gòu)和譯碼方法,可以最大化輸入數(shù)據(jù)的復(fù)用,提高譯碼器吞吐量和面積效率。頂層架構(gòu)中的相對尋址單元和校驗節(jié)點單元的外部信息獲取單元、符號幅值分離單元、符號操作單元、幅值操作單元、加權(quán)因子獲取單元以及乘法單元主要給出了功能說明,個別給出了建議方案,具體實現(xiàn)這些部分的功能的方法和途徑還有很多。應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以作出若干改進和潤飾,這些改進和潤飾也應(yīng)視為本發(fā)明的保護范圍。本實施例中為明確的各組成部分均可用現(xiàn)有技術(shù)加以實現(xiàn)。