文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2015.07.006
中文引用格式: 江鵬剛,金德鵬. 面向60 GHz系統(tǒng)的多碼率LDPC分層譯碼器的設(shè)計[J].電子技術(shù)應(yīng)用,2015,41(7):23-25,29.
英文引用格式: Jiang Penggang,Jin Depeng. Multi-mode LDPC layered decoder architecture for 60 GHz system[J].Application of Electronic Technique,2015,41(7):23-25,29.
0 引言
60 GHz毫米波無線通信技術(shù)不僅擁有數(shù)吉比特的傳輸速率,也擁有著良好的抗干擾性以及高安全性的特點,在短距離無線通信系統(tǒng)中得到了越來越多的應(yīng)用。IEEE 802.11ad[1]標準是目前被60 GHz毫米波通信領(lǐng)域廣泛采納的一種標準,其中使用的信道編碼是低密度奇偶校驗碼(Low Density Parity Check Code,LDPC)[2]。LDPC碼是由Gallarge提出的一種具有稀疏校驗矩陣的線性分組碼,和Turbo碼一樣擁有逼近香農(nóng)極限的良好性能[3]。相比于Turbo碼,LDPC碼有著結(jié)構(gòu)靈活、復(fù)雜度低以及適合多碼率實現(xiàn)等優(yōu)點。這些優(yōu)點使得LDPC碼近些年來在通信系統(tǒng)中得到廣泛的應(yīng)用。
本文基于傳統(tǒng)的部分并行結(jié)構(gòu),設(shè)計并實現(xiàn)了一種符合IEEE 802.11ad標準的多碼率LDPC分層譯碼器。通過對低碼率校驗矩陣進行雙層同步更新,推薦譯碼器僅需一個4層的分層譯碼結(jié)構(gòu)就可以實現(xiàn)對于多碼率的支持。不僅減少了接近一半的譯碼迭代時間,也減少了儲存單元。
1 LDPC譯碼器算法
LDPC碼有多種譯碼算法,其中最常用的算法是基于軟判決的置信度傳播譯碼算法(Belief Propagation,BP)。BP算法有著良好的性能,但是因為浮點運算的存在導(dǎo)致實現(xiàn)復(fù)雜。為了減少實現(xiàn)復(fù)雜度,基于BP算法Fossorier對其中的雙曲雙切函數(shù)及反雙曲雙切函數(shù)進行了簡化,提出了最小和算法(Min-Sum Algorithm,MSA)[4]。
為了解決MSA算法收斂速度過慢的問題,Mansour 等人提出了Turbo譯碼置信傳播(Turbo Decoding Messing Passing,TDMP)[5]算法。在TDMP算法中,分層進行節(jié)點更新,改進了算法的收斂速度。TDMP中的最小和算法如下,用V2C表示變量節(jié)點信息,用C2V表示檢驗節(jié)點信息,VN表示后驗概率信息,σ2表示噪聲方差,y表示接收到的信息序列:
(1)初始化
(2)判決譯碼
當(dāng)k為最后一個分層時,若VNi<0,則ci=1;否則ci=0。
(3)如果譯碼結(jié)果滿足校驗方程或者達到了最大迭代次數(shù),則停止譯碼;否則繼續(xù)迭代。
2 多碼率LDPC譯碼器設(shè)計
IEEE 802.11ad標準是目前60 GHz無線通信中廣泛采用的標準之一。該標準使用的是編碼后碼長為672的LDPC碼。碼率有1/2、5/8、3/4以及13/16 4種。
推薦譯碼器采用輸入數(shù)據(jù)5 bit量化,采用部分并行結(jié)構(gòu),按照矩陣的子塊進行劃分,塊間并行塊內(nèi)串行處理。整體結(jié)構(gòu)如圖1所示。
2.1 輸入緩存和輸出緩存
本文采用部分并行的結(jié)構(gòu)[6],需要將順序輸入的對數(shù)似然比按照每個矩陣的塊內(nèi)順序并行地輸出給V2C儲存模塊。按照本文采用的LDPC碼的校驗矩陣,采用16路并行輸出。采用乒乓處理結(jié)構(gòu),提高系統(tǒng)的吞吐率。為了減少每一次迭代的時間,每次將3路信息合成一路輸出給V2C儲存模塊,這樣可以在一個時鐘內(nèi)處理3路數(shù)據(jù)。輸入緩存的工作流程如圖2所示。輸出緩存則是做一個逆向調(diào)整。
2.2 V2C存儲模塊和C2V存儲模塊
每個塊的校驗矩陣為單位陣的位移陣,表明在同一個子塊內(nèi)只有一個V2C和C2V發(fā)生信息傳遞,所以使用RAM資源來進行V2C和C2V的信息存儲。在分層譯碼器中,V2C存儲信息只用于當(dāng)前層的更新,所以V2C存儲模塊只需要存儲單層信息。而C2V信息需要用于下一次迭代的更新,所以C2V存儲模塊需要存儲全部層數(shù)的信息。在工作過程中,V2C存儲模塊和C2V存儲模塊順序存儲輸入的數(shù)據(jù),然后按照偏移控制單元獲得的輸出地址輸出數(shù)據(jù)。
2.3 最小和模塊
最小和模塊需要求出16路輸入信號中的最小值和次小值??紤]到多碼率情況下存在矩陣壓縮的情況,將計算過程分為兩部分,首先分別計算奇數(shù)8路以及偶數(shù)8路的最小值和次小值,然后再計算這4個數(shù)據(jù)中的最小值以及次小值。根據(jù)不同碼率中當(dāng)前層是否為壓縮層,選擇是分別輸出奇偶兩路的最小值和次小值還是輸出最終的最小值和次小值,如圖3所示。
2.4 偏移控制單元
在偏移控制單元主要是根據(jù)碼率和當(dāng)前的層數(shù),計算出V2C以及C2V的讀取地址。假設(shè)當(dāng)前子塊偏移量為N,每個子塊的長度為S。對于V2C存儲模塊,輸出地址為從N開始,到S-1以后跳轉(zhuǎn)到0,到N-1結(jié)束。對于C2V存儲模塊,輸出地址為從S-1-N,到S以后跳到0,到S-N-2結(jié)束。在本文的實現(xiàn)情況中,子塊長度為42,但是實際上是3路數(shù)據(jù)合成一路輸出,所以S=14,N=N mod 14。地址計算單元可以使用一個循環(huán)累加器來實現(xiàn),通過初始偏移值循環(huán)累加就可以得到輸出地址。
2.5 雙層同步更新結(jié)構(gòu)
在實現(xiàn)多碼率譯碼器的過程中,最大的問題在于硬件復(fù)雜度過高,可以看出R=1/2碼率的校驗矩陣比R=3/4碼率的校驗矩陣大了一倍,需要多一倍的C2V儲存空間以及迭代時間。
從校驗矩陣可以看出,在碼率較大,行數(shù)較多的校驗矩陣中,每一行存在的非0元素較少,比起低碼率矩陣更具有稀疏性。也就是說如果使用相同于低碼率校驗矩陣的處理單元去處理高碼率校驗矩陣,同一行中會有大部分處理單元處于空閑狀態(tài)。如在R=1/2的情況下第一行僅有5個處理單元處于工作狀態(tài),這種空閑也極大地降低了硬件運用效率。為了提高硬件利用率,在分層譯碼的基礎(chǔ)上,通過合并分層來降低分層數(shù)。
可以看出在R=1/2中,每一層有效的塊數(shù)少于一半,并且1、3層沒有重疊的塊,2、4層沒有重疊的塊,5-7、6-8亦然??梢钥紤]將1、3層的數(shù)據(jù)放在同一層進行更新,因為他們不存在重疊的位置,所以并不影響信息的傳遞,其余幾層亦然,這樣就可以把原本的8層數(shù)據(jù)變?yōu)?層。在802.11ad的其他碼率中,也存在同樣的稀疏性,也可以縮短為4層。這樣對于所有的碼率,使用不多于4層的分層就可以處理。為了可以同時處理一整層數(shù)據(jù)或者是分別處理兩層數(shù)據(jù),將兩層數(shù)據(jù)分別移位到奇偶位上,然后根據(jù)控制信號選擇最小值的輸出。在R=1/2時,具體實現(xiàn)過程如圖4所示。
如果不對矩陣進行壓縮調(diào)整,則需要分8層來進行迭代,并且需要8層的C2V存儲資源。分析各個碼率的校驗矩陣可以得到,經(jīng)過壓縮調(diào)整后,對于任何碼率都可以使用不大于4層的分層方式來實現(xiàn),這樣最多可以減少一半的C2V存儲單元以及迭代時間。對于不同的碼率,通過控制信號控制數(shù)據(jù)塊的移動位置以及讀取地址的計算,就可以實現(xiàn)對多碼率的支持。
2.6 存儲器的流水線結(jié)構(gòu)
在部分并行的結(jié)構(gòu)中,整個迭代過程中耗時最長的部分是V2C存儲讀取耗時以及C2V存儲讀取耗時。由于V2C的C2V的讀取順序與存入順序并不相同,所以需要在存入完畢之后,再進行讀取。V2C和C2V在存入時,讀取功能是空閑狀態(tài);讀取時,存入功能也是空閑狀態(tài)。從這點下手,可以同時進行兩幀數(shù)據(jù)的譯碼工作。將V2C存儲器和C2V存儲器的深度擴大一倍,通過將地址分離,讓第一幀的讀取與第二幀的存儲同時進行。這樣通過只擴大C2V和V2C的深度,復(fù)用了其他的處理單元,使得整體的吞吐率提高了接近一倍,具體工作示意如圖5所示。
3 實現(xiàn)與分析
基于Verilog HDL語言,本文完成了對以上結(jié)構(gòu)的LDPC譯碼器的實現(xiàn),并且通過導(dǎo)入數(shù)據(jù)對比,實現(xiàn)結(jié)果與MATLAB仿真結(jié)果完全一致。本文取5 bit量化,以3/4碼率為例,不同迭代次數(shù)下的分層譯碼器的誤碼性能如圖6所示??梢钥闯觯?次迭代和10次迭代在BER為10-5時只有不到0.5 dB的性能損失。綜合性能和吞吐率需求,本文選擇了3次迭代。
本文選取Xilinx公司的Virtex6芯片,ISE綜合結(jié)果如表1所示。
本文設(shè)計中,以碼率R=1/2為例,輸入碼長為672,最終能達到的工作頻率為212 MHz。每個核總共需要396個時鐘周期完成譯碼,一次譯碼過程可以譯碼兩幀的數(shù)據(jù)。在6個核共同工作的情況下,對于不同碼率,最高靜吞吐率可達到3.507 Gb/s,最低靜吞吐率為2.158 Gb/s。需要指出,如果系統(tǒng)需要更高的吞吐率,可以通過增加譯碼器核的并行度的方式來實現(xiàn)。
與文獻[7]中進行對比,本文在實現(xiàn)多碼率的前提下,擁有著更高的吞吐率。而且,從歸一化資源角度來看,本文擁有著更為優(yōu)異的資源利用率。
4 結(jié)束語
本文設(shè)計了一種符合IEEE 802.11ad標準的多碼率LDPC分層譯碼器。在Vertex6 FPGA開發(fā)板上實現(xiàn)了本文的結(jié)構(gòu),在R=13/16時最高可以達到3.507 Gb/s的凈吞吐率。與已有的LDPC譯碼器相比,通過雙層同步更新結(jié)構(gòu),以非常少量的硬件資源,實現(xiàn)了從單碼率LDPC譯碼器向多碼率的支持,不僅擁有吉比特吞吐率,而且在硬件資源花銷上也有大幅度節(jié)省。
參考文獻
[1] IEEE 802.11ad,Wireless LAN medium access control(MAC) and physical layer(PHY) specifications-Amendment 3:enhancements for very high throughput in the 60 GHz band[S].Dec.2012.
[2] GALLAGER R G.Low-density parity-check codes[J].IRE Trans.Inform.Theory,1962,8(1):21-28.
[3] MACKAY D J C,NEAL R M.Near Shannon limit performance of low density parity check codes[J].Electronic Lett.,1977,33(5):457-458.
[4] FOSSORIER M P C,MIHALJEVIC M,IMAI H.Reduced complexity iterative decoding of low-density parity-check codes based on belief propagation[C].IEEE Transactions on Communication May,1999,47(5):673-680.
[5] MANSOUR M M.A turbo-decoding message-passing algorithm for sparse parity-check matrix codes[C].IEEE Transaction on Signal Processing,2006,54(11):4376-4392.
[6] MARJAN,JOSEPH R C.Semi-parallel reconfigurable architectures for real-time LDPC decoding[C].International Conference on Information Technology:Coding and Computing,2004:579-585.
[7] SHEVCHENKO A,MASLENNIKOV R,MALTSEV A.Comparative analysis of different hardware decoder architectures for IEEE 802.11ad LDPC code[C].Mediterranean Electrotechnical Conference,2014,17:415-420.