codificação de dados

13
1. Codificação de dados Nos sistemas de comunicação, em particular nos sistemas de computadores é necessário representar a informação digital no meio físico com um padrão comum ao transmissor e receptor para que os dados transmitidos possam ser recuperados no receptor. Técnicas de codificação de dados tem sido implementadas com este propósito. A codificação de dados define a forma na qual o sinal elétrico representará os dados nos cabos. A seguir são apresentadas algumas técnicas de codificação de dados dentre elas a codificação de linha e a codificação de bloco. Algumas destas técnicas de codificação de linha e codificação de bloco tem sido implementadas nos padrões Ethernet como é o caso da codificação Manschester, NRZI e a codificação 4B/5B. Figura 1: Codificação de dados 1.1 Codificação de linha Existem várias técnicas de codificação de linha que podem ser classificadas em: unipolar, polar e bipolar. O trabalho focar- se-á mais na codificação polar visto que esta tem sido implementada nos padrões Ethernet. A diferença entre a

Upload: ivandro-pinto-ferreira

Post on 24-Jan-2016

7 views

Category:

Documents


0 download

DESCRIPTION

Codigos

TRANSCRIPT

Page 1: Codificação de Dados

1. Codificação de dados

Nos sistemas de comunicação, em particular nos sistemas de computadores é necessário

representar a informação digital no meio físico com um padrão comum ao transmissor e

receptor para que os dados transmitidos possam ser recuperados no receptor. Técnicas de

codificação de dados tem sido implementadas com este propósito. A codificação de dados

define a forma na qual o sinal elétrico representará os dados nos cabos. A seguir são

apresentadas algumas técnicas de codificação de dados dentre elas a codificação de linha e a

codificação de bloco. Algumas destas técnicas de codificação de linha e codificação de bloco

tem sido implementadas nos padrões Ethernet como é o caso da codificação Manschester,

NRZI e a codificação 4B/5B.

Figura 1: Codificação de dados

1.1 Codificação de linha

Existem várias técnicas de codificação de linha que podem ser classificadas em: unipolar,

polar e bipolar. O trabalho focar-se-á mais na codificação polar visto que esta tem sido

implementada nos padrões Ethernet. A diferença entre a codificação unipolar, polar e bipolar

reside no número de níveis de tensão usados para a representação dos dados.

1.1.1 Codificação unipolar

A codificação unipolar recebeu esse nome porque utiliza uma polaridade apenas. O sinal da

polaridade pode ser atribuído a qualquer um dos dois estados binários, mas geralmente é

deixado para o nível 1. Neste caso, o outro estado (nível 0) é representado por um zero de

tensão. A codificação unipolar possui pelo menos dois problemas sérios que a tornam

indesejável: a componente DC residual e os problemas de sincronização. O valor medio do

sinal codificado de modo unipolar fica claramente deslocado do referencial de 0V. Isto

Page 2: Codificação de Dados

origina uma componente DC na linha. O problema de sincronização é outro obstáculo desse

método de codificação. Se a sequência de dados a serem representados contem longas filas de

1s e 0s, não há transições do sinal durante esse período para que o receptor possa ser alertado

sobre possíveis problemas de sincronização.

1.1.2 Codificação polar

A codificação polar utiliza dois níveis de tensão, um positivo e outro negativo, para

representar os dados. Assim, através de dois níveis de tensão a maioria dos métodos de

codificação polar torna possível resolver o problema imediato do nível DC na linha

encontrado na codificação anterior. Existem muitas variações de esquema de codificação

polar sendo mais populares os apresentados a seguir: Non-Return to Zero (NRZ), Return to

Zero (RZ), Manhester e Manchester Diferencial.

Non-Return to Zero (NRZ)

Na codificação NRZ, o valor do sinal é sempre positivo ou negativo. Existem 2 formas de

codificação NRZ: NRZ-L e NRZ-I.

No esquema de codificação NRZ-L (NRZ-Level) o nível de sinal depende do bit que ele

deve representar. Uma tensão positiva geralmente representa o bit 0, logo uma tensão

negativa representa o bit 1. Assim, o nível do sinal está ligado ao estado do bit a ser

representado. Isso pode dar origem a um outro problema, pois se os dados transmitidos

contiverem uma cadeia longa de 0s ou 1s, a entrada do receptor será praticamente uma tensão

continua ao longo da sequência de 0s ou 1s. Desse modo, o receptor deve determinar quantos

bits estão sendo enviados confiando unicamente no relógio que ele possui, o qual pode ou não

estar sincronizado com o relógio do transmissor.

