GABARITO DA OITAVA LISTA DE EXERCÍCIOS DE PTC-3452 - TEORIA DA INFORMAÇÃO E CODIFICAÇÃO Questão Seja uma constelação 8-PSK. Determine as partições possíveis dessa constelação de modo a se gerar um sinal TCM. Para essa geração considere um código convolucional com code rate r=/2 (como na questão 2 da lista anterior). Como se compara a transmissão desse sinal TCM em confronto com o caso não codificado. Considere agora que a parte codificada convolucionalmente não apresenta erros de transmissão (ou que, na sua ocorrência o código convolucional é capaz de corrigi-los). Como se compara a probabilidade de erro de bit (ou símbolo) para o caso codificado e não codificado, com essa hipótese. A partição corresponde a dividir a constelação 8-PSK em duas constelações de 4 símbolos de forma que os símbolos fiquem o mais afastado possível, depois cada um desses dois em outros dois com 2 símbolos cada, com a mesma regra (resultando um conjunto de quatro constelações de dois pontos cada) e finalmente particionar cada um desses 4 conjuntos de símbolos em dois com um símbolo cada um (resultando 8 conjuntos com um símbolo cada). A figura abaio esclarece melhor o descrito acima. Sem codificação um sistema 4-PSK permite transmitir 2 bits a cada símbolo, estes à taa de f o símbolos s. Como se vai usar um código convolucional com r=/2, um bit de entrada transforma-se em dois codificados e assim podemos endereçar 4 constelações distintas (penúltima partição). Um bit adicional, não codificado, permitirá discernir qual dos dois pontos, naquela constelação em particular, está sendo transmitido. Portanto, conservando a banda, transmite-se os mesmos f o símbolos s só que agora a partir de uma constelação 8-PSK e com a mesma potência utilizada nos dois casos (codificado e não). Admitindo então que a codificação convolucional é sem erro (ou que o código é capaz de corrigi-lo) o único erro será devido à constelação PSK final. No caso sem TCM (4-PSK) a distância mínima entre pontos é de 2 R=,44R e no caso TCM (8-PSK) essa distância é de 2R. Assim, o argumento da função Q(.) cresce por um fator 2 =,44. O ganho numérico da BER (Bit Error Rate) dependerá da SNR (Signal to Noise Ratio) de operação, mas a ela diminuirá com esse aumento da SNR. Assim, mantendo-se a banda de transmissão e a potência tem-se um desempenho melhorado, mas às custas de um aumento na compleidade. Vide o arquivo TCM_pjej.pdf, disponibilizado na página da disciplina, para detalhes adicionais. Questão 2 Um esquema usual para correção / detecção de erros é ilustrado na tabela abaio. Os dados de informação (representados na tabela por elementos i) são ordenados segundo uma matriz quadrada de j 2 dígitos (no eemplo abaio representado j=3). A cada linha e coluna acrescentam-se dígitos de redundância p j, totalizando 2j dígitos de verificação de paridade. Assim, em cada linha, e coluna, completa têm-se =, onde denota uma soma mod2 (ou eclusivo). Considere agora o caso j=5.
i i 2 i 3 p 4 i 4 i 5 i 6 p 5 i 7 i 8 i 9 p 6 p p 2 p 3 a) este código é do tipo (n,k) com que eficiência? b) um código de bloco (n,k) poderia corrigir até quantos erros quaisquer? c) mostre claramente como um único erro é corrigido; d) este código é capaz de corrigir / detectar quaisquer dois erros? a) o código apresentado tem 5 2 =25 dígitos de informação e 5 2= dígitos de paridade. Assim é equivalente, no que diz respeito à dimensão apenas, à um código de bloco (35,25) e portanto com eficiência η=25/35=7% b) Se tivéssemos um código de bloco (35,25) ele seria capaz de corrigir até t erros dados pela solução de 2 n-k C n, C n,...c n,t. No caso 2 =24 35595 e o próimo termo é 6545. Assim t=2 erros. c) No código apresentado um único erro é facilmente detectado pois a linha e coluna correspondente apresentarão discrepância (Σ ) e o cruzamento dos dois indicará a posição. Se a discrepância aparecer apenas numa linha (ou coluna) o elemento de paridade daquela linha (ou coluna) é que estará errado. Assim garante-se que erros simples poderão ser sempre corrigidos. d) O código detecta, mas não corrige erros duplos. Para verificar a impossibilidade de correção basta notar que os padrões de erros assinalados por * e ** abaio representados são equivalentes do ponto de vista de paridade. * ** Σ ** * Σ Σ Σ Assim, apesar da identificação das linhas e colunas com erros não se pode afirmar se os erros são provenientes dos dois dígitos assinalados por * ou os dois assinalados por ** Se os dois erros forem numa mesma linha: * * Σ = Σ Σ a identidade da linha é perdida (análogo para colunas). Assim pode-se afirmar que dois erros são sempre detectados mas não podem ser corrigidos. Questão 3 No projeto de códigos corretores de erro se o comprimento do código ou o número de bits de informação não puderem ser achados de forma adequada pode-se reduzir um código para atingir esse objetivo. Assim, dado um código de bloco cíclico e sistemático (n,k) pode-se a partir deste construir um outro código de bloco (n-p, k-p) observando que das 2 k palavras de código originais 2 k-p tem p zeros nas primeiras posições. Esse novo código é ainda sistemático, mas não cíclico, e tem as mesmas propriedades de distância do código original. Assim, por eemplo, dado um código (3,26) a sua redução de três dígitos leva-nos ao código (28,23) com a mesma capacidade de correção anterior. Mostre como se efetua a codificação, e decodificação, desse novo código a partir do polinômio g() original. Em que condições esse código reduzido será cíclico?
A figura abaio ilustra o esquema de redução proposto que consiste em manter apenas as informações que em sua forma original iniciavam com p zeros (em número total de 2 k-p ). Os novos dados, de comprimento k-p, agora sem os p zeros iniciais constituem a nova informação e os (n-p) dígitos da palavra código correspondente (obtida da original pela supressão dos p zeros iniciais, pois o código original era sistemático) constituem o novo código. Evidentemente, as distâncias entre palavras códigos são as mesmas já que apenas zeros foram eliminados para formar as novas palavras código. Assim a capacidade de correção é a mesma do código original. k n p k-p p n-p dados reduzido palavras reduzidas k-p 2 k 2 O processo de codificação é o mesmo, pois para o código original: c()= n-k d()rem( n-k d()/g()) onde: - d() é de grau (k-) ou menor e portanto n-k d() será de grau (n-) ou menor, com seu termo de menor grau de grau (nk); - a segunda parcela é de grau (n-k-) ou menor (determinado pelo grau de g()); - assim as duas parcelas se somam sem ter termos de mesmo grau em comum ("disjuntos"). Já para o código reduzido d() é de grau (k-p-) e pode ser escrito como sendo o d() reduzido acrescido de p termos de maior grau com coeficientes nulos e assim toda construção anterior se mantém. Assim para a codificação escreve-se: c()= n-k d()rem( n-k d()/g()) com d() de grau (k-p-) resultando num polinômio de grau (n-p-), como esperado. Para a decodificação basta observar que originalmente faz-se o cálculo da síndrome por s()=rem(r()/g()). Assim, se os p primeiros dígitos são nulos e não houve erro de transmissão nessas posições a síndrome calculada dessa mesma forma para o polinômio recebido r'(), agora de grau (n-p-), será a mesma. Finalmente, para que o código reduzido seja também um código cíclico g(), que é originalmente um fator de ( n ), deverá ser fator também de ( n-p ). Essa condição é necessária, mas não suficiente, como no próprio código original. Eemplo: código (6,3) obtido de um (7,4) cíclico e sistemático (p=). dado (d i ) palavra código (c i ) 2 3 4 5 6 7 8 9 2 3 4 5
Destacou-se em azul as partes a serem suprimidas. Assim, o código (6,3) resultante é mostrado a seguir: dado (d i ) palavra código (c i ) 2 3 4 5 6 7 O código resultante não é cíclico pois eistem palavras com 3 e com 4 uns e apenas com esses dever-se-ia ter 66 palavras código para o código ser cíclico (quando o número total é 8). Neste caso para ser cíclico o código deveria ter a semente, e mais uma que forneceria então as 6 palavras código restantes por permutação cíclica. Questão 4 Esboce o diagrama de estados e a treliça correspondentes ao código convolucional abaio representado (neste código para cada bit de informação são transmitidos três). in out 2 3 Considere a transmissão de cinco bits de informação seguidos de tantos zeros quantos forem necessários. Qual é a seqüência de bits transmitida? (Vide Questão 4 da Sétima Lista de Eercícios) Questão 5 Deseja-se encontrar o caminho mais rápido para ir de Londres a Viena de barco ou trem. O diagrama a seguir mostra as possibilidades eistentes. Os números indicados são tempos de viagem em horas. Usando o algoritmo de Viterbi, encontre a rota mais rápida entre Londres e Viena. Qual o tempo mínimo de viagem? Repita o problema para determinação da rota mais demorada. Qual o tempo máimo de viagem? Londres Amsterdam Munique Viena 9 9 8 7 2 Paris 8 Bruelas Pelo critério de Viterbi os primeiros nós sobreviventes correspondem às cidades de Munique e Bruelas.
M 9 8* 9 V 27* 28 2 B 7 6* Assim a rota mais rápida entre Londres e Viena terá 27 horas de duração, passando por Paris e Munique. Já para a rota mais demorada, obviamente não se permitindo retornos no diagrama, de forma análoga tem-se: M 9* 8 9 V 28 29* 2 B 7* 6 e esta rota terá uma duração de 29 horas, passando por Amsterdam e Bruelas. Questão 6 Seja uma constelação 6-QAM. Esboce a terceira partição possível dessa constelação com o objetivo de gerar-se um sinal TCM. Para essa partição considere um código convolucional com code rate r=/3 (endereçando assim um dentre oito possíveis constelações). Esboce o diagrama em blocos do sistema TCM correspondente. Qual é a epansão de banda necessária para a transmissão desse sinal TCM em confronto com o caso não codificado. Considere agora que a parte codificada convolucionalmente não apresenta erros de transmissão (ou que na sua ocorrência o código convolucional será capaz de corrigi-los). Como se compara então a probabilidade de erro de símbolo para o caso codificado e não codificado com essa hipótese. Veja a solução da Questão para efeito de comparação. Representa-se abaio a terceira partição solicitada. a d d = 2,828 a O esquema geral é representado na figura abaio.
Esquema geral do TCM (etraído da ref. [3] da ementa da disciplina). k = (a ser codificado com r=/3); n =3 (saída do codificador convolucional) e indicará dos 8 subsets; k 2 = (transmitido direto) e indicará o bit dentro do subset selecionado. Assim, tem-se: Na entrada k k 2 =2 bits; que poderiam ser transmitidos por um 4-QAM e com uma taa de símbolos f ; Na saída n k 2 =3=4; que serão transmitidos com um 6-QAM, na mesma taa de símbolos f ; Assim, não há epansão de banda (pois esta é proporcional à taa de símbolos). Na transmissão original tem-se dois bits de informação por símbolo (4-QAM) e no TCM também, pois bit será codificado e transforma-se em 3 e o outro é enviado diretamente. No 6-QAM inicial a distância mínima entre pontos vizinhos é de =a; na primeira partição é de = 2 a ; na partição seguinte é de 2 =2a e na última 3 = 2 2a. Admitindo então que a codificação convolucional seja sem erro (ou que o código é capaz de corrigi-lo quando houver) o único erro será devido à constelação final (BPSK). No caso sem TCM (constelação com 4 pontos) a distância mínima entre pontos é 2 =2a e no caso TCM (constelação final com 2 pontos) essa distância é de 3 = 2 2a. Assim, o argumento da função Q(.) cresce por um fator 2 =,44. O ganho numérico da BER (Bit Error Rate) dependerá da SNR (Signal to Noise Ratio) de operação, mas a ela diminuirá com esse aumento da SNR. Assim, mantendo-se a banda de transmissão e a potência, tem-se um desempenho melhorado, mas às custas de um aumento na compleidade. Questão 7 Seja um código de repetição (5,). Determine a capacidade de correção deste código. Determine as matrizes G, P e H T correspondentes, indicando sempre as dimensões. Faça uma tabela de decodificação (isto é, síndrome versus erros corrigíveis). Note que, como se trata de um código de repetição simples, a detecção poderia ser realizada simplesmente por decisão de maioria na recepção. Entretanto o problema solicita uma solução matricial. Um código (5,) pode corrigir até 2 erros e é perfeito pois 4 2 5, 5, 5, 2 ( = 6 = C C C = 5 ). n k t 2 C é satisfeito com a igualdade para t=2 De c=d G (de dimensões n, k e k n, no caso específico do problema 5, e 5, respectivamente para c, d e G) pode-se escrever que G=[] e de G=[I P], pois é sistemático, segue-se que P=[] e finalmente de H T P = = I (de dimensões k n, k m e n m, onde m=n-k; no caso específico, 5, 4 e 5 4, respectivamente para G, P e H T ). Agora de s=e H T (de dimensões m, n e n m, no caso específico do problema 4, 5 e 5 4, respectivamente para s, e e H T ) pode-se construir a seguinte tabela: i= n,i
s e s e Onde foram realçados em amarelo os erros simples e em azul os erros duplos corrigíveis, em número de 5 (C 5, ) e (C 5,2 ), respectivamente. Questão 8 Define-se uma matriz de Hadamard como H n H n 2 2 H 2 = e H n = para n=2, 3,... 2 n n H H 2 2 Por eemplo, H = 4. Note que uma linha da matriz tem todos elementos nulos e as demais linhas têm 2 elementos s e dois s e ainda, por construção, uma linha qualquer difere de outra em eatamente 2 posições, neste eemplo. O complemento da matriz H 4 é a matriz H = 4. As linhas destas duas matrizes caracterizam um código de bloco linear, denominado de código de Hadamard, de comprimento 4 e com 8 palavras código, no eemplo dado. Generalize o processo e determine a capacidade de correção efetiva deste tipo de código? Dada a matriz H n 2 e seu complemento tem-se que o número total de palavras código é 2 2 n =2 n, cada uma com comprimento 2 n n, o que permite codificar um símbolo de log2(2 ) =n bits. Trata-se, portanto, de um código de bloco (2 n, n). Como qualquer linha difere das outras em, ao menos, 2 n- posições a capacidade de correção é dada pela solução de 2 n- n 2 2t, isto é, t= 2 2 indica o maior inteiro. onde Por eemplo, no arquivo Walsh_Hadamard.pdf (disponibilizado na página da disciplina) tem-se uma tabela com n=6, isto é, H n 2 =H 64, com os elementos na forma bipolar. Esta tabela, com seu complemento, fornece então 28 (2 n ) palavras código, cada uma com comprimento 64 (2 n ), com uma distância de Hamming entre elas de, no mínimo, 32 posições (2 n- ), que são associáveis à palavras de dados de 7 (n) bits, gerando pois um código de bloco (64,7) com uma capacidade de n 2 correção de t=5 bits (t= 2 2 ). Questão 9 Considere um código BCH (3,6). Determine a capacidade de correção deste código. Seja agora um código entrelaçado (λn, λk) com λ=. Discuta a capacidade de correção do código assim gerado. t Primeiramente nota-se que 2 3-6 =2 5 =32.768 C = C 3, C 3, C 3,2 C 3,3 C 3,4...=34654.4953.465 i= 3,i e portanto, o código BCH (3,6) pode corrigir até t=3 erros. O entrelaçamento consiste em construir uma tabela com linhas e 3 colunas. As linhas correspondem à palavras código e a transmissão é realizada coluna por coluna, seqüencialmente (3 ao todo); trata-se de uma tabela de linhas e 3 colunas que se preenche na horizontal (na geração do código) e se lê (na transmissão) na vertical. Assim, a capacidade máima de correção ocorrerá quando tivermos 3 bits
errados em cada palavra código, o que corresponde a um surto de 3 bits sucessivos na transmissão. Portanto, este código pode corrigir quaisquer 3 surtos de erros com comprimento de até bits e também quaisquer 3 erros em cada palavra código. Questão Esboce o diagrama de treliça correspondente ao código convolucional abaio representado: b i X Y * c (Seja o estado denotado por YX) Neste código para cada bit de informação são transmitidos dois (r=/2). Considere então a transmissão de 6 bits de informação d=[] seguidos de tantos zeros quantos forem necessários. Qual é a seqüência de bits transmitida? Qual é a distância livre (d free ) do código gerado e o ganho de codificação (CG)? Considere agora a recepção, a partir do estado zero, da seqüência de bits r=[]. Qual a palavra código decodificada dentro do critério de máima verossimilhança (decodificador de Viterbi)? Qual o dado decodificado correspondente? Representam-se a seguir o diagrama de estados e a treliça correspondentes. c 2 / / / / / / / / entrada entrada Seguindo qualquer uma das representações a saída correspondente à d=[], entrada dada seguida de dois zeros: c=[]. A distância livre é dada por d free =5 e o ganho de codificação por CG=log(r d free )=log(5/2)=3,98 db. Seja agora a entrada r=[] e a aplicação da decodificação de Viterbi.
in (6) () () () () () Repete-se a treliça novamente destacando a palavra decodificada que indica a correção de dois erros (na primeira e penúltima posição) e que corresponde ao dado d =[] seguido de dois zeros. in (6) () () () () () Paul Jean Etienne Jeszensky 6//27