LDPC编译码方法及系统与流程

文档序号:20916311发布日期:2020-05-29 13:34阅读:343来源:国知局
LDPC编译码方法及系统与流程

本发明涉及通信领域,尤其是涉及一种ldpc编译码方法及系统。



背景技术:

随着通信技术的不断进步,人们对于无线通信质量的要求也越来越高。例如通过将地面网络和卫星网络融合进行通信以提高通信质量,但是在该场景下卫星信道编码如何应对不断变化的恶劣信道环境是所要面临的主要技术挑战。例如常见的ldpc码面对恶劣的卫星信道条件下采用改变码字码长的方式,或者通过改变译码算法来提高纠错能力,但是一般情况下译码算法采用的是适合硬件运行的算法,轻易改变的成本较高。

对于一般fpga,实现不同码长的ldpc编译码有两种方式。第一种方法是通过加载不同码长ldpc码编译码器对应的比特流实现,这种方式虽然可以节省逻辑资源,但是在加载编译码器的比特流时fpga不能正常工作,会导致短暂的通信中断。第二种方法是在一个工程中同时实现不同码长的ldpc码编译码器,通过选通信号来控制不同码长编译码器的运行。这种方式可以实现不同码长编译码器的快速切换,减少通信中断的时间,但是需要较多的逻辑资源,而且会造成fpga逻辑资源的浪费。



技术实现要素:

本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明提出一种ldpc编译码方法,能够在一定程度上解决当前ldpc编译码重配置过程中产生的通信中断或占用逻辑资源较多的问题。

第一方面,本发明的一个实施例提供了:一种ldpc编译码方法,包括:

构建不同码长对应的可重配置模块,所述可重配置模块包括:ldpc编码可重配置模块或ldpc译码可重配置模块;

创建物理约束区域作为可重配置分区,并为每一个可重配置分区设置一个可重配置模块;

进行每个所述可重配置分区的布线设计;

布线设计完成后,为每个所述可重配置分区创建比特流,在fpga上运行所述比特流进行ldpc编码或ldpc译码。

进一步地,进行布线设计后,运行验证程序判断所有的可重配置模块是否都符合fpga部分可重配置设计规则的约束,验证成功后为每个所述可重配置分区创建比特流。

进一步地,还包括对每个所述可重配置分区上进行配置属性设置,所述配置属性设置包括:配置后重启、配置分区大小调整。

进一步地,构建所述ldpc编码可重配置模块用于执行ldpc编码过程,所述ldpc编码过程具体包括:

将输入的待编码的源数据进行缓存;

对所述源数据进行迭代生成第一校验位;

利用所述第一校验位和所述源数据依次计算得到第二校验位;

将所述源数据、所述第一校验位、所述第二校验位进行拼接,输出作为编码数据。

进一步地,构建所述ldpc译码可重配置模块用于执行ldpc译码过程,所述ldpc译码过程具体包括:

利用输入的编码数据初始化源数据概率存储器;

进行变量节点更新步骤,指从所述源数据概率存储器中读取数据,进行累加计算,将更新后的数据重新写入源数据概率存储器;

进行校验节点更新步骤,指从所述校验节点数据概率存储器中读取校验矩阵数据,与所述源数据概率存储器中数据进行最小值比较,将小的数据写入校验节点数据概率存储器;

判断是否达到预设最大迭代次数,如果没有,则继续运行所述变量节点更新步骤和所述校验节点更新步骤,否则输出所述校验节点数据概率存储器中概率最小值对应的码字。

进一步地,每一种码长对应一种可重配置模块,所述可重配置模块包括:ldpc编码可重配置模块或ldpc译码可重配置模块。

本发明实施例至少具有如下有益效果:在避免重配发生通信中断的同时节省fpga的逻辑资源,提高了卫星信道编码过程的适应性和灵活性。

第二方面,本发明的一个实施例提供了:一种ldpc编译码系统,包括:

构建可重配置单元:用于构建不同码长对应的可重配置模块,所述可重配置模块包括:ldpc编码可重配置模块或ldpc译码可重配置模块;

创建可重配置分区单元:用于创建物理约束区域作为可重配置分区,并为每一个可重配置分区设置一个可重配置模块;

布线设计单元:用于进行每个所述可重配置分区的布线设计;

