一种基于FPGA的LDPC译码器及译码方法与流程

文档序号:17157453发布日期:2019-03-20 00:11阅读:141来源:国知局
一种基于FPGA的LDPC译码器及译码方法与流程

本发明属于通信领域中信道编码技术领域,具体涉及一种ldpc译码器及译码方法。



背景技术:

随着现代通信技术的不断进步,通信系统逐渐向吞吐率更高、容量更大及可靠性更高的方向发展,纠错码作为一类信道编码,是一种提高通信质量的主要方法。其中,ldpc码是一种性能逼近香农限的分组码,具有抗连续突发错误、纠错能力强、实现复杂度低、译码时延小的特点。

适合硬件实现的最小和译码算法目前已得到广泛应用。规定rcv代表第c个校验节点到第v个变量节点传递的置信度信息,lvc代表第v个变量节点到第c个校验节点传递的置信度信息,rmv代表第m个校验节点到第v个变量节点传递的置信度信息,lnc代表第n个变量节点到第c个校验节点传递的置信度信息,n(c)为与第c个校验节点相连的所有变量节点的集合,n(c)\v则为n(c)中除去变量节点v后的变量节点集合,m(v)为与第v个变量节点相连的所有校验节点的集合,m(v)\c则为m(v)中除去校验节点c后的校验节点集合,rv表示接收到的对数似然比,lv表示后验概率值。

则有

对lv硬判决即可得到译码结果。

在实际译码器设计中,希望利用有限的硬件资源提高ldpc译码器的吞吐率,因此必须提高ldpc译码主体部分的并行度。

但译码器主体部分之外的连接电路需要采用串行数据传输方式,以便于其他模块,如解调模块、协议解析模块或信元译码模块连接。因此,为了提高译码器的吞吐率,如何处理串并行关系是重点考虑的问题。

提高译码器并行度时,需要使每次增加每个内存地址上存储数据的个数,但这样会造成地址冲突。为了规避内存冲突,wang给出了一种解决方案,即一旦发生地址冲突,就先将数据缓存,直到所有需要的数据都被读取出来后,再将数据拼接,忽略不需要的数据。假设最恶劣情况下需要访问三个地址,那么需要两个寄存器,存储前两个地址的中间变量,这部分电路称作选择网络。

但在这种结构中,选择器mux的电路十分复杂。因此,为简化选择器电路,减少硬件开销,同时减少变量节点译码延时,有必要提出更加简洁的规避地址冲突的方法。综上所述,如何在减少硬件资源开销的同时提高ldpc译码器的吞吐率是ldpc码应用于实际系统中必须解决的问题。



技术实现要素:

本发明的目的是为解决如何在减少硬件资源开销的同时提高ldpc译码器的吞吐率的问题。

本发明为解决上述技术问题采取的技术方案是:

本发明的一个方面:提供了一种基于fpga的ldpc译码器,所述ldpc译码器包括包括信道似然比乒乓存储模块、置信度消息存储模块、硬判决信息存储模块、译码结果乒乓缓存模块、校验节点更新模块、变量节点更新模块、硬判决校验模块、控制模块及输出模块;

所述信道似然比乒乓存储模块用于接收、并存储输入到译码器的信道对数似然比信息,并将信道对数似然比信息提供给所述变量节点更新模块;

所述置信度消息存储模块用于存储校验节点更新模块与变量节点更新模块计算得到的的置信度消息;

所述校验节点更新模块用于完成校验节点到变量节点置信度消息的计算,并将置信度消息存储到置信度消息存储模块;

所述变量节点更新模块用于完成变量节点到校验节点置信度消息的计算,并将置信度消息存储到置信度消息存储模块;并进行变量节点似后验概率的计算,并根据变量节点似后验概率进行硬判决,输出硬判决信息和译码结果;

所述硬判决信息存储模块用来接收、并存储变量节点更新模块每次迭代输出的硬判决信息;

所述硬判决校验模块用于读取硬判决信息存储模块输出的的硬判决信息并进行校验;

所述控制模块用于控制整个软判决迭代译码有序进行;

