Sistemas de Comunicações
CODIFICAÇÃO PARA
Sistema para transmissão de voz
c c A/D A/D A/D . . . CF CC MUX Codificação de Linha Modulador Meio de Transmissão R R Meio de Transmissão Transdutor (Microfone) InterfaceInterface Desmodulador CC-1 DEMUX
CF-1 D/A D/A Transdutor (Auscultador) . . . Sinal de voz Sinal de voz Lacete de assinante Central Lacete de assinante (Cod. Linha)-1 Filtro Igualador CF – Codificador de Fonte CC – Codificador de Canal R – Repetidor Qual a forma mais eficiente de codificar as mensagens geradas pela fonte? Como codificar as mensagens para que o receptor possa detectar/corrigir os erros de transmissão?
Sistemas de Comunicações
Introdução
O ruído, a distorção e eventuais interferências, inerentes ao processo
de transmissão do sinal, podem originar erros no sinal recebido.
A codificação para controlo de erros (CCE), também designada por
codificação de canal, consiste em adicionar informação redundante (i.e., mais “bits”) à mensagem original; essa redundância é utilizada na recepção de modo a possibilitar a detecção e/ou correcção de erros que tenham eventualmente ocorrido durante a transmissão.
A utilização de codificação para controlo de erros conduz a um
aumento da complexidade do sistema, em maior ou menor grau, consoante o tipo de código utilizado.
Áreas de aplicação
Armazenamento de dados
Memórias RAM
Sistemas de armazenamento ópticos e magnéticos (discos rígidos, CD´s, DVD´s)
Comunicações digitais
Comunicações via-satélite
Comunicações móveis celulares
Comunicações de áudio e vídeo (DAB, DVB)
Sistemas de Comunicações
Codificação para
detecção
de erros
O receptor não consegue corrigir os erros, mas pode detectá-los e
efectuar um pedido de retransmissão da informação errada (ARQ - automatic repeat request )
Apropriado para
Canais com pouco atraso
Canais com uma ligação de retorno
Não é apropriado para dados sensíveis ao atraso, e.g., transmissão de voz ou vídeo em tempo real.
Em alguns sistemas, esta forma de controlo de erros é utilizada com o propósito de determinar a qualidade da comunicação (exemplo:
Exemplo –
Códigos de paridade
A cada sequência de k bits da informação a transmitir, é acrescentado
um bit (bit de paridade) de modo a que o número total de bits a 1 na
sequência de k+1 bits resultante seja par (paridade par) ou ímpar (paridade ímpar).
Simples de implementar (operações XOR)
Exemplo (paridade par):
Bits de informação: 00011010
Palavra de código: 000110101
Só detecta erros se estes ocorrerem em número ímpar.
Sistemas de Comunicações
Exemplo –
Códigos de paridade (cont.)
Tabela de codificação para um código de paridade (4,3)
Informação Palavra de código 1 1 1 0 1 1 1 0 1 0 0 1 1 1 0 0 1 0 1 0 0 0 0 0 1 1 1 1 0 0 1 1 0 1 0 1 1 0 0 1 0 1 1 0 1 0 1 0 1 1 0 0 0 0 0 0
Exemplo –
Códigos de paridade no SDH
B1, B2eB3: usados para detecção de erros, ao nível de “blocos”de bits B3 (POH – Cabeçalho de caminho)
Sistemas de Comunicações
Codificação para
correcção
de erros
Possibilita a correcção de erros que tenham ocorrido durante a
transmissão.
É introduzida maior redundância do que na codificação para detecção
de erros; codificação e descodificação são também mais complexas.
Apropriado para dados sensíveis ao atraso e transmissão
uni-direccional.
Dois tipos principais de códigos:
Códigos de blocos
Códigos convolucionais
Exemplo –
Códigos de repetição
Codificação: 0 ==> 000 1 ==> 111
Palavra recebida: 011. Qual foi a palavra transmitida?
cenário A: 111 com erro na 1a. posição
cenario B: 000 com erros na 2a. e 3a. posições
Descodificação: aplica lógica de maioria
Decisão na descodificação: 011 ==> 111
Exemplo de aplicação: envio do bit de controlo de justificação nas
hierarquias TDM-PDH.
Desvantagem: aumento da LB necessária para a transmissão e de um
Sistemas de Comunicações
Relembrar … Estrutura da Trama E2
... ... ... ...
SAT
Transporta 120 canais de 64 kbit/s; fb=8448 kbit/s
50 4 bits 52 4 bits 52 4 bits 51 4 bits 2 bits de serviço 4 bits de controlo de justificação 4 bits de controlo de justificação 4 bits de controlo de justificação 4 bits de justificação MUX E2 E2 E1 E1 E1 E1
Classes de Códigos para Controlo de Erros
Codificação de canal
Correcção
Bloco Convolucionais
Binários Não binários
BCH Convolucionais Binários Códigos Turbo Reed Solomon TCM Hamming Detecção Verificação de paridade CRC Cheksum Bloco
Sistemas de Comunicações
Códigos de blocos
A mensagem a transmitir é dividida em blocos de k símbolos.
Cada bloco de k símbolos da mensagem é codificado num bloco de n
símbolos (palavra de código), com n>k código de blocos (n,k). Os
símbolos adicionais são designados por símbolos de paridade.
Um código de blocos é:
Binário, se os símbolos forem bits
Linear, se a adição (XOR) de quaisquer duas palavras de código válidas,
resulta numa palavra de código válida
Cíclico, se um desvio circular de qualquer palavra de código válida,
resulta numa palavra de código válida
Símbolos da mensagem Símbolos de
paridade
n-k símbolos k símbolos
Códigos de blocos (cont.)
Tipicamente é utilizada a notação vectorial,
Mensagem m = (m1 m2….mk)
Palavra de código c = (c1 c2……..cn)
A redundância introduzida pelo código é quantificada pela
taxa do código (code rate)
Taxa do código = k/n
i.e., quanto maior for a redundância, menor é a taxa do código (mas maior é o número de erros que podem ser detectados ou corrigidos)
Para um código de blocos (7,4): • Comprimento da mensagem k = 4
• Comprimento da palavra de código n = 7
• Taxa do código = 4/7
Sistemas de Comunicações
Distância de Hamming
A distância de Hamming entre duas palavras de código, é o número de
diferenças entre bits correspondentes.
A distância de Hamming d(000, 011) é 2 pois 000 011 = 011 (dois 1´s)
A distância de Hamming d(10101, 11110) é 3 pois 10101 11110 = 01011 (três 1´s)
A distância de Hamming mínima de um código,
d
min,
é a maispequena distância de Hamming entre todos os pares de palavras do código.
Exemplo: código (5,2)
Código (5,2)
Mensagem Palavra de código 00 11 01 10 00000 01011 10101 11110
d
min= 3
Sistemas de Comunicações
Número de Erros
Detectáveis
É possível detectar qualquer situação de 1 a s erros desde que a distância de Hamming mínima de um código de blocos seja:
d
min= s + 1
Número de Erros
Corrigíveis
É possível corrigir qualquer situação de 1 a t erros desde que a distância de Hamming mínima de um código de blocos seja:
d
min= 2t + 1
(É possível efectuar-se a correcção em algumas situações com mais de t erros, mas não todas.)
Sistemas de Comunicações
Exemplo: código (7,4)
No. Mensagem Código No. Mensagem Código
0
0000
0000000
8
0001
1010001
1
1000
1101000
9
1001
0111001
2
0100
0110100
10
0101
1100101
3
1100
1011100
11
1101
0001101
4
0010
1110010
12
0011
0100011
5
1010
0011010
13
1011
1001011
6
0110
1000110
14
0111
0010111
7
1110
0101110
15
1111
1111111
Exemplo: código (7,4) (cont.)
t =1 dmin = 3 0000000 1101000 0110100 1011100 1110010 0011010 1000110 0101110 1010001 0111001 1100101 0001101 0100011 1001011 0010111 1111111 0000001 1101001 0110101 1011101 1110011 0011011 1000111 0101111 1010000 0111000 1100100 0001100 0100010 1001010 0010110 1111110 0000010 1101010 0110110 1011110 1110000 0011000 1000100 0101100 1010011 0111011 1100111 0001111 0100001 1001001 0010101 1111101 0000100 1101100 0110000 1011000 1110110 0011110 1000010 0101010 1010101 0111101 1100001 0001001 0100111 1001111 0010011 1111011 0001000 1100000 0111100 1010100 1111010 0010010 1001110 0100110 1011001 0`10001 1101101 0000101 0101011 1000011 0011111 1110111 0010000 1111000 0100100 1001100 1100010 0001010 1010110 0111110 1000001 0101001 1110101 0011101 0110011 1011011 0000111 1101111 0100000 1001000 0010100 1111100 1010010 0111010 1100110 0001110 1110001 0011001 1000101 0101101 0000011 1101011 0110111 1011111 1000000 0101000 1110100 0011100 0110010 1011010 0000110 1101110 0010001 1111001 0100101 1001101 1100011 0001011 1010111 0111111Todas as palavras de 7 bits
Palavras de código
“Território” de 0000000
Sistemas de Comunicações
Limite de Hamming
Num código (n,k) existem 2kpalavras de código distintas (as que se
podem transmitir), sendo no entanto possível receber 2n palavras
distintas (todas as que se podem formar com n bits)
Para se poderem corrigir até t erros, a distância mínima do código
deve ser 2t + 1
O número total de palavras existentes em cada esfera, incluíndo a
palavra de código no seu centro, é
(i é o número de bits em que uma dada palavra difere da palavra de código)
O número total de sequências de n bits que deverá existir para que
possam ser corrigidos até t erros, é:
1 0 1
t i t i i n i n
t i ki
n
0 2Limite de Hamming (cont.)
Mas o número total de sequências é 2n , pelo que:
Um código que verifica a igualdade é designado por código perfeito
(mas isto não significa ser o melhor!)
O limite de Hamming é uma condição necessária (mas não suficiente) para a existência de um código (n,k) com a capacidade para corrigir t erros ) ( 0 0 2 2 2 n k t i n t i k
i
n
i
n
Limite de Hamming No. de bits redundantesSistemas de Comunicações
Exemplo
Questão: Será possível construir um código (10,7) com capacidade para corrigir todas as situações de 1 erro?
R: Não é possível. 3
2
11
10
1
1
10
0
10
Limite de Gilbert
O limite de Hamming impõe um limite inferior ao número de bits redundantes (n-k) necessários para que um código de blocos linear (n,k) consiga corrigir t erros.
O limite de Gilbert, indica um limite superior do número de bits redundantes necessários para se conseguir corrigir t erros.
) ( 2 0 2 n k t i
i
n
Limite de GilbertSistemas de Comunicações
Questões a resolver no processo de
codificação
Como seleccionar as 2k palavras de código a partir das 2n sequências
possíveis, de modo a garantir a maior distância mínima para o código resultante?
Exemplo: Como obter as 16 palavras do código (7,4) representado no
slide 17?
Será necessário armazenar toda a tabela de codificação ?
Necessário processos eficientes de codificação e de descodificação
Sistemas de Comunicações
Exemplos
Olivais * Lisboa
Miquelina Pereira Oliveira
Asdrúbal Oliveira * Pancrácia Pereira Oliveira
S. Sebastião da Pedreira * Lisboa
Classes de Códigos para Controlo de Erros
Codificação de canal
Correcção
Bloco Convolucionais
Binários Não binários
BCH Convolucionais Binários Códigos Turbo Reed Solomon TCM Hamming Detecção Verificação de paridade CRC Cheksum Bloco
Sistemas de Comunicações
Representação de sequências binárias
através de polinómios
Uma sequência de bits pode ser representada como um polinómio.
O bit mais à direita (LSB) representa o termo de expoente 0; o bit
seguinte representa o termo de expoente 1, etc.
Se um bit tiver valor 0, o termo correspondente do polinómio é
Códigos Cíclicos
( Cyclic redundancy check - CRC)
Seja M(x) o polinómio correspondente à mensagem, e G(x) um polinómio conhecido pelo codificador e pelo descodificador (polinómio gerador).
Exemplo: m=(1101011011) M(x)=x9+ x8 + x6 + x4 + x3 + x + 1
G(x) = x4 + x + 1
Nos códigos CRC, os bits redundantes são determinados de modo a que a representação em polinómio da palavra de código resultante - T(x) - seja divisível pelo polinómio gerador – G(x).
No exemplo anterior: c=(11010110111110)
bits redundantes
A detecção dos erros é feita pelo receptor dividindo a palavra recebida pelo polinómio gerador:
Sistemas de Comunicações
Algoritmo de geração dos códigos CRC
1) Seja M(x) a mensagem a transmitir e G(x), o polinómio gerador (de
grau m).
2) Obter M(x). xm (corresponde a acrescentar m bits à direita da
mensagem).
3) Efectuar a divisão (módulo 2) de M(x). xm por G(x).
Exemplo
1) m=(1101011011) M(x)=x9+ x8 + x6 + x4 + x3 + x + 1 G(x) = x4 + x + 1 grau 4 2) M(x). x4 → 1101011011 0000 3) T(x) = M(x). x4 p(x) → c=(11010110111110) 1 1 0 1 0 1 1 0 1 1 0 0 0 0 1 0 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1 0 1 0 0 1 0 0 1 1 1 0 0 1 1 0 0 0 0 0 1 0 1 1 0 1 0 0 1 1 0 0 1 0 1 0 0 1 0 0 1 1 0 0 1 1 1 0 p(x) M(x). x4 G(x)Sistemas de Comunicações
Capacidade de detecção de erros
Os erros podem ser representados como uma sequência binária em que
o nível lógico 1 indica a ocorrência de um erro.
Exemplo: sequência de bits enviada c = 1 1 0 1 0 1 1 0 1 1 1 1 1 0
sequência de bits recebida r = 1 1 1 1 0 1 1 0 1 1 0 1 1 0 sequência de erro e = 0 0 1 0 0 0 0 0 0 0 1 0 0 0
r = c
e
A sequência de erros também pode ser representada na forma
polinomial – E(x)
Os erros não são detectáveis se E(x) for divisível por G(x)
Demonstração: Tr (x) = T(x) E(x) (sequência recebida com erros) Tr (x) / G(x) = [T(x) E(x)] / G(x) =
= [T(x) / G(x)] [E(x) / G(x)]
Exemplo
Quais dos seguintes polinómios geradores garantem a detecção de erros únicos?
a) g(x)=x+1 b) g(x)= x3 c) g(x)=1
Resolução: A ocorrência de um erro único pode ser representada pelo polinómio xi em que i indica a posição do erro.
a) Como xi nunca pode ser divisível por x+1, garante-se a
detecção de qualquer situação de erros únicos
b) Se i 3, xié divisível por g(x); só é possível detectar erros nas
posições 0, 1 ou 2.
c) Todos os valores de i tornam xi divisível por g(x)=1, não
Sistemas de Comunicações
Polinómios Geradores Normalizados
(standards internacionais)
Classes de Códigos para Controlo de Erros
Codificação de canal
Correcção
Bloco Convolucionais
Binários Não binários
BCH Convolucionais Binários Códigos Turbo Reed Solomon TCM Hamming Detecção Verificação de paridade CRC Cheksum Bloco
Sistemas de Comunicações
Cheksum
Suponha-se que se pretende transmitir uma sequência de 5 números, cada um representado com 4 bits, enviando-se também o resultado da sua adição. Como exemplo, se a sequência de números for (7, 11, 12, 0, 6), envia-se (7, 11, 12, 0, 6, 36), onde 36 é o resultado da soma dos números. O receptor efectua a mesma adição, e compara os resultados; se coincidirem assume que não ocorreram erros, aceita os 5 números e descarta a soma.
Para simplificar a tarefa do receptor, em vez de se enviar o resultado da soma
dos números, envia-se o seu simétrico (checksum), i.e., (7,11,12,0,6,-36). Neste
caso, a soma de todos os números incluindo a checksum deve dar 0. Como -36 não pode ser escrito em 4 bits, representa-se o seu complemento para 15 (-36 +
3x15 = 9).
Método de detecção de erros usado por vários protocolos
Exemplo
Neste exemplo a informação é dividida em palavras de 4 bits.
1 1 1 1 0 0 0 0 0 1 1 0
Sistemas de Comunicações
Cheksum -
Codificação
1. A mensagem é dividida em palavras de 16 bits.
2. Somam-se as palavras e transforma-se o resultado numa palavra de 16 bits (wrapped sum).
3. Aplica-se o complemento para um ao resultado, obtendo-se a checksum.
Exemplo
Mensagem: 1000 0110 0101 1110 1010 1100 0110 0000 0111 0001 0010 1010 1000 0001 1011 0101 1000 0110 0101 1110 + 1010 1100 0110 0000 ---1 00---1---1 00---10 ---10---1---1 ---1---1---10 + 1 ---0011 0010 1011 1111 + 0111 0001 0010 1010 ---1010 0011 1110 1001 + 1000 0001 1011 0101 ---1 00---10 0---10---1 ---100---1 ---1---1---10 + 1 ---0010 0101 1001 1111 1101 1010 0110 0000 ChecksumSistemas de Comunicações
Cheksum -
Descodificação
1. A mensagem (incluindo a checksum) é dividida em palavras de 16 bits.
2. Somam-se as palavras e transforma-se o resultado numa palavra de 16 bits (wrapped sum).
3. Aplica-se complemento para um ao resultado.
Notas finais
Existem vários tipos de códigos para correcção ou detecção de erros. A escolha do(s) código(s) a usar, deverá ter em conta:
O tipo de erros esperados (rajadas vs. uniformes)
A possibilidade de se efectuarem retransmissões
A taxa de erros (BER) esperada
A complexidade (custo, atraso) associada aos processos de codificação e descodificação