一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于FPGA的LDPC编码方法及编码器与流程

2022-05-18 03:09:51 来源:中国专利 TAG:

一种基于fpga的ldpc编码方法及编码器
技术领域
1.本发明涉及编码技术领域,更为具体地是特别涉及一种基于fpga的ldpc编码方法及编码器。


背景技术:

2.ldpc码是一类性能逼近香农极限的纠错码,也是当今信道编码领域的研究热点之一。gallager在上世纪六十年代初提出ldpc码时,由于受到当时硬件条件的限制并没有得到应用,随着大规模集成电路技术的发展,ldpc码已经从理论研究进入了实用发展的阶段。而fpga具有高吞吐率、高带宽、灵活可编程的特点,是通信系统中重要的硬件载体,尤其是5g时代的到来,fpga在通讯行业大放异彩。
3.随着空间技术和通信技术的发展,人们对卫星数据传输速率和可靠性的要求不断提高,信道编码是提高数据传输可靠性的关键技术。ldpc码是目前纠错编码领域研究最多且最有前景的编码技术,移动通信(如5g)、光纤、磁介质设备广泛采用ldpc编码技术。各种卫星通信系统均采用了ldpc码,如ccsds标准和欧洲第二代数字卫星电视广播dvb-s2标准,dvb-s2标准提供了一种强大的前向纠错编码方案,该系统的纠错编码采用ldpc与bch级联码,现阶段还对dvb-s2标准的ldpc码进行扩展,形成了dvb-s2x标准,进一步奠定了ldpc码的重要性。
4.因此,急需要一种基于fpga的ldpc编码方法及编码器。


技术实现要素:

