(1.電子科技大學(xué) 電子工程學(xué)院 成都 610054;2.空軍大連通信士官學(xué)校 遼寧 大連 116110)
摘 要:中國(guó)數(shù)字地面電視廣播標(biāo)準(zhǔn)采用準(zhǔn)循環(huán)低密度校驗(yàn)碼(QCLDPC)作為其信道編碼的內(nèi)碼。根據(jù)該類LDPC碼的準(zhǔn)循環(huán)特性,提出了一種基于后驗(yàn)概率的簡(jiǎn)化最小和算法及其對(duì)應(yīng)的半并行譯碼結(jié)構(gòu)。其可實(shí)現(xiàn)在同一接收機(jī)中盡量復(fù)用硬件資源并減少消耗情況下LDPC碼的多碼率譯碼。最后,使用可編程門陣列實(shí)現(xiàn)了此結(jié)構(gòu)并驗(yàn)證了其性能,實(shí)驗(yàn)表明,該方法比傳統(tǒng)的最小和算法性能略有降低,但可節(jié)約大量存儲(chǔ)器資源。
關(guān)鍵詞:中國(guó)數(shù)字地面電視廣播標(biāo)準(zhǔn);準(zhǔn)循環(huán)低密度校驗(yàn)碼;多碼率;最小和算法;半并行;現(xiàn)場(chǎng)可編程門陣列
中圖分類號(hào):TN911.22文獻(xiàn)標(biāo)志碼:A
文章編號(hào):1001-3695(2009)05-1792-04
Design of decoder for LDPC codes used in CDTTB standard
LIN Jingli1,SUN Gang2,ZHU Weile1,CHEN Kesong1
(1.School of Electronic Engineering University of Electronic Science Technology of China Chengdu 610054China;2.Petty Officer Academy of Communication of Air Force Dalian Liaoning 116110 China)
Abstract:Quasicyclic lowdensity paritycheck codes (QCLDPC) have been adopted as the inner code of channel codes in Chinese digital terrestrial television broadcasting standard (CDTTB).Based on its systematic circulant form this paper presented a simplified minsum decoding algorithm based on aposteriori probabilities and its corresponding decoder with semiparallel architecture. The decoding of LDPC codes at multiple rates can be achieved in one receiver. With fully multiplexing the hardware resources are reduced on the premises that the payload rates are met. The properties of the decoder are verified on FPGA.
Key words:CDTTB; QCLDPC; multiple rates; minsum decoding algorithm; semiparallel; FPGA
低密度校驗(yàn)(LDPC)碼[1]是Gallager提出的一類可用稀疏校驗(yàn)矩陣描述的線性分組碼。因?yàn)槠湓诘g碼條件下逼近Shannon限的能力[2],近年來(lái)受到越來(lái)越多的關(guān)注,并且,已成功地應(yīng)用于多個(gè)行業(yè)標(biāo)準(zhǔn),包括中國(guó)數(shù)字地面電視標(biāo)準(zhǔn)(CDTTB)[3]。相較編碼而言,LDPC碼譯碼有著更高的復(fù)雜度,因此,譯碼一直是LDPC碼研究的焦點(diǎn)之一。除了各種簡(jiǎn)化和近似譯碼算法的推導(dǎo)[4],人們也廣泛研究各種便于譯碼的校驗(yàn)矩陣的構(gòu)造方式。例如文獻(xiàn)[6]設(shè)計(jì)的一種聯(lián)合(3,k)結(jié)構(gòu),并為其提供了一種便于硬件實(shí)現(xiàn)的譯碼方案。
CDTTB信道編碼采用準(zhǔn)循環(huán)LDPC碼[7]作為其內(nèi)碼,這是一種結(jié)構(gòu)化LDPC碼。因?yàn)槠浣Y(jié)構(gòu)性特征,可從存儲(chǔ)的生成矩陣和校驗(yàn)矩陣部分行列信息遞推完成編譯碼,為硬件實(shí)現(xiàn)帶來(lái)極大的便利。本文根據(jù)其結(jié)構(gòu),描述了在一個(gè)接收機(jī)內(nèi)可實(shí)現(xiàn)三種碼率譯碼的譯碼器的FPGA設(shè)計(jì)方案。
1 基于后驗(yàn)概率的簡(jiǎn)化最小和算法
BP算法[8]是LDPC碼譯碼最常用的算法之一。但因?yàn)槠漭^高的復(fù)雜度,文獻(xiàn)[5]提出了一種對(duì)該算法的垂直運(yùn)算作線性擬合的方法,將把整個(gè)區(qū)間復(fù)雜的運(yùn)算分解為幾個(gè)區(qū)間簡(jiǎn)單的線性運(yùn)算;文獻(xiàn)[4]則推導(dǎo)了和積算法的近似算法——最小和算法及其修正算法。考慮到譯碼復(fù)雜度和性能的折中,本文所描述譯碼結(jié)構(gòu)采用最小和算法。
本文以信號(hào)在二進(jìn)制移相鍵控(BPSK)調(diào)制方式下通過(guò)加性高斯白噪聲(AWGN)信道為例描述對(duì)數(shù)域的最小和算法。其中,LDPC碼的校驗(yàn)矩陣H為M×N維,發(fā)送碼元0、1分別映射為1和-1,從而接收端收到信號(hào)yn=xn+zn,0≤n<N。zn是均值為0、方差為σ2的高斯噪聲。在其他調(diào)制方式和衰落信道情況下可依此類推得到相應(yīng)算法。
1.1 最小和算法
相較BP算法,最小和算法不必估計(jì)信道噪聲方差,校驗(yàn)節(jié)點(diǎn)信息更新后傳遞給與之相連的各信息節(jié)點(diǎn)的似然率計(jì)算簡(jiǎn)便。
1.1.1 初始化
每個(gè)信息節(jié)點(diǎn)vn的初始對(duì)數(shù)似然率(LLR)(0≤n<N):
Ln=yn(1)
1.1.2 水平運(yùn)算
這是校驗(yàn)矩陣每行的運(yùn)算,即二分圖上每個(gè)校驗(yàn)節(jié)點(diǎn)的運(yùn)算。在下文中,將不加區(qū)別地使用校驗(yàn)矩陣的行和校驗(yàn)節(jié)點(diǎn)。
Lkmn=n′∈B(m)\sign(Lk-1n′m
minn′∈B(m)\|Lk-1n′m|(2)
其中:n′∈B(m)\表示除了校驗(yàn)節(jié)點(diǎn)cm與信息節(jié)點(diǎn)vn相連的邊外所有連接到cm的邊的集合,0≤m<M;k是迭代次數(shù);符號(hào)sign(#8226;)表示取符號(hào)函數(shù);min(#8226;)是求最小值函數(shù)。
1.1.3 垂直運(yùn)算
這是校驗(yàn)矩陣每列的運(yùn)算,即二分圖上每個(gè)信息節(jié)點(diǎn)的運(yùn)算。在下文中,將不加區(qū)別地使用校驗(yàn)矩陣的列和信息節(jié)點(diǎn)。
Lknm=L0n+m′∈A(n)\\mLkm′n(3)
其中:m′∈A(n)\\m表示除了信息節(jié)點(diǎn)vn與校驗(yàn)節(jié)點(diǎn)cm相連的邊外所有連接到vn的邊的集合,0≤n<N。
1.1.4 嘗試譯碼判決
Lkn=L0n+A(n)Lkmn(4)
qn=sign(Lkn)(5)
定義Q=(q0,q1,…,qn-1),若HQ′=0,則迭代譯碼結(jié)束;否則如果沒有達(dá)到最大迭代次數(shù),則返回水平運(yùn)算繼續(xù)迭代譯碼。
1.2 基于后驗(yàn)概率的簡(jiǎn)化最小和算法
在LDPC碼譯碼運(yùn)算時(shí),無(wú)論水平運(yùn)算還是垂直運(yùn)算,節(jié)點(diǎn)nd傳遞給相鄰節(jié)點(diǎn)(neighboring node)的信息均不包括該相鄰節(jié)點(diǎn)傳遞給nd的信息。因此,節(jié)點(diǎn)nd傳遞給各相鄰節(jié)點(diǎn)似然率各不相同。原則上,校驗(yàn)矩陣中“1”元素的個(gè)數(shù)就是在水平運(yùn)算和垂直運(yùn)算時(shí)分別需要的運(yùn)算結(jié)果存儲(chǔ)器的個(gè)數(shù)。LDPC碼雖然是稀疏矩陣,但在碼長(zhǎng)較長(zhǎng)時(shí)(如本文所論LDPC碼長(zhǎng)度7 493 bit),分配如此之多的存儲(chǔ)器,對(duì)硬件設(shè)計(jì)而言,基本不可接受。
文獻(xiàn)[9]提出一種硬件結(jié)構(gòu),其對(duì)于校驗(yàn)節(jié)點(diǎn)更新結(jié)果,存儲(chǔ)式(4)的Lkn。在進(jìn)行下次水平運(yùn)算時(shí),信息節(jié)點(diǎn)vn傳遞給與之相連的各校驗(yàn)節(jié)點(diǎn)的LLR分別為Lkn與上次垂直運(yùn)算時(shí)這些校驗(yàn)節(jié)點(diǎn)傳遞給該信息節(jié)點(diǎn)LLR之差。垂直運(yùn)算結(jié)果存儲(chǔ)量由原來(lái)的校驗(yàn)矩陣中“1”元素的個(gè)數(shù)減少為碼字長(zhǎng)度數(shù)目。此方法極大地減少了垂直運(yùn)算結(jié)果存儲(chǔ)量,但水平運(yùn)算結(jié)果存儲(chǔ)量仍然維持不變。
在最小和算法中,對(duì)于校驗(yàn)節(jié)點(diǎn)cm,其最多輸出兩個(gè)不同的LLR測(cè)度:
OUTcm,0=minn′∈B(m)|Lk-1n′m|(6)
OUTcm,1= sub minn′∈B(m)|Lk-1n′m|(7)
其中:符號(hào)sub min(#8226;)表示取次最小值函數(shù)。
由最小和算法推導(dǎo)[4]可知,對(duì)同一待譯碼碼字分別使用BP算法和最小和算法進(jìn)行譯碼,設(shè)校驗(yàn)節(jié)點(diǎn)cm傳遞給信息節(jié)點(diǎn)vn的LLR分別為LBPmn和LMSmn,則一定有
|LBPmn|<|LMSmn|(8)
這也是歸一化最小和算法和偏移最小和算法的理論基礎(chǔ)。
因此,在本設(shè)計(jì)中,簡(jiǎn)化水平運(yùn)算為
Lkmn=n′∈B(m)/nsign (Lk-1n′m)minn′∈B(m)|Lk-1n′m|(9)
即水平運(yùn)算時(shí),各校驗(yàn)節(jié)點(diǎn)只輸出一個(gè)LLR測(cè)度。
同樣地,在文獻(xiàn)[9]中,提出了一種基于后驗(yàn)概率(APP)的最小和算法。其簡(jiǎn)化垂直運(yùn)算為
Lknm=L0n+m′∈A(n)Lkm′n
(10)
即在下次迭代的水平運(yùn)算時(shí),各信息節(jié)點(diǎn)傳遞給與之相連的校驗(yàn)節(jié)點(diǎn)的信息都相同。
由上述算法描述可見,基于APP的簡(jiǎn)化最小和算法使存儲(chǔ)容量需求和計(jì)算量都得到極大的降低。使水平運(yùn)算和垂直運(yùn)算結(jié)果的存儲(chǔ)量由原來(lái)的校驗(yàn)矩陣“1”元素的個(gè)數(shù)分別降低為校驗(yàn)矩陣行和列的個(gè)數(shù)。但是,此方法破壞了各節(jié)點(diǎn)消息的獨(dú)立性,不可避免地帶來(lái)性能的下降。
2 譯碼器結(jié)構(gòu)設(shè)計(jì)
2.1 CDTTB三種碼率的校驗(yàn)矩陣
CDTTB所用LDPC碼為QCLDPC碼,其校驗(yàn)矩陣形式:
H=A0,0A0,1…A0,t-1
A1,0A1,1…A1,t-1
Ac-1,0Ac-1,1…Ac-1,t-1(11)
其中:分塊矩陣Ai j是行重(列重)為1的b×b階循環(huán)矩陣(0≤i<c,0≤j<t),三種碼率LDPC碼均有b=127。
CDTTB三種碼率LDPC碼碼長(zhǎng)均為7 493 bit,其次數(shù)分布對(duì)和非零分塊矩陣個(gè)數(shù)分別如表1所示。
表1 CDTTB中LDPC碼校驗(yàn)矩陣特征表
碼率λ(x)ρ(x)非零分塊矩陣個(gè)數(shù)
0.493/275x2+72/275x3+2/5x107/55x6+48/55x7275
0.681/296x2+9/37x3+63/296x6+10/37x159/74x11+65/74x12296
0.86/49x2+74/147x3+55/147x1013/49x25+36/49x26294
因?yàn)镃DTTB三種碼率LDPC碼碼長(zhǎng)相同,分塊矩陣維數(shù)相同,并且,由表1可知,這三種碼率LDPC碼校驗(yàn)矩陣中“1”元素的個(gè)數(shù)相差不大。所以可以設(shè)計(jì)一個(gè)結(jié)構(gòu),盡可能發(fā)復(fù)用硬件資源以完成這三種碼率LDPC碼譯碼。
2.2 三種譯碼方案
由上述最小和算法流程描述可知,本設(shè)計(jì)中譯碼器基本可劃分為水平運(yùn)算和垂直運(yùn)算兩大部分。分別定義完成這兩類運(yùn)算的運(yùn)算單元為信息節(jié)點(diǎn)運(yùn)算單元(VNU)和校驗(yàn)節(jié)點(diǎn)運(yùn)算單元(CNU)。因此,若某行行重為wr,則wr個(gè)VNU可完成該行的水平運(yùn)算;若某列列重為wc,則wc個(gè)CNU可完成該列的垂直運(yùn)算。根據(jù)VNU和CNU的復(fù)用程度,有下列三種譯碼方案以供選擇。
2.2.1 串行方案
對(duì)于M×N維的校驗(yàn)矩陣H,其各行行重為wri(0<wri<N,0≤i<M),各列列重為wcj(0<wcj<M,0≤j<N),則使用max0≤i<M wri個(gè)VNU可完成一個(gè)校驗(yàn)節(jié)點(diǎn)的水平運(yùn)算(符號(hào)max(#8226;)表示取最大值),重復(fù)此操作直到所有校驗(yàn)節(jié)點(diǎn)運(yùn)算完畢;然后,再使用max0≤j<N wcj個(gè)CNU可完成一個(gè)信息節(jié)點(diǎn)的垂直運(yùn)算,重復(fù)同樣操作直到所有信息節(jié)點(diǎn)運(yùn)算完畢。此時(shí),即可完成一次迭代。
2.2.2 并行方案
對(duì)于校驗(yàn)矩陣H,使用0≤i<Mwri個(gè)VNU可一次性同時(shí)完成所有校驗(yàn)節(jié)點(diǎn)的水平運(yùn)算,再使用0≤j<Nwcj個(gè)CNU可一次性同時(shí)完成所有信息節(jié)點(diǎn)的垂直運(yùn)算。此時(shí),即已完成一次迭代。
2.2.3 半并行方案
式(11)中分塊矩陣Ai j第一行和第一列分別稱為行生成器和列生成器。根據(jù)Ai j的維數(shù),可設(shè)置復(fù)用系數(shù)b,根據(jù)H各分塊矩陣的行生成器生成地址,載入相應(yīng)的Lknm,使用0≤i<cwrb×i個(gè)VNU可一次性同時(shí)完成第0,b,2b,…,(c-1)b共c個(gè)校驗(yàn)節(jié)點(diǎn)的水平運(yùn)算,各行生成器分別循環(huán)右移更新地址載入新的Lknm,使用這些VNU可完成第1,b+1,2b+1,…,(c-1)b+1的第二批c個(gè)校驗(yàn)節(jié)點(diǎn)的水平運(yùn)算。如此循環(huán)操作b次即可完成水平運(yùn)算。在垂直運(yùn)算時(shí),根據(jù)H各分塊矩陣的列生成器生成地址,載入相應(yīng)的Lkmn,使用0≤j<twcb×j個(gè)CNU可一次性同時(shí)完成第0,b,2b,…,(t-1)b共t個(gè)校驗(yàn)節(jié)點(diǎn)的垂直運(yùn)算,各列生成器分別循環(huán)下移更新地址載入新的Lkmn,使用這些CNU可完成第1,b+1,2b+1,…,(t-1)b+1的第二批t個(gè)校驗(yàn)節(jié)點(diǎn)的垂直運(yùn)算。如此循環(huán)操作b次即可完成一次迭代。
2.2.4 三種譯碼方案比較
根據(jù)上述三種譯碼方案描述,列出其消耗VNU/CNU和完成一次迭代運(yùn)算時(shí)鐘個(gè)數(shù)(不包括行/列生成器裝載時(shí)間)比較如表2所示。
表2 三種譯碼方案比較
譯碼方案VNU個(gè)數(shù)(NVNU)CNU個(gè)數(shù)(NCNU)時(shí)鐘個(gè)數(shù)(NCLK)
串行方案max0≤i<Mwri
max0≤j<NwcjM+N
并行方案0≤i<Mwri
0≤j<Nwcj2
半并行方案0≤i<cwrb×i
0≤j<twcb×j2b
由表2可知,三種譯碼方案中,(NVNU+NCNU)×NCLK趨近一個(gè)常數(shù),因此,本設(shè)計(jì)選擇了資源消耗和時(shí)鐘消耗都折中的半并行方案。
2.3 半并行譯碼方案
根據(jù)上節(jié)描述,半并行譯碼方案應(yīng)包括校驗(yàn)節(jié)點(diǎn)單元(CNU)、信息節(jié)點(diǎn)單元(VNU)、校驗(yàn)節(jié)點(diǎn)更新所需比較器、信息節(jié)點(diǎn)更新所需加法器、信息節(jié)點(diǎn)更新結(jié)果存儲(chǔ)器OUTv、校驗(yàn)節(jié)點(diǎn)更新結(jié)果存儲(chǔ)器OUTc、譯碼器初始信息存儲(chǔ)器INIT、譯碼結(jié)果(Q)存儲(chǔ)器以及完成這些運(yùn)算和存儲(chǔ)的控制器;另外,還需要校驗(yàn)矩陣地址存儲(chǔ)器以存儲(chǔ)用于譯碼的校驗(yàn)矩陣。考慮到CDTTB三種碼率LDPC碼中校驗(yàn)矩陣各行/列生成器“1”元素個(gè)數(shù)最多為296(0.6碼率),因此,構(gòu)建此譯碼器整體結(jié)構(gòu)如圖1所示。
2.3.1 INIT、OUTc和OUTv存儲(chǔ)器
INIT存儲(chǔ)器存儲(chǔ)譯碼器初始信息L0n,其包括A、B兩部分,每部分存儲(chǔ)深度為碼長(zhǎng)長(zhǎng)度(7 493)。其設(shè)置成乒乓工作模式,在INITA用于譯碼時(shí),INITB用于存儲(chǔ)下一個(gè)待譯碼碼字,反之亦然。
OUTv存儲(chǔ)器存儲(chǔ)譯碼器垂直運(yùn)算結(jié)果Lknm,也需要存儲(chǔ)深度7 493。
OUTc存儲(chǔ)器各存儲(chǔ)單元內(nèi)容為
Lkmn=n∈B(m)sign(Lk-1n′m)minn∈B(m)|Lk-1n′m|(12)
即其測(cè)度為與各校驗(yàn)節(jié)點(diǎn)相連的所有信息節(jié)點(diǎn)的測(cè)度最小值,符號(hào)為這些信息節(jié)點(diǎn)符號(hào)的乘積。故其與Lkmn可能符號(hào)不同,但測(cè)度相同。因三種碼率LDPC碼校驗(yàn)矩陣最大行個(gè)數(shù)為4 445(0.4碼率),OUTc存儲(chǔ)器需要分配存儲(chǔ)深度4 445。
2.3.2 校驗(yàn)矩陣存儲(chǔ)器
校驗(yàn)矩陣作為不同LDPC碼的根本標(biāo)志和譯碼基礎(chǔ),需要事先存儲(chǔ)于校驗(yàn)矩陣存儲(chǔ)器中。CDTTB三種碼率LDPC碼共有非零分塊矩陣865個(gè)。在本設(shè)計(jì)中,分配深度為1 024的兩個(gè)LPM_ROM,分別按行順序和列順序依次存儲(chǔ)三種LDPC碼各非零分塊矩陣行/列生成器所在位置。在系統(tǒng)復(fù)位后分別載入地址發(fā)生器以產(chǎn)生讀寫INIT、OUTc和存儲(chǔ)器的地址。
2.3.3 信息節(jié)點(diǎn)單元VNU與校驗(yàn)節(jié)點(diǎn)單元CNU
VNU存儲(chǔ)用于校驗(yàn)節(jié)點(diǎn)更新的各信息節(jié)點(diǎn)的LLR。因?yàn)樾r?yàn)節(jié)點(diǎn)cm更新運(yùn)算是求取各與之相連的信息節(jié)點(diǎn)LLR測(cè)度的最小值。所以,在VNU前設(shè)置補(bǔ)碼轉(zhuǎn)換原碼結(jié)構(gòu)——CT轉(zhuǎn)換器。
CNU存儲(chǔ)用于信息節(jié)點(diǎn)更新的各校驗(yàn)節(jié)點(diǎn)的LLR。
因?yàn)镃DTTB三種碼率LDPC碼校驗(yàn)矩陣非零分塊矩陣最多為296個(gè)(0.6碼率),故系統(tǒng)共有VNU和CNU各296個(gè)。
在水平運(yùn)算開始時(shí),VNU載入校驗(yàn)矩陣各分塊矩陣第一行待運(yùn)算的LLR,在運(yùn)算的同時(shí),各地址寄存器加1,并開始載入第二行的各待運(yùn)算LLR,等等。重復(fù)上述過(guò)程127次,即可完成水平運(yùn)算。
同理,在垂直運(yùn)算時(shí),CNU順序載入校驗(yàn)矩陣各分塊矩陣每列待運(yùn)算的LLR,重復(fù)運(yùn)算127次可完成垂直運(yùn)算。
2.3.4 比較器和加法器
比較器完成各校驗(yàn)節(jié)點(diǎn)信息更新。其采用兩輸入方式,即在一個(gè)時(shí)鐘只能完成兩個(gè)LLR測(cè)度的大小比較。如此,完成一個(gè)校驗(yàn)節(jié)點(diǎn)的LLR更新,根據(jù)三種碼率LDPC碼不同的行重,其需要時(shí)鐘個(gè)數(shù)如表3所示。
加法器完成各信息節(jié)點(diǎn)信息更新。根據(jù)三種碼率LDPC碼不同的列重,分別設(shè)計(jì)輸入端子個(gè)數(shù)為3、4、7、11、16的加法器。因?yàn)樗竭\(yùn)算時(shí)為了解約存儲(chǔ)空間,符號(hào)計(jì)算采取的是計(jì)算與各校驗(yàn)節(jié)點(diǎn)相連的所有信息節(jié)點(diǎn)符號(hào)乘積的方式,如式(12)所示。所以,各信息節(jié)點(diǎn)信息更新前,與之相連的各校驗(yàn)節(jié)點(diǎn)信息需要符號(hào)位與該信息節(jié)點(diǎn)的當(dāng)前符號(hào)位相乘,如圖2所示。
2.3.5 硬判決Q存儲(chǔ)器
垂直運(yùn)算結(jié)果Lknm直接進(jìn)行硬判決輸出到Q存儲(chǔ)器。仿真表明,在LDPC碼迭代譯碼成功時(shí)(HQ′=0),若繼續(xù)迭代,Lknm輸出硬判決值不變。因此,在本設(shè)計(jì)中,不判斷譯碼是否成功,而是迭代到最大迭代次數(shù)直接輸出Q存儲(chǔ)器內(nèi)容。如此,減少了每次迭代完成后的HQ′運(yùn)算。但按照最小和算法,若HQ′=0停止迭代,可在預(yù)定的剩余迭代時(shí)間內(nèi)使系統(tǒng)進(jìn)入省電狀態(tài)。因此,本運(yùn)行方式會(huì)消耗更大的功率。
2.3.6 控制器
以上各操作都通過(guò)控制器控制完成。根據(jù)輸入的不同碼率,控制器對(duì)系統(tǒng)各部分產(chǎn)生相應(yīng)的控制時(shí)鐘完成操作。
3 FPGA實(shí)現(xiàn)
根據(jù)上述方案,本設(shè)計(jì)設(shè)定最大迭代次數(shù)為20,量化范圍為[-6.0,6.0]。編寫Verilog代碼并選用Altera公司Stratix系列EP1S80F1020C5作為測(cè)試平臺(tái),結(jié)果顯示此編碼器消耗58 312個(gè)LE單元,占FPGA總邏輯單元的73%,消耗378 984 bit的存儲(chǔ)器資源,占FPGA總存儲(chǔ)器資源的5%。編碼器最高時(shí)鐘可達(dá)57.7 MHz,故數(shù)據(jù)吞吐率大約為44.3 Mbps。
由文獻(xiàn)[3]可知,三種碼率LDPC碼數(shù)據(jù)吞吐率都大約為39.93 Mbps,故本譯碼器滿足系統(tǒng)要求。
圖3為本譯碼器實(shí)際測(cè)試結(jié)果與無(wú)限精度最小和算法仿真結(jié)果的比較。由圖可見,在誤比特率10-6時(shí),本譯碼器三種碼率性能分別比最小和算法差約0.2、0.1和0.1 dB。由文獻(xiàn)[4]可知,有限位數(shù)量化的最小和算法應(yīng)略優(yōu)于其在無(wú)限精度量化時(shí)的性能,這是因?yàn)橛邢蘖炕氲牧炕秶蓪?duì)無(wú)限量化時(shí)測(cè)度過(guò)大的錯(cuò)誤LLR作出修正。
本設(shè)計(jì)采用基于APP的簡(jiǎn)化最小和算法,其造成的信息自相關(guān)降低了性能。高碼率編碼之所以性能下降較低碼率編碼少,是因?yàn)槿N碼率LDPC碼校驗(yàn)矩陣中“1”元素個(gè)數(shù)相差不大,高碼率LDPC碼有相對(duì)較多的較小環(huán),從而自相關(guān)帶來(lái)的影響相對(duì)低碼率LDPC碼小。
4 結(jié)束語(yǔ)
本文提出了CDTTB方案的三種LDPC碼復(fù)合譯碼的半并行結(jié)構(gòu),包括總體結(jié)構(gòu)設(shè)計(jì)、各運(yùn)算單元設(shè)計(jì)和控制。通過(guò)最終FPGA實(shí)現(xiàn),證明了其能保證CDTTB數(shù)據(jù)吞吐率要求,并且,消耗較少的系統(tǒng)資源。對(duì)于CDTTB標(biāo)準(zhǔn)的應(yīng)用推廣,有一定實(shí)用意義。對(duì)其他QCLDPC碼的譯碼實(shí)現(xiàn),有一定參考價(jià)值。
參考文獻(xiàn):
[1]
GALLAGER R G.Lowdensity paritycheck codes[J].IEEE Trans on Inform Theory,1962,8(1):2128.
[2]MACKAY D J C,NEAL R M.Near Shannon limit performance of low density parity check codes[J].Electro Lett,1996,32(18):16451646.
[3]GB20600—2006,地面數(shù)字電視廣播傳輸系統(tǒng)幀結(jié)構(gòu)、信道編碼和調(diào)制[S].2006.
[4]CHEN Jinghui,DHOLAKIA A,ELEFTHERIOU E,et al.Reducedcomplexity decoding of LDPC codes[J].IEEE Trans on Commun,2005,53(8):12881299.
[5]PAPAHARALABOS S,PAPALEO M,MATHIOPOULOS P T,et al.DVBS2 LDPC decoding using robust check node update approximations[J].IEEE Trans on Broadcasting,2008,54(1):120126.
[6]ZHANG Tong,PATHI K K.VLSI implementation oriented (3,k)regular lowdensity paritycheck codes[C]//Proc of IEEE Workshop on Signal Processing Systems Sips: Design and Implementation.Piscataway,NJ:[s.n.],2001.
[7]LI Z,CHEN L,ZENG L Q,et al.Efficient encoding of quasicyclic lowdensity paritycheck codes[J].IEEE Trans on Commun,2006,54(1):7181.
[8]RICHARDSON T J,URBANKE R L.The capacity of lowdensity paritycheck codes under messagepassing decoding[J].IEEE Trans on Inform Theory,2001,47(2):599618.
[9]WANG Zhongfeng,CUI Zhiqiang.A memory efficient partially parallel decoder[J].IEEE Trans on VLSI Systems,2007,15(4):483488.
(上接第1791頁(yè))
[6]CLAIRE A,SIMMERS P D.A stakeholder model of business intelligence[C]//Proc of the 37th Annual Hawaii International Conference on System Sciences.2004:223231.
[7]SPIL T A M,STEGWEE R A,TEITINK C J A.Business intelligence in healthcare organizations[C]//Proc of the 35th Annual Hawaii International Conference on System Sciences.2002:1-9.
[8]ALKAABI A.The development of management information system performance assessment model[D].Washington DC:George Washington University,1999:46.
[9]VAPNIK V.An overview of statistical learning theory[J].IEEE Trans on NN,1999,10(3):988999.
[10]利奧托德.商務(wù)智能:信息—知識(shí)—利潤(rùn)[M].北京:電子工業(yè)出版社,2002:310.
[11]GINZBERG M J.Early diagnosis of MIS implementation failure:promising results and unanswered questions[J].Management Scinece,1981,27(4):459478.
[12]MARGARET K.We should,but don’t paradox:exploring user acceptance of a business intelligence system[D].[S.l.]:Graduate School of Business Administration,Harvard University,1997:7076.
[13]PITT L,WATSON R T,KAVAN C B.Measuring information systems service quality:concerns for a complete canvas[J].MIS Quarterly,1997,21(2):209221.
[14]ELDON Y L.Percevied importance of information system success factors:a meta analysis of group differences[J].Information Management,1997,32(1):1528.
[15]鄧乃揚(yáng),田英杰.數(shù)據(jù)挖掘中的新方法——支持向量機(jī)[M].北京:科學(xué)出版社,2004:214221.
[16]張學(xué)工.關(guān)于統(tǒng)計(jì)學(xué)習(xí)理論與支持向量機(jī)[J].自動(dòng)化學(xué)報(bào),2000,26(1):3242.
[17]SMOLA A,SCHOLKOPF B.On a kernelbased method for pattern,regression,approximation and operator inversion[J].Algorithmica,1998,22(1/2):211-231.