所述译码结果乒乓缓存模块用来接收、并存储译码结果;

所述输出模块用于输出译码结果。

本发明的另一个方面:提供了一种基于fpga的ldpc译码器的译码方法,该方法通过以下步骤实现:

步骤一、初始化译码器:信道似然比乒乓存储模块接收、并存储输入到译码器的信道对数似然比信息,将置信度消息存储模块内的信息初始化为输入到译码器的信道对数似然比信息;

步骤二、校验节点更新模块利用置信度消息存储模块内的信息计算校验节点到变量节点置信度消息,并将计算出的置信度消息存储到置信度消息存储模块;

步骤三、变量节点更新模块利用置信度消息存储模块内的校验节点到变量节点的置信度信息和信道似然比乒乓存储模块内存储的信道对数似然比信息计算变量节点到校验节点置信度消息和似后验概率,并将计算出的变量节点到校验节点置信度消息存储到置信度消息存储模块,通过似后验概率进行硬判决,将硬判决信息输出给硬判决信息存储模块;

步骤四、硬判决信息存储模块存储硬判决信息,并将硬判决信息输出给硬判决校验模块,若硬判决校验模块的检验结果为c×ht=0,h为校验矩阵,c为硬判决信息,则变量节点更新模块输出译码结果给译码结果乒乓缓存模块,译码结果乒乓缓存模块存储译码结果,并将译码结果输出给输出模块,输出模块输出译码结果;

若硬判决校验模块的检验结果为c×ht≠0,则返回步骤二;

直至硬判决校验模块的检验结果为c×ht=0或达到最大迭代次数,则变量节点更新模块将本次迭代译码结果输出给译码结果乒乓缓存模块,译码结果乒乓缓存模块存储译码结果,并将译码结果输出给输出模块,输出模块输出译码结果。

本发明的有益效果是:本发明提供了一种基于fpga的ldpc译码器及译码方法,本发明利用兵乓缓存的方法将串行电路与并行部分分离,各部分采用独立的时钟,以保证连续数据流的流入流出与高吞吐率;而且本发明采用一种新的循环存储的方式以解决地址冲突问题,避免了桶形移位寄存器或连接网络的使用,同时减小了译码电路硬件资源占用率。当采用本发明的部分并行译码结构,码型为(8176,7154)规则qc-ldpc码,并行度为7,主时钟频率选择110mhz,码率7/8,子矩阵维度511,迭代次数15次,平均变量节点更新时钟数为1.008时,吞吐率达到的最大值约为356.48mbps。

附图说明

图1是本发明的一种基于fpga的ldpc译码器的整体框架图;

图2是本发明信道似然比乒乓存储模块的工作原理图;

图3是本发明的置信度消息存储分配示意图;

图4是本发明的校验节点更新模块处理过程示意图;

图5是本发明的变量节点更新模块处理过程示意图;

其中:n为校验矩阵的列重;

图6是本发明的ldpc译码流程图;

具体实施方式

具体实施方式一:如图1所示,本实施方式所述的一种基于fpga的ldpc译码器,所述ldpc译码器包括包括信道似然比乒乓存储模块、置信度消息存储模块、硬判决信息存储模块、译码结果乒乓缓存模块、校验节点更新模块、变量节点更新模块、硬判决校验模块、控制模块及输出模块;

所述信道似然比乒乓存储模块用于接收、并存储输入到译码器的信道对数似然比信息,并将信道对数似然比信息提供给所述变量节点更新模块;

所述置信度消息存储模块用于存储校验节点更新模块与变量节点更新模块计算得到的的置信度消息;

所述校验节点更新模块用于完成校验节点到变量节点置信度消息的计算,并将置信度消息存储到置信度消息存储模块;

所述变量节点更新模块用于完成变量节点到校验节点置信度消息的计算,并将置信度消息存储到置信度消息存储模块;并进行变量节点似后验概率的计算,并根据变量节点似后验概率进行硬判决,输出硬判决信息和译码结果;

所述硬判决信息存储模块用来接收、并存储变量节点更新模块每次迭代输出的硬判决信息;

