一种qc-ldpc编码器及编码方法

文档序号:7518139阅读:291来源:国知局
专利名称:一种qc-ldpc编码器及编码方法
技术领域
本发明涉及一种LDPC编码器及编码方法,特别是涉及一种可以产生译码门限低、 错误平层低的准循环QC-LDPC编码器及编码方法。
背景技术
随着深空通信、移动卫星通信等技术的不断发展,低信噪比通信成为通信技术发 展的一个重要方向。为了能够可靠的进行通信,高增益的信道编码成为低信噪比通信系统 不可或缺的一部分,而Turbo码和LDPC码便是高增益信道编码的典型代表。与Turbo码相 比,LDPC码在运算速度、译码门限和错误平层方面都具有明显的优势,成为当前信道编码领 域的研究热点。LDPC码是一种线性分组码,最早由Villager于1962年提出,但受限于当时的硬件 条件,没有引起足够的重视。经过数十年的沉寂,1996年,MacKay和Neal重新发现了它,并 证明采用BP迭代译码,LDPC具有逼近aiarmon限的性能。LDPC码的重新发现是继Turbo 码后,在纠错编码领域又一重大进展。LDPC码的校验矩阵1元素的个数很少,因此可以说是一个非常稀疏的矩阵。如果 LDPC码的校验矩阵的每一列和每一行都有相同的重量(即1的个数相同)称这种LDPC码 是规则的,否则称为不规则LDPC码。对LDPC码编译码方面的研究大体上可以分为两部分的内容一是校验矩阵的构 造方法,另一方面是编译码方法。由于检验矩阵从根本上决定了所构造出的LDPC码的纠错 性能,因而校验矩阵的构造方法就显得尤为重要。当校验矩阵对应的Tarmer图中存在环路 时,环路中码字比特传出去的消息又会回到它本身,这会影响码字比特的判断,从而损害纠 错性能。但是,对于有限长度的LDPC码,环路是无法避免的。为了降低环路对纠错性能的 影响,构造LDPC码校验矩阵时,应该使环路尽可能大。另外,校验矩阵中相同长度的环路对 LDPC码纠错性能的影响是不同的。环路对纠错性能的影响,还与环路和周边节点的连通性 有关。环路的连通性越好,对纠错能力的损害越小。因此,对于长度相同的环路,应该优先 选择连通性好的。LDPC码的校验矩阵构造方法可以分为两类一类是随机构造法,如Xiao-Yu Hu在 "Progressive edge-growth Tanner graphs,,,MacKay D J C 在"Good error correcting codes based on very sparse matrices,,,T. Tian等在"Selective avoidance of cycles in irregular LDPC code construction”中提出的均属于这类构造方法。这类方法构 造的校验矩阵中0、1是随机分布的,因而使得编码和译码在实现时复杂度较高;另一类是 结构化的构造法,如 Y. Kou 等在"Low-Density Parity-Check Codes Based on Finite Geometries =ARediscovery and New Results”中提出的构造方法,但是该方法的校验矩阵 具有某种特殊结构,因此降低了编译码器的实现复杂度。目前实际应用中,大多是具有准循 环结构的LDPC码。文献"Progressive edge-growth Tanner graphs,,中提出了一种使局部围长尽可能大的校验矩阵构造方法,称为PEG算法。通过该算法构造的LDPC码具有很好的译码性 能,但是该算法构造的校验矩阵是随机结构的。文献“Elective avoidance of cycles in irregular LDPC code construction”经过分析得出,环的连通性是影响LDPC码译码错误 平层的关键,并提出了用ACE测度约束构造LDPC码的方法,但是文中给出的算法仍然是用 于构造随机结构的LDPC码。几何、代数和组合构造方法是结构化构造法的一个重要分支, 用该类方法可以构造出性能非常好的LDPC码,但是在码率和码长上往往无法灵活选择,使 其应用受到限制。D. Divsalar 等在文献“Construction of ProtographLDPC Codes with Linear Minimum Distance””中提出利用原模图构造LDPC码,所构造出的校验矩阵具有准 循环结构,且译码性能优异,但是并没有给出具体的构造方法。在CCSDS 131. 1-0-2标准 中,近地通信所用的LDPC码是有限域代数方法构造的,而深空通信所用的LDPC码是由原模 图构造出来的。

