基于ACE约束的PEG填充构造进行S-IRA编译码器设计

电子技术

48人已加入

描述

考虑到结构化非规则重复累积码具有准循环的结构便于硬件实现,采用了结构化非规则重复累积码进行编码器设计。

准循环矩阵的构造采用了基于ACE约束的PEG填充构造方法。结合所用码型的特点,设计出了简单有效的编码流程图。译码方面,采用了分层修正最小和译码算法,并设计出了译码器结构。

    为了减少硬件实现的复杂度,提高编译码器的吞吐量,将校验矩阵构造成准循环形式是一种普遍被采用的方法。因此,考虑到S-IRA码具有准循环形式,本文采用了基于ACE约束的S-IRA码进行编码器设计,使用分层最小和译码算法进行译码器设计。

1 编码器设计
1.1 RA码校验矩阵设计
    RA码编码就是将信息位u中的每一位重复q次,经过交织以后输入传输函数为的累加器,经过累加即得到校验位p,完成编码。RA码可分为非系统码和系统码两类,RA码与IRA码系统码的校验矩阵可以表示为H=[H1H2]。H1的列重为{db,t},行重为{dc,i}。H2具有差分形式:

ACE


    由于H2的差分形式,可以直接使用校验矩阵H进行编码,为了降低编码复杂度,将H1设计成准循环形式,即为结构化的IRA码(S-IRA)。但如果将H1直接构造成准循环形式,H2的双对角线形式会使构造出的校验矩阵最小汉明距离太小,而先构造与H1相同大小的准循环矩阵P,再将P进行行交织得到H1则可以避免这个问题。

ACE


    在设计校验矩阵时,采用了中提出的基于近似环外信息度(Approximate Cycle Extrinsic Message Degree)约束的边增长算法(PEG)来构造准循环矩阵P。
1.2 编码器结构
    编码器最复杂的部分在于信息位u通过准循环矩阵PT,即进行uPT的运算。本文采用上海交通大学无线通信研究所LDPC小组提出的SRAA(shift-register-identity-matrix-ad-der-accumulator)结构进行uPT的运算。
    假设准循环矩阵P的大小为M×Q行,K×Q列。其中Q×Q为P中循环置换矩阵和全零矩阵的大小。将信息序列u顺序分成K段,每段长为Q比特,即u=(u1,u2,…,uK),其中ACE。将准循环矩阵P写作:
    ACE
    其中Pi,j为P中的循环置换矩阵或者全零矩阵。在硬件中存储P时,只需存储每个Pi,j第一列“l”元素的位置,ACE当Pi,j为全零矩阵时,存储的位置为O。
    假设v=uPT,v=(v1,v2,…,vM),其中,有下式成立:
    ACEACE 


    由(2)式以及(3)式,计算vi的电路如下:

ACEACE
    图中的第i个RAM储存对应循环置换矩阵的参数,即的第一行“1”元素的位置,因此每个RAM存储K个“1”元素位置。编码时,每输入Q个信息位,SRAA电路便从RAM中读入循环置换矩阵的参数。
    交织器使用一段RAM存储交织顺序,并按存储的顺序读出SRAA中运算结果v,即完成交织。
    基于上面的SRAA计算电路本文提出了图5所示的编码器结构。

ACE

    为了使编码连续进行,在交织器之后以及编码器输出端使用乒乓RAM,如图5中的RAMl和RAM2,以及RAM3和编码流程可分为三步:
    Stagel:串行输入信息u,每个输入的信息ui分成两路,一路依次存入Bufferl缓存器,另一路输入uPT计算电路,计算结果v保存在SRAA电路的寄存器中。
    Stage2:从Buffer2中将信息位依次读至RAMl、RAM2,Bufferl中的信息依次读至Buffer2,而Bufferl中继续存入新的信息位。交织器将uPT计算电路的计算结果按交织顺序读至累加器,并将产生的校验位输入RAM3、RAM4。
    Stage3:将RAMl或RAM2中的信息位u以及RAM3或RAM4中的校验位p依次读出,完成码字的串行输出。

2 译码器设计
    译码方面采用了LMMSA算法。为了便于硬件的并行处理,本文采用LMMSA译码算法,在分层上保证每层的列重至多为1。对于前面所提到的S-IRA码,则可以对校验矩阵按照每行为一层进行分层,即从列上看每一层只有一个循环位移矩阵或全零矩阵。
    针对上面提到的S-IRA码本文提出了如图6所示的译码器结构。

