elecomunicações II Codificação - Detecção e correcção de erros o Quando existe um canal de comunicação bidireccional, o receptor poderá requerer a retransmissão da informação que continha erros. o Esta estratégia é chamada de Automatic Repeat Request (ARQ), sendo bastante utilizada em redes de computadores. o Quando a retransmissão é impossível ou impraticável, o controlo de erros deverá utilizar um código corrector de erros. Esta estratégia é denoada Foward Error Correction (FEC). o Uma solução para a transmissão de informação sobre um canal ruidoso é o emprego de repetição. Cada bit da mensagem é representado por uma palavra de código com n bits iguais. o Se a probabilidade de erro for P e =a, se os erros de transmissão ocorrerem de um modo aleatório e independe, a probabilidade de ocorrência de i erros em n bits será: P onde n i n i i n i ( i, n) = α ( α ) α seα << n = i i! n! ( n i) n =! ( n )...( n + i ) o O facto de se considerar a<< pode não ser suficiente. Embora a=, satisfaça a condição, é uma probabilidade de erro inaceitável para sistemas de comunicação digital. i!
elecomunicações II Codificação - Detecção e correcção de erros (cont.) o Códigos de repetição e de paridade Código de tripla repetição Num código com tripla repetição com as palavras de código e, todas as outras palavras recebidas, como ou, indicam claramente a presença de erros. Para a detecção de erros sem correcção, qualquer palavra diferente de ou corresponde a um erro. Os erros simples e duplos numa palavra são detectados, mas os erros triplos resultam em erros não detectados com probabilidade: P we = P 3 ( 3,3) = α Os erros simples são correctamente corrigidos, mas os erros duplos e triplos resultam em erros com probabilidade: P we = probabilidade de ocorrência de 3 erros, a 3 + probabilidade de ocorrência de erros, existem 3 hipóteses, 3a (-a) P we = α 3 + 3 ( α ) = 3α 3α α P e =a é a probabilidade de erro sem codificação, no entanto, este ganho é obtido com a redução a /3 do ritmo de transmissão.
elecomunicações II Codificação - 3 Detecção e correcção de erros (cont.) o Códigos de repetição e de paridade (cont.) Paridade A paridade de uma palavra binária é par quando existe um número par de s, caso contrário terá paridade ímpar. A palavra de código é constituída por n- bits de informação e um bit escolhido de modo que a paridade das palavras de código seja a mesma. Para n=3 e paridade par as palavras válidas são,,, sendo o último bit o bit de paridade. A correcção de erros neste caso não é possível. Os erros simples, triplos e com um número ímpar de erros são detectados enquanto os erros duplos passam despercebidos. Se a<<, a probabilidade de ocorrência de um erro duplo é muito maior do que num erro quadruplo. A probabilidade de haver um erro não detectado numa palavra de código com paridade com n bits será então: P we P (, n) ( n ) n α
elecomunicações II Codificação - 4 Detecção e correcção de erros (cont.) o Códigos de repetição e de paridade (cont.) Paridade (cont.) Um outro método que permite correcção de erros é colocar k bits numa tabela quadrada onde são utilizados k bits de paridade. m m m 3 c m 4 m 5 m 6 c m 7 m 8 m 9 c 3 c 4 c 5 c 6 Um erro de transmissão num bit faz com que a paridade falhe numa coluna e numa linha, estando o erro na intersecção. Com este método podem ser detectados e corrigidos erros simples e detectados erros duplos.
elecomunicações II Codificação - 5 Detecção e correcção de erros (cont.) o Distância de Hamg A distância de Hamg ( X Y ) d, entre duas palavras X e Y é definida como o número de diferentes elementos. = Y = então d ( X, Y ) =. Se X ( ) e ( ) A distância mínima d de um código é a mais pequena distância de Hamg entre duas palavras de código válidas. A detecção de erros é sempre possível quando o número de erros de transmissão numa palavra de código é menor que d. Se número de erros é maior ou igual a d, a palavra com erros pode corresponder a palavras válidas e os erros não são detectados. Detecta até l erros por palavra d l + Corrige até t erros por palavra d t + Corrige até t erros e detecta l>t erros por palavra d t + l + A tripla repetição tem d = 3, ou seja pode detectar l 3 = erros por palavra e pode corrigir t ( 3 ) = erros por palavra. O desempenho de um código depende do número de bits adicionados à palavra de código para controlo de erros. Um código de bloco (n,k) é constituído por k bits de informação e n-k bits de paridade A distância mínima deste código é limitada por n k d. + A eficiência do código (n,k) é R c k n
elecomunicações II Codificação - 6 Códigos de bloco lineares o Representação matricial de códigos de bloco Um código de bloco (n,k) consiste em palavras de n bits e k bits de informação. Como existem k mensagens com k bits e n palavras com n bits, a estratégia da codificação de bloco é escolher as k palavras de modo a que a distância mínima seja a maior possível. O código terá de ter também uma estrutura que facilite o processo de codificação e descodificação. Consideremos uma palavra de código representada por: X = ( x x... ) onde x, x,..., x n são digitos binários. x n Um código é linear se incluir o vector zero e se a soma de duas palavras de código produz outra palavra de código: X + Z = ( x z x z... ) x n z n O peso do vector X, w(x), é o número de elementos diferentes de zero de X. A distância de Hamg de dois vectores de código X e Z será: ( X, Z ) = w( X Z ) d +
elecomunicações II Codificação - 7 o Representação matricial de códigos de bloco (cont.) A distância mínima é igual ao peso mais baixo excluindo o vector zero: d [ w( X )] (... ) = X Um código sistemático consiste em palavras onde os primeiros ou últimos k elementos são idênticos aos bits da mensagem. Os restantes n-k elementos são bits de verificação X = ( m m m c c... ) onde q=n-k.... c k q Podemos escrever os vectores de código na forma: X = ( M C) onde M é o vector da mensagem de k bits e C é o vector de q bits de verificação. Um código de bloco sistemático (n,k) pode ser obtido através da multiplicação de matrizes. X = MG
elecomunicações II Codificação - 8 o Representação matricial de códigos de bloco (cont.) G é a matriz geradora k n com a estrutura: [ I P] G k onde I k é uma matriz identidade k k e P uma matriz k q de digitos binários. p p P = M pk p p p M k......... p p p q q M kq A matriz identidade G reproduz o vector mensagem, enquanto a matriz P gera o vector de verificação C. C = MP A multiplicação binária da matriz segue as regras da adição em módulo : c j = m p m p... m j j k p kj para j=,,...,q. Cada um dos elementos destas matrizes terá o valor ou.
elecomunicações II Codificação - 9 o Códigos Hamg Um código Hamg é um código de bloco linear (n,k) com q 3 bits de verificação e n = q k = n q A eficiência do código será: R c k n q = = n n = q Independentemente de q a distância mínima é d = 3. O código pode ser utilizado para correcção de erros simples ou detecção de erros duplos. Para a construção de um código Hamg sistemático fazemos com que as k linhas da matriz P que consistem em q bits tenham dois ou mais s arranjados de qualquer modo.
Codificação - elecomunicações II o Códigos Hamg (cont.) exemplo Consideremos um código Hamg sistemático com q=3, n= 3 -=7 e k=7-3=4 com matriz geradora: G = Com ( m m m ) c c c M = obtemos: = m m = m = m m m 3 4 m 3 3 m m m 4 4 M C w(x) M C w(x) 3 3 4 3 4 4 3 4 3 3 4 3 4 4 7 O peso mais baixo não zero é 3 confirmando que d =3.
Codificação - elecomunicações II o Síndroma da descodificação Se Y for o vector recebido quando é transmitido o vector X, qualquer erro de transmissão resulta em X Y. Um método para a detecção de erros é a comparação de Y com todos os vectores de código. Este método implica k comparações. Associado a qualquer código de bloco (n,k) sistemático e linear existe uma matriz H q n denoada matriz de verificação de paridade: H P = I q onde H é a matriz transposta de H e I q é uma matriz identidade qxq. = (... ) XH desde que X pertença ao conjunto dos vectores de código válidos. Se houver um erro de transmissão o resultado tem pelo menos um valor diferente de zero. A matriz síndroma S é definida como S = YH Se S for igual a zero, não houve erros de transmissão ou então Y é igual a um outro vector de código e como tal o erro é não é detectável.
Codificação - elecomunicações II o Síndroma da descodificação (cont.) Se houve um erro de transmissão Y = X + E e X = Y + E Substituindo Y = X + E em S = YH ( X + E) H = XH + EH EH S = = A matriz síndroma S depende do erro e não do vector de código transmitido. Exemplo H P = P = = I q Consideremos o código Hamg do exemplo anterior. Se houver um erro no primeiro bit, = S =. E [ ], [ ] E S Se existir um erro duplo com = [ ] S = YH = EH = [ ], a tabela de síndroma E, assume que houve um erro simples da forma E =. [ ] A palavra descodificada Y+E contém três erros, dois erros de transmissão e um erro introduzido pelo sistema de correcção de erros.
Codificação - 3 elecomunicações II o Códigos cíclicos Um código para um sistema FEC (Foward Error Correction) deverá ser capaz de corrigir t erros por palavra. Deverá ter também uma eficiência de código razoável. Os códigos cíclicos são uma subclasse dos códigos de bloco lineares com uma estrutura cíclica que levam a uma implementação mais prática. Consideremos um vector de código com n bits X = ( x x... x x ) n n Se X for ligado a um registo de deslocamento com realimentação: X ' = X '' = ( x ) x... x x x n n 3 n ( x x... x x x x ) n n 3 Esta propriedade cíclica pode ser tratada associando ao vector de código o polinómio X n n n n ( p) = xn p + xn p +... + x p + x A potência de p assinala a posição dos bits na palavra de código.
Codificação - 4 elecomunicações II o Códigos cíclicos (cont.) Um código (n,k) é definido por um polinómio gerador da forma G q q = x + g x + + g x q... + onde q=n-k. Os coeficientes são calculados de modo que G(p) é um factor de x n +. Cada palavra de código corresponde ao produto polinomial X = Q G M onde Q M (x) representa um bloco de k bits de informação. Para um código ser sistemático X q = p M + C Igualando estas duas expressões obtemos: Q q G = x M C M + q x M G = Q M C + G Esta expressão indica que C(x) é igual ao resto da divisão de x q M(x) por G(x). C q x M = resto G ( ) x
Codificação - 5 elecomunicações II o Códigos cíclicos (cont.) A operação de divisão é facilmente implementada por registos de deslocamento. Após k ciclos o registo de deslocamento contém os q bits de verificação. Para um vector Y a matriz síndroma é deterada por: S Y = resto G ( ) x Se Y(x) for um código polinomial válido, então a matriz síndroma será zero.
Codificação - 6 elecomunicações II o Códigos cíclicos (cont.) Exemplo Consideremos o código Hamg (7,4) 3 gerado por G = x + x +. Se a mensagem for M = ( ), o polinómio da mensagem será: M x q M = x 3 + x 3 3 6 5 = x ( x + x ) = x + x dividindo por G(x) x 6 + x 5 + + + + + x 6 + x 6 + x 6 + + x 4 + x 3 x 3 + x + x + + x 5 + x 4 + x 5 + + x 3 + x + x 4 + + x x 4 + + x + x + + + x + O polinómio de código completo será 3 6 5 = x M + C = x + x x X + o que corresponde à palavra de código X = ( )