发明内容
本发明的技术解决问题是克服现有技术的不足,提供了一种QC-LDPC编码器及 编码方法。本发明克服了几何、代数和组合构造方法在码率和码长选择灵活度方面的不足, 以及部分构造方法构造的QC-LDPC码译码门限高、错误平层高的问题。本发明可以在构造 QC-LDPC码时灵活的选择码长和码率,既能用来构造非规则QC-LDPC码也能用来构造规则 QC-LDPC 码。本发明的技术解决方案是一种QC-LDPC编码器,其特征在于包括工作控制模块、输入缓冲模块、生成矩阵 存储模块、生成矩阵产生模块和CSRAA模块;工作控制模块在编码时对输入缓冲模块、生成矩阵存储模块和CSRAA模块进行 控制;以输入时钟为节拍,控制输入缓冲模块读取输入的信息序列;以工作时钟为节拍,控 制生成矩阵存储模块将生成矩阵输出到CSRAA模块,并控制CSRAA模块对信息序列进行校 验位编码;接收CSRAA模块输出的校验位序列,并按照信息序列与校验位序列的顺序将编 码序列输出;输入缓冲模块读取输入的信息序列;对信息序列缓冲后,在进行校验位编码时 将信息序列输出到CSRAA模块;在进行信息序列编码时,将信息序列输出到工作控制模块;生成矩阵产生模块在编码前产生编码用的生成矩阵,调用预先存储的矩阵 BaseMatriχ,若BaseMatriχ为有重边的矩阵,先进行L倍扩展以取消重边,并得到无重边 矩阵HS1,其中L要大于等于有重边的矩阵中的最大重边数;若BaseMatrix为无重边的矩 阵或经过L倍扩展后得到的矩阵HSl进行V倍扩展,得到QC-LDPC码的校验矩阵HS2,其中 V根据输出的编码长度决定;将校验矩阵HS2转换为生成矩阵G后输出到生成矩阵存储模 块;所述的L倍扩展,是将M * N的有重边矩阵BaseMatrix扩展为(Μ * L) * (N * L)的无重边矩阵HSl ;对HSl赋初值,使HSl为全0的矩阵;以i代表行号,j代表列号,以 寄存器cnt从1开始对扩展倍数进行累加计数,以i与j均等于1为起始点,对BaseMatrix 按照从上到下从左到右的顺序搜寻BaseMatrix中的每个元素,并利用寄存器e对当前元素 进行暂存;对e中的值进行判断,如果为BaseMatrix中列的首个非0元素,则找出HSl中第(i-1) * L+1到i * L行中行重最小的行,记行号为k,并对HSl中第k行,第(j-1)女 L+cnt的元素赋值为1,然后对e中值减1继续判断是否为0,如果不为0,则对HSl从变量 节点(j_l) ★ L+cnt开始进行Tarmer图展开的操作,直到HSl的Tarmer展开图中包含了 (i-1)女L+1行到i女L行的全部校验节点或无法继续展开;若HSl中的从(i-1) * L行 到i女L行的校验节点全部进入了 HSl的Tarmer展开图,则对HSl中以从(i_l) L行到 i女L行中选择最后进入HSl的Tarmer展开图的校验节点所代表的行为行号,以(j-Ι)女 L+cnt为列号的元素赋值为1 ;若HSl中的从(i-Ι)女L行到i女L行的校验节点未全部进 入了 HSl的Tanner展开图,则对HSl中以HSl中选择未进入HSl的Tanner展开图的校验 节点中行重最小的行为行号,以(j_l)女L+cnt为列号的元素赋值为1 ;再此对e中值减1 判断是否为0,如果不为0,则重新对HSl中从变量接点(j_l)女L+cnt开始进行Tarmer图 展开操作;如果非BaseMatrix中列的首个非0元素,对HSl从变量节点(j_l)女L+cnt开 始进行Tarmer图展开的操作,直到HSl中包含了(i_l) L行到i L行的全部校验节点 或无法继续展开,然后在HSl第(i-Ι)女L+1行到第i女L行中选择未进行Tarmer图展开 操作或最后进行Tarmer图展开操作的校验节点中行重最小的校验节点,对以行重值为行, 以(j-Ι)女L+cnt列的元素值赋值为1,并利用寄存器e对当前元素进行暂存,循环进行 Tarmer图展开操作直到对e中值减1后为0 ;所述的变量节点与每一列相对应;所述的校验 节点与每一行相对应;所述的Tarmer图为与矩阵对应图表示;所述的V倍扩展,是将输入的(M * L) * (N * L)的无重边矩阵HSl扩展为(M
L * V) * (N * L * V)的校验矩阵HS2或将输入的M * N的无重边矩阵BaseMatrix扩展 为(Μ * V) * (N * V)的校验矩阵HS2 ;对HS2赋初值,使HS2为所有元素都等于_1的矩 阵;以i代表行号,j代表列号,以i与j均等于1为起始点,对输入矩阵按照从上到下从左 到右的顺序搜索;若为输入矩阵每列的首个非零元素,对HS2中对当前i行和j列对应的元 素赋予0到V-I中的一个随机值,所述的随机值用于表示一个V * V的置换矩阵的偏移量, 所述的置换矩阵为单位矩阵根据偏移量的循环移位后得到的矩阵;对于非列中的首个非零 元素,在HS2中对当前i行和j列的对应的元素赋0到V-I中的一个随机值,再搜索不同偏 移量下HS2中所有以变量节点j为起点和终点的环路,选择环路中的最小环长和最小ACE 测度均为最大时的偏移量给HS2中当前行和j列的元素赋值;搜索完成后,将HS2中的-1 元素用V * V的零矩阵替换,非-1元素用V * V的置换矩阵替换,产生校验矩阵HS2 ;生成矩阵存储模块存储由生成矩阵产生模块产生的生成矩阵并在工作控制模块 控制下在编码时将生成矩阵输出到CSRAA模块;CSRAA模块利用输入的生成矩阵对信息序列进行校验位编码,并将校验位序列 输出到工作控制模块。所述的输入缓冲模块采用先入先出的队列对信息序列进行缓冲。所述的生成矩阵存储模块只存储输入的生成矩阵中每个子块的第一行或第一列, 并根据生成矩阵的准循环特性每次将生成矩阵中的值移位输出。所述的CSRAA模块由CSRAA单元组成,CSRAA单元单元的个数由编码序列的校验 位数决定;所述的CSRAA单元由反馈移位寄存器和与门、异或门组成。一种QC-LDPC编码方法,其特征在于通过以下步骤实现步骤1 构造生成矩阵
1. 1、选取原模图矩阵BaseMatrix,检测BaseMatrix是否存在重边,若有重边,则 转入步骤1. 2 ;若无重边,则转入步骤1. 3 ;1. 2、对BaseMatrix进行L倍扩展,其中L要大于等于有重边的原模图矩阵中的最 大重边数将M * N的有重边矩阵BaseMatrix扩展为(M * L) * (N * L)的无重边矩阵HSl ; 对HSl赋初值,使HSl为全0的矩阵;以i代表行号,j代表列号,以寄存器cnt从1开始对 扩展倍数进行累加计数,以i与j均等于1为起始点,对BaseMatrix按照从上到下从左到 右的顺序搜寻BaseMatrix中的每个元素,并利用寄存器e对当前元素进行暂存;对e中的 值进行判断,如果为BaseMatrix中列的首个非0元素,则找出HSl中第(i_l) L+1到i 女L行中行重最小的行,记行号为k,并对HSl中第k行,第(j-Ι)女L+cnt的元素赋值为 1,然后对e中值减1继续判断是否为0,如果不为0,则对HSl从变量节点(j-Ι)女L+cnt 开始进行Tarmer图展开的操作,直到HSl的Tarmer展开图中包含了(i_l)女L+1行到i 女L行的全部校验节点或无法继续展开;若HSl中的从(i-Ι)女L行到i女L行的校验节 点全部进入了 HSl的Tarmer展开图,则对HSl中以从(i_l) L行到i L行中选择最后 进入HSl的Tarmer展开图的校验节点所代表的行为行号,以(j-Ι)女L+cnt为列号的元素 赋值为1 ;若HSl中的从(i-1) L行到i L行的校验节点未全部进入了 HSl的Tarmer 展开图,则对HSl中以HSl中选择未进入HSl的Tarmer展开图的校验节点中行重最小的行 为行号,以(j_l) * L+cnt为列号的元素赋值为1 ;再此对e中值减1判断是否为0,如果 不为0,则重新对HSl中从变量接点(j-Ι)女L+cnt开始进行Tarmer图展开操作;如果非 BaseMatrix中列的首个非0元素,对HSl从变量节点(j_l) * L+cnt开始进行Tanner图 展开的操作,直到HSl中包含了(i-Ι)女L行到i女L行的全部校验节点或无法继续展开, 然后在HSl第(i-Ι)女L+1行到第i女L行中选择未进行Tarmer图展开操作或最后进行 Tanner图展开操作的校验节点中行重最小的校验节点,对以行重值为行,以(j_l) * L+cnt 列的元素值赋值为1,并利用寄存器e对当前元素进行暂存,循环进行Tarmer图展开操作 直到对e中值减1后为0 ;所述的变量节点与每一列相对应;所述的校验节点与每一行相对 应;所述的Tarmer图为与矩阵对应图表示;1. 3、对无重边的BaseMatrix或经过步骤1. 2后的HSl进行V倍扩展将输入的(M * L) * (N * L)的无重边矩阵HSl扩展为(M * L * V) * (N * L * V)的校验矩阵HS2或将输入的M * N的无重边矩阵BaseMatrix扩展为(Μ * V) * (N * V) 的校验矩阵HS2 ;对HS2赋初值,使HS2为所有元素都等于_1的矩阵;以i代表行号,j代表 列号,以i与j均等于1为起始点,对输入矩阵按照从上到下从左到右的顺序搜索;若为输 入矩阵每列的首个非零元素,对HS2中对当前i行和j列对应的元素赋予0到V-I中的一 个随机值,所述的随机值用于表示一个V * V的置换矩阵的偏移量,所述的置换矩阵为单位 矩阵根据偏移量的循环移位后得到的矩阵;对于非列中的首个非零元素,在HS2中对当前i 行和j列的对应的元素赋0到V-I中的一个随机值,再搜索不同偏移量下HS2中所有以变 量节点j为起点和终点的环路,选择环路中的最小环长和最小ACE测度均为最大时的偏移 量给HS2中当前行和j列的元素赋值;搜索完成后,将HS2中的-1元素用V * V的零矩阵 替换,非-1元素用V * V的置换矩阵替换,产生校验矩阵HS2 ;转入步骤1. 4 ;1. 4、利用步骤1. 3生成的HS2产生生成矩阵G,然后转入步骤2 ;
步骤2、利用步骤1产生的生成矩阵对信息序列进行QC-LDPC编码后输出。本发明与现有技术相比具有如下优点(1)本发明提出的构造方法可以根据实际需要灵活选择码长和码率。码长和码率 在实际应用中往往是灵活多变的,以往的许多QC-LDPC码构造方法,无法灵活选择,而本发 明弥补了此点不足。(2)采用本发明构造的LDPC码低译码门限、低错误平层。码低译码门限与低错误 平层是衡量LDPC码性能的两个重要指标,本发明在构造LDPC校验矩阵的过程中,综合考虑 环长和环的连通性,因而使构造出的LDPC码在译码门限和错误平层两方面均显示出良好 的性能。


