謝天嬌, 李波, 楊懋, 閆中江
(1.西北工業(yè)大學(xué) 電子信息學(xué)院, 陜西 西安 710072; 2.中國(guó)空間技術(shù)研究院 西安分院, 陜西 西安 710100)
現(xiàn)階段為了在地球探測(cè)衛(wèi)星中使用高效的自適應(yīng)編碼調(diào)制技術(shù),太空數(shù)據(jù)系統(tǒng)咨詢委員會(huì)(consultative committee for space data systems,CCSDS)131.3-B-1標(biāo)準(zhǔn)[1]給出了采用DVB-S2標(biāo)準(zhǔn)[2]來(lái)傳輸CCSDS傳輸幀的方案解決了DVB-S2與CCSDS的格式兼容性問(wèn)題。眾所周知DVB-S2是歐洲第二代數(shù)字衛(wèi)星電視廣播標(biāo)準(zhǔn),它給出了高功率高頻譜效率的自適應(yīng)編碼調(diào)制系列解決方案,且已經(jīng)獲得了廣泛應(yīng)用,然而,由于衛(wèi)星廣播系統(tǒng)的最大傳輸吞吐量只有135 Mbit/s(兆比特每秒,Million bits per second),而地球探測(cè)衛(wèi)星需要高達(dá)幾個(gè)Gbit/s(千兆比特每秒,Giga bits per second)的吞吐量??梢?jiàn)DVB-S2標(biāo)準(zhǔn)中的自適應(yīng)編譯碼器芯片不能直接應(yīng)用于CCSDS,而迫切需要研究千兆比特每秒的高速LDPC編譯碼器方案,另外地球探測(cè)衛(wèi)星與地面接收站的距離會(huì)周期性變化,且其Ka波段的載頻受雨衰影響較大,這就需要其具有碼率兼容的自適應(yīng)特性。因此,DVB-S2標(biāo)準(zhǔn)中的高吞吐率碼率兼容LDPC編譯碼器設(shè)計(jì)技術(shù)是地球探測(cè)衛(wèi)星系統(tǒng)升級(jí)的關(guān)鍵技術(shù)。
雖然DVB-S2標(biāo)準(zhǔn)中的LDPC碼具有特定的結(jié)構(gòu),但是由于其校驗(yàn)矩陣右邊雙對(duì)角矩陣的存在會(huì)導(dǎo)致譯碼中間信息的存儲(chǔ)器訪問(wèn)沖突?,F(xiàn)階段已經(jīng)有一些文獻(xiàn)[3-6]考慮了雙對(duì)角矩陣的存儲(chǔ)器訪問(wèn)沖突解決方案,然而對(duì)于分層譯碼器需要2個(gè)桶形移位寄存器來(lái)修正,這占用了大量的額外硬件資源。文獻(xiàn)[7]中稱其為“硬件補(bǔ)丁法”;為了降低硬件資源,另外一種方法是采用“控制補(bǔ)丁法”解決方案,如文獻(xiàn)[7-9],由于僅使用一個(gè)桶型移位寄存器,所以極大降低了“硬件補(bǔ)丁法”的復(fù)雜度和延遲,但是會(huì)導(dǎo)致譯碼性能或吞吐量損失。在文獻(xiàn)[8]中,通過(guò)降低并行度來(lái)大量減少雙對(duì)角的更新行數(shù),會(huì)造成較大的誤幀率損失。在文獻(xiàn)[9]中,在重復(fù)的分層中采用適當(dāng)?shù)拇鎯?chǔ)控制來(lái)抵消雙對(duì)角的更新行數(shù)減少的影響,但當(dāng)并行度較高時(shí),由于流水線的處理導(dǎo)致分層重復(fù)更新而極大地約束了解決沖突的效果。文獻(xiàn)[7]提出了一種優(yōu)化的簡(jiǎn)化存儲(chǔ)控制方法來(lái)抵消未更新的雙對(duì)角行數(shù)對(duì)性能的影響,即使采用全并行譯碼,其帶來(lái)的譯碼性能損失也幾乎是微乎其微的??梢?jiàn)“硬件補(bǔ)丁法”需要大量的額外硬件資源,而“控制補(bǔ)丁法”會(huì)導(dǎo)致譯碼性能的損失,且隨著吞吐量的增加,性能損失急劇增大。另外,文獻(xiàn)[10]采用IP核的方法來(lái)設(shè)計(jì)DVB-S2譯碼器,但吞吐量較低,只有40.9~71.7 Mbit/s。
針對(duì)升級(jí)版的地球探測(cè)衛(wèi)星對(duì)DVB-S2標(biāo)準(zhǔn)LDPC碼兼容設(shè)計(jì)及高吞吐量譯碼器的需求,與現(xiàn)有傳統(tǒng)DVB-S2應(yīng)用不同,為了解決存儲(chǔ)器訪問(wèn)沖突,本文提出一種采用矩陣變換的方法,該方法既不占用額外的硬件資源也不帶來(lái)譯碼性能的損失。在硬件實(shí)現(xiàn)之前先對(duì)原始下三角雙對(duì)角結(jié)構(gòu)的IRA校驗(yàn)矩陣進(jìn)行初等變換為準(zhǔn)循環(huán)和行變換下三角雙對(duì)角結(jié)構(gòu)的組合矩陣。而對(duì)這種新的校驗(yàn)矩陣進(jìn)行FPGA實(shí)現(xiàn),左邊準(zhǔn)循環(huán)子矩陣可以采用現(xiàn)階段成熟的技術(shù)來(lái)實(shí)現(xiàn)高速自適應(yīng)碼率兼容的架構(gòu),而右邊行變換下三角雙對(duì)角結(jié)構(gòu)子矩陣設(shè)計(jì)時(shí)只需要兼容現(xiàn)有成熟的準(zhǔn)循環(huán)硬件實(shí)現(xiàn)方案即可,這樣就保證了現(xiàn)階段LDPC譯碼器研究成果能在設(shè)計(jì)的譯碼器上成功使用。
DVB-S2標(biāo)準(zhǔn)中LDPC碼的校驗(yàn)矩陣H包含兩部分,如公式(1)所示
H=[H1|H2]
(1)
H由H1和H2兩部分組合而成,分別為M×K和M×M。其中,H2是一個(gè)下三角雙對(duì)角結(jié)構(gòu)的矩陣,如圖1給出了DVB-S2標(biāo)準(zhǔn)中16 200碼長(zhǎng)7/9碼率的LDPC碼H矩陣非零元素分布圖。如圖1所示,子矩陣H1的行的規(guī)律性為每q行(DVB-S2標(biāo)準(zhǔn)中給出的5種碼率q值如表1所示)作為一塊整體向右循環(huán)移動(dòng)一次得到下q行,共右循環(huán)移動(dòng)了360次。
圖1 碼率為7/9的LDPC碼H矩陣非零元素分布圖
Cn=ln(P(xn=0|yn)/P(xn=1|yn))
(2)
(3)
N(m)是連接校驗(yàn)節(jié)點(diǎn)m的變量節(jié)點(diǎn)集合,N(m) 表示在集合N(m)中去掉變量節(jié)點(diǎn)n的子集合,α為NMSA算法的歸一化因子。
(4)
(5)
同理,集合M(n)表示連接變量節(jié)點(diǎn)n的校驗(yàn)節(jié)點(diǎn),M(n)m表示從集合M(n)中去掉一個(gè)校驗(yàn)節(jié)點(diǎn)m之后形成的子集。
上面的C2V和V2C統(tǒng)稱為外信息。迭代譯碼一直重復(fù)直到校驗(yàn)方程滿足或達(dá)到預(yù)先設(shè)定的最大迭代次數(shù),校驗(yàn)方程滿足與否由校驗(yàn)方程計(jì)算模塊(parity check update,PCU)來(lái)判定。
現(xiàn)階段文獻(xiàn)中研究最多的LDPC高速譯碼器是準(zhǔn)循環(huán)QC-LDPC譯碼器,因?yàn)閴K內(nèi)循環(huán)QC特性可以降低存儲(chǔ)器訪問(wèn)復(fù)雜度,分塊特性有利于實(shí)現(xiàn)部分并行的譯碼器。但DVB-S2標(biāo)準(zhǔn)的LDPC碼不是QC-LDPC碼,本節(jié)將詳細(xì)介紹DVB-S2標(biāo)準(zhǔn)的LDPC碼與QC-LDPC碼的關(guān)系,并借助QC-LDPC譯碼器架構(gòu)提出本文的高速碼率兼容DVB-S2的LDPC碼譯碼器架構(gòu)。
圖2 碼率為7/9的LDPC碼變換H矩陣非零元素分布圖
圖2給出了DVB-S2標(biāo)準(zhǔn)中16 200碼長(zhǎng)7/9碼率的LDPC碼H矩陣的變換矩陣,如公式(6)所示:
(6)
圖3 Ht矩陣的結(jié)構(gòu)圖
碼率H1t的dvH2t的dvHt的dc 2/512(6),3(12)2(27)6(27) 3/512(9),3(18)2(18)11(18) 2/313(3),3(27)2(15)10(15) 7/93(35)2(10)12(3),11(1),13(6) 8/94(5),3(35)2(5)27(5)
表3 碼率兼容LDPC譯碼器處理器單元的數(shù)量
見(jiàn)1.2節(jié),處理單元CNU和VNU占用了譯碼器的大部分資源,為了有效地對(duì)碼率兼容LDPC碼譯碼器進(jìn)行設(shè)計(jì),不同碼率之間應(yīng)該最大程度地共享處理單元資源。通過(guò)對(duì)表2進(jìn)行分析,可以得到2種處理單元CNU和VNU的最小數(shù)量。校驗(yàn)節(jié)點(diǎn)單元CNU用來(lái)進(jìn)行行信息的更新,將行重設(shè)計(jì)為13可以兼容10,11,12,13行重情況,所以碼率兼容譯碼器需要3種行重情況{6(27),13(18),27(5)},譯碼器需要27p個(gè)6輸入的CNU,18p個(gè)13輸入和5p個(gè)27輸入的CNU,分別記為CNU6,CNU13和CNU27,這里p表示塊內(nèi)的并行度數(shù)。同理,變量節(jié)點(diǎn)更新單元VNU用來(lái)進(jìn)行列信息的更新,列重為{2,3}和{12,13}可分別設(shè)計(jì)為列重為3和13情況的VNU。可見(jiàn)VNU需要設(shè)計(jì)為3種列重的情況{3(45),4(5),13(6)},即譯碼器需要45p個(gè)(3+1)輸入,5p個(gè)(4+1)輸入和9p個(gè)(13+1)輸入的VNU,分別記為VNU3,VNU13和VNU4,如表3所示。
(7)
表4 TST子矩陣中的非零元素位置
從表4可以看到,TST子矩陣包括q個(gè)行塊,每個(gè)行塊s(0≤s≤q-1)由L=360個(gè)子行r(0≤r≤L-1)組成,其非零元素均采用2個(gè)深度為L(zhǎng)的存儲(chǔ)器來(lái)存儲(chǔ),所以TST子矩陣總共需要2q個(gè)存儲(chǔ)器來(lái)存儲(chǔ)外信息,與之對(duì)應(yīng)的存儲(chǔ)器定義為MCt,x,(1≤x≤2q),這2q個(gè)存儲(chǔ)器的標(biāo)號(hào)分別為(s=0|MCt,1,MCt,2),…,(s=q-1|MCt,2q-1,MCt,2q)。
通過(guò)分析TST處理單元的工作流程,發(fā)現(xiàn)TST的校驗(yàn)節(jié)點(diǎn)處理階段,需要讀取每個(gè)行塊s所對(duì)應(yīng)的2個(gè)存儲(chǔ)塊,即MCt,2s-1,MCt,2s,而TST的變量節(jié)點(diǎn)處理階段,其讀取的是s所對(duì)應(yīng)的2個(gè)存儲(chǔ)塊MCt,(2s)%(2q),MCt,(2s+1)%(2q)。為了能使CNU和VNU交錯(cuò)地讀取這兩塊存儲(chǔ)器,不產(chǎn)生存儲(chǔ)器訪問(wèn)沖突問(wèn)題,我們引入一個(gè)2q×2q的TST網(wǎng)絡(luò)交換模塊,存儲(chǔ)器MCt,x對(duì)應(yīng)的輸入端口為(2,3),(4,5),…(2q,1),輸出端口號(hào)為(1,2),(3,4),…(2q-1,2q)??梢?jiàn),本文提出的表4中的TST存儲(chǔ)方式可以有效地解決存儲(chǔ)器訪問(wèn)沖突問(wèn)題。
TST子矩陣對(duì)應(yīng)的信道信息存儲(chǔ)在存儲(chǔ)器Ft中,假設(shè)按列的順序進(jìn)行信道信息的存儲(chǔ)。從存儲(chǔ)器MCt,x的內(nèi)容可知,與其對(duì)應(yīng)的列號(hào)分別為0+y,q+y,2q+y,…,q×(L-1)+y,y(0≤y≤q-1),所以VNU處理單元工作階段,Ft需要與2個(gè)存儲(chǔ)器MCt,x進(jìn)行數(shù)據(jù)交互。
本文提出的碼率兼容DVB-S2標(biāo)準(zhǔn)LDPC譯碼器架構(gòu)需要3種存儲(chǔ)器資源:信道信息存儲(chǔ)器(RAM-QC, RAM-TST)、外信息存儲(chǔ)器(RAM-M, RAM-C)和硬判決存儲(chǔ)器,每個(gè)存儲(chǔ)器采用的深度均為2「L/p?,為了保證譯碼器在接收信道信息的同時(shí)進(jìn)行譯碼處理所以需要采用2倍的信息幀數(shù)據(jù)深度,而為了使CNU和VNU交替對(duì)2幀不同的數(shù)據(jù)進(jìn)行譯碼,所有存儲(chǔ)器均采用雙端口方式的BRAM存儲(chǔ)塊。
DVB-S2標(biāo)準(zhǔn)中不同碼率基矩陣的列數(shù)相同均為n,所以可以復(fù)用信道信息存儲(chǔ)器,總共需要n=45個(gè)存儲(chǔ)器來(lái)存儲(chǔ)信道信息,復(fù)用時(shí)需要n-q個(gè)RAMF和q個(gè)Ft。然而,由于不同碼率校驗(yàn)矩陣差別較大,外信息的復(fù)用方式較復(fù)雜,對(duì)于LDPC譯碼器,外信息存儲(chǔ)器個(gè)數(shù)與基矩陣非零元素?cái)?shù)成正比,因?yàn)椴煌a率的QC子矩陣對(duì)應(yīng)的基矩陣有不同的非零元素,表5給出了每種碼率所占使用的存儲(chǔ)器數(shù)量。如表5所示,令g表示多碼率QC子矩陣基矩陣的非零元素的個(gè)數(shù),gmax=162,考慮到TST子矩陣部分存儲(chǔ)器的個(gè)數(shù)為2q,所以碼率兼容譯碼器存儲(chǔ)外信息的總數(shù)為gmax+2q=198。按照上面的分析,得出5種DVB-S2碼率兼容LDPC譯碼器總共需要198+45=243塊存儲(chǔ)器。
表5 每種碼率所占使用的存儲(chǔ)器數(shù)量
按照上文的描述,DVB-S2的LDPC校驗(yàn)矩陣經(jīng)過(guò)矩陣變換后的新矩陣Ht由準(zhǔn)循環(huán)QC子矩陣和TST子矩陣組成,為了使TST與QC矩陣所對(duì)應(yīng)的譯碼器架構(gòu)兼容,本節(jié)針對(duì)HHt提出了一種QC-TST譯碼器架構(gòu),如圖4所示。
圖4 提出的DVB-S2標(biāo)準(zhǔn)的QC-TST譯碼器架構(gòu)框圖
p>1的并行度對(duì)應(yīng)高吞吐量情況,該架構(gòu)可以簡(jiǎn)單地應(yīng)用到p=1的低吞吐量情況。關(guān)于QC子矩陣的架構(gòu)采用本文作者前期工作[11]中的方法,TST子矩陣的處理需要與QC子矩陣兼容,TST部分通過(guò)采用位寬和深度與QC部分同樣規(guī)格的RAM模塊,便于碼率兼容設(shè)計(jì)時(shí)存儲(chǔ)資源的復(fù)用,為了避免各個(gè)處理單元訪問(wèn)TST存儲(chǔ)器導(dǎo)致的訪問(wèn)沖突問(wèn)題引入TST網(wǎng)絡(luò)交換模塊。提出的QC-TST譯碼器的具體譯碼步驟如下:
輸出信號(hào)包括譯碼碼字輸出datout和伴隨該輸出的幀同步信號(hào)synout及碼率信號(hào)rate,之所以需要這2個(gè)信號(hào)是因?yàn)長(zhǎng)DPC譯碼器后端還需要其他處理,例如在DVB-S2標(biāo)準(zhǔn)中,LDPC譯碼器后端還需要BCH譯碼器。datout是位寬為p比特的信號(hào)。
1) 初始化;
當(dāng)譯碼幀到來(lái),即幀同步信號(hào)為高電平時(shí),將接收到的幀數(shù)據(jù)所對(duì)應(yīng)的信息位和校驗(yàn)位信息分別存儲(chǔ)到信息存儲(chǔ)塊RAM-QC和校驗(yàn)存儲(chǔ)塊RAM-TST中,同時(shí),將外信息存儲(chǔ)塊RAM-C和RAM-M初始化為零,初始化迭代次數(shù)Titer=1;
2) 變量節(jié)點(diǎn)更新(VNU-VTU);
3) 校驗(yàn)節(jié)點(diǎn)的更新和校驗(yàn)方程的計(jì)算(CNU-PCU);
4) 判決;
若伴隨式向量s=0或Titer達(dá)到預(yù)設(shè)的最大迭代次數(shù)MAX-ITER,轉(zhuǎn)步驟5);否則,轉(zhuǎn)步驟2)繼續(xù)下一輪迭代處理;
5)從RAM-OUT讀出譯碼判決比特,輸出譯碼碼字。
現(xiàn)階段處理模塊的實(shí)現(xiàn)技術(shù)研究較多(見(jiàn)文獻(xiàn)[11-13]),為了提高時(shí)鐘頻率均采用降低關(guān)鍵路徑延遲的方法,即在CNU和VNU計(jì)算過(guò)程中插入多級(jí)流水線。本文假設(shè)在CNU和VNU中分別插入c級(jí)和v級(jí)流水線。列重dv越重,v越大,同理行重dc越重,c越大。本文提出的譯碼流程的譯碼器一次迭代所需要的時(shí)鐘周期為v+c+2「L/p?個(gè)。
采用本文提出的這種矩陣變換方法加QC-TST譯碼器架構(gòu),在Xilinx XC7VX485T FPGA上實(shí)現(xiàn)了DVB-S2標(biāo)準(zhǔn)中兼容5種碼率的一個(gè)LDPC譯碼器,綜合和布局布線采用Vivado 2015.1。
本文提出的譯碼器并行度可以被任意配置,考慮到本文使用的FPGA資源情況,并行度配置為p=5的情況。如表4所示,可見(jiàn)分別需要的校驗(yàn)節(jié)點(diǎn)處理單元的個(gè)數(shù)分別為27p=135個(gè)CNU6,18p=90個(gè)CNU13和5p=25個(gè)CNU27;變量節(jié)點(diǎn)處理單位的個(gè)數(shù)分別為45p=90個(gè)VNU3,9p=45個(gè)VNU13和5p=25個(gè)VNU4。
從表5中可以看到,需要243塊雙端口18 kbits BRAM來(lái)存儲(chǔ)信道信息和外信息,而硬判決RAMC需要大小為2「L/p?×np=2×360×45=32.4 kbits的存儲(chǔ)空間,需要占用7塊18 kbits的雙端口BRAM,所以這個(gè)碼率兼容譯碼器需要占用250塊雙端口BRAM。對(duì)于Virtex7 FPGA,2塊18 kbits的BRAM自動(dòng)合并成一塊36 kbits的BRAM,即需要125塊36 kbits的BRAM資源。
考慮到最大列重和行重分別為13和27,為了平衡設(shè)計(jì),VNU和CNU均采用v=6和c=6和流水線,所以本文提出的譯碼器完成一次迭代需要v+c+2「L/p?=156個(gè)時(shí)鐘周期,當(dāng)譯碼器輸入端采用5路并行輸入信道信息時(shí),接收一幀的時(shí)鐘周期數(shù)為16 200/5=3 240,因此可以將譯碼器的最大迭代次數(shù)設(shè)置為?3 240/156」=20次。采用NMSA譯碼算法,為了獲得與浮點(diǎn)譯碼接近的性能,在實(shí)現(xiàn)時(shí),采用6比特量化。譯碼性能如圖5所示。
圖5 碼率兼容DVB-S2譯碼器結(jié)合高階調(diào)制性能圖
為了進(jìn)一步提高吞吐量,采用CNU和VNU交替對(duì)2幀不同的數(shù)據(jù)進(jìn)行譯碼,所以譯碼器可以同時(shí)接收并行10路信道信息輸入的情況。現(xiàn)階段的LDPC一般與MPSK或MAPSK等二維調(diào)制方式相結(jié)合,此時(shí)譯碼器同時(shí)接收I,Q2路數(shù)據(jù)對(duì)應(yīng)的幀,所以I/Q路均采用并行5路輸入的情況,每路用6比特表示,并行10路共輸入60比特。本文提出的譯碼器方案支持連續(xù)輸入的情況時(shí),是一個(gè)輸出連續(xù)的實(shí)時(shí)譯碼器,譯碼器迭代處理模塊的時(shí)序如圖6所示,當(dāng)然本譯碼器也支持對(duì)于2個(gè)譯碼塊之間有一定的時(shí)鐘間隔的情況,此時(shí)時(shí)序更寬松所以譯碼迭代次數(shù)能進(jìn)一步增加,與圖5相比,可進(jìn)一步改進(jìn)系統(tǒng)的糾錯(cuò)性能。
圖6 提出的譯碼器迭代處理工作時(shí)序圖
通過(guò)布局布線,本文設(shè)計(jì)的碼率兼容LDPC譯碼器的最大工作時(shí)鐘頻率為250 MHz,由于同時(shí)處理10路連續(xù)幀,且是一個(gè)輸出連續(xù)的實(shí)時(shí)譯碼器,所以提出的碼率兼容譯碼器的最大吞吐量為250 MHz×10=2.5 Gbit/s。
表6給出了提出的DVB-S2標(biāo)準(zhǔn)5種碼率兼容LDPC譯碼器占用的資源,同時(shí)還給出了文獻(xiàn)[3-9]實(shí)現(xiàn)的高速譯碼器結(jié)果。其中不同的文獻(xiàn)采用不同的術(shù)語(yǔ)來(lái)描述譯碼算法,但都是軟判決和積譯碼算法及其衍生算法。表6保留原文獻(xiàn)算法記法。
表6 提出的譯碼器與現(xiàn)有的其他譯碼器資源對(duì)比
本文提出的譯碼器優(yōu)勢(shì)在于:兼容多種碼率,可在連續(xù)輸入數(shù)據(jù)情況下不丟失數(shù)據(jù)且具有逐幀切換LDPC碼的自適應(yīng)功能,每幀可變的碼率切換形式可以使得DVB-S2標(biāo)準(zhǔn)中逐幀可切換的傳輸幀結(jié)構(gòu)形式獲得更優(yōu)異的自`適應(yīng)傳輸性能?,F(xiàn)有文獻(xiàn)中并沒(méi)有考慮這個(gè)設(shè)計(jì)問(wèn)題。而對(duì)于多碼率的實(shí)現(xiàn)現(xiàn)階段大部分采用bit程序刷新的方法來(lái)實(shí)現(xiàn),這些方法不能實(shí)現(xiàn)在連續(xù)輸入數(shù)據(jù)情況下逐幀切換不丟幀的功能。文獻(xiàn)中給出的是某固定碼率下的資源占用情況及其吞吐量。為了有效比較對(duì)應(yīng)指標(biāo),本文的譯碼器在單個(gè)碼率情況下的資源占用量簡(jiǎn)單折算為5種碼率兼容情況下的五分之一,實(shí)際減去自適應(yīng)控制部分的額外資源消耗后單碼率的資源占用量將更低。經(jīng)折算后本文中單個(gè)譯碼器在2.5 Gbit/s情況下的資源占用量為,36 kb BRAM存儲(chǔ)器27個(gè)(或18 kb BRAM 54個(gè))、LUT為26 241個(gè)和FF寄存器41 219個(gè)。
文獻(xiàn)[3]采用HSS譯碼策略和簡(jiǎn)單的校驗(yàn)節(jié)點(diǎn)更新算法,采用節(jié)省存儲(chǔ)資源的架構(gòu)實(shí)現(xiàn)了dc(行重)路并行,碼率為9/10時(shí),吞吐量為2.25 Gbit/s。由于文獻(xiàn)[3]中沒(méi)有給出其他指標(biāo),只能比對(duì)吞吐量情況,與文獻(xiàn)[3]相比,本文的吞吐量更高。
文獻(xiàn)[4]采用桶形移位寄存器來(lái)避免存儲(chǔ)器訪問(wèn)沖突,90 nm的ASIC實(shí)現(xiàn)結(jié)果顯示,時(shí)鐘頻率為300 MHz時(shí),可實(shí)現(xiàn)520 Mbit/s的吞吐量,占用的存儲(chǔ)器資源為8.4 Mb。而本文2.5 Gbit/s吞吐量的譯碼器占用52.8個(gè)18 kb的BRAM為0.95 Mb。由于ASIC的面積與FPGA的資源暫時(shí)沒(méi)有有效的換算比對(duì)方法[13],本文暫不做比較。但與文獻(xiàn)[4]相比本文譯碼器的吞吐量資源和存儲(chǔ)器資源利用效率更高。
文獻(xiàn)[5]設(shè)計(jì)了一個(gè)同時(shí)具有VNU和CNU功能的模塊B/CFM,能使VNU和CNU充分共享資源,實(shí)現(xiàn)的譯碼器最大吞吐量為1 020 Mbit/s。本文的譯碼結(jié)構(gòu)采用圖6的CNU和VNU交替對(duì)兩幀不同數(shù)據(jù)進(jìn)行譯碼的方法來(lái)防止處理模塊的空閑的處理方法。文獻(xiàn)[5]的設(shè)計(jì)在1.02 Gbit/s吞吐量時(shí),使用的硬件資源為11 005個(gè)LUT和182個(gè)18 kb的BRAM存儲(chǔ)資源。由于本文提出的譯碼器吞吐量約為文獻(xiàn)[5]的2.5倍,LUT資源的使用量也大約為文獻(xiàn)[5]譯碼器的2.5倍,但在BRAM存儲(chǔ)資源的利用效率上,本文譯碼器具有明顯優(yōu)勢(shì),在2.5 Gbps吞吐量下本文譯碼器僅占用54個(gè)18 kb的BRAM存儲(chǔ)資源,較文獻(xiàn)本[5]的182個(gè)18 kb BRAM有明顯優(yōu)勢(shì)。
文獻(xiàn)[6]也是采用桶形移位寄存器來(lái)避免存儲(chǔ)器訪問(wèn)沖突,ISE綜合結(jié)果顯示,當(dāng)時(shí)鐘頻率為297.3 MHz,迭代30次時(shí),吞吐量為1 Gbit/s,占用的硬件資源為L(zhǎng)UT 92 301個(gè)、FF 63 637個(gè)、36 kb BRAM存儲(chǔ)器232個(gè)。本文譯碼器的吞吐量為2.5 G,為文獻(xiàn)[4]譯碼器吞吐量的2.5倍,但從資源的使用情況上看,本文的譯碼器實(shí)現(xiàn)的資源占用量要小于文獻(xiàn)[6]譯碼器的2倍,其實(shí)現(xiàn)效率更高,這主要是由于文獻(xiàn)[6]譯碼器的桶形移位寄存器部分占用了大量的硬件資源,而本文譯碼器并沒(méi)有類似結(jié)構(gòu)。
文獻(xiàn)[8]采用通過(guò)降低并行度來(lái)大量減少雙對(duì)角的更新行數(shù),會(huì)造成較大的誤幀率損失。當(dāng)吞吐量為120 Mbit/s,FF為10 855,存儲(chǔ)器資源1.96 Mb,而本文2.5 Gbit/s單個(gè)譯碼器占用52.8個(gè)18 kb的BRAM為0.95 Mb,FF為41 219。與文獻(xiàn)[8]相比,本文譯碼器可以實(shí)現(xiàn)更高的吞吐量,且資源利用效率更高。
文獻(xiàn)[7]在文獻(xiàn)[8]的基礎(chǔ)上提出了一種優(yōu)化的控制方法來(lái)抵消譯碼性能損失。當(dāng)吞吐量為1.4 Gbit/s、ALUs為63 694、FF為75 372、存儲(chǔ)器資源3 Mb,而本文2.5 Gbit/s單個(gè)譯碼器占用LUT為26 241、FF為41 219、52.8個(gè)18 kb的BRAM為0.95 Mb。與文獻(xiàn)[7]相比,本文譯碼器的吞吐量資源、邏輯資源和存儲(chǔ)器資源均有優(yōu)勢(shì)。
文獻(xiàn)[9]采用FPGA實(shí)現(xiàn)了一個(gè)譯碼器,當(dāng)并行45路,時(shí)鐘頻率為300 MHz時(shí),吞吐量為200 Mbit/s,當(dāng)并行120路,時(shí)鐘頻率為400 MHz時(shí),吞吐量為720 Mbit/s。這些方法并行路數(shù)較大,至少為45和360最大公約數(shù),這將導(dǎo)致ASIC芯片面積較大。從表6中可以看到,720 Mbit/s時(shí)存儲(chǔ)器資源為2.2 Mb,而本文2.5 Gbit/s譯碼器占用52.8個(gè)18 kb的BRAM為0.95 Mb。由于ASIC的面積與FPGA的資源暫時(shí)沒(méi)有有效的換算比對(duì)方法[13],本文暫不做比較。但與文獻(xiàn)[9]相比本文譯碼器的吞吐量資源和存儲(chǔ)器資源利用效率更高。
通過(guò)上面的對(duì)比分析,可以看到本文設(shè)計(jì)的碼率兼容譯碼器在糾錯(cuò)性能、吞吐量資源、邏輯資源和存儲(chǔ)器資源與現(xiàn)有設(shè)計(jì)相比均具有優(yōu)勢(shì),這主要是由于本文在設(shè)計(jì)譯碼器之前采用了矩陣變換的方法,該方法既不占用額外的硬件資源也不帶來(lái)譯碼性能的損失。而且經(jīng)過(guò)變化后的矩陣在硬件實(shí)現(xiàn)上具有較大的優(yōu)勢(shì),對(duì)于變換后矩陣的左邊準(zhǔn)循環(huán)子矩陣可以采用現(xiàn)階段成熟的QC-LDPC譯碼器架構(gòu)設(shè)計(jì)技術(shù)來(lái)實(shí)現(xiàn)高速自適應(yīng)碼率兼容的架構(gòu),而右邊行變換下三角雙對(duì)角結(jié)構(gòu)子矩陣設(shè)計(jì)時(shí)只需要兼容現(xiàn)有成熟的準(zhǔn)循環(huán)硬件實(shí)現(xiàn)方案即可,這樣就保證了現(xiàn)階段LDPC譯碼器研究成果能在設(shè)計(jì)的譯碼器上進(jìn)行充分的應(yīng)用。
由于借鑒了QC-LDPC譯碼器架構(gòu)設(shè)計(jì)優(yōu)勢(shì),本文提出的譯碼器架構(gòu)非常容易實(shí)現(xiàn)碼率兼容性,消耗的硬件資源更少,而且如果想進(jìn)一步提高LDPC譯碼器的吞吐量,這種設(shè)計(jì)僅需要提高塊內(nèi)的并行路數(shù)。另外也可以靈活地調(diào)節(jié)LDPC譯碼器占用的硬件資源,滿足不同硬件平臺(tái)不同吞吐量的傳輸需求。
為了有效地實(shí)現(xiàn)多碼率碼長(zhǎng)兼容的DVB-S2譯碼器,本文將DVB-S2標(biāo)準(zhǔn)中的矩陣進(jìn)行初等變換后得到了QC和TST子矩陣,QC子矩陣采用現(xiàn)階段具有豐富研究成果的QC-LDPC譯碼器架構(gòu)進(jìn)行實(shí)現(xiàn),而僅需重點(diǎn)解決TST子矩陣部分與QC-LDPC兼容性設(shè)計(jì)問(wèn)題。提出的譯碼器能適應(yīng)DVB-S2標(biāo)準(zhǔn)所有碼率和分組長(zhǎng)度,且這種實(shí)現(xiàn)方法并行度可以靈活調(diào)節(jié),以實(shí)現(xiàn)不同吞吐量的譯碼器,可滿足不同系統(tǒng)的需求,具有較強(qiáng)的實(shí)用性。而且在高吞吐量自適應(yīng)上具有明顯的優(yōu)勢(shì),能應(yīng)用于地球探測(cè)衛(wèi)星的最大傳輸速率高達(dá)幾個(gè)千兆比特每秒的情況。