5.为了解决现有问题,本发明提供一种基于fpga的ldpc编码方法及编码器,达到高吞吐率、低资源占用率的效果。
6.第一方面,本发明提供了一种基于fpga的ldpc编码器,包括地址控制模块,用于生成第一计数器信号和第一地址信号;校验比特计算模块,用于接收第一输入码元以及每个时钟周期的所述第一计数器信号和第一地址信号,并将所述第一计数器信号和第一地址信号与第一输入码元进行数据同步,并输出第一读写地址,将第一读写地址中得到的第一数据和当前时钟周期输入的信息码字进行异或后,再写回原位置;校验比特生成模块,用于读取所述校验比特计算模块中的异或结果,并对得到的异或结果进行运算,得到最终的奇偶校验码字。达到高吞吐率、低资源占用率的效果。
7.校验比特计算模块每接收一个原始码元,会同步接收到该码元对应一组的第一计数信号和第一地址信号。地址计算单元会根据第一计数信号和第一地址信号计算出一个值(假设叫j),该值是校验比特计算模块中check_ram的读写地址。首先读出check_ram的j地址下的值,将存储器中读出的数与当前的码元进行异或后,再写回原位置(也就是j对应的位置);计算出当前码元对应的地址,读出该地址的原始数据与自身异或,然后再写回去。
8.在本技术的部分实施例中,所述地址模块包括计数器和地址表存储单元,所述计数器用于生成第一计数信号,所述地址表存储单元用于生成第一地址信号,所述计数器对
输入的信息码元进行计数。
9.在本技术的部分实施例中,所述第一计数器信号用于对帧内比特进行计数,在0-359内循环计数,并将第一计数器信号传输给所述校验比特计算模块。
10.在本技术的部分实施例中,所述计数器还生成第二计数器信号,用于对帧进行计数,当检测到所述第一计数器信号到357时,所述第二计数器信号的数值加1,且所述第二计数器信号在0-34内循环计数,第二计数器信号为所述地址表存储单元的第二读写地址。
11.在本技术的部分实施例中,所述校验比特计算模块包括三级流水控制单元和3路地址计算单元,所述三级流水控制单元将每个时钟周期接收到的第一输入码元、第一计数器信号和第一地址信号进行数据同步,并轮流输入到3路地址计算单元中。
12.在本技术的部分实施例中,3路地址计算单元包括第一地址计算单元、第二地址计算单元和第三地址计算单元,每个地址计算单元对应设置有一个存储单元,将数据轮流输入到第一地址计算单元、第二地址计算单元和第三地址计算单元以及相对应的存储单元中,并输出第一读写地址。每路地址计算单元相互独立,第一个时钟周期,第一个码元进来以后,会同步接收到一个第一计数信号和第一地址信号,流水控制模块会将这三个数送入第一路地址计算单元,计算得到一个读写地址,将check_ram1对应的该地址下的值读出,异或,再写回第二个时钟周期,来第二个码元,流水控制模块会将这新的3个数送入第二路计算单元和存储单元;第三个码元同理,流水控制单元会将其送入第三路;第四个码元来,又送第一路,如此循环。
13.在本技术的部分实施例中,所述校验比特生成模块包括复用功能单元,从地址0-3599同步读取所述第一地址计算单元、第二地址计算单元和第三地址计算单元分别对应的存储单元,对第一个时钟周期得到的数据进行二进制加法得到第一数据并将其延迟一个时钟周期,将两个时钟周期得到的第一数据进行异或,得到奇偶校验码字。让第一个数据延迟一个时钟周期(等待,保留一个时钟周期),同时去读第二组,得到第二数据,是把第一个加法结果和第二个加法结果进行异或,第二个加法结果和第三个加法结果异或。
14.第二方面,一种基于fpga的ldpc编码方法,包括以下步骤:通过地址控制模块生成第一计数器信号和第一地址信号;通过校验比特计算模块接收第一输入码元以及每个时钟周期的所述第一计数器信号和第一地址信号,并将所述第一计数器信号和第一地址信号与第一输入码元进行数据同步,并输出第一读写地址,将第一读写地址中得到的第一数据和当前时钟周期输入的信息码字进行异或后,再写回原位置;通过校验比特生成模块读取所述校验比特计算模块中的异或结果,并对得到的异或结果进行运算,得到最终的奇偶校验码字。
15.在本技术的部分实施例中,,所述地址模块包括计数器和地址表存储单元,所述计数器用于生成第一计数信号,所述地址表存储单元用于生成第一地址信号,所述计数器对输入的信息码元进行计数;所述第一计数器信号用于对帧内比特进行计数,在0-359内循环计数,并将第一计数器信号传输给所述校验比特计算模块;所述计数器还生成第二计数器信号,用于对帧进行计数,当检测到所述第一计数器信号到357时,所述第二计数器信号的数值加1,且所述第二计数器信号在0-34内循环计数,第二计数器信号为所述地址表存储单元的第二读写地址。
16.在本技术的部分实施例中,所述校验比特计算模块包括三级流水控制单元和3路
地址计算单元,所述三级流水控制单元将每个时钟周期接收到的第一输入码元、第一计数器信号和第一地址信号进行数据同步,并轮流输入到3路地址计算单元中;3路地址计算单元包括第一地址计算单元、第二地址计算单元和第三地址计算单元,将数据轮流输入到第一地址计算单元、第二地址计算单元和第三地址计算单元中,输出第一读写地址。
17.本发明的有益效果是:本发明提供一种基于fpga的ldpc编码方法及编码器,地址控制模块,用于生成第一计数器信号和第一地址信号;校验比特计算模块,用于接收第一输入码元以及每个时钟周期的所述第一计数器信号和第一地址信号,并将所述第一计数器信号和第一地址信号与第一输入码元进行数据同步,并输出第一读写地址,将第一读写地址中得到的第一数据和当前时钟周期输入的信息码字进行异或后,再写回原位置;校验比特生成模块,用于读取所述校验比特计算模块中的异或结果,并对得到的异或结果进行运算,得到最终的奇偶校验码字。达到高吞吐率、低资源占用率的效果。
附图说明
18.图1为本发明的编码器系统框图;
19.图2为本发明的普通帧4/5码率地址表;
20.图3为本发明的地址表在rom中的存储结构;
21.图4为本发明的地址计算单元流水线结构;
22.图5为本发明的信息位累加原理图。
具体实施方式
23.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下获得的所有其他实施例,都属于本发明保护的范围。
24.本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明或者隐含地包括一个或者更多个所述特征。在本发明的描述中,“多个”的含义两个或两个以上,除非另有明确具体的限定。
25.在申请中,“示例性”一词用来表示“用作例子、例证或说明”。本技术中被描述为示例性”的任何实施例不一定被解释为比其它实施例更优选或更具优势。为使本领域任何技术人员能够实现和使用本发明,给出了以下描述。在以下描述,为了解释的目的而列出了细节。应当明白的是,本领域普通技术人员可以认到,在不使用这些特定细节的情况下也可以实现本发明。在其它实例中,不会对已知的结构和过程进行详细阐述,以避免不必要的细节使本发明的描述变得晦涩。因此,本发明并非旨在限于所示的实施例,而是与符合本技术所公开的原理的最广范围相一致。
26.根据dvb-s2标准,其ldpc编码任务是由k个信息位(i0,i1…ik-1
)得到(n-k)个奇偶校验位(p0,p1…
p
n-k-1
),最后得到码字(i0,i1…in-1
,p0,p1…
p
n-k-1
)。编码步骤如下:
27.1)初始化校验位:
28.p0=p1=

