一种基于公式语言的并行极化码BP译码器的设计方法与流程

文档序号:19578691发布日期:2019-12-31 19:43阅读:267来源:国知局
一种基于公式语言的并行极化码BP译码器的设计方法与流程

本发明涉及信道编码技术领域,尤其是一种基于公式语言的并行极化码bp译码器的设计方法。



背景技术:

极化码作为目前唯一被严格证明在二进制离散无记忆信道中可达香农极限的新型编码方法,近些年吸引了大量来自工业界和学术界的关注。为了增强极化码在真实场景的实用性,在保证良好的纠错性能的前提下,我们需要提高当前的极化码译码器设计,体现在更低的硬件复杂度及功耗,更高的运行频率及吞吐量。

和极化码sc译码器相比,极化码bp译码器有着天然的并行优势,这一特性有利于在设计中实现更高的吞吐量。近些年在极化码领域涌现了许多专注于bp算法优化和硬件设计的文章,但这些工作并没有涉及一个通用的极化码bp译码器实现结构。现有文献给出了一种参数化的dft处理器设计方法,能够适用于dft维度变化的情况。由于dft处理器和bp译码器实现结构之间存在相似性,这意味着我们能够设计一种通用的极化码bp译码器。在实际开发环境下,设计者通常希望寻找已有模块的asic或者fpga库实现。因为这些库实现通常都实现了在约束条件下的最优性能,而且能够提高项目开发的效率。因此设计一个参数化的极化码bp译码器能够解决重复实现的问题,方便设计者直接进行调用,而且能够在众多实现中进行比较和权衡,从而达到性能和资源博弈的平衡点。



技术实现要素:

本发明所要解决的技术问题在于,提供一种基于公式语言的并行极化码bp译码器的设计方法,通过研究bp译码因子图的结构,推导出任意码长和并行度下的极化码bp译码器设计公式,并给出对应的硬件实现。

为解决上述技术问题,本发明提供一种基于公式语言的并行极化码bp译码器的设计方法,包括如下步骤:

(1)根据极化码bp译码算法因子图的结构特性推导出通用的设计公式f(n,m),n,m分别表示极化码bp译码器的码长和并行度,所述设计公式为根据硬件模块映射得到的公式符号的级联;

(2)对设计公式f(n,m)中的所有硬件模块符号进行功能解释,并给出结构实现;

(3)给出确定设计公式f(n,m)的算法,保证f(n,m)唯一对应于确定的码长和并行度;

(4)描述python设计平台的处理过程,将f(n,m)映射为可综合的硬件rtl描述;

(5)将硬件rtl描述进行eda工具的仿真验证,得到并行极化码bp译码器的性能参数。

优选的,步骤(1)中,设计公式

其中n=log2n,表示up0~up1端口与前级模块相关联,表示down0~down1端口与前级模块相关联,fforward(n,m)表示前向过程的设计公式,fbackward(n,m)表示后向过程的设计公式,pm表示数据重排操作,表示pm的逆向操作,表示或者pm,表示或者

优选的,步骤(3)中,确定设计公式f(n,m)的算法具体为:

(31)输入码长n和并行度m,令下标i=0,进行步骤(32);

(32)若i<log2n-2,进行步骤(33),否则进行步骤(34);

(33)如果n≥2i+1m,则令否则令同时令i=i+1,跳转至步骤(32);

(34)输出

本发明的有益效果为:本发明给出了参数化的并行极化码bp译码器设计方法,不再局限于特定的码长和并行度,能够适用于码长和并行度任意变化的情况,提高开发效率和设计的灵活性;在保证纠错性能的同时,使得极化码bp译码器的硬件设计具有更高的灵活性,可以根据设计者的需求进行参数化的配置。

附图说明

图1为8bit极化码bp译码的因子图。

图2为bp译码中的基本计算单元(bcb)的硬件结构示意图。

图3(a)为本发明前向过程的描述示意图。

图3(b)为本发明后向过程的描述示意图。

图4为本发明整个设计的框架示意图。

图5(a)为本发明设计公式中出现的硬件符号描述图。

图5(b)为本发明设计公式中出现的硬件符号描述图。

图5(c)为本发明设计公式中出现的硬件符号描述图。

图5(d)为本发明设计公式中出现的硬件符号描述图。

图5(e)为本发明设计公式中出现的硬件符号描述图。

图5(f)为本发明设计公式中出现的硬件符号描述图。

图6为本发明参数化的极化码bp译码器硬件设计结构示意图。

图7为本发明(1024,512)极化码bp译码器硬件设计的ber性能示意图。