所述硬判决校验模块用于读取硬判决信息存储模块输出的的硬判决信息并进行校验;

所述控制模块用于控制整个软判决迭代译码有序进行;

所述译码结果乒乓缓存模块用来接收、并存储译码结果;

所述输出模块与译码结果乒乓缓存模块连接,用于输出译码结果。

所述信道似然比乒乓存储模块利用乒乓存储对结构,将存储对的一侧用来完成串行数据输入,另一侧用来完成高并行度的译码数据交换。该模块包括16对位宽为p×8,深度为511/p的ram_data1’~ram_data16’(data1’~data16’分别代表第1对到第16对ram)。如图2所示,每p个消息按顺序存入一个内存地址中。这种存储方式可以保证垂直更新时可同时读入p×16个似然比信息,提高了ldpc译码主体部分的并行度和译码器的吞吐率。

如图3所示,置信度消息存储模块采用一种新的循环存储方式来规避地址冲突,对于内存中置信度信息没有存满的最后一个地址,在其中填充首个地址的前几位数据,避免了最恶劣的地址冲突情况,节省了硬件开销。

由于变量节点与校验节点每次处理的数据量是相同的,因此在读取最后一个地址中数据之前或之后,选择前一地址和后一地址中数据的位置是固定的,仅在读完最后一个地址中数据之后有所不同。该循环存储方法可以极大的简化选择器的电路,而不需要大量的判断过程。每次读取到的数据与上一次读取的数据拼接,读取的数据仅经过一个延时器,选取其中的连续p位输出。这个过程仅需控制输出窗口的位置即可,而输出窗口的位置在每次迭代过程中仅改变一次。

如图4所示,在控制模块的控制下,校验节点更新模块读取置信度消息存储模块中对应的置信度消息并通过计算校验节点到相邻变量节点的置信度消息来进行校验节点的更新,然后将当前次迭代得到的校验节点到相邻变量节点的置信度消息存储到置信度消息存储模块;

校验节点更新模块由2×p个校验节点处理单元构成,每次工作能同时处理p行置信消息。其工作过程如下:首先,按顺序读出置信度消息存储模块中的信息,由于置信度消息在存储器中是按行的排序从小到大存储,因此地址只需依次自加即可。然后,将读取的置信度消息求绝对值,将绝对值送入比较器网;最后加入符号位,得到变量节点传递给每个相邻变量节点的置信度消息,将信息按原地址写回置信度消息存储单元中。

在控制模块的控制下,所述变量节点处理模块从置信度消息存储模块与信道似然比乒乓存储模块中分别读取对应地址的数据,并通过计算变量节点到相邻校验节点的置信度消息来进行变量节点的更新,然后将当前次迭代得到的变量节点到相邻校验节点的置信度消息存储到置信度消息存储模块;

同时,该模块计算变量节点的似后验概率用以进行硬判决,再将当前次迭代过程中得到的硬判决结果输出至硬判决信息存储模块。此外,最后还将译码结果输出至译码结果乒乓缓存模块。

变量节点更新模块由16×p个变量节点处理单元构成,也是p路并行。变量节点处理模块的工作过程如下所述。首先,读取对应地址的数据,将数据送入选择网络;然后,计算每一个变量节点向校验节点传递的置信度消息,其传递的置信消息为该列非自身的所有校验节点置信度信息与该列对应的信道似然比之和。每一个变量节点处理单元处理过程的示意图都可以用图5表示。

硬判决校验模块为p路并行,每次判决p行硬判决信息。若所有的行都满足校验式,则输出校验成功信号送给控制模块,控制模块将终止迭代,并输出译码结果。否则,继续迭代直到达到最大迭代次数。

具体实施方式二:本实施方式与具体实施方式一不同的是:所述信道似然比乒乓存储模块为乒乓存储对结构。

具体实施方式三:本实施方式与具体实施方式二不同的是:所述信道似然比乒乓存储模块包括16对位宽为p×8,深度为511/p的ram,p为置信度消息存储模块每个地址的数据位数。