=p
n-k-1
=0(1.1)
29.2)计算信息位对校验位的贡献,计算公式如下:
30.(异或,相同为0,不同为1)(1.2)
31.j=(x q(mmod360))mod(n
ldpc-k
ldpc
)(1.3)
32.其中pj是第j个校验位,im是第m个信息位,x是奇偶校验位的地址,q是一个与码率相关的常数。在普通帧4/5码率下,k=12600,n=16200,q=10。
33.3)获得最终的奇偶校验位:
[0034][0035]
实施例1:请参阅图1;本发明公开一种基于fpga的ldpc编码器,包括地址控制模块,用于生成第一计数器信号和第一地址信号;校验比特计算模块,用于接收第一输入码元以及每个时钟周期的所述第一计数器信号和第一地址信号,并将所述第一计数器信号和第一地址信号与第一输入码元进行数据同步,并输出第一读写地址,将第一读写地址中得到的第一数据和当前时钟周期输入的信息码字进行异或后,再写回原位置;校验比特生成模块,用于读取所述校验比特计算模块中的异或结果,并对得到的异或结果进行运算,得到最终的奇偶校验码字。达到高吞吐率、低资源占用率的效果。
[0036]
校验比特计算模块每接收一个原始码元,会同步接收到该码元对应一组的第一计数信号和第一地址信号。地址计算单元会根据第一计数信号和第一地址信号计算出一个值(假设叫j),该值是校验比特计算模块中check_ram的读写地址。首先读出check_ram的j地址下的值,将存储器中读出的数与当前的码元进行异或后,再写回原位置(也就是j对应的位置);计算出当前码元对应的地址,读出该地址的原始数据与自身异或,然后再写回去。
[0037]
在本技术的部分实施例中,所述地址模块包括计数器和地址表存储单元,所述计数器用于生成第一计数信号,所述地址表存储单元用于生成第一地址信号,所述计数器对输入的信息码元进行计数。
[0038]
在本技术的部分实施例中,所述第一计数器信号用于对帧内比特进行计数,在0-359内循环计数,并将第一计数器信号传输给所述校验比特计算模块。
[0039]
在本技术的部分实施例中,所述计数器还生成第二计数器信号,用于对帧进行计数,当检测到所述第一计数器信号到357时,所述第二计数器信号的数值加1,且所述第二计数器信号在0-34内循环计数,第二计数器信号为所述地址表存储单元的第二读写地址。
[0040]
在本技术的部分实施例中,所述校验比特计算模块包括三级流水控制单元和3路地址计算单元,所述三级流水控制单元将每个时钟周期接收到的第一输入码元、第一计数器信号和第一地址信号进行数据同步,并轮流输入到3路地址计算单元中。
[0041]
在本技术的部分实施例中,3路地址计算单元包括第一地址计算单元、第二地址计算单元和第三地址计算单元,每个地址计算单元对应设置有一个存储单元,将数据轮流输入到第一地址计算单元、第二地址计算单元和第三地址计算单元以及相对应的存储单元中,并输出第一读写地址。每路地址计算单元相互独立,第一个时钟周期,第一个码元进来以后,会同步接收到一个第一计数信号和第一地址信号,流水控制模块会将这三个数送入
第一路地址计算单元,计算得到一个读写地址,将check_ram1对应的该地址下的值读出,异或,再写回第二个时钟周期,来第二个码元,流水控制模块会将这新的3个数送入第二路计算单元和存储单元;第三个码元同理,流水控制单元会将其送入第三路;第四个码元来,又送第一路,如此循环。
[0042]
在本技术的部分实施例中,所述校验比特生成模块包括复用功能单元,从地址0-3599同步读取所述第一地址计算单元、第二地址计算单元和第三地址计算单元分别对应的存储单元,对第一个时钟周期得到的数据进行二进制加法得到第一数据并将其延迟一个时钟周期,将两个时钟周期得到的第一数据进行异或,得到奇偶校验码字。让第一个数据延迟一个时钟周期(等待,保留一个时钟周期),同时去读第二组,得到第二数据,是把第一个加法结果和第二个加法结果进行异或,第二个加法结果和第三个加法结果异或。
[0043]
第二方面,本技术还公开了一种基于fpga的ldpc编码方法,包括以下步骤:通过地址控制模块生成第一计数器信号和第一地址信号;通过校验比特计算模块接收第一输入码元以及每个时钟周期的所述第一计数器信号和第一地址信号,并将所述第一计数器信号和第一地址信号与第一输入码元进行数据同步,并输出第一读写地址,将第一读写地址中得到的第一数据和当前时钟周期输入的信息码字进行异或后,再写回原位置;通过校验比特生成模块读取所述校验比特计算模块中的异或结果,并对得到的异或结果进行运算,得到最终的奇偶校验码字。
[0044]
在本技术的部分实施例中,,所述地址模块包括计数器和地址表存储单元,所述计数器用于生成第一计数信号,所述地址表存储单元用于生成第一地址信号,所述计数器对输入的信息码元进行计数;所述第一计数器信号用于对帧内比特进行计数,在0-359内循环计数,并将第一计数器信号传输给所述校验比特计算模块;所述计数器还生成第二计数器信号,用于对帧进行计数,当检测到所述第一计数器信号到357时,所述第二计数器信号的数值加1,且所述第二计数器信号在0-34内循环计数,第二计数器信号为所述地址表存储单元的第二读写地址。
[0045]
在本技术的部分实施例中,所述校验比特计算模块包括三级流水控制单元和3路地址计算单元,所述三级流水控制单元将每个时钟周期接收到的第一输入码元、第一计数器信号和第一地址信号进行数据同步,并轮流输入到3路地址计算单元中;3路地址计算单元包括第一地址计算单元、第二地址计算单元和第三地址计算单元,将数据轮流输入到第一地址计算单元、第二地址计算单元和第三地址计算单元中,输出第一读写地址。
[0046]
本实施例中的地址控制模块:该模块中的计数器对输入的信息码元计数。在dvb-s2标准中普通帧下,一组信息码元为12600比特(bits),其中每360个比特为1帧,共35帧。系统框图图1中计数值cnt1初值为0,为帧内比特计数值,以din_value拉高为起始信号,开始从0~359循环计数。cnt1输出到校验比特计算模块。系统框图图1中计数值cnt2初始为0,为帧计数值,当检测到cnt1等于357时,cnt2加1,从0~34循环计数。cnt2作为地址表存储单元addrrom的读地址。地址表存储单元addrrom为单口rom,宽度为36,深度为35。rom初始值为dvb-s2标准中普通帧4/5码率对应的地址表,该地址表如下图2所示。
[0047]
图2中的地址表一共35行,每行中含有三个数据。每行的3个数据合并存储,占用一个rom地址位。rom的数据接口的data[35:24]位表示第一个数据,data[23:12]位表示第二个数据,data[11:0]表示第三个数据。存储结构如下图3所示。
[0048]
本实施例中的校验比特计算模块:三级流水控制单元将每个时钟周期接收到的输入码元date_in,地址信息addr和帧内计数值cnt1进行数据同步,并轮流输入到3路地址计算单元。即将第1组有效数据输入地址计算单元1,将第2组有效数据输入地址计算单元2,将第3组有效数据输入地址计算单元3,然后第4组有效数据输入地址计算单元1,如此循环。3路地址计算单元功能一致,完成式j=(x q(mmod360))mod(n
ldpc-k
ldpc
)的计算。式中(mmod360)即地址控制模块中输出cnt1,因此不必再次计算。为了提高电路的运行频率,该地址计算式拆分为3级流水线计算。为方便表示,引入如下中间变量:
[0049]
temp1=q(mmod360)(2.1)
[0050]
temp2=x temp1(2.2)
[0051]
j=temp2mod(n
ldpc-k
ldpc
)(2.3)
[0052]
地址计算单元流水线结构如图4。
[0053]
该中3路check_ram为伪双口ram,宽度为1,深度为3600,以地址计算单元输出数据j为读写地址,进行信息位的累加。具体操作为:将ram中地址为j的数据读出,将读出数据与该路当前时钟周期输入的信息码字进行异或,将异或结果写回地址j对应存储单元。原理图如图5所示。
[0054]
本实施例的校验比特生成模块:该模块中的复用功能单元,以校验比特计算模块中的第三路ram写地址使能信号拉低为起始标志,开始从地址0到3599同步读取校验比特计算模块的3路check_ram,将读出的三路数据data1,data2,data3进行二进制加法,如下式:
[0055]
sum[0:0]=data1 data2 data3(2.4)
[0056]
将复用单元的二进制加法结果sum延迟一个时钟周期,得到sum_delay,将sum和sum_delay异或,得到最终的奇偶校验码字。
[0057]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见上文针对其他实施例的详细描述,此处不再赘述。
[0058]
上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述详细披露仅仅作为示例,而并不构成对本技术的限定。虽然此处并没有明确说明,本领域技术人员可能会对本技术进行各种修改、改进和修正。该类修改、改进和修正在本技术中被建议,所以该类修改、改进、修正仍属于本技术示范实施例的精神和范围。
[0059]
同时,本技术使用了特定词语来描述本技术的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本技术至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一个替代性实施例”并不一定是指同一实施例。此外,本技术的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
[0060]
同理,应当注意的是,为了简化本技术披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本技术实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本技术对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
[0061]
一些实施例中使用了描述成分、属性数量的数字,应当理解的是,此类用于实施例描述的数字,在一些示例中使用了修饰词“大约”、“近似”或“大体上”来修饰。除非另外说明,“大约”、“近似”或“大体上”表明数字允许有
±
20%的变化。相应地,在一些实施例中,说
明书和权利要求中使用的数值参数均为近似值,该近似值根据个别实施例所需特点可以发生改变。在一些实施例中,数值参数应考虑规定的有效数位并采用一般位数保留的方法。尽管本技术一些实施例中用于确认其范围广度的数值域和参数为近似值,在具体实施例中,此类数值的设定在可行范围内尽可能精确。
[0062]
针对本技术引用的每个专利、专利申请、专利申请公开物和其他材料,如文章、书籍、说明书、出版物、文档等,特此将其全部内容并入本技术作为参考,但与本技术内容不一致或产生冲突的申请历史文件除外,对本技术权利要求最广范围有限制的文件(当前或之后附加于本技术中的)也除外。需要说明的是,如果本技术附属材料中的描述、定义、和/或术语的使用与本技术内容有不一致或冲突的地方,以本技术的描述、定义和/或术语的使用为准。
[0063]
以上对本技术实施例所提供的技术方案进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献