本发明涉及无线通信编解码领域,尤其涉及一种可重构的LT码译码系统与译码方法。
背景技术:
随着通信技术、无线传感网技术和半导体技术的飞速发展,无线通信技术已经成为新的热门研究点,引起了人们的极大关注。无线通信技术在工业、民用等领域有着广泛的研究和应用,如无线智能家居、无线数据采集、无线设备管理等,无线通信技术的应用范围逐渐增加,并日趋走向成熟。
LT码是第一种实用的喷泉码,编码的基本思想是通过喷泉编码器的有限输入与无限输出的映射特性生成数据包,当接收方收到一定数量的数据包时就可以恢复信息,数字喷泉码最初是在删除信道中提出的,它可以有效的提高数据传输的可靠性。现在,随着数字喷泉码的理论越来越完善,它的商业价值也被更多的人注意到了,因此,在非删除信道当中,数字喷泉码也已经被广泛的使用。喷泉码作为一种性能优异的编码方式,有着广泛的应用前景。在理论研究日趋完善的同时,喷泉码也日渐受到了产业界的关注,获得了越来越多的实际应用。
在编译码算法的研究方面,由于数字喷泉码的核心是度数分布函数,因此现在大量的研究人员基于经典的LT码,将主要精力放在了如何优化度数分布函数,以达到改善数字喷泉码性能的目的。在LT码译码方法中,目前主要有两种译码方案即高斯消去(GE)译码算法和置信传播(Belief Passing,BP)译码算法。高斯消去(GE)译码算法的实质就是求解编码线性方程组的求逆过程,使用高斯消去法进行译码的目标是将编码生成矩阵化为单位阵形式;若译码器能够通过高斯消去法对编码生成矩阵进行消元得到一个满秩的单位矩阵,则译码成功;否则,译码失败。BP算法的实质就是对输入符号进行恢复和对编码矩阵进行处理的反过程,其译码结构简单可行,运算量较少且误码率较高;而GE算法虽然误码率较低但其硬件实现复杂度随着码长的增加而极具增加,呈现平方线性关系。
技术实现要素:
发明目的:针对上述现有技术在实现上所存在的问题与不足,本发明提出了一种可重构的LT码译码系统与译码方法。
技术方案:为实现上述发明目的,本发明中可重构的LT码译码系统,包括:主控模块、度模块、度搜索模块、待译码数据模块、生成矩阵模块、生成矩阵列搜索模块、生成矩阵行搜索模块、译码输出模块;
所述主控模块与其他各模块分别通信连接,用于控制LT码译码系统的状态和工作流程;
所述度搜索模块用于在主控模块发出的度搜索使能信号有效时寻找度模块中度的值等于1所在的存储地址AD;
所述生成矩阵列搜索模块用于在主控模块发出的生成矩阵列搜索使能信号有效时寻找生成矩阵中第AD列数据中值为1的存储地址AG;
所述译码输出模块用于存储译码输出数据,在主控模块发出的数据输出使能信号有效时将其存储地址AG中的译码数据存储为待译码数据模块中存储地址AD中的数据Da;
所述生成矩阵行搜索模块用于在主控模块发出的生成矩阵行搜索使能信号有效时寻找生成矩阵中第AG行数据中值为1的全部存储地址AGk;
所述度模块用于存储每列编码数据的度的值,并在主控模块发出的度更新使能信号有效时将存储地址为AGk中的度值减1;
所述生成矩阵模块用于存储LT码生成矩阵,用于在主控模块发出的生成矩阵更新使能信号有效时将第AG行元素清零;
所述待译码数据模块用于存储不断更新的待译码数据,用于在主控模块发出的待译码数据更新使能有效时将其存储地址AGk中的数据与其存储地址AD中对应的数据Da进行按位异或操作得到新的数据值。
相应地,本发明还提供了一种可重构的LT码译码方法,包括以下步骤:
(1)进行度值等于1的搜索:对所有度值等于1的单元进行搜索,若不存在度值等于1的单元,则译码失败;否则,每搜到一个度值为1的单元则输出其所对应的存储地址AD;
(2)生成矩阵的列搜索:对生成矩阵中第AD列中值等于1的元素进行搜索,获取其对应的存储地址AG和数据Da;
(3)生成矩阵的行搜索:对生成矩阵第AG行中值等于1的元素进行搜索,获取对应的存储地址AGk;
(4)更新:将生成矩阵第AG行中的元素全部清0,将存储地址AGk所对应的度值减1,将存储地址AGk所对应的译码数据与存储地址AD中对应的数据Da进行按位异或操作得到新的数据来更新存储地址AGk所对应的译码数据;
(5)迭代:重复以上步骤(1)至(4),直至译码迭代次数达到信源符号数目,完成译码。
进一步地,步骤(1)中对度值的搜索采用并行搜索方式,具体为:
将编码以长度为2n分成多个分路同时进行搜索;
按照存储地址对每个分路中的元素分别进行搜索,找出每个分路中度值为1的最小存储地址,作为相应分路中度值为1所对应的存储地址;
选择所有分路中度值为1的最小存储地址,作为该次度值搜索的结果。
进一步地,步骤(3)中对生成矩阵第AG行中的元素进行搜索,采用分组搜索方式,具体为:
将生成矩阵第AG行中的元素依次按照长度为s进行等长度分组;
对于任意一分组,将该组中的每一个比特数据同时与相应的比较数据进行位与后再与0比较,确定该分组中元素为1的比特数据所在的组内位置;
利用分组标号最终确定生成矩阵第AG行中元素为1的所有比特数据的存储地址。
有益效果:本发明中的可重构的LT码译码系统与译码方法,先对度值为1的数据进行搜索,然后再对生成矩阵的相应列进行搜索,将度为1的数据先进行译码,然后再对生成矩阵中相应的行进行搜索,并对其进行更新,降低对应的度值,经过反复执行这些过程完成译码,能够有效地减少关键路径延时,方便选择整体LT码译码速度,在硬件实现复杂度和译码速度有很好的灵活性。
附图说明
图1为本发明中可重构的LT码译码方法的流程图;
图2为本发明中可重构的LT码译码系统的结构示意图;
图3为本发明中可重构的LT译码系统中主控模块的结构示意图;
图4为本发明中度1搜索结构示意图;
图5为本发明中生成矩阵列搜索示意图;
图6为本发明中生成矩阵行搜索示意图。
具体实施方式
下面结合实施例对本发明作更进一步的说明。
图1中的可重构的LT码译码方法,依据LT码的BP译码算法的基本原理,包括以下步骤:
(1)进行度值等于1的搜索:对所有度值等于1的单元进行搜索,若不存在度值等于1的单元,则译码失败;否则,每搜到一个度值为1的单元则确定其所对应的生成矩阵中对应的列;
(2)生成矩阵的列搜索:对生成矩阵中该列中值等于1的元素进行搜索,每次搜索有且只有一个值,获取对应的信源符号;
(3)生成矩阵的行搜索:对生成矩阵中步骤(2)中值等于1的元素所在的行中值等于1的元素进行搜索,每次搜索有可能有多个值;
(4)矩阵更新:将生成矩阵中步骤(2)中值等于1的元素所在的行的元素全部清0,将步骤(3)中搜索获取到的元素所对应的度值以及待译码数据中的地址进行更新;
(5)迭代:重复以上步骤(1)至(4),直至译码迭代次数达到信源符号数目,完成译码。
图2中的可重构的LT码译码系统主要包括:主控模块、待译码数据模块、度模块、度搜索模块、生成矩阵模块、生成矩阵列搜索模块、生成矩阵行搜索模块、译码输出模块;主控模块与其他各模块分别通信连接,用于控制LT码译码系统的状态和工作流程;待译码数据模块用于存储不断更新的待译码数据;度模块用于存储每列编码数据的度的值;生成矩阵模块用于存储LT码生成矩阵;度搜索模块用于寻找度搜索模块中度的值等于1所在的位置;生成矩阵列搜索模块用于寻找生成矩阵中某列中值为1的位置;生成矩阵行搜索模块用于寻找生成矩阵中某行中值为1的位置;译码输出模块用于存储译码输出数据。
该系统的工作过程如下:
(1)当译码开始后,度搜索模块首先输出度模块中一个度为1的存储地址AD。
搜索等于1的度需要按照地址顺序进行穷尽搜索,度模块中可能存在多个值等于1的度,但是只要每次搜索到1个等于1的度,度搜索电路便停止搜索。
度搜索模块电路每次只要输出一个度等于1的存储地址,度模块中总共存储N个度的值,记为Di(i=0,1,...,N-1),地址为0~N-1,将度模块中的存储的度的值依次与1做比较,当搜索到度等于1时,输出对应的存储地址AD,搜索终止;若搜索完毕后没有等于1的度则输出N,输出N表示度分布模块中不存在等于1的度,只要搜索到度模块中不存在等于1的度,即无法进行译码,译码工作即刻终止。
(2)生成矩阵列搜索模块输出生成矩阵模块第AD列数据中等于1的存储地址AG。
度搜索电路完成搜索后,根据搜索出的度的值等于1的存储地址AD,生成矩阵中第AD列共有K个元素,元素值为0或1,且只有一个元素的值为1,生成矩阵列搜索模块主要功能就是搜索出元素为1的值的存储地址,每列元素的地址从上到下为0~K-1,将生成矩阵的列按照地址从大到小的顺序每s比特一组,分别和0做比较,若不等于0,输出为该组的分组序号i,将该序号乘以s得到s*i,将对应的分组值Gi右移k(k的可能取值为0~s-1)位后的值等于1时,停止移位保存此时k的值,s*i+k即为列中元素值为1的存储地址AG,搜索即刻终止。
(3)译码输出模块位置为AG的数据等于待译码数据模块中第AD个存储数据Da。
(4)生成矩阵行搜索模块输出生成矩阵模块中第AG行元素等于1的全部存储地址AGk,k=(1,2,...,M)。
生成矩阵列搜索电路完成搜索后,根据生成矩阵列搜索模块的输出地址AG,搜索生成矩阵中第AG行中元素值为1的所有存储地址,生成矩阵每行共有N个元素,元素值为0或1,每行元素中值等于1的数目大于1个,每行元素从左到右地址记为0~N-1。
为了有效降低搜索复杂度,将生成矩阵的行分组进行搜索,实行流水线式可重构操作,将生成矩阵的行按照地址从大到小每s比特分为一组,记为GDk,首先找到每组s比特数据中哪些位的值为1,将此s比特数据和比较数据0..1、0..2、0..4、...、8..0分别按位与后的结果通过比较器和0做比较,再通过数据选择器,若比较后的结果为0,则表示该位不是1,数据选择器输出s,若比较后的结果不为0,表示该位的值是1,输出该位的值ai(i=0~s-1,对于s比特数据共有s位,将该s位从0开始标记,第ai位的值为1时,ai的取值为i),将分组值k乘以s,s*k+ai即可得到元素1的地址。
其中s表示每次搜索元素的个数,可以根据参数配置,其值为8、16、32或者64。其中比较数据0..0,0..1,...,8..0数据位宽为s值的四分之一,比较数据0..1是s比特/4个数据位的16进制表示,其中0、1、2、4、8五个数字对应于16进制的四个比特位。其形式规律或完整表示是0..1,0..2,0..4,0..8;0..10,0..20,0..40,0..80;......;01..0,02..0,04..0,08..0;1..0,2..0,4..0,8..0。例如:若s的值为16,则对应的比较器的个数为16个,每个比较器处的比较数据的数据位为4个,对于每个GDk组的数据从其数据位a0至a15对应的比较数据分别为:0001、0002、0004、0008、0010、0020、0040、0080、0100、0200、0400、0800、1000、2000、4000、8000,将每个GDk组的数据的各数据位同时与各自对应的比较数据按位与后的结果通过比较器和0做比较,再通过数据选择器,若比较后的结果为0,则表示该位不是1,数据选择器输出16;若比较后的结果不为0,表示该位的值是1,输出该位的值ai,当ai≠1时,将分组值k乘以16(右移4位)得16k,16k+ai即可得到元素1的地址。若不等于0,输出为该组的分组序号i,将该序号乘以s得到s*i,将对应的分组值Gi右移k(k的可能取值为0~s-1)位后的值等于1时,停止移位保存此时k的值,s*k+i即为列中元素值为1的存储地址AG,搜索立即终止。
(5)生成矩阵模块中第AG行元素清零,度模块中位置等于AGk,k=(1,2,...,M)的存储地址的数据减1,把待译码数据模块中位置为AGk,k=(1,2,...,M)的数据与待译码数据模块中地址AD对应的数据Da进行按位异或操作得到新的数据值。
(6)通过上述过程每次可以得到一个译码数据符号,在译码时,主控模块中译码迭代次数计数器从0计到K-1,每进行一次上述译码过程迭代次数计数器加一,直至计数到K-1,译码迭代循环结束,完成译码。如果迭代次数计数器值小于K-1,并且度模块中所有元素的值均不等于1,则译码亦终止。
图3为LT译码器主控模块结构示意图,主控模块对各模块的控制流程为:
(1)初始化,主控模块的状态机输出度搜索使能有效信号;
(2)进行度搜索,度搜索完成后,若搜索不到等于1的度,译码结束;否则,度地址输出使能信号有效,度地址AD暂存于主控模块中,生成矩阵列搜索使能信号有效;
(3)进行生成矩阵列搜索,搜索完成后,生成矩阵列地址输出使能信号有效,列地址AG暂存,数据输出使能有效,将译码输出模块存储地址AG中的译码数据存储为待译码数据模块中存储地址AD中的数据Da;
(4)生成矩阵行搜索使能信号有效时,进行生成矩阵行搜索,搜索完成后,行地址输出使能信号有效,生成矩阵行地址AGk,k=(1,2,...,M)暂存;
(5)度更新使能信号有效,进行度模块数据更新,将其存储地址为AGk中的度值减1;生成矩阵更新使能信号有效,生成矩阵更新,将其第AG行元素清零;待译码数据更新使能有效,待译码数据更新,将其存储地址AGk中的数据与其存储地址AD中对应的数据Da进行按位异或操作得到新的数据值;
(6)若译码迭代次数小于K-1则进入下一次循环,反之译码输出使能信号有效,完成译码输出。
在LT码度1搜索过程中,随着LT码长度的增加其关键路径延时增大。为了降低关键路径延时,本发明可根据参数选择,将度1搜索模块采用一路、两路、四路或者八路并行搜索。将编码以长度为2n分成多个分路同时进行搜索;按照存储地址对每个分路中的元素分别进行搜索,找出每个分路中度值为1的最小存储地址,作为相应分路中度值为1所对应的存储地址;选择所有分路中度值为1的最小存储地址,作为该次度值搜索的结果。假设LT码参数为(N,K),其中N为编码长度,K为信源长度,则根据参数,对应每路搜索码字长度为N、N/2、N/4、N/8,如果N不能被2、4或者8整除,则进行取整,最后一路搜索长度对应剩余码字。
如图4所示为本发明中度1搜索的八路搜索结构示意图,其中N/8如果不是整数则取整。度值采用八路搜索,其中每路均进行搜索并返回每路第一个度1值所在的位置。在选择输出时,每路减去对应的数值,然后比较这些数值,根据最小数值所在的路数,输出那条路上的度值所在位置。同理,对于两路和四路搜索也是相应的原理。
如图5所示为本发明中生成矩阵列搜索示意图,其中s表示每次搜索元素的个数,可以根据参数配置,其取值为8、16、32或者64,j根据s的取值对应为3、4、5和6,k为当前搜索的次数。基于降低搜索复杂度的考虑,将生成矩阵的列分组进行搜索,实行流水线操作。在进行生成矩阵列搜索时,一旦搜到生成矩阵的列中存在等于1的元素,搜索即停止。
在生成矩阵列搜索过程中,可以根据参数选择每次搜索元素的数量,其中每次可以选择搜索元素数量为8、16、32、64。这样,随着每次搜索元素数量的翻倍,其译码时间则减少一半,译码速度提升一倍,但是硬件实现复杂度增加。本发明可以根据参数选择,在译码速度和硬件复杂度之间进行灵活选择。
如图6所示为本发明中生成矩阵行搜索示意图,其中s表示每次搜索元素的个数,可以根据参数配置,其值为8、16、32或者64。其中0..0,0..1,...,8..0数据位宽为s值的四分之一。根据生成矩阵列搜索模块的输出地址AG,搜索生成矩阵中第AG行中元素值为1的所有存储地址,为了有效降低搜索复杂度,将生成矩阵的行分组进行搜索,实行流水线操作。
在生成矩阵行搜索过程中,可以根据参数选择每次搜索元素的数量,每次可以选择搜索元素数量也是8、16、32、64。这样,随着每次搜索元素数量的翻倍,其译码时间减少,但是硬件实现复杂度增加。
以上详细描述了本发明的优选实施方式,但是,本发明并不限于上述实施方式中的具体细节,在本发明的技术构思范围内,可以对本发明的技术方案进行多种等同变换,这些等同变换均属于本发明的保护范围。