Outra possibilidade é a NRZ-I (NRZ-Invert), onde qualquer transição entre níveis de tensão

representa um bit 1. Estas transições devem ocorrer entre os níveis de tensão positivo e

negativo para representar um bit 1. Assim, não é o nível de tensão em si que é utilizado para

representar um bit, mas transições entre níveis representam o bit 1. Nessa codificação um bit

0 é representado pela ausência de transição. O esquema NRZ-I é superior ao NRZ-L porque

sempre que houver um bit 1 haverá uma transição de nível funcionando como mecanismo de

sincronização. A existência de 1s na cadeia de dados permite ao receptor ajustar e sincronizar

o relógio com o transmissor. Uma cadeia de 0s ainda pode causar problemas, mas sequencias

Page 3: Codificação de Dados

inteiras de 0s não são assim tao prováveis na comunicação de dados, o que constitui um

problema menor.

A figura 3 ilustra as representações NRZ-L e NRZ-I para mesma sequência de bits.

Figura 3: Codificação NRZ-L e NRZ-I

Manchester

A codificação Manchester usa uma inversão no meio de cada intervalo de sincronização tanto

para a sincronização quanto para a representação do bit. Uma transição positiva (do nível de

tensão negativo para o nível de tensão positivo) representa um bit 1 e uma transição negativa

(do nível de tensão positivo para o nível de tensão negativo) representa um bit 0. Utilizando

uma única tensão não-nula para os dois propósitos, a codificação Manchester exibe o mesmo

nível de sincronização que a codificação RZ, mas usando somente dois níveis de tensão. A

figura 4 mostra um exemplo de codificação Manchester de uma sequência de bits.

Figura 4: Codificação Manchester

Page 4: Codificação de Dados

Manchester Diferencial

Na codificação Manchester diferencial, a inversão no meio do intervalo é utilizada para

sincronização, mas a presença ou ausência de uma transição adicional no começo do intervalo

é usada para identificar o bit. Uma transição representa o bit 0 e a ausência de transição

representa o bit 1. O esquema de codificação Manchester Diferencial requer duas transições

no sinal para representar o bit 0, mas somente uma transição para representar o bit 1.

Figura 5: Codificação Manchester Diferencial

1.1.3 Codificação bipolar

Uma codificação bipolar, como a RZ, utiliza três níveis de tensão: positivo, negativo e zero.

Um esquema de codificação bipolar bastante difundido é denominado Alternate Mark

Inversion (AMI). Uma tensão zero representa o bit 0. Os bits 1 são representados através de

pulsos de tensão alternados (positivos e negativos). A figura 6 traz um exemplo de

codificação AMI.

1.2 Codificação de bloco (codificação 4B/5B)

A codificação de blocos viabiliza um melhor desempenho na codificação e reduz a

possibilidade de erros na transmissão. A técnica é bem simples. Dado uma sequência de bits,

estes são selecionados (divididos) a cada sequência de m bits. Depois cada pedaço de m bits é

Page 5: Codificação de Dados

substituída por outra sequência de n bits onde n ≠ m. Para ilustrar, observe a sequência de

dados abaixo que utilizará a codificação em blocos 4B/5B.

Figura 7: codificação de bloco 4B/5B

Esta técnica simples garante redução de seqüências longas de 1s e 0s (ex: 111111111111

torna 111011110111101 utilizando 4B/5B) evitando problemas citados anteriormente. Reduz

também o problema de detecção de erros, visto que o receptor pode detectar um erro de

transmissão. A seguir é ilustrada a tabela completa do código 4B/5B.

Tabela 1: código 4B/5B

1.3 Padrões Ethernet

O padrão ethernet foi especificado inicialmente com uma velocidade de transmissão de

10Mb/s usando a codificação Manschester. Com o passar do tempo e com a necessidade de

maiores velocidades de transmissão novos padrões foram adoptados. A seguir são mostrados

alguns dos padrões ethernet e a codificação de dados usada.

Ethernet (10 Mbps) – Manchester;

Fast ethernet (100 Mbps) – NRZI em conjunto com o código 4B/5B;

Gigabit ethernet (1 Gbps) –. NRZI em conjunto com o código 8B/10B;

Page 6: Codificação de Dados

2. Tipo de protocolos

Como foi dito anteriormente, os nodos em uma rede local trocam quadros (vide a figura 8).

Quando um nodo A deseja transmitir um quadro para o nodo B, ele “diz” a sua placa de rede

para transmitir um quadro da sua memória. Isto resulta numa sequência de bits que são

