CN110635809A - 一种基于公式语言的并行极化码bp译码器的设计方法 - Google Patents
一种基于公式语言的并行极化码bp译码器的设计方法 Download PDFInfo
- Publication number
- CN110635809A CN110635809A CN201910885849.4A CN201910885849A CN110635809A CN 110635809 A CN110635809 A CN 110635809A CN 201910885849 A CN201910885849 A CN 201910885849A CN 110635809 A CN110635809 A CN 110635809A
- Authority
- CN
- China
- Prior art keywords
- formula
- design
- decoder
- polarization code
- code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
Abstract
本发明公开了一种基于公式语言的并行极化码BP译码器的设计方法,包括如下步骤:根据极化码BP译码算法因子图的结构特性推导出通用的设计公式F(N,M),N,M分别表示极化码BP译码器的码长和并行度,所述设计公式为根据硬件模块映射得到的公式符号的级联;对设计公式F(N,M)中的所有硬件模块符号进行功能解释,并给出结构实现;给出确定设计公式F(N,M)的算法,保证F(N,M)唯一对应于确定的码长和并行度;描述Python设计平台的处理过程,将F(N,M)映射为可综合的硬件RTL描述;将硬件RTL描述进行EDA工具的仿真验证,得到并行极化码BP译码器的性能参数。本发明能够适用于码长和并行度任意变化的情况,提高开发效率和设计的灵活性,根据设计者的需求进行参数化的配置。
Description
技术领域
本发明涉及信道编码技术领域,尤其是一种基于公式语言的并行极化码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<log2 N-2,进行步骤(33),否则进行步骤(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=log2 N=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译码器设计公式:
图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的具体实施步骤如下:
3、进行赋值操作:yi=xi/2,yi+1=x(i+k)/2,同时令i=i+2,跳转至步骤2;
确定了设计公式中硬件符号的表示,在分析极化码BP译码因子图结构的基础上,得到了前向过程的设计公式:
1、输入码长N和并行度M,令下标i=0,进行步骤2;
2、若i<log2 N-2,进行步骤3,否则进行步骤4;
在确定了前向过程的设计公式Fforward(N,M)之后,容易得到后向过程的设计公式:
1、输入码长N和并行度M,令下标i=0,进行步骤2;
2、若i<log2 N-2,进行步骤3,否则进行步骤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存储模块,它负责存储log2 N-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的具体实现,分为以下步骤:
2、实现MUX,DEMUX,延时模块,LLR存储模块,早停模块,早停存储模块和译码判决模块的功能,集成到BP{N,M}中;
3、实现控制模块的功能,保证整体设计时序的正确性,集成到BP{N,M}中。
对于BP{N,M},给定N和M,能得到对应设计的Verilog HDL代码,该实现能准确表示码长为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中使用TSMC CMOS 65nm工艺库进行综合,得到的硬件参数如图8所示。由图8可知不同的并行度的译码器有着不同的性能参数,可以根据实际需要和约束条件进行选择。
Claims (3)
1.一种基于公式语言的并行极化码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译码器的性能参数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910885849.4A CN110635809B (zh) | 2019-09-19 | 2019-09-19 | 一种基于公式语言的并行极化码bp译码器的设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910885849.4A CN110635809B (zh) | 2019-09-19 | 2019-09-19 | 一种基于公式语言的并行极化码bp译码器的设计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110635809A true CN110635809A (zh) | 2019-12-31 |
CN110635809B CN110635809B (zh) | 2022-12-13 |
Family
ID=68971674
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910885849.4A Active CN110635809B (zh) | 2019-09-19 | 2019-09-19 | 一种基于公式语言的并行极化码bp译码器的设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110635809B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111313913A (zh) * | 2020-04-08 | 2020-06-19 | 山东科技大学 | 低时延的交叉调度极化码bp译码方法及装置 |
CN111711455A (zh) * | 2020-05-26 | 2020-09-25 | 北京邮电大学 | 一种基于神经网络的极化码bp译码方法 |
CN115062569A (zh) * | 2022-08-17 | 2022-09-16 | 深圳市华杰智通科技有限公司 | 毫米波芯片设计仿真eda存算并行加速系统及方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103746708A (zh) * | 2013-10-25 | 2014-04-23 | 中国农业大学 | 一种Polar-LDPC级联码的构造方法 |
CN109495116A (zh) * | 2018-10-19 | 2019-03-19 | 东南大学 | 极化码的sc-bp混合译码方法及其可调式硬件架构 |
CN109547035A (zh) * | 2018-12-30 | 2019-03-29 | 山东科技大学 | 流水bp极化译码器硬件架构的建立方法及译码器硬件架构 |
-
2019
- 2019-09-19 CN CN201910885849.4A patent/CN110635809B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103746708A (zh) * | 2013-10-25 | 2014-04-23 | 中国农业大学 | 一种Polar-LDPC级联码的构造方法 |
CN109495116A (zh) * | 2018-10-19 | 2019-03-19 | 东南大学 | 极化码的sc-bp混合译码方法及其可调式硬件架构 |
CN109547035A (zh) * | 2018-12-30 | 2019-03-29 | 山东科技大学 | 流水bp极化译码器硬件架构的建立方法及译码器硬件架构 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111313913A (zh) * | 2020-04-08 | 2020-06-19 | 山东科技大学 | 低时延的交叉调度极化码bp译码方法及装置 |
CN111313913B (zh) * | 2020-04-08 | 2022-05-24 | 山东科技大学 | 低时延的交叉调度极化码bp译码方法及装置 |
CN111711455A (zh) * | 2020-05-26 | 2020-09-25 | 北京邮电大学 | 一种基于神经网络的极化码bp译码方法 |
CN115062569A (zh) * | 2022-08-17 | 2022-09-16 | 深圳市华杰智通科技有限公司 | 毫米波芯片设计仿真eda存算并行加速系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110635809B (zh) | 2022-12-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110635809B (zh) | 一种基于公式语言的并行极化码bp译码器的设计方法 | |
Yuan et al. | Low-latency successive-cancellation list decoders for polar codes with multibit decision | |
CN111162797B (zh) | 一种速率兼容的5g ldpc码的编码装置及编码方法 | |
RU2298283C2 (ru) | Модуль генерации схем для декодирования сверточных кодов и схема декодирования | |
WO2018219195A1 (zh) | 一种译码方法及译码器 | |
KR20060068168A (ko) | 저 복잡도 ldpc복호 장치 및 그 방법 | |
CN106877885B (zh) | 一种利用巴哈塔切亚参数构造极化码的方法及系统 | |
CN107644252A (zh) | 一种多机制混合的递归神经网络模型压缩方法 | |
CN106656213B (zh) | 基于k段分解的低复杂度极化码折叠硬件构架的实现方法 | |
CN116701692A (zh) | 一种图像生成方法、装置、设备及介质 | |
CN101783688A (zh) | 一种64位并行多模式crc码生成电路的设计方法 | |
CN110633524A (zh) | 非独立概率条件下复杂多态卫星系统的可靠性分析方法 | |
JP5148586B2 (ja) | 復号装置および復号方法 | |
Fewer et al. | A versatile variable rate LDPC codec architecture | |
CN110166060B (zh) | 高吞吐流水线型极化码bp译码器及其实现方法 | |
CN107742051B (zh) | Fpga电路晶体管尺寸的快速优化方法 | |
Bian et al. | A low-latency SC polar decoder based on the sequential logic optimization | |
CN111897513B (zh) | 一种基于反向极性技术的乘法器及其代码生成方法 | |
Natarajan et al. | Lossless parallel implementation of a turbo decoder on GPU | |
CN110555519B (zh) | 一种基于符号随机计算的低复杂度卷积神经网络架构 | |
CN114237550A (zh) | 一种基于Wallace树的多输入移位求和累加器 | |
WO2020213152A1 (ja) | 整列処理装置、選別システム、整列処理方法、及び非一時的なコンピュータ可読媒体 | |
CN111384978A (zh) | 一种极化码译码方法、装置及通信设备 | |
Han et al. | Simplified multi-bit SC list decoding for polar codes | |
Ji et al. | Pipelined implementations for belief propagation polar decoder: From formula to hardware |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |