多核调度的高速并行低密度奇偶校验译码器及其译码方法与流程

文档序号:12789034阅读:196来源:国知局
多核调度的高速并行低密度奇偶校验译码器及其译码方法与流程

本发明属于无线通信技术领域,涉及一种多核调度的高速并行低密度奇偶校验译码器及其译码方法。



背景技术:

随着经济的高速发展,无论是民用领域还是军事领域,都对高分辨率、高精度提出了更高的要求,而成熟稳定的高分(即高分辨率)系统对于国家军事安全以及诸多民用领域都是重要的支撑。在高分领域,美国最先研制出高分辨率观测卫星,使其该项技术处于世界领先地位,并且由于空间资源有限以及大数据时代下数据非同寻常的重要性,使得高分技术领先的国家不愿意共享资源,因此自主进行高分研发刻不容缓。

随着高分专项(即高分辨率对地观测系统重大专项)的逐渐推进,各类航天器探测器等数量迅速增加,探测信息的数据率越来越高,产生的数据量空前庞大,加上近些年来数据采集技术发展迅速,数字图像处理技术日趋成熟,为了获得更加全面的数据分析要求接收机能够接收并处理更加庞大的数据量。目前300Mbps的卫星高速数据传输系统已经获得了广泛的应用,传输速率已经要求达到3Gbps以上,未来还将继续提高到10Gbps甚至30Gbps。因此,能够适应高速数传要求的传输系统是高分专项发展的重要支撑。然而数据传输速率与系统功率存在正比例关系,速率增加必然会导致系统功率的提高,并且系统资源本身严格受限,因此如何在有限资源下处理更高速率的数据成为了高速数传系统的重要问题。

低密度奇偶校验(LDPC)码由于其非常接近理论极限编码增益的码字构造方式越来越受到人们的重视。其译码复杂度低,可并行译码并且译码是否有误便于检测,无论是高速数据传输还是高编码增益的要求都能够满足,目前在高速卫星数据传输系统中有着越来越广泛的应用。一般情况下,单个译码核译码能力有限,如果需要实现能够与高速数传相匹配的高速译码,通常需要多个译码核并行工作。如图1所示,为传统的高速LDPC译码器,包括依次相连的数据缓存模块、多核调度模块,以及由多个译码核组成的LDPC并行译码核;其中每个译码核由依次相连的输入数据缓存模块、软信息存储模块、变量节点阵列模块、控制模块,及分别与控制模块相连的校验节点阵列模块、变量节点存储模块、校验节点存储模块,与变量节点阵列模块依次相连的译码结果存储模块和输出缓存模块。各模块均通过一块FPGA芯片实现。

该传统高速LDPC译码器的译码方法为:待译码数据首先进入数据缓存模块(由FPGA芯片内的FIFO构成),根据多核调度模块发出的指令,将数据并行送入各个LDPC并行译码核中进行译码。虚线框中为并行译码核,每个译码核工作方式相同,即单个码字首先进入输入数据缓存模块进行缓存,其作用是为后级模块提供与译码核工作时钟同频率的单个码字信息,而后待译信息进入软信息存储模块,根据控制模块设定的固定迭代次数(记为N次)及译码周期,将软信息从存储模块中读出,并循环通过变量节点阵列模块和校验节点阵列模块,达到迭代次数后输出至译码结果存储模块以及输出缓存模块,输出缓存模块的作用是按照需求将译码结果以某种时钟占空比输出至后级模块。多核调度模块根据每个译码核的编号将数据拼接后经由数据缓存模块后直接输出。可以看出,传统的高速LDPC译码器通常采用多核并行方法实现,该方法对单核译码器进行简单复制,前端连接传统多核调度模块以及数据缓存模块对整个系统进行控制。

然而传统的高速LDPC译码器能够进行正确译码不仅与各并行译码器正常工作有关,多核调度模块的调度作用更加关键。传统的多核调度模块主要负责码字的顺序分配,即待译信息缓存到数据缓存模块中并且达到一个码字长度的存储深度后,多核调度模块按照规定的单个码字长度,将待译码字从数据缓存模块中依次读出,并将其按照译码核的编号顺序依次赋给每个译码核。由于并行译码核中控制模块设置的译码迭代次数N固定,多核调度模块只需进行固定时间的等待之后,即可得到各译码核译码后的数据,再按照译码核的编号将数据进行拼接处理并输出即可。随后多核调度模块按照读取、分配、拼接的步骤继续将待译码字顺序分配给各译码核,等待后输出译码数据,不断重复该过程直至所有待译码字完成译码或接收到停止信号。由于传统高速LDPC译码器中多核调度模块功能简单且时序固定,因此该多核调度模块可直接使用计数器来完成。

传统多核调度模块工作流程如图2所示,以四核并行译码器为例。在设置了固定的最大迭代次数之后,多核调度模块等待输入数据缓存模块的数据达到一个码字后开始工作。其将输入数据缓存模块的数据以一个码字长度为单位进行读出,按照顺序分别送给译码核1、译码核2、译码核3以及译码核4,每个译码核一直工作,多核调度模块在译码期间进行等待,直到所有译码核达到最大迭代次数,将译码后数据按照译码核1、译码核2、译码核3、译码核4的顺序重新组合并输出。多核调度模块再继续执行上述分配工作直至系统停止。由于四个译码核均在达到最大迭代次数后停止译码,因此这四个译码核工作进度保持一致,在每个译码周期内能够完成且仅能完成四个码字的译码工作。

该方法实现难度低,但是在此过程中,传统的并行译码仅仅将单个译码核进行简单复制,将待译码字依次送入每个译码核进行译码,由于通常情况下,每个译码核均按照仿真情况,提前设置好固定的迭代次数以保证规定要求下的误码率,因此各译码核也保持同步的工作状态,码字分配容易实现。但是实际译码过程中,每个译码核译码时均需要执行固定的迭代次数,并不是每个码字均需要进行最大迭代次数才能译码成功,大部分码字在小于迭代次数时已经完成译码,对于已经成功译码的码字,继续进行迭代不会带来性能上的提高,反而降低了译码效率,造成了资源的浪费。

这些对于高速译码器而言是非常关键的问题。

由此可见,传统并行译码器由于其固定的迭代次数造成整体译码效率不够高,在资源有限的情况下造成硬件资源的浪费。目前亟需能够根据实际译码完成情况对迭代次数进行控制,并且可以整体调度整个译码器的新型多核调度模块,以更加充分利用有限资源,提高整体译码效率。



技术实现要素:

本发明的目的是为了解决传统有限资源下高速LDPC译码器,存在的硬件资源未充分利用的问题,提出一种新型的多核调度高速并行低密度奇偶校验(LDPC)译码器及其译码方法,能够通过新型多核调度模块控制译码核进行非固定次数的迭代,从而有效地提高译码效率,并使硬件资源更充分地利用。

本发明提出的一种多核调度的高速并行低密度奇偶校验译码器,该译码器采用一块FPGA芯片实现,包括依次相连的数据缓存模块、多核调度模块,以及由多个译码核组成的LDPC并行译码核;其特征在于:所述数据缓存模块由FPGA内部的FIFO构成,该FIFO具有更深的存储深度,以保证下一个码字到来时,能有足够缓存空间;所述多核调度模块用于控制整个高速LDPC译码器的调度,当上级数据缓存模块存入多于一个码字的数据量,即向后级并行译码核发出译码起始信号,将缓存数据调配至各译码核译码,同时接收后级并行译码核反馈的译码结束信号,检验各译码核是否处于空闲状态,将前级数据缓存模块中下一个待译码字送入空闲状态的译码核进行译码;译码结束后根据码字分配顺序,并按照相同顺序将各译码核的译码结果统一输出至数据缓存模块;所述的LDPC并行译码核中的每个译码核由依次相连的软信息存储模块、变量节点阵列模块、控制模块,及分别与控制模块相连的校验节点阵列模块、变量节点存储模块、校验节点存储模块,与变量节点阵列模块相连的译码结果存储模块;所述变量节点阵列模块还与校验节点存储模块、变量节点存储模块相连。

本发明提出的一种如上述的多核调度的高速并行低密度奇偶校验译码器的译码方法,其特征在于:

待译码字流首先进入数据缓存模块,由多核调度模块根据后端并行译码核的工作状况,将单个码字长度的待译码字分配给完成译码的处于空闲状态的译码核,而每个译码核的在接收到待译码字后,首先将其放入软信息存储模块,循环通过变量节点阵列模块以及校验节点阵列模块进行译码,每次译码结果均存储于译码结果存储模块中,由多核调度模块检验该译码核是否已经译码完成,若符合译码结果校验,则输出译码结果至多核调度模块,该译码核转为空闲状态;否则该译码核继续进行迭代译码,直至达到设定的最大迭代次数,若此时还未正确译码,则强制停止该译码核对当前码字的译码,输出译码结果并反馈译码失败信息;多核调度模块再将下一个待译码字送入空闲译码核进行译码;译码结束后多核调度模块根据码字分配顺序,并按照相同顺序将各译码核的译码结果统一输出至数据缓存模块,数据缓存模块将译码数据输出。

本发明的技术特点及有益效果:

1)本发明的数据缓存模块增加了存储深度,以保证下一个码字到来时,能有足够缓存空间,直到某个译码核完成上一码字的译码后,将新码字赋给该译码核;

2)多核调度模块控制整个高速LDPC译码器的调度,通过多核调度模块控制译码核进行非固定次数的迭代,从而有效地提高译码效率。

3)由于多核调度模块前端有数据缓存模块,用于缓存待译码数据,同时存在多核调度模块的码字调度和控制,因此单个译码核内省略了输入、输出FIFO,以节省硬件资源。

本发明通过非常小的硬件开销,大幅降低了传统方法的运算量,并且显著提高了系统整体的效率并节约了整体的硬件资源。

附图说明

图1是传统多核并行LDPC译码器结构框图。

图2是传统多核调度模块工作示意图。

图3是本发明的多核调度的高速LDPC译码器结构框图。

图4是本发明实施例的最大迭代次数分布情况。

图5是本发明实施例的迭代次数与译码性能的关系。

图6是本发明实施例的迭代次数与节省运算量的关系。

图7是本发明实施例的输入FIFO深度增加量。

具体实施方式

下面结合附图对本发明作进一步的详细描述。

本发明提出的一种多核调度的高速LDPC译码器,如图2所示,包括依次相连的数据缓存模块、多核调度模块,以及由多个译码核组成的LDPC并行译码核,可与传统LDPC译码器相同采用一块FPGA芯片实现;这种多核调度的高速LDPC译码器与传统译码器的区别特征在于:

1)数据缓存模块由FPGA内部的FIFO构成,该FIFO比传统LDPC译码器数据缓存模块中的FIFO具有更深的存储深度,以便能够缓存更多的码字序列信息,保证下一个码字到来时,能有足够缓存空间,待某个译码核完成上一码字的译码后,将新码字赋给该译码核;

2)多核调度模块用于控制整个高速LDPC译码器的调度,当上级数据缓存模块存入多于一个码字的数据量,即向后级并行译码核发出译码起始信号,将缓存数据调配至各译码核译码,同时接收后级并行译码核反馈的译码结束信号,检验各译码核是否处于空闲状态,将前级数据缓存模块中下一个待译码字送入空闲状态的译码核进行译码;译码结束后根据码字分配顺序,并按照相同顺序将各译码核的译码结果统一输出至数据缓存模块;

3)LDPC并行译码核中的每个译码核由依次相连的软信息存储模块、变量节点阵列模块、控制模块,及分别与控制模块相连的校验节点阵列模块、变量节点存储模块、校验节点存储模块,与变量节点阵列模块相连的译码结果存储模块;所述变量节点阵列模块还与校验节点存储模块、变量节点存储模块相连。其中控制模块不再对全部并行译码核设置固定迭代次数,仅设置最大迭代次数(最大迭代次数的设定比传统控制模块设定的固定迭代次数N稍大即可)。并控制每次迭代的译码周期,即按照顺序将软信息依次代入变量节点阵列模块与校验节点阵列模块中进行运算。由于数据缓存模块用于缓存待译码数据,并且存储深度增加,同时存在多核调度模块的码字调度和控制,因此本发明的LDPC并行译码核省略了传统LDPC译码器每个译码核内的用于为后级模块提供与译码核工作时钟同频率的单个码字信息的输入数据缓存模块及用于按照需求将译码结果以某种时钟占空比输出至后级模块的输出数据缓存模块,以节省硬件资源。

