发明名称 一种QC-LDPC编码器及编码方法
摘要 一种QC-LDPC编码器,其特征在于包括:工作控制模块、输入缓冲模块、生成矩阵存储模块、生成矩阵产生模块和CSRAA模块。同时本发明还提供了一种利用本编码器实现的编码方法。采用本发明可以灵活选择码长和码率,并产生一种译码门限低、错误平层低的QC-LDPC码。
申请公布号 CN102088294A 申请公布日期 2011.06.08
申请号 CN201010298033.0 申请日期 2010.09.29
申请人 西安空间无线电技术研究所 发明人 龚险峰;杨磊;陶孝锋;邱乐德
分类号 H03M13/11(2006.01)I 主分类号 H03M13/11(2006.01)I
代理机构 中国航天科技专利中心 11009 代理人 安丽
主权项 一种QC‑LDPC编码器,其特征在于包括:工作控制模块、输入缓冲模块、生成矩阵存储模块、生成矩阵产生模块和CSRAA模块;工作控制模块:在编码时对输入缓冲模块、生成矩阵存储模块和CSRAA模块进行控制;以输入时钟为节拍,控制输入缓冲模块读取输入的信息序列;以工作时钟为节拍,控制生成矩阵存储模块将生成矩阵输出到CSRAA模块,并控制CSRAA模块对信息序列进行校验位编码;接收CSRAA模块输出的校验位序列,并按照信息序列与校验位序列的顺序将编码序列输出;输入缓冲模块:读取输入的信息序列;对信息序列缓冲后,在进行校验位编码时将信息序列输出到CSRAA模块;在进行信息序列编码时,将信息序列输出到工作控制模块;生成矩阵产生模块:在编码前产生编码用的生成矩阵,调用预先存储的矩阵BaseMatrix,若BaseMatrix为有重边的矩阵,先进行L倍扩展以取消重边,并得到无重边矩阵HS1,其中L要大于等于有重边的矩阵中的最大重边数;若BaseMatrix为无重边的矩阵或经过L倍扩展后得到的矩阵HS1进行V倍扩展,得到QC‑LDPC码的校验矩阵HS2,其中V根据输出的编码长度决定;将校验矩阵HS2转换为生成矩阵G后输出到生成矩阵存储模块;所述的L倍扩展,是将M*N的有重边矩阵BaseMatrix扩展为(M*L)*(N*L)的无重边矩阵HS1;对HS1赋初值,使HS1为全0的矩阵;以i代表行号,j代表列号,以寄存器cnt从1开始对扩展倍数进行累加计数,以i与j均等于1为起始点,对BaseMatrix按照从上到下从左到右的顺序搜寻BaseMatrix中的每个元素,并利用寄存器e对当前元素进行暂存;对e中的值进行判断,如果为BaseMatrix中列的首个非0元素,则找出HS1中第(i‑1)*L+1到i*L行中行重最小的行,记行号为k,并对HS1中第k行,第(j‑1)*L+cnt的元素赋值为1,然后对e中值减1继续判断是否为0,如果不为0,则对HS1从变量节点(j‑1)*L+cnt开始进行Tanner图展开的操作,直到HS1的Tanner展开图中包含了(i‑1)*L+1行到i*L行的全部校验节点或无法继续展开;若HS1中的从(i‑1)*L行到i*L行的校验节点全部进入了HS1的Tanner展开图,则对HS1中以从(i‑1)*L行到i*L行中选择最后进入HS1的Tanner展开图的校验节点所代表的行为行号,以(j‑1)*L+cnt为列号的元素赋值为1;若HS1中的从(i‑1)*L行到i*L行的校验节点未全部进入了HS1的Tanner展开图,则对HS1中以HS1中选择未进入HS1的Tanner展开图的校验节点中行重最小的行为行号,以(j‑1)*L+cnt为列号的元素赋值为1;再此对e中值减1判断是否为0,如果不为0,则重新对HS1中从变量接点(j‑1)*L+cnt开始进行Tanner图展开操作;如果非BaseMatrix中列的首个非0元素,对HS1从变量节点(j‑1)*L+cnt开始进行Tanner图展开的操作,直到HS1中包含了(i‑1)*L行到i*L行的全部校验节点或无法继续展开,然后在HS1第(i‑1)*L+1行到第i*L行中选择未进行Tanner图展开操作或最后进行Tanner图展开操作的校验节点中行重最小的校验节点,对以行重值为行,以(j‑1)*L+cnt列的元素值赋值为1,并利用寄存器e对当前元素进行暂存,循环进行Tanner图展开操作直到对e中值减1后为0;所述的变量节点与每一列相对应;所述的校验节点与每一行相对应;所述的Tanner图为与矩阵对应图表示;所述的V倍扩展,是将输入的(M*L)*(N*L)的无重边矩阵HS1扩展为(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‑1中的一个随机值,所述的随机值用于表示一个V*V的置换矩阵的偏移量,所述的置换矩阵为单位矩阵根据偏移量的循环移位后得到的矩阵;对于非列中的首个非零元素,在HS2中对当前i行和j列的对应的元素赋0到V‑1中的一个随机值,再搜索不同偏移量下HS2中所有以变量节点j为起点和终点的环路,选择环路中的最小环长和最小ACE测度均为最大时的偏移量给HS2中当前行和j列的元素赋值;搜索完成后,将HS2中的‑1元素用V*V的零矩阵替换,非‑1元素用V*V的置换矩阵替换,产生校验矩阵HS2;生成矩阵存储模块:存储由生成矩阵产生模块产生的生成矩阵并在工作控制模块控制下在编码时将生成矩阵输出到CSRAA模块;CSRAA模块:利用输入的生成矩阵对信息序列进行校验位编码,并将校验位序列输出到工作控制模块。
地址 710100 陕西省西安市长安区西街150号