具体实施方式四:本实施方式与具体实施方式三不同的是:所述置信度消息存储模块包括64个位宽为p×8,深度为511/p的ram。

具体实施方式五:如图6所示,本实施方式所述一种基于fpga的ldpc译码器的译码方法,该方法通过以下步骤实现:

步骤一、初始化译码器:信道似然比乒乓存储模块接收、并存储输入到译码器的信道对数似然比信息,将置信度消息存储模块内的信息初始化为输入到译码器的信道对数似然比信息;

步骤二、校验节点更新模块利用置信度消息存储模块内的信息计算校验节点到变量节点置信度消息,并将计算出的置信度消息存储到置信度消息存储模块;

步骤三、变量节点更新模块利用置信度消息存储模块内的校验节点到变量节点的置信度信息和信道似然比乒乓存储模块内存储的信道对数似然比信息计算变量节点到校验节点置信度消息和似后验概率,并将计算出的变量节点到校验节点置信度消息存储到置信度消息存储模块,通过似后验概率进行硬判决,将硬判决信息输出给硬判决信息存储模块;

步骤四、硬判决信息存储模块存储硬判决信息,并将硬判决信息输出给硬判决校验模块,若硬判决校验模块的检验结果为c×ht=0,h为校验矩阵,c为硬判决信息,则变量节点更新模块输出译码结果给译码结果乒乓缓存模块,译码结果乒乓缓存模块存储译码结果,并将译码结果输出给输出模块,输出模块输出译码结果;

若硬判决校验模块的检验结果为c×ht≠0,则返回步骤二;

直至硬判决校验模块的检验结果为c×ht=0或达到最大迭代次数,则变量节点更新模块将本次迭代译码结果输出给译码结果乒乓缓存模块,译码结果乒乓缓存模块存储译码结果,并将译码结果输出给输出模块,输出模块输出译码结果。

若在达到最大迭代次数之前,出现检验结果c×ht=0,则将检验结果c×ht=0对应的迭代译码结果输出给译码结果乒乓缓存模块,若在达到最大迭代次数之前一直未出现检验结果c×ht=0,则将最大迭代次数对应的译码结果输出给译码结果乒乓缓存模块。

具体实施方式六:本实施方式与具体实施方式五不同的是:所述信道似然比乒乓存储模块接收、并存储输入到译码器的信道对数似然比信息,其具体过程为:

信道似然比乒乓存储模块的16对ram分为上半部分存储阵列和下半部分存储阵列两个部分,在工作中的某一时刻,输入端将信道对数似然比信息存入上半部分存储阵列中,此时,下半部分存储阵列应为上一帧码字的信道对数似然比信息,信道对数似然比信息以16路并行的方式送入变量节点更新模块以保证译码的正常进行;

当上半部分存储阵列存满,上一帧码字也译码完成之后,输入侧开始将初始信道信息存入下半部分存储阵列,上半部分存储阵列的数据用来进行本次译码。

每对ram中的一个共同组成上半部分存储阵列,每对ram中的另一个共同组成下半部分存储阵列。

具体实施方式七:本实施方式与具体实施方式六不同的是:所述置信度消息存储到置信度消息存储模块,其具体过程为:

采用一种新的循环存储方式来规避地址冲突,对于置信度消息存储模块内存中置信度信息没有存满的最后一个地址,若最后一个地址剩余m位未存满,则将首个地址的前m位数据依次填充在最后一个地址的末位数据后;

避免了最恶劣的地址冲突情况,节省了硬件开销。

对于并行度为p的译码器,变量节点更新模块每次从置信度消息存储模块读取到的数据则与上一次读取的数据拼接,读取的数据仅经过一个延时器,选取其中的连续p位输出。

这个过程仅需控制输出窗口的位置即可,而输出窗口的位置在每次迭代过程中仅改变一次。置信度消息存储模块每个地址的数据位数为p即译码器的并行度为p。

本发明的上述算例仅为详细地说明本发明的计算模型和计算流程,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动,这里无法对所有的实施方式予以穷举,凡是属于本发明的技术方案所引伸出的显而易见的变化或变动仍处于本发明的保护范围之列。

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