基于FPGA的规则(3,6)LDPC码译码器
发布时间:2008/5/28 0:00:00 访问次数:507
摘要:基于软判决译码规则,采用完全并行的解码结构,使用verilog硬件描述语言,在xilinx公司的fpga(virtex-2 xcv1000)上实现了码率为1/2、帧长为20bit的规则(3,6)ldpc码的译码器,最大传输速率可达20mbps。对ldpc码的实际应用具有重要的推动作用。
关键词:ldpc码 变量节点 校验检点 因子图 译码
在通信系统中纠错码被用来提高信道传输的可靠性和功率利用率,低密度奇偶校验码(ldpc码)是目前最逼近香农限的一类纠错码。1962年,gallager首次提出了ldpc码的古典模型,即规则(regular)的ldpc码:(n,j,k),校验矩阵h具有恒定的列重量和行重量。ldpc码由于比turbo码列接近香农限的误码率性能和完全并行的迭代译码算法使其比turbo码在部分场合具有更广泛的应用前景,从而使ldpc码成为当前纠错编码的一个研究热点。基于良好的译码性能,ldpc码被认为是通信系统的下一代纠错码。
1 规则ldpc码
1.1 因子图描述
因子图有两类顶点,分别为变量节点(variable nodes,用空的圆点表示)和校验节点(check nodes,用方框表示)。tanner图就是这两类顶点之间的二部图,即每条边的一端与变量节点相连,另一端与校验节点相连。变量节点代表实际的变量,校验节点代表这些变量节点之间的约束。对于(j,k)-ldpc码的每个变量(bit)都受j个校验(check)的结束,因此每个变量节点应该连接j个校验节点。每个校验方程有k个变量,因此每个校验节点应与k个变量节点相连。由于ldpc是一种线性码,使得它的因子图一边为变量节点,一边为校验节点,故ldpc码的因子图表示有专用的定义:二部图(bipartite graphs)。
图1表示了校验矩阵为h的规则(3,6)ldpc的因子图,它是由10个变量定点和5个校验定点组成的二部图,边刚好对应于矩阵中1的位置,这种因子图是ldpc迭代译码算法的基础。
1.2 ldpc码的译码算法
ldpc码的译码采用信度传播(belief-propagation或bp)算法,它与因子图相对应,如图1所示,利用bp算法获得好的译码性能,ldpc码的因子图中环的长度必须尽可能地长,长度为4的环会降低bp算法的性能,h矩阵设计时应避免出现。如果直接使用bp算法,由于在迭代过程中存在大量的乘运算,将使硬件的复杂度大幅度上升,本论文采用改进的log-bp算法,把大量的乘运算转换成加运算,从而降低硬件复杂主生产成本。
首先定义可能用到的几个变量及符号的意义:h表示一个m×n的ldpc校验矩阵,hi,j表示矩阵h中第i行第j列的表示。定义校验节点m上的第n个变量节点为n(m)={n:hm,n=1},并联在变量节点n上的第m个数验节点为m(n)={m:hmn=1}。定义校验节点m上关联的除了第n个变量节点以外的所有变量节点为n(m),变量节点n上关联的除了第m个校验节点外的所有校验节点为m(n)。
log-bp算法的译码过程:
译码过程:
初始化:对于接收到的每个变量节点n计算初始信道信息,并对每个点计算初始信息
迭代译码:
(1)校验点计算
其中α=∑n' ∈n(m)αm,n'
(2)变量节点计算
对于每个变量节点n,在完成变量节点计算后,对log似然率λn进行更新:
(3)判决条件
(a)如果λn>0,则x'n=0;返之如果λn≤0,则x'n=1;
(b)如果h·x'=0,则迭代结束,否则跳到第2步迭代译码部分,直至校验成功或者达到最大迭代次数。
上面算法中的αm,n和βm,n都被换为外部信息
摘要:基于软判决译码规则,采用完全并行的解码结构,使用verilog硬件描述语言,在xilinx公司的fpga(virtex-2 xcv1000)上实现了码率为1/2、帧长为20bit的规则(3,6)ldpc码的译码器,最大传输速率可达20mbps。对ldpc码的实际应用具有重要的推动作用。
关键词:ldpc码 变量节点 校验检点 因子图 译码
在通信系统中纠错码被用来提高信道传输的可靠性和功率利用率,低密度奇偶校验码(ldpc码)是目前最逼近香农限的一类纠错码。1962年,gallager首次提出了ldpc码的古典模型,即规则(regular)的ldpc码:(n,j,k),校验矩阵h具有恒定的列重量和行重量。ldpc码由于比turbo码列接近香农限的误码率性能和完全并行的迭代译码算法使其比turbo码在部分场合具有更广泛的应用前景,从而使ldpc码成为当前纠错编码的一个研究热点。基于良好的译码性能,ldpc码被认为是通信系统的下一代纠错码。
1 规则ldpc码
1.1 因子图描述
因子图有两类顶点,分别为变量节点(variable nodes,用空的圆点表示)和校验节点(check nodes,用方框表示)。tanner图就是这两类顶点之间的二部图,即每条边的一端与变量节点相连,另一端与校验节点相连。变量节点代表实际的变量,校验节点代表这些变量节点之间的约束。对于(j,k)-ldpc码的每个变量(bit)都受j个校验(check)的结束,因此每个变量节点应该连接j个校验节点。每个校验方程有k个变量,因此每个校验节点应与k个变量节点相连。由于ldpc是一种线性码,使得它的因子图一边为变量节点,一边为校验节点,故ldpc码的因子图表示有专用的定义:二部图(bipartite graphs)。
图1表示了校验矩阵为h的规则(3,6)ldpc的因子图,它是由10个变量定点和5个校验定点组成的二部图,边刚好对应于矩阵中1的位置,这种因子图是ldpc迭代译码算法的基础。
1.2 ldpc码的译码算法
ldpc码的译码采用信度传播(belief-propagation或bp)算法,它与因子图相对应,如图1所示,利用bp算法获得好的译码性能,ldpc码的因子图中环的长度必须尽可能地长,长度为4的环会降低bp算法的性能,h矩阵设计时应避免出现。如果直接使用bp算法,由于在迭代过程中存在大量的乘运算,将使硬件的复杂度大幅度上升,本论文采用改进的log-bp算法,把大量的乘运算转换成加运算,从而降低硬件复杂主生产成本。
首先定义可能用到的几个变量及符号的意义:h表示一个m×n的ldpc校验矩阵,hi,j表示矩阵h中第i行第j列的表示。定义校验节点m上的第n个变量节点为n(m)={n:hm,n=1},并联在变量节点n上的第m个数验节点为m(n)={m:hmn=1}。定义校验节点m上关联的除了第n个变量节点以外的所有变量节点为n(m),变量节点n上关联的除了第m个校验节点外的所有校验节点为m(n)。
log-bp算法的译码过程:
译码过程:
初始化:对于接收到的每个变量节点n计算初始信道信息,并对每个点计算初始信息
迭代译码:
(1)校验点计算
其中α=∑n' ∈n(m)αm,n'
(2)变量节点计算
对于每个变量节点n,在完成变量节点计算后,对log似然率λn进行更新:
(3)判决条件
(a)如果λn>0,则x'n=0;返之如果λn≤0,则x'n=1;
(b)如果h·x'=0,则迭代结束,否则跳到第2步迭代译码部分,直至校验成功或者达到最大迭代次数。
上面算法中的αm,n和βm,n都被换为外部信息