文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.181295
中文引用格式: 廖海鵬,,卿粼波,滕奇志,,等. 基于FPGA的SCL譯碼算法優(yōu)化與設(shè)計(jì)[J].電子技術(shù)應(yīng)用,,2018,44(12):1-4,,8.
英文引用格式: Liao Haipeng,,Qing Linbo,Teng Qizhi,,et al. The optimization and design of SCL decoding algorithm based on FPGA[J]. Application of Electronic Technique,,2018,44(12):1-4,,8.
0 引言
2008年ARIKAN E提出了信道極化的概念并對(duì)信道極化現(xiàn)象進(jìn)行了詳細(xì)的描述[1]。極化碼的主要過程是在編碼系統(tǒng)中通過對(duì)信道進(jìn)行結(jié)合與拆分,,然后在其中選擇好的部分信道來進(jìn)行有效數(shù)據(jù)的傳輸,。極化碼被嚴(yán)格證明有以下兩個(gè)特性:一是基于信道極化現(xiàn)象存在,;二是在碼長(zhǎng)為無限長(zhǎng)時(shí),其信道容量可達(dá)香農(nóng)極限,。相比于經(jīng)典的Turbo碼與LDPC碼,,極化碼具有更低的誤碼率和復(fù)雜度以及更高的吞吐率[2-3]。
極化碼的譯碼算法研究近年來發(fā)展迅速,,其中成為研究熱點(diǎn)的連續(xù)刪除(Successive Cancellation,,SC)譯碼算法的基本思想是通過對(duì)信息位的比特似然概率值的判斷來進(jìn)行譯碼。但由于在譯碼時(shí)前一個(gè)譯碼值會(huì)對(duì)之后的譯碼值造成影響,,因此導(dǎo)致譯碼性能較差[4],。在此基礎(chǔ)上改進(jìn)的序列連續(xù)刪除(Successive Cancellation List,SCL)算法能在計(jì)算復(fù)雜度與空間復(fù)雜度之間實(shí)現(xiàn)更好的平衡[5],,相比于在軟件上實(shí)現(xiàn)該算法,,在FPGA上進(jìn)行SCL譯碼可以使譯碼速度進(jìn)一步加快[6]。目前極化碼各方面都已經(jīng)取得了碩果,,但是在FPGA上的譯碼實(shí)現(xiàn)仍然存在著譯碼效率和吞吐率不夠高等問題[6],。因此本文針對(duì)極化碼的SCL譯碼算法進(jìn)行了研究和優(yōu)化,減少資源消耗同時(shí)提高譯碼效率,;針對(duì)FPGA上的譯碼器設(shè)計(jì)進(jìn)行了定點(diǎn)量化的改進(jìn),;最后在Xilinx的VC707開發(fā)板上進(jìn)行了譯碼器的實(shí)現(xiàn)與性能分析。實(shí)驗(yàn)結(jié)果表明譯碼器在碼長(zhǎng)為512時(shí)譯碼效率為143.988 MHz,,吞吐率達(dá)到了28.79 Mb/s,,具有較強(qiáng)的工程使用價(jià)值。
1 極化碼的SCL譯碼算法
SCL譯碼算法實(shí)質(zhì)是對(duì)SC譯碼算法的推廣,,SC譯碼算法的基本思想是通過對(duì)每個(gè)傳輸碼字的LLR(對(duì)數(shù)似然比值)進(jìn)行判斷譯出碼字,,LLR的定義如式(1)所示。
圖1所示為SC譯碼路徑示意圖,,由示意圖和LLR計(jì)算公式可以看出SC譯碼在譯碼過程中前一個(gè)譯碼值與之后的譯碼值相互關(guān)聯(lián),,這將對(duì)其譯碼算法的性能造成影響。
其中函數(shù)δ(x)=(1-sgn(δ))/2,,符號(hào)函數(shù)sgn(x)表示在x>0時(shí)值為1,,x<0時(shí)值為-1,,x=0時(shí)值為0,。l代表相應(yīng)路徑且初始值
如圖2所示的SCL譯碼過程中,傳輸?shù)拇a字為1010,,其中前兩位為固定比特,,后兩位為信息比特。傳輸碼字從根節(jié)點(diǎn)出發(fā)向下擴(kuò)展,,可以得到相應(yīng)的PM值,,一直擴(kuò)展到4條路徑,,此時(shí)取出PM值較小的兩條路徑繼續(xù)擴(kuò)展,其余路徑刪除,,因此最終只有4條路徑,,其中最后算出的PM值最小的相應(yīng)路徑即為譯碼結(jié)果。圖2中曲線代表此次PM值最小路徑為1010,,譯碼結(jié)果正確,。
2 SCL譯碼的優(yōu)化與設(shè)計(jì)
SCL譯碼算法的核心依然是SC譯碼算法,但其性能優(yōu)于SC譯碼算法,。在FPGA上進(jìn)行SCL譯碼算法的實(shí)現(xiàn)會(huì)遇到如何提高譯碼效率和吞吐率以及如何合理利用FPGA片上資源等挑戰(zhàn),。針對(duì)SCL譯碼算法的優(yōu)化可以在基于其具有的遞歸結(jié)構(gòu)下對(duì)譯碼計(jì)算過程進(jìn)行簡(jiǎn)化,針對(duì)FPGA上的譯碼器設(shè)計(jì)可在運(yùn)算過程中對(duì)浮點(diǎn)數(shù)進(jìn)行量化,,更有利于硬件實(shí)現(xiàn),。
2.1 SCL譯碼算法系統(tǒng)設(shè)計(jì)
圖3所示為本文所設(shè)計(jì)的SCL譯碼系統(tǒng)圖,針對(duì)在SCL譯碼的過程中有可能出現(xiàn)最小PM值路徑譯碼不是正確譯碼的情況,,可以通過采用文獻(xiàn)[8]中的增加循環(huán)冗余校驗(yàn)(Cyclic Redundancy Check,,CRC)輔助的方法來進(jìn)行解決。在編碼系統(tǒng)中先對(duì)源碼進(jìn)行校驗(yàn)碼的添加,,然后進(jìn)行極化碼的編碼生成相應(yīng)的碼字進(jìn)行傳輸,。解碼系統(tǒng)在FPGA上使用設(shè)計(jì)的譯碼器對(duì)傳輸過來的碼字進(jìn)行極化碼譯碼以及校驗(yàn)碼校驗(yàn),在譯碼最后階段的路徑選擇時(shí)從最小PM值逐條校驗(yàn),,一旦出現(xiàn)校驗(yàn)通過的路徑即為譯碼結(jié)果,。
2.2 SCL譯碼算法優(yōu)化
SCL譯碼過程實(shí)質(zhì)是L個(gè)SC譯碼算法同時(shí)進(jìn)行,圖4所示為碼長(zhǎng)為8時(shí)的SC譯碼算法遞歸流程圖,,圖中傳遞的信息均為L(zhǎng)LR,,其中S代表計(jì)算層數(shù),i代表相應(yīng)碼字標(biāo)號(hào),。
在SC譯碼算法中,,LLR的計(jì)算公式如下:
2.3 FPGA中實(shí)現(xiàn)算法的改進(jìn)
在圖4所示的SC譯碼算法流程圖中實(shí)線部分代表執(zhí)行的f函數(shù),虛線部分代表執(zhí)行的g函數(shù),。分別定義如下:
在SCL譯碼過程中的LLR計(jì)算值均為浮點(diǎn)數(shù),,直接在FPGA中計(jì)算會(huì)使得譯碼復(fù)雜度較高,因此將浮點(diǎn)數(shù)進(jìn)行定點(diǎn)量化轉(zhuǎn)變成定點(diǎn)數(shù),,定點(diǎn)量化的結(jié)果通過(O,,R,D)來表示,,定義如表1所示,。
對(duì)f函數(shù)進(jìn)行改進(jìn)之后,譯碼過程中的計(jì)算不再涉及乘除法,,因此信道輸出和LLR的小數(shù)位數(shù)可以一致,。由于采用定點(diǎn)量化用量化值代替了原始值,,必定會(huì)對(duì)譯碼結(jié)果造成一定影響,因此選擇合適的量化比特?cái)?shù)和小數(shù)位數(shù)尤為重要,。通過對(duì)信道輸出值以及運(yùn)算過程中的對(duì)數(shù)似然比值進(jìn)行詳細(xì)的分析以及對(duì)比實(shí)驗(yàn),,選出了三種如下較好的量化方式。圖5所示為量化前后的BER曲線圖,。
如圖5所示的三種量化方式相比,,(4,4,,0)由于LLR量化的比特?cái)?shù)過小,,導(dǎo)致效果不是很理想。(4,,5,,0)和(5,6,,1)的量化選擇基本沒有降低SCL的譯碼性能,,而(4,5,,0)這種沒有小數(shù)位的量化選擇更有利于在FPGA上進(jìn)行計(jì)算,,因此譯碼器的設(shè)計(jì)選用(4,5,,0)的量化方式,。
3 譯碼硬件平臺(tái)與譯碼測(cè)試結(jié)果
3.1 硬件平臺(tái)選擇
本文選擇在Xilinx的VC707開發(fā)板上對(duì)譯碼器進(jìn)行實(shí)現(xiàn)。該開發(fā)板的主芯片為XC7VX485T,,包含有485 760個(gè)邏輯單元,、2 800個(gè)DSP Slice、37 080 KB內(nèi)存以及700個(gè)I/O引腳等資源,。其最高運(yùn)行頻率可以達(dá)到741 MHz,,可以用來實(shí)現(xiàn)極化碼的譯碼。圖6為該評(píng)估板實(shí)物圖,。
3.2 譯碼的仿真與測(cè)試
為了對(duì)SCL和SC算法進(jìn)行對(duì)比以及選擇一個(gè)合適的路徑刪減值L,,在譯碼器編寫前對(duì)各L值下的SCL算法進(jìn)行了MATLAB仿真,仿真結(jié)果如圖7所示,。
由圖7可知當(dāng)L=1和L=2時(shí)誤比特率差別較大,,再繼續(xù)加大L值時(shí)雖然可以使誤比特率進(jìn)一步降低,但是差別已經(jīng)沒有那么明顯,,為了在FPGA上能夠更容易實(shí)現(xiàn)SCL算法,,選擇L=2來進(jìn)行路徑刪減實(shí)現(xiàn)算法。
接著對(duì)譯碼器的正確性進(jìn)行驗(yàn)證,,先通過ModelSim仿真軟件對(duì)譯碼器進(jìn)行硬件仿真,。然后使用ISE軟件帶有的Chipscope在線邏輯分析儀去抓取在FPGA上的譯碼結(jié)果,通過硬件仿真結(jié)果與FPGA上的譯碼結(jié)果對(duì)比來驗(yàn)證譯碼的正確性,。
如圖8所示上半部分為在ModelSim上碼長(zhǎng)為64時(shí)的仿真結(jié)果,,data_u_out和data_uhat_out分別為輸入源碼字和譯碼仿真結(jié)果。下半部分為使用Chipscope抓取的FPGA中運(yùn)行結(jié)果波形圖,,data_u和data_uhat分別為輸入源碼字和實(shí)際譯碼結(jié)果,。輸入源碼中有一半碼字為固定比特,因此有效碼字只有32位,。由圖8可以看出源碼字和仿真結(jié)果以及FPGA譯碼結(jié)果均為69ab4d68,,因此本次譯碼結(jié)果正確。
圖9和圖10所示分別為碼長(zhǎng)為128和512時(shí)的仿真結(jié)果和譯碼結(jié)果波形圖,。在抓取512碼長(zhǎng)的波形時(shí),,由于碼長(zhǎng)太長(zhǎng),因此在Chipscope中分成了四段進(jìn)行顯示,,由于Chipscope與ModelSim顯示順序不同,,因此用相應(yīng)數(shù)字表示了相應(yīng)的結(jié)果順序,可以看出譯碼結(jié)果均正確,。
3.3 譯碼性能分析
下面對(duì)算法的性能以及工程占用資源等進(jìn)行綜合分析,,在ISE軟件上的綜合報(bào)告中可以查看譯碼器在FPGA上的資源使用結(jié)果,如表2所示,。
通過綜合資源結(jié)果可以對(duì)譯碼器的吞吐率進(jìn)行計(jì)算,,公式如下:
式中N為有效碼長(zhǎng),fmax為最大時(shí)鐘頻率,,td為譯碼延遲的時(shí)鐘周期數(shù),。吞吐率計(jì)算結(jié)果如表3所示。
4 結(jié)論
如今極化碼正越來越受到研究者們的重視,,而國(guó)內(nèi)在極化碼譯碼算法研究方面有待深入,,尤其是在硬件平臺(tái)中實(shí)現(xiàn)的較少?;诖吮疚闹饕槍?duì)極化碼的SCL譯碼算法進(jìn)行了研究與優(yōu)化,,并在FPGA上設(shè)計(jì)了譯碼器,最后在Xilinx的VC707開發(fā)板上進(jìn)行譯碼器的實(shí)現(xiàn),。該譯碼器的設(shè)計(jì)降低了譯碼復(fù)雜度以及FPGA上的資源消耗,,在碼長(zhǎng)為512時(shí)譯碼最高頻率為143.988 MHz,吞吐率為28.79 Mb/s,,有較強(qiáng)的工程實(shí)用性,。
參考文獻(xiàn)
[1] ARIKAN E.Channel polarization:a method for constructing capacity-achieving codes for symmetric binary-input memoryless channels[J].IEEE Transactions on Information Theory,2009,,55(7):3051-3073.
[2] SASOGLU E,,TELATAR I E,,ARIKAN E.Polarization for arbitrary discrete memoryless channels[C].Information Theory Workshop,2009 ITW.IEEE,,2009:144-148.
[3] ZHANG T,,PARHI K K.A 54 Mbps (3,6)-regular FPGA LDPC decoder[C].Signal Processing Systems.IEEE,2002:127-132.
[4] 李廷墅.極化碼譯碼算法的研究和分析[D].廣州:華南理工大學(xué),,2013.
[5] LI B,,SHEN H,TSE D.An adaptive successive cancellation list decoder for polar codes with cyclic redundancy check[J].IEEE Communications Letters,,2012,,16(12):2044-2047.
[6] 魏一鳴.極化碼性能研究及其SCL譯碼算法的FPGA實(shí)現(xiàn)[D].南京:南京航空航天大學(xué),2017.
[7] BALATSOUKAS-STIMMING A,,RAYMOND A J,,GROSS W J,et al.Hardware architecture for list successive cancellation decoding of polar codes[J].IEEE Transactions on Circuits & Systems II Express Briefs,,2014,,61(8):609-613.
[8] 江濤,王濤,,屈代明,,等.極化碼與奇偶校驗(yàn)碼的級(jí)聯(lián)編碼:面向5G及未來移動(dòng)通信的編碼方案[J].數(shù)據(jù)采集與處理,2017,,32(3):463-468.
作者信息:
廖海鵬,,卿粼波,滕奇志,,何小海,,鄧媛媛
(四川大學(xué) 電子信息學(xué)院,四川 成都610065)