本发明涉及一种通信技术领域的译码器及译码方法;特别涉及通信系统中一种基于多进制ldpc码的高速译码器及其译码方法。
背景技术:
通信系统中,传输的数据源可能是数字信号,例如来自计算机、移动设备、键盘等。而在数字信道中存在各种各样的噪声,因此,在数据传输过程中,需要引进前向纠错(fec)或者叫信道编码,发送端通过加入冗余位,进行纠错码编码,编码过后的信号经过有噪信道到达接收端后,再进行译码,可以直接进行一定程度的纠错。
低密度奇偶校验(ldpc)码作为前向纠错码的一种,由gallager在1963年提出,其性能理论上可以无限接近香农极限,当时由于技术限制,沉寂了三十年后,再一次成为了编码领域的研究热点。目前已广泛应用于光纤通信、以太网(10g)、微波通信、ssd、硬盘通信、5g通信等无线通信标准中。研究表明,多进制ldpc码能够获得比二进制ldpc码更好的性能,并且拥有更广泛的应用场景,比如高阶调制、中短码长、纠突发错误等,但未像二进制ldpc码一样得到迅速推广,其主要原因在于,目前还没有一种能够兼顾译码性能和复杂度的多进制ldpc码译码算法,尤其是在高速应用上。目前的通信系统中,对高速低延迟高吞吐量的通信越来越重视,因此很多研究者在设计结构简单、高吞吐量的译码器做了大量的工作,但该问题仍未得到完全的改善。
现有的基于多进制ldpc码的译码算法主要有两类:一类是基于置信度传播(bp)算法,另一类是基于大数逻辑译码(mlgd)算法。假设传输码字和校验矩阵是基于gf(2p),校验矩阵为hm×n,前者通过在检验节点和变量节点的边上传递的是nm(nm≤2p)组可能的码字及其置信度值,对于一个校验节点,需要
目前常用的非二进制ldpc译码器的结构方案有三种:全并行、串行、部分并行。全并行方案可以达到最快的吞吐量,但面积消耗最大,在通信系统中,由于占的面积过大,实用性不大;串行方案面积消耗最小,但是延迟最大,严重影响数据吞吐量,对于当今高速通信系统中,实用性也不大;被广泛应用的方案是部分串行架构,因为它可以根据需要在吞吐量和面积消耗之间取一个很好的折中,准循环多进制ldpc码的设计给部分并行方案的硬件架构设计提供了更有利的条件。
技术实现要素:
本发明针对上述问题,提出了一个基于层级全并行的多进制ldpc码的译码器架构,该译码器具有低复杂度、低延迟、高吞吐量等特点。同时,本发明提出了适用于该译码器的译码方法,该方法采用了基于mlgd算法取两组最可能码字及其置信度进行更新的方法,降低了对校验矩阵列重的依赖。具体发明内容如下:
该基于层级全并行的多进制ldpc码的译码器架构包括:
1)计算单元,用于更新校验节点和变量节点,计算用于硬判决的可靠度信息;
2)相对寻址单元,用于控制整个架构的数据通路,协调计算单元的输入输出;
3)缓存单元,用于缓存计算单元的输入数据。
计算单元包括2p-1个相同的基本计算单元,每个基本计算单元包括:
1)校验节点处理单元,用于校验节点的更新;
2)检验节点存储单元,每个校验节点存储单元与相应的校验节点的输入输出一直相连,用于存储每次其校验节点更新的c-to-v信息;
3)变量节点处理单元,用于更新变量节点。
校验节点处理单元包括:
1)外部信息获取单元,用于将节点信息转换成该节点信息对应的外部信息;
2)符号幅值分离单元,用于将输入数据的符号与幅值进行分离重组,分别获得两组最可靠的符号信息和最可靠的幅值累加信息;
3)符号操作单元,通过在gf(2p)上进行数值运算,用于将输入的两组符号信息转换成三组外部信息和;
4)幅值操作单元,用于将输入的两组幅值信息转换成三组可靠性度量信息;
5)加权因子获取单元,通过汉明距离的计算,查询表格,用于获得三组加权因子信息;
6)乘法单元,用于将幅值单元的输出值进行加权和添加正负号,并将对应累加的结果输出,获得该校验节点处理单元的输出信息。
符号操作单元在计算校验和的时候采用了二叉树的结构,将该模块的关键路径减少到对数个最小模块数。
幅值操作单元在计算最小值、次小值以及最小值编号时采用了类似二叉树的结构,将该模块的关键路径减少到对数个最小模块数。
乘法单元中的乘加权因子时,没有直接采用乘法,而是用有限的左移操作和加法操作代替,这样大大提高了该模块的运算效率,降低了硬件资源消耗。
相对寻址单元提供两种相对地址,一种相对地址是校验矩阵中循环子矩阵中非零元素相对该循环子矩阵的列位置,另一种相对地址是校验矩阵中上一层的非零元素与当前层的非零元素间的相对地址。
缓存单元采用的是深度为1、宽度为输入数据并行度的寄存器。
本发明译码器的译码方法,包括初始化、奇偶校验判断、最大迭代次数判断、最大迭代层数判断、校验节点更新以及变量节点更新六个步骤:
(一)初始化阶段接收的后验概率先转化为位的对数似然比,这与传统的多进制ldpc译码的标度或者符号的对数似然比不同,转化的对数似然比包括了符号信息和置信度信息;
(二)信道输入或者一次大的循环结束后的变量节点信息进行试探性译码,译码依据是:
将译码码字带入所有校验节点和中,若能满足所有的校验节点为零,则结束译码,否则,将进入最大迭代次数判断;
(三)判断大循环的最大迭代次数是否达到,若达到最大迭代次数。则宣告译码失败,否则,进入一次大循环中的迭代次数判断;
(四)判断一次大循环中的迭代次数是否达到分层层数,若达到最大层数,则返回进行试探性译码,否则,继续校验节点和变量节点的更新;
(五)校验节点更新过程的输入是按位的信息,包含了所有可能的组合符号信息,从中选择最可靠和次最可靠的符号和置信度,按符号进行数值计算,输出的值仍然是按位的信息;
(六)变量节点更新过程相对简单,将校验节点更新输出值进行一步加法操作,输出值返回下一层更新或者试探性译码。
本发明上述的译码器架构与译码方法的结合,具有以下的有益效果:
首先,本发明译码器采用了层级全并行方案,利用较少的芯片面积提高了数据吞吐量;
其次,本发明译码器计算一层仅需要一个时钟周期;
第三,本发明译码器层与层之间不需要多余的时钟周期用于控制,这大大降低了整个译码过程的延迟;
第四,本发明译码器只有加法和移位操作,不包括乘法操作,降低了译码复杂度;
第五,本发明译码器架构中的校验节点单元中的各个模块都尽可能优化了其关键路径,比如采用二叉树结构进行多个数加法和比较等。
第六,本发明译码方法采用了符号幅值格式数据,将置信度与码字向量结合在一起,成为一组带有正负号的值,大大降低了存储面积;
最后,本发明译码方法采用了最可靠和次最可靠信息进行译码,提高了译码的性能,降低了对校验矩阵列重的依赖性;
最后,本发明译码算法通过改进初始化方案,采用层级译码流程,提高了译码的性能,加快了译码收敛速度。
附图说明
图1是本发明译码器的顶层架构示意图;
图2是本发明译码器的计算单元的基本计算单元示意图;
图3是本发明译码器的基本计算单元的校验节点处理单元示意图;
图4是本发明译码方法的流程图;
图5是本发明实施例的fer性能仿真曲线图。
具体实施方式
下面将结合附图对本发明的具体实施作更进一步的说明。首先介绍译码器架构,其次介绍适用于该译码器的译码方法。下面通过参考附图描述的实施是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
首先介绍本发明译码器的架构。
图1中是本发明译码器的顶层架构示意图,包括计算单元、相对寻址单元和缓存单元。其中,计算单元,包括2p-1个重复的基本计算单元,每个单元的结构完全一致,用于更新校验节点和变量节点,计算用于硬判决的可靠度信息,包括2p-1个基本计算单元;相对寻址单元,用于控制整个架构的数据通路,协调计算单元的输入输出;缓存单元,用于缓存计算单元的输入数据,缓存单元采用的是深度为1、宽度为输入数据并行度的寄存器。相对寻址单元提供两种相对地址,一种相对地址是校验矩阵中循环子矩阵中非零元素相对该循环子矩阵的列位置,另一种相对地址是校验矩阵中上一层的非零元素与当前层的非零元素间的相对地址。
具体操作是:在第一次迭代循环中,首先是相对寻址单元选择信道输入管道,将其中相应于奇偶校验矩阵非零元素位的信道软信息输入到缓存单元中,同时将对应的非零元素的gf值输入到计算单元中,与缓存单元的输出一起进入计算单元,更新校验节点和变量节点的信息,输出值由相对寻址单元选入,进入下一层的迭代计算,一次大循环结束后,进行一次译码判断,若满足h·zt=0,则将译码结果输出,并终止译码器,否则,继续下一层的迭代计算,直到最大迭代次数终止其译码。
图2是本发明译码器的基本计算单元示意图,包括校验节点处理单元、校验节点存储单元和变量节点处理单元,其中,校验节点处理单元,用于校验节点的更新;检验节点存储单元,用于存储每次其校验节点更新的c-to-v信息;变量节点处理单元,用于更新变量节点。
具体操作是:在迭代开始前,将校验节点存储单元初始化为全零矩阵。迭代开始后,由缓存单元输入的符号可靠度向量
图3是本发明译码器的基本计算单元的校验节点处理单元示意图(为了表示简化,图中的符号表达式的上下标都做了省略),包括外部信息获取单元、符号幅值分离单元、符号操作单元、幅值操作单元、加权因子获取单元和乘法单元,其中,外部信息获取单元,用于将节点信息转换成该节点信息对应的外部信息;符号幅值分离单元,用于将输入数据的符号与幅值进行分离重组,分别获得两组最可靠的符号信息和相应的最可靠的幅值累加信息;符号操作单元,通过在gf(2p)上进行数值运算,用于将输入的两组符号信息转换成三组外部信息和;幅值操作单元,用于将输入的两组幅值信息转换成三组可靠性度量信息;加权因子获取单元,通过汉明距离的计算,查询表格,用于获得三组加权因子信息;乘法单元,用于将幅值单元的输出值进行加权和添加正负号,并将对应累加的结果输出,获得该校验节点处理单元的输出信息。
具体操作为:迭代开始后,首先由缓存单元输入的位可靠度向量s和校验节点存储单元输出的c-to-v信息向量r输入到外部信息获取单元中,一方面获取外部信息向量e,作为符号幅值分离单元的输入,另一方面对位可靠度向量s进行硬判决,根据
获得硬判决符号zj(0≤j<n),作为加权因子获取单元的一个输入。符号幅值分离单元将基于比特位的外部信息向量e转换成了基于符号的最可靠符号和次可靠符号以及它们对应的可靠度值,所有的可靠度值均为非负值,最可靠和次可靠符号与相对寻址单元输出的非零元素hi,j一同输入到符号操作单元,进行基于伽罗华域的数值计算,同时,最可靠和次可靠的可靠度值输入到幅值操作单元中,进行基于实数域上的数值计算。符号操作单元在计算校验和的时候采用了二叉树的结构,将该模块的关键路径减少到对数个最小模块数,幅值操作单元同样在计算最小值、次小值以及最小值编号时采用了类似二叉树的结构,将该模块的关键路径减少到对数个最小模块数。符号操作单元的三组外部信息和与外部信息获取单元的硬判决输出同时进入到加权因子获取单元中,计算得到的加权因子信息与符号操作单元的三组外部信息和以及幅值操作单元的三组可靠性度量信息输入到乘法单元中,乘法单元将三个因子展开成按位的形式,并进行累乘,获得按位c-to-v信息向量r,之后将r和e输出到变量节点处理单元和校验节点存储单元中,如此循环往复。乘法单元中进行加权因子时,没有直接采用乘法,而是用有限的左移操作和加法操作代替,这样大大提高了该模块的运算效率,降低了硬件资源消耗。
以下部分内容用于说明以本发明的硬件架构为基础的优化译码方法。
这里首先进行译码方法在高层次上的介绍,如图4所示,包括初始化、奇偶校验判断是否为零、迭代次数是否达到最大值、迭代次数是否达到最大层数、校验节点更新以及变量节点更新。
具体步骤为:
(一)初始化阶段接收的后验概率先转化为位的对数似然比,这与传统的多进制ldpc译码的标度或者符号的对数似然比不同,转化的对数似然比包括了符号信息和置信度信息,同时设定由汉明距离控制的(p+1)位的加权因子值,距离越大加权因子值越小,最小值为零,将按位的对数似然比直接送到步骤(二)中;
(二)信道输入或者一次大的循环结束后的变量节点信息进行试探性译码,译码依据是:
将译码符号带入所有校验节点和中,计算h·zt,若能满足所有的校验节点为零,则结束译码,返回译码值,否则,将进入步骤(三);
(三)判断大循环的最大迭代次数是否达到,若达到最大迭代次数,则宣告译码失败,否则,进入步骤(四);
(四)判断一次大循环中的迭代次数是否达到分层层数,若达到最大层数,则返回步骤(二),进行试探性译码和最大迭代次数判断,否则,继续校验节点和变量节点的更新,进入下一个步骤;
(五)校验节点更新过程的输入是按位的信息,包含了所有可能的组合符号信息,将按位信息转换成按符号信息,从中选择最可靠和次最可靠的符号和可靠度值,按符号进行数值计算,输出的值仍然是按位的信息,将c-to-v信息输入到变量节点更新中;
(六)变量节点更新过程相对简单,将校验节点更新输出的c-to-v值进行一步加法操作,输出值返回到步骤(四)。
其次结合上述硬件架构说明译码方法,详细说明了数据在硬件架构中流动情况,以及数据预读与计算的重叠方式。译码方法如下:
(一)初始化阶段,将按位的对数似然比输入到相对寻址单元,同时设定由汉明距离控制的(p+1)位的加权因子值,存入到查找表中,用于加权因子获取单元的查找列表;
(二)信道输入或者由计算单元经过一次大的循环结束后的变量节点信息位可靠度向量s进行试探性译码,译码依据是:
将译码符号带入所有校验节点和中,计算h·zt,若能满足所有的校验节点为零,则结束译码,返回译码值,否则,将进入步骤(三);
(三)计算单元完成计算后,一方面,将位可靠度向量s输出到相对寻址单元,以备下次迭代使用,另一方面,判断大循环的最大迭代次数是否达到,若达到最大迭代次数,则宣告译码失败,否则,进入步骤(四);
(四)在每次大循环中,在算法流程中包含
(五)经过前面的判断后,进入相对寻址单元的位可靠度向量s通过缓存单元输入到计算单元种,进行校验节点与变量节点的更新,更新细节在前面已与图2和图3结合有详细叙述。
补充说明:在高层次的译码方法流程图中共六个步骤,而结合硬件架构的流程说明只有五个步骤,是因为前者中步骤(五)和步骤(六)对校验节点和变量节点的更新是按译码顺序来说明的,而在后者与硬件架构结合中,由于在硬件架构上,变量节点的更新很简单,校验节点与变量节点的更新均在计算单元完成,所以将其归纳到一个步骤,这样可以使得架构的总体性更好,便于优化设计。
实施例:将(837,726)多进制准循环ldpc码通过awgn信道,该码的行重为27,列重为4,发送端采用bpsk调制,接收端基于以上译码架构和方法,分别用verilog语言和c语言进行仿真实现,得到的fer性能仿真曲线如图5,从图中可以看到,该译码方法在硬解码算法和软解码算法中取了一个折中;同时,将基于verilog语言实现的rtl用synopsys工具进行综合,采用的工艺是tsmc90nm的cmos工艺,综合结果显示,在频率为207.04mhz条件下,总的逻辑门(最小单元为nand门)约为4.54m,在最大迭代次数为10次的条件下,总延迟只有40个时钟周期,吞吐量可达到21.66gbps,面积效率约为4.77gbps/m-gates,目前,面积效率是在相同条件下同类型的译码器20倍以上。
通过本发明实施例的上述层级译码架构和译码方法,可以最大化输入数据的复用,提高译码器吞吐量和面积效率。顶层架构中的相对寻址单元和校验节点单元的外部信息获取单元、符号幅值分离单元、符号操作单元、幅值操作单元、加权因子获取单元以及乘法单元主要给出了功能说明,个别给出了建议方案,具体实现这些部分的功能的方法和途径还有很多。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中为明确的各组成部分均可用现有技术加以实现。