本发明设置FIFO的深度增加量(与传统LDPC译码器数据缓存模块中FIFO相比更深)具体说明如下:若共需译M个码字,其中a个码字在迭代N次之后正确译码,b个码字在迭代N+1次后正确译码,c个码字在迭代N+2次后正确译码,则该M个码字的所需的平均迭代次数N′可以根据b与c的概率计算得到,根据此平均迭代次数即可计算出FIFO需要增加的比特深度存储量。以此类推,根据不同数量的码字需要不同数量的大于N的迭代次数,使用该方法即可得出多核调度的高速LDPC译码器中数据缓存模块中FIFO深度的增加量。

本发明提出的多核调度的高速LDPC译码器的译码方法为:待译码字流首先进入数据缓存模块,由多核调度模块根据后端并行译码核的工作状况,将单个码字长度的待译码字分配给完成译码的处于空闲状态的译码核,而每个译码核的在接收到待译码字后,首先将其放入软信息存储模块,在未达到最大迭代次数前,循环通过变量节点阵列模块以及校验节点阵列模块进行译码,每次译码结果均存储于译码结果存储模块中,由多核调度模块检验该译码核是否已经译码完成,若符合译码结果校验,则输出译码结果至多核调度模块,该译码核转为空闲状态;否则该译码核继续进行迭代译码,直至达到设定的最大迭代次数,若此时还未正确译码,则强制停止该译码核对当前码字的译码,输出译码结果并反馈译码失败信息;多核调度模块再将下一个待译码字送入空闲译码核进行译码;译码结束后多核调度模块根据码字分配顺序,并按照相同顺序将各译码核的译码结果统一输出至数据缓存模块,数据缓存模块将译码数据输出。

本发明的核心是多核调度模块对系统整体的综合控制调度,而多核调度模块的工作信号取决于各并行译码核是否完成译码,也即非固定迭代次数译码机制。该机制表现在多核调度模块若检测到某译码核译码后码字符合校验关系,则该译码核立即停止迭代成为空闲译码核,等待调度模块分配新码字。译码结果校验为将每个与校验节点j有链接关系的变量节点i的输出外信息的正负值进行异或运算,并将异或运算的结果作为校验结果,如下式所示:

其中i为与校验节点j相连的变量节点,其数量为qij表示与校验节点j有连结关系的变量节点i的输出外信息,check为校验的输出结果,sgn()为符号函数即返回输出外信息的正负值、0为正1为负,为异或运算;check=0说明满足校验关系;如果所有的校验节点均满足check=0的校验关系,则说明该码字已经译码正确,或者该码字被译成了码字空间中的另外一个码字;以上两种情况均表示着译码已经完成,继续迭代也对译码结果产生不了作用,因此此时就应当停止当前码字的迭代,该译码核为空闲状态并可开始新码字的译码。

本发明针对传统多核调度无法充分利用译码周期的问题,对传统的调度方法做出了改进,本发明的多核调度模块将待分配码字分配的具体方法如下:设LDPC并行译码核为m个,当输入FIFO内存储量达到一个码字后多核调度模块开始工作,多核调度模块首先按照各译码核编号由小到大的顺序进行码字初次分配,分别将前m个码字送往m个译码核进行译码;初次分配后,多核调度模块一直处于待机检测状态,当多核调度模块要进行后续的每个码字的分配时,根据译码核反馈回来的结果判断出哪个译码核处于空闲状态,记录下该译码核的编号并将其完成译码的码字暂存,同时从前端数据缓存模块中读出一个待译码字,分配给该当前处于空闲状态的译码核进行译码,之后继续进入待机检测状态,等待下一个译码核完成译码;则依次将后续码字分别调度到处于空闲状态的译码核进行译码(而不必等待m个译码核全部完成译码后再进行新一轮的码字分配,充分利用了各译码核的译码时间)。如果多个译码核同时完成译码,则按照译码核的编号从小到大的顺序进行待译码字的分配。

