发明内容
本发明的目的是提供一种LDPC编码方法,用于解决传统的LDPC编码器结构复杂,消耗资源比较大,不能支持多种场合的使用的技术问题。
本发明的另一目的是提供一种实施上述方法的一种LDPC编码装置。
根据本发明的第一方面,本发明的一种LDPC编码方法包括以下步骤:
将待编码数据进行串并变换后,形成包括第一至第N路数据的N路并行数据;
包括第一随机存取存储器RAM1至第N随机存取存储器RAMn的N个RAM分别利用所述N路并行数据和从母码矩阵依次读出的编码信息位部分的值,执行各自所有存储单元的数据更新处理;
在完成RAM1至RAMn的所有存储单元数据更新处理之后,对依次从RAM1至RAMn中读出的数据进行求和运算,并将每次求和运算的数据分别写入RAMn和第N+1个随机存取存储器RAMn+1中;
对RAM1至RAMn+1的数据进行逻辑运算,得到其值为校验位的数据;
其中,N是大于等于1的整数。
优选地,所述母码矩阵的编码信息位部分的第一行数据至第N行数据分别对应于RAM1至RAMn的初始地址。
优选地,所述RAM1至RAMn的所有存储单元数据更新处理是并行完成的。
优选地,对于RAM1至RAMn中任一个随机存取存储器RAMk,执行其所有存储单元的数据更新处理包括:
读取母码矩阵的编码信息位部分的第k行第一个数据,得到RAMk的初始地址,再从该初始地址对应的存储单元中读出一个数据,并将该读出的数据与到来的N路数据中第k路数据进行异或运算后更新其存储单元数据;
通过将RAMk地址加1,对RAMk中下一个存储单元进行与上一个存储单元相同的数据更新处理,直至完成RAM-k所有存储单元针对母码矩阵编码信息位部分第k行第一个数据的数据更新处理;
此后,按序逐一读出母码矩阵的编码信息位部分的第k行的其他数据,按照RAMk所有存储单元针对上述第k行第一个数据的数据更新处理方式,反复更新RAM-k所有存储单元的数据,直至读出所述k行中最后数据,完成RAM-k所有存储单元的最后数据更新处理;
其中k是大于等于1且小于等于N的整数。
优选地,所述的对RAM1至RAMn+1的数据进行逻辑运算得到其值为校验位的数据包括:对每次写入RAMn和RAMn+1中的数据分别进行异或运算,得到其值为第一组校验位P(0)的数据。
优选地,所述的对RAM1至RAMn+1的数据进行逻辑运算得到其值为校验位的数据还包括:当所述P(0)输出之后,依次读取RAMn+1和RAM1中的数据并进行异或运算后,写入RAM1中,并输出该异或运算的值,直至RAMn+1和RAM1中所有存储单元中的数据均读取完毕,并完成异或运算,由此得到其值为第二组校验位P(1)的数据。
优选地,所述的对RAM1至RAMn+1的数据进行逻辑运算得到其值为校验位的数据还包括:按照对依次读取的RAMn+1和RAM1的数据进行处理以得到第二组校验位P(1)的方式,对依次读取的RAM1和RAM2的数据,RAM2和RAM3的数据,直至RAMn+1和RAMn的数据进行相同的处理,分别得到第三组校验位P(2)、第四组校验位P(3),直至第N组校验位P(N-1)。
此外,本发明还可以根据编码码率与母码矩阵码率的关系,确定读取母码矩阵的编码信息位部分数据的个数,和确定输入第一组至第N组校验位中的一组校验位还是多组校验位。
根据本发明第二方面,本发明的一种LDPC编码装置包括:
串并变换模块,用于将待编码数据进行串并变换,形成包括第一至第N路数据的N路并行数据;
与用来编码的母码矩阵的N行一一对应的N个RAM,包括第一随机存取存储器RAM1至第N随机存取存储器RAMn;
RAM数据更新模块,用于分别利用从母码矩阵依次读出的编码信息位部分的值和所述N路并行数据,对RAM1至RAMn所有存储单元的进行数据更新处理
校验位生成模块,用于在完成RAM1至RAMn的所有存储单元更新处理之后,对依次从RAM1至RAMn中读出的数据进行求和运算,并将每次求和运算的数据分别写入RAMn和第N+1个随机存取存储器RAMn+1中,然后对RAM1至RAMn+1的数据进行逻辑运算,得到其值为校验位的数据;
其中,N是大于等于1的整数。
优选地,所述的校验位获取模块包括:对依次从RAM1至RAMn中读出的数据进行求和运算的求和运算子模块;对RAM1至RAMn+1的数据进行异或运算以便得到其值为校验位的数据的异或运算子模块。
相对于现有技术,本发明的通过迭代访问RAM来实现LDPC编码校验位的计算LDPC编码方法及装置具有如下技术效果:
1、吞吐量大。编码器的吞吐量与并行度有关,并行度越高,吞吐量越大。并且没有数据交织计算的时间,所以省略了数据交织时所需要的时间间隔。一个码块长度的数据可以连续输入,而不需要等待,并能够实时输出,大大提高了系统吞吐量。能够满足高吞吐量的需求和高速数据传输的需求;
2、延迟小。信息位一方面不需要进行存储,可以直接输出,节省了信息交织的时间,极大的减小了编码器信息位的延迟。另一方面输入的数据直接用于校验位的计算,保证校验位的及时输出。
3、结构简单,占用资源小。只需要若干个小尺寸的RAM单元、一些寄存器和选择器,采用迭代访问存储器的方法来实现LDPC编码,而不需要移位寄存器进行移位后再写入RAM的操作。
4、通用性比较好,能够支持不同行列类型的母码矩阵的扩展码的计算,并能够支持多种码率的LDPC编码,而不需要另外增加控制电路。若母码矩阵的行数增多,只需要增加对应RAM数目即可;若行数目不变化,只是增加列数目,则对应的码率和输入信息位的码长也要变化,电路结构则不需要任何改动即可实现对应的操作。
5、能够支持不同扩展因子的母码矩阵的编码方式。RAM的尺寸可根据最大扩展因子来选择,较小的扩展因子可通过调整访问RAM的最大地址来控制。
下面结合附图和具体实施方式对本方明的LDPC编码方法及装置作进一步详细描述,以便本领域技术人员便于理解本发明的目的、上述技术方案和技术效果。
具体实施方式
微波调制解调项目中的信道编码采用准循环结构的LDPC码,准循环结构的LDPC码的校验阵可以通过一个母码矩阵Hb扩展得到,该母码矩阵Hb为r行c列,其中前s列表示信息位部分,最后b(b=c-s)列对应校验位部分,母码矩阵中的每个值对应的扩展因子为z。为了说明计算过程,这里以4行32列的母码矩阵为例来介绍。该矩阵中的前28列表示信息位部分,最后4列表示校验位部分。所以母码码率为28/32,扩展因子为512。根据公式化简,可采用迭代访问存储器的方法来实现。
LDPC编码的核心就是对RAM的访问控制。为了实现多路并行编码方式,每次进入编码器的数据位宽为并行度p。假设以p=8路并行为例,那么每个时钟周期进入编码器的数据位宽为8bit;若要实现p=16路并行,那么每个时钟周期进入编码器的数据位宽为16bit。在实际应用中,若输入的数据位宽为1bit或其它bit,则可以通过一个串并转换电路很容易的实现多路并行输入方式。输入的数据即为需要进行编码的信息部分。数据在输入过程中就进行编码,输入数据不进行存储。母码矩阵中的值为定值,只有4x28个10bit宽的数据(最大数据为d512),所以可将其存储在一个ROM中,也可以将其存储在一个寄存器堆中。
图1显示了本发明的一种LDPC编码装置的原理,如图1所示,该LDPC编码装置包括:
串并变换模块,用于将待编码数据进行串并变换,形成包括第一至第N路数据的N路并行数据;
与用来编码的母码矩阵的N行一一对应的N个RAM,包括第一随机存取存储器RAM1至第N随机存取存储器RAMn;
RAM数据更新模块,用于分别利用从母码矩阵依次读出的编码信息位部分的值和所述N路并行数据,对RAM1至RAMn所有存储单元的进行数据更新处理,如图1所示,RAM数据更新模块包括分别对应于每个RAM的数据更新子模块,该子模块可以是异或子模块;
校验位生成模块,用于在完成RAM1至RAMn的所有存储单元更新处理之后,对依次从RAM1至RAMn中读出的数据进行求和运算,并将每次求和运算的数据分别写入RAMn和第N+1个随机存取存储器RAMn+1中,然后对RAM1至RAMn+1的数据进行逻辑运算,得到其值为校验位的数据。
需要说明的是,本发明所涉及的N是大于等于1的整数。
本发明的校验位获取模块包括:对依次从RAM1至RAMn中读出的数据进行求和运算的求和运算子模块(下文将结合图5进行详细说明);对RAM1至RAMn+1的数据进行异或运算以便得到其值为校验位的数据的异或运算子模块(下文将结合图6进行详细说明)。
图2显示了本发明的一种LDPC编码方法,如图2所示,该LDPC编码包括:
将待编码数据进行串并变换后,形成包括第一至第N路数据的N路并行数据;
包括第一随机存取存储器RAM1至第N随机存取存储器RAMn的N个RAM分别利用所述N路并行数据和从母码矩阵依次读出的编码信息位部分的值,执行各自所有存储单元的数据更新处理;其中,RAM1至RAMn的所有存储单元数据更新处理是并行完成的;
在完成RAM1至RAMn的所有存储单元数据更新处理之后,对依次从RAM1至RAMn中读出的数据进行求和运算,并将每次求和运算的数据分别写入RAMn和第N+1个随机存取存储器RAMn+1中;
对RAM1至RAMn+1的数据进行逻辑运算,得到其值为校验位的数据。
此外,母码矩阵的编码信息位部分的第一行数据至第N行数据分别对应于RAM1至RAMn的初始地址。
此外,对于RAM1至RAMn中任一个随机存取存储器RAMk,执行其所有存储单元的数据更新处理包括:
读取母码矩阵的编码信息位部分的第k行第一个数据,得到RAMk的初始地址,再从该初始地址对应的存储单元中读出一个数据,并将该读出的数据与到来的N路数据中第k路数据进行异或运算后更新其存储单元数据;
通过将RAMk地址加1,对RAMk中下一个存储单元进行与上一个存储单元相同的数据更新处理,直至完成RAM-k所有存储单元针对母码矩阵编码信息位部分第k行第一个数据的数据更新处理;
此后,按序逐一读出母码矩阵的编码信息位部分的第k行的其他数据,按照RAMk所有存储单元针对上述第k行第一个数据的数据更新处理方式,反复更新RAM-k所有存储单元的数据,直至读出所述k行中最后数据,完成RAM-k所有存储单元的最后数据更新处理;
其中,k是大于等于1且小于等于N的整数。
另外,对RAM1至RAMn+1的数据进行逻辑运算得到其值为校验位的数据包括:
对每次写入RAMn和RAMn+1中的数据分别进行异或运算,得到其值为第一组校验位P(0)的数据。
对RAM1至RAMn+1的数据进行逻辑运算得到其值为校验位的数据包括:
当所述P(0)输出之后,依次读取RAMn+1和RAM1中的数据并进行异或运算后,写入RAM1中,并输出该异或运算的值,直至RAMn+1和RAM1中所有存储单元中的数据均读取完毕,并完成异或运算,由此得到其值为第二组校验位P(1)的数据;以及
按照对依次读取的RAMn+1和RAM1的数据进行处理得到第二组校验位P(1)的方式,对依次读取的RAM1和RAM2的数据,RAM2和RAM3的数据,直至RAMn+1和RAMn的数据进行相同的处理,分别得到第三组校验位P(2)、第四组校验位P(3),直至第N组校验位P(N-1)。
另一方面,本发明可以根据编码码率,确定读取母码矩阵的编码信息位部分数据的个数,和确定输入第一组至第N组校验位中的一组校验位还是多组校验位。一般来说,若编码的码率越低,则需要读取母码矩阵中信息位部分的数据个数就越少;若编码的码率越高,则需要输出的校验位就越少。
下面结合图3至图6所示的本发明具体实施例,对上述LDPC编码方法和编码装置进行详细说明。
图3显示了本发明的整个LDPC编码的实现结构。其中,RAM的个数与母码矩阵的行数r有关,若r=4,则需要5个RAM;若r=8,则需要9个RAM。每个RAM大小结构均相同。用4个或8个RAM分别对应母码矩阵中的行数,这几个RAM可以并行计算;最后一个RAM用于暂存计算过程中的数据。此外,图3还显示了一些辅助电路,包括:信息位输入阶段控制信号产生电路,它可以用来读取母码矩阵各行的数据;校验位输出阶段控制信号产生电路产生,用来生成校验位的控制信号;5个连接在控制信号产生电路与5个RAM之间的选择电路,用来根据控制信号产生相应的使能信号。
RAM的位宽由并行度p来决定,若数据为p=8路并行输入,则需要RAM位宽为8bit。RAM深度由扩展因子和并行度共同来决定,若扩展因子z为512,要求每个RAM的存储容量为512bit,又因为位宽是8bit,所以RAM深度为z/p=64。以母码矩阵为4行28列,扩展因子为512为例如图3,信号位宽p代表与RAM深度有关系,此处假定为前面计算出的64为例来详细说明计算过程:
1、在信息位输入阶段,需要执行两个操作:1)将输入的数据进行寄存后直接输出;对应图3中的信号data_in;2)读取母码矩阵中每行的第一个值,并根据该值计算需要访问四个RAM的初始地址。母码矩阵中第一行的数据对应RAM1的初始地址;母码矩阵中第二行的数据对应RAM2的初始地址;母码矩阵中第三行的数据对应RAM3的初始地址;母码矩阵中第四行的数据对应RAM4的初始地址。具体的计算方式就是将该值进行求补运算。并对五个RAM进行初始化写0操作。该步骤的完成是在图3中的第一个模块信息位输入阶段控制信号产生电路中完成的。
2、根据前一个步骤中计算出的RAM的初始地址来访问对应的RAM单元,同时信息位输入阶段控制信号产生电路模块产生对应的读使能信号。首先从对应的地址单元中读出一个数据(此时读出的数据应该是0),与到来的数据进行异或运算,并将运算结果写入同样的地址单元中。如图4所示。图中的读写地址位宽a=log2(z/p)来计算得出。同时RAM的地址加1,等待下一个数据的到来。当下一个数据到来时执行同样的操作:从RAM的地址对应的单元中读出数据,与到来的数据进行异或运算,并将运算结果写入同样的地址单元中。并且,RAM的地址信号加1。直至访问到RAM的最后一个地址单元时,地址信号进行清零。再循环访问RAM的第0个地址单元,直至计算到RAM的初始地址减一的存储单元为止。此时完成了RAM中所有存储单元的更新。此过程是四个RAM的并行操作。
3、读取母码矩阵中每行的下一个数据,并根据该数据用与步骤1同样的方式来计算RAM的初始地址,并使用与步骤2同样的方式进行计算。不同的一点是:此时从RAM中读取的数据是步骤2中写入RAM的数据,而非全0。
4、循环执行步骤3,直至母码矩阵中信息位部分全部读取完毕。
5、此时LDPC编码的信息位部分已经输入完毕,开始进行校验位的计算和输出。从图3的RAM1~RAM4中的0地址开始依次读取所有地址单元中的数据进行求和运算,并将结果写入RAM5的中间地址(即32)开始的存储单元中。即分别读取RAM1~RAM4的0地址单元中的数据进行求和运算,写入RAM5的地址为33的存储单元中,同时写入RAM4的地址为0的存储单元中;再读取地址单元1中的数据进行求和运算,并将结果写入地址为34的存储单元中,同时写入RAM4的地址为1的存储单元中;依次类推,直至四个RAM的地址单元63中的数据被读取并进行求和运算,结果写入RAM5的地址为31的地址单元中,同时写入RAM4的地址为63的存储单元中。如图5所示,其中的逻辑运算单元是上述的求和运算子模块。
6、校验位的输出阶段。在步骤5中异或运算后的数据一方面写入RAM4和RAM5中,另一方面可直接输出,因为该值即为第一组校验位P(0)的数据。当P(0)输出完毕后,从地址单元0开始依次读取RAM5和RAM1中的数据并进行异或运算后,写入RAM1中,并将该值进行输出,直至两个RAM中所有存储单元中的数据均读取完毕,并计算完成。此时,已完成了校验位P(1)的计算。计算校验位P(2)时,可通过读取RAM1和RAM2中的数据进行异或运算后写入RAM2,并输出。计算校验位P(3)时,读取RAM2、RAM3和RAM4中的数据进行异或运算后直接进行输出。此过程可采用流水线的方法来计算和输出。此时已完成了所有信息位的输出和校验位的计算和输出过程,如图6所示,其中图6中的逻辑运算单元是上述的异或运算子模块。
7、如果需要支持不同码率不同码长的编码,若码率低于28/32,可通过控制减少读取母码矩阵中的数据个数来实现。例如,若码率为1/2,则只需要读取母码矩阵中信息位部分的最后四列数据即可实现。若码率高于28/32,如码率为28/29,可不需要步骤6的计算过程便可完成。因为此时只需要输出一组校验位P(0)即可完成计算。
综上所述,该LDPC编码结构具有以下优点:1、吞吐量大,编码器的吞吐量与并行度有关,并行度越高,吞吐量越大;2、延迟小,输入的信息位不需要存储,可直接进行输出;并且信息位输入输出完毕后,可连续输出每组校验位,中间几乎没有延迟;3、电路实现结构中的RAM位宽与并行度有关,若确定了并行度,RAM位宽也能很容易确定下来;电路结构简单,资源开销比较小;4、能够支持多种码率的LDPC编码,而不需另外增加控制电路。5、若母码矩阵的行列数目变化时,若行数变多,只需要增加对应RAM数目即可;若行数目不变,只是增加列数目,则对应的码率和输入信息位的码长也要变化,电路结果则不需要改动即可实现对应的操作。
尽管上文对本发明进行了详细说明,但是本发明不限于此,本技术领域技术人员可以根据本发明的原理进行各种修改。因此,凡按照本发明原理所作的修改,都应当理解为落入本发明的保护范围。