enviados através do link. O placa de rede do nodo B, em seguida, recolhe a sequência de bits

que chegam no link e deposita na sua memória. O principal desafio da placa de rede é

identificar qual conjunto de bits constituem o quadro, ou seja, determinar onde o quadro

começa e onde termina. Para realizar essa operação vários protocolos foram desenvolvidos.

Os primeiros protocolos desenvolvidos foram denominados de Start/Stop ou TTY.

Posteriormente foram desenvolvidos os protocolos para transmissão síncrona, orientados a

byte ou a bit.

Figura 8: transmissão de quadros entre nodos

2.1 Protocolos orientados a byte

Uma das mais antigas abordagens de determinação de quadros é ver cada quadro como uma

coleção de bytes do que como uma coleção de bits.

Tal abordagem orientada a byte é exemplificada por protocolos mais antigos, como o

protocolo BISYNC (Binary Synchronous Communication) desenvolvido pela IBM na década

de 1960, e o protocolo DDCMP (Digital Data Communication Message Protocol) usado em

DECNET da Digital Equipment Corporation. O mais recente e amplamente utilizado é o PPP

(Point-to-Point Protocol).

BISYNC

Page 7: Codificação de Dados

A figura 9 mostra o formato do quadro do protocolo BISYNC. O protocolo BISYNC usa

caracteres especiais conhecidos como caracteres sentinela para indicar onde os quadros

começam e onde os quadros terminam. O começo do quadro é denotado pelo envio de um

caracter especial de sincronização (SYN). A porcão de dados do quadro esta localizada entre

outros dois carecteres especiais: STX (start of texto) e ETX (end of text). O problema com

este protocolo é que um caractere ETX pode aparecer na porcão de dados do quadro. Para

solucionar o problema se usa DLE (Data Link Enquiry). O formato do quadro do protocolo

também inclui um campo CRC usado para deteção de erros de transmissão.

Este protocolo foi muito empregado, por ser de fácil implementação, servindo de base para

diversos protocolos e aplicativos de comunicação.

Figura 9: formato do quadro do protocolo BISYNC

PPP

Assim como o BISYNC o PPP é também um protocolo baseado em sentinela. O formato do

quadro PPP é mostrado na figura 10. O caracter especial de início denotado como “Flag” é

01111110. O campo de endereço e controle também contém valores padrão. O campo

protocolo é usado para desmultiplexação.  O comprimento máximo do campo payload é 1500

bytes, embora seja possível a mudança na primeira vez em que o enlace é configurado. O

campo checksum utiliza um código de redundância cíclica, padrão HDLC, para detectar erros

de bits em um quadro transmitido. Um problema deste protocolo é que os padrões de flag

usados como limitadores de quadro podem fazer parte das informações (dos próprios dados

sendo encapsulados), uma estratégia chamada byte-stuffing é usada no protocolo PPP, que

representa a inserção do byte 01111101.

Assim, toda vez que um padrão parecido com o flag aparece nos dados, esse byte extra é

inserido para informar ao receptor que o byte seguinte não é um flag.

Page 8: Codificação de Dados

Figura 10: formato do quadro do protocolo PPP

DDCMP

Uma alternativa para detectar o fim de um ficheiro com um valor sentinela é incluir o número

de items no inicio do ficheiro. O mesmo aplica-se na deteção de quadros. O número de bytes

contidos no quadro pode ser incluído como um campo no cabeçalho do quadro. O DDCMP

usa este conceito, como ilustrado na figura 11. Neste exemplo o campo Count especifica

quantos bytes possui o corpo do quadro. Um problema dessa abordagem é que um erro na

transmissão pode danificar o campo Count fazendo com que o fim do quadro seja detectado

de maneira incorrecta.

Figura 11: formato do quadro do protocolo DDCMP

2.2 Protocolos orientados a bit (HDLC)

O protocolo HDLC é um protocolo orientado a Bit, ou seja, as transmissões são baseadas

em dados binários puros (e não caracteres). O formato do quadro HDLC é mostrado na

figura 12.

Figura 12: Formato do quadro HDLC

Page 9: Codificação de Dados

3. Propriedades físicas

Bibliografia

FOROUZAN, A. BEHROUZ: Comunicação de dados e redes de computadores - 3ª Edição – Porto Alegre, Bookman, 2006;

https://groups.google.com/forum/#!topic/sinpd/fRQF4dKZ5TU (24/08/2015) http://www.gta.ufrj.br/grad/03_1/FRePPP/PPP/quadro.htm (24/08/2015)