ACE
    其中Q=36,M=14,K=14,设计成输入缓存部分以及外信息计算部分。其中外信息计算部分每次计算一层的校验位,因此并行度为Q=36,将接收到的通过信道串行输入的每个信息比特的接收值量化成7位定点数,为了让译码器能连续地接收通过信道传递的信息,输入缓存部分也采用乒乓RAM的形式。由于外信息计算部分的并行度为Q=36,因此输入缓存部分与下一级之间的每次输出/输出均为Q×7位。由于RAMl、RAM2储存外信息值,因此直接对其中的外信息进行硬判决。 对于外信息计算部分,由于每层的列重至多为1,因此每一个外信息计算单元可以在每一层的计算中更新该单元对应行的外信息。

ACE
    从输入缓存部分输入的外信息与RAMl中的相减得到,将存人RAM2,并输入比较/选择器。当该行的全部计算完毕后,从比较/选择器输出,经过乘法器得到的存入RAMl,并与缓存在RAM2中的相加,得到,即完成一次迭代。由于RAM2中的数据输出可以连续地输入输出,因此在输入完该次迭代的所有后,马上可以接着输入下一次迭代的,从而译码可以连续地进行。
    比较/选择器的作用是计算,即2.1.3式的后半部分。由于输出的绝对值只有两种:最大值和次最大值,因此只需得到最大值和次最大值以及各自对应的位置,并记录对应的正负符号,就可以完全确定。

ACE
    在译码的横向计算过程中,对于某一行,比较/选择器首先初始化,其输入端输入前一级加法器输出的,将输入的符号存入符号寄存器(其中符号寄存器增加一位符号累加位,计算该行的符号),并将||首先与存储器中的最小值比较,如果输入值小于最小值存储器中所存储的值,则将最小值存储器中所存储的值存入次小值存储器,然后将输入值存入最小值存储器,并在最小/次小选择寄存器中记录最小值位置,接着开始下一个值的比较;如果输入值大于最小值存储器中所存储的值,则接着与次小值存储器中的值比较,如果输入值小于次小值存储器中的值,则将输入值存入次小值存储器,接着进行下一个输入值的比较,如果输入值大于次小值存储器中的值,则直接进行下一个输入值的比较。当该行所有都处理完毕后,则按照符号寄存器中的符号依次输出,并按照最小/次小选择寄存器中记录选择依次输出最小值或次小值,即ACE

3 仿真结果及分析
    图lO中黑色曲线为本文提出的RA码构造方法所构造出码字的误码率曲线和误帧率曲线。仿真选择码长为1008,码率1/2,b=7,列重分布尽量符合密度进化算法的结果。采用BPSK调制,AWGN信道,采用log-BP算法译码,最大迭代次数为50次。

ACE
    红色曲线为传统的基于PEG边增长算法构造出码字的误码率曲线和误帧率曲线。为便于对比,仿真时选择的码长同样为1008,码率l/2,采用。BPSK调制,AWGN信道,采用log-BP算法译码,最大迭代次数为50次。
    从仿真结果来看,本文提出的码字构造方法所构造码字的误码平层在10-6左右,而传统的基于PEG边增长算法构造出码字的误码平层则在10-7,性能要更好。这是因为在RA码的校验矩阵中存在一列列重为1的列,H2的双对角形式使得其最小码距太小,RmD码便是针对这一问题而产生的。针对H2的优化已有很多文章专门讨论,文献所介绍了几种有效的处理方法。但本文所提的码字构造方法构造简单,便于硬件实现时的并行处理,有利于实现编译码器的高吞吐量。
    对于不同码长、码率的S-IRA码,都可以采用上面所提到的方法得到,当然Q越小,资源消耗就越大。对于编码器,码长、码率不同,则uPT需改变各个存储器的大小,而计算电路则需改变SR从计算电路的数量。对于译码器同样需要改变各个存储器的大小以及外信息计算单元的数量。

4 结论
    使用单位阵的循环移位矩阵作为非零子矩阵构造LDPC码的循环矩阵结构十分适合于部分并行译码实现,而RA码则具有编码复杂度低的特点。本文结合两者的特点设计出了硬件实现时的编译码器结构,由于采用的循环矩阵结构因而实现时可以占用很少的资源。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分