文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2015.07.006
中文引用格式: 江鵬剛,金德鵬. 面向60 GHz系統(tǒng)的多碼率LDPC分層譯碼器的設(shè)計(jì)[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毫米波無(wú)線(xiàn)通信技術(shù)不僅擁有數(shù)吉比特的傳輸速率,也擁有著良好的抗干擾性以及高安全性的特點(diǎn),在短距離無(wú)線(xiàn)通信系統(tǒng)中得到了越來(lái)越多的應(yīng)用。IEEE 802.11ad[1]標(biāo)準(zhǔn)是目前被60 GHz毫米波通信領(lǐng)域廣泛采納的一種標(biāo)準(zhǔn),其中使用的信道編碼是低密度奇偶校驗(yàn)碼(Low Density Parity Check Code,LDPC)[2]。LDPC碼是由Gallarge提出的一種具有稀疏校驗(yàn)矩陣的線(xiàn)性分組碼,和Turbo碼一樣擁有逼近香農(nóng)極限的良好性能[3]。相比于Turbo碼,LDPC碼有著結(jié)構(gòu)靈活、復(fù)雜度低以及適合多碼率實(shí)現(xiàn)等優(yōu)點(diǎn)。這些優(yōu)點(diǎn)使得LDPC碼近些年來(lái)在通信系統(tǒng)中得到廣泛的應(yīng)用。
本文基于傳統(tǒng)的部分并行結(jié)構(gòu),設(shè)計(jì)并實(shí)現(xiàn)了一種符合IEEE 802.11ad標(biāo)準(zhǔn)的多碼率LDPC分層譯碼器。通過(guò)對(duì)低碼率校驗(yàn)矩陣進(jìn)行雙層同步更新,推薦譯碼器僅需一個(gè)4層的分層譯碼結(jié)構(gòu)就可以實(shí)現(xiàn)對(duì)于多碼率的支持。不僅減少了接近一半的譯碼迭代時(shí)間,也減少了儲(chǔ)存單元。
1 LDPC譯碼器算法
LDPC碼有多種譯碼算法,其中最常用的算法是基于軟判決的置信度傳播譯碼算法(Belief Propagation,BP)。BP算法有著良好的性能,但是因?yàn)楦↑c(diǎn)運(yùn)算的存在導(dǎo)致實(shí)現(xiàn)復(fù)雜。為了減少實(shí)現(xiàn)復(fù)雜度,基于BP算法Fossorier對(duì)其中的雙曲雙切函數(shù)及反雙曲雙切函數(shù)進(jìn)行了簡(jiǎn)化,提出了最小和算法(Min-Sum Algorithm,MSA)[4]。
為了解決MSA算法收斂速度過(guò)慢的問(wèn)題,Mansour 等人提出了Turbo譯碼置信傳播(Turbo Decoding Messing Passing,TDMP)[5]算法。在TDMP算法中,分層進(jìn)行節(jié)點(diǎn)更新,改進(jìn)了算法的收斂速度。TDMP中的最小和算法如下,用V2C表示變量節(jié)點(diǎn)信息,用C2V表示檢驗(yàn)節(jié)點(diǎn)信息,VN表示后驗(yàn)概率信息,σ2表示噪聲方差,y表示接收到的信息序列:
(1)初始化
(2)判決譯碼
當(dāng)k為最后一個(gè)分層時(shí),若VNi<0,則ci=1;否則ci=0。
(3)如果譯碼結(jié)果滿(mǎn)足校驗(yàn)方程或者達(dá)到了最大迭代次數(shù),則停止譯碼;否則繼續(xù)迭代。
2 多碼率LDPC譯碼器設(shè)計(jì)
IEEE 802.11ad標(biāo)準(zhǔn)是目前60 GHz無(wú)線(xiàn)通信中廣泛采用的標(biāo)準(zhǔn)之一。該標(biāo)準(zhǔn)使用的是編碼后碼長(zhǎng)為672的LDPC碼。碼率有1/2、5/8、3/4以及13/16 4種。
推薦譯碼器采用輸入數(shù)據(jù)5 bit量化,采用部分并行結(jié)構(gòu),按照矩陣的子塊進(jìn)行劃分,塊間并行塊內(nèi)串行處理。整體結(jié)構(gòu)如圖1所示。
2.1 輸入緩存和輸出緩存
本文采用部分并行的結(jié)構(gòu)[6],需要將順序輸入的對(duì)數(shù)似然比按照每個(gè)矩陣的塊內(nèi)順序并行地輸出給V2C儲(chǔ)存模塊。按照本文采用的LDPC碼的校驗(yàn)矩陣,采用16路并行輸出。采用乒乓處理結(jié)構(gòu),提高系統(tǒng)的吞吐率。為了減少每一次迭代的時(shí)間,每次將3路信息合成一路輸出給V2C儲(chǔ)存模塊,這樣可以在一個(gè)時(shí)鐘內(nèi)處理3路數(shù)據(jù)。輸入緩存的工作流程如圖2所示。輸出緩存則是做一個(gè)逆向調(diào)整。
2.2 V2C存儲(chǔ)模塊和C2V存儲(chǔ)模塊
每個(gè)塊的校驗(yàn)矩陣為單位陣的位移陣,表明在同一個(gè)子塊內(nèi)只有一個(gè)V2C和C2V發(fā)生信息傳遞,所以使用RAM資源來(lái)進(jìn)行V2C和C2V的信息存儲(chǔ)。在分層譯碼器中,V2C存儲(chǔ)信息只用于當(dāng)前層的更新,所以V2C存儲(chǔ)模塊只需要存儲(chǔ)單層信息。而C2V信息需要用于下一次迭代的更新,所以C2V存儲(chǔ)模塊需要存儲(chǔ)全部層數(shù)的信息。在工作過(guò)程中,V2C存儲(chǔ)模塊和C2V存儲(chǔ)模塊順序存儲(chǔ)輸入的數(shù)據(jù),然后按照偏移控制單元獲得的輸出地址輸出數(shù)據(jù)。
2.3 最小和模塊
最小和模塊需要求出16路輸入信號(hào)中的最小值和次小值??紤]到多碼率情況下存在矩陣壓縮的情況,將計(jì)算過(guò)程分為兩部分,首先分別計(jì)算奇數(shù)8路以及偶數(shù)8路的最小值和次小值,然后再計(jì)算這4個(gè)數(shù)據(jù)中的最小值以及次小值。根據(jù)不同碼率中當(dāng)前層是否為壓縮層,選擇是分別輸出奇偶兩路的最小值和次小值還是輸出最終的最小值和次小值,如圖3所示。
2.4 偏移控制單元
在偏移控制單元主要是根據(jù)碼率和當(dāng)前的層數(shù),計(jì)算出V2C以及C2V的讀取地址。假設(shè)當(dāng)前子塊偏移量為N,每個(gè)子塊的長(zhǎng)度為S。對(duì)于V2C存儲(chǔ)模塊,輸出地址為從N開(kāi)始,到S-1以后跳轉(zhuǎn)到0,到N-1結(jié)束。對(duì)于C2V存儲(chǔ)模塊,輸出地址為從S-1-N,到S以后跳到0,到S-N-2結(jié)束。在本文的實(shí)現(xiàn)情況中,子塊長(zhǎng)度為42,但是實(shí)際上是3路數(shù)據(jù)合成一路輸出,所以S=14,N=N mod 14。地址計(jì)算單元可以使用一個(gè)循環(huán)累加器來(lái)實(shí)現(xiàn),通過(guò)初始偏移值循環(huán)累加就可以得到輸出地址。
2.5 雙層同步更新結(jié)構(gòu)
在實(shí)現(xiàn)多碼率譯碼器的過(guò)程中,最大的問(wèn)題在于硬件復(fù)雜度過(guò)高,可以看出R=1/2碼率的校驗(yàn)矩陣比R=3/4碼率的校驗(yàn)矩陣大了一倍,需要多一倍的C2V儲(chǔ)存空間以及迭代時(shí)間。
從校驗(yàn)矩陣可以看出,在碼率較大,行數(shù)較多的校驗(yàn)矩陣中,每一行存在的非0元素較少,比起低碼率矩陣更具有稀疏性。也就是說(shuō)如果使用相同于低碼率校驗(yàn)矩陣的處理單元去處理高碼率校驗(yàn)矩陣,同一行中會(huì)有大部分處理單元處于空閑狀態(tài)。如在R=1/2的情況下第一行僅有5個(gè)處理單元處于工作狀態(tài),這種空閑也極大地降低了硬件運(yùn)用效率。為了提高硬件利用率,在分層譯碼的基礎(chǔ)上,通過(guò)合并分層來(lái)降低分層數(shù)。
可以看出在R=1/2中,每一層有效的塊數(shù)少于一半,并且1、3層沒(méi)有重疊的塊,2、4層沒(méi)有重疊的塊,5-7、6-8亦然??梢钥紤]將1、3層的數(shù)據(jù)放在同一層進(jìn)行更新,因?yàn)樗麄儾淮嬖谥丿B的位置,所以并不影響信息的傳遞,其余幾層亦然,這樣就可以把原本的8層數(shù)據(jù)變?yōu)?層。在802.11ad的其他碼率中,也存在同樣的稀疏性,也可以縮短為4層。這樣對(duì)于所有的碼率,使用不多于4層的分層就可以處理。為了可以同時(shí)處理一整層數(shù)據(jù)或者是分別處理兩層數(shù)據(jù),將兩層數(shù)據(jù)分別移位到奇偶位上,然后根據(jù)控制信號(hào)選擇最小值的輸出。在R=1/2時(shí),具體實(shí)現(xiàn)過(guò)程如圖4所示。
如果不對(duì)矩陣進(jìn)行壓縮調(diào)整,則需要分8層來(lái)進(jìn)行迭代,并且需要8層的C2V存儲(chǔ)資源。分析各個(gè)碼率的校驗(yàn)矩陣可以得到,經(jīng)過(guò)壓縮調(diào)整后,對(duì)于任何碼率都可以使用不大于4層的分層方式來(lái)實(shí)現(xiàn),這樣最多可以減少一半的C2V存儲(chǔ)單元以及迭代時(shí)間。對(duì)于不同的碼率,通過(guò)控制信號(hào)控制數(shù)據(jù)塊的移動(dòng)位置以及讀取地址的計(jì)算,就可以實(shí)現(xiàn)對(duì)多碼率的支持。
2.6 存儲(chǔ)器的流水線(xiàn)結(jié)構(gòu)
在部分并行的結(jié)構(gòu)中,整個(gè)迭代過(guò)程中耗時(shí)最長(zhǎng)的部分是V2C存儲(chǔ)讀取耗時(shí)以及C2V存儲(chǔ)讀取耗時(shí)。由于V2C的C2V的讀取順序與存入順序并不相同,所以需要在存入完畢之后,再進(jìn)行讀取。V2C和C2V在存入時(shí),讀取功能是空閑狀態(tài);讀取時(shí),存入功能也是空閑狀態(tài)。從這點(diǎn)下手,可以同時(shí)進(jìn)行兩幀數(shù)據(jù)的譯碼工作。將V2C存儲(chǔ)器和C2V存儲(chǔ)器的深度擴(kuò)大一倍,通過(guò)將地址分離,讓第一幀的讀取與第二幀的存儲(chǔ)同時(shí)進(jìn)行。這樣通過(guò)只擴(kuò)大C2V和V2C的深度,復(fù)用了其他的處理單元,使得整體的吞吐率提高了接近一倍,具體工作示意如圖5所示。
3 實(shí)現(xiàn)與分析
基于Verilog HDL語(yǔ)言,本文完成了對(duì)以上結(jié)構(gòu)的LDPC譯碼器的實(shí)現(xiàn),并且通過(guò)導(dǎo)入數(shù)據(jù)對(duì)比,實(shí)現(xiàn)結(jié)果與MATLAB仿真結(jié)果完全一致。本文取5 bit量化,以3/4碼率為例,不同迭代次數(shù)下的分層譯碼器的誤碼性能如圖6所示??梢钥闯?,3次迭代和10次迭代在BER為10-5時(shí)只有不到0.5 dB的性能損失。綜合性能和吞吐率需求,本文選擇了3次迭代。
本文選取Xilinx公司的Virtex6芯片,ISE綜合結(jié)果如表1所示。
本文設(shè)計(jì)中,以碼率R=1/2為例,輸入碼長(zhǎng)為672,最終能達(dá)到的工作頻率為212 MHz。每個(gè)核總共需要396個(gè)時(shí)鐘周期完成譯碼,一次譯碼過(guò)程可以譯碼兩幀的數(shù)據(jù)。在6個(gè)核共同工作的情況下,對(duì)于不同碼率,最高靜吞吐率可達(dá)到3.507 Gb/s,最低靜吞吐率為2.158 Gb/s。需要指出,如果系統(tǒng)需要更高的吞吐率,可以通過(guò)增加譯碼器核的并行度的方式來(lái)實(shí)現(xiàn)。
與文獻(xiàn)[7]中進(jìn)行對(duì)比,本文在實(shí)現(xiàn)多碼率的前提下,擁有著更高的吞吐率。而且,從歸一化資源角度來(lái)看,本文擁有著更為優(yōu)異的資源利用率。
4 結(jié)束語(yǔ)
本文設(shè)計(jì)了一種符合IEEE 802.11ad標(biāo)準(zhǔn)的多碼率LDPC分層譯碼器。在Vertex6 FPGA開(kāi)發(fā)板上實(shí)現(xiàn)了本文的結(jié)構(gòu),在R=13/16時(shí)最高可以達(dá)到3.507 Gb/s的凈吞吐率。與已有的LDPC譯碼器相比,通過(guò)雙層同步更新結(jié)構(gòu),以非常少量的硬件資源,實(shí)現(xiàn)了從單碼率LDPC譯碼器向多碼率的支持,不僅擁有吉比特吞吐率,而且在硬件資源花銷(xiāo)上也有大幅度節(jié)省。
參考文獻(xiàn)
[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.