《基于FPGA的极化码的SC译码算法结构的改进方法.docx》由会员分享,可在线阅读,更多相关《基于FPGA的极化码的SC译码算法结构的改进方法.docx(6页珍藏版)》请在第一文库网上搜索。
1、基于FPGA的极化码的SC译码算法结构的改进方法在二进制离散无记忆信道中极化码可以达到其信道极限容量,并且实现的复杂度较低,这在通信领域无疑是一个重大突破,因此在四中实现极化码的译码有着非常重要的研究意义。首先介绍了SC(SuccessiveCance11ation)译码算法,并将该算法的蝶形结构改进为线形结构从而提高了译码效率;接着对译码算法做了包括最小和译码、定点量化和资源共享的改进,以便于在硬件中更容易实现;最后在FPGA中实现了极化码的译码并给出了测试波形以及对不同编码块长度的综合资源进行了对比。实验结果表明,译码的最高频率可达145MHz,吞吐率可达36.4MbpsoO引言最近几年极
2、化码在编解码领域中有突破性的进展,从而激起了极化码理论研究1的快速发展。ArikanEre1a1于2008年提出极化码1,并在对称的二进制无记忆信道及任意的连续无记忆信道中证明了极化码相较于Turbo码2和1DPC码3更能达到香农极限4,并且用极化码实现的通信系统能达到更高的通信带宽,所以极化码是目前公认的“最好”的码。目前,极化码的译码实现方式主要有软件和硬件两种方式,软件的实现方式因些串行工作模式限制了译码速度的提升,而FPGA因其具有快速并行计算的能力能弥补这一缺陷。此外,极化码的递归结构能够实现资源共享并简化计算过程,这一特点表明极化码易于FPGA实现5-6。目前,关于极化码的译码算法
3、主要有置信度传播(BriefPropagation,BP)算法7、最大似然比(MaXimUm1ike1yhood,M1)算法8、连续消除(SUCCeSSiVeCance11ation,SC)算法9。这3种算法中,BP和M1算法由于在运算过程中涉及到较多的乘除法运算,因此不利于FPGA实现,而SC算法在译码过程中主要是通过加减和位运算实现,所以SC算法适用于FPGA实现。基于极化码、FPGA、SC译码算法3方面的优点,本文的重点工作是采用极化码、运用SC译码算法设计一种新型的译码器并在XiIinXXC5VFX70T上实现该译码器。1极化码的SC译码算法1.1SC译码算法SC译码算法的核心就是连续
4、地估计每个比特的似然比值,Arikan表示这些似然比值9可以通过数据流图采用递归的方式被有效地执行,这个数据流图类似于快速傅里叶变换结构,一般是通过蝶形结构的数据流图来计算似然比值,N=8的蝶形SC译码结构图如图1所示,y到y7是信道的输出值,通过如下结构可得到译出码字Ow0-TecJRTDEC1GTDECIMSU必TDEC乂必立TTE口MBSM译码单元&函数节现TnnoaI世*图1/V=8的SC蝶1,7篇款节点CZd.64结杂J改图1中传输的信息均为似然比值,标记为/其中/代表译码阶段索引,/e0,2,i代表行号,i0,7,并且1(U=1伍J,而1“则代表图中最右边那一列的信道输出力,其中Z
5、i=Iog2ZV0译码结构图中每个节点计算似然比值所用到的两个函数如式(1):f(1.ti;1UIj.r)B(1,i)=O11i=A.H)g(,小一2,;1A1,-2*;1.t.JB(1ti)=1式中,3(,i)=(i2)mod2,f是译出码字的模2部分和。由图1可知,在译码过程中涉及到两个主要函数/和g的计算,其在对数域的计算公式如式(2)、式所示:(2aI1+ab/()=kg(5,a,b)=aib由式(2)、式(3)可知只要与/,已知就可以计算出函数/的值,但是在计算函数g的时候还需要知道部分和S的值,,能够通过极化码的编码因子图计算出来。如图2所示为N=8的极化码编码因子图。由图1可知由
6、信道输出值通过函数/可以直接计算出00,由图2可知J即是So.。,那就可以在计算出J之后直接通过函数3求出山的值,以此类推就可以译出所有的y.-2Z八2极化码译码的算法改进2.1SC译码算法结构的改进由图1可知由于数据之间的较强依赖性使得译码的效率不高,例如图1中12阶段的所有节点,当输入数据y到y7准备完毕时允许节点执行相应的操作,而事实上在第一个译码班周期内只有前4个节点执行了相应的操作。为了比较译码效率,这里定义Q表示使用率,表达式如式(4)所示:需要更新的节点总数计算资源复杂度X计算时间(4)由上式可知蝶形结构译码算法的使用率如式(5)所示:,5Mog2Ar_1r1og2r(2r-2)
7、2A-2随着码长的增加,使用率逐渐趋近于0,因此有很大的空间提升使用率。为了提升使用率,本文采用了线性的译码结构来改进蝶形译码结构。N=8的SC线性译码结构图如图3所示。O只一只1JTI4I4rI图3N=8的SC线性译片f图图中yo到力是信道的输出值,。是译出的码字,用%i表示处理单元,其中/代表译码阶段索引,0,2,i代表行号,i0,21”,其中Po,o与图中/0阶段的P2,0等效,R,0和优J与图中。阶段的匕.0和匕/等效。处理单元所做的工作是执行/函数或者是g函数。由图1可知蝶形译码结构所用的处理单元为MogoJtJ史典无可知线性译码结构只需使用72个处理单元2泡实现号码在线性译码结构中,函数f和g一半码长的计算量都是在一个时钟周期完成的,用来存储部分计算结果和信道输出似然比的内存单元总共为2NT个,在整个译码过程中的处理单元为N/2个。由式(4)可计算出线性结构译码算法的使用率如式(6)所示:可以看出相比于蝶形译码结构而言,采用线性译码结构的译码算法其使用率有定的提升,并且这种结构编写的代码在硬件实现上更有利于综合布线。2.2SC译码算法在FPGA中实现的改进