一种 IRA-LDPC 码的构造方法及其编码器 【技术领域】
本发明属于无线通信信道编码技术领域, 具体涉及一种高性能 IRA-LDPC 码的代 数构造方法及相应的编码器结构。 本发明可作为移动通信、 固定无线通信、 卫星通信和空间 通信的长期演进 (LTE) 工业标准中物理层前向纠错码的最佳选择方案之一。背景技术
信道纠错码技术主要用于解决传输可靠性问题, 本发明所涉及的 IRA-LDPC 码是 一种性能接近香农限, 并能高速运行的信道纠错编码技术。
LDPC 码本质上是一种线性分组码, 它是由稀疏奇偶校验矩阵 H 来定义的, LDPC 码 的码字序列 与 H 矩阵互为零空间, 即 这个方程也称为校验方程, 由此可知, 对 LDPC 码的结构设计主要是对稀疏奇偶校验矩阵 H 的结构设计。LDPC 码是利用置信传播 (Belief Propagation) 迭代解码算法进行解码的, BP 解码算法是在 H 矩阵确定的 Tanner 图上传递 置信信息来进行迭代计算的。初期, LDPC 码没有特定的编码方法, 通常情况下, 特别是前期 在性能仿真实验过程中, 是将 LDPC 码的 H 矩阵经行列变换转换成生成矩阵, 然后用生成矩 阵进行编码。从 H 矩阵到生成矩阵的变换计算量大约为码长的平方, 并且虽然 H 矩阵是一 个稀疏矩阵 ( 即矩阵中的元素大部分是 ‘0’ , 为 ‘1’ 的元素数量非常少 ), 但经过行列变换 得到的生成矩阵却不一定是稀疏矩阵, 因此利用生成矩阵编码效率极低。为了降低编码器 的复杂度, 在设计实用的 LDPC 码时, 都是将 H 矩阵设计成有利于编码的形式, 这样可以不通 过生成矩阵, 而是直接利用 H 矩阵进行编码。目前在工业标准中采纳的 LDPC 码有下列两种 结构特征 : 一种是 IRA-LDPC 码 ; 另一种是 QC-LDPC 码。它们都可以直接利用 H 矩阵进行编 码, 而不用求出对应的生成矩阵, 并且可以做到编码算法为码长的线性复杂度。
2001 年, Hui Jin 在其博士论文 《Analysis and design of turbo-like codes》 中提出不规则重复积累 (Irregular Repeat-Accumulate, ) 码, 简称 IRA 码。他从理论上 证明了在删余信道上, IRA 码是迄今为止唯一的香农信道容量可达码类, 而且在高斯白噪声 (AWGN) 信道上, IRA 码也显示出逼近香农容量限的优良性能。 IRA 码的编码器可以看作由一 个低密度生成 (LDGM) 矩阵和一个重复累加器级联而成, 由编码器的结构可以写出对应的 H d p p 矩阵。这个 H 矩阵的系统形式为 H = [H H ], 其中 H 矩阵具有确定的双对角线结构 :
表达式 (1) 的 Hp 矩阵对应于 IRA 码编码器中的重复累加器 ; 而信息码位对应的 Hd 矩阵中 ‘1’ 元素的分布是不确定的, 对应于 IRA 码编码器中的低密度生成矩阵。因此, 设计 d 实用 IRA 码的主要任务就是设计 H 矩阵的结构。IRA 码可以看作 LDPC 码的一个子类, 本发
明中把由双对角线 Hp 矩阵构成的 H 矩阵所定义的 IRA 码, 称为 IRA-LDPC 码。
在应用方面, 2005 年, 欧洲卫星通信标准 《Digital Video Broadcasting(DVB) ; Second generation framing structure, channel coding and modulation systems for Broadcasting, Interactive Services, News Gathering and other broadband satellite applications》 ( 简称 DVB-S2 标准 ) 采纳了 IRA-LDPC 码作为前向纠错码的主要方案。标 准中没有给出 IRA-LDPC 码的 Hd 矩阵结构, 只给出了编码表和相应的编码算法, 而且标准中 没有介绍编码表是如何产生, 因此构造编码器时必须消耗大量的 ROM 空间来存储编码表中 的每一个数字。 发明内容
为克服 DVB-S2 标准中采纳的 IRA-LDPC 码需要大量 ROM 空间来存储编码表的缺 点, 本发明提供了一种 IRA-LDPC 码的构造方法, 本发明解决了 IRA-LDPC 码 Hd 矩阵的存储 空间问题, 而且对应的编码器硬件复杂度更低, 运行速度更快, 仿真性能也略有优势, 能更 好的在无线通信的实际工程中得到应用。
本发明提供的一种 IRA-LDPC 码的构造方法, 若所构造的 IRA-LDPC 码信息位长 d 度为 A、 校验位长度为 B, 所构造的 H 矩阵的尺寸为 B×A, 所述 Hd 矩阵设定的约束条件为 : ( 一 ) 信息位长度 A 和校验位长度 B 存在大于 1 的公因数 L ; ( 二 )Hd 矩阵被分解为 k 个子 矩阵 每个子矩阵的尺寸是 B×L, 其中 k = A/L ; ( 三 )Hd 矩阵的行重 的第一列循环下移 m 位, 得到第二列, 作依次 ( 六 )Hd 矩阵采用其紧凑形式的剩 量只有一种, 用 u 表示 ; ( 四 )Hd 矩阵的列重量最多有 k 种, 最少是两种, 分别用 v0, v 1, ..., vk-1 表示 ; ( 五 ) 每个子矩阵 每个子矩阵 循环下移 m 位操作, 得到整个 Hd 矩阵, 其中 m = B/L, 要求 m+1 是素数, 这个操作等效于计算 的第 ρ 列第 ψ 个 “1” 元素的行坐标 余类数对阵列 表示, 剩余类数对阵列 的存储形式为 阵列, 其特征在于 和 结构形式如 (I) 和 (I’ )式:
表达式 (I) 中每一列剩余类数对的数量是不等的, 由各个子矩阵的列重量 v0, v1, ..., vk-1 确定 ; 表达式 (I) 中每一行剩余类数对的数量是相等的, 均为行 重量 u ; 阵列 的尺寸为 m×k, 阵列 中剩余类数对的总数为 由于 k > u, 所以阵列 是稀疏的, 阵列 中每一个位置的元素为一个整数对 (rθ,δ qθ,δ), 其中 (rθ,δ qθ, 1, ..., vδ-1, γ = 0, 1, ..., u-1} 表示阵列 中的一 γ qψ, γ)|ψ = 0, δ) ∈ {Φ} ∪ {(rψ, 个元素, (rψ, Φ 是空集 ; 表达式 (I’ ) 中的 是阵列 的存储结构 ; γ qψ, γ) 是剩余类数对,
构造剩余类数对阵列 需要设计剩余类数对中的第一个参数 rθ,γ = rψ,γ, 设计 rθ, 对于 m = B/L 且满足 m+1 是素数, 基于有限域 GF(m+1) 上的有限循 γ = rψ, γ 的方法是 : 环乘群至少有 u 个生成元 g0, g1, ..., gu-1, 利用 u 生成元的 1, 2, ..., m 次幂, 生成 m×u 个 rθ, 计算表达式如 (II) 式 : γ = rψ, γ 元素, θ+1
rθ, -1](mod(m+1)) (II) γ = rψ, γ = [(gγ)
构造剩余类数对阵列 需要设计剩余类数对中的第二个参数 qθ, 可以利 γ = qψ, γ, 用式 (II)rθ, qθ, γ = rψ, γ 来设计 qθ, γ = qψ, γ, γ = qψ, γ 的计算方法如 (III) 式 :
根据剩余类数对阵列 能够计算 Hd 矩阵中每一个 “1” 元素所在位置的行坐标, 设 的第 ρ(ρ = 0, 1, ..., L-1) 列第 ψ(ψHd 矩阵的第 δ(δ = 0, 1, ..., k-1) 个子矩阵
= 0, 1, ..., vδ-1) 个 “1” 元素的行坐标的计算表达式为 (IV) 式 : 最后, 利用上述构成的 Hd 矩阵, 即可得到系统形式 H 矩阵 H = [Hd Hp], 其中 Hp 矩 阵具有确定的双对角线结构。
本发明提供一种 IRA-LDPC 码的编码器, 其特征在于, 在可编程逻辑器件 ( 包括 CPLD 和 FPGA) 环境下的编码器硬件电路结构设计, 包括 : 附图 2 的 IRA-LDPC 码编码器的总 体电路结构、 附图 3 的编码器使能信号生成模块 ECEN、 附图 4 的校验位选择信号发生器子 模块 PCθ、 附图 5 的校验位计算与储存子模块 PSθ 和附图 6 的编码数据输出模块 DATA-OUT、 主时钟输入端口、 信息位数据串行输入端口、 R/W 控制信号输入端口和编码数据串行输出端 口;
编码使能信号生成模块 ECEN 用于将阵列 中每个数对 (rθ, δqθ, δ) 的第一个元素 rθ, 离线转换成 m×k 个二进制值, 将这 m×k 个使能信号分成 k 个分组, 每个分组 m 位 δ 值, 使能信号并行输出至校验位选择信号发生器子模块和校验位计算与存储子模块, 为它们提 供使能控制信号 E ;
校验位选择信号发生器模块由 m 个并行的校验位选择信号发生器子模块 PCθ 构
成, θ = 0, 1, ..., m-1 ; 校验位选择信号发生器子模块 PCθ 用于计算出 qθ,γ 元素的值, 并 由 qθ, γ 元素的值确定
位的选择信号 ch 输出, 选通校验位计算与存储子模块 PSθ 的 的计算与储存 ;L 个 1 位寄存器阵列中的某一个寄存器参与校验位计算与存储模块由 m 个并行的校验位计算与存储子模块 PSθ 构成, θ = 0, 1, ..., m-1 ; m 个 PSθ 中的 L 个 1 位寄存器阵列用来完成 B 位校验位的中间结果 的计算与储存 ; m 个 PSθ 向编码数据输出模块输出
yθ ~ yθ+(L-1)m, θ = 0, 1, ..., m-1 ; 编 码 数 据 输 出 模 块 DATA-OUT 根 据 m 个 子 模 块 PSθ 传 来 的完成校验位的迭代累加计算, 即 p0 = y0, p1 = p0+y1, p2 = p1+y2, ..., pB-1 = pB-2+yB-1, 并由编码数据串行输出端口 d-out 输出编码码字 ;
一个主时钟周期输入端口 CLK, 产生两个分频时钟, L 分频时钟 CLK1 和 m 分频时钟 CLK2 ;
一个 1 比特的信息位数据串行输入端口 d-in, 每个 CLK 周期输入一个信息位 ;
一个 1 比特的 R/W 控制信号输入端口, 每个 CLK 周期产生一个 R/W 信号, 有信息序 列输入时, 设置 R/W = 0 ; 无信息序列输入时, 设置 R/W = 1 ;
一个 1 比特的编码数据串行输出端口 d-out, 每个 CLK 周期输出一个编码位。
本发明的主要目的是提供一种基于剩余类数对代数结构的 IRA-LDPC 码 Hd 矩阵的 构造方法, 及其相应的编码器硬件结构, 并将这种码称为基于剩余类数对的 IRA-LAPC 码。 与 DVB-S2 标准中使用的 IRA-LDPC 码 ( 需要存储整个编码表 ) 不一样的特征是, 由本发明 d 提供的方法构造出来的 IRA-LDPC 码其 H 矩阵中每个 ‘1’ 元素的位置坐标均可以由代数表 达式计算得到。本发明所设计的 IRA-LDPC 码与现有工业标准中的 LDPC 码 ( 包括 DVB-S2 标准中的 IRA-LDPC 码和 IEEE802.16e 标准中的不规则 QC-LDPC 码 ) 相比性能相当, 甚至更 好, 占用的存储器容量更少, 编码器的硬件实现复杂度更低, 所占用的芯片面积更小。 附图说明
附图 1 为本发明方法的流程图 ;
附图 2 为本发明设计的 IRA-LDPC 码编码器的总体电路结构示意图 ;
附图 3 为本发明设计的 IRA-LDPC 码编码使能信号生成模块 ECEN ;
附图 4 为本发明设计的 IRA-LDPC 码校验位选择信号发生器子模块 PCθ ;
附图 5 为本发明设计的 IRA-LDPC 码校验位计算与储存子模块 PSθ ; 附图 6 为本发明设计的 IRA-LDPC 码编码数据输出模块 DATA-OUT。具体实施方式
本发明的 IRA-LDPC 编码器的构造方法包括两部分 : 第一部分是构造 Hd 矩阵, 以及 d d p d 根据 H 完成 H = [H H ] 的构造 ; 第二部分是根据 H 矩阵的结构特征设计 IRA-LDPC 码的编 码器的电路结构。下面我们首先介绍本发明要用到的数学概念 ; 接着描述第一部分 Hd( 或 H) 矩阵的结构特征和构造方法 ; 然后描述第二部分编码器的基本工作原理、 构造方法、 电 路结构和工作过程 ; 最后给出一个实例。 d
构造 H 矩阵时使用了剩余类和有限循环乘群等数学原理, 其基本概念描述如下 :剩余类 : 由同余概念可将全体整数加以分类, 把余数相同的归为一类。设 n 表示 模数, r 和 q 为二个变量, 0 ≤ r < n, q 为整数, 即由 f = qn+r 定义余数同为 r 的整数构成 一个集合 所有整数可划分为 n 个这样的集合, 也称为 n 个剩余类。显然, 任意整数必属于 n 个剩余类中的一个。
定义 [ 剩余类数对 ] : 从表达式 f = qn+r 中提取两个数 r 和 q, 构成数偶对 (r q), 称为剩余类数对, 表示以模 n 划分剩余类, 在剩余类 中的第 q 个元素是 f。例如, 设模数为 n = 5, (r q) = (23) 表示剩余类 中的第 3 个元素为 f = 17 = 3×5+2, (r q) = (30) 表示剩余类 中的第 0 个元素为 f = 3 = 0×5+3。
有限循环乘群 : 由一个单独元素的一切幂次所构成的群称为循环群, 该元素称为 循环群的生成元。若 GF(n) 有限域中除 0 外的所有元素都可以由域中的某个元素 g 的幂次 构成, 则称 GF(n) 域中除 0 外的元素构成一个有限循环乘群, g 称为这个有限循环乘群的生 成元。
本发明申请书中所使用的符号规定如下 : 结构描述符号如码长、 信息位长度等用 d p 26 个英文字母表示, 下标、 上标和索引用希腊字母表示。H = [H H ] 表示 IRA-LDPC 码的稀 d 疏奇偶校验矩阵, 其中 H 表示本发明要构造的信息位所对应的稀疏奇偶校验矩阵, Hp 表示 校验位所对应的双对角线矩阵。 A 表示信息位长度或 Hd 的列数, B 表示校验位长度或 Hd 的行 数, N 表示码长, N = A+B, R 表示码率, R = A/N。δ = 0, 1, ..., k-1 表示 Hd 所分解的子矩阵 的数量索引, 表示 Hd 所分解的第 δ 个子矩阵, 即 的某个大于 1 的公因数, 也表示 的列数, ρ = 0, 1, ..., L-1 表示 L 表示 A 和 B 列数的索引。 是 Hd 的一种紧凑表示形式, 称为剩余类数对阵列, 表示阵列 的存储结构。 k = A/L 表示 Hd 所分解 的子矩阵的数量或 的列数, δ = 0, 1, ..., k-1 亦表示 列数的索引 ; m = B/L 表示 的行数 或表示被并行执行的使能信号的数量, θ = 0, 1, ..., m-1 表示 的行索引或并行输出 m 个 使能信号的索引。 量 ), 其中 表示校验位的值,d表示信息序列 ( 或矢量 ), 其中 dη 表示信息位的值, η 表示校验位序列 ( 或矢 表示d= 0, 1, ..., A-1 表示信息位索引或 Hd 的列索引 ;表示校验位索引或 Hd 的行索引 ;码位序列 ( 或码矢量 )。 u 表示 H 的行重量, γ = 0, 1, ..., u-1 表示 H 每一行中 “1” 元素的数 量索引或 的每一行中剩余类数对的数量索引 ; vδ 表示 示 的列重量, ψ = 0, 1, ..., vδ-1 表 的每一列中 “1” 元素的数量索引, vmin 和 vmax 分别表示 Hd 的最小列重量和最大列重量。表示 中第 δ 个列矢量, T 表示阵列、 矢量或矩阵的转置。 (rθ, δqθ, δ) 表示 中第 θ 行第 δ 列的元素, (rψ, Φ 表示不包含剩余类数对的 γqψ, γ) 表示阵列 中的某一个剩余类数对, 空集。 令 表示不大于 x 的最大整数 ) 表示 Hd 的第 η 列位于的第 κ 个子矩阵 的第 σ 列。(rψ, (rψ, γqψ, γ), κqψ, 中, 令 σ = η(modL) 表示 Hd 的第 η 列位于子矩阵κ), (rψ, g0, g1, ..., gγ, ..., gu-1 表示 δqψ, δ) 和 (rθ, γqθ, γ) 均表示 中的同一个剩余类数对。 表示每个生成基于有限域 GF(m+1) 的循环乘群的 u 个生成元 ; 表示以 1, 2, 3, ..., m 为幂次由 u 个生成元所生成的 m×u 个元素。 元的 m+1 次幂是它本身。eψ,δ 表示子矩阵 示由剩余类数对 (rψ,δqψ,δ) 计算出来的第 δ 个子矩阵10中第 1 列第 ψ 个 “1” 元素的行坐标, 表 第 ρ 列第 ψ 个 “1” 元素的行102437857 A CN 102437865说明书6/15 页坐标。 表示 Hd 中第 η 列 ( 位于第 κ 个子矩阵 表示 Hd 中第 行第 η 列的元素值 ; 列的元素值中)第ψ个 “1” 元素的行坐标。 表示 Hd 中第 行第 η与第 η 个输入信息位 dη 的乘积 ; 表示 Hd 中第 行的所有乘积项的和, 即本发明第一部分所构造的 Hd 矩阵结构特点如下 : Hd 矩阵的维数为 B×A, 信息位长 度 A 和校验位长度 B 存在大于 1 的公因数 L( 若不存在, 则不属于本发明考虑的范围之内 )。
即 Hd 矩阵可分解为 k(k = A/L) 个子矩阵,d d每个子矩阵的维数是 B×L。本发明规定 H 矩阵是等行重量的, 行重量为 u。H 矩阵最多有 k 个不同 的列重量, 最少有 2 个不同的列重量, 设 vδ(δ = 0, 1, ..., k-1) 表示 Hd 的列重量, Hd 矩阵 最大列重量为 3 < vmax ≤ m。vδ 也表示 的最小列重量为 vmin = 3, 的个数。对 到的, 则 矩阵第一列中 ‘1’ 元素 矩阵, 除了第一列外, 其余各列都是将前一列循环下移 m 次得 矩阵第一列矩阵中各列的重量相同 ( 即每列中 ‘1’ 元素的个数相同 )。因此只用设计每个矩阵第一列 ‘1’ 元素所在行坐标, 就能得到整个 Hd 矩阵。本发明规定每个 的紧凑表示形式, 称为剩余类数对阵列
‘1’ 元素的行坐标用一个剩余类数对 (rψ, 本发明构造了下列 Hd 矩阵 γqψ, γ) 来计算。为此,其中 (rθ,δqθ,δ) ∈ {Φ} ∪ {(rψ,γqψ,γ)|ψ = 0, 1, ..., vδ-1, γ = 0, 1, ..., u-1}。 的尺寸是 m×k 维, 规定 m+1 必须是素数。 阵列中剩余类数对的数量可以推导如
“1” 元素的总数为 下: Hd 矩阵中 素的总数为消去 L 得到每个子矩阵中第一列 “1” 元这也是 中剩余类数对的总数。显然, 中每一列剩余类数对的数 的列重量 v0, v1, ..., vδ, ..., vk-1 确定 ;d量不一定相等, 由各个子矩阵中每一行剩余类数对的数量是相等的, 均为 H 矩阵的行重量 u, 通常 k > u, 所以阵列 是 稀疏的。 需要强调的是表达式 (2) 的阵列 不是数学意义上的矩阵, 它是本专利所发明的专 d 门用来表示 H 矩阵的一种紧凑的阵列结构。
阵列 还可以写成更紧凑的形式其中表示剩余类数对列矢量这里 Rθ,δ ∈ {(rψδqψ,δ), Φ}。 中剩余类数 中第一列的第 ψ(ψ = 0, 1, ..., vδ-1)对 (rψ, 子矩阵 δqψ, δ) 的数量由列重量 vδ 确定, 的行坐标的计算表达式为 :11个 1 元素的行坐标, 也是 中第 ψ(ψ = 0, 1, ..., vδ-1) 个剩余类数对所决定的 ‘1’ 元素102437857 A CN 102437865
说明书7/15 页eψ, (3) δ = (rψ, δ+m×qψ, δ)(mod B) 我们将剩余类数对的表示方法扩展到整个 Hd 矩阵中的每个 “1” 元素, 也就是计算 的第 ρ(ρ = 0, 1, ..., L-1) 列第 ψ(ψHd 矩阵的第 δ(δ = 0, 1, ..., k-1) 个子矩阵
= 0, 1, ..., vδ-1) 个 “1” 元素的行索引 ( 行坐标 ), 表达式 (3) 扩展如下 : Hd 矩阵中每个 “1” 元素的位置坐标还有另一种表示方法。由于d等效于δ = 0, 1, ..., k-1, H 矩阵中第 η 列等效于第 κ 个子矩阵
的第 σ 列中, 那么 Hd 矩阵第 η 列第 ψ 个 “1” 元素的行坐标值由剩余类数对 (rψ, κqψ, κ) 计算如下 : 本发明第一部分 Hd( 或 H) 矩阵的构造方法主要包括 阵列中剩余类数对 (rψ, γqψ, 剩余类数对阵列 和 的排列结构设计、 根据剩余类数对 γ 和 qψ, γ 的设计、 γ) 每个元素 rψ,
‘1’ 元素位置坐标 eψ, 阵列 和 计算 Hd 矩阵中 δ 或
如图 1 所示, 具体包括以下步骤 :第 1 步, 设计剩余类数对中的第一个元素 rθ,γ(rψ,γ), θ = 0, 1, ..., m-1, γ= 0, 1, ..., u-1。rθ, γ 以剩余类数对第一个元素的形式分布在 m×k 的 阵列中。在 阵列中 一共有 m×u 个 rθ, 其中共有 m 个不同的 rθ, rθ, 1, 2, ..., m-1}。同一行的 γ, γ 值, γ ∈ {0,rθ,γ 值是相同的, 或者说一共有 m 组, 每一组 u 个值是相同的, 相同的 rθ,γ 值放在同一行 中。本发明采用由 u 个生成元 g0, g1, ..., gu-1 经乘法群结构计算产生 m×u 个 rθ, γ 值。设 rθ, γ 的 m×u 个值用 表示, 以 u 个生成元 g0, g1, ..., gu-1 的 m 次幂来计算 rθ, γ 的表 达式定义为 : θ+1
rθ, -1](mod(m+1)) (6) γ = rψ, γ = [(gγ)
将 (6) 式计算出来的 m×u 个 rθ, γ 值按 θ 行索引 γ 列索引的方式排列得到如下 的 [rθ, γ]m×u :
在 [rθ,γ]m×u 中, 元素值的特点是 : 对大于 m 的值取 mod(m+1), 一共有 m 个不同元 素, 每个元素从序列 0, 1, ..., m-1 中取值, 每个元素值出现 u 次。
第 2 步, 设计剩余类数对中的第二个元素 qθ, γ。若剩余类数对中的 rθ, γ 值按上述 (7) 的方式计算和排列, 则该剩余类数对中的 m×u 个 qθ, γ 的值由下列表达式计算得到 :
(7) 式中取出一个 rθ, 就能由 (8) 式计算出一个 qθ, γ 值, γ 值。
第 3 步, 设计剩余类数对阵列 的存储结构 为了便于描述, 以 Hd 矩阵中存在两 种列重量为例, 最小列重量 vmin = 3, 最大列重量 vmax 可以是大于 3 不大于 m 的任意正整数, 即 3 < vmax ≤ m。设阵列 中每列有 vmin = 3 个剩余类数对的列数为 j 列 ( 或 Hd 矩阵中每 列有 vmin = 3 个 “1” 元素的列为 j×L 列 ), 阵列 中每列有 vmax 个剩余类数对的列数为 k-j
列 ( 或 Hd 矩阵中每列有 vmax 个 “1” 元素的列为 (k-j)×L 列 )。 的结构如下 :
式 (9) 的剩余类数对阵列的存储结构 具体描述如下 : 首先, 是计算机软件搜索 最优 的存储结构, 在 阵列中按列放置的所有剩余类数对在 中按行放置, 如 阵列中的 第一列 ( 包括剩余类数对和空集 Φ) 在 中为第一行, 并且是连续放置, 每个剩余类数对之 间没有空格或空集元素 Φ。其次, 式 (7) 中计算出的 rθ, γ 值与式 (9) 中剩余类数对的位置 关系是 : 在 (7) 中按列取值, 每次取一列 m 个元素, 在 (9) 的 阵列中按行顺序放置在剩余类 数对的第一个位置上。最后, 本发明在搜索得到 后, 也可将其转换为 (2) 式的剩余类数对 阵列 的定义结构形式, 其转化方式如下 : 取 的第一行的 vmin( 或 vmax) 个剩余类数对放到 阵列的第一列中, 每个剩余类数对在 阵列中各列的行索引由剩余类数对的第一个元素的 值确定, 在 阵列的各列中, 没有剩余类数对的位置上放置空集元素 Φ。
第 4 步, 根据阵列 可以确定每个子矩阵第一列的每个 ‘1’ 元素的行坐标, 具体 第一操作如下 : 取 第一行的 vmin( 或 vmax) 个剩余类数对, 利用 (3) 式计算第一个子矩阵 标。对每个子矩阵d列的每个 ‘1’ 元素的行坐标 ; 用同样的方法, 计算每个子矩阵第一列的每个 ‘1’ 元素的行坐 从第一列开始到第 L 列依次作循环下移 m 位操作, 就 能得到整个 H 矩阵。也可以直接利用 (4) 或 (5) 式计算 Hd 矩阵中每一列的每个 ‘1’ 元素 的行坐标。
第 5 步, 利用上述构成的 Hd 矩阵, 即可得到系统形式 H 矩阵 H = [Hd Hp], 其中 Hp 矩 阵具有确定的双对角线结构。
综上所述, 只用存储 A、 B、 L、 u、 vδ(δ = 0, 1, ..., k-1)、 gγ(γ = 0, 1, ..., u-1) d 这几个结构参数就能表示 H 矩阵, 存储这些结构参数需要的空间远少于 DVB-S2 标准中存 储一个编码表所需要的空间。
本发明第二部分 IRA-LDPC 码编码器的工作原理描述如下 : LDPC 码编码的目的 是由信息序列 计算出校验序列 从而得到码字序列 本发明提供的基于剩余类数对的 IRA-LDPC 码的 编码算法基本原理与许多文献中发表的 IRA-LDPC 码编码算法基本原理是相似的, 区别在 d 于 H 矩阵的结构设计不同, 导致了不同的编码器硬件电路的设计差别。根据 将奇 偶校验矩阵 H 和码字矢量 分解为信息位对应的部分和校验位对应的部分, 即:
给定二进制信息矢量由于 Hd 和 Hp 都是定义在二进制有限域GF(2) 上的矩阵, 在二进制运算规则下, 根据 (1) 和 (10) 式, 可得
则 IRA-LDPC 码编码算法的一般递归计算表达式如下 :
由于 (1) 式的 Hp 矩阵设计成了双对角线形式, 在求解 (11) 式时, 不需要对 Hp 矩 阵求逆, 而是根据 (12) 式, 先求得第一行对应的校验位 p0, 然后采用回代和递推的方式求得 p1, p2, ..., pB-1。从 (12) 的递归表达式可以看出, 第一, IRA-LDPC 码的编码算法是串行算 法; 第二, 主要的计算任务是完成求和运算 决定了实现d构造 Hd 矩阵的方法不同, 的的硬件电路的不同, 编码器的硬件实现复杂度也不同, 本发明采用剩余类数对构造 H 矩阵给出了到目前为止最简单的计算硬件电路结构。
本发明第二部分 IRA-LDPC 码编码器的构造方法描述如下。编码器的主要功能 是: 拥有 B = m×L 个寄存器组形成的阵列, 对 Hd 矩阵每一行 编码器能计 算 的值, 并存入到 B 个寄存器阵列中。在硬件执行过程中, 我们将 再完成递归求和 p0 = y0, 控 在 B 个寄d(12) 式分解成两个过程, 先完成累加求和p1 = p0+y1, ..., pB-1 = pB-2+yB-1。累加计算过程由输入信息序列 ψ = 0, 1, ..., vδ-1 ; 这 vδ 个 乘 法 存器阵列中的位置由行坐标制, 每输入一个信息位 dη, 就计算这个 dη 所对应的 H 矩阵第 η 列的 vδ 个二进制乘法 确定 ; 对于 Hd 矩阵的每一行而言, 每计算一个就累加一次, 直到所有信息位输入完后, 每一行所对应的 B 个寄存器阵 列中的每一个寄存器均完成了 u 个乘积项 sψ, 即 γ 的求和,
编码器硬件执行具体操作步骤如下 : 1) 初始化, 令 2) 依次读入信息位 dη(η = 0, 1, ..., A-1), 用表达式 (5) 计算 Hd 矩阵第 η 列 ( 其中 行坐标所对应的 vδ 个 的操作。当 dη = 1 时, 将B ), 作为 B = m×L 个寄存器阵列的指针, 由中 ‘1’元素所在行坐标, 所得到的行坐标的值分别记为 寄存器中均保存 dη 的值, 用来完成乘积项 个寄存器中以寻址的 vδ 个位置中的值取反 ; 当 dη = 0 时, 这 vδ 个位置中的值不变。当 dη(η = 0, 1, ..., A-1) 信息位输入完成后, B 个寄存器的每一个就完成了乘 积项的累加求和
操作。3) 计算校验位 p0 = y0, p1 = p0+y1, p2 = p1+y2, ..., pB-1 = pB-2+yB-1, 编码后的输出 本发明第二部分的基于可编程逻辑器件 ( 包括 CPLD 和 FPGA) 的 IRA-LDPC 码编码14码字为
102437857 A CN 102437865说明书10/15 页器硬件电路结构和工作过程描述如下。IRA-LDPC 码编码器的总体结构如图 2 所示, 包括如 下四种功能处理模块和四个端口 :
一个编码使能信号生成模块, 用 ECEN 表示 ;
校验位选择信号发生器模块由 m 个并行的校验位选择信号发生器子模块构成, 每 个子模块由 PCθ(θ = 0, 1, ..., m-1) 表示 ;
校验位计算与存储模块由 m 个并行的校验位计算与存储子模块构成, 每个子模块 由 PSθ(θ = 0, 1, ..., m-1) 表示 ;
一个编码数据输出模块, 用 DATA-OUT 表示 ;
主时钟信号输入端口 CLK, 产生两个分频时钟信号, 即 L 分频时钟信号输入端口 CLK1 和 m 分频时钟信号输入端口 CLK2 ;
一个 1 比特的信息位数据串行输入端口, 用 d-in 表示, 每个 CLK 周期输入一个信 息位 ;
一个 1 比特的 R/W 控制信号输入端口, 每个 CLK 周期产生一个 R/W 信号。有信息 序列输入时, 设置 R/W = 0 ; 无信息序列输入时, 设置 R/W = 1 ;
一个 1 比特的编码数据串行输出端口, 用 d-out 表示, 每个 CLK 周期输出一个编码 位。 在图 2 的编码器总体结构中, 各模块与端口之间的相互关系和工作过程描述如 下: 信息序列按顺序从 d-in 端口输入, 每个 CLK 周期输入一位信息位 dη, η = 0, 1, ..., A-1。编码使能信号生成模块 ECEN 事先将阵列 中每个数对 (rθ, δqθ, δ) 的第一个元素 rθ, 离线转换成 m×k 个二进制值, 存于尺寸为 m×k 的 ROM 中, 完成表达式 (2) 中所有 δ 值, rθ,δ 值的硬件实现。ECEN 将存于 ROM 中的 m×k 个二进制值作为其它功能模块的使能信 号使用, 并将这 m×k 个使能信号分成 k 个分组, 每个分组 m 位并行输出。当 R/W = 0 时, m 位使能信号并行输出, 为 m 个并行的校验位选择信号发生器子模块 PCθ(θ = 0, 1, ..., m-1) 和 m 个并行的校验位计算与存储子模块 PSθ(θ = 0, 1, ..., m-1) 提供使能控制信号 E。当 E = 1 时, PCθ 和 PSθ 工作 ; 当 E = 0 时, PCθ 和 PSθ 不工作。当输入信号为 dη 时,
如果 dη 对应于 Hd 矩阵第 δ 个子矩阵 坐标值 个过程中, PCθ 输出的第 ρ 列, 那么在编码使能控制信号 E 作用下, 中第 ρ 列的 vδ 个 ‘1’ 元素所在的行 的累加求和操作。在这m 个并行的 PCθ 同时计算 Hd 矩阵第 δ 个子矩阵( 其中 δ = 0, 1, ..., k-1, ρ = 0, 1, ..., L-1, 见 (4) 式 ), 以这些 表示不小于 x 的最小整数 ) 位地址选择信号, m 个并行的 位地址信号去索引在 m 个 PSθ 所行坐标值作为地址, 选通 m 个并行的 PSθ 中的 vδ 个寄存器进行 PSθ 在使能信号 E = 1、 R/W = 0 作用下, 用 vδ 个联合形成的 B = m×L 个寄存器阵列中的 vδ 个寄存器, 对这 vδ 个位置的值进行更新, 即完 成编码步骤 2) 中 的计算。同时信息位 dη 也被输入到编码数据输出模块 DATA-OUT, 该模块在下一个信息位 dη+1 输入时将 dη 从编码数据串行输出端 口 ch 输出, 每个 CLK 周期输出一个比特数据, 从 A 个比特信息位输入到 A 个比特信息位输 出, 一共需要 A+1 个 CLK 周期。与此同时, 在 A+1 个 CLK 周期内, m 个并行的 PSθ 也完成了的运算, 使 m 个并行的 PSθ 中 B = m×L 个寄存器的最终存 储内容是 出B个 在 A 个信息位输入完成后, 使 R/W = 1, m 个并行的 PSθ 依次输 计算值到 DATA-OUT。 DATA-OUT 完成编码步骤 3) 里校验位的累加p1 = p0+y1, p2 = p1+y2, ..., pB-1 = pB-2+yB-1, 并将计算出的校验位 p0, p1, ..., 计算 p0 = y0, pB-1 从编码数据串行输出端口 d-out 输出。在信息序列输入完成后的第 A+2 个 CLK 周期, 输出第一个校验位比特, 一共需要 B 个 CLK 周期完成校验位的输出。在输出端口, 首先完成 A 个比特信息位输出, 再执行 B 个比特校验位的输出, 从第一个信息位输入到最后一个校验 位输出, 一共需要 A+B+1 = N+1 个 CLK 周期。
编码使能信号生成模块 ECEN 的结构如图 3 所示, 包括一个模 k 自加器 ( 用具有自 加 1 功能的寄存器构成, 每个 CLK 周期自加 1, 加到 k 时, 做 mod k 运算返回到 0 值, 用 self-k 表示 ), 一个尺寸为 k×m 位的 ROM, 一个反相器, 一个 1 位的 R/W 信号输入端口, 一个分组 (m 比特 ) 的并行输出端口, 用于并行输出 m 个使能信号 E。 ROM 共有 k 个分组, 每个分组的数据 长度为 m 比特, ROM 由 k×m 位单元的存储阵列构成, 它的每一位存储的值可由 m×k 阵列 确定。规定如下 :中的数对 (rθ, 则由 0 元素取代 ; 如果是剩余类数对 δqθ, δ) 如果是空集, (rψ,γqψ,γ), 则由 1 元素取代。对得到的 m×k 位的 0-1 矩阵做转置, 再做镜像 ( 在 ROM 中 存储时, 要求高位在左边 ), 将得到的 k×m 位 0-1 矩阵中的元素依次输入 ROM 中, 即完成了 ROM 中存储内容的设计。由于 阵列中每一列有 vδ(δ = 0, 1, ..., k-1) 个剩余类数对, 因 此 k×m 的 ROM 中每一个分组有 vδ(δ = 0, 1, ..., k-1) 个 “1” 元素。self-k 的工作原理 是: 当 R/W = 1 时, 经反相器取反后, self-k 的使能端 en 输入为 0, 不工作 ; 当 R/W = 0 时, 经反相器取反后, self-k 的使能端 en 输入为 1, self-k 内寄存的值每 CLK1 周期增加 1, 加 到 k 时值变为 0。 self-k 的作用是产生控制 k×m 个 ROM 阵列的地址索引 adrs, 保证在 CLK1 周期之内 ( 也即 L 个 CLK 周期持续时间内 ) 并行输出同一组 m 个使能信号 E, 下一个 CLK1 周期到来时, 并行输出下一组 m 个使能信号 E。ECEN 并行输出的 m 个使能信号 E 用于控制 m 个 PCθ 和 m 个 PSθ 的工作状态。当 m 个使能信号的第 θ 位 E = 1 时, PCθ 和 PSθ 都工作 ; 当第 θ 位 E = 0 时, PCθ 和 PSθ 都不工作。在所有信息位串行输入的 A 个 CLK 周期内, 每 个 PCθ 和 PSθ 工作 u 次 ; 在当前 CLK1 周期内的每一个 CLK 周期, 均有 vδ(δ = 0, 1, ..., k-1) 个 PCθ 和 PSθ 并行工作 ; 当下一次 CLK1 周期来到时, self-k 自加 1, 指向 ROM 的下一 个分组, 输出新的 m 个使能信号 E, 又开始下一次 CLK1 周期的执行 ; ECEN 模块每 CLK1 个周 期, 输出一次 m 个使能信号 E。
校验位选择信号发生器模块, 由 m 个校验位选择信号发生器子模块 PCθ(θ = 0, 1, ..., m-1) 构成。每个 PCθ 的结构如图 4 所示, 包括 self-L、 sum、 adder-L 和 chos-L4 个 单元。每个 PCθ 有 5 个输入端口 : 一个 1 比特的使能信号 E 输入端口和一个 1 比特的 R/W 读写控制信号输入端口, 三个时钟信号输入端口, 即主时钟 CLK, L 分频时钟 CLK1 和 m 分频 时钟 CLK2。 位并行的校验位选择信号输出端口, 用 ch 表示。该模块的作用是计算 的计算与储存。一个 PCθ 中每一个单 出 qθ,γ 元素的值, 并由 qθ,γ 元素的值确定 [log2 L] 位的选择信号输出, 选通 PSθ 中 L 个 寄存器组中的某一个寄存器参与 元的结构和工作原理描述如下 :1、 self-L 中有一个位的寄存器, 该寄存器具有自加 1 功能和 modL 计算功 根的并行输 位寄存器设初值 位的并行输入端口。self-L 中能。self-L 有一个使能信号 E 输入端口和一个时钟输入端口 CLK1。有 出线连接到 adder-L 的一个取γ= 为 [1+θ+3](modL)( 即式 (8) 求解 qθ,γ 元素的第二个表达式增量部分的计算值, 1)。self-L 的工作模式描述如下, 如果 E = 0, self-L 不工作 ; 如果 E = 1, CLK1( 即 L 整数 倍主频 CLK) 边沿 ( 上升沿或下降沿 ) 到达时, self-L 的 时, self-L 的
位寄存器中的值自加 1( 相当于式 (8) 中第二个表达式的 γ 值递增 ), 当 CLK1 不工作在边沿 ( 即不为 L 整数倍 CLK) 位寄存器中的值保持不变。 位的寄存器, sum 有一个使能 E 输入端和一个时钟信号 CLK1 位的并行输入端口, 还有 位寄存器 位并行输出端。sum 中 根并行输出线连接到 adder-L 的另一个 2、 sum 是一个输入端, 有根并行输入线连接到 adder-L 的的初值设为 [u+(θ+3)(θ+2)/2](modL)( 即式 (8) 求解 qθ,γ 元素的第一个表达式的计算 值 )。当使能信号 E = 0 时, sum 不工作 ; 当 E = 1 时, CLK1 工作在边沿时, sum 将寄存器中 的值输出到 adder-L, 并从 adder-L 的输出端接收新的值 ; 当 CLK1 不工作在边沿时, sum 寄 存器中的值保持不变。
3、 adder-L 加法器是无进位的、 具有 modL 运算功能的、 两组位输入的二进制加法器, 一个使能控制 E 输入端和一个时钟信号 CLK1 输入端。adder-L 的工作原理 是: 当 E = 0 时, adder-L 不工作 ; 当 E = 1, 且 CLK1 工作在边沿时, adder-L 将 self-L 输 入的 位与 sum 输入的 位对应相加, 得到的 位求和结果输出给 sum 和 chos-L。当 CLK1 不工作在边沿时, adder-L 的输出值保持不变。adder-L 的目的是将从 self-L 和 sum 传入到两个输入端口的
位值对应求和, 将计算结果 qθ, γ 值输出到 sum 位的寄存器, 具有自加 1 功能和 modL 计算功能, 位并行输入端口和 位并行输中保存, 以备下一个 CLK1 周期到达时, 求和运算使用, 同时将计算结果传递到 chos-L 中。 4、 chos-L 单元包含一个 modL 主要完成自加到 L 回 0 的任务。chos-L 有 端, 即主频 CLK、 L 分频 CLK1 和 m 分频 CLK2。 chos-L 的 (θ+2)/2](modL), 以保证第一个出端口 ch ; 两个输入控制信号, 即使能控制信号 E 和读写控制信号 R/W ; 三个时钟信号输入 位寄存器需设初值 [u+(θ+3) 位选通地址不丢失。 chos-L 的工作原理是 : 当有信息序列输入时, R/W = 0, 在 E = 1 时, CLK 和 CLK1 同时工作, 当 CLK1 边沿到达时, 位寄存器的初值变为 adder-L 的输出结果, 当 CLK1 不为边沿时, 每来一个 CLK, chos-L 的 位寄存器自加 1, 并输出 位的地址信号 ch, 当 位寄存器加到 L 时, 自 位寄存器的初值 动回 0, 准备下一次接收 adder-L 的传来的初值, 并累加到 L。当 R/W = 0, E = 0 时, chos-L 不工作。当无信息序列输入时, R/W = 1, 这时不管 E 的值是什么, 设为 0, 每来一个 CLK2, chos-L 的 CLK2 周期时输出 位寄存器自加 1, 从 0 一直加到 L-1, 同时在每个 位的位选择地址信号 ch, 使位地址信号 ch。chos-L 的目的是 : 有信息位输入时 (R/W = 0), 为 运算, 这时如果 CLK1 边沿到达, chos-L17每一个并行子模块 PSθ 中 L 个 1 位长的寄存器阵列提供 m 个 PSθ 子模块完成 (12) 式中102437857 A CN 102437865说明书13/15 页从 adder-L 输出端接收计算好的 qθ, 如果 CLK1 不工作在边沿处, 则对每一个 CLK 周期, γ 值, 位寄存器所做的 L 次加 1 操作, 等效于完成将子矩阵 寄存器从 0 开始自加 1, 直到 L-1, 提供一个 中的后面 L-1 列的每一列进 位 行循环下移 m 次操作 ; 无信息位输入时 (R/W = 1), 每一个 CLK2 周期, chos-L 的位的地址信号 ch, 依次寻址 PSθ 中 L 个值。 的 1 位寄存器中的某一个, 依次输出
校验位计算与储存模块由 m 个校验位计算与储存子模块 PSθ(θ = 0, 1, ..., m-1) 构成, 每个子模块 PSθ 的结构如图 5 所示。一个 PSθ 包括一个有 L 个 1 位寄存器的阵列 FPS(θ) 和一个两输入异或门。 有 5 种类型的输入端口 : 一个 1 位的使能信号 E 输入端口、 一 个 1 位的 R/W 控制信号输入端口、 一个时钟信号 CLK 输入端口、 一个 位的校验位选择 信号输入端口 ch 和一个 1 位的信息位数据串行输入端口 d-in, 总的输入端口为 个。 一个 1 位的校验位数据串行输出端口。 m 个 PSθ 的作用是计算并存储编码递归算法 (12) 式中的 B 个 的中间值和最后计算结果。L 个 1 位寄存器阵列中存储的内 容表示如下, PSθ 中 L 个 1 位寄存器的存储内容依次为 y0, ym, y2m, ..., y(L-1)m,……, PSθ 中 L 个 1 位寄存器的存储内容依次为 yθ, yθ+m, yθ+2m, ..., yθ+(L-1)m,……, PSm-1 中 L 个 1 位寄 存器的存储内容依次为 ym-1, y2m-1, y3m-1, ..., ymL-1。m 个 PSθ 的基本工作原理是 : 当 R/W = 0 时, PSθ 的 L 个 1 位寄存器执行 yθ ~ yθ+(L-1)m 的计算与存储工作 ; 当 R/W = 1 时, m 个 PSθ 依次将 B = m×L 个 1 位寄存器中存储的最后计算结果 值输出到数据输 出模块 DATA-OUT。具体工作过程是 : 当 R/W = 0, E = 0 时, m 个 PSθ 不工作 ; 当 E = 1 时, m 个 PSθ 工作, 每来一个 CLK 时钟, 在 1 位寄存器中有 vδ 个 1 位寄存器进行 在图 4 中 chos-L 输出的 位选择信号 ch 到来时, m 个 PSθ 的 B = m×L 个 的求和运算, 针对一个 PSθ 而言,位选择信号 ch 的控制下, 图 5 中 PSθ 的 1 位寄存器与输入的信息位 dη 通过异或门进行异或操作, 将计算结果仍然存入 PSθ 中 L 个 1 位寄存器的第 ρ 个位置上, 相当于完成编码步骤 2) 的取反操作, 当所有信息位 dη(η = 0, 1, ..., A-1) 输 入完后, m 个 PSθ 子模块就完成了 = 1 时, 无论使能信号 E 是何值, chos-L 中的 次将 B 个 模块。 编码数据输出模块 DATA-OUT 的结构如图 6 所示, 包括具有一个 m+1 个输入端的 多路数据选择器 MUL、 一个模 m+1 的自加器 self-(m+1)( 结构为寄存器, 具有自加 1 功能和 mod(m+1) 计算功能, mod(m+1) 计算功能是为了完成当寄存器自加 1 到 m+1 时, 能返回到初 始值 1)、 一个异或门和一个 D 触发器。有 m+3 个输入端口 : 一个 1 比特的 R/W 控制信号输入 端口、 一个 CLK 信号输入端口、 一个 1 比特的信息位数据输入端口 d-in 和 m 个来自并行 PSθ 的数据输入端口。 一个 1 比特的编码数据串行输出端口 d-out。 该模块的作用是完成编码步 骤 3) 中的校验位迭代累加计算 p0 = y0, p1 = p0+y1, p2 = p1+y2, ..., pB-1 = pB-2+yB-1, 并输出编 码码字。 其工作过程如下 : 当 R/W = 0 时, self-(m+1) 的输出始终为 ‘0’ , 多路数据选择器选 择信息位数据输入端口输入的数据, 并从编码数据串行输出端口输出 ; 当 A 个 CLK 周期后,
18的计算与存储工作 ; 当 R/W 位寄存器依次从 0 加到 L-1, 提供一个位的地址信号, 依次并行寻址 m 个 PSθ 中 L 个 1 位寄存器阵列中的一个寄存器, 依 的计算结果按 m 个并行提供给图 6 的 DATA-OUT102437857 A CN 102437865说明书14/15 页信息序列输入完毕, 从第 A+1 个 CLK 周期开始, 使 R/W = 1。 在 R/W = 1 的控制下, self-(m+1) 的工作原理是 : 从 1 依次自增到 m, 当加到 m+1 时又从 1 开始循环自加 1。self-(m+1) 的作 用是 : 每一个 CLK 周期自增一次, 控制多路数据选择器依次选择来自 PS0, PS1,…, PSm-1 数 据 y0, y1, ..., ym-1 到多路数据选择器的输出端。在 R/W = 1 时, MUL、 self-(m+1)、 D 触发 器和异或门的联合工作过程是 : 当第 A+1 个 CLK 周期到来时, self-(m+1) 单元自加 1, 控制 MUL 输出 y0, DATA-OUT 输出最后一个信息位 dA-1 ; 当第 A+2 个 CLK 周期到来时, self-(m+1) 自加 1, 控制 MUL 输出 y1, 同时 D 触发器将 p0 = y0 反馈到异或门输入端, 完成累加计算 p1 = p0+y1, 并存入 D 寄存器, DATA-OUT 输出 p0 = y0 ; 当第 A+3 个 CLK 周期到来时, self-(m+1) 自 加 1, 控制 MUL 输出 y2, 这时异或门完成的累加计算 p2 = p1+y2, 并存入 D 寄存器, DATA-OUT 输出 p1 = p0+y1。……; 当第 m 个 CLK 周期后, 第 A+m+1 个 CLK 周期到来时, 图 5 的 m 个 PSθ 又将下一组 ym, ym+1, ..., y2m-1 送到图 6 的多路数据选择器的输入端,……, 一直这样操作下 去, 直到第 A+B+1-m 个 CLK 周期到来, 图 5 的 m 个 PSθ 将最后一组 y(L-1)m, y1+(L-1)m, ..., ymL-1 送到图 6 的多路数据选择器的输入端, 在第 A+B+1 个 CLK 周期时, 输出最后一个校验位 pB-1 = pB-2+yB-1。
应用举例
假设要构造一个码长为 288, 码率为 1/2 的 IRA-LDPC 码编码器, 这个码的结构参数 为: A = 144 ; B = 144 ; L=8; 行重量 u = 4 ; 列重量 v0 ~ v8 为 5, v9 ~ v17 为 3 ; 优化搜索 得到 4 个生成元为 g0 = 2, g1 = 6, g2 = 7, g3 = 11。计算可得 m = B/L = 18, k = A/L = 18。
步骤 1 : 构造剩余类数对阵列 利用用 7) 式和 8) 式计算出剩余类数对第一个参 数 rθ, 将剩余类数对按照 (2) 排列, 构成如下阵列 : 。 γ 和第二个参数 qθ, γ,
也可以由计算机搜索得到, 搜索程序中 的存储结构为
步骤 2 : 构造编码使能控制模块 ROM 中的数据。剩余类数对阵列存储结构 的第一 其中 r 元素的值为 1, 3, 7, 12, 15, 因此在编码使能控 其中 r 元素的值为 0, 2, 8, 地址为 17 的 ROM 中所存储的最行为 以此类推,
制模块地址为 0 的 ROM 中所存储的 m = 18 个数据为 001001000010001010( 左边是高位 )。 后一组数据为 000000000100000101。由此, 可以构造出 ROM 中的 18 组数据。 步骤 3 : 设置各模块中的初值, 主要是确定各子模块中 L、 m 和 k 的值。编码使能控 制模块 ECEN 的 self-k 需要设初值 0(self-k 自加到 k = 18 时回到 0), ROM 中每个分组的 数据长度设为 m = 18 位, 共有 k = 18 个分组, 并行输出端口设为一个分组 (m = 18 位 ) 长 度。校验位选择信号发生器模块要在 self-L 和 chos-L 中设置递增初值 L = 8, chos-L 中 寄存器的长度设为 位。每个校验位计算与储存单元有 L = 8 个 1 位的 比特。 编码数据输出单元中的 寄存器阵列, 校验位选择信号输入端口 ch 长度设为多路数据选择器有 m+1 = 19 个输入端、 self-(m+1) 的初值设为 1(self-(m+1) 自加到 m+1 = 19 时回到 1)。
步骤 4 : 设置 m 个 PCθ(θ = 0, 1, ..., m-1) 的初始值。在 m 个 PCθ(θ = 0, 1, ..., m-1) 中, chos-L 和 sum 中 (modL), self-L 中
位寄存器的初值分别为 [4+(θ+3)(θ+2)/2] 位寄存器的初值分别为 [1+θ+3](modL)。本发明适用于任意码长 N = A+B 和码率 R = A/N, 只要 k×m 只读 ROM、 B = m×L 个 1 位寄存器设计成实际要求的最大尺寸即可。 以上举例仅用于说明本发明, 而非对本发明的 限制, 有关技术领域的人员, 在不脱离本发明的精神和范围的情况下, 还可以做各种变化和 d 变型, 因此, 所有基于剩余类数对的 H 矩阵构造方法和编码器结构均属于本发明的范畴, 本发明的专利保护范围应由权利要求限定。