好文档 - 专业文书写作范文服务资料分享网站

LDPC码程序设计

天下 分享 时间: 加入收藏 我要投稿 点赞

LDPC码编/译码程序设计

要求:

用Matlab编程实现(2016,1008)LDPC码的编码器和译码器,并搭建仿真系统统计误

码性能。

设计内容:

一、LDPC码参数 二、编码器 三、噪声信道 四、译码器

a) 和积算法译码器 b) 最小和算法译码器 c) 修正最小和算法译码器 五、仿真分析

一、 LDPC码参数

本设计采用准循环LDPC码码型(Quasi Cyclic LDPC,QC-LDPC),此种码型性能良好,并有利于硬件实现,现已被各种工业标准所采纳。例如,Wimax标准,DVB-S2标准。具体矩阵请见:Matrix(2016,1008)Block56.mat。具有如下所示的结构:

本设计采用系统码,码长为2016比特,1/2码率,信息序列长度为1008比特。其H矩阵表示如下:

?H1,1??H2,1H?????Hmb,1H1,2H2,2Hmb,2H1,nb??H2,nb?? ?Hmb,nb??其中Hi,j 是大小为z×z的循环移位矩阵,行重为1,它的值表示该矩阵的循环移位偏移量。例如:Hi,j=n,则表示此矩阵第1行的第n列为1,其余列为0,其余各行均是上

一行的循环移位;如果Hi,j?0,则表明该矩阵是一个全零矩阵。例如Hi,j=4,z=7,则对应的矩阵结构为:

?0??0?0?Hij??0?1??0?0?

001000??000100?000010??000001? 000000??100000?010000??本设计给出的QC-LDPC码,z取56。

由于本设计采用系统码,H矩阵被分为两个部分??Hp|Hs??:

?H1,1??H2,1H?????Hmb,1H1,kbH2,kbHmb,kbH1,kb?1H2,kb?1Hmb,kb?1H1,nb??H2,nb?? ?Hmb,nb??其中Hp对应校验比特部分,大小为mbz?mbz;Hs对应信息比特部分,大小为

mbz?kbz,其中kb?(nb?mb)z。Hp具有如下规则结构:

?1?1??0?Hp????0??0?0??00a?10?000??1100???????

?100??0110?00?011??00其中Hp右上角a表示的矩阵具有如下结构:

?0?1??0????00010010?????0?0??

【注】

1. 上文Hp中的子矩阵‘a’由文档直接给出,不利用循环移位方法计算; 2. 本次作业中的LDPC为系统码,其中校验位在前,信息为在后。

二、 LDPC码编码器

LDPC码属于线性分组码,可以应用线性分组码传统的编码方式进行编码,即利用生成矩阵进行编码。但LDPC码通常用其稀疏校验矩阵(H矩阵)进行定义,把校验矩阵转化成生成矩阵运算量极大。由于LDPC码码长一般较长,校验矩阵较大,就更增加了运算负担。并且转化的生成矩阵并不是稀疏的,这就给硬件实现带来了困难。实际中一般采用校验矩阵直接进行编码,利用公式VH?0(其中,V为编码生成的码字),直接解出码字V。这里在不影响性能的前提下,一般需要特殊结构的校验矩阵,以简化解方程组运算。具体算法如下:

由于采用的是系统码,利用输入信息比特s???s1,s2,T,skbz??,得到校验比特

p???p1,p2,,pmbz??即可完成编码。编码分为如下两个步骤进行:

,xmbz??:

步骤一:利用输入信息矢量s,计算中间结果x???x1,x2,x?sHsT

步骤二:利用x计算校验比特p,采用如下公式:

?xi,i?1?pi??xi?p(mb?1)z?i?1,1?i?z,其中?表示GF(2)中的加法。

?,i?z?xi?pi?z编码时首先得到第一个校验比特p1?x1,然后依次得到pz?1?xz?1?p1,

p2z?1?x2z?1?pz?1,……,p(mb?1)z?1?x(mb?1)z?1?p(mb?2)z?1,p2?x2?p(mb?1)z?1,……,pmbz?xmbz?p(mb?1)z。

三、 噪声信道

