CN109802687B - 一种基于fpga的qc-ldpc码的高速码率兼容ldpc编码器 - Google Patents
一种基于fpga的qc-ldpc码的高速码率兼容ldpc编码器 Download PDFInfo
- Publication number
- CN109802687B CN109802687B CN201811592741.8A CN201811592741A CN109802687B CN 109802687 B CN109802687 B CN 109802687B CN 201811592741 A CN201811592741 A CN 201811592741A CN 109802687 B CN109802687 B CN 109802687B
- Authority
- CN
- China
- Prior art keywords
- state
- encoder
- input
- equal
- code rate
- 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.)
- Active
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/70—Reducing energy consumption in communication networks in wireless communication networks
Abstract
一种基于FPGA的QC‑LDPC码的高速码率兼容LDPC编码器,通过控制模块将输入信息序列的每个信息子块的分量的列向量送至校验位计算模块;将信息子块的分量的列向量通过延迟模块进行时间延迟后送至选择移位输出模块;移位操作模块,根据编码器的码率rate,确定循环移位寄存器的移位方法,并送至循环移位寄存器;根据确定循环移位寄存器的移位方法,对循环子矩阵Bi,j的首行数据bi,j (0)进行移位操作,根据移位操作后的结果与输入信息比特序列的逐信息比特,计算得到校验向量,将校验向量送至选择移位输出模块;选择移位输出模块,在不同时间输出校验向量和信息子块的分量的列向量,本发明的高速码率兼容编码器架构,不同码率之间可以最大程度地实现资源共享。
Description
技术领域
本发明涉及一种基于FPGA的QC-LDPC码的高速码率兼容LDPC编码器,属于高速码率兼容编码器技术领域。
背景技术
随着我国空间技术和通信技术的发展,遥感卫星、通信卫星、中继卫星,以及深空探测、载人飞船和空间站等提升卫星数据传输速率的需求日益迫切。在信道编码方面,传统的RS码、卷积码、级联码已不能满足数传系统对编码增益、编码效率、吞吐量等参数的要求。LDPC码以其纠错性能高、错误平层(error floor)低、硬件实现相对简单、易于并行设计等特点,在国内外卫星数传系统中获得了较多的应用。
LDPC码是一种非常逼近香农限的编码方式。研究表明,其性能能够达到与香农限仅差0.0045dB。此外与最早发现的逼近香农限的码Turbo码相比,LDPC的译码算法更为简单,因此LDPC码是目前纠错编码领域最有前景以及研究最多的编码方案,现已广泛应用于卫星高速数传、光纤、卫星数字视频和音频广播、磁记录设备等领域。在卫星应用方面,国际空间数据系统咨询委员会(CCSDS)已将LDPC写入了CCSDS131.1-O-2标准(Low densityparity check codes for use in near-earth and deep spaceapplications.September 2007)。该标准提出了一种适合近地和深空应用的LDPC码,该码是一种准循环码,这种码的构造涉及将较小的置换矩阵(或循环子矩阵)并列放置在一起,而形成一个较大的校验矩阵或者基准矩阵。用这种方式来构造校验矩阵有两个优点,其一是编码器复杂度可与码长或校验比特呈线性关系,其二是编译码器硬件实现的复杂度可以降低。标准中的LDPC码有1/2、2/3、4/5、7/8共4种码率,7/8码率LDPC码是针对近地应用设计的,1/2、2/3、4/5码率的LDPC码是专门为深空应用构造的原模图码。
一般在实现LDPC编码器时有两种方法,一是利用码结构的校验矩阵具有稀疏性来实现高速编码;二是根据码的结构特点,利用生成矩阵的准循环特性进行编码,以便实现兼容多码率编码器,可以最大化地复用硬件资源。从文献调研可以看到现阶段大部分文献中研究采用校验矩阵进行优化编码的算法,广泛应用于第二代卫星广播标准(DVB-S2)、无线局域网802.11系列、无线城域网802.16e,DVB-T2,802.11ac等标准。但为了解决CCSDS标准及其他具有这种类型的QC-LDPC码的编码器的实现问题,则需要利用生成矩阵的准循环特性来进行编码。这类编码器的文献中研究相对较少一些,这种基于生成矩阵的编码器吞吐量一般较低,且很少考虑逐帧可变的码率兼容设计问题。
发明内容
本发明解决的技术问题为:克服现有技术难题,提供一种基于FPGA的QC-LDPC码的高速码率兼容LDPC编码器,该方法通过在QC-LDPC编码器中引入状态机控制方法,不仅实现了编码器的逐帧可变的码率兼容性,而且提高了编码器系统的工作稳定性。为了节省资源,编码器实现时还给出了一种采用移位寄存器进行校验位变换方法。另外,在高速和码率兼容设计上,本发明通过将编码器分为资源共享模块和非资源共享模块两部分,非常有利于实现码率兼容的设计,对于P路并行待编码数据、不同速率和不同码长的编码器,资源共享模块设计不变,仅需要改变非资源共享模块的设计即可。其中,本发明还提出了一种码率兼容QC-LDPC编码器循环子矩阵生成元向量的存储方法,可有效地降低FPGA的逻辑资源和BRAM资源。显然本发明这种方法即可实现高速译码又可在码率兼容上均具有优势,且具有存储器资源利用率高,译码吞吐量高的特点。使用这个架构,在Xilinx Virtex5xc5vfx130tFPGA上实现了一个四种码率兼容的QC-LDPC编码器,该编码器时延小,FPGA资源利用率高,速度高,码率兼容LDPC编码器总吞吐量高达1.6Gbps。
本发明解决的技术方案为:一种基于FPGA的QC-LDPC码的高速码率兼容LDPC编码器,包括:控制模块、移位操作模块、存储器、循环移位寄存器、延迟模块、校验位计算模块、选择移位输出模块;
控制模块接收外部输入的编码器的码率rate、输入门控信号synin、输入信息序列datin;
控制模块将输入信息序列datin(mp×rL)按帧分成r个长为L的信息子块Mi=(A(i-1)L+1,A(i-1)L+2,…,AiL),1≤i≤r,每个信息子块的分量为一个列向量,含有P个元素,即A(i-1)L+l=(a1,(i-1)L+l,…,aP,(i-1)L+l)T,1≤i≤r,所以输入信息序列长度为P×rL比特,即mp×rL=(M1 M2…Mr);
根据外部输入的编码器的码率rate,产生控制信号state和addr,在控制信号state和addr控制下,从存储器rom_g中读出每个信息子块Mi对应码率的循环子矩阵Bi,j的首行向量bi,j (0)(其中Bi,j=(bi,j (0),bi,j (1),…,bi,j (L-1))T,Bi,j的每个行向量bi,j (l),0≤l<L为上一个行向量bi,j (l-1)的循环一位右移向量,显然Bi,j可由首行向量bi,j (0)来确定,所以称bi,j (0)为Bi,j的生成元)送至循环移位寄存器;(控制信号addr用来控制存储器的读地址,控制信号state用来控制存储器的读时刻与读取状态)
控制模块将输入信息序列datin(mp×rL)的每个信息子块分量的列向量A(i-1)L+l=(a1,(i-1)L+l,…,aP,(i-1)L+l)T,1≤i≤r和控制信号state送至校验位计算模块;控制模块将控制信号state、输入门控信号synin和信息子块分量的列向量A(i-1)L+l通过延迟模块进行时间延迟后得到控制信号state_dly、门控信号synin_dly和列向量A_dly送至选择移位输出模块;
控制模块根据外部输入的编码器的码率rate,确定生成矩阵Gqc中Bi,j的行数量r、列数量c和生成矩阵Gqc中Bi,j的维数L送至移位操作模块,移位操作模块根据r、c和L,从循环移位寄存器中读取c个长度为L的生成元的循环移位向量bi,j (l),1≤j≤c,0≤l≤L-1,r对应r个信息子块Mi的输入总时间,1≤i≤r,在信息子块输入期间,对bi,j (l)进行循环移位,每个时钟周期进行一次移位,并将移位结果反馈给循环移位寄存器;
循环移位寄存器,用来存储c个生成元的循环移位向量bi,j (l),0≤l≤L-1,向量bi,j (l)的长度为L,其初始值为从存储器rom_g中读出的每个信息子块Mi对应码率的循环子矩阵Bi,j的首行向量bi,j (0),送至移位操作模块进行移位操作,反馈移位操作后的结果即生成元的循环移位向量bi,j (l)并送至校验位计算模块;
校验位计算模块,根据控制模块输入的状态state、生成元的循环移位向量bi,j (l)和输入信息子块分量的列向量A(i-1)L+l,当state为S1状态时,计算校验位当state为S2状态时,校验位Cj的列向左移动1位,最右边1列数据补0,并将得到的校验位Cj的P个元素的列向量Cpj送至选择移位输出模块;
选择移位输出模块,在不同的控制信号state_dly,datout输出校验位Cj的列向量Cpj和信息子块分量的列向量A(i-1)L+l的延迟信号A_dly的控制下,state_dly为S0时,输出门控信号synout输出高电平,为S0以外的其它状态时,synout输出低电平。
控制模块接收外部输入门控信号synin、输入信息序列datin和输入的编码器的码率rate,产生控制信号state、addr、r、c和L。具体为:
控制模块采用状态机来实现,状态机的状态转移图如图2所示,控制模块需要输出状态信号state来对整个编码器进行控制,state依次取S0,S1,S2,S3四个值。图2中h表示输入门控信号synin的长度,k=r×L表示输入信息序列datin的时钟周期长度,即LDPC编码器信息位长度,m=c×L表示校验位的时钟周期长度。输入的编码器的码率rate对应不同的r、c和L参数。
编码器复位时,状态机初始化为S3状态;当输入门控信号synin为高电平时,cnt=0,此时状态机转移到S0状态,cnt大于等于0小于h时,状态机保持在S0;当cnt=h时,状态机转移到S1状态,cnt大于等于h小于h+k时,状态机保持在S1;当cnt=h+k时,状态机转移到S2状态,cnt大于等于h+k小于h+k+m,即h+n(其中n=k+m)时,状态机保持在S2;当cnt=h+n时,状态机转移到S3状态,cnt大于等于h+n小于时,状态机保持在S3。
对于编码器,状态机在state=S0状态时,addr的初值为0,选择移位输出模块的synout输出输入门控信号synin的延迟信号syn_dly,datout输出信息子块分量的列向量A(i-1)L+l的延迟信号A_dly;状态机在state=S1状态时,addr每L个时钟周期增加1,选择移位输出模块的datout输出信息子块分量的列向量A(i-1)L+l的延迟信号A_dly同时,移位操作模块、存储器、循环移位寄存器和校验位计算模块都在这个状态下工作。状态机在state=S2状态时,addr的值为0,此时选择输出模块将校验位经过移位寄存器输出;状态机在state=S3状态时,addr的值为0,编码器不进行任何操作,datout和synout仅输出全零数据和低电平门控信号。按照这种状态机控制方式,编码器工作时序图如图3所示。
本发明设计的控制模块采用状态机来实现,状态机的状态转移图如图2所示,控制模块需要输出状态信号state来对整个编码器进行控制,state依次取S0,S1,S2,S3四个值。图2中h表示输入门控信号synin的长度,k=r×L表示输入信息序列datin的时钟周期长度,即LDPC编码器信息位长度,m=c×L表示校验位的时钟周期长度。输入的编码器的码率rate对应不同的r、c和L参数。
编码器复位时,状态机初始化为S3状态;当输入门控信号synin为高电平时,cnt=0,此时状态机转移到S0状态,cnt大于等于0小于h时,状态机保持在S0;当cnt=h时,状态机转移到S1状态,cnt大于等于h小于h+k时,状态机保持在S1;当cnt=h+k时,状态机转移到S2状态,cnt大于等于h+k小于h+k+m,即h+n(其中n=k+m)时,状态机保持在S2;当cnt=h+n时,状态机转移到S3状态,cnt大于等于h+n小于时,状态机保持在S3。
对于编码器,状态机在state=S0状态时,选择移位输出模块的synout输出输入门控信号synin的延迟信号syn_dly,datout输出信息子块分量的列向量A(i-1)L+l的延迟信号A_dly;状态机在state=S1状态时,选择移位输出模块的datout输出信息子块分量的列向量A(i-1)L+l的延迟信号A_dly同时,移位操作模块、存储器、循环移位寄存器和校验位计算模块都在这个状态下工作。状态机在state=S2状态时,此时选择输出模块将校验位经过移位寄存器输出;状态机在state=S3状态时,编码器不进行任何操作,datout和synout仅输出全零数据和低电平门控信号。按照这种状态机控制方式,编码器工作时序图如图3所示。
根据外部输入的编码器的码率rate,确定r,c和L,具体为:
对于QC-LDPC码,其系统形式生成矩阵Gqc如下:
这里Ik表示大小为k×k的单位矩阵,Pk×(n-k)表示大小为k×(n-k)的矩阵,生成矩阵Gqc矩阵的大小为k×n,k=r×L,n-k=L×c,QC-LDPC码的帧长n=(r+c)L。其中Bi,j是大小为L×L的循环子矩阵,表示如下:
可以看到,Bi,j的每个行向量bi,j (l)为上各行向量bi,j (l-1)的循环一位右移向量,所以如果知道Bi,j的首行向量bi,j (0)就可以得到Bi,j,称bi,j (0)为循环子矩阵的生成元。
对于不同的QC-LDPC码,其码率rate信号对应不同的帧长(r+c)L,其中L为循环子矩阵Bi,j生成元向量bi,j (0)的长度,rL和cL分别为QC-LDPC码的生成矩阵Gqc循环校验位对应的行数和列数。这些参数均由外部输入来确定,本发明的编码器采用这种方式来兼容不同码率码长的QC-LDPC码。
输入门控信号synin,如图3所示,具体为:高低电平交替的控制信号,高电平持续h个时钟周期,表示帧同步信号的长度为h比特,低电平持续至少为(r+c)L个时钟周期,输入的编码器的码率rate对应不同的r,c和L参数。
输入信息序列datin,具体为:待编码的信息,并行P比特输入(P为编码器的并行路数),即一个时钟周期输入一个信息子块分量的列向量A(i-1)L+l。
控制模块将输入信息序列datin(mp×rL)按帧分成r个长L的信息子块,即mp×rL=(M1M2 …Mr),每个信息子块为Mi=(A(i-1)L+1,A(i-1)L+2,…,AiL),1≤i≤r,每个信息子块的分量为一列向量A(i-1)L+l,每个列向量含有P个分量,即,1≤i≤r,1≤k≤L,所以每帧中信息序列长度为P×rL比特。
存储模块rom_g接收控制模块输入的r,c,L和addr信号,读出存储器addr地址中的c个循环子矩阵Bi,j的生成元向量bi,k (0),k=1,…,c,具体为:
由于每帧输入信息序列datin可分为r个信息子块Mi,分别对应c个循环子矩阵Bi,j,1≤i≤r,1≤j≤c,显然单个码率的QC-LDPC码对应r×c个循环子矩阵Bi,j,为了实现码率兼容LDPC编码器,所有码率情况下的生成矩阵的循环子矩阵Bi,j的首行向量bi,j (0)均需要存储到存储器rom_g中,共需要存储rate×r×c个生成元。
为了充分利用FPGA的BRAM资源,本发明设计的码率兼容QC-LDPC编码器对于这部分资源采用了压缩存储的方法,如图5所示。考虑到编码器需要并行对各个校验位块进行计算,校验位分成了c块,所以需要同时从存储器rom_g中读出c个数据,在FPGA中采用BRAM(BRAM为FPGA中集成的存储资源硬核),为了提高BRAM资源的利用率,本发明采用双端口ROM的A,B口同时读取循环子矩阵Bi,j的生成元向量bi,j (0),采用双口ROM后,需要c/2块BRAM资源来实现存储器rom_g,对于单个码率的存储器的位宽为L,深度为2r。
存储模块rom_g根据接收控制模块输入的r,c,L和addr信号,可以从存储器rom_g的地址addr中读出c个生成元向量bi,k (0),k=1,…,c,并送至循环移位寄存器。
输入信息序列datin(mp×rL)的每个信息子块的分量表示为:一个列向量A(i-1)L+k,每个列向量含有P个分量,即A(i-1)L+k=(a1,(i-1)L+k,…,aP,(i-1)L+k)T,1≤i≤r,1≤k≤L。
控制模块将控制信号state、输入门控信号synin和信息子块分量的列向量A(i-1)L+l通过延迟模块进行时间延迟,具体为:
状态机状态state信号、同步门控信号synin和信息子块分量的列向量A(i-1)L+k分别被延迟3个时钟后输出,输出信号分别为state_dly、syn_dly和A_dly。
在控制信号控制下,移位操作模块,根据编码器的码率rate,确定循环移位寄存器的移位方法,具体为:
对于不同的码率rate的QC-LDPC码,对应不同的循环子矩阵Bi,j生成元向量bi,j (0),不同的r,c,L参数。信息子块Mi,1≤i≤r输入期间,存储器rom_g输出给循环移位寄存器的输入为c个生成元bi,k (0),k=1,…,c,占用c个寄存器空间。输入每个信息子块Mi,1≤i≤r需要L个时钟周期,每个时钟周期对生成元进行一次移位得到c组数据bi,k (0),…,bi,k (L-1),k=1…,,c。
控制模块根据外部输入的编码器的码率rate,产生控制信号r,c,L送至移位操作模块,移位操作模块根据控制信号r,c,L,从循环移位寄存器中读出c个生成元的循环移位向量bi,j (0),j=1,…,c,r对应r个信息子块Mi,1≤i≤r的输入总时间,在信息子块输入期间,对bi,j (l)进行循环移位,每个时钟周期进行一次移位,得到bi,j (l+1),并将结果反馈给循环移位寄存器;
循环移位寄存器,根据确定循环移位寄存器的移位方法,对循环子矩阵Bi,j的生成元bi,j (0)进行移位操作,具体为:
循环移位寄存器,用来存储c个生成元的循环移位向量bi,j (l),0≤l≤L-1,向量bi,j (l)的长度为L,其初始值为从存储器rom_g中读出的每个信息子块Mi对应的循环子矩阵Bi,j的首行向量bi,j (0),送至移位操作模块进行移位操作,对于每个信息子块分量的列向量A(i-1)L+k,对应的移位操作模块的输出,即循环移位寄存器输入分别为:bi,j (0),bi,j (1),…,bi,j (L-1),移位操作模块反馈给循环移位寄存器的结果bi,j (l),1≤l<L还需要送至校验位计算模块;
校验位计算模块,根据控制模块输入的状态state、循环移位寄存器的输入bi,j (k)和信息子块分量的列向量A(i-1)L+k,计算得到校验位Cj的列向量Cpj,并送至选择移位输出模块,具体为:
当state为S1状态时,可以看到公式(1)的右矩阵为校验位对应的矩阵部分PcL×rL按Bi,j循环方阵分块,共有r行,c列,块长用L来表示。那么,校验位的计算公式如下:
将信息序列分为r个长为L的子块,即
mp×k=(M1 M2…Mr) (4)
其中,
Mi=(A(i-1)L+1,A(i-1)L+2,…,AiL)1≤i≤r (5)
由公式(3)和公式(4)可得:
利用矩阵的分块特性,两个超大矩阵mp×k与Pk×m的乘法可被分解为r×c次L bits向量与L×L矩阵的乘法和r×c次向量加法。因此,运算被进一步分解为c个L bits向量的内积,从而得到进一步简化。又因为Bi,j是循环子矩阵,所以只要知道它的生成元bi,j (0)就可以得到Bi,j。不同码率QC-LDPC码的生成元bi,j (0)值不同。通过循环子矩阵Bi,j就可以得到QC-LDPC码的生成矩阵Gqc。将校验比特分成c个长为L的子块,即RP×cL=(R1,R2,…,Rc),其中,
Rj=(Cj,1,Cj,2,…,Cj,L)1≤j≤c,码字v=mGqc=(m,c1,c2,…,cc),所以:
Cj=M1B1,j+M2B2,j+…MrBr,j 1≤j≤c (7)
令bi,j (l)是循环矩阵Bi,j的第l行,有bi,j (0)=bi,j (L)=bi,j,当1≤i≤r时,
通过(6)式和(7)式就可以得到第j块校验位Cj如下:
当state为S2状态时,需要从矩阵Cj,1≤j<c中依次取出各列输出,每列含有P个元素。本发明采用移位寄存器来实现,即校验位Cj的列向左移动1位,最右边1列数据补0,并在每个时钟周期取出矩阵Cj的列向量Cpj送至选择移位输出模块。
选择移位输出模块,根据延迟模块输入的状态机状态state_dly来选择输出校验位Cj的列向量Cpj和信息子块分量的列向量A(i-1)L+l,具体为:
当延迟模块输入的状态机状态state_dly=S1时,datout输出信息子块分量的列向量A(i-1)L+l的延迟信号A_dly。当state_dly=S2时,datout输出校验位Cj的列向量Cpj。synout输出低电平信号。state_dly=S0时,synout输出高电平信号,datout输出帧同步字信号。当state_dly=S3时,synout和datout均输出全零信号。
本发明与现有技术相比的优点在于:
(1)本发明通过在QC-LDPC编码器中引入状态机控制方法,不仅实现了编码器的逐帧可变的码率兼容性,而且提高了编码器系统的工作稳定性。
(2)为了节省资源,本发明编码器实现时还给出了一种采用移位寄存器进行校验位的变换方法。另外,在高速和码率兼容设计上,通过将编码器分为资源共享模块和非资源共享模块两部分,非常有利于实现码率兼容的设计,对于P路并行待编码数据、不同速率和不同码长的编码器,资源共享模块设计不变,仅需要改变非资源共享模块的设计即可。
(3)本发明还提出了码率兼容QC-LDPC编码器循环子矩阵生成元向量存储方法,可有效地降低FPGA的逻辑资源和BRAM资源。即可实现高速译码又可在码率兼容上均具有优势,且具有存储器资源利用率高,译码吞吐量高的特点。
(4)本发明的编码器在信息序列输入的同时不仅采用流水线的方式计算校验位,而且输出信息序列,编码延迟仅为计算第一个校验位的时间,即三个时钟周期,所以输出比输入仅延迟三个时钟周期,当编码器工作的时钟频率为200MHz时,编码器输出相对于输入的延迟仅为15ns。所以本发明的编码器是一个实时编码器。
(5)本发明设计的编码器可同时兼容待编码的信息序列数据连续输入和非连续的情况。对非连续输入情况的兼容由状态机的S3状态来保证。
(6)本发明设计的编码器采用存储器rom_g来存储所兼容的QC-LDPC的生成矩阵的循环子矩阵的生成元,不仅极大地降低了存储量,而且可实现码率兼容的编码特性,加上实时编码特性,本发明的编码器在不对输入信息序列进行缓存的情况下实现了编码的逐帧可变性,比现阶段采用的比特加载的码率兼容编码器的逐帧切换需要较大的缓存器才能实现不丢帧的情况有较大的优势。
(7)本发明设计的编码器对P路并行输入的待编码信息序列同时进行编码,比单路编码器的吞吐量提高了P倍,保证了码率兼容QC-LDPC编码器的高速性。且本发明的这种设计可以通过提高并行路数P,来进一步提高LDPC编码器的吞吐量,也可以动态地改变输入的并行度P,来调节LDPC编码码器占用的硬件资源,满足不同硬件平台不同吞吐量的传输需求。
(8)本发明在Xilinx Virtex5 xc5vfx130t FPGA上实现了一个四种码率兼容的QC-LDPC编码器,该编码器时延小,FPGA资源利用率高,速度高,码率兼容LDPC编码器总吞吐量高达1.6Gbps。
附图说明
图1是本发明码率兼容QC-LDPC实时编码器FPGA硬件实现架构;
图2是本发明控制模块状态转移图;
图3是本发明LDPC编码器工作时序图;
图4是本发明W矩阵非零元素分布图;
图5是本发明码率兼容QC-LDPC编码器循环子矩阵生成元向量的存储图;
图6是本发明多路并行码率兼容编码器资源共享框图。
具体实施方式
下面结合附图和具体实施例对本发明做进一步详细描述。
本发明一种基于FPGA的QC-LDPC码的高速码率兼容LDPC编码器,通过控制模块将输入信息序列的每个信息子块的分量的列向量送至校验位计算模块;将信息子块的分量的列向量通过延迟模块进行时间延迟后送至选择移位输出模块;移位操作模块,根据编码器的码率rate,确定循环移位寄存器的移位方法,并送至循环移位寄存器;根据确定循环移位寄存器的移位方法,对循环子矩阵Bi,j的首行数据bi,j (0)进行移位操作,根据移位操作后的结果与输入信息比特序列的逐信息比特,计算得到校验向量,将校验向量送至选择移位输出模块;选择移位输出模块,在不同时间输出校验向量和信息子块的分量的列向量,本发明的高速码率兼容编码器架构,不同码率之间可以最大程度地实现资源共享。
CCSDS标准中采用的1/2、2/3、4/5、7/8共4种码率的LDPC码的生成矩阵均具有准循环的特征,在设计编码器是可以采用移位寄存器来实现,本发明从CCSDS标准中选取了四个LDPC码,进行码率兼容编码器的FPGA高速实现,这四个码分别为LDPC(2048,1024)、LDPC(8192,4096)、LDPC(1536,1024)和LDPC(6144,4096),本发明主要研究这类LDPC编码器的高速码率兼容的设计方法。本发明专门针对需要采用生成矩阵编码的准循环LDPC(QC-LDPC)码,首先提出了一种高速码率兼容QC-LDPC实时编码器FPGA硬件实现架构,其次,在控制部分引入状态机来实现码率兼容性和提高编码器的工作稳定性,再次,还给出了一种采用移位寄存器进行校验位变换方法,最后提出了一种码率兼容QC-LDPC编码器循环子矩阵的生成元向量的存储方法,可有效地降低FPGA的逻辑资源和BRAM资源。在XilinxVirtex5xc5vfx130t FPGA上的实现结果表明,提出的LDPC码时延小,FPGA资源利用率高,速度高,码率兼容LDPC编码器总吞吐量高达1.6Gbps。
本发明一种基于FPGA的QC-LDPC码的高速码率兼容LDPC编码器,包括:控制模块、移位操作模块、存储器、循环移位寄存器、延迟模块、校验位计算模块、选择移位输出模块;
控制模块接收外部输入的编码器的码率rate、输入门控信号synin、输入信息比特序列datin,产生控制信号state、addr、r、c和L。
本发明设计的控制模块采用状态机来实现,状态机的状态转移图如图2所示,控制模块需要输出状态信号state来对整个编码器进行控制,state依次取S0,S1,S2,S3四个值。图2中h表示输入门控信号synin的长度,k=r×L表示输入信息序列datin的时钟周期长度,即LDPC编码器信息位长度,m=c×L表示校验位的时钟周期长度。输入的编码器的码率rate对应不同的r、c和L参数。
编码器复位时,状态机初始化为S3状态;当输入门控信号synin为高电平时,cnt=0,此时状态机转移到S0状态,cnt大于等于0小于h时,状态机保持在S0;当cnt=h时,状态机转移到S1状态,cnt大于等于h小于h+k时,状态机保持在S1;当cnt=h+k时,状态机转移到S2状态,cnt大于等于h+k小于h+k+m,即h+n(其中n=k+m)时,状态机保持在S2;当cnt=h+n时,状态机转移到S3状态,cnt大于等于h+n小于时,状态机保持在S3。
对于编码器,状态机在state=S0状态时,addr的初值为0,选择移位输出模块的synout输出输入门控信号synin的延迟信号syn_dly,datout输出信息子块分量的列向量A(i-1)L+l的延迟信号A_dly;状态机在state=S1状态时,addr每L个时钟周期增加1,选择移位输出模块的datout输出信息子块分量的列向量A(i-1)L+l的延迟信号A_dly同时,移位操作模块、存储器、循环移位寄存器和校验位计算模块都在这个状态下工作。状态机在state=S2状态时,addr的值为0,此时选择输出模块将校验位经过移位寄存器输出;状态机在state=S3状态时,addr的值为0,编码器不进行任何操作,datout和synout仅输出全零数据和低电平门控信号。按照这种状态机控制方式,编码器工作时序图如图3所示。
控制模块接收外部输入的编码器的码率rate、输入门控信号synin、输入信息比特序列datin,控制模块将输入信息序列datin(mp×rL)按帧分成r个长为L的信息子块Mi=(A(i-1)L+1,A(i-1)L+2,…,AiL),1≤i≤r,每个信息子块的分量为一个列向量,含有P个元素,即
A(i-1)L+l=(a1,(i-1)L+l,…,aP,(i-1)L+l)T,1≤i≤r,1≤l≤L,所以每帧中信息序列长度为P×rL比特,即m1×rL=(M1 M2…Mr);
控制模块根据外部输入的编码器的码率rate,产生控制信号r,c和L具体为:
对于QC-LDPC码,其系统形式生成矩阵Gqc如下:
这里Ik表示大小为k×k的单位矩阵,Pk×(n-k)表示大小为k×(n-k)的矩阵,生成矩阵Gqc矩阵的大小为k×n,k=r×L,n-k=L×c,QC-LDPC码的帧长n=(r+c)L。其中Bi,j是大小为L×L的循环子矩阵,表示如下:
可以看到,Bi,j的每个行向量bi,j (l)为上各行向量bi,j (l-1)的循环一位右移向量,所以如果知道Bi,j的首行向量bi,j (0)就可以得到Bi,j,称bi,j (0)为循环子矩阵的生成元。
对于不同的QC-LDPC码,其码率rate信号对应不同的帧长(r+c)L,其中L为循环子矩阵Bi,j生成元向量bi,j (0)的长度,rL和cL分别为QC-LDPC码的生成矩阵Gqc循环校验位对应的行数和列数。这些参数均由外部输入来确定,本发明的编码器采用这种方式来兼容不同码率码长的QC-LDPC码。
对于输入门控信号synin,如图3所示,具体为:高低电平交替的控制信号,高电平持续h个时钟周期,表示帧同步信号的长度为h比特,低电平持续至少为(r+c)L个时钟周期,输入的编码器的码率rate对应不同的r,c和L参数。
输入信息序列datin,具体为:待编码的信息,并行P比特输入(P为编码器的并行路数),即一个时钟周期输入一个信息子块分量的列向量A(i-1)L+l。
控制模块将输入信息序列datin(mp×rL)按帧分成r个长L的信息子块,即mp×rL=(M1M2…Mr),每个信息子块为Mi=(A(i-1)L+1,A(i-1)L+2,…,AiL),1≤i≤r,每个信息子块的分量为一列向量A(i-1)L+l,每个列向量含有P个分量,即A(i-1)L+l=(a1,(i-1)L+l,…,aP,(i-1)L+l)T,1≤i≤r,1≤l≤L,所以每帧中信息序列长度为P×rL比特。
根据外部输入的编码器的码率rate,产生控制信号state和addr,在控制信号state和addr控制下,从存储器rom_g中读出每个信息子块Mi对应码率的循环子矩阵Bi,j的首行向量bi,j (0)(其中Bi,j=(bi,j (0),bi,j (1),,bi,j (L-1))T,Bi,j的每个行向量bi,j (l),0≤l<L为上一个行向量bi,j (l-1)的循环一位右移向量,显然Bi,j可由首行向量bi,j (0)来确定,所以称bi,j (0)为Bi,j的生成元)送至循环移位寄存器;
存储模块rom_g接收控制模块输入的r,c,L和addr信号,读出存储器addr地址中的c个循环子矩阵Bi,j的生成元向量bi,k (0),k=1,,c,具体为:
由于每帧输入信息序列datin可分为r个信息子块Mi,分别对应c个循环子矩阵Bi,j,1≤i≤r,1≤j≤c,显然单个码率的QC-LDPC码对应r×c个循环子矩阵Bi,j,为了实现码率兼容LDPC编码器,所有码率情况下的生成矩阵的循环子矩阵Bi,j的首行向量bi,j (0)均需要存储到存储器rom_g中,共需要存储rate×r×c个生成元。
为了充分利用FPGA的BRAM资源,本发明设计的码率兼容QC-LDPC编码器对于这部分资源采用了压缩存储的方法,如图5所示。考虑到编码器需要并行对各个校验位块进行计算,校验位分成了c块,所以需要同时从存储器rom_g中读出c个数据,在FPGA中采用BRAM(BRAM为FPGA中集成的存储资源硬核),为了提高BRAM资源的利用率,本发明采用双端口ROM的A,B口同时读取循环子矩阵Bi,j的生成元向量bi,j (0),采用双口ROM后,需要c/2块BRAM资源来实现存储器rom_g,对于单个码率的存储器的位宽为L,深度为2r。
存储模块rom_g根据接收控制模块输入的r,c,L和addr信号,可以从存储器rom_g的地址addr中读出c个生成元向量bi,k (0),k=1,,c,并送至循环移位寄存器。
控制模块将输入信息序列datin(mp×rL)的每个信息子块分量的列向量A(i-1)L+l=(a1,(i-1)L+l,,aP,(i-1)L+l)T,1≤i≤r,1≤l≤L和控制信号state送至校验位计算模块,
控制模块将控制信号state、输入门控信号synin和信息子块分量的列向量A(i-1)L+l通过延迟模块进行时间延迟后送至选择移位输出模块,具体为:
状态机状态state信号、同步门控信号synin和信息子块分量的列向量A(i-1)L+k分别被延迟3个时钟后输出,输出信号分别为state_dly、syn_dly和A_dly。
控制模块根据外部输入的编码器的码率rate,产生控制信号r、c和L送至移位操作模块,移位操作模块根据控制信号r和c,从循环移位寄存器中读取c个长度为L的生成元的循环移位向量bi,k (l),1≤k≤c,0≤l≤L-1,r对应r个信息子块Mi,1≤i≤r的输入总时间,在信息子块输入期间,对bi,j (l)进行循环移位,每个时钟周期进行一次移位,并将结果反馈给循环移位寄存器,具体为:
对于不同的码率rate的QC-LDPC码,对应不同的循环子矩阵Bi,j生成元向量bi,j (0),不同的r,c,L参数。信息子块Mi,1≤i≤r输入期间,存储器rom_g输出给循环移位寄存器的输入为c个生成元bi,k (0),k=1,…,c,占用c个寄存器空间。输入每个信息子块Mi,1≤i≤r需要L个时钟周期,每个时钟周期对生成元进行一次移位得到c组数据bi,k (0),…,bi,k (L-1),k=1,…,c。
控制模块根据外部输入的编码器的码率rate,产生控制信号r,c,L送至移位操作模块,移位操作模块根据控制信号r,c,L,从循环移位寄存器中读出c个生成元的循环移位向量bi,j (0),j=1,…,c,r对应r个信息子块Mi,1≤i≤r的输入总时间,在信息子块输入期间,对bi,j (l)进行循环移位,每个时钟周期进行一次移位,得到bi,j (l+1),并将结果反馈给循环移位寄存器;
循环移位寄存器,用来存储c个生成元的循环移位向量bi,j (l),0≤l≤L-1,向量bi,j (l)的长度为L,其初始值为从存储器rom_g中读出的每个信息子块Mi对应码率的循环子矩阵Bi,j的首行向量bi,j (0),送至移位操作模块进行移位操作,反馈移位操作后的结果生成元的循环移位向量bi,j (l),0≤l≤L-1并送至校验位计算模块,具体为:
循环移位寄存器,用来存储c个生成元的循环移位向量bi,j (l),0≤l≤L-1,向量bi,j (l)的长度为L,其初始值为从存储器rom_g中读出的每个信息子块Mi对应的循环子矩阵Bi,j的首行向量bi,j (0),送至移位操作模块进行移位操作,对于每个信息子块分量的列向量A(i-1)L+k,对应的移位操作模块的输出,即循环移位寄存器输入分别为:bi,j (0),bi,j (1),…,bi,j (L-1),移位操作模块反馈给循环移位寄存器的结果bi,j (l),1≤l<L还需要送至校验位计算模块;
校验位计算模块,根据控制模块输入的状态state、生成元的循环移位向量bi,j (l)和输入信息子块分量的列向量A(i-1)L+l,当state为S1状态时,计算校验位当state为S2状态时,校验位Cj的列向左移动1位,最右边1列数据补0,并将得到的校验位Cj的P个元素的列向量Cpj送至选择移位输出模块,具体为:
当state为S1状态时,可以看到公式(1)的右矩阵为校验位对应的矩阵部分PcL×rL按Bi,j循环方阵分块,共有r行,c列,块长用L来表示。那么,校验位的计算公式如下:
将信息序列分为r个长为L的子块,即
mp×k=(M1 M2…Mr) (4)
其中,
Mi=(A(i-1)L+1,A(i-1)L+2,…,AiL)1≤i≤r (5)
由公式(3)和公式(4)可得:
利用矩阵的分块特性,两个超大矩阵mp×k与Pk×m的乘法可被分解为r×c次L bits向量与L×L矩阵的乘法和r×c次向量加法。因此,运算被进一步分解为c个L bits向量的内积,从而得到进一步简化。又因为Bi,j是循环子矩阵,所以只要知道它的生成元bi,j (0)就可以得到Bi,j。不同码率QC-LDPC码的生成元bi,j (0)值不同。通过循环子矩阵Bi,j就可以得到QC-LDPC码的生成矩阵Gqc。将校验比特分成c个长为L的子块,即RP×cL=(R1,R2,…,Rc),其中,Rj=(Cj,1,Cj,2,…,Cj,L)1≤j≤c,码字v=mGqc=(m,c1,c2,…,cc),所以:
Cj=M1B1,j+M2B2,j+…MrBr,j 1≤j≤c (7)
令bi,j (l)是循环矩阵Bi,j的第l行,有bi,j (0)=bi,j (L)=bi,j,当1≤i≤r时,
通过(6)式和(7)式就可以得到第j块校验位Cj如下:
当state为S2状态时,需要从矩阵Cj,1≤j<c中依次取出各列输出,每列含有P个元素。本发明采用移位寄存器来实现,即校验位Cj的列向左移动1位,最右边1列数据补0,并在每个时钟周期取出矩阵Cj的列向量Cpj送至选择移位输出模块。
选择移位输出模块,在不同的控制信号state_dly,datout输出校验位Cj的列向量Cpj和信息子块分量的列向量A(i-1)L+l的延迟信号A_dly,state_dly为S0时,synout输出高电平,其他状态synout输出低电平,具体为:
当延迟模块输入的状态机状态state_dly=S1时,datout输出信息子块分量的列向量A(i-1)L+l的延迟信号A_dly。当state_dly=S2时,datout输出校验位Cj的列向量Cpj。synout输出低电平信号。state_dly=S0时,synout输出高电平信号,datout输出帧同步字信号。当state_dly=S3时,synout和datout均输出全零信号。
一种基于FPGA的QC-LDPC码的高速码率兼容LDPC编码器的编码步骤如下:
初始化:编码器复位时,控制模块产生的状态机state信号初始化为S3状态,存储器rom_g中存储所实现码率的LDPC码对应的循环子矩阵Bi,j生成元向量bi,j (0),1≤i≤r,1≤j≤c。
第一步:当输入门控信号synin为高电平时,cnt=0,此时状态机状态state转移到S0状态,cnt大于等于0小于h时,状态机状态state保持在S0,循环移位寄存器被初始化为0。将输入信息序列datin(mp×rL)按帧分割为mp×rL=(M1 M2…Mr)的情况,每个信息子块为Mi=(A(i-1)L+1,A(i-1)L+2,…,AiL),每个信息子块的分量为一列向量A(i-1)L+l,每个列向量含有P个分量,即A(i-1)L+l=(a1,(i-1)L+l,…,aP,(i-1)L+l)T。
第二步:当cnt=h时,状态机状态state转移到S1状态,cnt大于等于h小于h+rL时,状态机状态state保持在S1。此时,控制模块根据输入码率rate产生的控制信号r,c,L和addr。
在state=S1的第一个时钟周期,存储器rom_g根据地址信号addr,从rom_g中读出与本帧数据参数r,c,L相对应的c个循环子矩阵Bi,j的生成元向量并将生成元向量送至循环移位寄存器,此时校验位计算模块中的输入为信息子块分量的列向量A1和bi,j (0),j=1,…,c,校验位计算模块执行A1与bi,j (0),j=1,…,c相乘,得到A1bi,j (0)后存入循环移位寄存器。
在state=S1的第二个时钟周期,控制信号r,c,L及state信号通过移位操作模块控制循环移位寄存器的生成元向量进行一次移位得到bi,j (1)号并送至校验位计算模块,此时将信息子块分量的列向量A2移入校验位计算模块,校验位计算模块执行A2与bi,j (1)相乘,再与循环移位寄存器中存储的A1bi,j (0)异或,得到A1bi,j (0)+A2bi,j (1)。
在state=S1的第L个时钟周期,将信息子块分量的列向量AL移入校验位计算模块,此时循环移位模块将循环移位寄存器的向量经过L-1次移位,并送至校验位计算模块计算后的结果为A1bi,j (0)+A2bi,j (1)+…ALbi,j (L-1),即MiBi,j。
在state=S1的第rL个时钟周期,当r个长为L的信息子块全部进入编码器进行处理后,校验位计算模块计算后的结果为M1B1,j+M2B2,j+MrBr,j,即Cj。
第三步:当cnt=h+rL时,状态机转移到S2状态,cnt大于等于h+rL小于h+rL+cL,状态机state保持在S2。此时,需要从矩阵Cj,1≤j<c中依次取出各列输出,每列含有P个元素。采用移位寄存器将校验位Cj的列向左移动1位,最右边1列数据补0,并在每个时钟周期取出矩阵Cj的列向量Cpj送至选择移位输出模块。
第四步:当cnt=h+rL+cL时,状态机转移到S3状态,cnt大于等于h+rL+cL小于时,状态机保持在S3。本发明设计的编码器主要用来处理数据连续输入的情况,但该状态主要来兼容数据非连续输入的情况。
第五步:移位输出模块根据延迟模块输入的状态机状态state_dly来选择输出校验位Cj的列向量Cpj和信息子块分量的列向量A(i-1)L+l。当延迟模块输入的状态机状态state_dly=S1时,datout输出信息子块分量的列向量A(i-1)L+l的延迟信号A_dly。当state_dly=S2时,datout输出校验位Cj的列向量Cpj。synout输出低电平信号。state_dly=S0时,synout输出高电平信号,datout输出帧同步字信号。当state_dly=S3时,synout和datout均输出全零信号。
从上面的编码过程中可以看到,本发明的编码器是一个实时编码器,编码延时非常小,输出比输入仅延迟三个时钟周期,当编码器工作的时钟频率为200MHz时,编码器输出相对于输入的延迟仅为15ns。其中延迟模块用来调整这三个时钟的延迟。
本发明设计的编码器可同时兼容待编码的信息序列数据连续输入和非连续的情况。对非连续输入情况的兼容由状态机的S3状态来保证。
本发明设计的编码器采用存储器rom_g来存储所兼容的QC-LDPC的生成矩阵的循环子矩阵的生成元,不仅极大地降低了存储量,而且可实现码率兼容的编码特性,加上实时编码特性,本发明的编码器在不对输入信息序列进行缓存的情况下实现了编码的逐帧可变性,比现阶段采用的比特加载的码率兼容编码器的逐帧切换需要较大的缓存器才能实现不丢帧的情况有较大的优势。
本发明设计的编码器对P路并行输入的待编码信息序列同时进行编码,比单路编码器的吞吐量提高了P倍,保证了码率兼容QC-LDPC编码器的高速性。且本发明的这种设计可以通过提高并行路数P,来进一步提高LDPC编码器的吞吐量,也可以动态地改变输入的并行度P,来调节LDPC编码码器占用的硬件资源,满足不同硬件平台不同吞吐量的传输需求。
由于CCSDS标准中仅给出了校验矩阵,所以在设计编码器之前需要计算出生成矩阵,计算方法如下:
循环生成矩阵的计算
由于CCSDS标准中仅给出了校验矩阵,由于QC-LDPC编码器需要采用生成矩阵进行编码,所以在设计编码器之前首先需要计算出生成矩阵。由校验矩阵计算生成矩阵的方法如下:
对于CCSDS标准中的LDPC码,其对应的校验矩阵大小为3M×(3+K)M,且该矩阵为满秩矩阵,因此该校验矩阵所对应的码字应该是((3+K)M,2M)码。而码(KM,2M)正是由((3+K)M,2M)码通过截断后面Mbit个校验位得到的。所以首先需要根据3M×(3+K)M的校验矩阵计算对应((3+K)M,2M)的生成矩阵,然后截掉后Mbit的校验位对应的校验矩阵部分得到(KM,2M)码的生成矩阵。参照CCSDS标准,生成矩阵的计算步骤如下:
其中MK对应信息位长度,M(N-K)对应原码的校验位长度,考虑到截掉后M个校验bit,截断后的校验位长度为M(N-K-1)。在硬件实现存储的时候,只需要存储W矩阵前M(N-K-1)矩阵的生成元。对于LDPC(2048,1024),W矩阵总共有32*8个生成元,W矩阵非零元素分布如图4所示。
对于本发明设计的LDPC码,W删余后W’分块数的行数为r×(c-4),存储器rom_g中需要存储W矩阵的生成元,即bi,j (0),1≤i≤r,1≤j≤c,与QC-LDPC码的高速码率兼容LDPC编码器相关的参数如表1所示:
表1.码率兼容QC-LDPC码生成矩阵的相关参数
LDPC | 码标号 | H | H分块数 | G | W’分块数 | 块大小 |
(8192,4096) | Code1 | 6144*10240 | 12*20 | 4096*8196 | 8*8 | 512*512 |
(2048,1024) | Code2 | 1536*2560 | 12*20 | 1024*2048 | 8*8 | 128*128 |
(6144,4096) | Code3 | 3072*7168 | 12*28 | 4096*6144 | 16*8 | 256*256 |
(1536,1024) | Code4 | 768*1792 | 12*28 | 1024*1536 | 16*8 | 64*64 |
码率兼容编码器对各码率循环子矩阵生成元向量的存储方法
采用图5的存储方法后,码率兼容QC-LDPC编码器占用的存储资源如表2所示,表2中还给出了码率兼容编码器与分别设计的各码率QC-LDPC编码器所占用的存储资源对比情况。考虑到编码器需要并行对各个校验位块进行计算,校验位分成了c块,所以需要同时从rom_g中读出c个数据,在FPGA中采用BRAM(BRAM为FPGA中集成的存储资源硬核),为了提高BRAM资源的利用率,采用双端口ROM的A,B口同时读取循环子矩阵的生成元,采用双口ROM后,需要c/2块BRAM资源来实现编码器,如表2:
表2.码率兼容编码器与单码率QC-LDPC编码器所占用的存储资源对比情况
采用图5的存储方法后,这种兼容四种码率QC-LDPC编码器仅需要28块36KbitsBRAM,而分别设计四种码率QC-LDPC编码器,每种码的循环子矩阵的生成元不同,所以需要分别存储,BRAM个数为28+8+16+4=56,兼容四种码率QC-LDPC编码器可节省50%的存储器资源。而且随着兼容码率的个数增多,节省的存储器资源百分比越大。
多路并行码率兼容编码器设计
对于高速编码器情况,需要处理多路数据的输入,本发明在处理这种情况时,不论是那种输入数据均与同一个生成矩阵进行运算,所以rom_g这部分存储器资源在单路输入和多路输入情况下可以共享,相应地对于同一个码率来说,循环移位寄存器和移位操作模块在单路输入和多路输入情况资源也可以共享。而仅仅校验位计算和选择移位输出模块部分,P路输入情况是单路输入情况的P倍。同理,对于不同的LDPC码编码器,校验位计算模块需要定义不同的校验位寄存器,并依次移位输出即可,这部分校验位寄存器资源不能复用。图6中标出了多路并行码率兼容编码器情况下的各模块资源共享情况,实线框标出了资源可共享的模块,虚线框标出了资源不能共享的模块。
通过将编码器分成资源可共用模块和非资源共用模块可以在P路并行、不同速率和不同码长之间实现最大程度的资源共享,提高FPGA的资源利用率。
图1为本发明设计的一种基于FPGA的QC-LDPC码的高速码率兼容LDPC编码器的总体架构框图,本编码器由控制模块、移位操作模块、存储器、循环移位寄存器、延迟模块、校验位计算模块和选择移位输出模块七部分组成。
图2为控制模块状态转移图,控制模块需要输出状态信号state来对整个编码器进行控制,state依次取S0,S1,S2,S3四个值,编码器复位时,状态机初始化为S3状态;当输入门控信号synin为高电平时,cnt=0,此时状态机转移到S0状态,cnt大于等于0小于h时,状态机保持在S0;当cnt=h时,状态机转移到S1状态,cnt大于等于h小于h+k时,状态机保持在S1;当cnt=h+k时,状态机转移到S2状态,cnt大于等于h+k小于h+k+m,即h+n(其中n=k+m)时,状态机保持在S2;当cnt=h+n时,状态机转移到S3状态,cnt大于等于h+n小于时,状态机保持在S3。
图3为LDPC编码器工作时序图,状态机在state=S0状态时,选择移位输出模块的synout输出输入门控信号synin的延迟信号syn_dly,datout输出信息子块分量的列向量A(i-1)L+l的延迟信号A_dly;状态机在state=S1状态时,选择移位输出模块的datout输出信息子块分量的列向量A(i-1)L+l的延迟信号A_dly同时,移位操作模块、存储器、循环移位寄存器和校验位计算模块都在这个状态下工作。状态机在state=S2状态时,此时选择输出模块将校验位经过移位寄存器输出;状态机在state=S3状态时,编码器不进行任何操作,datout和synout仅输出全零数据和低电平门控信号。
图4为W矩阵非零元素分布图,即循环子矩阵Bi,j,1≤i≤r,1≤j≤c的形状。
图5为码率兼容QC-LDPC编码器循环子矩阵Bi,j的生成元向量bi,j (0),1≤i≤r,1≤j≤c的存储图。
图6是本发明多路并行码率兼容编码器资源共享框图。图6中标出了多路并行码率兼容编码器情况下的各模块资源共享情况,实线框标出了资源可共享的模块,虚线框标出了资源不能共享的模块。
对于本发明提出的这种码率兼容编码器架构,我们在Xilinx Virtex5xc5vfx130tFPGA上实现了四种码率QC-LDPC编码器及一个码率兼容QC-LDPC编码器,为了实现高吞吐量编码器,采用P路并行输入情况,综合和布局布线采用Xilinx ISE 14.7。码率兼容编码器和四种LDPC码编码器的FPGA实现结果及资源占用对比如表3所示。
本发明提出的编码器架构可以被配置为任意并行度P,考虑到我们使用的这块FPGA的资源,选用并行度P=8的情况。因此,表3给出了高速并行8路的编码情况,表3中不仅列出了四种单码率单路编码器和八路并行单码率编码器所占的逻辑资源和存储器BRAM资源,而且还给出了码率兼容单路编码器和八路并行码率兼容编码器的资源占用情况。逻辑资源包括资源共享模块和非资源共享模块两部分的资源。从表3中可以看到,低速单路编码器和高速八路编码器的逻辑资源和存储器BRAM资源可是实现资源共享,而码率兼容编码器的资源共享模块为四个码率中的最大的资源共享模块所占的资源;对于非资源共享模块,高速P路编码器所占的逻辑资源是低速单路编码器的P倍。码率兼容编码器资源是四种单码率非资源共享模块资源之和。为了有效地设计一个码率兼容高速编码器,采用本发明的这种高速码率兼容编码器架构,不同速率及不同码率之间可以最大程度地实现资源共享。
在具体的编码器实现过程中,加上5ns的约束,对应200MHz。经过布局不线,各种情况编码器都可以满足约束,将译码器工作的时钟频率设置为200MHz,由于本发明设计的编码器是一种输出相对于输入延迟三个时钟周期的实时编码器,因此该编码器的数据吞吐量与系统时钟频率clk的关系为clk*P,所以低速编码器的吞吐量对应的吞吐量为200Mbps,高速八路编码器对应的吞吐量1.6Gbps。
表3.码率兼容编码器和四种单码率LDPC编码器的FPGA实现结果及资源占用对比
从上表中可以看到,对于低速187.5Mbps吞吐量编码器,设计的兼容四种码率的LDPC编码器所使用的资源与单独设计四种单码率LDPC编码器时占用相比可以节省42%的逻辑资源和50%的块RAM资源;对于高速1.6Gbps吞吐量编码器,设计的兼容这四种码率的LDPC编码器所使用的资源与单独设计四种单码率LDPC编码器时占用相比可以节省23%的逻辑资源和50%的块RAM资源。
本发明设计的码率兼容编码器,码率码长逐帧可变,吞吐量更高,消耗的硬件资源更少,且本发明的这种设计可以通过提高并行路数P,来进一步提高LDPC编码器的吞吐量,也可以动态地改变输入的并行度P,来调节LDPC编码码器占用的硬件资源,满足不同硬件平台不同吞吐量的传输需求。
Claims (12)
1.一种基于FPGA的QC-LDPC码的高速码率兼容LDPC编码器,其特征在于包括:控制模块、移位操作模块、存储器、循环移位寄存器、延迟模块、校验位计算模块、选择移位输出模块;
控制模块接收外部输入的编码器的码率rate、输入门控信号synin、输入信息序列datin;
控制模块将输入信息序列datin按帧分成r个长为L的信息子块Mi,每个信息子块的分量为一个列向量,含有P个元素,输入信息序列长度为P×rL比特;
根据外部输入的编码器的码率rate,产生控制信号state和addr,在控制信号state和addr控制下,从存储器rom_g中读出每个信息子块Mi对应码率的循环子矩阵Bi,j的首行向量bi,j (0)送至循环移位寄存器;
控制模块将输入信息序列datin的每个信息子块分量的列向量和控制信号state送至校验位计算模块;控制模块将控制信号state、输入门控信号synin和信息子块分量的列向量通过延迟模块进行时间延迟后得到控制信号state_dly、门控信号synin_dly和列向量A_dly送至选择移位输出模块;
控制模块根据外部输入的编码器的码率rate,确定r、c和L送至移位操作模块,移位操作模块根据r、c和L,从循环移位寄存器中读取c个长度为L的生成元的循环移位向量bi,j (l),1≤j≤c,0≤l≤L-1,r对应r个信息子块Mi的输入总时间,1≤i≤r,在信息子块输入期间,对bi,j (l)进行循环移位,每个时钟周期进行一次移位,并将移位结果反馈给循环移位寄存器;
循环移位寄存器,用来存储c个生成元的循环移位向量bi,j (l),0≤l≤L-1,向量bi,j (l)的长度为L,其初始值为从存储器rom_g中读出的每个信息子块Mi对应码率的循环子矩阵Bi,j的首行向量bi,j (0),送至移位操作模块进行移位操作,反馈移位操作后的结果即生成元的循环移位向量bi,j (l)并送至校验位计算模块;
校验位计算模块,根据控制模块输入的状态state、生成元的循环移位向量bi,j (l)和输入信息子块分量的列向量,当state为S1状态时,计算校验位Cj,当state为S2状态时,校验位Cj的列向左移动1位,最右边1列数据补0,并将得到的校验位Cj的P个元素的列向量Cpj送至选择移位输出模块;
选择移位输出模块,在不同的控制信号state_dly,datout输出校验位Cj的列向量Cpj和信息子块分量的列向量的延迟信号A_dly的控制
下,state_dly为S0时,输出门控信号synout输出高电平,为S0以外的其它状态时,synout输出低电平;
控制模块接收外部输入门控信号synin、输入信息序列datin和输入的编码器的码率rate,产生控制信号state、addr,以及确定r、c和L,
具体为:
控制模块采用状态机来实现,控制模块需要输出状态信号state来对整个编码器进行控制,state依次取S0,S1,S2,S3四个值,用h表示输入门控信号synin的长度,k=r×L表示输入信息序列datin的时钟周期长度,即LDPC编码器信息位长度,m=c×L表示校验位的时钟周期长度,输入的编码器的码率rate对应不同的r、c和L参数;
编码器复位时,状态机初始化为S3状态;当输入门控信号synin为高电平时,cnt=0,此时状态机转移到S0状态,cnt大于等于0小于h时,状态机保持在S0;当cnt=h时,状态机转移到S1状态,cnt大于等于h小于h+k时,状态机保持在S1;当cnt=h+k时,状态机转移到S2状态,cnt大于等于h+k小于h+k+m,即h+n,其中n=k+m时,状态机保持在S2;当cnt=h+n时,状态机转移到S3状态,cnt大于等于h+n小于时,状态机保持在S3;
对于编码器,状态机在state=S0状态时,addr的初值为0,选择移位输出模块的synout输出输入门控信号synin的延迟信号syn_dly,datout输出信息子块分量的列向量A(i-1)L+l的延迟信号A_dly;状态机在state=S1状态时,addr每L个时钟周期增加1,选择移位输出模块的datout输出信息子块分量的列向量A(i-1)L+l的延迟信号A_dly同时,移位操作模块、存储器、循环移位寄存器和校验位计算模块都在这个状态下工作;状态机在state=S2状态时,addr的值为0,此时选择输出模块将校验位经过移位寄存器输出;状态机在state=S3状态时,addr的值为0,编码器不进行任何操作,datout和synout仅输出全零数据和低电平门控信号。
2.根据权利要求1所述的一种基于FPGA的QC-LDPC码的高速码率兼容LDPC编码器,其特征在于:根据外部输入的编码器的码率rate,确定r,c和L,具体为:
对于QC-LDPC码,其系统形式生成矩阵Gqc如下:
式中,Ik表示大小为k×k的单位矩阵,Pk×(n-k)表示大小为k×(n-k)的矩阵,生成矩阵Gqc矩阵的大小为k×n,k=r×L,n-k=L×c,QC-LDPC码的帧长n=(r+c)L;其中Bi,j是大小为L×L的循环子矩阵,表示如下:
式中,Bi,j的每个行向量bi,j (l)为上各行向量bi,j (l-1)的循环一位右移向量,所以如果知道Bi,j的首行向量bi,j (0)得到Bi,j,称bi,j (0)为循环子矩阵的生成元;
对于不同的QC-LDPC码,其码率rate信号对应不同的帧长(r+c)L,其中L为循环子矩阵Bi,j生成元向量bi,j (0)的长度,rL和cL分别为QC-LDPC码的生成矩阵Gqc循环校验位对应的行数和列数,这些参数均由外部输入来确定,编码器兼容不同码率码长的QC-LDPC码。
3.根据权利要求1所述的一种基于FPGA的QC-LDPC码的高速码率兼容LDPC编码器,其特征在于:输入门控信号synin,具体为:高低电平交替的控制信号,高电平持续h个时钟周期,表示帧同步信号的长度为h比特,低电平持续至少为(r+c)L个时钟周期,输入的编码器的码率rate对应不同的r,c和L参数。
4.根据权利要求1所述的一种基于FPGA的QC-LDPC码的高速码率兼容LDPC编码器,其特征在于:输入信息序列datin,具体为:待编码的信息,并行P比特输入,P为编码器的并行路数,即一个时钟周期输入一个信息子块分量的列向量A(i-1)L+l。
5.根据权利要求1所述的一种基于FPGA的QC-LDPC码的高速码率兼容LDPC编码器,其特征在于:控制模块将输入信息序列datin即mp×rL按帧分成r个长L的信息子块,即mp×rL=(M1M2 … Mr),每个信息子块为Mi=(A(i-1)L+1,A(i-1)L+2,…,AiL),1≤i≤r,每个信息子块的分量为一列向量A(i-1)L+l,每个列向量含有P个分量,即A(i-1)L+l=(a1,(i-1)L+l,…,aP,(i-1)L+l)T,1≤i≤r,1≤k≤L,输入信息序列长度为P×rL比特。
6.根据权利要求1所述的一种基于FPGA的QC-LDPC码的高速码率兼容LDPC编码器,其特征在于:存储模块rom_g接收控制模块输入的r,c,L和addr信号,读出存储器addr地址中的c个循环子矩阵Bi,j的生成元向量,具体为:
由于每帧输入信息序列datin分为r个信息子块Mi,分别对应c个循环子矩阵Bi,j,1≤i≤r,1≤j≤c,单个码率的QC-LDPC码对应r×c个循环子矩阵Bi,j,为了实现码率兼容LDPC编码器,所有码率情况下的生成矩阵的循环子矩阵Bi,j的首行向量bi,j (0)均需要存储到存储器rom_g中,共需要存储rate×r×c个生成元;
采用了压缩存储的方法,编码器需要并行对各个校验位块进行计算,校验位分成了c块,需要同时从存储器rom_g中读出c个数据,在FPGA中采用BRAM,BRAM为FPGA中集成的存储资源硬核,采用双端口ROM的A,B口同时读取循环子矩阵Bi,j的生成元向量bi,j (0),采用双口ROM后,需要c/2块BRAM资源来实现存储器rom_g,对于单个码率的存储器的位宽为L,深度为2r;
存储模块rom_g根据接收控制模块输入的r,c,L和addr信号,能够从存储器rom_g的地址addr中读出c个生成元向量bi,k (0),k=1,,c,并送至循环移位寄存器。
7.根据权利要求1所述的一种基于FPGA的QC-LDPC码的高速码率兼容LDPC编码器,其特征在于:输入信息序列datin即mp×rL的每个信息子块的分量表示为:一个列向量A(i-1)L+k,每个列向量含有P个分量,即A(i-1)L+k=(a1,(i-1)L+k,,aP,(i-1)L+k)T,1≤i≤r,1≤k≤L。
8.根据权利要求1所述的一种基于FPGA的QC-LDPC码的高速码率兼容LDPC编码器,其特征在于:控制模块将控制信号state、输入门控信号synin和信息子块分量的列向量A(i-1)L+l通过延迟模块进行时间延迟,具体为:
状态机状态state信号、同步门控信号synin和信息子块分量的列向量A(i-1)L+k分别被延迟3个时钟后输出,输出信号分别为state_dly、syn_dly和A_dly。
9.根据权利要求1所述的一种基于FPGA的QC-LDPC码的高速码率兼容LDPC编码器,其特征在于:移位操作模块根据r、c和L,从循环移位寄存器中读取c个长度为L的生成元的循环移位向量bi,j (l),1≤j≤c,0≤l≤L-1,r对应r个信息子块Mi的输入总时间,1≤i≤r,在信息子块输入期间,对bi,j (l)进行循环移位,每个时钟周期进行一次移位,并将移位结果反馈给循环移位寄存器,具体为:
对于不同的码率rate的QC-LDPC码,对应不同的循环子矩阵Bi,j生成元向量bi,j (0),不同的r,c,L参数;信息子块Mi,1≤i≤r输入期间,存储器rom_g输出给循环移位寄存器的输入为c个生成元bi,k (0),k=1,…,c,占用c个寄存器空间;输入每个信息子块Mi,1≤i≤r需要L个时钟周期,每个时钟周期对生成元进行一次移位得到c组数据bi,k (0),…,bi,k (L-1),k=1,…,c;
控制模块根据外部输入的编码器的码率rate,产生控制信号r,c,L送至移位操作模块,移位操作模块根据控制信号r,c,L,从循环移位寄存器中读出c个生成元的循环移位向量bi,j (0),j=1,…,c,r对应r个信息子块Mi,1≤i≤r的输入总时间,在信息子块输入期间,对bi,j (l)进行循环移位,每个时钟周期进行一次移位,得到bi,j (l+1),并将结果反馈给循环移位寄存器。
10.根据权利要求1所述的一种基于FPGA的QC-LDPC码的高速码率兼容LDPC编码器,其特征在于:循环移位寄存器,用来存储c个生成元的循环移位向量bi,j (l),0≤l≤L-1,向量bi,j (l)的长度为L,其初始值为从存储器rom_g中读出的每个信息子块Mi对应码率的循环子矩阵Bi,j的首行向量bi,j (0),送至移位操作模块进行移位操作,反馈移位操作后的结果即生成元的循环移位向量bi,j (l)并送至校验位计算模块,具体为:
循环移位寄存器,用来存储c个生成元的循环移位向量bi,j (l),0≤l≤L-1,向量bi,j (l)的长度为L,其初始值为从存储器rom_g中读出的每个信息子块Mi对应的循环子矩阵Bi,j的首行向量bi,j (0),送至移位操作模块进行移位操作,对于每个信息子块分量的列向量A(i-1)L+k,对应的移位操作模块的输出,即循环移位寄存器输入分别为:bi,j (0),bi,j (1),…,bi,j (L-1),移位操作模块反馈给循环移位寄存器的结果bi,j (l),1≤l<L还需要送至校验位计算模块。
11.根据权利要求1所述的一种基于FPGA的QC-LDPC码的高速码率兼容LDPC编码器,其特征在于:校验位计算模块,根据控制模块输入的状态state、循环移位寄存器的输入bi,j (k)和信息子块分量的列向量A(i-1)L+k,计算得到校验位Cj的列向量Cpj,并送至选择移位输出模块,具体为:
当state为S1状态时,公式(1)的右矩阵为校验位对应的矩阵部分PcL×rL按Bi,j循环方阵分块,共有r行,c列,块长用L来表示;那么,校验位的计算公式如下:
将信息序列分为r个长为L的子块,即
mp×k=(M1 M2 … Mr) (4)
其中,
Mi=(A(i-1)L+1,A(i-1)L+2,…,AiL)1≤i≤r (5)
由公式(3)和公式(4)可得:
利用矩阵的分块特性,两个超大矩阵mp×k与Pk×m的乘法可被分解为r×c次L bits向量与L×L矩阵的乘法和r×c次向量加法,运算被进一步分解为c个L bits向量的内积;Bi,j是循环子矩阵,确定其生成元bi,j (0)就能够得到Bi,j;不同码率QC-LDPC码的生成元bi,j (0)值不同;通过循环子矩阵Bi,j能够得到QC-LDPC码的生成矩阵Gqc;将校验比特分成c个长为L的子块,即RP×cL=(R1,R2,…,Rc),其中,Rj=(Cj,1,Cj,2,…,Cj,L)1≤j≤c,码字v=mGqc=(m,c1,c2,…,cc),所以:
Cj=M1B1,j+M2B2,j+…MrBr,j 1≤j≤c (7)
令bi,j (l)是循环矩阵Bi,j的第l行,有bi,j (0)=bi,j (L)=bi,j,当1≤i≤r时,
通过(6)式和(7)式能够得到第j块校验位Cj如下:
当state为S2状态时,需要从矩阵Cj,1≤j<c中依次取出各列输出,每列含有P个元素;采用移位寄存器来实现,即校验位Cj的列向左移动1位,最右边1列数据补0,并在每个时钟周期取出矩阵Cj的列向量Cpj送至选择移位输出模块。
12.根据权利要求1所述的一种基于FPGA的QC-LDPC码的高速码率兼容LDPC编码器,其特征在于:选择移位输出模块,根据延迟模块输入的状态机状态state_dly来选择输出校验位Cj的列向量Cpj和信息子块分量的列向量A(i-1)L+l,具体为:
当延迟模块输入的状态机状态state_dly=S1时,datout输出信息子块分量的列向量A(i-1)L+l的延迟信号A_dly;当state_dly=S2时,datout输出校验位Cj的列向量Cpj;synout输出低电平信号;state_dly=S0时,synout输出高电平信号,datout输出帧同步字信号;当state_dly=S3时,synout和datout均输出全零信号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811592741.8A CN109802687B (zh) | 2018-12-25 | 2018-12-25 | 一种基于fpga的qc-ldpc码的高速码率兼容ldpc编码器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811592741.8A CN109802687B (zh) | 2018-12-25 | 2018-12-25 | 一种基于fpga的qc-ldpc码的高速码率兼容ldpc编码器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109802687A CN109802687A (zh) | 2019-05-24 |
CN109802687B true CN109802687B (zh) | 2023-05-02 |
Family
ID=66557538
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811592741.8A Active CN109802687B (zh) | 2018-12-25 | 2018-12-25 | 一种基于fpga的qc-ldpc码的高速码率兼容ldpc编码器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109802687B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111162795B (zh) * | 2020-01-06 | 2023-02-03 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 基于校验子矩阵分割的ldpc编码硬件实现方法 |
CN112039535B (zh) * | 2020-08-17 | 2023-11-10 | 西安空间无线电技术研究所 | 一种基于准循环生成矩阵的码率兼容ldpc编码器 |
CN112532252B (zh) * | 2020-11-24 | 2024-04-02 | 深圳市大数据研究院 | 编码方法、译码方法、电子设备及存储介质 |
CN113422611B (zh) * | 2021-05-19 | 2022-11-04 | 上海大学 | 一种qc-ldpc编码器的高度并行编码方法 |
CN113422670B (zh) * | 2021-06-03 | 2022-07-12 | 西安电子科技大学 | 一种低复杂度七路ccsds标准近地通信编码器及控制方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8065598B1 (en) * | 2007-02-08 | 2011-11-22 | Marvell International Ltd. | Low latency programmable encoder with outer systematic code and low-density parity-check code |
CN102739259A (zh) * | 2012-05-28 | 2012-10-17 | 奥维通信股份有限公司 | 一种用于cmmb激励器中的基于fpga的ldpc编码方法 |
CN103929196A (zh) * | 2014-04-23 | 2014-07-16 | 荣成市鼎通电子信息科技有限公司 | Wpan中全并行输入的循环左移qc-ldpc编码器 |
CN106571829A (zh) * | 2016-10-27 | 2017-04-19 | 西安空间无线电技术研究所 | 一种基于fpga的高速自适应dvb‑s2 ldpc译码器及译码方法 |
CN107947801A (zh) * | 2017-11-24 | 2018-04-20 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 多码率兼容ldpc码编码器 |
CN108540139A (zh) * | 2018-04-17 | 2018-09-14 | 国家新闻出版广电总局广播科学研究院 | 一种通用的准循环ldpc码编码器的fpga实现方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101211433B1 (ko) * | 2008-12-19 | 2012-12-12 | 한국전자통신연구원 | 낮은 복잡도를 가지는 고속의 qc-ldpc 부호의 부호화 장치 및 방법 |
US9003257B1 (en) * | 2013-09-19 | 2015-04-07 | U-Blox Ag | Low density parity check encoder and encoding method |
US10193578B2 (en) * | 2014-07-10 | 2019-01-29 | The Royal Institution For The Advancement Of Learning / Mcgill University | Flexible polar encoders and decoders |
-
2018
- 2018-12-25 CN CN201811592741.8A patent/CN109802687B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8065598B1 (en) * | 2007-02-08 | 2011-11-22 | Marvell International Ltd. | Low latency programmable encoder with outer systematic code and low-density parity-check code |
CN102739259A (zh) * | 2012-05-28 | 2012-10-17 | 奥维通信股份有限公司 | 一种用于cmmb激励器中的基于fpga的ldpc编码方法 |
CN103929196A (zh) * | 2014-04-23 | 2014-07-16 | 荣成市鼎通电子信息科技有限公司 | Wpan中全并行输入的循环左移qc-ldpc编码器 |
CN106571829A (zh) * | 2016-10-27 | 2017-04-19 | 西安空间无线电技术研究所 | 一种基于fpga的高速自适应dvb‑s2 ldpc译码器及译码方法 |
CN107947801A (zh) * | 2017-11-24 | 2018-04-20 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 多码率兼容ldpc码编码器 |
CN108540139A (zh) * | 2018-04-17 | 2018-09-14 | 国家新闻出版广电总局广播科学研究院 | 一种通用的准循环ldpc码编码器的fpga实现方法及装置 |
Non-Patent Citations (3)
Title |
---|
"New QC-LDPC codes implementation on FPGA platform in Rayleigh fading environment";Farid Ghani等;《2011 IEEE Symposium on Computers & Informatics》;20110721;第206-210页 * |
"低存储量的多码率QC-LDPC码译码器的研究";徐斌等;《通信技术》;20170831;第50卷(第8期);第1614-1619页 * |
"基于FPGA的LDPC码编译码器联合设计";袁瑞佳等;《电子与信息学报》;20120131;第34卷(第1期);第38-44页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109802687A (zh) | 2019-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109802687B (zh) | 一种基于fpga的qc-ldpc码的高速码率兼容ldpc编码器 | |
CN111162797B (zh) | 一种速率兼容的5g ldpc码的编码装置及编码方法 | |
CN109379086B (zh) | 低复杂度的码率兼容的5g ldpc编码方法和编码器 | |
US8291282B2 (en) | Apparatus and method for encoding and decoding channel in a communication system using low-density parity-check codes | |
US8627172B2 (en) | Error correction encoding apparatus, decoding apparatus, encoding method, decoding method, and programs thereof | |
AU2008332040A1 (en) | Method and apparatus for encoding and decoding channel in a communication system using low-density parity-check codes | |
CN109586732B (zh) | 中短码ldpc编解码系统和方法 | |
CN103152055A (zh) | 编码和解码通信系统中的信道的设备和方法 | |
EP2951925B1 (en) | Ldpc code design and encoding apparatus enabling the adjustment of code rate and codelength | |
CN107786210B (zh) | 用于多点协同通信系统的中高码率ldpc码字结构和编码方法 | |
CN101917249B (zh) | Qc-ldpc码译码器及其实现方法 | |
CN111162795B (zh) | 基于校验子矩阵分割的ldpc编码硬件实现方法 | |
US10727869B1 (en) | Efficient method for packing low-density parity-check (LDPC) decode operations | |
CN116192157A (zh) | 降低qc-ldpc码生成矩阵密度的实现方法 | |
CN113572481B (zh) | 一种基于fpga的高速码率兼容dvb-s2的ldpc编码器及编码方法 | |
CN113422611B (zh) | 一种qc-ldpc编码器的高度并行编码方法 | |
Gomes et al. | High throughput encoder architecture for DVB-S2 LDPC-IRA codes | |
CN110730003B (zh) | 一种ldpc编码方法及ldpc编码器 | |
KR20090064709A (ko) | Ldpc 부호의 패리티 검사 행렬 생성 장치 및 그방법과, 그를 이용한 ldpc 부/복호화 장치 | |
CN102857237B (zh) | 一种低延时的近地通信中ldpc并行编码器和编码方法 | |
CN101141132A (zh) | 一种准循环低密度奇偶校验码编码器和校验位生成方法 | |
CN111464191A (zh) | 一种基于矩阵扩展和斐波那契数列的rc-ldpc码构造方法 | |
CN107592958B (zh) | 不同码长下使用一个多比率指数表和一个扩展因子的多比率的ldpc编码和解码 | |
CN111181570A (zh) | 基于fpga的编译码方法和装置 | |
CN113872731B (zh) | 一种卫星通信链路基于环码的多元低密度校验码设计方法 |
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 |