运行单元:用于布线设计完成后,为每个所述可重配置分区创建比特流,在fpga上运行所述比特流进行ldpc编码或ldpc译码。

第三方面,本发明的一个实施例提供了:一种ldpc编译码设备,包括:

至少一个处理器,以及与所述至少一个处理器通信连接的存储器;

其中,所述处理器通过调用所述存储器中存储的计算机程序,用于执行如第一方面任一项所述的方法。

第四方面,本发明的一个实施例提供了:一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如第一方面任一项所述的方法。

本发明的有益效果是:

本发明通过构建不同码长对应的可重配置模块,其中,可重配置模块包括:ldpc编码可重配置模块或ldpc译码可重配置模块;然后创建物理约束区域作为可重配置分区,并为每一个可重配置分区设置一个可重配置模块,再进行每个可重配置分区的布线设计,布线设计完成后,为每个可重配置分区创建比特流,在fpga上运行比特流进行ldpc编码或ldpc译码。实现了基于可重构fpga的ldpc编译码过程,能够根据不同的通信可靠性需求,在硬件上变换不同的ldpc编码码长,利用fpga的部分可重配功能实现不同码长的ldpc编译码功能,在避免重配发生通信中断的同时节省fpga的逻辑资源,提高了卫星信道编码过程的适应性和灵活性。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1是本发明实施例中种ldpc编译码方法的一具体实施例流程示意图;

图2是本发明实施例中种ldpc编译码方法的一具体实施例ldpc译码过程硬件连接示意图。

图3是本发明实施例中种ldpc编译码系统的一具体实施例结构框图。

具体实施方式

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。

附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。

实施例一:

本发明实施例一提供一种ldpc编译码方法。用于在一定程度上解决当前ldpc编译码重配置过程中产生的通信中断或占用逻辑资源较多的问题,利用fpga的部分可重配功能实现不同码长的ldpc编译码功能,在避免重配发生通信中断的同时节省fpga的逻辑资源。ldpc码是一种具有稀疏校验矩阵的分组纠错码,几乎适用于所有的信道,它的性能逼近香农限,且描述和实现简单,易于进行理论分析和研究,译码过程简单且可实行并行操作,适合硬件实现。

图1为本发明实施例提供的一种ldpc编译码方法的流程示意图,如图1所示,该方法包括以下步骤:

s1:构建不同码长对应的可重配置模块。

本实施例中可重配置模块包括:ldpc编码可重配置模块或ldpc译码可重配置模块,用于实现ldpc编码功能和ldpc译码功能。并且编码过程或译码过程中,一种码长均对应一种可重配置模块。

s2:创建物理约束区域作为可重配置分区,并为每一个可重配置分区设置一个可重配置模块,物理约束区域可选的例如物流约束块状区域(pblock),利用创建的pblock块状区域来表示可重配置分区。pblock的大小限定了该逻辑单元所能使用的fpga资源,pblock中所包含的fpga资源类型限定了该逻辑单元所能使用的资源,同时pblock的位置限定了该逻辑单元在fpga中的位置。

s3:进行每个可重配置分区的布线设计。

进行布线设计时,需要对每个可重配置分区上进行配置属性设置,配置属性设置包括:配置后重启、配置分区大小调整。例如通过fpga部分可重配置的基本属性中的hd.reconfigurable属性来配置。

本实施例中,布线时可重配置分区以外的模块称为静态模块,即不发生更改的模块,为了实现完成的设计,需要同时进行静态模块和每个可重配置分区中的可重配置模块。

布线时为完整布线设计保存设计检查点,由于本实施例的可重配置设计,需要在生成的布局布线中指示哪些布局布线是固定的,以及哪些布局布线是需要重新配置的,可以通过静态设计检查点对固定的布局布线进行指示。

首先删除需要更改的可重配置模块,只保留静态设计检查点,然后锁定静态模块的放置和布线,逐一假如更改后的可重配置模块到静态模块的逻辑设计中以实现新的配置,重复多次,直到实现所有的可重配置模块,保存完整的布线设计。

s4:布线设计完成后,为每个可重配置分区创建比特流,在fpga上运行比特流进行ldpc编码或ldpc译码。