本设计需要在AWGN信道下进行误码率性能仿真,调制方式采用BPSK调制(0映射

成1,1映射成-1),可能用到的Matlab函数有:wgn或者awgn。

四、 LDPC码译码器

本设计要求编程实现三种LDPC码译码器,一种为在系统仿真中较为常用的和积算法译码器,另一种为利于硬件实现的最小和算法以及其修正算法译码器。具体算法流程如下:

a) 和积算法程序流程

为了方便说明,定义LDPC码长为N,校验方程数目为M,则该LDPC码的二分图包含了N个变量节点,M个校验节点以及条边线。在该二分图中,和积算法(sum-product algorithm)的译码过程被分为以下三个主要步骤,如图1所示: 1. 初始化:

a) 每个比特从信道中接收到的信道信息作为初始置信度,赋予相应的变量节点,它们

的置信度uj?i?u0?i,其中u0?i表示第i个比特从信道接收到的置信度中,yi为信道输入译码器的软信息,SNR?4yi,其SNREs为符号能量与噪声的比值(注意:N0)。

这里单位不是dB,而是单纯的比值,即102. 迭代:

(SNR)dB10a) 每个变量节点将自己的置信度传递给具有校验关系的校验节点。第i个变量节点传

递给第j个校验节点的置信度vi?j?u0?i?点的维度。

b) 校验节点根据变量节点传递来的置信度,为每一个变量节点计算更新置信度。第j

个校验节点为第

ck?1,k?j?di?1uk?i,其中di表示第i个变量节

i个变量节点计算的更新置信度

uj?i3. 判决:

?dj?1?v?1?2tanh??tanh?k?j?k?1,k?i?2???c,其中dj表示第j个校验节点的维度。 ?????a) 变量节点根据校验节点传递来的更新置信度,更新本地置信度并进行硬判决:

??1if?Vi???0if???uk?0didik?i?0;

?uk?0k?i?0Tb) 如果所有的校验关系得到满足,即VH?0,其中V??V1,V2,T,Vn?,则译码结

束;如果VH?0,则返回迭代的步骤a继续迭代,直至达到迭代次数的上限。

u0?1v1?1v1?4v2?2v2?5v3?3v3?6v4?1v4?51u0?2变量节点接收信道信息u0?3u0?4u0?5u0?6u0?7u0?8u0?9变量节点传递置信度给校验节点v5?2v5?6v6?3v6?4v7?1v7?6v8?2v8?4v9?3v9?5vi?u0?ivi?j?u0?i?k?1,k?j?di?1校验节点计算置信度传递给变量节点23456uk?i

uj?i?dj?1?vk?j?2tanh??tanh??k?1,k?i?2??1c654321b) 最小和算法程序流程

最小和算法(Min-Sum)是和积算法的一种简化算法。尽管和积算法的译码过程已经相当简洁,但其中积运算部分需要进行的反双曲正切连乘等非常复杂的运算,在硬件实现中通常只能利用查表等相对繁琐的操作来完成。为了简化这一过程,Marc. P. C. Fossorier等人提出了最小和算法及其修正算法。

最小和算法的流程与和积算法完全一致,唯一的区别在于将和积算法的积运算简化为求取最小值的运算,即每次校验节点在计算变量节点更新置信度时,采取的计算步骤由公式

123456789123456789u1?1u1?4u1?7u2?2u2?5u2?8u3?3u3?6u3?9u4?1u4?6u4?7u5?2u5?4u5?9u6?3u6?5u6?7???????

图1 和积算法译码流程

uj?i?dj?1?v?1?2tanh??tanh?k?j?k?1,k?i?2?c?dj?????简化为???u?sgnvMin(v)?????j?ik?j?k?{1,2dc}\\ik?j?。??j????k?1,k?i??c具体算法流程如下:

LDPC码程序设计

LDPC码编/译码程序设计要求:用Matlab编程实现(2016,1008)LDPC码的编码器和译码器,并搭建仿真系统统计误码性能。设计内容:一、LDPC码参数二、编码器三、噪声信道四、译码器a)和积算法译码器b)最小和算法译码器c)修正最小和算法译码器五、仿真分
推荐度:
点击下载文档文档为doc格式
0qvw040mr73j4le87moy0088t3x4ji00jfg
领取福利

微信扫码领取福利

微信扫码分享