图8为本发明asic综合结果比较示意图。

具体实施方式

如图4所示,一种基于公式语言的并行极化码bp译码器的设计方法,包括如下步骤:

(1)根据极化码bp译码算法因子图的结构特性推导出通用的设计公式f(n,m),n,m分别表示极化码bp译码器的码长和并行度,所述设计公式为根据硬件模块映射得到的公式符号的级联;

(2)对设计公式f(n,m)中的所有硬件模块符号进行功能解释,并给出结构实现;

(3)给出确定设计公式f(n,m)的算法,保证f(n,m)唯一对应于确定的码长和并行度;

(4)描述python设计平台的处理过程,将f(n,m)映射为可综合的硬件rtl描述;

(5)将硬件rtl描述进行eda工具的仿真验证,得到并行极化码bp译码器的性能参数。

图1是归一化的n=8比特极化码bp译码因子图结构,其中共有n=log2n=3个阶段和n*(n+1)=32个节点。每个节点用两个参数(i,j)表示,其中i表示第i级,j表示第j层,1≤i≤n+1,0≤j≤n-1。同时每个节点表示两种消息:从左向右传播的消息(用ri,j表示)和从右向左传播的消息(用li,j表示),均用对数似然比(llr)表示。每一个阶段包含n/2个基本运算单元(bcb),图2为bcb的硬件结构图,其中bcb的基本功能由下式实现:

其中t表示当前迭代次数,g(x,y)=sign(x)*sign(y)*min(x|,|y)。

极化码bp译码算法需要双向迭代更新消息,即从左向右和从右向左分别更新消息,当达到最大迭代次数或者满足早期停止策略时退出迭代。首先定义两个新的概念:前向过程,后向过程,其中前向过程和后向过程分别意味着从左向右和从右向左传播消息。前向过程开始于第2层,途经阶段2~(n-1),结束于第n层。后向过程开始于第n层,途经阶段(n-1)~2,结束于第2层。分析图1的结构,发现前向过程和后向过程具有很高的相似性,两个过程都需要使用对方提供的反馈数据进行消息更新,后向过程可以理解为前向过程的逆向版本。图3(a)和图3(b)给出了两个过程的示意图,其中r2和l2,rn和ln分别表示第2层和第n层的两种消息,两个过程的perm模块为互逆的操作。

一种dft的从公式到硬件的设计方法,所得到的任意维度的dft设计公式为:

其中n表示输入输出向量的维度,m表示折叠因子。

由于dft处理器和极化码bp译码器存在结构的相似性,可以得到类似的bp译码器设计公式:

其中n和m分别表示码长和并行度。该公式可理解为模块p和的任意组合,p表示数据重排模块,a随码长和并行度改变而改变。

图5(a)表示两个模块水平层面上的级联,即模块a的输出接入模块b的输入。图5(b)同样表示bcb模块,在前向过程(或者后向过程)中,up0~up1和out0~out1表示r(或者l)消息,down0~down1表示l(或者r)消息。不同于图2的bcb结构,简化了图5(b)中的bcb模块,使之易于公式表示。图5(c)表示垂直层面上的k个并行的a模块,输入向量被分为k个组,每一组输入送入模块a得到输出。由于本发明的并行度为m,因此垂直层面上的模块并行数为m/2,可以理解为图5(d)表示m/2个并行的bcb模块,即引入了两种其中表示up0~up1端口与前级模块相关联,表示down0~down1端口与前级模块相关联。图5(e)表示交叉选择模块,它由两个多路选择器(mux)和k个延时寄存器构成,其中k个延时寄存器均匀分布在左下方和右上方。考虑到本发明的并行度是可变参数,需要使用该模块去保证正确的时序。在本发明中,表示m/2个并行的sk模块。图5(f)表示数据重排模块,它的功能为实现输入数据的重排操作,类似于图3(a)和图3(b)中的perm。在本发明中,对于给定的并行度m,满足另外只有两种重排模块:pm和其中pm和分别位于前向过程和反向过程中,是pm的逆向操作。pk的具体实施步骤如下:

1、输入维度为k的向量令向量下标i=0,进行步骤2;

2、若进行步骤3,否则进行步骤4;

3、进行赋值操作:yi=xi/2,yi+1=x(i+k)/2,同时令i=i+2,跳转至步骤2;

4、输出维度为k的向量

确定了设计公式中硬件符号的表示,在分析极化码bp译码因子图结构的基础上,得到了前向过程的设计公式:

其中n=log2n,可以为或者pk,的具体确定步骤如下:

