发明内容
本发明的目的是克服现有技术中存在的不足,提供一种基于FPGA的准循环LDPC码的简易编码装置及方法,其对准循环LDPC码有效编码,能降低硬件逻辑资源及存储资源,适应范围广。
按照本发明提供的技术方案,所述基于FPGA的准循环LDPC码的简易编码装置,包括第二单位运算模块,接收信息向量u′,所述信息向量u′包括若干信息块,所述信息块采用4字节表示,第二单位运算模块将信息向量u′接收运算后得到信息行向量u;
第三运算模块,第三运算模块包括常数矩阵α,将常数矩阵α的行向量用4字节表示以划分得到若干第一常数信息块,将所述第一常数信息块内非0元素的位置信息作为第一常数信息块的元素,以形成常数矩阵a′;第三运算模块接收信息向量u′,并将信息向量u′内的元素与常数矩阵a′的元素进行与运算后进行模2求和,以得到信息矩阵P1;
第四运算模块,第四运算模块包括常数矩阵β,将常数矩阵β的行向量用4字节表示以划分得到若干第二常数信息块,将所述第二常数信息块内非0元素的位置信息作为第二常数信息块的元素,以形成常数矩阵β′;第四运算模块接收信息向量u′,并将信息向量u′内的元素与常数矩阵β′的元素进行与运算后进行模2求和,以得到信息矩阵P2。
所述第二单位运算模块、第三运算模块及第四运算模块采用FPGA实现。
所述常数矩阵α=ET-1A+C,常数矩阵β=T-1(A+BET-1A+BC);其中,矩阵A、矩阵B、矩阵T、矩阵C、矩阵D及矩阵E均为码字校验矩阵H内的矩阵元素。
一种基于FPGA的准循环LDPC码的简易编码方法,所述准循环LDPC码的简易编码方法包括如下步骤:
S100、将信息行向量u内的元素以4字节表示划分得到若干信息块,以形成信息向量u′;
S110、将常数矩阵α的行向量用4字节表示以划分得到若干第一常数信息块,将所述第一常数信息块内非0元素的位置信息作为第一常数信息块的元素,以形成常数矩阵a′;
S120、将常数矩阵β的行向量用4字节表示以划分得到若干第二常数信息块,将所述第二常数信息块内非0元素的位置信息作为第二常数信息块的元素,以形成常数矩阵β′;
S130、将信息向量u′输入与包含常数矩阵a′的第三运算模块内,第三运算模块将信息向量u′内的元素与常数矩阵a′的元素进行与运算后进行模2求和,以得到信息矩阵P1;
S140、将信息向量u′输入与包含常数矩阵β′的第四运算模块内,将信息向量u′内的元素与常数矩阵β′的元素进行与运算后进行模2求和,以得到信息矩阵P2。
本发明的优点:可以合理有效地利用FPGA资源,以移位寄存器方式实现LDPC码的编码,采取流水线结构减少FPGA硬件逻辑资源,通过矩阵变换,以非0元素的位置代替原稀疏矩阵的矩阵表示,从而大大降低了RAM存储资源,节省了编码器的硬件资源。
具体实施方式
下面结合具体附图和实施例对本发明作进一步说明。
为充分发挥LDPC码的性能优势,并合理控制硬件复杂度,通常寻求码字校验矩阵具有一定规律的LDPC码。例如规则LDPC码,然而规则LDPC码性能明显差于不规则LDPC码,特别是采用和积译码算法时性能损失大。另外,循环码也具有简单的编码器,但遗憾的是相比于性能优异的码,循环码性能同样有损失。而准循环码却具有良好的性能,即可以是非规则LDPC码,又能有低复杂度的编码结构,应用较广泛,例如WiMax标准中就支持LDPC准循环码。FPGA是目前通用的逻辑器件,可以有效实现LDPC码的编码和译码算法。
如图2所示:为了能够对准循环LDPC码进行简易编码,降低硬件逻辑资源及存储资源,本发明包括
第二单位运算模块4,接收信息向量u′,所述信息向量u′包括若干信息块,所述信息块采用4字节表示,第二单位运算模块4将信息向量u′接收运算后得到信息行向量u;
第三运算模块5,第三运算模块5包括常数矩阵α,将常数矩阵α的行向量用4字节表示以划分得到若干第一常数信息块,将所述第一常数信息块内非0元素的位置信息作为第一常数信息块的元素,以形成常数矩阵a′;第三运算模块5接收信息向量u′,并将信息向量u′内的元素与常数矩阵a′的元素进行与运算后进行模2求和,以得到信息矩阵P1;
第四运算模块6,第四运算模块6包括常数矩阵β,将常数矩阵β的行向量用4字节表示以划分得到若干第二常数信息块,将所述第二常数信息块内非0元素的位置信息作为第二常数信息块的元素,以形成常数矩阵β′;第四运算模块6接收信息向量u′,并将信息向量u′内的元素与常数矩阵β′的元素进行与运算后进行模2求和,以得到信息矩阵P2。
所述第二单位运算模块4、第三运算模块5及第四运算模块6均采用FPGA(Field-Programmable Gate Array)的硬件逻辑资源实现。第二单位运算模块4内包括相应的单位矩阵,信息向量u′经过第二单位运算模块4运算后,得到的信息行向量u与信息向量u′相同,只是信息向量u′为信息行向量u采用4字节表示划分得到相应的信息块。
根据上述简易编码装置,得到本发明基于FPGA的准循环LDPC码的简易编码方法,所述准循环LDPC码的简易编码方法包括如下步骤:
步骤S100、将信息行向量u内的元素以4字节表示划分得到若干信息块,以形成信息向量u′;
步骤S110、将常数矩阵α的行向量用4字节表示以划分得到若干第一常数信息块,将所述第一常数信息块内非0元素的位置信息作为第一常数信息块的元素,以形成常数矩阵a′;
步骤S120、将常数矩阵β的行向量用4字节表示以划分得到若干第二常数信息块,将所述第二常数信息块内非0元素的位置信息作为第二常数信息块的元素,以形成常数矩阵β′;
步骤S130、将信息向量u′输入与包含常数矩阵a′的第三运算模块5内,第三运算模块5将信息向量u′内的元素与常数矩阵a′的元素进行与运算后进行模2求和,以得到信息矩阵P1;
步骤S140、将信息向量u′输入与包含常数矩阵β′的第四运算模块6内,将信息向量u′内的元素与常数矩阵β′的元素进行与运算后进行模2求和,以得到信息矩阵P2。
下面以WiMax标准编码中的LDPC码为例,来对本发明做进一步的说明。
WiMax标准中编码速率R=5/6的准循环LDPC码,码长为576bit,即72Byte,因子z=24。设码字校验矩阵为H,是96行576列的稀疏矩阵,并设其基矩阵为Hb,则
A为72行480列的矩阵,B为72行24列的矩阵,T为72行72列的矩阵,C为24行480列的矩阵,D为24行24列的矩阵,E为24行72列的矩阵。由基矩阵Hb生成校验矩阵H的规则如下:
其中,p(i,j)为基矩阵Hb的第i行第j列的元素,为向下取整运算,为运算结果;设I24为24阶单位阵,当小于0时,相对的元素以24行24列0矩阵代替,当等于0时,相对的元素以I24代替,当大于0时,相对的元素以I24的向右循环移位矩阵代替,移位位数为
LDPC码为分组码,以组进行编码,设信息bit为uT,u为480列的行向量。LDPC编码结果如下,设v为编码码字,则
v={u,p1,p2}
其中
令
α=ET-1A+C
β=T-1(A+BET-1A+BC)
则α为24行480列的矩阵,β为72行480列的矩阵,因此编码码字可以表示为:
v=u·{I480,αT,βT}
其中I480为480阶单位矩阵,而α与β都是常数矩阵,上式即可作为LDPC的编码式,但由于常数矩阵α、常数矩阵β和信息行向量u都是维数较大的矩阵或向量,如果直接这样实现则需要较多的逻辑资源,FPGA开销大。
为降低逻辑资源,采取流水线的方式,利用移位寄存器来实现,即信息行向量u以bit(位)逐个进入,依次进行与运算并进行模2求和,一组信息全部完毕后再逐个输出编码码字。编码电路如图1所示。图1中,包括第一单位运算模块1、第一运算模块2及第二运算模块3,信息行向量u与第一单位运算模块1运算后,得到信息行向量u。第一运算模块2内包括常数矩阵α,第二运算模块3内包括常数矩阵β,信息行向量u以位逐个进入,与第一运算模块2内常数矩阵α内对应的元素进行与运算,并对与运算的结果进行模2求和,从而能够得到所需的信息矩阵P1;信息行向量u以位逐个进入,与第一运算模块3内常数矩阵β内对应的元素进行与运算,并对与运算的结果进行模2求和,从而能够得到所需的信息矩阵P2。
由于常数矩阵α、常数矩阵β和信息行向量u都是维数较大的矩阵或向量,因此,这样的编码方式仍然会耗费很多的RAM资源,非常不经济,对此,我们充分利用LDPC校验矩阵的稀疏特性来简化编码装置,经计算,发现常数矩阵α与常数矩阵β同样为稀疏矩阵,其中,常数矩阵α的每行元素中有61个1,其余为而常数矩阵β的每行元素中,只可能是36个1或51个1或81个1,都远小于其列数
本发明实施例中,以四字节(32bit)表示常数矩阵α、常数矩阵β和信息行向量u的行,则常数矩阵α变为24行15列的矩阵,常数矩阵β为72行15列的矩阵,信息行向量u变为长为15的行向量。对这样共需15次移位可完成整个运算。由此,得到常数矩阵α与常数矩阵β及信息行向量u可表示为:
u={u1,u2,…,u15}=u′;
其中,×i,j(x为α′,β′或′)表示矩阵x(x为α′,β′或u′)的第i行中32(j-1)+1位至第32j位(bit)中1所在的位置,有几个1(非零元素)就有几个值;即常数矩阵α′内每行包括15个第一常数信息块,每个第一常数信息块中的元素为32位中非零元素的位置,同理,常数矩阵β′内的第二常数信息块的表达含义相同。这样,信息向量u′以32bit为单位逐个进入,依次与aij和bij进行按位与运算,并对结果模2求和,一组信息全部完毕后再逐个输出编码码字。编码电路可改变成图2所示。信息向量u′与第二单位运算模块4运算后,能得到信息行向量u;信息向量u′输入包含常数矩阵a′的第三运算模块5内,第三运算模块5将信息向量u′内的元素与常数矩阵a′的元素进行与运算后进行模2求和,以得到信息矩阵P1;将信息向量u′输入与包含常数矩阵β′的第四运算模块6内,将信息向量u′内的元素与常数矩阵β′的元素进行与运算后进行模2求和,以得到信息矩阵P2。根据准循环LDPC码编码表达式可知,得到上述矩阵后即实现了准循环LDPC码编码。
所述按位与运算,并将按位与运算后的结果模2求和采用FPGA内的硬件逻辑即可实现,当然,在FPGA内进行运算时,需要根据常数矩阵α′,常数矩阵β′内信息块的内容变换后进行逻辑与运算,上述计算过程为常规的计算手段,此处不再详述。
由于每个元素αi,j和βi,j的位数均为32位,因此最多只需5bit就能表示32位中任意一个数据位的位置。例如,常数矩阵α′内的元素α1,1,即假设常数矩阵α第一行的前32列元素为{10000 00000 00100 00100 00000 10000 10},共有5个1,分别位于位、12位、17位、25位、30位,其余均为为节省存储空间,忽略元只将元素1的位置表示出来,则即α1,1可表示为{0 1100 10001 11001 11110},共需20bit,便可表示原来的32bit的内容。类似的,可得到其它αi,j和βi,j的位置表示。αi,j为常数矩阵α′内的第一常数信息块,βi,j为常数矩阵β′内的第二常数信息块,u1为信息向量u′内的信息块。
经计算,最后可用22234bit表示常数矩阵α和常数矩阵β。而现有技术中,共需个位(bit)来表示,因此大大缩小了对FPGA中RAM的需求,可减小一半以上的存储空间。
本发明可以合理有效地利用FPGA资源,以移位寄存器方式实现LDPC码的编码,采取流水线结构减少FPGA硬件逻辑资源,通过矩阵变换,以非0元素的位置代替原稀疏矩阵的矩阵表示,从而大大降低了RAM存储资源,节省了编码器的硬件资源。