Monopol i 10003063

Embed Size (px)

DESCRIPTION

monografia

Citation preview

  • UNIVERSIDADE FEDERAL DO RIO DE JANEIRO

    ESCOLA POLITCNICA

    DEPARTAMENTO DE ELETRNICA E DE COMPUTAO

    Estudo de cdigos LDPC (Low-Density Parity Check):Matrizes Regulares e Irregulares

    Autor: ____________________________________Fernando Jorge Figueiredo Nazareth

    Orientador: ____________________________________ Prof. Gelson Vieira Mendona, Ph.D.

    Examinador: ____________________________________Prof. Mauros Campello Queiroz, M.Sc.

    Examinador: ____________________________________Prof. Jos Gabriel Rodriguez Carneiro Gomes, Ph.D.

    DEL

    Novembro de 2010

    i

  • Sumrio

    Captulo 1 - Introduo .................................................................... 1 Captulo 2 - Cdigos Corretores de Erros ..................................... 5

    2.1 - Cdigos de blocos e convolucionais ........................................................................... 6 2.1.1 - Conceitos Bsicos ................................................................................................... 7 2.1.2 - Distncia de Hamming .......................................................................................... 10

    Tabela 2.1 - distncia entre as palavras-cdigo. ................................................. 11 2.2 - Cdigos de Blocos Lineares ..................................................................................... 12 2.3 - Grficos de Tanner .................................................................................................. 13 2.4 - Decodificao pela Sndrome ................................................................................... 15

    Captulo 3 - Cdigo Low-density parity-check (LDPC) ............. 18 3.1 - Cdigos regulares e irregulares ............................................................................... 18 3.2 - Conceito de Giro ...................................................................................................... 23 3.2.1 - Identificao de ciclos e determinao do giro de um cdigo LDPC .................. 23

    Captulo 4 Construo de cdigos LDPC .................................. 27 Captulo 5 Codificao e Decodificao de LDPC ................... 39

    5.1 - Codificao ............................................................................................................... 39 5.2 - Decodificao Hard e Soft decision ..................................................................... 40

    Captulo 6 - Simulaes .................................................................. 47 Captulo 7 - Concluses .................................................................. 52 Referncias Bibliogrficas ............................................................. 53 Anexo Cdigos em MatLab utilizados nas simulaes ............ 55

    ii

  • Captulo 1 - Introduo

    A Teoria da informao trata dos aspectos quantitativos de armazenamento e

    transmisso das mensagens [1], [2]. Tem como um de seus objetivos principais garantir a

    integridade dos dados enviados atravs de algum tipo de canal. Na manipulao das

    mensagens, dois obstculos so encontrados:

    a) falta de capacidade no armazenamento ou transmisso das mensagens enviadas;

    b) rudo na transmisso, ou seja, introduo aleatria de erros nas mensagens

    enviadas.

    Ao contrrio das teorias matemticas, que surgiram nas universidades e geralmente

    aps um longo perodo de tempo, migraram para as aplicaes prticas em tecnologia e

    indstrias, a teoria de cdigos corretores de erros surgiu nos laboratrios de empresas de

    telefonia e posteriormente se transformou em uma teoria matemtica completa com

    aplicaes em vrias reas como, por exemplo, geometria algbrica.

    Um cdigo corretor de erros visa recuperar informaes que no processo de emisso

    tenham sofrido algum tipo de rudo. Pode-se afirmar que hoje praticamente todo sistema de

    envio de informaes possui algum tipo de cdigo corretor de erros. Como exemplos

    tpicos, a telefonia digital, a transmisso de dados via satlite, a comunicao interna em

    computadores, armazenamento tico de dados e armazenamento de dados em fitas ou

    disquetes magnticos.

    Um sistema de envio de mensagem pode ser esquematizado da forma especificada

    na figura 1.1:

  • Figura 1.1: Esquema de transmisso

    O canal pode ser, por exemplo, circuito integrado digital, disco de armazenamento,

    cabo, canal de microondas, canal de radiofreqncia, etc.

    Com o aumento da confiabilidade nas comunicaes digitais e a emergncia do

    computador digital como ferramenta essencial na sociedade tecnolgica, os cdigos

    corretores de erros vm conquistando uma posio proeminente. Para ilustrar a praticidade

    e importncia do uso de cdigos corretor de erros, tem:

    a) uso do bit de paridade como um mecanismo detector de erro - um dos esquemas

    mais simples e conhecidos na comunicao computacional;

    b) armazenamento em discos est sendo muito utilizado devido ao aumento da

    densidade. Quanto maior a densidade, a probabilidade de ocorrncia de erros tambm

    aumenta;

    c) transmisso de informao pelas naves espaciais:

    - em 1972 a espaonave Mariner transmitiu figuras de Marte para a Terra

    com 64 tonalidades de cinza. Atividade solar e outras condies atmosfricas

    podem introduzir erros em sinais fracos vindos do espao. O cdigo

    utilizado foi o de Reed-Muller [2],[17];

    - em 1979 a espaonave Voyager comeou a enviar imagens com 4096

    tonalidades de cores. O cdigo utilizado foi o de Golay [2],[18];

    d) udio digital o aumento da popularidade do udio digital deve-se ao

    desenvolvimento dos cdigos corretores de erros que facilita o processo de digitalizao.

    2

  • Ao inicializar a leitura do CD, o sistema corrige os erros produzidos por marcas de dedos,

    arranhes e outras imperfeies, para logo em seguida transformar em sinais sonoros. O

    cdigo utilizado o de Reed-Solomon. Este, criado em 1960 por Irving Reed e Gustave

    Solomon [3], um cdigo no binrio cclico - cada deslocamento cclico das palavras-

    cdigo tambm uma palavra-cdigo - e pode ser construdo de forma a corrigir erros

    mltiplos, devido a sua boa propriedade de distncia mnima e existncia de algoritmos

    eficientes de decodificao (os cdigos so determinados por estruturas algbricas, como

    por exemplo, polinmios). No entanto, apesar da possibilidade de corrigir um elevado

    nmero de erros dentro de uma mesma palavra, no recomendado para transmisso de

    uma grande quantidade de dados, limitado a palavra-cdigo de tamanho 1+ qn - sendo

    b o nmero de bits de uma palavra-cdigo e bq 2= palavras-cdigo possveis. Para

    cdigos mais longos, as propriedades de distncia mnima e, consequentemente, a

    possibilidade de correo de mltiplos erros diminui.

    Motivado pela importncia dos cdigos corretores de erros, conforme mencionado

    acima, este trabalho visa estudar o cdigo LDPC (low-density parity-check) [4], pois se

    trata de um cdigo amplamente utilizado hoje em dia devido a sua performance prxima a

    capacidade do canal para diversos tipos de canais e um algoritmo de decodificao de baixa

    complexidade. Atualmente, o sistema DVB-S2 (Digital Video Broadcasting - Satellite

    verso 2) para transmisso de vdeo por satlite j utiliza este cdigo.

    O objetivo do trabalho ser realizar comparaes entre algoritmos variados de

    codificao LDPC e observar as diferentes performances em um canal gaussiano. Para isso,

    foram escolhidos algoritmos regulares e irregulares (as diferenas sero explicadas no

    captulo 3 e utilizado o decodificador SPA (Soma de Produto), que foi introduzido por

    Gallager e at hoje estudado e propostas diversas variaes).

    No captulo 2, ser explicada a teoria de cdigos corretores de erros, abordando

    conceitos bsicos que so necessrios para o entendimento do estudo do LDPC. Sistema de

    comunicao, cdigos de blocos lineares, distncia de Hamming e decodificao sndroma

    sero explicitados.

    No captulo 3, os conceitos de LDPC sero introduzidos, fazendo um apanhado em

    alguns tipos de cdigos regulares e irregulares, apresentando algumas propriedades deste

    cdigo e sua representao com grafos de Tanner [5].

    3

  • No captulo 4, sero mostradas formas de construo de alguns tipos de cdigos

    LDPC, a partir de sua matriz de paridade H. Estas diferentes matrizes sero o foco da

    anlise comparativa que ser realizada neste trabalho.

    O captulo 5 trar como so feitas a codificao e decodificao dos cdigos LDPC,

    destacando o fato de, em alguns casos, haver uma dificuldade de se obter a matriz geradora

    do cdigo, necessitando realizar uma soluo aproximada. Alm disso, dois mtodos de

    decodificao sero detalhados.

    No captulo 6, os resultados das simulaes sero mostrados, realizando

    observaes nas comparaes de BER dentre os variados algoritmos de codificao.

    Por ltimo, o captulo 7 encerrar o trabalho apresentando as ltimas concluses

    baseadas na teoria e observaes mostradas ao longo deste texto.

    4

  • Captulo 2 - Cdigos Corretores de Erros

    Claude E. Shannon, em 1948, publicou o artigo sobre a teoria matemtica da

    comunicao [1] que se tornou clssico e at hoje referncia bibliogrfica de qualquer

    texto que aborde esse assunto. Segundo Shannon, haveria um limite na quantidade de

    informao que poderia trafegar por um canal com rudo. Em se tratando de uma

    comunicao digital em um canal AWGN (Aditive White Gaussian Noise), foi

    demonstrado que a maior taxa de transmisso que pode trafegar nesse canal dada por:

    +=NPBC 1log2 (2.1)

    onde C a capacidade do canal em bits por segundo (bps), P a potncia em Watts do sinal

    enviado atravs desse canal e N a potncia em Watts de rudo branco na largura de faixa

    disponvel B em Hertz.

    Shannon [1] demonstrou que, adicionando uma redundncia controlada

    informao, poder-se-ia reduzir a quantidade de erros na recepo induzidos pelo rudo a

    um patamar to pequeno quanto se quisesse, desde que a taxa de transmisso estivesse

    abaixo do limite determinado pela equao (2.1).

    Este processo, atravs do qual a redundncia anteriormente citada adicionada

    informao de modo a permitir a deteco e correo de erros, chamado de codificao de

    canal. O termo redundncia controlada est relacionado restrio das possveis

    sequncias de bits de informao na recepo. Tendo sido detectado um padro diferente

    das possveis sequncias, o decodificador de canal procura dentre elas aquela que mais se

    assemelha informao detectada. Essa semelhana obtida atravs da correta utilizao

    de critrios de deciso, sendo que os mais conhecidos so o critrio do mximo a-posteriori

    - MAP (Maximum a-posteriori) e o de mxima verossimilhana - ML (Maximum

    Likelihood). Ambos tm como objetivo minimizar o erro de deciso sobre os bits

    transmitidos.

    5

  • 2.1 - Cdigos de blocos e convolucionais

    Existem duas grandes famlias de cdigos detectores e corretores de erros: os

    cdigos de bloco e os convolucionais [2]. A codificao de bloco atribui a cada bloco de k

    bits de informao uma palavra cdigo com n bits codificados, n > k. Um cdigo assim

    formado descrito na literatura como cdigo de bloco (n,k), sendo que a relao entre o

    nmero de bits de um bloco de informao e o nmero de bits da palavra cdigo

    correspondente, k/n, denominada taxa do cdigo. De maneira geral, quanto menor a taxa

    de um cdigo, maior a sua capacidade de deteco e correo de erros. Como este trabalho

    tem como objetivo estudar o cdigo LDPC, que so cdigos de blocos, aprofundaremos um

    pouco mais o assunto adiante.

    A outra famlia de cdigos se refere aos convolucionais. Nesse tipo de codificao

    uma seqncia contnua de bits de informao, com tamanho varivel, mapeada em uma

    seqncia tambm contnua de bits codificados. Um codificador convolucional dito com

    memria, pois um determinado bit codificado depende de um ou mais bits de informao

    anteriores combinados linearmente.

    Existem vrios algoritmos de decodificao para cdigos de bloco e convolucionais.

    Destaque maior dado queles caracterizados como algoritmos de decodificao suave

    (soft decision decoding algorithms). Nesse tipo de decodificao no so utilizados os bits

    0s e 1s detectados no receptor, como acontece nos algoritmos de decodificao abrupta

    (hard decision decoding algorithms), e sim os valores reais dos sinais recebidos. Esse

    processo apresenta considerveis ganhos em relao ao processo de decodificao abrupta.

    Estes algoritmos sero melhor explicados no prximo captulo.

    Em vrios sistemas de comunicao mvel so utilizadas codificaes em cascata.

    Essa cascata pode conter somente codificadores de bloco, codificadores de bloco e

    convolucionais ou somente codificadores convolucionais so os denominados cdigos

    concatenados.

    importante nesse momento ressaltar a diferena entre os processos de codificao

    de fonte e de codificao de canal. O primeiro tem como objetivo reduzir a quantidade de

    bits necessrios representao da informao, ou seja, diminuir a redundncia existente na

    informao. O segundo adiciona, de maneira controlada, outro tipo de redundncia na

    6

  • informao, objetivando a deteco e a correo de erros causados pelo canal. Esses dois

    processos normalmente esto presentes nos sistemas de comunicao digital.

    2.1.1 - Conceitos Bsicos

    Suponha que todos os dados de interesse pudessem ser representados por uma

    informao binria, isto , como uma seqncia de zeros e uns. Esta informao binria

    est para ser transmitida atravs de um canal que causa erros ocasionais. O propsito de um

    cdigo adicionar smbolos extras aos smbolos da informao de modo que os erros

    podem ser encontrados e corrigidos no receptor. Isto , uma seqncia de smbolos de

    dados representada por uma seqncia maior de smbolos com redundncia suficiente

    para proteger os dados.

    Um cdigo binrio de tamanho M e comprimento de bloco n um conjunto de k

    palavras de comprimento n, chamadas palavras do cdigo. Geralmente, M = 2k para um

    inteiro k e o cdigo denominado de cdigo binrio (n,k). Por exemplo, pode ser feito o

    seguinte cdigo:

    C = {00000; 01011; 10110; 11101}

    Este um cdigo muito pobre e muito pequeno com M = 4 e n = 5, mas ele satisfaz

    os requisitos da definio. Pode-se usar este cdigo para representar nmeros binrios com

    2 bits, fazendo a seguinte correspondncia arbitrria:

    00 00000

    01 01011

    10 10110

    11 11101Suponha-se um rob que se move sobre um tabuleiro quadriculado, de modo que, ao

    se dar um dos comandos (para frente, para trs, para direita ou para esquerda), o rob se

    desloca do centro de uma casa para o centro de outra casa adjacente indicada pelo

    comando. Os quatro comandos acima podem ser codificados como elementos de {0,1} x

    {0,1}, como se segue:

    7

  • Para frente 00

    Para direita 10

    Para trs 01

    Para esquerda 11

    O cdigo acima ento usado como cdigo da fonte. Suponha-se, agora, que esses

    pares ordenados devam ser transmitidos via rdio e que o sinal no caminho sofra

    interferncias. Imagine-se que a mensagem 00 possa, na chegada ser recebida como 01, o

    que faria com que o rob, em vez de ir para frente, fosse para trs. O que se faz, ento,

    recodificar as palavras, de modo a introduzir redundncias que permitam detectar e corrigir

    erros. Pode-se, por exemplo, modificar o nosso cdigo da fonte como j foi feito

    anteriormente:

    00 00000

    01 01011

    10 10110

    11 11101

    Nessa recodificao, as duas primeiras posies reproduzem o cdigo da fonte,

    enquanto que as trs posies restantes so redundncias introduzidas. O novo cdigo

    introduzido na recodificao chamado de cdigo do canal.

    Suponha-se agora que se tenha introduzido um erro ao transmitir, por exemplo, a

    palavra 01011, de modo que a mensagem recebida seja 11011. Comparando essa

    mensagem com as palavras do cdigo, observado que no lhe pertence e, portanto, so

    detectados erros. A palavra do cdigo mais prxima da referida mensagem (a que tem

    menor nmeros de componentes diferentes) 01011, que precisamente a palavra

    transmitida.

    Quando recodificado o cdigo fonte, de modo a introduzir redundncias que

    permitam detectar e corrigir erros, esta recodificao no precisa ter obrigatoriamente o

    8

  • cdigo fonte inserido. Por exemplo, no cdigo do rob poderia ter feito a seguinte

    recodificao:

    C = {10101; 10010; 01110; 11111}

    utilizando-se a seguinte correspondncia:

    00 10101

    01 10010

    10 01110

    11 11111

    Os dois cdigos criados para o exemplo do rob no so cdigos bons, pois eles no

    so capazes de corrigir muitos tipos de erros. Por exemplo:

    Note que no primeiro cdigo a escolha da palavra cdigo 01011 para estimar a

    mensagem recebida 11011 feita de maneira bem natural. De fato, em relao s palavras

    do cdigo observa-se que:

    11011 00000 4 diferenas

    01011 1 diferena

    10110 3 diferenas

    11101 2 diferenas

    Suponha-se que tivesse recebido a mensagem 01110. Nesse caso, em relao s

    palavras do cdigo teria:

    01110 00000 3 diferenas

    01011 2 diferenas

    10110 2 diferenas

    9

  • 11101 3 diferenas

    Nesse caso, no possvel estimar qual foi a palavra cdigo transmitida.

    O ponto de partida para a construo de um cdigo corretor de erros definir o

    alfabeto A com um nmero finito de q smbolos. No caso dos cdigos binrios A = {0 ,1}.

    Um cdigo corretor de erros um subconjunto prprio qualquer de An = AA AA,

    para algum nmero natural n. O nmero de elementos de um conjunto A ser denotado por |

    A|. O cdigo do rob um subconjunto prprio de A5 , com A = {0 , 1}, onde A5 =

    {(00000);(00001);(00010);(00100);......;(11111)} e |A5| = 25 = 32Para que se possam identificar as palavras mais prximas de uma dada palavra

    recebida com erro e estimar qual foi a palavra do cdigo transmitida, ser apresentado um

    modo de medir a distnciaentre palavras em An.

    2.1.2 - Distncia de Hamming

    Suponha-se que ci e cj sejam duas palavras-cdigo quaisquer de um cdigo binrio

    (n,k). Uma medida da diferena entre as duas palavras-cdigo o nmero de bits em

    posies correspondentes que diferem entre si. Esta medida denominada de distncia de

    Hamming e denotada por dij. Por exemplo, sejam ci = [0 1 0 1 1] e cj = [1 0 0 0 1]. Ento

    dij = 3.

    Observe que dij sempre satisfaz a condio 0 < dij n, i j, para duas palavras-

    cdigo ci e cj, ambas de n bits (por definio, em um cdigo C(n,k), ci cj i e j com i j).

    O menor valor no conjunto {dij}, i,j = 0,1,...,M-1, i j, M = 2k denominado

    distncia mnima (dmin). Por exemplo, para o cdigo:

    C = {10101; 10010; 01110; 11111}

    as distncias esto colocadas na tabela 2.1:

    10

  • Tabela 2.1 - distncia entre as palavras-cdigo.

    ci cj dij10101 10010 310101 01110 410101 11111 210010 01110 310010 11111 301110 11111 2

    Portanto, dmin = 2.

    A Distncia de Hamming dij uma medida do grau de separao entre duas

    palavras-cdigo. Portanto, dmin est associado capacidade do cdigo em identificar

    palavras-cdigo demoduladas no receptor quando estas so recebidas com erro como

    conseqncia do rudo e interferncia presentes no canal. Em outras palavras, quanto maior

    o dmin maior a capacidade de um cdigo detectar e corrigir erros.

    Com isso, seja C(n,k) um cdigo corretor binrio, d o nmero mximo de erros que

    C(n,k) capaz de detectar, t o nmero mximo de erros que C(n,k) capaz de corrigir e dmin a distncia mnima do cdigo. Ento:

    2mindd = (2.1)

    2

    1min =

    dt

    (2.2)

    1min + knd

    (2.3)

    No exemplo da tabela 2.1, dmin = 2 para o cdigo C. Portanto, pelas equaes (2.1) e

    (2.2) temos que d = 1 e t = 0 (pegando apenas a parte inteira), ou seja, o cdigo C detecta

    no mximo 1 erro e no tem capacidade de corrigi-lo. um cdigo simples que serve

    apenas como exemplo.

    11

  • 2.2 - Cdigos de Blocos Lineares

    Como o LDPC o objetivo de estudo deste trabalho e por se tratar de um cdigo de

    bloco linear, neste tpico ser aprofundado este assunto.

    Seja {m0, m1, ..., mk-1} um bloco arbitrrio de k bits gerados pela fonte. Tipicamente,

    o codificador de bloco usa estes k bits para gerar uma palavra de cdigo com n > k bits,

    acrescentando n-k bits de controle. A palavra-cdigo assim construda tem a estrutura

    como:

    [b0 b1 ... bn-k-1 | m0 m1 ... mk-1]

    Este um cdigo (n, k) e tem uma taxa de codificao definida por R = k/n.

    No caso de um cdigo de bloco linear, os bits de paridade b0, b1, ..., bn-k-1 dependem

    linearmente (numa aritmtica binria) dos bits da mensagem m0, m1, ..., mk-1. Ou seja,

    definindo os vetores linha

    b = [b0 b1 ... bn-k-1]

    e

    m = [m0 m1 ... mk-1]

    podemos escrever

    mPb = (2.4)

    onde P uma matriz binria (k x n-k) que determina o cdigo. Portanto, sendo ]|[ mbx = (2.5)

    e substituindo (2.4) em (2.5), resulta

    ]|[ kIPmx = (2.6)

    onde Ik a matriz identidade de dimenso (k x k). Definindo a matriz geradora do cdigo:

    ]|[ kIPG = (2.7)

    de dimenso (k x n), usando (2.6) se tem a equao:

    mGx = (2.8)

    fcil verificar que o cdigo formado pelas palavras x, geradas pela matriz G a

    partir das 2k mensagens m, um cdigo linear. Com isso, sendo xi = miG e xj = mjG

    palavras-cdigo, ento xi xj = miG mjG = (mi mj) G; como mi mj necessariamente

    uma mensagem, xi xj uma palavra do cdigo.

    Definindo a matriz de verificao de paridade

    12

  • ]|[ Tkn PIH = (2.9)

    de dimenso (n-k x n), e usando (2.7) verifica-se que

    kxknTT

    k

    TT

    knT PP

    IPPIHG

    ==

    = 0]|[ (2.10)

    Assim sendo, de (2.8) vem xT =GT mT , o que, utilizando a equao (2.10), conduz a

    knx

    Txkn

    T xHHx

    == 11 00 (2.11)Esta uma condio necessria e suficiente para que x seja uma palavra do cdigo

    (n, k) gerado pela matriz G. No entanto, a verificao de (2.11) sada do canal ruidoso no

    significa necessariamente que no tenham ocorrido erros de transmisso. Com isso, se for

    transmitida a palavra-cdigo x, ento, a palavra y recebida , em geral,

    exy += (2.12)

    onde e o vetor de erro e = [e0 ... ei ... en-1], ei igual a 1 se houver erro no bit i e 0 caso no

    haja erro. Usando-se (2.12) em (2.11):

    0==+= TTTT eHeHxHyH se e for palavra-cdigo

    0=+= TTTT eHeHxHyH caso contrrio

    o que significa que sendo o vetor de erro uma palavra-cdigo, a palavra y, recebida com

    erros de transmisso, cumpre o teste de verificao de paridade (2.11), e os erros de

    transmisso no so detectados.

    2.3 - Grficos de Tanner

    Os Grficos de Tanner[5] so uma das formas mais simples de representar um

    cdigo binrio linear.

    13

  • Sabemos que um cdigo binrio linear (n,k) pode ser definido por um sistema de (n-k)

    equaes lineares homogneas a n incgnitas (os bits das palavras-cdigo). Podemos

    construir a partir deste sistema de equaes, um grfico bipartido formado por dois tipos de

    ns:

    (n-k) ns designados por ns de teste (CNs - check nodes), um por cada uma das

    equaes lineares homogneas do sistema.

    ns designados por ns das variveis (BNs - bit nodes), um por cada uma das

    variveis do sistema de equaes.

    Cada CN ligado a todos os BNs que intervm na equao qual o CN est

    associado. Por sua vez, cada BN associado a um dado bit da palavra-cdigo, ligado a

    todos os CNs correspondentes s equaes de paridade na qual o bit intervm. Devido a

    este fato, apenas existem ligaes entre BNs e CNs e nunca entre ns do mesmo tipo

    (grfico bipartido). A um grfico deste tipo d-se o nome de Grfico de Tanner.

    Dada a matriz de teste de paridade H de um cdigo binrio linear (n,k), facilmente se

    pode obter o seu GT e vice-versa. Assim, basta atender a que existem (n-k) CNs

    associados a cada linha da matriz H, n BNs associados a cada coluna de H e que cada CN j

    ligado ao BN i sempre que na matriz o elemento hij=1.

    Exemplo - Considere-se o cdigo binrio linear (6,3), definido pela matriz de teste de

    paridade:

    14

  • =

    001101100110010011

    3

    2

    1

    654321

    fff

    H

    cccccc

    O GT associado a este cdigo :

    A importncia dos GT como forma de representao de cdigos binrios lineares

    reside no fato de muitos dos algoritmos de decodificao destes cdigos terem por base esta

    representao grfica. Mais adiante, no captulo de LDPC, ser mostrada sua aplicao para

    este tipo de cdigo estudado neste trabalho.

    2.4 - Decodificao pela Sndrome

    Para proceder decodificao, isto , a deteco e/ou correo de erros de

    transmisso, o decodificador comea por calcular a sndrome da palavra recebida y, isto , o

    vetor binrio

    15

  • TyHs = (2.13)

    de dimenso n-k . Levando-se em conta (2.11) e (2.12), verificamos que a sndrome s

    depende do padro de erros, ou seja,

    TeHs = (2.14)

    Por outro lado, todos os padres de erro que diferem entre si de uma palavra-cdigo tm a

    mesma sndrome. Com isso, dado um vetor e que verifique (2.14), ento, todos os vetores

    de erro

    ii xee = , i = 0,1,...,2k-1 (2.15)

    onde xi , i = 0,1,...,2k-1 so todas as palavras-cdigo, verificam tambm (2.14). Assim,

    define-se o coset do padro de erros e como sendo o conjunto dos vetores de erro definido

    em (2.15) que tm a mesma sndrome (2.14). Uma vez que um cdigo de bloco linear (n,k)

    tem 2k palavras admissveis, num total de 2n palavras binrias de comprimento n, conclui-se

    que existem 2n-k cosets, isto , 2n-k sndromes distintas.

    A sndrome contm alguma informao sobre o correspondente padro de erros,

    embora geralmente insuficiente para o identificar sem ambigidade. Se assim fosse,

    qualquer padro de erros poderia ser corrigido. De qualquer modo, o conhecimento da

    sndrome s reduz o espao de busca de uma 2n dimenso para 2k. Uma vez calculado s, o

    decodificador deve escolher o elemento do respectivo coset que otimize um determinado

    critrio. Por exemplo, a respectiva probabilidade de ocorrncia. Para valores relativamente

    baixos da probabilidade de ocorrncia de erros de transmisso, o padro de erros mais

    provvel corresponde quele que tem menos 1's, isto , aquele cujo peso

    =

    =

    1

    0

    )(n

    iieew (2.16)

    mnimo.

    Portanto, o algoritmo de decodificao seria da seguinte maneira.

    Dada a palavra recebida y:

    1. Calcular a sndrome s = yHT

    a) s = 0, ento, y deve ser uma palavra-cdigo y0 = y

    b) s 0, ento, executar prximo passo.

    16

  • 2. Calcular o coset de y {ei = y xi , i = 0,1,...,2k-1}, escolher o padro e0 de menor

    peso e executar o prximo passo.

    3. Construir a palavra corrigida y0 = y e0.

    Observao: sendo e0 = y x0, com x0 HT = 0, tem-se

    0000 xxyyeyy ===

    isto , a sada do decodificador a palavra-cdigo que difere da palavra recebida num

    nmero mnimo de posies (correspondentes s posies dos 1's em e0). Ainda por outras

    palavras, a palavra-cdigo para a qual y x0 tem peso mnimo.

    17

  • Captulo 3 - Cdigo Low-density parity-check (LDPC)

    Os cdigos LDPC foram introduzidos por R.G.Gallager [4] no incio dos anos 60 e

    so capazes de atingir um desempenho prximo da capacidade em diversos modelos de

    canais assim como os cdigos Turbo [6]. Nesta poca, os computadores no eram capazes

    de simular o desempenho de cdigos com comprimentos significativos e com baixas taxas

    de erro: na gerao da matriz H que garantisse uma boa distncia mnima do cdigo, na

    codificao (normalmente no sistemtico) e ainda na sua decodificao, tendo por base o

    algoritmo Soma de Produtos (SPA) proposto pelo prprio Gallager. Isso fez com que os

    cdigos LDPC fossem deixados de lado pelos pesquisadores por muito tempo. Somente

    mais tarde, em 1981, R.M.Tanner [5] generalizou o trabalho de Gallager e introduziu a

    representao grfica de cdigos LDPC atravs de grafos bipartite conforme foi mostrado

    no captulo anterior. Ainda no foi nesta poca que os cdigos LDPC passaram a ser

    utilizados. Mas, D.J.C. Mackay [7] em meados da dcada de 90; aps o advento dos

    cdigos Turbo e da decodificao iterativa, os redescobriu. Mackay mostrou que os cdigos

    LDPC longos, quando decodificados com o algoritmo Soma-Produto (SPA), so capazes de

    atingir um desempenho muito prximo ao limite de Shannon [1] do Canal AWGN. Com

    isso, estes cdigos passaram a ser intensamente estudados e utilizados para controle de

    erros em um grande nmero de sistemas de comunicao e armazenamento de dados.

    Alm disso, comearam a ser estudados os cdigos LDPC irregulares, ao contrrio

    dos cdigos regulares introduzidos por Gallager [4]. Estes cdigos se mostraram superiores

    aos regulares em alguns aspectos e a diferena entre estes cdigos, que o objetivo deste

    projeto, ser explorada mais adiante.

    3.1 - Cdigos regulares e irregulares

    Um cdigo LDPC regular definido como o espao nulo de uma matriz de

    verificao de paridade H de M x N que possui a seguinte propriedade: cada linha e coluna

    possuem pesos constantes dc (linha) e ds (coluna) e estes pesos so muito pequenos quando

    comparados com o comprimento N do cdigo e com o nmero de linhas M em H,

    18

  • respectivamente. Por isso, o nome low-density parity-check, ou seja, uma matriz de

    verificao de paridade com uma densidade baixa (pesos nas linhas e colunas bem menores

    que seu tamanho).

    Isto significa que em um cdigo LDPC, cada smbolo pertencente a uma palavra-

    cdigo envolvido em ds equaes de paridade e cada equao de paridade envolve dc smbolos de uma palavra-cdigo. Um cdigo com estas caractersticas chamado de cdigo

    LDPC (ds,dc)-regular, o nmero de elementos no nulos em H

    sc dNdM = (3.1)

    Como o nmero total de elementos na matriz M x N, a densidade de H

    (porcentagem de 1's na matriz), denotada por r, dada por

    Md

    NMdN

    Nd

    NMdMr sscc =

    ==

    = (3.2)

    Geralmente, por se tratar de uma matriz com poucos valores no-nulos se

    comparado com o seu tamanho, as tcnicas de projeto de cdigos LDPC no garantem que

    H ir possuir apenas linhas linearmente independentes. Ou seja, normalmente, para um

    cdigo LDPC, o posto(H) menor ou igual M. Portanto, o nmero de smbolos de

    verificao de paridade satisfaz N K M, com igualdade apenas quando todas as linhas

    de H forem linearmente independentes. possvel eliminar as linhas linearmente

    independentes para encontrar uma matriz de verificao de paridade N K x M de posto

    completo, entretanto, a matriz resultante provavelmente no possuiria colunas e linhas de

    peso constante. Normalmente, as possveis dependncias entre as linhas de H so ignoradas

    e assume-se que a taxa do cdigo - a razo entre a quantidade de informao e o tamanho

    da palavra-cdigo - igual a:

    c

    s

    dd

    NM

    NMNR === 11 (3.3)

    Gallager, em sua dissertao, provou ainda que fazendo ds 3, os cdigos LDPC

    que podem ser obtidos possuem, em sua maioria, uma distncia mnima elevada, bastando

    para tal seguir algumas regras simples de construo como, por exemplo, garantir que

    quaisquer duas colunas da matriz H possuam quanto muito um s 1 em comum. Devido

    19

  • baixa densidade da matriz H, garantido que o nmero mnimo de colunas de H que so

    necessrias somar de forma a obter o vetor nulo elevado e, logo, que o cdigo possua uma

    distncia mnima elevada de acordo com o que foi explicado no captulo anterior.

    O grafo fator, que nada mais do que a generalizao dos grafos de Tanner j vistos

    acima, de um cdigo LDPC (ds,dc)-regular constitudo de N ns de varivel (BNs) de

    grau ds e M ns de verificao (CNs) de grau dc. Uma vez que os graus dos ns so

    determinados, ainda possvel escolher quais as conexes em particular sero realizadas. O

    par (ds,dc), juntamente com o comprimento N do cdigo, especifica um conjunto de cdigos

    LDPC. Para ilustrar a estrutura dos cdigos LDPC (ds,dc)-regular, a matriz de verificao e

    o grafo fator de um cdigo LDPC (3,4)-regular de comprimento 12 so mostrados abaixo:

    (a)

    (b)

    figura 3.1:(a) matriz de paridade e (b )grafo fator para um cdigo LDPC (3,4)-regular de comprimento 12

    20

  • Neste caso, temos:

    M = 9 N = 12 dc = 4 ds = 3

    Este cdigo possui taxa R = 1 = e densidade r = 4/12 0.33.

    As matrizes de verificao de paridade dos cdigos LDPC tambm podem

    apresentar linhas e colunas com pesos variveis. Neste caso, os cdigos LDPC so

    chamados irregulares. Os cdigos LDPC irregulares tambm possuem matrizes de

    verificao de paridade esparsas e so representados por grafos nos quais os BNs e CNs

    no possuem graus constantes. Um conjunto de cdigos LDPC irregulares definido

    atravs de distribuies de grau. Uma distribuio de grau (x) um polinmio da forma:

    1)(1 = ixx i

    ii

    (3.4)

    em que os coeficientes so nmeros reais no-negativos, de modo que (1) = 1. Dado um

    par ((x),(x)) de distribuies de grau e um nmero natural N, define-se o conjunto de cdigos LDPC ((x),(x))-irregulares de comprimento N, no qual, a partir de (3.4) temos

    1)( = ii

    i xx como a distribuio de grau dos BNs, e 1)( = i

    ii xx como

    distribuio de grau dos CNs. Os coeficientes de i (ou i) denotam a frao de ramos no grafo que esto conectados a BNs (ou CNs) de grau i. A taxa de um cdigo LDPC

    ((x),(x))-irregular dada pela seguinte expresso:

    = 1

    0

    1

    0

    )(

    )(1

    dxx

    dxxR

    (3.5)

    Exemplo de cdigo LDPC-irregular: Seja um conjunto de cdigos LDPC ((x),(x))-irregulares de comprimento 12, definido pelas distribuies de grau:

    221

    21)( xxx +=

    e

    21

  • 3231

    32)( xxx +=

    Um elemento deste conjunto um cdigo definido a partir de 9 equaes de verificao de

    paridade. De acordo com as distribuies de grau, o grafo fator que representa este cdigo

    possui 6 BNs de grau 2, 6 BNs de grau 3, 6 CNs de grau 3 e 3 CNs de grau 4. Uma

    matriz de verificao de paridade e seu respectivo grafo fator para este cdigo so

    mostrados a seguir.

    (a)

    (b)

    figura 3.2: (a) matriz de paridade e (b) grafo fator para um cdigo LDPC ((x),(x))-irregular de comprimento 12

    A densidade da matriz H r = 30/108 0.2777 e a taxa deste cdigo dada por

    22

  • 2677.0

    21

    21

    31

    32

    11

    0

    2

    1

    0

    32

    +

    +=

    dxxx

    dxxxR

    3.2 - Conceito de Giro

    Um dos mais importantes conceitos relativos aos GT (grafos de Tanner) a

    definio de giro (girth) de comprimento l como sendo um percurso fechado formado por l

    caminhos. Por exemplo, tendo por base a figura 3.3 podemos observar um ciclo de

    comprimento 6 que se encontra assinalado em negrito. O menor comprimento de todos os

    ciclos existentes num GT designado por giro.

    figura 3.3: grafo de Tanner para um cdigo LDPC regular.

    Na prtica, ao projetar um cdigo LDPC procura-se evitar a existncia de ciclos de

    pequeno comprimento no seu GT de forma a melhorar o desempenho do algoritmo SPA.

    De fato, prova-se que o algoritmo SPA tem desempenho timo quando aplicado a grficos

    sem ciclos. Na presena de grficos com ciclos, a sua eficincia diminui, sendo inferior

    para cdigos com um baixo giro. Por outro lado, prova-se tambm que GT sem ciclos no

    suportam bons cdigos, pelo que necessrio obedecer a algumas regras na construo dos

    cdigos LDPC por forma a que estes possuam boas propriedades (distncia mnima e um

    giro elevados).

    3.2.1 - Identificao de ciclos e determinao do giro de um cdigo LDPC

    23

  • Qualquer ciclo de um GT tem, necessariamente, um comprimento par e o seu valor

    mnimo 4 correspondendo a uma matriz de teste de paridade em que existem duas colunas

    com dois 1s em comum (ver figura 3.4). Uma das regras de construo da matriz H, para

    evitar a existncia de ciclos de dimenso 4, consiste em garantir que quaisquer duas colunas

    da matriz , possuam quanto muito um s 1 em comum.

    figura 3.4: Exemplo de ciclo de comprimento 4 e sua respectiva matriz de verificao de paridade.

    J os ciclos de comprimento 6 so mais difceis de identificar na matriz H. Na

    figura 3.5 apresentamos um exemplo.

    figura 3.5: Exemplo de um ciclo de comprimento 6 num GT e a sua respectiva matriz de verificao de paridade.

    Mao e Banihashemi [8] apresentam uma forma simples de determinar o giro

    associado a cada BN, isto , o ciclo mais curto que passa por cada BN. O mtodo consiste

    em construir para cada BN uma rvore a partir do GT ou da matriz H do cdigo. Assim,

    considera-se como raiz da rvore o BNi cujo giro pretendemos determinar. A rvore ento

    construda passo a passo. No nvel k de descendncia da rvore so includos todos os ns a

    uma distncia k do BNi. O procedimento repetido at o nvel de descendncia n em que

    includo um n que se encontra ligado no GT do cdigo a pelo menos dois ns j includos

    24

  • no nvel de descendncia. Isto identifica a formao do primeiro ciclo, sendo 2n o giro do

    BNi.

    Em resumo, o mtodo consiste em adicionar como descendentes, a cada n da

    rvore, todos os ns que a ele se encontram ligados no GT, com exceo do n pai,

    terminando o algoritmo quando encontrado um n que descendente de mais do que um

    n diferente.

    Na figura 3.6, pode-se observar a aplicao do mtodo anteriormente descrito na

    determinao do giro do BN do cdigo descrito pelo GT da figura 3.3. Como pode ser

    observado, s no 3 nvel de descendncia da rvore encontramos um n descendente

    simultaneamente de mais do que um n, pelo que se conclui que o giro do BN 6.

    Assinalado em negrito encontra-se identificado um dos ciclos de comprimento 6 que

    contm o BN .

    figura 3.6: Determinao do giro Ci do cdigo LDPC descrito na figura 3.3.

    McGowan e Williamson [9] apresentam um mtodo algbrico de determinao do

    giro de cada BN, baseado no conceito de matriz adjacente. Dado um cdigo LDPC descrito

    por uma matriz de verificao de paridade H, a sua matriz adjacente definida por,

    =

    00

    THH

    A (3.6)

    25

  • pelo que cada n do GT do cdigo (BN ou CN) representado por uma linha e por uma

    coluna da matriz A.

    Definindo os ns GT como v1, v2, . . . , vp, com a matriz A = [aij] de tamanho p x p,

    ento:

    aij = 1 se vi est conectado ao vj,

    aij = 0 se o contrrio.

    Considerando:

    =

    HHHH

    A TT

    002

    os elementos aij2 da matriz A2 so calculados pela frmula:

    =

    =p

    k kjikijaaa

    12

    percebe-se que este tambm o caminho de tamanho 2 entre vi e vj, pois cada caminho

    contm seu n intermedirio vk cujas duas ligaes so aik = 1 e akj = 1.

    Portanto, considerando um grfico com giro de tamanho 4, observa-se nestes ciclos

    que cada n vi conectado ao n vj, com dois caminhos de tamanho 2 entre eles, ou seja, os

    giros de tamanho 4 so observados quando aij2 = 2.

    Com isso, provaram que o elemento (i,j) da matriz An o nmero de percursos com

    comprimento n entre os ns i e j do cdigo. Neste sentido, cada elemento no-diagonal da

    matriz An, aijn, representa o nmero de ciclos de dimenso n que contm os ns i e j. O

    mtodo descrito permite determinar rapidamente o giro de cada BN, bem como, o giro do

    cdigo.

    26

  • Captulo 4 Construo de cdigos LDPC

    A forma mais simples de projetar um cdigo LDPC consiste na construo da

    matriz de teste de paridade que cumpra um conjunto de requisitos pretendidos, como sejam,

    definir um cdigo regular (caracterizado por um dado peso para cada coluna e linha) ou

    irregular (podendo ser especificado o grau de cada BN e CN), ou ainda, garantir um dado

    giro mnimo. Este projeto tambm pode ser feito a partir do GT que a matriz de teste de

    paridade ir representar.

    Obviamente, para qualquer conjunto de restries existe um conjunto imenso de

    cdigos que cumprem as referidas especificaes. A construo da matriz H feita de

    forma quase aleatria, mas seguindo algumas regras que maximizam a probabilidade do

    cdigo obtido possuir um bom desempenho. No entanto, essas regras no nos do qualquer

    garantia de que tal acontea. Podero inclusive suceder situaes em que a matriz H obtida

    no ser de caracterstica mxima, ou seja, algumas linhas ou colunas no sero

    linearmente independentes e, portanto, definir um cdigo LDPC (n,k) com k < k.

    O primeiro mtodo utilizado para obter matrizes de cdigos LDPC regulares foi

    originalmente proposto por Gallager [4]. Para construir a matriz de verificao de paridade,

    denominada HGA; preciso primeiro construir uma submatriz H1 de dimenses k x (k . dc),

    na qual as colunas apresentam peso 1 e as linhas apresentam peso dc. A constante k

    determinada a partir do comprimento N e do valor de dc, de modo que N = k . d, conforme

    mostrado na figura 4.1:

    27

  • figura 4.1: matriz de paridade proposta por Gallager.

    Em seguida, so realizadas ds 1 permutaes das colunas de H1 para formar outras ds 1

    submatrizes H2, H3, . . ., Hds de dimenses k x k . dc. Com estas ds submatrizes forma-se a

    matriz HGA da seguinte maneira:

    Os pesos das colunas e das linhas da matriz resultante HGA so ds e dc, respectivamente. A

    densidade r = 1/k. Portanto, a matriz HGA esparsa para k >> 1.

    As ds 1 permutaes devem ser escolhidas de modo que o cdigo gerado pela

    matriz HGA possua uma boa distncia mnima e seu GT no possua ciclos curtos,

    especialmente, ciclos de comprimento 4. Gallager [4] no sugeriu nenhum mtodo

    especfico para encontrar estas permutaes e no existe nenhum algoritmo conhecido para

    encontrar permutaes que garantam a no existncia de ciclos curtos. Normalmente, os

    cdigos LDPC de Gallager so construdos atravs de buscas computacionais exaustivas

    por permutaes que garantam um cdigo de bom desempenho. No entanto, possvel

    utilizar permutaes aleatrias na construo de cdigos LDPC. Tal construo no garante

    28

  • nenhuma propriedade de distncia mnima ou ciclo mnimo, porm, para comprimentos

    longos muito provvel que o cdigo construdo desta forma possua um bom desempenho.

    Exemplo de Cdigo de Gallager: A matriz HGA mostrada na figura 4.2 foi construda

    a partir da tcnica de Gallager, com os parmetros N = 20, ds = 3 e dc = 4.

    figura 4.2: matriz de Gallager construda com N = 20, ds = 3 e dc = 4.

    Makay e Neal [7] apresentam um conjunto de estratgias para gerar cdigos LDPC.

    Estas estratgias so apresentadas de forma numerada, sendo convico dos autores que as

    de ordem superior maximizam a probabilidade do cdigo obtido possuir um melhor

    desempenho. No entanto, eles prprios reconhecem no possuir qualquer prova deste fato.

    29

  • - Estratgias apresentadas por Mackay e Neal para construo de cdigos LDPC:

    I. A matriz H gerada partindo de uma matriz de zeros de dimenses (n k) x n

    e aleatoriamente colocando ds bits em cada coluna (o cdigo assim gerado

    poder ser irregular);

    II. A matriz H gerada criando aleatoriamente colunas de peso de Hamming ds;

    III. A matriz H gerada criando aleatoriamente colunas de peso de Hamming ds e procurando uniformizar ao mximo o peso de Hamming dc de cada linha.

    IV. A matriz H gerada com colunas de peso de Hamming ds, linhas de peso de

    Hamming dc, e no possuindo quaisquer duas colunas com mais de um 1 em

    comum;

    V. A matriz H gerada de acordo com o procedimento do ponto anterior mas

    tendo como objetivo a maximizao do giro do cdigo (apresentado no

    captulo anterior);

    VI. A matriz H gerada de acordo com o procedimento referido em IV,

    procurando obter uma matriz H de caracterstica mxima, de preferncia na

    forma H = [H1 | H2] com H1 ou H2 inversvel.

    Mackay e Neal [7] apresentam ainda em um conjunto de tcnicas que fazem uso de

    algumas das estratgias antes referidas. Essas tcnicas so vulgarmente conhecidas por 1A,

    2A, 1B e 2B, sendo usadas por muitos investigadores na classificao dos cdigos LDPC

    estudados.

    A estratgia 1A diz respeito ao ponto III com ds = 3, e em que introduzida a

    restrio de o cdigo possuir um giro superior a 4. O cdigo resultante possui taxa R = . A

    figura 4.3 ilustra a construo 1A. O nmero 3 denota a sobreposio de 3 matrizes de

    30

  • permutao e a seta circular representa permutaes aleatrias de todas as colunas naquele

    bloco.

    figura 4.3: Construo 1A para um cdigo de Mackay (3,6)-regular.

    A estratgia 2A baseia-se na construo da matriz H com M/2 colunas (com M

    sendo o nmero de linhas da matriz H) de peso 2, sem que exista qualquer 1 em comum

    entre elas, e em que as restantes colunas tm peso 3. Simultaneamente, procura-se que o

    peso dc seja o mais uniforme possvel, impondo como restrio o fato de quaisquer duas

    colunas de H no terem mais do que um 1 em comum. Consiste, pois numa implementao

    da estratgia IV anteriormente mencionada. O cdigo resultante possui taxa R = 1/3. A

    construo irregular foi introduzida por apresentar bons resultados empricos. No prximo

    captulo, a diferena de performance entre cdigos regulares e irregulares ser mostrada. A

    figura 4.4 mostra a construo 2A. As linhas diagonais representam matrizes de identidade.

    figura 4.4:Construo 2A para um cdigo de Mackay irregular.

    As estratgias 1B e 2B resultam da eliminao de um pequeno nmero de colunas

    das matrizes H obtidas segundo as estratgias 1A e 2A, respectivamente, de forma a

    eliminar todos os ciclos do cdigo de tamanho inferior a um dado valor l estipulado,

    procurando, desta forma, maximizar o giro de acordo com a estratgia V.

    31

  • Exemplo de Cdigos de Mackay: Considere o cdigo de Mackay (3,6)-regular de

    comprimento 96 e taxa R = construdo a partir da tcnica 1A. A sua matriz de verificao

    de paridade mostrada na figura 4.5, na qual os pontos pretos representam os elementos

    no-nulos e os elementos nulos so deixados em branco.

    figura 4.5: Matriz H de um cdigo de Mackay (3,6)-regular

    E um exemplo de uma matriz de verificao de paridade, construda com o uso da tcnica

    2A, mostrada na figura 4.6. Este cdigo possui comprimento 96 e taxa R = 1/3.

    figura 4.6: Matriz H de um cdigo de Mackay irregular

    32

  • Um dos problemas que colocado exatamente a forma de eliminar os ciclos de

    comprimento inferior a um dado valor. McGowan e Williamson [9] baseados no conceito

    de matriz adjacente, definida anteriormente, apresentam um mtodo para remoo desses

    ciclos por alterao da matriz H, garantindo, simultaneamente, que no so gerados novos

    ciclos do mesmo tamanho ou inferior.

    Como j foi referido, seguindo qualquer uma destas estratgias, o conjunto de

    cdigos admissveis muito grande, tornando-se necessrio dispor de alguns critrios de

    seleo por forma a escolher os susceptveis de apresentarem um melhor desempenho, que

    o principal objetivo deste trabalho. Para isso, comparaes entre alguns cdigos propostos

    sero realizadas a fim de observar o de melhor performance.

    Mao e Banihashemi [8] sugerem, como critrio de seleo a escolha do cdigo que

    o apresente o giro mais elevado. Este mtodo implica a determinao do giro de cada um

    dos cdigos o que coloca, desde logo, limitaes sua aplicao em comprimentos de

    bloco elevados. Estes autores mostraram que para cdigos obtidos segundo o mtodo de

    construo 2A, o critrio de seleo por eles propostos, conduzia escolha de um cdigo

    com uma menor probabilidade de erro de decodificao.

    Um outro critrio de seleo consiste na escolha do cdigo que possui uma maior

    distncia mnima (sem dvida, um bom parmetro de avaliao do desempenho de um

    cdigo linear). A determinao da distncia mnima de um cdigo linear , no entanto, uma

    tarefa complexa para cdigos com comprimentos de bloco elevados. Berrou, Vaton,

    Jzquel e Douillard [10] apresentam um mtodo iterativo para a determinao da distncia

    mnima de um cdigo linear, que designam por Mtodo do Erro Impulsivo. O mtodo

    baseia-se na resposta de um de codificador iterativo de mxima verossimilhana do tipo

    Soft-In / Soft-Out a um erro do tipo impulsivo (A palavra-cdigo transmitida apenas

    corrompida num bit com rudo impulsivo de amplitude Ai) num canal Gaussiano. Os

    autores provaram que a amplitude mnima de rudo que provoca um erro de decodificao

    igual distncia mnima do cdigo em causa.

    Alm destes, Richardson e Urbanke [11] introduziram um mtodo amplamente

    utilizado atualmente que leva em considerao a anlise das densidades de probabilidade

    das mensagens iterao por iterao, que so funes do nvel de rudo do canal e dos graus

    dos ns de verificao e de bits (smbolos). Este mtodo chama-se Density Evolution, que

    33

  • busca definir o limite de nvel de rudo de um determinado conjunto de cdigos, chamado

    de limiar, a partir do qual a decodificao iterativa SP no converge, ou seja, at este valor

    o cdigo ter um desempenho livre de erros. O tamanho do bloco influencia na distncia

    entre o desempenho do cdigo e o limiar do seu conjunto de cdigos, pois, conforme

    diminui o seu tamanho, essa distncia aumenta. No final, atravs desse mtodo, concluram

    que aumentando os graus dos ns de bits (smbolos), o limiar de decodificao tambm

    aumenta, mostrando que com cdigos irregulares possvel alcanar o limite do canal de

    Shannon.

    As tcnicas de construo apresentadas at agora se baseiam diretamente no projeto

    das matrizes de verificao de paridade. No entanto, um cdigo LDPC tambm pode ser

    construdo atravs do projeto do GT que o descreve, conforme foi mencionado

    anteriormente. Para se obter um bom cdigo, sempre desejvel construir um GT que

    possua um ciclo mnimo grande. A construo de GTs com o maior ciclo-mnimo possvel

    um difcil problema de difcil anlise combinatorial. Entretanto, possvel projetar GTs

    com um ciclo mnimo de comprimento relativamente grande atravs de algoritmos sub-

    timos. O algoritmo Progressive Edge Growth (PEG) constri grafos colocando ramos

    progressivamente entre BNs e CNs em um GT de modo a maximizar os ciclos mnimos

    locais de cada um dos BNs.

    Dados os parmetros do grafo, isto , o nmero de BNs N, o nmero de CNs M e a

    distribuio de grau dos BNs (x), um procedimento que adiciona ramos realizado de modo que cada novo ramo adicionado ao grafo possua o menor impacto possvel no ciclo

    mnimo. A idia do algoritmo , para cada BN, encontrar os CNs mais distantes e ento

    conecta-los atravs de ramos. Para encontrar os CNs mais distantes de um determinado BN

    xn, construdo um subgrafo partindo de xn e dos ramos nele incidentes (xn, cm1),(xn, cm2), . . . ,

    (xn, cmd(xn)) so includos no subgrafo, juntamente com todos os ramos incidentes neles,

    excluindo (xn, cm1),(xn, cm2), . . . , (xn, cmd(xn)). O processo continua at que uma determinada

    profundidade seja alcanada.

    Neste procedimento, o subgrafo pode conter vrios vrtices e ramos iguais. Para um

    BN xn, a sua vizinhana de profundidade l definida como o conjunto de CNs alcanados

    pelo subgrafo de profundidade l expandido como mostrado na figura 2.13 e denotada por

    34

  • )( nl xN . O conjunto complementar )(

    ___

    n

    l

    xN definido como )(\ nl

    c xNV . Na figura 4.7, qualquer BN que aparece pela primeira vez na profundidade l est a uma distncia 2l em

    relao ao n xn e qualquer CN que aparece pela primeira vez na profundidade l est a uma

    distncia de 2l + 1 em relao ao n xn.

    Ao expandir progressivamente o subgrafo a partir do BN xn duas situaes podem

    ocorrer:

    1) a cardinalidade do conjunto )( nl xN para de aumentar e menor do que M;

    2) )( nl xN e )(1___

    n

    l

    xN+

    = .

    No primeiro caso, nem todos os CNs podem ser alcanados a partir de xn, ento

    conectar xn a um dos elementos de )( nl xN no cria nenhum ciclo adicional. No segundo

    caso, todos os CNs so alcanados em uma profundidade l + 1, ento a conexo de xn a um

    elemento de )(___

    n

    l

    xN cria um ciclo de comprimento 2(l + 2).

    35

  • figura 4.7: subgrafo expandido a partir do n x.

    Quando o algoritmo encontra mais de um CN para conectar ao BN xn, isto ,

    )(___

    n

    l

    xN possui mais de um elemento, o n com o menor grau selecionado. Tal

    procedimento faz com que a distribuio de graus dos CNs seja to uniforme quanto

    possvel. Se houverem mltiplas escolhas de ns de menor grau, possvel escolher

    aleatoriamente um dos ns do conjunto (com probabilidade uniforme) ou escolher o CN

    com o menor ndice do conjunto.

    Exemplo de cdigo construdo com o algoritmo PEG: Usando o algoritmo PEG para

    construir um cdigo LDPC de comprimento N = 504, M = 252 equaes de paridade e

    distribuio de graus (x) = x2, obtm-se a matriz de verificao de paridade mostrada na figura 4.8.

    36

  • figura 4.8: Matriz H de um cdigo LDPC construdo com o algoritmo PEG.

    O algoritmo PEG possui a vantagem de ser bastante flexvel e possibilita obter

    cdigos com uma estrutura que permite um codificador de complexidade linear. Alm

    disso, o algoritmo PEG permite obter cdigos regulares e irregulares de qualquer taxa, com

    um bom ciclo mnimo. Mesmo os cdigos regulares podem possuir uma leve irregularidade

    nos graus de CNs. No entanto, isto no influencia significativamente o seu desempenho.

    - Abordagens alternativas para construo de cdigos LDPC.

    Existem outras formas de construo de cdigos LDPC. Por exemplo, Prabhakar e

    Narayanan [14] apresentam um mtodo algbrico de construo de cdigos LDPC

    regulares. Este apresenta como grande vantagem o fato de a estrutura de o GT poder ser

    gerada algebricamente usando um procedimento recursivo.

    Este mtodo algbrico pretende construir um cdigo LDPC regular de dimenses

    (n,k), sendo ds o peso de cada BN e o peso de dc de cada CN. Existem n x ds ligaes a

    BNs e a CNs em que cada caminho do GT liga uma conexo BN a uma conexo CN.

    Designando por Ai a conexo CN qual liga a conexo BNi, com Ai pertencente ao BN

    37

  • [i/ds], ento, Prabhakar e Narayanan propuseram que a seqncia A0, A1, ... , Anxds-1 fosse

    obtida da seguinte forma recursiva:

    MbAaA ii mod).(1 +=+ com M = n x ds e 0 i M ,

    (4.1)

    com a e b nmeros inteiros satisfazendo um conjunto de condies por eles deduzidas e A0 um nmero inteiro entre 0 e M.

    Ao todo so nove as restries colocadas por Prabhakar e Narayanan que garantem

    que o cdigo gerado por este mtodo LDPC e no possui ciclos de comprimento inferior a

    seis. Estas condies no so muito restritivas, permitindo que seja gerado um vasto

    conjunto de cdigos LDPC com diferentes comprimentos e taxas de informao. O

    desempenho do cdigo gerado depende tambm dos valores escolhidos para a, b e A0.

    Uma abordagem alternativa para a construo de bons cdigos LDPC irregulares

    apresentada por Richardson, Shokrollahi e Urbanke [12]; e Chung, Forney, Richardson e

    Urbanke [13] que se baseia num estudo sobre a distribuio dos pesos de cada BN que

    otimiza o desempenho do cdigo.

    38

  • Captulo 5 Codificao e Decodificao de LDPC

    5.1 - Codificao

    Agora que foi introduzida a teoria de cdigos LDPC, ser mostrada como

    realizada a codificao a partir da matriz esparsa gerada.

    Sendo os cdigos LDPC, a forma imediata de realizar a codificao seria partindo

    do conhecimento da matriz geradora determinar as palavras-cdigo de acordo com a

    equao (2.8), ou seja, fazendo x = mG. No entanto, os mtodos utilizados na construo de

    cdigos LDPC assentam na obteno da sua matriz de teste de paridade H ou no

    equivalente GT. Na grande maioria das vezes a matriz H obtida no sistemtica nem de

    caracterstica mxima. A matriz pode, no entanto, ser expressa na forma sistemtica (2.9)

    usando o mtodo de Gauss. A obteno da matriz G depois imediata. Podem, no entanto,

    surgir situaes em que para obter H na forma (2.9) se torne necessrio efetuar troca de

    colunas, obtendo-se desta forma um cdigo LDPC diferente mas com o mesmo

    desempenho do original.

    Embora de fcil implementao, o mtodo anterior extremamente dispendioso em

    termo do nmero de operaes a realizar na codificao de cada palavra de cdigo. Isto se

    deve ao fato de a sistematizao da matriz H no conduzir, necessariamente, obteno de

    uma matriz G com baixa densidade de 1s, pelo que a codificao por (2.8) exige a

    realizao de um nmero extremamente elevado de operaes.

    Uma aproximao alternativa para a soluo deste problema consiste na obteno de

    cdigos LDPC por mtodos algbricos e geomtricos em que a codificao possa ser

    realizada por circuitos simples baseados em registros de deslocamento. o caso dos

    cdigos apresentados por Johnson e Weller [15], que sugerem uma famlia de cdigos

    LDPC quase cclicos com giro no inferior a 6. tambm o caso de Kou, Lin e Fossorier

    [16] que apresentam uma abordagem para a construo de cdigos LDPC baseada em

    linhas e pontos de uma geometria finita, como a geometria Euclidiana e a geometria

    projetiva em campos finitos. Os cdigos construdos por este mtodo so tambm cclicos

    ou quase cclicos.

    39

  • 5.2 - Decodificao Hard e Soft decision

    Uma das principais vantagens dos cdigos LDPC o fato de poder ser decodificado

    usando algoritmo iterativo, que tem a complexidade crescente linearmente com o tamanho

    do cdigo.

    O algoritmo usado para decodificar os cdigos LDPC foi descoberto

    independentemente vrias vezes e aparece com diferentes nomes. Os mais comuns so

    belief propagation (BA), message passing algorithm (MPA) e sum-product

    algorithm (SPA), que o mais utilizado em teoria de comunicao.

    Para este tipo de algoritmo, existem duas formas possveis: hard decision (HD) e

    soft decision (SD). O primeiro considera que o nmero de smbolos possveis que chegam

    ao decodificador finito, e o segundo trabalha com a distribuio probabilstica dos

    smbolos recebidos. Apesar do HD ser mais simples, o SD apresenta melhor desempenho

    por levar em considerao uma distribuio de probabilidades.

    Com o objetivo de explicar este algoritmo, uma simples variao, que funciona com

    HD ser introduzido primeiro. Em seguida, o algoritmo ser estendido para trabalhar com

    SD, que geralmente obtm melhores resultados na decodificao. Apesar de ser utilizado o

    canal AWGN para as simulaes mais adiante, para este algoritmo ser mais bem entendido,

    ser considerado o canal binrio simtrico.

    Hard decision:

    O algoritmo ser explicado baseado na seguinte matriz de verificao de paridade.

    A matriz mostrada abaixo tem dimenso 4 x 8 com ds = 4 e dc = 2.

    =

    0101111000101001

    1001010001111010

    H

    representada pelo seu GT:

    40

  • Sendo c = [1 0 0 1 0 1 0 1] uma palavra-

    cdigo livre de erros para a matriz H

    acima (satisfaz a condio HcT = 0),

    supe-se sua transmisso em

    um canal binrio simtrico e a recepo com um erro, por exemplo, de c1 = 1, ou seja, c =

    [1 1 0 1 0 1 0 1].

    1. No primeiro passo, todos os ns de variveis (BNs) ci enviam uma mensagem

    para seus ns de verificao (CN) fj (sempre 2 neste exemplo) contendo o bit que

    acreditam ser o correto para si. Neste estgio, a nica informao que um BN ci tem,

    o correspondente i-simo bit recebido de c, yi. Isso significa, por exemplo, que c0 envia uma mensagem contendo 1 para f1 e f3, n c1 envia mensagem contendo y1(1)

    para f0 e f1, e por a vai.

    2. No segundo passo, todo CN fj calcula uma resposta para todos os BNs conectados.

    A resposta contem o bit que fj acredita ser o correto para o BN ci assumindo que os

    outros BNs conectados a si (fj) esto corretos. Em outras palavras: Se verificar o

    exemplo, todo CN fj est conectado a 4 BNs. Ento, um CN fj olha para a

    mensagem recebida de trs BNs e calcula o bit que o quarto BN deve ter para

    satisfazer a equao de verificao de paridade. A tabela 5.1 mostra este passo.

    Tabela 5.1: lista das mensagens recebidas e enviadas pelos ns de verificao no passo 2 do algoritmo de decodificao

    hard decision.

    41

  • Importante que o algoritmo pode terminar neste ponto. Acontecer isto se todas as

    equaes de verificao de paridade forem satisfeitas. Ser observado mais tarde

    que o algoritmo contem um loop, sendo outra possibilidade de trmino do

    algoritmo, alcanar um nmero mximo de loops.

    3. Prxima fase: os BNs recebem as mensagens dos CNs e usam como informao

    adicional para decidir se seu bit originalmente recebido est certo. Uma forma

    simples de fazer isto escolher a maioria. Voltando ao exemplo, cada BN tem trs

    fontes de informao a respeito de seu bit. O bit original recebido e duas sugestes

    dos CNs. A tabela 5.2 ilustra este passo. Agora, os BNs podem enviar uma outra

    mensagem que eles decidiram ser o correto pelos CNs.

    4. V para o passo 2.

    Tabela 5.2:Descreve o passo 3. Os BNs usam as mensagens de resposta dos CNs para escolher pela maioria o valor de seu bit.

    Neste exemplo, a segunda execuo do passo 2 encerraria o processo de decodificao, pois

    c1 escolheu o valor 0 no ltimo passo. Com isso, corrige o erro de transmisso e satisfaz

    todas as equaes de verificao.

    Soft decision:

    A decodificao descrita acima foi apenas uma maneira didtica de explicar o

    algoritmo. A decodificao soft decision dos cdigos LDPC, que baseada no conceito

    de envio de mensagens, tem uma performance melhor e , por isso, o mtodo mais

    42

  • utilizado. A idia a mesma do hard decision. Antes de apresentar o algoritmo, sero

    apresentadas as notaes:

    Pi = Pr(ci = 1|yi)

    qij a mensagem enviada por um BN ci para o CN fj. Toda mensagem contem

    sempre um par qij(0) e qij(1) que carrega o quanto se acredita yi ser 0 ou 1.

    rji a mensagem enviada por um CN f j para o BN ci. Novamente, existe um rji(0) e

    rji(1) que indica o quanto se acredita yi ser 0 ou 1.

    O nmero de passos na descrio a seguir corresponde ao caso do hard decision.

    1. Todos os BNs enviam suas mensagens qij. Como nenhuma informao est

    disponvel neste passo, qij(1) = Pi e qij(0) = 1 - Pi.

    2. Os CNs calculam suas mensagens de resposta rji1:

    +=iVji

    jiji qr\'

    ' ))1(21(21

    21)0( (5.1)

    e

    )0(1)1( jiji rr =

    (5.2)

    Ento, calculada a probabilidade de existir um nmero par de 1s entre os

    BNs, exceto ci (isto exatamente o que Vj\i significa). Esta probabilidade

    igual probabilidade de rji(0), ou seja, de ci ser 0. Este passo e a informao

    usada para calcular as resposta esto ilustrados na figura 5.1.

    43

  • figura 5.1: ilustra o clculo de rji(b)

    _________________________________________________________________________1Equao (5.1) usa o seguinte resultado de Gallager: para uma seqncia de M dgitos binrios independentes ai com uma

    probabilidade de pi para ai = 1, a probabilidade de toda a seqncia conter um nmero par de 1s

    =

    +1

    )21(21

    21

    iip

    as constantes Kij so escolhidas de uma forma que assegure qij(0) + qij(1) = 1. Ci\j agora significa todos os CNs exceto fj.

    A figura 5.1 ilustra o clculo neste passo.

    3. Os BNs atualizam as suas mensagens de resposta para os CNs. Isto feito

    de acordo com as seguintes equaes:

    =

    jCijijiijji rPKq

    \'' )0()1()0(

    (5.2)

    e

    =

    jCijijiijji rPKq

    \'' )1()()1( (5.3)

    44

  • figura 5.2: ilustra o clculo de qij(b)

    Neste ponto, os BNs tambm atualizam sua estimao corrente c^i de sua

    varivel ci. Isto feito calculando as probabilidades de ser 0 e 1 e escolhendo

    a maior delas. As equaes usadas so

    =

    Cijjiiiji rPKQ )0()1()0(

    (5.4)

    e

    =

    Cijjiiiji rPKQ )1()()1( (5.5)

    so quase as mesmas usadas para calcular qij(b), mas agora a informao de

    cada CN usada.

    contrrioQQsec iii

    0),0()1(1

    {^ >

    = (5.6)

    Se a palavra-cdigo estimada satisfizer as equaes de verificao de

    paridade o algoritmo encerrado.

    4. Voltar para o passo 2.

    45

  • Este algoritmo de decodificao soft-decision explicado uma variante muito

    simples, utilizada em canais binrios simtricos e pode ser modificado com melhorias de

    performance. Como no o objetivo deste trabalho discutir os algoritmos de decodificao,

    foi citada esta simplificao apenas como ilustrao. Alm da performance, existem

    numerosos problemas de estabilidade devido a muitas multiplicaes de probabilidades. Os

    resultados viro muito prximos de 0 para um comprimento de bloco muito grande. Para

    prevenir isto, possvel mudar para o domnio logartmico e fazer adies ao invs de

    multiplicaes. O resultado um algoritmo mais estvel e uma melhor performance, pois

    adies so mais simples que multiplicaes.

    46

  • Captulo 6 - Simulaes

    Neste captulo, sero mostrados os resultados de simulaes dentre variados

    algoritmos de cdigo LDPC, pois, o objetivo deste trabalho observar a diferena de

    performance de alguns tipos de algoritmos de codificao LDPC. Para isto, foram

    estudados diferentes tipos de algoritmos e escolhidos 5 deles: 3 regulares e 2 irregulares,

    que foram explicados no captulo anterior. Os algoritmos foram escolhidos para mostrar a

    evoluo dos tipos de cdigos LDPC sugeridos ao longo do tempo. Seriam os algoritmos

    regulares: o introduzido pelo Gallager [4] na dcada de 60, o apresentado pelo Makay e

    Neal [7] nos anos 90 (o nmero VI, comentado no captulo anterior) e o construdo atravs

    do algoritmo PEG; e os irregulares: o 2A apresentado por Makay e Neal [7] e o PEG

    irregular.

    Para poder visualizar a diferena de desempenho, todos os cdigos foram

    introduzidos em um canal RAGB e decodificados com o mesmo algoritmo iterativo SP

    (tambm apresentado no captulo anterior), pois um dos mais utilizados atualmente. Para

    a decodificao, foram utilizadas 20 iteraes, por que se verificou que o desempenho

    pouco se altera em quantidades acima disso. Alm disso, foram utilizados 4 tamanhos de

    matrizes H para verificar o impacto no desempenho de cada cdigo. Os tamanhos

    escolhidos so: 48x96, 252x504, 504x1008 e 1008x2016.

    O primeiro grfico apresentado com as comparaes de performance dos cdigos

    com a matriz de tamanho 48x96.

    A partir dos resultados, pode-se observar que os algoritmos regulares atingiram

    melhor performance em comparao aos cdigos irregulares. Conforme foi citado em

    captulo anterior, os cdigos regulares funcionam melhor que os irregulares em blocos

    curtos por apresentarem, em geral, ciclos mais longos e distncia mnima maior. Alm

    disso, percebe-se que o cdigo PEG regular mostrou uma superioridade sobre os demais

    cdigos tambm regulares, pois a matriz de paridade construda evitando ciclos de

    tamanho 4. Os demais cdigos regulares, o de Gallager e Mackay, apresentam ciclos

    curtos, pois no houve a preocupao de elimin-los.

    47

  • Por outro lado, o cdigo PEG irregular, apesar de tambm ter sido construdo

    evitando ciclos curtos, no obteve performance melhor que os regulares de Gallager e

    Mackay, provavelmente devido ao grau de densidade elevado para o tamanho da matriz.

    Por ltimo, o cdigo de Mackay irregular que foi a pior performance, por que, assim como

    seu cdigo regular, no foram eliminados os ciclos curtos. Fora isso, Mackay, quando

    introduziu os cdigos irregulares, no apresentou uma forma tima de construo da matriz,

    chegando a melhor resposta de forma emprica, realizando simulaes de diversas matrizes.

    Grfico 6.1 Simulaes com matrizes de tamanho 48x96.

    Nos cdigos de tamanho 252x504, novamente o de melhor performance foi o PEG.

    Percebe-se que os cdigos regulares para este tamanho de matriz apresentam superioridade

    em relao aos irregulares. No caso do PEG irregular, a performance fica bem prxima dos

    cdigos regulares de Gallager e de Mackay, sendo superior quando estes ltimos

    apresentam ciclo de tamanho 4. Mais uma vez, os cdigos irregulares de Mackay foram os

    piores, confirmando o argumento de que a forma de construo da matriz H tem bastante

    48

  • importncia para seu desempenho, sendo ainda reforado pelo fato da eliminao dos ciclos

    de tamanho 4 do cdigo, que praticamente no influencia no resultado.

    Grfico 6.2 Simulaes com matrizes de tamanho 252x504.

    Em seguida, os cdigos de 504x1008, que tiveram os resultados semelhantes aos

    apresentados anteriormente (tamanho 252x504). Observa-se que, para este tamanho de

    matriz, a regularidade dos cdigos ainda apresenta superioridade sobre os irregulares. De

    qualquer forma, o cdigo de PEG irregular apresenta uma melhora significativa em

    comparao aos tamanhos de matrizes anteriores. Isto mostra que, aumentando-se o

    tamanho do bloco de informao, os cdigos irregulares tendem a ser mais vantajosos do

    que os regulares.

    49

  • Grfico 6.3 Simulaes com matrizes de tamanho 504x1008.

    Por ltimo, os cdigos maiores, de tamanho 1008x2016, que apresentaram uma

    peculiaridade: os algoritmos regulares no funcionam satisfatoriamente. Os trs algoritmos

    obtiveram uma degradao muito grande se comparados com os tamanhos de matrizes

    anteriores. Por outro lado, os algoritmos irregulares melhoraram a performance e foram

    satisfatrios, confirmando a ideia de que, para blocos cada vez mais longos, os cdigos

    irregulares melhoram ainda mais a sua performance por apresentarem os graus dos ns de

    variveis, devido a isso, se conseguir diminuir a distncia entre o limiar de decodificao e

    o limite do canal.

    50

  • Grfico 6.4 Simulaes com matrizes de tamanho 1008x2016.

    51

  • Captulo 7 - Concluses

    A motivao deste trabalho foi estudar um dos cdigos corretores de erro mais

    utilizados atualmente, o LDPC, que, apesar de apresentado desde a dcada de 60, somente

    passou a ser largamente utilizado depois dos anos 90.

    Dentro deste tema, por haver uma variedade de assuntos, aplicaes e tipos de

    cdigos LDPCs apresentados ao longo dos anos, o trabalho se restringiu a realizar uma

    comparao de desempenho entre alguns cdigos regulares e irregulares, a partir da

    observao das taxa de erros de bits recebidos para 4 diferentes tamanhos de matrizes.

    Antes das simulaes, realizadas atravs de rotinas implementadas ou adaptadas em

    MatLab, foram apresentadas as teorias de cdigos corretores de erros e de LDPC

    especificamente, alm de citados algoritmos sugeridos por alguns autores, dos quais 5

    foram escolhidos para a comparao.

    Baseado nos resultados mostrados no captulo anterior, pode-se confirmar o que

    havia sido citado na teoria, na qual os cdigos regulares costumam apresentar desempenhos

    melhores em tamanhos menores (distncia mnima maior), mas que, conforme se vai

    aumentando o cdigo, os cdigos irregulares se tornam mais interessantes. Alm disso, vale

    destacar o fato de que na tentativa e erro da construo das matrizes de paridade irregulares

    (destacado por Mackay), possvel se alcanar distribuies de graus cada vez melhores, o

    que passa a ser o desafio para os profissionais que estudam este cdigo.

    52

  • Referncias Bibliogrficas

    [1] C. E. Shannon; A mathematical theory of communication, Bell System Technical

    Journal, v. 27, p. 379-423 e 623-656, Julho e Outubro, 1948.

    [2] S. Haykin; Communications Systems. 4.ed. John Wiley & Sons. EUA, 1994.

    [3] Irving Reed e Solomon Golomb; Polynomial codes over certain finite fields, Joint

    Society of Industrial and Applied Mathematics Journal 8 (1960), no. 2, 300304.

    [4] R. G. Gallager; Low-Density Parity-Check Codes. Tese de PhD, Massachusetts Institute

    of Technology. EUA, 1963.

    [5] R. M. Tanner; A Recursive Approach to Low Complexity Codes. IEEE Transactions on

    Information Theory, vol., IT-27, no. 25. 1981.

    [6] Berrou, A. Glavieux, e P. Thitimajshima; Near Shannon limit error correcting coding

    and decoding: Turbo codes. In Proceedings of the IEEE International Conference on

    Communications, Geneva, Switzerland, May 2003.

    [7] D.J.C. Mackay e R.M. Neal; Near Shannon Limit performance of low density parity

    check codes, Eletronic Letters, v.32, p. 1645-1646, 1996.

    [8] Y. Mao e A. H. Banihashemi; A Heuristic Search for Good Low-Density Parity-Check

    Codes at Short Block Lenghts, IEEE ICC 2001, Filndia, Junho 2001.

    [9] J. A. McGowan e R. C. Williamson; Loop Removal from LDPC Codes, IEEE

    Information Theory Workshop 2003, Paris, 2003.

    [10] C. Berrou, S. Vaton, M. Jzquel e C. Douillard; Computing the Monimum Distance of

    Linear Codes by the Error Impulse Method, IEEE GLOBECOM 02, Taipei, Taiwan,

    Novembro 2002.

    [11] T. Richardson e R. Urbanke; The Capacity of Low-Density Parity-Check Codes Under

    Message-Passing Decoding, IEEE Transactions on Information Theory, vol. 47, n 2,

    pp. 599-618, Fevereiro 2001.

    [12] T. Richardson, M. Shokrollahi e R. Urbanke; Design of Capacity Approaching

    Irregular Low-Density Parity-Check Codes, IEEE Transactions on Information

    Theory, vol. 47, n 2, pp. 619-637, Fevereiro 2001.

    53

  • [13] S. Chung, G.Forney, T. Richardson e R. Urbanke; On the Design of Low-Density

    Parity-Check Codes within 0.0045 dB of the Shannon Limit, IEEE Communications

    Letters, vol. 5, n 2, pp. 58-60, Fevereiro 2001.

    [14] A. Prabhakar e K.R. Narayanan; Pseudorandom Construction of LDPC codes using

    Linear Congruential Sequences, IEEE Transactions on Communications, vol. 50, n 9,

    pp. 1389-1396, Setembro 2002.

    [15] S. Johnson e S. R. Weller; Quasi-cyclic LDPC codes from difference families, 3rd

    Australian Communications Theory Workshop, Canberra, February 4-5, 2002.

    [16] Y. Kou, S. Lin e M. P. C. Fossorier; Low-Density Parity-Check Codes Based on

    Finite Geometries: A Rediscovery and New Results, IEEE Transactions on Information

    Theory, vol. 47, n 7, pp. 2711-2736, Novembro 2001.

    [17] Reed, Irving S.; A Class of Multiple-Error-Correcting Codes and Decoding Scheme,

    MIT Lincoln Laboratory, 1953.

    [18] Golay, M. J. E; Notes on Digital Coding, Proc. IRE 37, 657, 1949.

    54

  • Anexo Cdigos em MatLab utilizados nas simulaes

    - Script de gerao da matriz regular de Gallager:

    function [H_nocycle, H]=gen_ldpc_gallager(rows,dc,ds)

    clear parity_check_aux;%construct H1 matrix for i=1:rows for j=1+dc*(i-1):dc*i parity_check(i,j)=1; endend

    %add Hds submatrixes for k=1:ds-1 for i=rows*k+1:rows*(k+1) for j=1:rows*dc parity_check(i,j)=parity_check(i-rows,j); end

    endend

    %create a auxiliar matrixfor j=1:rows*dc for i=1:rows*ds parity_check_aux(i,j)=parity_check(i,j); endend

    %permute ds-1 lines on matrix Hfor k=1:ds-1 a=randperm(rows*dc); for j=1:rows*dc for i=rows*k+1:rows*(k+1) parity_check(i,j) = parity_check_aux(i,a(j)); end endend

    H=parity_check; for i = 1:rows*ds % Look for pair of row - column for j = (i + 1):rows*ds w = and(parity_check(i, :), parity_check(j, :)); c1 = find(w); lc = length(c1); if lc > 1 % If found, flip one 1 to 0 in the row with less number of 1s if length(find(parity_check(i, :))) < length(find(parity_check(j, :)))

    55

  • % Repeat the process until only one column left for cc = 1:lc - 1 parity_check(j, c1(cc)) = 0; end else for cc = 1:lc - 1 parity_check(i, c1(cc)) = 0; end end % if end % if end % for jend % for i H_nocycle = parity_check;

    save HGal756x1512.mat Hsave HGal756x1512no.mat H_nocycle

    - Script de gerao da matriz irregular:

    function [H] = make_irreg_matrix(N, M, lambda, ro)

    H=zeros(M,N);

    onesInCols=0;onesInRows=0;

    lambdaAux=lambda;roAux=ro;

    for i=1:length(lambda) lambdaAux(2,i) = round(lambda(2,i)*N); onesInCols=onesInCols+lambda(1,i)*lambdaAux(2,i);endfor i=1:length(ro) roAux(2,i) = round(ro(2,i)*M); onesInRows=onesInRows+ro(1,i)*roAux(2,i);

    end

    if onesInCols ~= onesInRows fprintf('The total number of ones in columns and rows are differents\n') onesInCols onesInRows break;else cols = randperm(N); i=1; for j=1:length(lambdaAux) while lambdaAux(2,j) ~= 0

    56

  • cols(2,i)=lambdaAux(1,j); lambdaAux(2,j)=lambdaAux(2,j)-1; i=i+1; end end rows = randperm(M); i=1; for j=1:length(roAux) while roAux(2,j) ~= 0 rows(2,i)=roAux(1,j); roAux(2,j)=roAux(2,j)-1; i=i+1; end end colsAux=cols; rowsAux=rows; count1=0; while (size(colsAux,2) ~= 0 & count1
  • while size(colsAux,2)~=0 x=randperm(size(cols,2)); y=randperm(size(rowsAux,2)); if H(rowsAux(y(1)),x(1)) ~= 1 H(rowsAux(y(1)),x(1))=1; changeCol=0; for j=1:M if (H(j,x(1))==1 & changeCol==0) H(j,x(1))=0; H(j,colsAux(1,1))=1; changeCol=1; colsAux(2,1)=colsAux(2,1)-1; rowsAux(2,y(1))=rowsAux(2,y(1))-1; end end if colsAux(2,1) == 0 colsMem=colsAux; clear colsAux; colsAux(:,1:size(colsMem,2)-1)=colsMem(:,2:size(colsMem,2)); end if rowsAux(2,y(1))==0 rowsMem=rowsAux; clear rowsAux; rowsAux(:,1:y(1)-1)=rowsMem(:,1:y(1)-1); rowsAux(:,y(1):size(rowsMem,2)-1)=rowsMem(:,y(1)+1:size(rows-Mem,2)); end

    end end

    - Script de codificao da matriz de paridade:

    function [c, u, newH] = makedSource(numSource, H, strategy)% Generate parity check vector bases on LDPC matrix H using sparse LU de-composition%% dSource : Binary source (0/1)% H : LDPC matrix% strategy: Strategy for finding the next non-zero diagonal elements% {0} First : First non-zero found by column search% {1} Mincol : Minimum number of non-zeros in later columns% {2} Minprod: Minimum product of:% - Number of non-zeros its column minus 1% - Number of non-zeros its row minus 1% % c : Check bits %%% Copyright Bagawan S. Nugroho, 2007 % http://bsnugroho.googlepages.com

    % Get the matric dimension

    58

  • [M, N] = size(H);% Set a new matrix F for LU decompositionF = H;% LU matricesL = zeros(M, N - M);U = zeros(M, N - M);

    % Re-order the M x (N - M) submatrixfor i = 1:M if i == 1000 i1=i end if i == 2000 i1=i end % strategy {0 = First; 1 = Mincol; 2 = Minprod} switch strategy % Create diagonally structured matrix using 'First' strategy case {0} % Find non-zero elements (1s) for the diagonal [r, c] = find(F(:, i:end)); % Find non-zero diagonal element candidates rowIndex = find(r == i); % Find the first non-zero column chosenCol = c(rowIndex(1)) + (i - 1); % Create diagonally structured matrix using 'Mincol' strategy case {1} % Find non-zero elements (1s) for the diagonal [r, c] = find(F(:, i:end)); colWeight = sum(F(:, i:end), 1); % Find non-zero diagonal element candidates rowIndex = find(r == i); % Find the minimum column weight [x, ix] = min(colWeight(c(rowIndex))); % Add offset to the chosen row index to match the dimension of the... % original matrix F chosenCol = c(rowIndex(ix)) + (i - 1); % Create diagonally structured matrix using 'Minprod' strategy case {2} % Find non-zero elements (1s) for the diagonal [r, c] = find(F(:, i:end)); colWeight = sum(F(:, i:end), 1) - 1; rowWeight = sum(F(i, :), 2) - 1; % Find non-zero diagonal element candidates rowIndex = find(r == i);

    59

  • % Find the minimum product [x, ix] = min(colWeight(c(rowIndex))*rowWeight); % Add offset to the chosen row index to match the dimension of the... % original matrix F chosenCol = c(rowIndex(ix)) + (i - 1); otherwise fprintf('Please select columns re-ordering strategy!\n'); end % switch

    % Re-ordering columns of both H and F tmp1 = F(:, i); tmp2 = H(:, i); F(:, i) = F(:, chosenCol); H(:, i) = H(:, chosenCol); F(:, chosenCol) = tmp1; H(:, chosenCol) = tmp2; % Fill the LU matrices column by column L(i:end, i) = F(i:end, i); U(1:i, i) = F(1:i, i); % There will be no rows operation at the last row if i < M % Find the later rows with non-zero elements in column i [r2, c2] = find(F((i + 1):end, i)); % Add current row to the later rows which have a 1 in column i F((i + r2), :) = mod(F((i + r2), :) + repmat(F(i, :), length(r2), 1), 2); end % if end % for ic=zeros(M,numSource);u=zeros(M*2,numSource);for i=1:numSource dSource = round(rand(M, 1));

    % Find B.dsource z = mod(H(:, (N - M) + 1:end)*dSource, 2); % Parity check v