一种准循环LDPC编码的硬件实现方法及装置与流程

文档序号:29164415发布日期:2022-03-09 01:50阅读:152来源:国知局
一种准循环LDPC编码的硬件实现方法及装置与流程
一种准循环ldpc编码的硬件实现方法及装置
技术领域
1.本发明涉及通信与电子系统的技术领域,具体涉及准循环ldpc编码的硬件实现方法。


背景技术:

2.ldpc码是一种线性分组码,由于其校验矩阵的“1”的个数极少而得名。最近二十余年来,ldpc码由于其逼近shannon极限的优秀性能,得到了学术界广泛和深入的研究,并成为5g nr标准中数据信道的信道编码方案。准循环ldpc码是结构化ldpc码的重要子集,也是ldpc码的一种特殊子类。其奇偶校验矩阵可以分成多个大小相等的方阵,并用一个基矩阵来表示,每个方阵都是单位矩阵的循环移位矩阵或全零矩阵,非常便于存储器的存储和寻址,从而大大降低了ldpc码的编译码复杂度,并且具有重复累计结构的准循环ldpc码能够实现线性复杂度的快速编码。
3.在相关技术中,对于准循环ldpc码的编码硬件实现过程,通常是,先为信息比特和校验比特分配存储空间,再为中间计算结果分配存储空间,依次遍历基矩阵的行与列,按有效元素内容,异或移位信息比特,保存中间计算结果,再迭代计算校验比特。上述编码过程中,遍历基矩阵元素所需的时间开销取决于行数和行重,但其行重不一致不利于硬件编码的流水线实现,引入了额外的系统时延,占用了过多存储空间,硬件资源利用率低。
4.在相关技术中,在采用迭代算法计算校验比特时,由于计算结果之间有依赖性,无法通过占用更多的硬件资源来实现全并行的ldpc编码,增大了系统低时延。


技术实现要素:

5.本发明提供了一种准循环ldpc编码的硬件实现方法,解决了现有技术中系统的硬件资源利用率低、时延高、吞吐量低的问题。
6.一种准循环ldpc编码的硬件实现方法,包括如下步骤:
7.步骤s1:将校验矩阵的前n列记为一个矩阵a,将矩阵a按行分解为多个行块,块数m;将矩阵a分解为基矩阵和替换阵,且替换阵大小相同,基矩阵记为b;
8.步骤s2:为输入信息比特、输出信息比特和输出校验比特分配存储空间;为m个中间计算结果分配存储空间,指向保存校验比特的空间,用于容纳m个第一中间计算结果c
1-cm;
9.步骤s3:对于基矩阵b中行重小于其他行的行块,在该行添加一条边,指向校验比特,该校验比特代表的存储空间未被使用过,值为全零;
10.步骤s4:将矩阵a的m个行块各与信息比特进行矩阵乘法,得到第一中间计算结果c
1-cm;矩阵乘法的实现过程为,按基矩阵非负元素内容,对相应信息比特块移位得到第二中间计算结果d,缓存到相应信息比特的空间,异或d得到第一中间计算结果c并保存到第一中间计算结果c
1-cm的缓冲区域;
11.步骤s5:利用第一中间计算结果c
1-cm,迭代计算编码矩阵各行块对应的校验比特,cm