1、输入码长n和并行度m,令下标i=0,进行步骤2;

2、若i<log2n-2,进行步骤3,否则进行步骤4;

3、如果n≥2i+1m,则令否则令同时令i=i+1,跳转至步骤2;

4、输出

在确定了前向过程的设计公式fforward(n,m)之后,容易得到后向过程的设计公式:

其中n=log2n,可以为或者的具体确定步骤如下:

1、输入码长n和并行度m,令下标i=0,进行步骤2;

2、若i<log2n-2,进行步骤3,否则进行步骤4;

3、如果n≥2i+1m,则令否则令同时令i=i+1,跳转至步骤2;

4、输出

因此整个极化码bp译码器的设计公式为:

根据设计公式可以得到通用的硬件设计结构,如图6所示,它的输入为初始llr消息,输出为译码数据。该结构所包含的模块依次为:两个多路选择器(mux),一个多路分配器(demux),bcb计算模块,延时模块,a1~anum模块,llr存储模块,早停模块,早停存储模块,译码判决模块,控制模块。对于mux1,它的输入来自于输入llr,llr存储模块和mux2,它的输出被送往bcb计算模块。对于bcb计算模块,它的bcb并行数为m/2,输出被送往延时模块。对于延时模块,它负责存储每个阶段的n个消息,包括n/m个分组,每个分组用来存储当前阶段并行度为m的消息,输出被送往demux。对于demux,它包括num个输出,它的输出依次被送往a1~anum模块。对于mux2,它包括num个输入,分别接收来自a1~anum模块的输出。a1~anum模块分别表示pm和其中num表示不同模块的总数,它的确定公式为:

同时a1~anum模块的确定规则如下:

对于llr存储模块,它负责存储log2n-1个阶段的消息,考虑每个消息的表示位宽为width,则该模块的存储大小#mem为:

对于早停模块,考虑如下早停策略:

1、考虑当前迭代下后向过程最后一个阶段的输出llr为基准值,用llr1表示;

2、进行新的迭代过程,同样得到后向过程最后一个阶段的输出llr,用llr2表示;

3、如果llr1的符号与llr2的符号保持一致,则停止迭代。否则进行新的迭代过程,重复相同的比较操作,直到达到最大迭代次数,其中早停存储模块负责存储llr1。对于译码判决模块,它负责处理最后阶段的llr消息,从而得到二进制译码数据。整个硬件设计的时序由控制模块负责.

确定了设计公式和硬件设计结构,需要使用python平台来完成它们之间的映射转换。在python平台中我们实现了参数化极化码bp译码器设计的应用程序接口(api),用bp_(n,m)表示。该api以码长和并行度作为可调参数。当我们给定码长和并行度,通过调用该api,能够生成可综合的硬件rtl描述。在模块化的基础上通过改变码长和并行度可以确定一系列的bp译码器实现,满足设计者的不同需求。

对于bp译码器api的具体实现,分为以下步骤:

1、考虑f(n,m)中出现的所有模块,包括pm和对于这4种模块,分别实现相应的veriloghdl代码生成器,集成到bp{n,m}中;

2、实现mux,demux,延时模块,llr存储模块,早停模块,早停存储模块和译码判决模块的功能,集成到bp{n,m}中;

3、实现控制模块的功能,保证整体设计时序的正确性,集成到bp{n,m}中。

对于bp{n,m},给定n和m,能得到对应设计的veriloghdl代码,该实现能准确表示码长为n,并行度为m的极化码bp译码器。

最后给出asic综合结果和进行仿真验证,考虑(1024,512)的极化码,信道为awgn,调制机制为bpsk,bp译码最大迭代次数为15。为了验证硬件设计的纠错性能,需要量化llr消息。采用1s-ai-bf的量化策略,其中1s表示1个符号位,ai表示a个整数位,bf表示b个小数位。根据这一设置,设定硬件设计的码长为1024,为了确定硬件设计的量化策略,考虑不同量化机制,和传统的bp译码算法进行对比,得到的ber性能图如图7所示。根据图7的仿真结果,发现1s-4i-1f的6比特量化策略能够实现比较好的纠错性能。在保证纠错性能的前提下,本发明里采用了1s-4i-1f的6比特量化策略。

设定码长n=1024,调整并行度m的范围,使得2≤m≤1024且m为偶数。在asic中使用tsmccmos65nm工艺库进行综合,得到的硬件参数如图8所示。由图8可知不同的并行度的译码器有着不同的性能参数,可以根据实际需要和约束条件进行选择。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1