下面给出本发明的实施例的应用效果:

以码长为12288比特,信息位长度10240比特的LDPC码为例,译码过程无最大迭代次数,停止译码的条件为译码正确。

如图4所示为每个码字正确译码执行的迭代次数,横坐标为每个码字的序号,纵坐标为该码字正确译码时执行的迭代次数。图中最大迭代次数为29次,最小迭代词素为12次,完成译码的迭代次数在16次处十分密集,并且仅有0.2%的码字需要进行最大次数的迭代。传统并行译码器中,为了满足译码要求且控制过程简单,通每个常需要设置最大迭代次数,每个译码周期均按照最大迭代次数进行设置。对于本实施例而言,最大迭代次数设置为29次,那么实际上仅有0.2%的码字需要迭代29次,而99.8%的码字并不需要达到最大迭代次数,因此造成了迭代次数的浪费,进而造成硬件资源的浪费。

如图5所示为迭代次数与译码性能关系图,横坐标为最大迭代次数,纵坐标为该最大迭代次数下译码结果的误码率。当信噪比合适时迭代次数的增加对于BER的降低有明显的作用,并且每增加两次次迭代,BER大约降低一个量级。因此采用非固定迭代次数的新型多核调度并行译码方式,将译码所需迭代次数少的码字节省下的时间分配给需要更多次迭代的才能正确译码的码字,相当于增加了整体的有效迭代次数,且降低了平均迭代次数。从译码运算量角度看,平均迭代次数与译码器工作时钟正相关,即平均迭代次数少,译码器工作时钟低,而低时钟速率有助于提高硬件电路的稳定性,并且在相同译码处理速率下,带来运算量的降低。如图6所示为最大迭代次数与节省运算量之间的关系,横坐标为最大迭代次数,纵坐标为节省运算量的百分比。在本例情况下,平均迭代次数从29次降为16次,运算量减少了46.7%,一方面硬件资源相比于传统方法利用更充分,另一方面运算量大幅降低,因此在达到相同指标的前提下,本发明显著提高了系统整体效率并节约了硬件资源。

新型多核调度大幅提高了译码核部分的利用率,同时也引入了额外的两种开销,其一为校验节点增加的校验关系检验模块,其二为输入FIFO的深度增加。检验模块的本质是所有输入外信息符号位的异或运算,在硬件上表现为少许LUT资源。

在传统模式中最大迭代次数N的设置往往根据实际数据率、译码性能指标以及硬件支持的译码速率进行设定,而新型多核调度方式所需增加的FIFO深度在N的基础上进行计算。假设共需译10个码字,其中9个码字在迭代N次之后正确译码,1个码字在迭代N+1次后正确译码,则FIFO需要加深比特数深度的概率即为这1个码字出现的概率;若8个码字在迭代N次之后正确译码,1个码字在迭代N+1次后正确译码,1个码字在迭代N+2次后正确译码,则FIFO需要加深比特数深度的概率即为出现迭代N+1次与N+2次各一次的概率。由于需要大于N次迭代的码字出现的时间不同,对FIFO深度影响也不同,因此该概率的计算还需要将码字出现的顺序考虑其中。图7所示为每一个码字译码后计算得到的FIFO深度增加比特量,横坐标为待译码字的序号,纵坐标为当前FIFO缓存的待译比特数。可以看出最大迭代次数从29降至16时,输入FIFO深度只需增加两个码字的长度,但是译码性能得到了巨大的提升,并且图7中缓存的比特数最大不超过两个码字,因此在FIFO深度增加两个码字长度的情况下,整个译码过程中FIFO不会出现写满的情况。而在图6中,如果迭代次数从16次增加为29次,输入FIFO只增加两个码字的深度,误码率从10-4量级降至10-9量级,故FIFO深度的增加量与校验关系检验模块带来的少量LUT使用量同译码性能的改善相比完全可以接受。因此,本发明通过非常小的硬件开销,大幅降低了传统方法的运算量,并且显著提高了系统整体的效率并节约了整体的硬件资源。

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