31.步骤s3:对于基矩阵b中行重小于其他行的行块,在该行添加一条边,指向校验比特,该校验比特代表的存储空间未被使用过,值为全零;
32.步骤s4:将矩阵a的m个行块各与信息比特进行矩阵乘法,得到第一中间计算结果c
1-cm;矩阵乘法的实现过程为,按基矩阵非负元素内容,对相应信息比特块移位得到第二中间计算结果d,缓存到相应信息比特的空间,异或d得到第一中间计算结果c并保存到c
1-cm的缓冲区域;
33.步骤s5:利用第一中间计算结果c
1-cm,迭代计算编码矩阵各行块对应的校验比特,级联结果得到完整校验比特;级联信息比特与校验比特,输出完整ldpc编码结果。
34.优选的,本发明步骤s1中矩阵a的列数与信息比特长度相等;矩阵a分解为m个行块时,每一行块的行数等于替换阵的行数;所述替换阵的大小为2的幂。
35.优选的,本发明步骤s2中为校验比特分配的存储空间,先是存储第一中间计算结果c
1-cm,再被由中间结果计算得到的校验比特覆写。
36.优选的,本发明步骤s3中的校验比特,在输出比特中的偏移地址是特定的;为该校验比特分配的存储空间,与缓存第一中间计算结果c
1-cm中某一个的存储空间重合;为该段校验比特分配的存储空间,在被第一中间计算结果ci(1≤i≤m)覆写之前被分配与回收。
37.优选的,本发明步骤s3中的行块在添加一条边以后,行重与其他行一致;基矩阵b的m个行块,行数均为1。
38.优选的,本发明基矩阵b包含有效元素和无效元素;有效元素为非负元素,内容表示硬件预先实现的循环移位矩阵,元素内容不同,循环移位矩阵内容也不同;基矩阵的无效元素不占用硬件资源存储;硬件实现编码时,访问基矩阵有效元素时,对待编码比特进行循环移位的操作;访问无效元素时,不做任何操作。
39.优选的,本发明步骤s4中的第二中间结果d需要被计算k次,得到d
1-dk,k的大小为基矩阵的最大行重。对d
1-dk异或运算,也就是忽略进位的二进制加法运算,可以得到c
1-cm中的一个结果。
40.实施例2:
41.如图1所示,本发明的一种准循环ldpc编码的硬件实现方法,包括如下步骤:
42.步骤s102:将ldpc校验矩阵分解为基矩阵和替换阵,找到基矩阵当中行重小于其他行的特定某行;
43.步骤s104:将计算信息比特的基矩阵按行分为多块,块数为m;
44.步骤s106:为输出信息比特和校验比特分配存储空间,为m个中间计算结果分配存储空间,指向保存校验比特的空间,恰可容纳m个第一中间计算结果c;
45.步骤s108:判断基矩阵的某行块的行重是否小于其他行,若为是,执行步骤s110;若为否,执行步骤s112;
46.步骤s110:在该行添加一条边,指向校验比特,该校验比特代表的存储空间未被使用过,值为全零;且不会被缓存到已有第一中间计算结果c的缓冲区域;
47.步骤s112:按基矩阵非负元素内容对信息比特进行移位;基矩阵各行块循环移位阵数量一致,异或第二中间计算结果d得到第一中间计算结果c并保存到缓冲区域;
48.步骤s114:利用步骤s112的第一中间计算结果c,迭代计算编码矩阵各行块对应的
校验比特,级联结果得到完整校验比特;
49.步骤s116:级联信息比特与校验比特,输出完整的ldpc编码结果。
50.所采用的硬件平台可以是fpga,cpld,asic或其他具有类似超大规模集成电路性质的集成电路平台,其特点是能实现rtl级别的布局布线。在不支持rtl级别布局布线的硬件平台上,采取本方法不一定能得到完整的有益效果。对本方法进行软件仿真或软件实现时,所采用的软件平台不受限制。一切需要进行ldpc编码的通信系统都可以采用本方法,包括但不限于自组网通信、终端与基站通信、车联网通信等等。
51.实施例3:
52.如图1所示,本发明的一种准循环ldpc编码的硬件实现方法,包括如下步骤:
53.在步骤102中,确定了一个准循环ldpc码的校验矩阵h,其元素仅有0或1两种值,其大小为1920*512,其中对应信息比特的子矩阵为前1408列,记为矩阵h1。待编码信息比特长1408,校验比特长512。校验矩阵h可以被一组基矩阵b和替换阵s表示,也称将矩阵h分解为基矩阵b和替换阵s。s的大小为64x 64,用替换阵s替换基矩阵中的元素可以得到原校验矩阵h。基矩阵b中的元素,大于等于-1,小于等于63,取值范围是64个整数。替换规则为,按b中非负元素的值,对与s大小相同的单位矩阵作相同次数的循环右移,然后用所得矩阵替换b的对应元素;如b中的元素值为负,则用与s大小相同的全零矩阵替换b的对应元素。
54.校验矩阵h的示意图如图2所示,图2表格按顺序表示了基矩阵b各行各列的元素,空白处表示基矩阵元素其值为-1。其数字标号是有效元素,表示循环移位阵,数字标号表示其移位数。没有数字标号的部分,表示无效元素。图2可以表示本实施例所采用校验矩阵h的全部信息。
55.校验矩阵某一行的行重是指,矩阵某一行的“1”元素数量。基矩阵某一行的行重是指,矩阵某一行的非负元素数量。可见基矩阵b的各行行重一致。
56.在步骤104中,矩阵h1可以被一组基矩阵b1和替换阵s所表示,表示方法同步骤102所述。s的大小为64x64,故矩阵h1可以按行划分为8块,每块具有64行。输入信息比特s可被分为22个行块,每个行块的行数与替换阵的行数相等。即h1和s有以下形式:
[0057][0058]
m=mb*64,mb=8,n=1920,h=[h1,h2]
mxn
[0059]
在图3中可见h1的示意图,其数字标号是有效元素,表示循环移位阵,数字标号表示其移位数。没有数字标号的部分,表示无效元素。其中h
1,5
所在的行块其行重为9,小于其他行块。图3表格按顺序表示了基矩阵b1各行各列的元素,空白处表示基矩阵元素其值为-1。
[0060]
在步骤106中,可以使用一块27*64的ram来存储需要传输的一个ldpc码字中的信息比特,编码输出可以使用一块30*64的ram保存。即输入的存储空间有27个地址,每个地址存有64位宽的比特信息,前22个地址存储一共1408个信息比特。而输出的存储空间有30个
地址。经过一轮ldpc编码后,输出ram的前22个地址上被复制了输入ram中的信息比特,剩余的8个地址被填满校验比特。存储空间中的信息分布如图4所示。
[0061]
为输入比特和输出比特分配不同的储存空间的原因是为了实现硬件模块之间的流水线操作,两者存储空间也可以是物理上连续的。输入ram在本示例中只能被读取,而不能对其进行写入操作。每次从输入ram中读取的信息比特,均需要及时写入输出ram中。
[0062]
对于后续步骤中的第一中间计算结果c,其存储空间被定义为输出ram其中8个地址,并非巧合。中间计算结果为h
1,i
s,i=1,2,l,8,其数量由替换阵大小和校验矩阵的行数决定。鉴于准循环ldpc码的校验矩阵的性质,校验矩阵的行数等于校验比特的长度,所以中间计算结果的存储空间大小恰等于为校验比特分配的存储空间大小。
[0063]
编码过程还需要两个固定的数组,用以表示校验矩阵。一个称为移位值数组,用以记录h1中的79个边。另一个称为列标号数组,元素取值范围为1-22,用以记录79个边分别位于h1的第几列,也对应着该边需要令信息比特s的第几段进行循环右移。由此可见,基矩阵中的无效元素并不占用存储空间。
[0064]
步骤s108:判断基矩阵的某行块的行重是否小于其他行,若为是,执行步骤s110;若为否,执行步骤s112;
[0065]
在步骤110中,参考步骤102所得条件,方可进入步骤110。在步骤110中修改校验矩阵,将基矩阵第5行的最后一个元素替换为26。这个元素能实现的性质是,从输入ram的第27个地址读入校验比特,用于步骤112计算中间结果。替换值的选取规则如下。
[0066]
为了实现流水线操作,读取输入ram和写入输出ram的地址需要保持一致,而此时,输出ram的标号为22、23、24、25(从0开始)的地址上已经分别暂存了h
1,1
s、h
1,2
s、h
1,3
s、h
1,4
s的值,输出ram的剩余未使用空间是自第27个地址开始,为了在计算时不覆盖已经得到的中间结果,可以将校验比特的数据暂存在输出ram的第27个地址,因此要从输入ram的第27个地址读入校验比特的数据,保存在输出ram的第27个地址。
[0067]
由于地址大于22的输入存储空间未被使用过,校验比特为全零,所以读入比特为全零,对其循环移位的结果也为全零。由此可推导出,在该元素指向地址大于22(小于等于30)的情况下,计算h
1,5
s的结果不会影响。
[0068]
在执行步骤110时,对应步骤106中的数组内容也应当被改变。移位值数组在第49个元素以后插入一个元素26,表示在基矩阵的第五行的9个有效元素之后插入一个元素26。列标号数组在同样偏移地址插入该元素对应信息比特的序号27(从1开始)。在本示例的此前步骤中,列标号数组的取值范围是1-22。
[0069]
移位值数组插入的元素值决定了信息比特的循环移位次数,但实际上不影响步骤108的效果。在本示例中将基矩阵第5行的最后一个元素替换为26,是出于便于理解记忆的目的,指示输出ram剩余未使用空间地址。实际发挥步骤110效果的参数是两个数组中插入元素的偏移地址和列标号数组中插入元素的值。在移位值数组中插入元素的值可以是任意0到63中的任意整数。两个数组中插入元素的偏移地址只要能表示基矩阵第五行的元素即可。
[0070]
此时矩阵h1的示意图如图5所示。矩阵h1的各行行重经过步骤110处理变得一致,有助于提高ldpc硬件编码的性能,同时不会改变编码的结果。
[0071]
在步骤112中,按基矩阵非负元素内容,对信息比特进行移位。因校验矩阵有两个
维度,需要用一个两层循环来计算h
1,i
s,i=1,2,l,8。外层循环用来遍历i=1,2,l,8,内层循环用来遍历h
1,i
的边的个数,在循环体中,先从输入ram中取出sj,立即写入输出ram的对应的地址,再根据移位值数组中的元素对sj进行循环右移,最后将各段循环右移过的sj异或,得到h
1,i
s,即ci,并暂存在输出ram的最后8个地址上。
[0072]
在硬件实现步骤112中,对基矩阵的两层循环遍历在实际上是对步骤106提出的移位值数组与列标号数组进行遍历。经过步骤110调整的数组结构,可以使得内层循环的次数固定,便于eda工具更好地优化时延和面积。
[0073]
在步骤114中,迭代计算各段校验比特pi,再覆写在输出ram计算的最后8行即可。
[0074]
在步骤116中,从30*64的输出ram中依次读取信息比特与校验比特即可得到完整编码结果。
[0075]
在采取迭代计算校验比特的算法和经过步骤110优化前提下,可以证明,步骤112和步骤114所消耗的时钟数是最少的。这是因为采取迭代计算校验比特的算法时,中间结果之间存在依赖关系,无法通过占用更多硬件资源实现并行计算,只有通过实现硬件寄存器的流水线结构来减少时钟消耗。步骤114所消耗的时钟数是既定最少的。另外,在本示例当中,步骤112中矩阵运算所消耗的时钟节拍数可以取得最短节拍(仅一个时钟周期),保证了步骤112所消耗的时钟数也是最少的。如不经过步骤110,则不能取得所述有益效果,其原因是如果基矩阵行块的行重不一致,会增加遍历矩阵所消耗的节拍。同时,如果所选的校验矩阵满足不需要进行步骤108的条件,依然可以证明步骤112和步骤114所消耗的时钟数是最少的,不会破坏上述有益效果。步骤110优化了校验矩阵,使得上述有益效果必定产生。作为副效果,校验比特指向的存储空间可以与为输出比特分配的空间重合,节约了硬件资源。
[0076]
以vivado hls软件工具按本示例综合ldpc编码器的效果为例,可以说明本方法降低系统时延,提高系统吞吐量的效果。如图6所示。可见启动间隔为1,电路支持流水线运行,已经达到了硬件实现算法的最优吞吐量。尽管延迟为75,这是由一些编码的预处理、后处理操作引起的结果,与ldpc编码本身的硬件实现优化无关,延迟可以被继续优化降低,但不在本发明的讨论范围之内。本方法以采取迭代编码方法为前提,实现了最低时延的ldpc编码。在另外,电路在流水线运行并编码足够长时间(约十倍于延迟的大小)时,延迟几乎不会影响系统的吞吐量。启动间隔为1表示,反复重置与启动该电路模块不需要额外的时钟消耗。
[0077]
本实施例中提供的准循环ldpc码的编码硬件实现方法,通过优化校验矩阵,在采取迭代方法计算校验比特的前提下,能使得编码消耗的时钟数为最少。同时,为输入比特,输出比特和中间计算结果分配可复用的存储空间,仅为基矩阵中的有效元素分配存储空间,可以辅助上述有益效果的产生,还可以达到节约硬件资源的效果。为输入比特和输出比特分别分配存储空间,有利于硬件实现本方法时,与上下游模块同时运行,不抢占存储空间,实现流水线实现编码,提高系统吞吐量。综上所述,本发明中提供的准循环ldpc码的编码硬件实现方法,能起到节省硬件资源、降低系统时延、提高系统吞吐量的效果。
[0078]
实施例4:
[0079]
一种准循环ldpc编码的硬件实现装置,包括:
[0080]
分解模块:将校验矩阵的前n列记为一个矩阵a,将矩阵a按行分解为多个行块,块数m;将矩阵a分解为基矩阵和替换阵,且替换阵大小相同,基矩阵记为b;
[0081]
指向模块:为输入信息比特、输出信息比特和输出校验比特分配存储空间;为m个
中间计算结果分配存储空间,指向保存校验比特的空间,用于容纳m个第一中间计算结果c
1-cm;
[0082]
配置模块:对于基矩阵b中行重小于其他行的行块,在该行添加一条边,指向校验比特,该校验比特代表的存储空间未被使用过,值为全零;
[0083]
计算模块:将矩阵a的m个行块各与信息比特进行矩阵乘法,得到第一中间计算结果c
1-cm;矩阵乘法的实现过程为,按基矩阵非负元素内容,对相应信息比特块移位得到第二中间计算结果d,缓存到相应信息比特的空间,异或第二中间计算结果d得到第一中间计算结果c并保存到c
1-cm的缓冲区域;
[0084]
输出模块:利用第一中间计算结果c
1-cm,迭代计算编码矩阵各行块对应的校验比特,级联结果得到完整校验比特;级联信息比特与校验比特,输出完整ldpc编码结果。
[0085]
本发明通过优化校验矩阵,在采取迭代方法计算校验比特的前提下,能使得编码消耗的时钟数为最少。同时,为输入比特,输出比特和中间计算结果分配可复用的存储空间,仅为基矩阵中的有效元素分配存储空间,可以辅助上述有益效果的产生,还可以达到节约硬件资源的效果。为输入比特和输出比特分别分配存储空间,有利于硬件实现本方法时,与上下游模块同时运行,不抢占存储空间,实现流水线实现编码,提高系统吞吐量。综上所述,本发明能起到节省硬件资源、降低系统时延、提高系统吞吐量的效果。
[0086]
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围执行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1