Universidade da Beira Interior Departamento de Informática Processamento e Comunicação Multimédia Mestrado em Eng. Informática João Caldeira Maio 2008
Tema Códigos Convolucionais: Codificação JC 2007/2008 - PCM - 2
Sumário Codificação com Códigos Convolucionais Distância Livre de um Código Convolucional Codificadores Recursivos Sistemáticos JC 2007/2008 - PCM - 3
Codificação com Códigos Convolucionais São códigos que permitem o controlo de erros na transmissão A identificação ou correcção de erros é feita através da adição de bits redundantes Nos códigos lineares de bloco, o codificador espera k bits e gera, a partir desses k bits, uma palavra código de n bits Um codificador convolucional, opera sobre cada bit de entrada e gera a palavra código através desse bit JC 2007/2008 - PCM - 4
Este tipo de códigos possuí memória Os bits codificados dependem não só dos bits de informação (entrada), mas também, da informação armazenada na memória do código JC 2007/2008 - PCM - 5
Diagrama de blocos de um codificador convolucional (n,k) com comprimento de restrição K = N+1 O comprimento de restrição do código (constrain length) (K) Representa a dependência da saída face aos bits de entrada K = N+1 JC 2007/2008 - PCM - 6
Exemplos de codificadores convolucionais k = 2 n = 3 K = 2 (3,2,2) JC 2007/2008 - PCM - 7
Exemplos de codificadores convolucionais (cont.) y = xg(d) y (0) = x + xd + xd 2 y (1) = x + xd 2 G(D) = [1 + D + D 2 1 + D 2 ] JC 2007/2008 - PCM - 8
Exemplos de codificadores convolucionais (cont.) y = xg(d) y (0) = x + xd 2 + xd 3 y (1) = x + xd + xd 3 G(D) = [1 + D 2 + D 3 1 + D + D 3 ] JC 2007/2008 - PCM - 9
Considerando o seguinte codificador y i = x i G(D) y (0) i = x i + x i D + x i D 2 y (1) i = x i + x i D 2 G(D) = [1 + D + D 2 1 + D 2 ] x i y i (0) y i (1) JC 2007/2008 - PCM - 10
Exemplo Considerando a seguinte entrada x = [10011] y i = x i G(D) x = 1 + 0D + 0D 2 + 1D 3 + 1D 4 y i (0) = x i + x i D + x i D 2 y (0) = (1 + D + D 2 )(1 + D 3 + D 4 ) D 5 + D 6 y (1) i = x i + x i D 2 = 1 + D + D 2 + D 3 + D 6 G(D) = [1 + D + D 2 1 + D 2 ] y (1) = (1 + D 2 )(1 + D 3 + D 4 ) x i y (0) i = 1 + D 2 + D 3 + D 4 + y (0) = [1111001] y (1) = [1011111] [11,10,11,11,01,01,11] y i (1) JC 2007/2008 - PCM - 11 y =
Um código convolucional pode ser descrito por uma variedade de métodos dos quais vou destacar: Diagrama de Estados Diagrama de Trellis Diagrama de Árvore JC 2007/2008 - PCM - 12
Diagrama de Estados O número de estados é dado por 2 N, sendo N o número de memórias do codificador Os estados do codificador (bits presentes na memória (N1N2)) são representados por círculos, enquanto que as transições de estado, provocadas por cada novo bit de informação (entrada), são representas pelas setas. Assim em cada uma das transições o parâmetro x/y representa através de x o bit de informação (entrada) e através de y a sequência codificada (saída) JC 2007/2008 - PCM - 13
Diagrama de Estados (cont.) 0/00 x i y (0) i N1 N2 y i (1) 00 0/11 1/11 0/10 01 10 Legenda: Operação XOR em módulo-2 0/01 1/00 1/01 11 1/10 JC 2007/2008 - PCM - 14
Diagrama de Trellis Este tipo de diagrama permite observar em cada instante todas as transições de estado possíveis JC 2007/2008 - PCM - 15
Diagrama de Árvore A árvore de códigos representa todos os possíveis estados que um codificador pode atingir a partir de um estado inicial, bem com as suas saídas 0 1 0 0 N1 N2 JC 2007/2008 - PCM - 16 00 10 00 10 01 00 10 01 11 00 10 11 01 11
Descodificação A descodificação de um código convolucional pode ser feita recorrendo a qualquer uma dos diagramas anteriormente descritos Suponhamos a palavra código y = [11,10,11,11,01,01,11] 0/00 Seq. codificada 11 10 11 11 (...) 00 0/11 0/10 1/11 01 10 (...) 0/01 1/00 11 1/01 Seq. descodificada 1 0 0 1 (...) JC 2007/2008 - PCM - 17 1/10
Outros codificadores convolucionais (exemplo) Considere a seguinte palavra para codificar x = [11,10,11] x (0) = 1+D+D 2 x (1) = 1+D 2 A saída do codificador é: y = [1+D+D 2 1+D 2 ] 1+D 3 D+D 2 +D 3 1+D D+D 2 1+D 2 D = [1+D 5 1+D+D 3 +D 4 +D 5 1+D] y (0) = [100001] y (1) = [110111] y (2) = [110000] =>y = [111,011,000,010,010,110] JC 2007/2008 - PCM - 18
Distância Livre de um Código Convolucional A distância livre de um código convolucional é dada por: onde W(Y) representa o peso de uma sequência Y transmitida A distância livre de um código convolucional, pode ser calculada: Considerando a representação de Trellis Supondo todas as mensagens que iniciem e terminem no mesmo estado (exemplo 00) Calculando todos os possíveis caminhos que nos levem a esse estado A distância livre corresponde ao peso do caminho mais baixo, JC 2007/2008 - PCM - 19
Distância Livre de um Código Convolucional Exemplo Peso = 5 Peso = 6 d f = min{5,6} = 5 JC 2007/2008 - PCM - 20
Codificadores Recursivos Sistemáticos Codificadores Sistemáticos Nos exemplos anteriores, os codificadores convolucionais apresentados são não sistemáticos, isto é, a palavra codificada não corresponde à palavra original acrescida de bits de paridade Os codificadores convolucionais podem também ser sistemáticos, como o exemplo que se segue: y i = x i G(D) y i (0) = x i y i (1) = x i + x i D + x i D 3 G(D) = [1 1+D+D 3 ] JC 2007/2008 - PCM - 21
Codificadores Recursivos Sistemáticos (cont.) Codificadores Recursivos Sistemáticos x i y (0) i y i (1) G(D) = [1+D+D 2 1+D 2 ] = (1+D+D 2 ) 1 1+D 2 1+D+D 2 isto implica que G (D) = 1 1+D 2 1+D+D 2 também é matriz geradora. JC 2007/2008 - PCM - 22
Codificadores Recursivos Sistemáticos (cont.) Codificadores Recursivos Sistemáticos (cont.) Esta matriz, G (D), corresponde exactamente ao codificador recursivo seguinte: x i y i (0) y i (1) JC 2007/2008 - PCM - 23
Bibliografia Silva, Eduardo A. B., Mendonça, Gelson V., Códigos de Controle de Erro Sweeney, Peter, Error Control Coding From Theory to Practice JC 2007/2008 - PCM - 24
Universidade da Beira Interior Departamento de Informática Questões? Processamento e Comunicação Multimédia João Caldeira Maio 2008