图1为本发明编码器结构图;图2为CSRAA单元结构图;图3为第一步扩展流程图;图4为第二步扩展流程图;图5为ARJ4A原模图;图6到图15为实施例过程图;图16为任意给定矩阵与矩阵对应的Tarmer图。
具体实施例方式一、基本概念1、Tanher 图Tanner图是一种双向图,可以用G = {(V, E)}表示,其中V是节点的集合,V = Vb U V。。对于维数为M * N的校验矩阵,Vb = (v0,vi; -,V^1)称为变量节点,对应校验矩 阵的列,同时对应于码字中的比特位Λ = (c0, C1,…,Csh)称为校验节点,对应于校验矩 阵的行,同时对应于校验关系。E是节点之间相连的边的集合,同类节点之间没有边相连,只 有两类节点之间存在边。2、环长如果校验矩阵第i行、第j列元素是非零的,则Tarmer图中第i变量节点和第j 个校验节点有一条边相连。与节点相连的边数目称为节点的度(Degree);从某个节点出发 又回到该节点为一个环路(Cycle),所经过的边的个数称为环长。3、ACE 测度—个长度为2d的环的ACE测度定义为Σ 3(^-2),其中(Ii是变量节点i的度数。 如图16所示,显示了一个长度为6的环(Vq-C(1-V4-Ci-V6-C5-V(1),其中ν。、V4和V6是环上的 变量节点,度数分别为2、3、3,该环路的ACE测度为0-2) + (3-2) + (3-2),等于2。二、关键模块介绍如图1所示,为本发明中QC-LDPC编码器的结构图。包括工作控制模块、输入缓冲 模块、生成矩阵存储模块、生成矩阵产生模块和CSRAA模块。各模块间的连接关系如图中
7J\ ο
1、工作控制模块工作控制模块为编码器的主控模块,负责在编码时对输入缓冲模块、生成矩阵存 储模块和CSRAA模块进行调度。在编码过程中,以输入时钟为节拍控制输入缓冲模块读取 输入的信息序列;以工作时钟为节拍,控制输入缓冲模块将输入的信息序列输出到CSRAA 模块,以及控制生成矩阵存储模块进行移位将生成矩阵输出到CSRAA模块;控制CSRAA模块 利用生成矩阵对信息序列进行校验位编码,并在编码完成后,对编码序列进行输出门限控 制并输出。工作控制模块根据时钟源产生的工作时钟协调整个编码器模块的编码速率。以工 作时钟为节拍所进行的操作包括输入缓冲模块向CSRAA模块输出信息序列的速率;生成 矩阵存储模块向CSRAA模块输出生成矩阵的速率。同时,工作控制模块还对CSRAA模块输出的校验位序列进行时序控制,按照先信 息位后校验位的顺序将编码输出。2、输入缓冲模块输入缓冲模块的主要作用在于对输入的信息序列进行缓冲。在工作控制模块允许 数据输入时,信息序列按数据输入时钟逐比特写入输入缓冲模块的缓存中,写满一段数据 后,触发CSRAA模块开始工作。然后,按工作时钟从缓存中逐比特读出数据,送入CSRAA模 块。在最终产生编码时,将信息序列输出到工作控制模块,由工作控制模块进行时序控制输
出ο输入的数据进入输入缓冲模块后以FIFO (First In First Out,先入先出)队列的 形式进行排队。3、生成矩阵产生模块生成矩阵产生模块是负责产生编码用的生成矩阵,生成矩阵的性能决定了码的性 能。采用本发明的生成矩阵模块可以生成用于构造规则LDPC码或者非规则LDPC码的生成 矩阵。生成矩阵的产生过程从原模图矩阵(关于原模图的相关知识可详见参考文献 J Thorpe, ((Low-Density Parity-Check (LDPC) Codes Constructed fromProtographs)), 与 D. Divsalar,《Construction of Protograph LDPC Codes withLinear Minimum Distance)))的选择开始。对于有重边的原模图需要进行两步扩展操作(L倍扩展和V倍扩展),而对于无重 边的原模图矩阵只需要进行V倍扩展。通过扩展操作后可产生本发明编码器的校验矩阵, 通过校验矩阵便求得生成矩阵。对于存在重边的原模图矩阵,首先进行L倍扩展的基本方法为以至少为最大重 边数为扩展倍数确定L,则扩展得到的校验矩阵其列和行数均变成原模图矩阵的L倍,也就 是说其校验节点和变量节点个数都变成原来的L倍,其中校验节点与每行相对应;变量节 点与每列相对应。在扩展过程中尽最大可能增大局部围长。同时,为了保持原模图的特性 不发生改变,在原模图矩阵中对应于原模图的边只能在同类型节点之间置换。如图3所示, 为L倍扩展的流程图。 经过L倍扩展后,产生的矩阵已经不存在重边,但仍然是一个0、1随机分布的小矩 阵。然后,需要进行V倍扩展。对于不存在重边的原模图矩阵则直接进行V倍扩展。V倍扩展的目的在于产生一个具有准循环结构的校验矩阵。扩展的基本方法为以矩阵左上角 元素为矩阵的首元素,从左到右、从上到下依次对矩阵中的每个元素尝试所有可能置换矩 阵偏移量值。对于每个偏移量,搜索计算当前的最小环长和最小ACE测度,选择最小环长最 大条件下最小ACE测度最大的偏移量作为该子矩阵最终的偏移量。如图4所示,为V倍扩 展的流程图。其中,cycle_p用于存储最小环长;ACE_p用于存储最小ACE测度。经过L倍和V倍扩展后,存在重边的原模图矩阵可以得到一个QC-LDPC码校验矩 阵的偏移量矩阵。利用校验矩阵可直接生成编码用的生成矩阵,然后输出给生成矩阵存储 模块。4、生成矩阵存储模块生成矩阵存储模块是为CSRAA模块提供生成矩阵。对于QC-LDPC码来说,其生成 矩阵同样具有准循环结构。因此,在具体实现时,只需要存储生成矩阵中每个子块的第一行 或第一列,从而可以节省相应的存储空间。根据生成矩阵的准循环特性,存储生成矩阵中每个子块的第一行或第一列,在工 作控制模块的控制下,按照当前存储的生成矩阵结构,将生成矩阵移位输出到CSRAA模块。5、CSRAA 模块CSRAA模块为实现编码的核心模块,CSRAA是移位-取与-累加-寄存的英文首字 母,是用于实现移位-取与-累加-寄存的功能模块。CSRAA模块由CSRAA单元组成,CSRAA 单元用于存储校验位,每一段校验位对应一个CSRAA单元,CSRAA单元的数量由校验位的长 度决定。假定构造了一个大小为CbXtb的校验矩阵,则其对应的生成矩阵大小为(t_c) 匕父让,令生成矩阵为、。。其中每个子矩阵Giij,其中1彡i彡t-c,l彡j彡c大小为bXb。 将信息序列以(t-c)b比特为单位分段,每段信息序列为A= (A1, A2,…A(t_。)),其中Ai = (a(i_1)+1,a(i_1)+2,…,知),其中t-c,那么该段信息序列所对应的编码序列如式⑴ 所示,χ = A · Gqc = (A,P) = (A,P1, P2,…,Pc) (1)其中,校验比特块Pj = (p(J_1)b+1, p(J_1)b+2,…,pJb),1彡j彡C。对于校验块Pj如 式(2)所示Pj = A1G1, ,A2G2J+…+AtJtU (2)上式中AiGi,」,1 ^ i ^ t-c的计算,如式(3)所示,AGu =+ a(i_1)b+2g^ + …+ a,bg^( 3 )其中,gi, j表示子矩阵Gi, j的生成系数(即第一列或第一行),Wi , 0彡1彡b表 示Kd循环右移1位,且^;) = g^ 二 Su。从上面的推导过程可以得出校验块Pj, 1 ^ j ^ c的计算过程如下第1步根据式(3)计算得到A1Gy并存入寄存器;第2步由式(3)计算得到A2G2ij,将Af2,」与寄存器内容求和,得到= A1G1, ,A2G2,^将存入寄存器;如此继续,第i步(1彡i彡t-c),由式(3)计算得到AiGiij,将 AiGilj与寄存器内容求和,得到Si,」=A1G1, ^A2G2jj+-+AiGi, j^f Sijj存入寄存器;随着信息 序列A连续进入编码器,在第t-c步,得到St_。,j = A1G1,ZA2G2ij+…+‘Α-。,」,St_CjJ便是校验块P」。如图2所示,为CSRAA单元的结构图。CSRAA单元由4个长度为b的反馈移位寄存 器和与门、异或门组成。根据此CSRAA单元的结构图,CSRAA模块的工作流程为(1)将长度为b(b即为所构造校验矩阵每子矩阵的长度)的反馈移位寄存器Bp B2^C1, C2全部清零;(2)将生成系数&,」,1 ^ j ^ c,导入每个CSRAA单元的寄存器B1中。当b比特生 成系数全部导入B1后,生成器g2, j^c开始逐比特导入化中,同时信息序列开始逐 比特进入每个CSRAA单元,为便于说明,令信息序列为A1 ; (3)当信息位 进入时,其与寄存器B1中内容经与门输出Ag1^,《lgl(",)存于寄 存器C1中。当信息位 进入时,寄存器B1循环右移一位, 同&中内容经与门输出为 a2gf],然后累加到C1中。这一过程持续进行,当信息位%进入编码器时,寄存器C1中为
^u=^gff+^S+ + rf;0;(4)当整个信息序列A1完成移位-取与-累加-寄存全过程时,生成器g2, j刚好 全部导入4中,B2开始逐步循环移位,生成器gw开始逐比特导入B1中,同时信息序列A2开 始逐比特进入编码器,A2同化逐比特经过移位-取与-累加-寄存全过程。当整个信息序 列A2完成移位-取与-累加-寄存全过程,C1中内容为Sm = AiGu+Afy。上述过程持续 进行,直到该段信息序列全部进入编码器,此时C1中内容为Shj = A1G1JA2G2i^aAhGh, ^StU.便是校验块Ρ,完成上述编码后,c个CSRAA单元寄存器C1中的内容便构成了编码序列的校验部 分(P1, p2,…,P。),该内容逐比特移位输出并不断清零。在第一段信息序列A全部进入编 码器后,第二段信息序列接着逐比特进入编码器,重复上述编码过程,。对于连续信息序列, 通过寄存器B”化交替导入和寄存器Cp C2交替循环导出,完成连续编码。三、实施例下面就结合具体的实例对本发明中关键步骤利用L倍和V倍扩展产生校验矩阵的 过程进一步说明。如图5所示,以ARJ4A为原模图构造一个码长2048、码率1/2的QC-LDPC码。按步 骤对整个构造过程进行描述如下步骤1 由1/2码率ARJ4A原模图获取基础矩阵BaseMatrix,
权利要求
1. 一种QC-LDPC编码器,其特征在于包括工作控制模块、输入缓冲模块、生成矩阵存 储模块、生成矩阵产生模块和CSRAA模块;工作控制模块在编码时对输入缓冲模块、生成矩阵存储模块和CSRAA模块进行控制; 以输入时钟为节拍,控制输入缓冲模块读取输入的信息序列;以工作时钟为节拍,控制生成 矩阵存储模块将生成矩阵输出到CSRAA模块,并控制CSRAA模块对信息序列进行校验位编 码;接收CSRAA模块输出的校验位序列,并按照信息序列与校验位序列的顺序将编码序列 输出;输入缓冲模块读取输入的信息序列;对信息序列缓冲后,在进行校验位编码时将信 息序列输出到CSRAA模块;在进行信息序列编码时,将信息序列输出到工作控制模块;生成矩阵产生模块在编码前产生编码用的生成矩阵,调用预先存储的矩阵 BaseMatriχ,若BaseMatriχ为有重边的矩阵,先进行L倍扩展以取消重边,并得到无重边 矩阵HS1,其中L要大于等于有重边的矩阵中的最大重边数;若BaseMatrix为无重边的矩 阵或经过L倍扩展后得到的矩阵HSl进行V倍扩展,得到QC-LDPC码的校验矩阵HS2,其中 V根据输出的编码长度决定;将校验矩阵HS2转换为生成矩阵G后输出到生成矩阵存储模 块;所述的L倍扩展,是将M女N的有重边矩阵BaseMatrix扩展为(Μ * L) * (N * L)的 无重边矩阵HSl ;对HSl赋初值,使HSl为全0的矩阵;以i代表行号,j代表列号,以寄存器 cnt从1开始对扩展倍数进行累加计数,以i与j均等于1为起始点,对BaseMatrix按照从 上到下从左到右的顺序搜寻BaseMatrix中的每个元素,并利用寄存器e对当前元素进行暂 存;对e中的值进行判断,如果为BaseMatrix中列的首个非0元素,则找出HSl中第(i_l) * L+1到i * L行中行重最小的行,记行号为k,并对HSl中第k行,第(j-1) * L+cnt的元 素赋值为1,然后对e中值减1继续判断是否为0,如果不为0,则对HSl从变量节点(j-1) 女L+cnt开始进行Tanner图展开的操作,直到HSl的Tanner展开图中包含了(i_l) ± L+1 行到i女L行的全部校验节点或无法继续展开;若HSl中的从(i-Ι)女L行到i女L行的 校验节点全部进入了 HSl的Tarmer展开图,则对HSl中以从(i_l) L行到i L行中选 择最后进入HSl的Tarmer展开图的校验节点所代表的行为行号,以(j-1)女L+cnt为列号 的元素赋值为1 ;若HSl中的从(i-Ι)女L行到i女L行的校验节点未全部进入了 HSl的 Tarmer展开图,则对HSl中以HSl中选择未进入HSl的Tarmer展开图的校验节点中行重最 小的行为行号,以(j-1) ^ L+cnt为列号的元素赋值为1 ;再此对e中值减1判断是否为0, 如果不为0,则重新对HSl中从变量接点(j-Ι)女L+cnt开始进行Tarmer图展开操作;如 果非BaseMatrix中列的首个非0元素,对HSl从变量节点(j_l) * L+cnt开始进行Tanner 图展开的操作,直到HSl中包含了(i-Ι)女L行到i女L行的全部校验节点或无法继续展 开,然后在HSl第(i-Ι)女L+1行到第i女L行中选择未进行Tarmer图展开操作或最后 进行Tarmer图展开操作的校验节点中行重最小的校验节点,对以行重值为行,以(j-Ι)女 L+cnt列的元素值赋值为1,并利用寄存器e对当前元素进行暂存,循环进行Tarmer图展开 操作直到对e中值减1后为0 ;所述的变量节点与每一列相对应;所述的校验节点与每一行 相对应;所述的Tarmer图为与矩阵对应图表示;所述的V倍扩展,是将输入的(M * L) * (N * L)的无重边矩阵HSl扩展为(M * L * V) * (N * L * V)的校验矩阵HS2或将输入的M * N的无重边矩阵BaseMatrix扩展为(M* V) * (N * V)的校验矩阵HS2 ;对HS2赋初值,使HS2为所有元素都等于_1的矩阵;以 i代表行号,j代表列号,以i与j均等于1为起始点,对输入矩阵按照从上到下从左到右的 顺序搜索;若为输入矩阵每列的首个非零元素,对HS2中对当前i行和j列对应的元素赋予 0到V-I中的一个随机值,所述的随机值用于表示一个V * V的置换矩阵的偏移量,所述的 置换矩阵为单位矩阵根据偏移量的循环移位后得到的矩阵;对于非列中的首个非零元素, 在HS2中对当前i行和j列的对应的元素赋0到V-I中的一个随机值,再搜索不同偏移量 下HS2中所有以变量节点j为起点和终点的环路,选择环路中的最小环长和最小ACE测度 均为最大时的偏移量给HS2中当前行和j列的元素赋值;搜索完成后,将HS2中的-1元素 用V * V的零矩阵替换,非-1元素用V * V的置换矩阵替换,产生校验矩阵HS2 ;生成矩阵存储模块存储由生成矩阵产生模块产生的生成矩阵并在工作控制模块控制 下在编码时将生成矩阵输出到CSRAA模块;CSRAA模块利用输入的生成矩阵对信息序列进行校验位编码,并将校验位序列输出 到工作控制模块。
2.根据权利要求1所述的一种QC-LDPC编码器,其特征在于所述的输入缓冲模块采 用先入先出的队列对信息序列进行缓冲。
3.根据权利要求1所述的一种QC-LDPC编码器,其特征在于所述的生成矩阵存储模 块只存储输入的生成矩阵中每个子块的第一行或第一列,并根据生成矩阵的准循环特性每 次将生成矩阵中的值移位输出。
4.根据权利要求1所述的一种QC-LDPC编码器,其特征在于所述的CSRAA模块由 CSRAA单元组成,CSRAA单元单元的个数由编码序列的校验位数决定;所述的CSRAA单元由 反馈移位寄存器和与门、异或门组成。
5.一种QC-LDPC编码方法,其特征在于通过以下步骤实现步骤1 构造生成矩阵.1. 1、选取原模图矩阵BaseMatrix,检测BaseMatrix是否存在重边,若有重边,则转入 步骤1. 2 ;若无重边,则转入步骤1. 3 ;.1. 2、对BaseMatrix进行L倍扩展,其中L要大于等于有重边的原模图矩阵中的最大重 边数将M * N的有重边矩阵BaseMatrix扩展为(M * L) * (N * L)的无重边矩阵HSl ;对 HSl赋初值,使HSl为全0的矩阵;以i代表行号,j代表列号,以寄存器cnt从1开始对扩 展倍数进行累加计数,以i与j均等于1为起始点,对BaseMatrix按照从上到下从左到右 的顺序搜寻BaseMatrix中的每个元素,并利用寄存器e对当前元素进行暂存;对e中的值 进行判断,如果为BaseMatrix中列的首个非0元素,则找出HSl中第(i_l) * L+1到i * L 行中行重最小的行,记行号为k,并对HSl中第k行,第(j-Ι)女L+cnt的元素赋值为1,然后 对e中值减1继续判断是否为0,如果不为0,则对HSl从变量节点(j-Ι)女L+cnt开始进 行Tanner图展开的操作,直到HSl的Tanner展开图中包含了(i_l) ~k L+1行到i ~k L行的 全部校验节点或无法继续展开;若HSl中的从(i-Ι)女L行到i女L行的校验节点全部进 入了 HSl的Tarmer展开图,则对HSl中以从(i_l) * L行到i * L行中选择最后进入HSl 的Tarmer展开图的校验节点所代表的行为行号,以(j_l) ★ L+cnt为列号的元素赋值为1 ; 若HSl中的从(i-Ι)女L行到i女L行的校验节点未全部进入了 HSl的Tarmer展开图,则对HSl中以HSl中选择未进入HSl的Tarmer展开图的校验节点中行重最小的行为行号,以 (j-Ι)女L+cnt为列号的元素赋值为1 ;再此对e中值减1判断是否为0,如果不为0,则重 新对HSl中从变量接点(j_l) L+cnt开始进行Tanner图展开操作;如果非BaseMatrix 中列的首个非0元素,对HSl从变量节点(j-1) * L+cnt开始进行Tanner图展开的操作, 直到HSl中包含了(i-Ι)女L行到i女L行的全部校验节点或无法继续展开,然后在HSl 第(i-Ι)女L+1行到第i女L行中选择未进行Tarmer图展开操作或最后进行Tarmer图展 开操作的校验节点中行重最小的校验节点,对以行重值为行,以(j-1) * L+cnt列的元素值 赋值为1,并利用寄存器e对当前元素进行暂存,循环进行Tarmer图展开操作直到对e中 值减1后为0 ;所述的变量节点与每一列相对应;所述的校验节点与每一行相对应;所述的 Tanner图为与矩阵对应图表示;·1. 3、对无重边的BaseMatrix或经过步骤1. 2后的HSl进行V倍扩展 将输入的(M * L) * (N * L)的无重边矩阵HSl扩展为(M * L * V) * (N * L * V) 的校验矩阵HS2或将输入的M * N的无重边矩阵BaseMatrix扩展为(Μ * V) * (N * V) 的校验矩阵HS2 ;对HS2赋初值,使HS2为所有元素都等于_1的矩阵;以i代表行号,j代表 列号,以i与j均等于1为起始点,对输入矩阵按照从上到下从左到右的顺序搜索;若为输 入矩阵每列的首个非零元素,对HS2中对当前i行和j列对应的元素赋予0到V-I中的一 个随机值,所述的随机值用于表示一个V * V的置换矩阵的偏移量,所述的置换矩阵为单位 矩阵根据偏移量的循环移位后得到的矩阵;对于非列中的首个非零元素,在HS2中对当前i 行和j列的对应的元素赋0到V-I中的一个随机值,再搜索不同偏移量下HS2中所有以变 量节点j为起点和终点的环路,选择环路中的最小环长和最小ACE测度均为最大时的偏移 量给HS2中当前行和j列的元素赋值;搜索完成后,将HS2中的-1元素用V * V的零矩阵 替换,非-1元素用V * V的置换矩阵替换,产生校验矩阵HS2 ;转入步骤1. 4 ; 1. 4、利用步骤1. 3生成的HS2产生生成矩阵G,然后转入步骤2 ; 步骤2、利用步骤1产生的生成矩阵对信息序列进行QC-LDPC编码后输出。
全文摘要
一种QC-LDPC编码器,其特征在于包括工作控制模块、输入缓冲模块、生成矩阵存储模块、生成矩阵产生模块和CSRAA模块。同时本发明还提供了一种利用本编码器实现的编码方法。采用本发明可以灵活选择码长和码率,并产生一种译码门限低、错误平层低的QC-LDPC码。
文档编号H03M13/11GK102088294SQ20101029803
公开日2011年6月8日 申请日期2010年9月29日 优先权日2010年9月29日
发明者杨磊, 邱乐德, 陶孝锋, 龚险峰 申请人:西安空间无线电技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1