本实施例进行布线设计后,运行验证程序判断所有的可重配置模块是否都符合fpga部分可重配置设计规则。例如可采用现有的pr_verify验证函数进行验证,该函数是赛灵思的vivado开发套件中的一个程序验证功能,用途是确保可重配置分区中的布线设计没有违反fpga部分可重配置设计规则的约束。验证成功后为每个可重配置分区创建比特流,将生成的多个配置比特流通过硬件管理模块烧录进fpga进行ldpc编码或ldpc译码。

具体的步骤s1中,构建ldpc编码可重配置模块用于执行ldpc编码过程,ldpc编码过程具体包括:

s111:将输入的待编码的源数据进行缓存,例如通过n个时钟周期将待编码的源数据存入寄存器中,n的大小可根据该场景下需要的ldpc编码长度进行设置。

s112:对源数据进行迭代生成第一校验位,例如第一校验位即p1校验位,利用ldpc专双对角线结构的编码特点,依次迭代方式生成各个p1校验位。

s113:利用第一校验位(即p1校验位)和源数据依次计算得到第二校验位,例如第二校验位为p2校验位,根据p1校验位构成的校验矩阵的特点,将矩阵乘分解为乘积、求和运算,依次求出p2的各校验位。

s114:将源数据、第一校验位、第二校验位进行拼接,输出作为编码数据。

s115:重置各相关寄存器为初始状态,返回步骤s111继续进行编码,直至为不同码长的ldpc编码器生成ldpc编码可重配置模块,一种码长对应一种ldpc编码可重配置模块。

步骤s1中,构建ldpc译码可重配置模块用于执行ldpc译码过程,ldpc译码过程具体包括:

s121:利用输入的编码数据初始化源数据概率存储器ram1和校验节点数据概率存储器ram2;

s122:进行变量节点更新步骤,指从源数据概率存储器ram1中读取数据,进行累加计算,将更新后的数据重新写入源数据概率存储器ram1;

s123:进行校验节点更新步骤,指从校验节点数据概率存储器ram2中读取校验矩阵数据,与源数据概率存储器ram1中数据进行最小值比较,将小的数据写入校验节点数据概率存储器ram2;

s124:判断是否达到预设最大迭代次数,如果没有,则继续运行变量节点更新步骤(即步骤s122)和校验节点更新步骤(步骤s123),否则输出校验节点数据概率存储器中概率最小值对应的码字,即将概率最小值对应的源数据概率存储器ram1中0或者1作为输出码字,其中,预设最大迭代次数一般根据经验值取值,即一般达到这个迭代次数之后,概率值会趋于收敛。

s125:初始化各相关寄存器,准备进行下一次译码,直至为不同码长的ldpc译码器生成ldpc译码可重配置模块,一种码长对应一种ldpc译码可重配置模块。

本实施例的一种具体实施方式中,步骤s111~步骤s115在fpga硬件上进行操作的过程描述如下所述。

首先假设待编码的源数据为s=[s1s2s3…sk],其中源数据中每个数据表示为:

si=[s((i-1)z+1)s((i-1)z+2)…s(iz)],i=1,2,…,k,假设校验比特的长度为m×z,令校验比特为:p=[p1p2…pm],其中每个校验位表示为:pi=[p((i-1)z+1)p((i-1)z+2)…p(iz)]i=1,2,…,k,则整个编码后的比特长度为(k+m)×z,根据分块矩阵的特点,在编码时将校验位分为两部分,即上述的p1校验位和p2校验位。

根据hct=0,则有:

能够得出:

hast+hbp1t=0(2)

hdst+hep1t+hfp2t=0(3)

即得到hb·p1t=ha·st,由于hb矩阵准双对角线矩阵,以每段长度为z进行分段,能够得到:

将上面的公式每行依次相加,得到p1=[p1,p2,p3,p4]:

对[sp1]的直接矩阵乘法就可以求得p2的元素值。

进行拼接后得到编码数据,表示为[sp1p2]。

如上述p1校验位p1、p2、p3、p4的共同计算式利用10个1×z矩阵与z×1矩阵运算基本结构,首先求出运算结果中的第一个值,接着不断更新10个1×z矩阵的元素值,进而求出运算结果中的其他值,然后依次迭代计算出p1、p2、p3和p4的值,它们的运算步骤和结构适用于不同的码长。p2校验位由基本矩阵通过循环移位子矩阵生成,只选取校验矩阵包含的每个子矩阵的第一行元素存储在rom中,其他元素通过移位运算得到。当编码不同码长的ldpc编码时,只需改变不同深度的rom即可。

如图2所示,为本实施例的ldpc译码过程硬件连接示意图,将编码数据输入到输入信息处理模块,利用其初始化源数据概率存储器ram1,读取源数据概率存储器ram1的数据进行累加计算,将更新后的数据重新写入源数据概率存储器ram1(即存储累加的最终值),同时从校验节点数据概率存储器ram2中读取校验矩阵数据,与源数据概率存储器ram1中数据进行最小值比较,将小的数据写入校验节点数据概率存储器ram2。判断是否达到预设最大迭代次数,如果没有,则继续运行变量节点更新步骤和校验节点更新步骤,否则输出校验节点数据概率存储器ram2中概率最小值对应的码字(该码字位于ram1中)。图中rom1~rom3用于存储校验矩阵子矩阵的第一行元素。通过控制模块分别控制输入信息处理模块、校验节点处理模块、变量节点处理模块。在每一次译码迭代运算中,通过控制器控制校验结点处理模块按照校验节点顺序遍历计算所有源数据概率存储器ram1和所有校验节点数据概率存储器ram2,并根据变量结点处理模块和校验结点处理模块更新源数据概率存储器ram1和校验节点数据概率存储器ram2中的迭代信息。进一步地,通过采用状态机来兼容不同码长下的概率值大小比较器从而实现校验节点的可重构,同样利用状态机来兼容累加不同数量概率值的累加器来实现变量节点的可重构。

本实施例能够根据不同的通信可靠性需求,在硬件上变换不同的ldpc编码码长与译码,相比于当前卫星信道编码的硬件解决方案更具有高适应性和灵活性,能够适用于未来5g通信场景。

实施例二:

本实施例提供一种ldpc编译码系统,用于执行如实施例一所述的方法,如图3所示,为本实施例的一种ldpc编译码系统结构框图,包括:

构建可重配置单元100:用于构建不同码长对应的可重配置模块,可重配置模块包括:ldpc编码可重配置模块或ldpc译码可重配置模块;

创建可重配置分区单元200:用于创建物理约束区域作为可重配置分区,并为每一个可重配置分区设置一个可重配置模块;

布线设计单元300:用于进行每个可重配置分区的布线设计;

运行单元400:用于布线设计完成后,为每个可重配置分区创建比特流,在fpga上运行比特流进行ldpc编码或ldpc译码。

上述中ldpc编译码系统各单元的具体细节已经在实施例一对应的ldpc编译码方法中进行了详细的描述,因此此处不再赘述。

另外,本发明还提供ldpc编译码设备,包括:

至少一个处理器,以及与所述至少一个处理器通信连接的存储器;

其中,所述处理器通过调用所述存储器中存储的计算机程序,用于执行如实施例一所述的方法。计算机程序即程序代码,当程序代码在ldpc编译码设备上运行时,程序代码用于使ldpc编译码设备执行本说明书上述实施例一部分描述的ldpc编译码方法中的步骤。

另外,本发明还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,其中计算机可执行指令用于使计算机执行如实施例一所述的方法。

不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括ram、rom、eprom、eeprom、闪存或其他固态存储其技术,cd-rom、dvd或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。

本发明实施例通过构建不同码长对应的可重配置模块,其中,可重配置模块包括:ldpc编码可重配置模块或ldpc译码可重配置模块;然后创建物理约束区域作为可重配置分区,并为每一个可重配置分区设置一个可重配置模块,再进行每个可重配置分区的布线设计,布线设计完成后,为每个可重配置分区创建比特流,在fpga上运行比特流进行ldpc编码或ldpc译码。实现了基于可重构fpga的ldpc编译码过程,能够根据不同的通信可靠性需求,在硬件上变换不同的ldpc编码码长,利用fpga的部分可重配功能实现不同码长的ldpc编译码功能,在避免重配发生通信中断的同时节省fpga的逻辑资源,提高了卫星信道编码过程的适应性和灵活性。

以上各实施例仅用以说明本发明的技术方案,而非对其限制,尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。

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