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,2?Hmb,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,1??H1,kbH2,kbH1,kb?1H2,kb?1?Hmb,kb?1???Hmb,kbH1,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表示的矩阵具有如下结构:

?00?10??01??????0???0????????????00?010??

【注】

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

二、 LDPC码编码器

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

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

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

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

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映射