CN111817728A - 一种基于硬件实现ldpc编译码的仿真系统及其工作方法 - Google Patents
一种基于硬件实现ldpc编译码的仿真系统及其工作方法 Download PDFInfo
- Publication number
- CN111817728A CN111817728A CN202010766183.3A CN202010766183A CN111817728A CN 111817728 A CN111817728 A CN 111817728A CN 202010766183 A CN202010766183 A CN 202010766183A CN 111817728 A CN111817728 A CN 111817728A
- Authority
- CN
- China
- Prior art keywords
- module
- sequence
- coding
- counter
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Error Detection And Correction (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种基于硬件实现LDPC编译码的仿真系统,包括随机信息序列生成模块、编码模块、噪声生成模块、调制模块、数据缓存模块、解调模块和译码模块。随机信息序列生成模块的输出端与编码模块的输入端通讯连接,编码模块的输出端和噪声生成模块的输出端分别与调制模块的输入端通讯连接,调制模块的输出端与数据缓存模块输入端通讯连接,同时调制模块的输出端和数据缓存模块输出端分别与解调模块输入端通讯连接,解调模块输出端和译码模块输入端通讯连接。本发明通过采用并行和流水线的硬件实现结构,减少了LDPC编译码的时延,并提高了硬件资源利用率。
Description
技术领域
本发明属于无线通信领域,更具体地,涉及一种基于硬件实现LDPC编译码的仿真系统及其工作方法。
背景技术
低密度奇偶校验码(Low-Density Parity Check,简称LDPC)由于具有高纠错能力而被广泛应用于无线通信领域中。
如今,用于执行LDPC编译码的机制都是基于软件实现,且已经十分成熟。然而,基于软件实现LDPC编译码的机制存在两个主要缺点,第一,由于软件代码段是顺序执行的,无法采用并行和流水线结构减少运行周期,且受到计算机主频本身的限制,因此导致编译码过程的时间延迟高;第二,软件架构的底层结构对开发人员不可见,开发人员在对实现LDPC编译码的软件进行优化时,无法直观地获取软件资源消耗和最长延迟路径,从而导致优化过程难度大。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供一种基于硬件实现LDPC编译码的仿真系统及其工作方法,其目的在于,解决现有基于软件实现LDPC编译码的机制中由于软件代码段顺序执行、以及计算机主频受限所导致的编译码过程时间延迟高的技术问题,以及由于软件架构的底层结构对开发人员不可见导致编译码软件的优化过程难度大的技术问题。
为实现上述目的,按照本发明的一个方面,提供了一种基于硬件实现LDPC编译码的仿真系统,包括随机信息序列生成模块、编码模块、噪声生成模块、调制模块、数据缓存模块、解调模块和译码模块。
随机信息序列生成模块的输出端与编码模块的输入端通讯连接,编码模块的输出端和噪声生成模块的输出端分别与调制模块的输入端通讯连接,调制模块的输出端与数据缓存模块输入端通讯连接,同时调制模块的输出端和数据缓存模块输出端分别与解调模块输入端通讯连接,解调模块输出端和译码模块输入端通讯连接。
随机信息序列生成模块用于随机生成信息序列,并发送给编码模块。
编码模块包括用于存储PI矩阵的第一存储单元,获取预先存储在其第一存储单元中的PI矩阵,并将该PI矩阵和来自随机信息序列生成模块的信息序列进行运算处理,以得到编码序列;其中存储PI矩阵的第一存储单元包括单端口的第一只读存储器ROM和第一地址计数器,第一ROM用于存储PI矩阵中的元素,第一地址计数器用于向第一ROM发送PI矩阵的读地址和读信号;第一地址计数器在PI矩阵的地址范围内每个时钟周期加一,第一ROM在收到读信号开始的两个时钟周期后获取读地址的数据,并发给编码模块。
噪声生成模块用于生成加性高斯白噪声AWGN序列,每个周期可以产生两个AWGN噪声值,多个周期的循环计算得到AWGN序列。
调制模块用于对来自编码模块的编码序列进行BPSK调制处理,以得到调制后的数据序列,再将调制后的数据序列与AWGN序列进行对应位求和,以得到加噪后的数据序列,并将加噪后的数据序列及其地址发送给数据缓存模块存储。
数据缓存模块包括一个双端口RAM和第三地址计数器,双端口RAM用于在一个时钟周期内同时对加噪后的数据序列的两个数据进行存储或者读出,对调制模块发送过来的加噪后的数据序列及其地址进行存储,并在解调模块解调前将其缓存的数据读出;第三地址计数器用于在每次双端口RAM读出数据前向其发送读地址和读信号,在数据地址范围内每个时钟周期加一;双端口RAM在收到读信号开始的两个时钟周期后获取读地址对应的数据,并发送给解调模块。
解调模块从数据缓存模块读取加噪后的数据序列,对该加噪后的数据序列进行BPSK解调,以得到解调后的编码序列,并发送给译码模块。
译码模块包含存储校验矩阵H的第二存储单元,用于获取预先存储在其存储单元中的校验矩阵H,并根据该校验矩阵H对解调模块输出的编码序列进行译码处理;其中存储校验矩阵H的第二存储单元包括单端口的第二ROM和第二地址计数器,第二ROM用于存储校验矩阵H中的元素,第二地址计数器用于向第二ROM发送校验矩阵H的读地址和读信号;第二地址计数器在校验矩阵H的地址范围内每个时钟周期加一,第二ROM在收到读信号开始的两个时钟周期后获取读地址的数据,并发送给译码模块。
按照本发明的另一个方面,提供了一种基于硬件实现LDPC编译码的仿真系统的工作方法,包括以下步骤:
(1)随机信息序列生成模块随机生成信息序列u,并将生成的该信息序列u发送到编码模块;其中信息序列u的长度为预先存储在译码模块的第二存储单元中的校验矩阵H的列数N与行数M的差值;
(2)编码模块获取预先存储在其第一存储单元中的PI矩阵,将该PI矩阵和来自随机信息序列生成模块的信息序列u进行乘法处理,以得到校验序列p,将信息序列u和校验序列p进行组合,以得到编码序列c,并将得到的编码序列c发送到调制模块,编码序列c的长度为N;
(3)调制模块对来自编码模块的编码序列c进行BPSK调制处理,以得到调制后的数据序列;
(4)噪声生成模块生成加性高斯白噪声AWGN序列,将该AWGN序列发送给调制模块,其中该AWGN序列的长度等于编码序列c的长度N;
(5)调制模块将步骤(3)调制后的数据序列与步骤(4)得到的AWGN噪声序列进行对应位求和,以得到加噪后的数据序列,并将加噪后的数据序列发送给数据缓存模块存储;
(6)解调模块从数据缓存模块获取加噪后的数据序列,对该加噪后的数据序列进行BPSK解调,并将解调得到的编码序列D发送给译码模块;
(7)译码模块获取预先存储在其第二存储单元中的校验矩阵H,并根据该校验矩阵H对解调模块输出的编码序列D进行译码处理。
优选地,步骤(2)中的PI矩阵是校验矩阵H经过高斯消元计算得到,并存储在编码模块的第一存储单元中,其中PI矩阵格式为[P|I]。
优选地,步骤(2)计算编码序列过程具体为:
首先按照以下公式计算得到校验序列p中的每个校验比特pi:
其中i∈[1,校验序列p中的校验比特总数],j∈[1,信息序列u中的信息总数],校验序列p的校验比特总数等于PI矩阵的行数,Pi,j表示PI矩阵中的第i行第j列元素;
然后,将信息序列u和校验序列p进行组合得到编码序列c=[u|p]。
优选地,步骤(4)中的噪声生成模块生成AWGN序列具体包括如下子步骤:
(4-2)对于步骤(4-1)生成的每个随机数对而言,将两个32位的随机数进行拆分和拼接,以得到一个48位的随机数uk,0和一个16位的随机数uk,1,从而形成更新后的随机数对,所有更新后的随机数对形成随机数对集合U={(u1,0,u1,1),(u2,0,u2,1),…,(ulength,0,ulength,1)},其中
(4-3)针对步骤(4-2)生成的随机数对集合U中的每个随机数对而言,获取其中随机数uk,0的科学计数法表达式中的参数Mk,u和Ek,u,分别对参数Mk,u和Ek,u进行对数运算,并将对数运算的结果进行求和处理,以得到求和结果ek;
(4-5)针对步骤(4-2)生成的随机数对集合U中的每个随机数对而言,对其中的随机数uk,1分别进行余弦和正弦计算,以得到该随机数uk,1对应的余弦计算结果gk,0和正弦计算结果gk,1,具体是:
gk,0=cos(uk,1*2π)
gk,1=sin(uk,1*2π)
(4-6)针对步骤(4-2)生成的随机数对集合U中的每个随机数对而言,根据步骤(4-5)得到的随机数uk,1的余弦计算结果gk,0和正弦计算结果gk,1,以及步骤(4-4)得到的乘法结果fk,计算得到一个AWGN噪声对ak,0和ak,1,所有的AWGN噪声对构成AWGN噪声序列A={a0,0,a0,1,a1,0,a1,1,…,alength,0,alength,1};
优选地,步骤(4-3)具体为,首先对参数Mk,u和Ek,u进行对数计算具体是:
ek,2=round(-2ln2*Ek,u)
其中round()表示四舍五入函数。
然后再计算:
ek=ek,1+ek,2
步骤(4-4)具体为,首先对参数Mk,e和Ek,e进行开方计算具体是:
然后再计算:
fk=fk,1*fk,2
步骤(4-6)是按照以下公式计算得到两个AWGN噪声对ak,0和ak,1:
ak,0=gk,0*fk*sigma
ak,1=gk,1*fk*sigma
其中sigma表示设定的信噪比参数。
优选地,步骤(7)中译码过程具体包括如下子步骤:
(7-1)设置当前迭代次数IterationNum=0;
(7-2)判断当前迭代次数IterationNum是否大于等于最大迭代次数IterationNummax,如果是则表示编码序列D的译码过程失败,过程结束,否则进入步骤(7-3);
(7-3)设置计数器集合DCnt={dCnt0,dCnt1,…,dCntN},并设置dCntn=0,其中n∈[1,N],计数器dCntn表示编码序列D中的每个比特dn对应的计数器;
(7-4)将校验矩阵H的每一行元素和编码序列D进行乘加计算,得到校验结果集合S={S1,S2,…,SM};
(7-5)设置计数器c1=1,c2=1,c3=0。
(7-6)判断计数器c1是否大于集合S的长度M,如果是,则进入步骤(7-9),否则获取校验结果集合S中的第c1个元素Sc1,并判断Sc1是否为0,如果是,则设置计数器c1=c1+1,c3=c3+1,并重复本步骤,否则进入步骤(7-7);
(7-7)判断计数器c2是否大于校验矩阵H的列数N,如果是,则设置计数器c1=c1+1,c2=1,并返回步骤(7-6);否则判断校验矩阵H的第c1行第c2列的元素Hc1,c2是否为0,如果是,则设置计数器c2=c2+1,并返回步骤(7-7),否则进入步骤(7-8);
(7-8)设置编码序列D的第c2个比特对应的计数器dCntc2=dCntc2+1,同时计数器c2=c2+1,并返回步骤(7-7);
(7-9)判断计数器c3是否等于集合S的长度M,如果是,则表示编码序列D的译码过程成功,过程结束,否则进入步骤(7-10);
(7-10)设置计数器c4=1;
(7-11)对步骤(7-8)计算更新后得到的计数器集合DCnt,判断该计数器集合DCnt中的元素dCntc4是否等于校验矩阵H的列重(即该校验矩阵的每一列中1的个数),如果是,进入步骤(7-12),否则设置计数器c4=c4+1,进入步骤(7-13);
(7-12)对编码序列D的第c4个比特进行比特翻转(即将比特0翻转为比特1,或者将比特1翻转为比特0),从而形成新的编码序列D,设置当前迭代次数IterationNum=IterationNum+1,并返回步骤(7-2);
(7-13)判断计数器c4是否大于计数器集合DCnt的长度N,如果是,进入步骤(7-14),否则返回步骤(7-11);
(7-14)获取计数器集合DCnt中的最大值在该计数器集合中的序号c5,对编码序列D的第c5个比特进行比特翻转,从而得到新的编码序列D,设置当前迭代次数IterationNum=IterationNum+1,并返回步骤(7-2)。
优选地,步骤(7-4)是按照如下公式计算校验结果集合S中的每个校验结果Sm:
其中m∈[1,校验矩阵H的行数M],n∈[1,校验矩阵H的列数N],Hm,n为校验矩阵H的第m行第n列元素,dn为编码序列D的第n个比特。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
(1)本发明提出的基于硬件实现LDPC编译码的仿真系统,通过采用流水线结构,提高了LDPC编译码的效率,同时调制模块、编码模块、解调模块和译码模块各模块间采用并行结构,进一步提升了系统硬件资源的利用率,减少了LDPC编译码所需的时间。
(2)本发明针对基于硬件实现LDPC编译码的仿真系统设计的PI矩阵存储方法、AWGN序列生成方法和译码方法,其中PI矩阵存储方法省去了硬件资源消耗极大的高斯消元计算,提高硬件资源的利用率;AWGN序列生成方法在一个时钟周期内可以产生两个噪声值,提高了噪声值的生成效率;译码方法优化了比特翻转条件,减少了译码迭代次数。这些方法减少了LDPC编译码所需的时间。
(3)本发明针对基于硬件实现LDPC编译码的仿真系统,采用硬件实现在硬件编译工具中能够看到各模块硬件实现使用的资源以及最长延迟路径,并针对性优化。
附图说明
图1是本发明基于硬件实现LDPC编译码的仿真系统框图。
图2是本发明基于硬件实现LDPC编译码的仿真系统工作方法流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
以下就本发明中出现的技术术语进行详细解释和说明:
PI矩阵:为校验矩阵H经高斯消元后的矩阵,与校验矩阵H和生成矩阵G关系如下:
设有如下6行12列的校验矩阵H:
经过高斯消元后,校验矩阵H转化为右边是单位矩阵的形式,简称PI矩阵,表示为[P|I]如下:
生成矩阵G可以用P矩阵来进行表示
G=[I|PT]
如图1所示,本发明提供了一种基于硬件实现LDPC编译码的仿真系统,包括随机信息序列生成模块、编码模块、噪声生成模块、调制模块、数据缓存模块、解调模块和译码模块。
随机信息序列生成模块的输出端与编码模块的输入端通讯连接,编码模块的输出端和噪声生成模块的输出端分别与调制模块的输入端通讯连接,调制模块的输出端与数据缓存模块输入端通讯连接,同时调制模块的输出端和数据缓存模块输出端分别与解调模块输入端通讯连接,解调模块输出端和译码模块输入端通讯连接。
随机信息序列生成模块用于随机生成信息序列,并发送给编码模块。
具体而言,随机信息序列生成模块可以采用Moore型有限状态机实现。
编码模块包括用于存储PI矩阵的第一存储单元,获取预先存储在其第一存储单元中的PI矩阵,并将该PI矩阵和来自随机信息序列生成模块的信息序列进行运算处理,以得到编码序列;其中存储PI矩阵的第一存储单元包括单端口的第一只读存储器ROM和第一地址计数器,第一ROM用于存储PI矩阵中的元素,第一地址计数器用于向第一ROM发送PI矩阵的读地址和读信号;第一地址计数器在PI矩阵的地址范围内每个时钟周期加一,第一ROM在收到读信号开始的两个时钟周期后获取读地址的数据,并发给编码模块。
具体而言,编码模块可以采用时序逻辑电路以Moore型有限状态机的形式实现。
噪声生成模块用于生成加性高斯白噪声AWGN序列,每个周期可以产生两个AWGN噪声值,多个周期的循环计算得到AWGN序列。
具体而言,噪声生成模块可以采用组合逻辑电路和乘法器进行运算处理,以及用寄存器存储中间计算过程的乘法计算结果、开方计算结果和正弦余弦计算结果。
调制模块用于对来自编码模块的编码序列进行BPSK调制处理,以得到调制后的数据序列,再将调制后的数据序列与AWGN序列进行对应位求和,以得到加噪后的数据序列,并将加噪后的数据序列及其地址发送给数据缓存模块存储。
具体而言,调制模块可以采用一个Moore型有限状态机实现。
数据缓存模块包括一个双端口RAM和第三地址计数器,双端口RAM用于在一个时钟周期内同时对加噪后的数据序列的两个数据进行存储或者读出,对调制模块发送过来的加噪后的数据序列及其地址进行存储,并在解调模块解调前将其缓存的数据读出;第三地址计数器用于在每次双端口RAM读出数据前向其发送读地址和读信号,在数据地址范围内每个时钟周期加一;双端口RAM在收到读信号开始的两个时钟周期后获取读地址对应的数据,并发送给解调模块。
解调模块从数据缓存模块读取加噪后的数据序列,对该加噪后的数据序列进行BPSK解调,以得到解调后的编码序列,并发送给译码模块。
具体而言,解调模块可以采用判决电路和Moore型有限状态机实现。
译码模块包含存储校验矩阵H的第二存储单元,用于获取预先存储在其存储单元中的校验矩阵H,并根据该校验矩阵H对解调模块输出的编码序列进行译码处理;其中存储校验矩阵H的第二存储单元包括单端口的第二ROM和第二地址计数器,第二ROM用于存储校验矩阵H中的元素,第二地址计数器用于向第二ROM发送校验矩阵H的读地址和读信号;第二地址计数器在校验矩阵H的地址范围内每个时钟周期加一,第二ROM在收到读信号开始的两个时钟周期后获取读地址的数据,并发送给译码模块。
具体而言,译码模块可以采用一个Moore型有限状态机和一组计数器实现,译码模块读取校验矩阵H的行元素后,将其存储在D触发器中。将解调模块输出的编码序列和校验矩阵H的行元素进行乘法运算后,对运算结果进行校验判断,D触发器根据校验结果触发相应计数器累加,再对计数器进行比较判决,对编码序列的相应位进行比特翻转得到新的编码序列,再次重复译码过程。
如图2所示,本发明还提供了一种上述基于硬件实现LDPC编译码的仿真系统的工作方法,包括如下步骤:
(1)随机信息序列生成模块随机生成信息序列u,并将生成的该信息序列u发送到编码模块;
具体而言,信息序列u的长度为预先存储在译码模块的第二存储单元中的校验矩阵H的列数N与行数M的差值。
在本实施方式是中,生成信息序列u可以采用例如线性反馈寄存器(linearfeedback shift register,简称LFSR)算法,应该理解本发明并不局限于该算法,任何本领域的随机序列生成算法/函数都在本发明的保护范围内。
其中,校验矩阵H为M*N的矩阵。
需要注意的是,本发明的LDPC编译码是针对的规则LDPC码。
(2)编码模块获取预先存储在其第一存储单元中的PI矩阵,将该PI矩阵和来自随机信息序列生成模块的信息序列u进行乘法处理,以得到校验序列p,将信息序列u和校验序列p进行组合,以得到编码序列c,并将得到的编码序列c发送到调制模块;
具体而言,校验序列p中的每个校验比特pi是按照以下公式计算:
其中i∈[1,校验序列p中的校验比特总数],j∈[1,信息序列u中的信息总数],校验序列p的校验比特总数等于PI矩阵的行数,Pi,j表示PI矩阵中的第i行第j列元素;
编码序列c=[u|p]。
通过以上描述可以看出,编码序列c的长度为校验矩阵H的列数N。
(3)调制模块对来自编码模块的编码序列c进行BPSK调制处理,以得到调制后的数据序列;
具体而言,本步骤中的BPSK调制是将编码序列中的比特0调制成1,比特1调制成-1。
(4)噪声生成模块生成加性高斯白噪声(Additive White Gaussian Noise,简称AWGN)序列,将该AWGN序列发送给调制模块,其中该AWGN序列的长度等于编码序列c的长度N。
本步骤具体包括如下子步骤:
(4-2)对于步骤(4-1)生成的每个随机数对而言,将两个32位的随机数进行拆分和拼接,以得到一个48位的随机数uk,0和一个16位的随机数uk,1,从而形成更新后的随机数对,所有更新后的随机数对形成随机数对集合U={(u1,0,u1,1),(u2,0,u2,1),…,(ulength,0,ulength,1)},其中
(4-3)针对步骤(4-2)生成的随机数对集合U中的每个随机数对而言,获取其中随机数uk,0的科学计数法表达式中的参数Mk,u和Ek,u,分别对参数Mk,u和Ek,u进行对数运算,并将对数运算的结果进行求和处理,以得到求和结果ek;
本步骤中,根据科学计数法的表示公式,随机数uk,0的科学计数法表达式中三个变量Sk,u、Mk,u和Ek,u的取值如下:
Sk,u=0;
Mk,u是最大为10位的二进制数,具体为随机数uk,0的二进制表示(48位数)中,按照从左到右的顺序从第一个1开始取连续的10位数,其中如果从第一个1开始所能够取到的位数小于10位,参数Mk,u就取当前所有的位数。
例如,如果随机数uk,0=00010100 01100000 11110000 00000000 0000000000000000,则从左到右的第一个1(即第4位)开始取后面连续10位数,则Mk,u=1010001100(十进制为652);
Ek,u≤0,其绝对值为随机数uk,0的二进制表示(48位数)中,按照从左到右的顺序得到的第一个1之前为0的位数。
例如,如果随机数uk,0=00010100 01100000 11110000 00000000 0000000000000000,则按照从左到右的顺序,第一个1(即第4位)之前为0的位数为3,则Ek,u=-3;
本步骤中,首先对参数Mk,u和Ek,u进行对数计算具体是:
ek,2=round(-2ln2*Ek,u)
其中round()表示四舍五入函数。
对数运算通过构造(0,1024)范围内的对数表,最终查表得到对数值。本步骤减小了表的大小,节省了查表开销。
然后,本步骤再计算:
ek=ek,1+ek,2
通过以上过程,就实现了对随机数uk,0进行对数计算,即ek=-2*ln(uk,0)。ek根据精度需求设定位宽,本实施例中ek设定为15位。
本步骤中,根据科学计数法的表示公式,步骤(4-3)计算得到的ek的科学计数法表达式中三个变量Sk,e、Mk,e和Ek,e的取值如下:
Sk,e=0;
Mk,e是最大为10位的二进制数,具体为步骤(4-3)计算得到的ek的二进制表示(本实施例中为15位数)中,按照从左到右的顺序从第一个1开始取连续的10位数,其中如果第一个1开始所能够取到的位数小于10位,参数Mk,e就取当前所有的位数。
例如,如果步骤(4-3)计算得到的ek=00100101 0101100,则从左到右的第一个1(即第3位)开始取后面连续10位数,Mk,e=1001010101(十进制为597)。
Ek,e≥0,其值为步骤(4-3)计算得到的ek提取了Mk,e后,Mk,e后面的位数。
例如,如果ek=00100101 0101100,则ek提取Mk,e后还剩3位,Ek,e=3。
本步骤中,首先对参数Mk,e和Ek,e进行开方计算具体是:
开方运算通过构造(0,1024)范围内的开方表,最终查表得到开方值。本步骤减小了表的大小,节省了查表开销。
然后,本步骤再计算:
fk=fk,1*fk,2
(4-5)针对步骤(4-2)生成的随机数对集合U中的每个随机数对而言,对其中的随机数uk,1分别进行余弦和正弦计算,以得到对应于该随机数uk,1对应的余弦计算结果gk,0和正弦运算结果gk,1,具体是:
gk,0=cos(uk,1*2π)
gk,1=sin(uk,1*2π)
具体而言,随机数uk,1为16位数,把随机数uk,1高2位映射到不同象限,即00映射为[0,π/2),01映射为[π/2,π),10映射为[π,3π/2),11映射为[3π/2,2π)。构造[0,214)范围内对应[0,π/2)的余弦表,uk,1其余象限经过余弦计算后的结果和uk,1经过正弦计算后的结果是通过三角函数转换关系得到。
(4-6)针对步骤(4-2)生成的随机数对集合U中的每个随机数对而言,根据步骤(4-5)得到的随机数uk,1的余弦计算结果gk,0和正弦计算结果gk,1,以及步骤(4-4)得到的乘法结果fk,计算得到一个AWGN噪声对ak,0和ak,1,所有的AWGN噪声对构成AWGN噪声序列A={a0,0,a0,1,a1,0,a1,1,…,alength,0,alength,1};
具体而言,本步骤是按照以下公式计算得到两个AWGN噪声对ak,0和ak,1:
ak,0=gk,0*fk*sigma
ak,1=gk,1*fk*sigma
其中sigma表示设定的信噪比参数,其取值范围为2dB~7dB,优选值为6dB。
(5)调制模块将步骤(3)调制后的数据序列与步骤(4)得到的AWGN噪声序列进行对应位求和,以得到加噪后的数据序列,并将加噪后的数据序列发送给数据缓存模块存储。
(6)解调模块从数据缓存模块获取加噪后的数据序列,对该加噪后的数据序列进行BPSK解调,并将解调得到的编码序列D={d1,d2,…,dN}发送给译码模块。
具体而言,解调模块是利用符号位对加噪后的数据序列进行解调,若数据序列中数据的符号位为0,则将该数据解调为0,若数据序列中数据的符号位为1,则将该数据解调为1。
(7)译码模块获取预先存储在其第二存储单元的校验矩阵H,并根据该校验矩阵H对解调模块输出的编码序列D进行译码处理。
本步骤具体包括如下子步骤:
(7-1)设置当前迭代次数IterationNum=0;
(7-2)判断当前迭代次数IterationNum是否大于等于最大迭代次数IterationNummax,如果是则表示编码序列D的译码过程失败,过程结束,否则进入步骤(7-3);
具体而言,IterationNummax的设置要综合权衡译码效率和译码性能,本实施例中设置IterationNummax=50;
(7-3)设置计数器集合DCnt={dCnt0,dCnt1,…,dCntN},并设置dCntn=0,其中n∈[1,N],计数器dCntn表示编码序列D中的每个比特dn对应的计数器;
(7-4)将校验矩阵H的每一行元素和编码序列D进行乘加计算,得到校验结果集合S={S1,S2,…,SM};
对于校验结果集合S中的每个校验结果Sm而言,按照如下公式计算:
其中m∈[1,校验矩阵H的行数M],n∈[1,校验矩阵H的列数N],Hm,n为校验矩阵H的第m行第n列元素,dn为编码序列D的第n个比特。
(7-5)设置计数器c1=1,c2=1,c3=0。
(7-6)判断计数器c1是否大于集合S的长度M,如果是,则进入步骤(7-9),否则获取校验结果集合S中的第c1个元素Sc1,并判断Sc1是否为0,如果是,则设置计数器c1=c1+1,c3=c3+1,并重复本步骤,否则进入步骤(7-7);
(7-7)判断计数器c2是否大于校验矩阵H的列数N,如果是,则设置计数器c1=c1+1,c2=1,并返回步骤(7-6);否则判断校验矩阵H的第c1行第c2列的元素Hc1,c2是否为0,如果是,则设置计数器c2=c2+1,并返回步骤(7-7),否则进入步骤(7-8);
(7-8)设置编码序列D的第c2个比特对应的计数器dCntc2=dCntc2+1,同时计数器c2=c2+1,并返回步骤(7-7);
(7-9)判断计数器c3是否等于集合S的长度M,如果是,则表示编码序列D的译码过程成功,过程结束,否则进入步骤(7-10);
(7-10)设置计数器c4=1;
(7-11)对步骤(7-8)计算更新后得到的计数器集合DCnt,判断该计数器集合DCnt中的元素dCntc4是否等于校验矩阵H的列重(即该校验矩阵的每一列中1的个数),如果是,进入步骤(7-12),否则设置计数器c4=c4+1,进入步骤(7-13);
(7-12)对编码序列D的第c4个比特进行比特翻转(即将比特0翻转为比特1,或者将比特1翻转为比特0),从而形成新的编码序列D,设置当前迭代次数IterationNum=IterationNum+1,并返回步骤(7-2);
(7-13)判断计数器c4是否大于计数器集合DCnt的长度N,如果是,进入步骤(7-14),否则返回步骤(7-11);
(7-14)获取计数器集合DCnt中的最大值在该计数器集合中的序号c5,对编码序列D的第c5个比特进行比特翻转,从而得到新的编码序列D,设置当前迭代次数IterationNum=IterationNum+1,并返回步骤(7-2)。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种基于硬件实现LDPC编译码的仿真系统,包括随机信息序列生成模块、编码模块、噪声生成模块、调制模块、数据缓存模块、解调模块和译码模块,其特征在于,
随机信息序列生成模块的输出端与编码模块的输入端通讯连接,编码模块的输出端和噪声生成模块的输出端分别与调制模块的输入端通讯连接,调制模块的输出端与数据缓存模块输入端通讯连接,同时调制模块的输出端和数据缓存模块输出端分别与解调模块输入端通讯连接,解调模块输出端和译码模块输入端通讯连接。
随机信息序列生成模块用于随机生成信息序列,并发送给编码模块。
编码模块包括用于存储PI矩阵的第一存储单元,获取预先存储在其第一存储单元中的PI矩阵,并将该PI矩阵和来自随机信息序列生成模块的信息序列进行运算处理,以得到编码序列;其中存储PI矩阵的第一存储单元包括单端口的第一只读存储器ROM和第一地址计数器,第一ROM用于存储PI矩阵中的元素,第一地址计数器用于向第一ROM发送PI矩阵的读地址和读信号;第一地址计数器在PI矩阵的地址范围内每个时钟周期加一,第一ROM在收到读信号开始的两个时钟周期后获取读地址的数据,并发给编码模块。
噪声生成模块用于生成加性高斯白噪声AWGN序列,每个周期可以产生两个AWGN噪声值,多个周期的循环计算得到AWGN序列。
调制模块用于对来自编码模块的编码序列进行BPSK调制处理,以得到调制后的数据序列,再将调制后的数据序列与AWGN序列进行对应位求和,以得到加噪后的数据序列,并将加噪后的数据序列及其地址发送给数据缓存模块存储。
数据缓存模块包括一个双端口RAM和第三地址计数器,双端口RAM 用于在一个时钟周期内同时对加噪后的数据序列的两个数据进行存储或者读出,对调制模块发送过来的加噪后的数据序列及其地址进行存储,并在解调模块解调前将其缓存的数据读出;第三地址计数器用于在每次双端口RAM读出数据前向其发送读地址和读信号,在数据地址范围内每个时钟周期加一;双端口RAM在收到读信号开始的两个时钟周期后获取读地址对应的数据,并发送给解调模块。
解调模块从数据缓存模块读取加噪后的数据序列,对该加噪后的数据序列进行BPSK解调,以得到解调后的编码序列,并发送给译码模块。
译码模块包含存储校验矩阵H的第二存储单元,用于获取预先存储在其存储单元中的校验矩阵H,并根据该校验矩阵H对解调模块输出的编码序列进行译码处理;其中存储校验矩阵H的第二存储单元包括单端口的第二ROM和第二地址计数器,第二ROM用于存储校验矩阵H中的元素,第二地址计数器用于向第二ROM发送校验矩阵H的读地址和读信号;第二地址计数器在校验矩阵H的地址范围内每个时钟周期加一,第二ROM在收到读信号开始的两个时钟周期后获取读地址的数据,并发送给译码模块。
2.一种基于硬件实现LDPC编译码的仿真系统的工作方法,其特征在于,包括以下步骤:
(1)随机信息序列生成模块随机生成信息序列u,并将生成的该信息序列u发送到编码模块;其中信息序列u的长度为预先存储在译码模块的第二存储单元中的校验矩阵H的列数N与行数M的差值;
(2)编码模块获取预先存储在其第一存储单元中的PI矩阵,将该PI矩阵和来自随机信息序列生成模块的信息序列u进行乘法处理,以得到校验序列p,将信息序列u和校验序列p进行组合,以得到编码序列c,并将得到的编码序列c发送到调制模块,编码序列c的长度为N;
(3)调制模块对来自编码模块的编码序列c进行BPSK调制处理,以得到调制后的数据序列;
(4)噪声生成模块生成加性高斯白噪声AWGN序列,将该AWGN序列发送给调制模块,其中该AWGN序列的长度等于编码序列c的长度N;
(5)调制模块将步骤(3)调制后的数据序列与步骤(4)得到的AWGN噪声序列进行对应位求和,以得到加噪后的数据序列,并将加噪后的数据序列发送给数据缓存模块存储;
(6)解调模块从数据缓存模块获取加噪后的数据序列,对该加噪后的数据序列进行BPSK解调,并将解调得到的编码序列D发送给译码模块;
(7)译码模块获取预先存储在其第二存储单元中的校验矩阵H,并根据该校验矩阵H对解调模块输出的编码序列D进行译码处理。
3.根据权利要求2所述的基于硬件实现LDPC编译码的仿真系统的工作方法,其特征在于步骤(2)中的PI矩阵是校验矩阵H经过高斯消元计算得到,并存储在编码模块的第一存储单元中,其中PI矩阵格式为[P|I]。
5.根据权利要求2所述的基于硬件实现LDPC编译码的仿真系统的工作方法,其特征在于步骤(4)中的噪声生成模块生成AWGN序列具体包括如下子步骤:
(4-2)对于步骤(4-1)生成的每个随机数对而言,将两个32位的随机数进行拆分和拼接,以得到一个48位的随机数uk,0和一个16位的随机数uk,1,从而形成更新后的随机数对,所有更新后的随机数对形成随机数对集合U={(u1,0,u1,1),(u2,0,u2,1),...,(ulength,0,ulength,1)},其中
(4-3)针对步骤(4-2)生成的随机数对集合U中的每个随机数对而言,获取其中随机数uk,0的科学计数法表达式中的参数Mk,u和Ek,u,分别对参数Mk,u和Ek,u进行对数运算,并将对数运算的结果进行求和处理,以得到求和结果ek;
(4-5)针对步骤(4-2)生成的随机数对集合U中的每个随机数对而言,对其中的随机数uk,1分别进行余弦和正弦计算,以得到该随机数uk,1对应的余弦计算结果gk,0和正弦计算结果gk,1,具体是:
gk,0=cos(uk,1*2π)
gk,1=sin(uk,1*2π)
(4-6)针对步骤(4-2)生成的随机数对集合U中的每个随机数对而言,根据步骤(4-5)得到的随机数uk,1的余弦计算结果gk,0和正弦计算结果gk,1,以及步骤(4-4)得到的乘法结果fk,计算得到一个AWGN噪声对ak,0和ak,1,所有的AWGN噪声对构成AWGN噪声序列A={a0,0,a0,1,a1,0,a1,1,…,alength,0,alength,1}。
7.根据权利要求2所述的基于硬件实现LDPC编译码的仿真系统的工作方法,其特征在于步骤(7)中译码过程具体包括如下子步骤:
(7-1)设置当前迭代次数IterationNum=0;
(7-2)判断当前迭代次数IterationNum是否大于等于最大迭代次数IterationNummax,如果是则表示编码序列D的译码过程失败,过程结束,否则进入步骤(7-3);
(7-3)设置计数器集合DCnt={dCnt0,dCnt1,...,dCntN},并设置dCntn=0,其中n∈[1,N],计数器dCntn表示编码序列D中的每个比特dn对应的计数器;
(7-4)将校验矩阵H的每一行元素和编码序列D进行乘加计算,得到校验结果集合S={S1,S2,...,SM};
(7-5)设置计数器c1=1,c2=1,c3=0。
(7-6)判断计数器c1是否大于集合S的长度M,如果是,则进入步骤(7-9),否则获取校验结果集合S中的第c1个元素Sc1,并判断Sc1是否为0,如果是,则设置计数器c1=c1+1,c3=c3+1,并重复本步骤,否则进入步骤(7-7);
(7-7)判断计数器c2是否大于校验矩阵H的列数N,如果是,则设置计数器c1=c1+1,c2=1,并返回步骤(7-6);否则判断校验矩阵H的第c1行第c2列的元素Hc1,c2是否为0,如果是,则设置计数器c2=c2+1,并返回步骤(7-7),否则进入步骤(7-8);
(7-8)设置编码序列D的第c2个比特对应的计数器dCntc2=dCntc2+1,同时计数器c2=c2+1,并返回步骤(7-7);
(7-9)判断计数器c3是否等于集合S的长度M,如果是,则表示编码序列D的译码过程成功,过程结束,否则进入步骤(7-10);
(7-10)设置计数器c4=1;
(7-11)对步骤(7-8)计算更新后得到的计数器集合DCnt,判断该计数器集合DCnt中的元素dCntc4是否等于校验矩阵H的列重(即该校验矩阵的每一列中1的个数),如果是,进入步骤(7-12),否则设置计数器c4=c4+1,进入步骤(7-13);
(7-12)对编码序列D的第c4个比特进行比特翻转(即将比特0翻转为比特1,或者将比特1翻转为比特0),从而形成新的编码序列D,设置当前迭代次数IterationNum=IterationNum+1,并返回步骤(7-2);
(7-13)判断计数器c4是否大于计数器集合DCnt的长度N,如果是,进入步骤(7-14),否则返回步骤(7-11);
(7-14)获取计数器集合DCnt中的最大值在该计数器集合中的序号c5,对编码序列D的第c5个比特进行比特翻转,从而得到新的编码序列D,设置当前迭代次数IterationNum=IterationNum+1,并返回步骤(7-2)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010766183.3A CN111817728B (zh) | 2020-08-03 | 2020-08-03 | 一种基于硬件实现ldpc编译码的仿真系统及其工作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010766183.3A CN111817728B (zh) | 2020-08-03 | 2020-08-03 | 一种基于硬件实现ldpc编译码的仿真系统及其工作方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111817728A true CN111817728A (zh) | 2020-10-23 |
CN111817728B CN111817728B (zh) | 2022-03-01 |
Family
ID=72864189
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010766183.3A Active CN111817728B (zh) | 2020-08-03 | 2020-08-03 | 一种基于硬件实现ldpc编译码的仿真系统及其工作方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111817728B (zh) |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060031734A1 (en) * | 2004-08-05 | 2006-02-09 | Nokia Corporation | Irregularly structured, low density parity check codes |
US20070292663A1 (en) * | 2004-09-13 | 2007-12-20 | Tamfelt Oyjabp | Fabric Structure For Use In Paper Machine And Manufacturing Method Thereof |
CN101141133A (zh) * | 2007-10-23 | 2008-03-12 | 北京邮电大学 | 一种结构化低密度校验码的编码方法 |
TW200939641A (en) * | 2008-02-18 | 2009-09-16 | Samsung Electronics Co Ltd | Apparatus and method for encoding and decoding channel in a communication system using low-density parity-check codes |
CN102075198A (zh) * | 2011-01-11 | 2011-05-25 | 上海交通大学 | 准循环低密度奇偶校验卷积码编译码系统及其编译码方法 |
US20160218745A1 (en) * | 2015-01-27 | 2016-07-28 | Electronics And Telecommunications Research Institute | Bit interleaver for low-density parity check codeword having length of 16200 and code rate of 2/15 and 16-symbol mapping, and bit interleaving method using same |
CN106371943A (zh) * | 2016-09-06 | 2017-02-01 | 华中科技大学 | 一种基于flash编程干扰错误感知的LDPC译码优化方法 |
US20180234113A1 (en) * | 2015-10-13 | 2018-08-16 | Huawei Technologies Co.,Ltd. | Decoding device, decoding method, and signal transmission system |
CN109586732A (zh) * | 2018-10-18 | 2019-04-05 | 天津大学 | 中短码ldpc编解码系统和方法 |
CN109921877A (zh) * | 2018-12-26 | 2019-06-21 | 中国电子科技集团公司第二十研究所 | 一种awgn信道下基于cuda架构的ldpc码并行译码方法 |
CN110504997A (zh) * | 2019-09-03 | 2019-11-26 | 南京工程学院 | 一种基于mimo的快速编码ldpc光通信系统 |
CN110601699A (zh) * | 2019-09-28 | 2019-12-20 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 码率动态可变的多元ldpc码实现方法 |
CN110830048A (zh) * | 2019-11-14 | 2020-02-21 | 天津大学 | 基于奇偶校验矩阵分解构造全分集ldpc码的纠错方法 |
CN111162795A (zh) * | 2020-01-06 | 2020-05-15 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 基于校验子矩阵分割的ldpc编码硬件实现方法 |
-
2020
- 2020-08-03 CN CN202010766183.3A patent/CN111817728B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060031734A1 (en) * | 2004-08-05 | 2006-02-09 | Nokia Corporation | Irregularly structured, low density parity check codes |
US20070292663A1 (en) * | 2004-09-13 | 2007-12-20 | Tamfelt Oyjabp | Fabric Structure For Use In Paper Machine And Manufacturing Method Thereof |
CN101141133A (zh) * | 2007-10-23 | 2008-03-12 | 北京邮电大学 | 一种结构化低密度校验码的编码方法 |
TW200939641A (en) * | 2008-02-18 | 2009-09-16 | Samsung Electronics Co Ltd | Apparatus and method for encoding and decoding channel in a communication system using low-density parity-check codes |
CN102075198A (zh) * | 2011-01-11 | 2011-05-25 | 上海交通大学 | 准循环低密度奇偶校验卷积码编译码系统及其编译码方法 |
US20160218745A1 (en) * | 2015-01-27 | 2016-07-28 | Electronics And Telecommunications Research Institute | Bit interleaver for low-density parity check codeword having length of 16200 and code rate of 2/15 and 16-symbol mapping, and bit interleaving method using same |
US20180234113A1 (en) * | 2015-10-13 | 2018-08-16 | Huawei Technologies Co.,Ltd. | Decoding device, decoding method, and signal transmission system |
CN106371943A (zh) * | 2016-09-06 | 2017-02-01 | 华中科技大学 | 一种基于flash编程干扰错误感知的LDPC译码优化方法 |
CN109586732A (zh) * | 2018-10-18 | 2019-04-05 | 天津大学 | 中短码ldpc编解码系统和方法 |
CN109921877A (zh) * | 2018-12-26 | 2019-06-21 | 中国电子科技集团公司第二十研究所 | 一种awgn信道下基于cuda架构的ldpc码并行译码方法 |
CN110504997A (zh) * | 2019-09-03 | 2019-11-26 | 南京工程学院 | 一种基于mimo的快速编码ldpc光通信系统 |
CN110601699A (zh) * | 2019-09-28 | 2019-12-20 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 码率动态可变的多元ldpc码实现方法 |
CN110830048A (zh) * | 2019-11-14 | 2020-02-21 | 天津大学 | 基于奇偶校验矩阵分解构造全分集ldpc码的纠错方法 |
CN111162795A (zh) * | 2020-01-06 | 2020-05-15 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 基于校验子矩阵分割的ldpc编码硬件实现方法 |
Non-Patent Citations (5)
Title |
---|
SANDRO BELLINI 等: "LDPC Design for Block Differential Modulation in Optical Communications", 《JOURNAL OF LIGHTWAVE TECHNOLOGY》 * |
ZAHRAA RAAD MAYOOF HAJIYAT 等: "Channel Coding Scheme for 5G Mobile Communication System for Short Length Message Transmission", 《WIRELESS PERSONAL COMMUNICATIONS》 * |
朱继华 等: "基于Hoey序列的QC-LDPC码构造方法", 《重庆邮电大学学报(自然科学版)》 * |
米乐 等: "基于低密度奇偶校验码和脉冲位置调制的水下长距离光通信系统设计", 《中国激光》 * |
阳小珊 等: "NAND闪存编程干扰错误研究", 《中国传媒大学学报(自然科学版)》 * |
Also Published As
Publication number | Publication date |
---|---|
CN111817728B (zh) | 2022-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Yuan et al. | Low-latency successive-cancellation list decoders for polar codes with multibit decision | |
US20080028275A1 (en) | Efficient Encoding and Decoding Methods for Representing Schedules and Processing Forward Error Correction Codes | |
US11190221B2 (en) | Polar decoder with LLR-domain computation of f-function and g-function | |
CN104079382A (zh) | 一种基于概率计算的极化码译码器和极化码译码方法 | |
JP2020532927A (ja) | ポーラー符号のためのブロック並列凍結ビット生成 | |
CN113110954A (zh) | 一种crc码并行计算方法、装置及其应用 | |
CN109375897B (zh) | 伪随机序列的生成方法 | |
CN101296053A (zh) | 计算循环冗余校验码之方法及系统 | |
US10756763B2 (en) | Systems and methods for decoding bose-chaudhuri-hocquenghem encoded codewords | |
CN108809323B (zh) | 循环冗余校验码的生成方法和装置 | |
CN111817728B (zh) | 一种基于硬件实现ldpc编译码的仿真系统及其工作方法 | |
CN106549677A (zh) | 高速并行bch码译码方法及装置 | |
CN115632662B (zh) | 一种rs译码中的伴随式计算方法、装置、设备及介质 | |
CN112579045A (zh) | 伪随机序列的生成方法、装置及存储介质 | |
CN115882876B (zh) | 一种数据编码校验方法、系统、设备、介质及电路 | |
CN117014017A (zh) | 一种基于高位宽数据计算多项式除法余数的crc计算方法 | |
KR20040044589A (ko) | 다수결 논리를 이용한 rm 부호의 연판정 복호 방법 및그 장치 | |
CN108959977B (zh) | 一种适用于sram puf的软硬混合解码方法 | |
CN116707707A (zh) | 联合极化检测译码方法及相关设备 | |
WO2019102450A1 (en) | Low latency sequential list decoding of polar codes cross-references to related applications | |
CN115085742B (zh) | 解码方法、装置、电子设备和存储介质 | |
CN111162800A (zh) | 并行卷积编码方法及编码器 | |
CN117200809B (zh) | 用于纠两个误码的rs码的低功耗钱搜索和错误估值电路 | |
CN113971015B (zh) | Uia2计算电路及其数据处理方法、芯片、电子设备及存储介质 | |
CN117254823B (zh) | 一种并行rs编码方法、装置、系统及计算机存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |