Upload
ivandro-pinto-ferreira
View
7
Download
0
Embed Size (px)
DESCRIPTION
Codigos
Citation preview
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
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
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
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 é
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;
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
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.
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
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)