Baixe o app para aproveitar ainda mais
Prévia do material em texto
COMUNICAÇÃO DE DADOS Unidade 4 Interfaces de comunicação e algoritmos de detecção Diretor Executivo DAVID LIRA STEPHEN BARROS Gerente Editorial ALESSANDRA FERREIRA Projeto Gráfico TIAGO DA ROCHA Autoria JÉSSICA LAISA DIAS DA SILVA MYLLENA SILVA DE FREITAS MORAIS 4 COMUNICAÇÃO DE DADOS U ni da de 4 A U TO RI A Jéssica Laisa Dias da Silva Olá. Tenho graduação em Sistema da Informação e mes- trado em Sistema e Computação na Universidade Federal do Rio Grande do Norte (UFRN). Tenho experiência na área de Informá- tica na Educação, com ênfase em Mineração de Dados Educa- cionais. Realizo trabalhos e pesquisas voltados ao universo dos jogos digitais inseridos no contexto educacional. Atualmente, realizo pesquisas no contexto de disseminação do pensamento computacional para crianças e jovens. As áreas de interesse de estudo são: Educação, Engenharia de Software, Mineração de Dados, Pensamento Computacional, Jogos Digitais Educativos e Gerenciamento de Projeto. Sou apaixonada pelo que faço e ado- ro transmitir minha experiência de vida àqueles que estão ini- ciando em suas profissões. Por isso fui convidada pela Editora Telesapiens a integrar seu elenco de autores independentes. Es- tou muito feliz em poder ajudar você nesta fase de muito estudo e trabalho. Conte comigo! Myllena Silva de Freitas Morais Olá. Sou formada em Licenciatura da Computação pela Universidade Estadual da Paraíba (UEPB). Sou especialista em Tecnologias Educacionais e Educação a distância pelo Instituto Federal do Rio do Rio Grande do Norte (IFRN). Atualmente, sou professora da Educação Básica, lecionando a disciplina de Pensa- mento Computacional. Sou grata por compartilhar a experiência de transmitir conhecimento para vocês que estão construindo a vida de profissionais. Sou apaixonada pelo que faço e adoro transmitir minha experiência de vida àqueles que estão inician- 5COMUNICAÇÃO DE DADOS U ni da de 4 do em suas profissões. Por isso fui convidada pela Editora Tele- sapiens a integrar seu elenco de autores independentes. Estou muito feliz em poder ajudar você nesta fase de muito estudo e trabalho. Conte comigo! 6 COMUNICAÇÃO DE DADOS U ni da de 4 ÍC O N ES Esses ícones irão aparecer em sua trilha de aprendizagem toda vez que: OBJETIVO Para o início do desenvolvimento de uma nova competência. DEFINIÇÃO Houver necessidade de apresentar um novo conceito. NOTA Quando necessárias observações ou complementações para o seu conhecimento. IMPORTANTE As observações escritas tiveram que ser priorizadas para você. EXPLICANDO MELHOR Algo precisa ser melhor explicado ou detalhado. VOCÊ SABIA? Curiosidades e indagações lúdicas sobre o tema em estudo, se forem necessárias. SAIBA MAIS Textos, referências bibliográficas e links para aprofundamento do seu conhecimento. ACESSE Se for preciso acessar um ou mais sites para fazer download, assistir vídeos, ler textos, ouvir podcast. REFLITA Se houver a necessidade de chamar a atenção sobre algo a ser refletido ou discutido. RESUMINDO Quando for preciso fazer um resumo acumulativo das últimas abordagens. ATIVIDADES Quando alguma atividade de autoaprendizagem for aplicada. TESTANDO Quando uma competência for concluída e questões forem explicadas. 7COMUNICAÇÃO DE DADOS U ni da de 4 Interfaces rs-232 e v.35 e a interface de comunicação serial rs-232 ........................................................................................ 11 Porta Serial RS-232 ............................................................................................11 Interface V.35 .......................................................................................16 Conectores DB-25 ...............................................................................17 Pinagem RS-232 de 9 pinos ..............................................................20 Porta RS-485 ......................................................................................................21 Diferença entre as portas serial RS-232 e RS-485 ........................ 23 Paridade de caractere e paridade combinada ..................... 26 Paridade simples e bidirecional ......................................................................26 Código de verificação de paridade simples ................................................. 29 Paridade bidimensional ....................................................................................33 Polinômio gerador crc ............................................................ 42 Verificação de redundância cíclica .................................................................42 Verificação CRC ....................................................................................45 Conceito do registrador de deslocamento CRC ........................................... 46 Implementação de algoritmo CRC-8 ..............................................................50 Medição de erros na transmissão de dados ......................... 55 Tipos de erros ....................................................................................................55 Erro de bit .............................................................................................55 Erro em rajada .....................................................................................56 Redundância ........................................................................................58 Detecção x Correção .........................................................................................59 Correção antecipada de erros x retransmissão ........................... 59 Código de erros ..................................................................................60 Erros de precisão ...............................................................................................61 SU M Á RI O 8 COMUNICAÇÃO DE DADOS U ni da de 4 Erros de desvio ....................................................................................61 Erros aleatórios ...................................................................................61 Erros sistemáticos ...............................................................................63 Medição de taxa de erro de bits (BER) .......................................................... 64 Fatores que afetam a taxa de erro de bit, BER .............................. 65 9COMUNICAÇÃO DE DADOS U ni da de 4 A PR ES EN TA ÇÃ O Nesta unidade, iremos continuar os nossos estudos sobre as interfaces RS-232 e RS-485, destacando os conectores que são utilizados e a identificação da sua pinagem. Outro ponto impor- tante dos nossos estudos será entender o conceito de paridade simples e bidimensional, conhecidas também como paridade de caractere e paridade combinada. É preciso entender, nos estu- dos, sobre paridade simples em relação ao seu código de veri- ficação, assim como entender o processo eficiente da paridade bidimensional. Nos nossos estudos, veremos sobre o polinômio gerador CRC, destacando sobre como acontece a redundância cí- clica, o conceito de registrador de deslocamento CRC e como ele se aplica no algoritmo CRC-8. Outro ponto bastante importante nesta unidade está na medição de erros que acontecem na trans- missão de dados, verificando os tipos de erros e como realizar a medição deles. Sendo assim, ao longo desta unidade letiva, você vai mergulhar neste universo da comunicação de dados! 10 COMUNICAÇÃO DE DADOS U ni da de 4 O BJ ET IV O S Olá. Seja muito bem-vindo à Unidade 4. Nosso objetivo é auxiliar você no desenvolvimento das seguintes competências profissionais até o término desta etapa de estudos: 1. Identificar e compreender os tipos de interfaces RS-232 e v35, bem como a Interface de comunicação serial RS- 232. 2. Discernir sobre as diferenças entre paridade de carac- tere e paridade combinada no contexto da comunica-ção de dados. 3. Aplicar o conceito de polinômio gerador CRC na comu- nicação de dados. 4. Entender e avaliar os modos de medição de erros na transmissão de dados. 11COMUNICAÇÃO DE DADOS U ni da de 4 Interfaces rs-232 e v.35 e a interface de comunicação serial rs-232 OBJETIVO Ao término deste capítulo, você será capaz de entender sobre a porta serial RS-232, entendendo a estrutura da interface V.35, os tipos de conectores DB-25 e suas pinagens. Veremos também sobre a porta RS-485. E então? Motivado para desenvolver esta competência? Então, vamos lá. Avante! Porta Serial RS-232 O padrão de interface RS-232 foi criado pela EIA – Electronic Industries Association para ser utilizado entre dois dispositivos como um intercâmbio binário serial de dados. Inicialmente, esse padrão foi desenvolvido com o objetivo de padronizar a maneira como os computadores eram conectados com telefones de linha. Esse tipo de padrão pode realizar a conexão de até 20 sinais, porém, deixa o usuário livre para definir esse total. O RS-232 é uma interface serial considerada popular, e faz a conexão dos computadores aos dispositivos periféricos, como, por exemplo, os modems. O protocolo RS-232 trabalha transmi- tindo dados de fios utilizando níveis de sinal que são diferentes do 5V mais padrão e seu uso minimiza a interferência dos sinais. Esse tipo de protocolo utiliza a transmissão de dados as- síncrona, por meio de uma taxa constante que está sincronizada com o nível do sinal de pulso de início. A interface RS-232 permite que sejam realizadas transmissões confiáveis com distâncias de no máximo 20 metros. 12 COMUNICAÇÃO DE DADOS U ni da de 4 Para realizar a transmissão com a interface padrão RS-232, são necessários três fios: • Enviar dados. • Receber dados. • Sinal terra. As demais linhas tanto podem ser ligadas de forma perma- nente como desligadas permanentemente. A transmissão é con- siderada bipolar, fazendo uso de duas tensões, dentro da mar- gem de 5 a 25 volts, com polaridade oposta. A Figura 1 apresenta um exemplo da Porta RS-232. Figura 1: Porta RS-232 Fonte: Pixabay Em relação ao padrão de comunicação, a palavra “assín- crona” é bastante utilizada e é formada por um bit de início. Os bits de dados podem ser entre sete e oito, um bit opcional de paridade, e podendo ter um ou dois bits de parada. Em relação à taxa de transmissão referente à palavra enviada, irá depender do dispositivo. 13COMUNICAÇÃO DE DADOS U ni da de 4 Geralmente, na porta RS-232 a taxa de transmissão pode chegar a ser 150x o tamanho da potência de 2, e sua variação pode ser entre 0 e 7. O conector RS-232 padrão é formado por 25 pinos, sendo que, desses, 21 são utilizados no padrão completo. Quando um terminal de computador é conectado de forma direta a um computador, ele não faz uso de muitos dos sinais do modem, sendo possível vincular os pinos sobressalentes caso esses não sejam necessários. Na figura a seguir, é possível visualizar um modelo de conector DB-25, bastante utilizado nos computadores mais modernos. Figura 2: Conector DB-25 Fonte: Pixabay A especificação da conformidade com RS-232 estabelece a compatibilidade existente entre os níveis de sinais de dois dispo- sitivos e se eles estiverem utilizando esse tipo de conector, então será permitida a conexão. Isso quer dizer que a conformidade com a interface RS-232 não necessariamente significa capacida- de de se comunicar e também de reconhecer a presença do ou- tro. 14 COMUNICAÇÃO DE DADOS U ni da de 4 IMPORTANTE A comunicação serial RS-232 vem hoje em dia sendo substituída pelas portas USB, utilizada para comunicação local. Isso porque a porta USB é considerada mais rápida, possuindo conectores bem mais simples de serem utilizados, assim como um melhor suporte de software. Dessa forma, várias placas-mãe passarão a ser produzidas já sem circuitos RS-232. Figura 3: Portas USB Fonte: Freepik Apesar de seu uso ter sido substituído pelos USB na maioria dos computadores, ainda é possível encontrar alguns periféricos que fazem uso dele, por exemplo, caixas registradoras e fitas magnéticas para serem utilizadas em ambientes industriais. Nes- se caso, os computadores ainda são produzidos com esse tipo de porta. Para quem já faz uso das portas USB e precisa utilizar algum periférico que seja porta RS-232, existem hoje em dia 15COMUNICAÇÃO DE DADOS U ni da de 4 conversores que podem ser utilizados em computadores em que suas placas-mãe não possua essa interface. Em relação a sistemas embargados, a porta RS-232 ainda está sendo utilizada. O mesmo acontece com os microcontrolados, porque ela apresenta simplicidade tanto para o software quanto para o hardware. Nesse tipo de padrão de comunicação por meio do RS-232, o envio dos caracteres acontece um a um e são enviados com um conjunto de bits. Para que seja realizado o envio de apenas um caractere, faz-se necessário em torno de 10 bits. Esse padrão é utilizado para definir os níveis elétricos que fazem correspondência com o nível lógico um e ao nível lógico zero, assim como das velocidades de transmissão padrão e os seus modelos de conectores. Como mencionado, o RS-232 deve ser utilizado para cone- xões curtas. Os sinais irão variar entre 3 e 15 volts, tanto positivo quanto negativos, e os valores que se apresentam mais próximos de zero não são considerados sinais válidos. A voltagem negativa é representada pelo nível lógico um. IMPORTANTE Chamamos de marca a condição em que o sinal se apresenta, e ON é o significado para que ele esteja ligado. O nível lógico zero é considerado positivo, o espaço é a con- dição de sinal, sendo a função OFF a representação de desligado. São consideradas comumente as seguintes voltagens: +-10, +-12 e +-15. Isso leva a entender o porquê de ser preciso utilizar con- versores para ligar uma porta serial RS-232 a alguma porta série TTL. 16 COMUNICAÇÃO DE DADOS U ni da de 4 Na serial RS-232, as voltagens possuem como referência o terra (GND), isso porque ela não é balanceada. Utilizar circuitos desbalanceados faz com que o RS-232 esteja propício a proble- mas, pelo fato de apresentar diferenças em relação à potência existente entre os sinais de terra que envolvem os dois circuitos. VOCÊ SABIA? As primeiras aplicações relacionadas a porta serial se deram por meio do uso delas para a comunicação entre o computador e o modem. Dessa forma, o conector DB-9 herdou a nomenclatura que foi utilizada nessa comunicação com o modem. O RS-232 faz o gerenciamento do fluxo de comunicação existente entre o DTE e o DCE através do uso de pinagens seriais do modelo DB-9 ou DB-25. Esses tipos de conectores D-sub podem tanto terminar com uma pinagem considerada fêmea RS-232 ou então com pinos de conector macho DB-25, ou o conector DB-9. Veremos mais à frente que cada pino que tenha uma pinagem de conector serial 9 ou com pinagem 25 apresenta função distinta. Interface V.35 A interface V.35 foi criada pela CCITT, sendo uma interface para transmissões de linha de 48 kbps. Era utilizada para todo tipo de velocidades de linha que estejam acima de 20 kbps. Essa interface foi descontinuada no ano de 1988 e substituída pelas recomendações V.10 e V.11. A V.35 é considerada uma mistura de interfaces entre o sinal balanceado e terra comum. As linhas de controle, que incluem – DTR, DSR, DCD, RTS e CTS – são consideradas interfaces de terra comum formado por fio único, sendo compatíveis funções com sinais de nível RS-232. Tanto os sinais de dados como os sinais de clock são balanceados, sinais do tipo RS-422. 17COMUNICAÇÃO DE DADOS U ni da de 4 Conectores DB-25 Nem todo conector que seja D-sub contendo 25 pinos possui uma interface compatível com o padrão serial RS-232-C. Dessa forma, existem fabricantes de computadores que fazem a opção tanto por sinais como por tensões que estejam fora do padrão em relação a determinados pinos referentes à pinagemda porta COM do computador. Figura 4: DB25 Fonte: Wikimedia Commons Cada um desses pinos tem um significado específico. Veja- mos a seguir o que cada um deles representa (ALBINI, 2017): Pin 1: GND − Shield Ground 18 COMUNICAÇÃO DE DADOS U ni da de 4 Pin 2: TxD – Representa os dados transmitidos; tem a função de carregá-los do terminal de dados até o conjunto de dados Pin 3: RxD – Representa os dados recebidos; tem a função de carregar os dados do conjunto de dados até o terminal de dados Pin 4: RTS Representa pedido de envio; o terminal de dados realiza a sinalização ao conjunto de dados, informando para se preparar para realizar a transmissão de dados Pin 5: CTS Representa limpar para enviar; conjunto de dados utilizado para sinalizar ao terminal de dados sua prontidão para receber dados Pin 6: DSR Conjunto de dados está pronto; o DCE está em condições de receber e enviar dados Pin 7: GND – Representa o terra do sistema; apresenta como referência a tensão zero Pin 8: CD Representa detecção de portadora; o Data Set faz a sinalização para o terminal de dados em relação à portadora detectada que está vindo de outro dispositivo Pin 9: Reservado Pin 10: Reservado Pin 11: STF Seleciona o canal de transmissão Pin 12: S.CD Detecta a portadora secundária Pin 13: S.CTS Secundário está liberado para o envio Pin 14: S.TXD Representa dados de transmissão secundária 19COMUNICAÇÃO DE DADOS U ni da de 4 Pin 15: TCK Sincronizar o elemento do sinal de transmissão Pin 16: S.RXD Representa os dados de recebimento secundários Pin 17: RCK Sincroniza o elemento do sinal do receptor Pin 18: LL Representa controle de loop local Pin 19: S.RTS Representa a solicitação secundária de envio Pin 20: DTR Representa da Remote Loop Control Pin 22: RI Representa o indicador de toque; o Data Set faz a sinalização ao Data Terminal em relação a uma condição de toque detectada Pin 23: DSR Representa seletor de taxa de sinal de dados Pin 24: XCK Sincroniza o elemento de sinal de transmissão Pin 25: TI Representa o indicador de teste O RTS e o CTS, no momento da comunicação assíncrona, ficam ativados durante toda a sessão. Porém, caso o DTE esteja conectado a uma linha considerada multiponto, uma estação de cada vez que irá transmitir os dados. Dessa forma, o uso do RTS será único, apenas para ligar ou desligar a operadora do modem. Quando o RTS está pronto para realizar a transmissão, acontece o aumento da estação, e o aumento do CTS (isso pode levar em torno de alguns milissegundos). Quando o CTS está no modo ativo, o DTE está transmitindo. Quando a transmissão for finalizada, haverá o descarte do RTS por parte da estação, e o modem também fará o descarte do CTS e da portadora. 20 COMUNICAÇÃO DE DADOS U ni da de 4 Pinagem RS-232 de 9 pinos Uma versão simplificada da pinagem RS-232 refere- se à conexão serial de pinagem de 9 pinos que é utilizada em computadores pessoais, como demonstrado na figura a seguir: Figura 5: Pinagem RS-232 de 9 pinos Fonte: Albini (2017, p. 50). Cada um dos pinos é representado da seguinte forma (ALBINI, 2017): Pin 1: DCD Detecta a portadora de dados Pin 2: RxD Recebe os dados Pin 3: TxD Transmite os dados Pin 4: DTR Representa o terminal de dados pronto Pin 5: 0V/COM – Representa o 0V ou sistema de aterramento Pin 6: DSR Representa o conjunto de dados pronto Pin 7: RTS Representa o pedido de envio Pin 8: CTS Libera para enviar 21COMUNICAÇÃO DE DADOS U ni da de 4 Pin 9: RI Representa o indicador de toque As interfaces RS-232 e a USB são utilizadas com mais frequência para o tipo de comunicação serial. Elas apresentam algumas limitações, especialmente em relação às distâncias. Porta RS-485 A interface serial RS-485 é utilizada de forma ampla na indústria. Essa interface possui várias vantagens em relação à interface RS-232. Por meio da topologia multiponto, eles permitem a conexão em diversos receptores e também em transmissores. A transmissão de dados acontece utilizando sinais diferenciais que darão maior consistência. Com o RS-485, é possível realizar dois tipos de comunicação: • As interfaces que possuem dois contatos podem ope- rar em modo half-duplex, ou seja, enviar e receber da- dos de uma vez exclusivamente. • A interface RS-485 pode possuir também 4 contatos. Nesse caso, é possível funcionar de maneira full-duplex. Sempre que for utilizado dessa maneira, os dados po- derão ser transmitidos e recebidos de maneira simul- tânea. Se uma aplicação está sendo realizada a partir de vários dispositivos que estão localizados em lugares diferentes, ou então se o sistema tem na sua composição diversas unidades, em que cada uma dessas unidades apresenta determinada função, é possível que seja necessário existir um meio de comunicação entre eles. 22 COMUNICAÇÃO DE DADOS U ni da de 4 Figura 6: Padrão RS-485 Fonte: Freepik O padrão RS-485 foi criado no de 1983, sendo capaz de desenvolver uma estrutura vigorosa de comunicação multiponto que passou a ser bastante utilizada, especialmente na indústria especialista em controle de sistemas. Nesse tipo de interface, a representação dos sinais acontece por meio de níveis de tensão com o terra como referência. A estrutura do RS-485 é da seguinte maneira: existe um fio de transmissão e outro fio responsável pela recepção, contendo 23COMUNICAÇÃO DE DADOS U ni da de 4 ainda o fio terra que serve de referência dos níveis de tensão, sendo bastante útil para comunicação ponto a ponto com baixa velocidade para transmitir dados. Há uma necessidade de existir entre os dispositivos um ter- ra comum, havendo limitações em relação ao comprimento do cabo em apenas algumas poucas dezenas de metros. Em relação à construção da rede de comunicação na inter- face RS-485, esta é formada por transceptores que são conecta- dos por meio de um par trançado, ou seja, dois fios trançados. IMPORTANTE A transmissão de dados diferencial (balanceada) é considerada o princípio básico da interface RS-485. Isso quer dizer que um sinal será transportado por meio de dois fios. Dessa forma, um fio do par irá ter a função de transmitir o sinal original e o outro, de transportar sua cópia inversa. O resultado dessa transmissão diferencial de sinal será uma possível diferença existente entre os fios. Dessa forma, poderá garantir uma resistência alta em relação à interferência do modo comum. Outro fator é que o par trançado poderá ser blindado, garantindo a proteção dos dados que estão sendo transmitidos. Assim, permite que seja realizado o envio de dados há longas distâncias mantendo a velocidade alta de uma forma relativa, podendo alcançar de 100 kbits/s a 4.000 pés. Diferença entre as portas serial RS-232 e RS-485 As duas portas são padrões de transmissão elétrica bastan- te antigos, antes até do que os computadores pessoais. Elas são utilizadas em interfaces para existir a comunicação entre os peri- 24 COMUNICAÇÃO DE DADOS U ni da de 4 féricos e os computadores. Vejamos a seguir algumas diferenças entre esses protocolos. Tabela 1: Diferença entre RS-232 e RS-485 Características RS-232 RS-485 Diferencial/Balanceada Não Sim Quantidade de controladores 1 31 Quantidade de receptores 1 31 Modo de operação Half-duplex/full-duplex Half-duplex Topologia Ponto a ponto Multiponto Distância máxima 20 m 1200m Taxa máquina a 12m 20kbps 35Mbps Taxa máquina a 1.200m - 100kbps 25COMUNICAÇÃO DE DADOS U ni da de 4 RESUMINDO E então? Gostou do que lhe mostramos? Entendeu a importância de estudar sobre a comunicação de dados? Agora, só para termos certeza de que você realmente entendeu o tema de estudo deste capí- tulo, vamos resumir tudo o que vimos. Você deve ter aprendido que o padrão de interface RS-232 foi criado pela EIA – Electronic Industries Association para ser utilizada entre dois dispositivos como um intercâmbio binário serial de dados. Esse tipo de protocolo utiliza a transmissão de dadosassíncro- na, por meio de uma taxa constante que está sin- cronizada com o nível do sinal de pulso de início. A transmissão é considerada bipolar, fazendo uso de duas tensões, dentro da margem de 5 a 25 volts, com polaridade oposta. Na serial RS-232, as volta- gens possuem como referência o terra (GND), isso porque ela não é balanceada. Vimos que o V.35 é considerado uma mistura de interfaces entre o si- nal balanceado e o terra comum. Uma versão sim- plificada da pinagem RS-232 refere-se à conexão serial de pinagem de 9 pinos que é utilizada em computadores pessoais. Sobre a estrutura do RS- 485, existe um fio de transmissão e outro fio res- ponsável pela recepção, contendo ainda o fio terra, que serve de referência dos níveis de tensão, sen- do bastante útil para comunicação ponto a ponto com baixa velocidade para transmitir dados. 26 COMUNICAÇÃO DE DADOS U ni da de 4 Paridade de caractere e paridade combinada OBJETIVO Ao término deste capítulo, você será capaz de entender as diferenças entre as paridades de caractere e comparativa descritas como simples e bidirecional. Veremos como se descreve o código de verificação da paridade simples e a estrutura da paridade bidirecional. E então? Motivado para desenvolver esta competência? Então, vamos lá. Avante! Paridade simples e bidirecional É possível que durante a transmissão de dados aconteça eventualmente algumas ações que venham a modificar o sinal, vindo a causar ruído térmico ou até interferências elétricas acar- retando possíveis erros no quadro de bits. Nesse sentido, apesar de que em alguns sistemas esse fator seja difícil de acontecer, caso dos enlaces ópticos, é preciso utilizar sempre alguns mecanismos que possam detectar esses erros, operando junto a uma ação que seja utilizada para corrigi- los (PETERSON; DAVIE, 2004). Para Young (2006, p. 379), “uma forma de superar os efei- tos de ruído e interferência no sistema de transmissão de dados, além de aumentar a potência transmitida, é detectar a ocorrên- cia de erros e obter uma retransmissão”. Sendo assim, os métodos que realizam a detecção de erros fazem uso do acréscimo de bits que são redundantes, proces- sados dentro de uma lógica e unindo a mensagem que será en- viada. O sistema receptor quando receber a mensagem enviada fará uso de um algoritmo que, por meio desses dados adicionais, 27COMUNICAÇÃO DE DADOS U ni da de 4 irá identificar caso exista algum erro corrompendo a mensagem ou se ela foi recebida na íntegra (PETERSON; DAVIE, 2004). DEFINIÇÃO Retransmitir uma mensagem significa enviar uma notificação direcionada ao sistema emissor, fazen- do a identificação e a solicitação de que a parte que foi corrompida seja retransmitida. Caso o enlace em questão tenha passado pelo processo de instalação e de configuração dentro dos limites do sistema, e os erros que vieram a surgir tenham sido apenas um acontecimento esporádico, então serão grandes as chances de que a cópia que será reenviada seja recebida de maneira correta, totalmente livre de qualquer tipo de erro. Figura 7: Envio de informação correta 28 COMUNICAÇÃO DE DADOS U ni da de 4 Fonte: Freepik Para Tenenbaum (2003, p. 205-206): Em canais altamente confiáveis, como os de fibra, é mais econômico utilizar um código de detecção de erros e simplesmente retransmitir o bloco defeituoso ocasional. Porém em canais com enlaces sem fio que geram muitos erros, é melhor adicionar a cada bloco redundância suficiente para que o receptor seja capaz de descobrir qual era o bloco original, em vez de confiar em uma retransmissão, que pode ela própria conter erros. Sendo assim, utilizar códigos que irão realizar a correção dos erros é mais indicado em sistemas de comunicação em que os erros aconteçam com mais probabilidade, pois, mesmo que esses códigos façam uso de maiores quantidade de bits, tanto de redundância como de processamento, se houver uma comparação com os códigos detectados, existirá a necessidade de retransmissão de forma contínua e isso poderia iniciar uma latência alta, deixando o sistema inviável. Figura 8: Mensagem corrompida 29COMUNICAÇÃO DE DADOS U ni da de 4Fonte: Freepik De acordo com Tenenbaum (2003), os códigos detectores de erro, unidos aos mecanismos ARQ (implementa controle de erros em protocolos de comunicação), possuem os melhores desempenhos de enlaces cabeados. Isso porque esse tipo de sistema apresenta taxas de erro baixas. Assim, a necessidade de retransmissão da mensagem que tiver sido corrompida seria bem baixa. Rochol (2012, p. 254) afirma que “existem duas grandes classes de técnicas de detecção de erros: as técnicas baseadas em paridade e as técnicas baseadas em códigos cíclicos”. Código de verificação de paridade simples O contexto histórico apresenta que uma das primeiras técnicas criadas para trabalhar com sistemas de comunicação de 30 COMUNICAÇÃO DE DADOS U ni da de 4 dados (SCD) foi a técnica de paridade. Porém, pelo fato de ser uma técnica simples, é bastante utilizada também nos protocolos de comunicação com base em caractere. Alguns protocolos são o BSC-1 e BSC-3, desenvolvidos pela empresa IBM (ROCHOL, 2012). O método de paridade unidimensional tem como base o acréscimo de um bit de redundância único a determinado bloco que seja composto por n bits. A escolha e a adição desse bit de- vem acontecer de maneira que venha a obter resultado par refe- rente à soma da quantidade de caracteres 1, se o sistema estiver operando em paridade par, e se o sistema estiver operando em paridade ímpar o resultado será ímpar. O entendimento de erro se dá em relação ao nível de consistência que existe tanto no ruído como na interferência presentes no canal, fazendo com que seja consideravelmente alto, chegando a causar distorção no sinal recebido, fazendo com que um ou vários bits sejam invertidos. Sobre isso, Kurose e Ross (2006, p. 333) afirmam que: A operação do receptor também é simples com único bit paridade. O receptor precisa apenas contar quan- tos ‘1’ há nos d +1 bits recebidos. Se, utilizando o es- quema de paridade par, for encontrado um número ímpar de bits e valor 1, o receptor saberá que ocorreu pelo menos um erro de bit. Mais precisamente, ele saberá que ocorreu algum número ímpar de erros de bit. A paridade unidimensional é um método considerado bastante simples, tendo a capacidade de detectar todos os erros que se encontram em determinado bloco, isso quando esses erros ocorrem em quantidades ímpares. Entretanto, ele também se baseia em código que é considerado relativamente fraco, isso porque, caso exista algum erro que venha a causar inversão 31COMUNICAÇÃO DE DADOS U ni da de 4 na quantidade par de bits, o receptor não conseguirá detectar. Desse modo, em sistemas em que a quantidade de erros possa ser muito grande, a probabilidade de ele realizar a detecção seria muito baixa, 0,5% aproximadamente, não sendo muito aceitável (TENENBAUM, 2003). O processo de paridade nesse código acontece da seguinte maneira: uma palavra de dados contendo k bits passa por um processo de transformação para uma palavra de código contendo n bits, descrita na seguinte fórmula: N = k+1 O bit de paridade refere-se ao bit extra, sendo selecionado com a função de tornar par a quantidade total de bits 1s encon- trados na palavra de código. Existem implementações que defi- nem um número ímpar como de bits 1s, porém, usaremos como par. Em relação à distância de Hamming mínima definida para essa categoria, é dada pela seguinte fórmula: dmín = 2 32 COMUNICAÇÃO DE DADOS U ni da de 4 Isso quer dizer que esse código de detecção de erros de bit, que verifica um só bit, não tem capacidade de corrigir erros. DEFINIÇÃO A distância de Hamming é bastante utilizada na correção de erros e representa o número de pon- tos em que duas partes correspondentes de dados poderão ser diferentes. A figura a seguir apresenta a estrutura de um codificador no emissore um decodificador no receptor. O codificador utiliza um gerador que seleciona uma cópia de uma palavra de dados contendo 4 bits (a0, a1, a2 e a3) e assim gera um bit de paridade r0. Tanto os bits da palavra de dados como o bit de paridade realizam a criação de uma palavra de código contendo 5 bits. Esse bit de paridade que será adicionado se torna par o número de bits 1s referente à palavra de código (FOROUZAN, 2010). Figura 9: Codificador e decodificador para paridade simples Fonte: Forouzan (2010, p. 279). 33COMUNICAÇÃO DE DADOS U ni da de 4 Esse processo normalmente é realizado adicionando-se 4 bits referentes à palavra de dados, e o resultado gerado será o bit de paridade, ou seja, acontece da seguinte forma: r0 = a3 + a2 + a1 + a0 Forouzan (2010, p. 278) explica que, “se o número de 1s for par, o resultado será 0; se o número de 1s for ímpar, o resultado será 1. Em ambos os casos, o número total de 1s na palavra de códigos é par”. O emissor fará o envio à palavra de código, e esta poderá ser corrompida durante o processo da transmissão. O receptor irá receber uma palavra de 5 bits. Ainda no receptor, o verificador irá fazer o mesmo processo que o gerador no emissor, mudando apenas um fator em relação à adição, pois esta é realizada em todos os 5 bits. O resultado desse processo é conhecido como síndrome, sendo de apenas 1 bit. Quando a síndrome for igual a 0, o número de 1s na palavra será um valor par, no contrário será 1. A síndrome será enviada para o analisador de lógica de decisão. Caso a síndrome seja 0, irá significar que não foi encontrado erro na palavra de código que foi recebida. Forouzan (2010, p. 279) explica que “a parte de dados da palavra de código recebida é aceita como uma palavra de dados válida; se a síndrome for 1, a parte de dados da palavra de código recebida é descartada. A palavra de dados não é criada”. Paridade bidimensional O método de paridade bidimensional é considerado mais eficiente. Ele também é um método simples, derivado da parida- 34 COMUNICAÇÃO DE DADOS U ni da de 4 de de único bloco, porém, possui eficiência melhor porque con- segue detectar mais erros. A lógica estrutural do método bidimensional pode ser melhor descrita por Tenenbaum (2003, p. 209), que afirma que: As disparidades poderão ser consideravelmente me- lhoradas se cada bloco for enviado como uma matriz retangular com n bits de largura e k bits de altura [...] Um bit de paridade é calculado separadamente para cada coluna e afixado à matriz como sua última linha. Em seguida a matriz é transmitida uma linha de cada vez. Na figura a seguir, podemos visualizar uma demonstração simples sobre como acontece a paridade bidimensional demons- trada por meio de uma matriz, na qual acontece o processamen- to dos bits de paridade, que faz referência ao bloco de verificação fixado na linha final da matriz. Figura 10: Matriz da paridade bidimensional 35COMUNICAÇÃO DE DADOS U ni da de 4 36 COMUNICAÇÃO DE DADOS U ni da de 4 Fonte: Tenenbaum (2003, p. 210). De maneira prática, percebemos que inicialmente é reali- zado o processamento do bit de paridade adicionado sempre ao final de cada pacote, o que irá gerar a última coluna, conhecida como VRC – verificação de redundância vertical. Logo depois serão realizados os cálculos dos bits de parida- de para cada coluna, fazendo a inclusão da coluna VRC. Eles irão integrar um pacote último de verificação, que é conhecido na maioria das vezes como LRC – verificação de redundância longi- tudinal, ou apenas paridade horizontal. Após esses procedimen- tos, os dados estão codificados e prontos para serem enviados (YOUNG, 2006). No método de paridade bidimensional, organiza-se a pala- vra de dados dentro de uma tabela contendo linhas e colunas. 37COMUNICAÇÃO DE DADOS U ni da de 4 Na figura a seguir, podemos perceber que os dados que serão enviados (5 bytes de 7 bits) foram colocados em linhas separadas. A cada linha e coluna, realiza-se o cálculo de 1 bit de verificação de paridade. Toda a tabela é enviada para o receptor, que deve encontrar a síndrome determinada para cada linha e para cada coluna. A verificação desse método detecta até três erros que tenham ocorrido em qualquer lugar da tabela. Porém, erros que venham a afetar 4 bits poderão ficar sem ser detectados. Figura 11: Código de verificação de paridade bidimensional 38 COMUNICAÇÃO DE DADOS U ni da de 4 Fonte: Forouzan (2010, p. 281). É possível que sempre em códigos referentes a tratamento de erros encontrem-se limitações e peculiaridades, e o mesmo acontece com o método de paridade bidimensional. Por mais que ele seja um tipo de método que esteja entre os códigos detectores, ele tem um limite de capacidade de correção em relação à degradação atingindo um bit único. Figura 12: Erro em apenas um bit Fonte: Kurose e Ross (2006, p. 334). Como podemos visualizar na Figura 12, se o erro ocorrer em apenas um dos bits do bloco, o método conseguirá mapeá- lo. Dessa forma, Young (2006, p. 381) afirma que “a interseção da fila e da coluna com erro de paridade é a localização do bit incorreto. Obtém se a correção simplesmente invertendo o bit com problemas”. De acordo com Kurose e Ross (2006, p. 333), tratando sobre a adulteração de bits, por causa da inserção de erros causados pelo ruído no canal de transmissão, “medições demonstraram 39COMUNICAÇÃO DE DADOS U ni da de 4 que, em vez de acontecerem independentemente, os erros frequentemente se aglomeram em ‘rajadas’”. Nesse sentido, os códigos que têm como base a paridade bidimensional têm a capacidade de detectar os erros, porém, não conseguem corrigi-los, em caso de combinação de erro duplo em algum pacote. Verificando um bloco inteiro, levando em consideração n como a quantidade de bits presente em sentido horizontal, isso quer dizer sobre o tamanho referente ao pacote de bits, ainda será possível ao método detectar os erros em uma rajada única de tamanho n. Sendo assim, devemos interpretar que a estrutura que o sistema receptor irá receber desse bloco, por meio de uma matriz, irá verificar um possível surto dessa proporção que iria alterar apenas um bit por coluna (TENENBAUM, 2003; YOUNG, 2006). Porém, caso o tamanho da rajada seja maior que n, isso iria comprometer a possibilidade de detecção do sistema, porque o bloco estaria em condições de acontecer erros duplos tanto nas linhas como nas colunas, aumentando a possibilidade de não serem detectados (TENENBAUM, 2003; YOUNG, 2006). 40 COMUNICAÇÃO DE DADOS U ni da de 4 SAIBA MAIS No vídeo “6.2 Técnicas de Detecção e Correção de Erros: paridade, checksum, CRC - Redes de Computadores”, podemos entender mais sobre as técnicas utilizadas para detectar erros e realizar a correção na transmissão dos dados, especialmente compreender sobre as técnicas de paridade e a CRC que estudamos nesta unidade. Acesse clicando no QR-Code: Podemos citar como algumas desvantagens da paridade bidimensional, os seguintes pontos: • Em alguns casos, apenas um número ímpar de erros de bit poderá ser detectado e corrigido; mas um número par de erros só pode ser detectado, mas não corrigido. • Em alguns casos, esse método não é capaz de detectar nenhum erro de bit. https://www.youtube.com/watch?v=SYPGZPNlkAs 41COMUNICAÇÃO DE DADOS U ni da de 4 RESUMINDO Chegamos ao final de mais um objeto de aprendi- zagem. E então? Conseguiu aprender tudo que foi proposto nesse ponto? Nesta unidade, é essencial entender que os métodos que realizam a detecção de erros fazem uso do acréscimo de bits que são redundantes, processados dentro de uma lógica e unindo a mensagem que será enviada. Retransmi- tir uma mensagem significa enviar uma notificação direcionada ao sistema emissor, fazendo a identi- ficação e a solicitação de que a parte que foi cor- rompida seja retransmitida. Utilizar códigos que irão realizar a correção dos erros é mais indicado para sistemasde comunicação em que os erros acontecem com mais probabilidade. Vimos que o método de paridade unidimensional tem como ba- se o acréscimo de um bit de redundância único a determinado bloco que seja composto por n bits. O processo de paridade nesse código acontece quan- do uma palavra de dados contendo k bits passa por um processo de transformação para uma palavra de código contendo n bits. O método de paridade bidimensional é considerado mais eficiente. No método de paridade bidimensional, organiza-se a palavra de dados dentro de uma tabela contendo linhas e colunas. A cada linha e coluna realiza-se o cálculo de 1 bit de verificação de paridade. Os códi- gos que têm como base a paridade bidimensional têm a capacidade de detectar os erros, porém, não conseguem corrigi-los, em caso de combinação de erro duplo em algum pacote. 42 COMUNICAÇÃO DE DADOS U ni da de 4 Polinômio gerador crc OBJETIVO Ao término deste capítulo, você será capaz de en- tender sobre o polinômio gerador CRC e o conceito do registrador de deslocamento, além de conhecer um exemplo de implementação do CRC-8. E então? Motivado para desenvolver esta competência? En- tão, vamos lá. Avante! Verificação de redundância cíclica A verificação de redundância cíclica – CRC, no inglês Cyclic Redundancy Check, é um algoritmo de soma de verificação para detectar inconsistência de dados, por exemplo, erros de bit durante a transmissão de dados. Uma soma de verificação, calculada pelo CRC, é anexada aos dados para ajudar o receptor a detectar tais erros. O CRC é baseado na divisão. Os dados de entrada reais são interpretados como um longo fluxo de bits binários (dividente), que é dividido por outro número binário fixo (divisor). O restante dessa divisão é o valor da soma de verificação. No entanto, a realidade é um pouco mais complicada. Os números binários (dividente e divisor) não são tratados como valores inteiros normais, mas como polinomiais binários em que os bits reais são usados como coeficientes. NOTA Os dados de entrada 0x25 = 0010 0101 são con- siderados como 0*x 7 + 0*x 6 + 1*x 5 + 0*x 4 + 0*x 3 + 1* x 2 + 0*x 1 + 1* x 0 43COMUNICAÇÃO DE DADOS U ni da de 4 A divisão de polinômios difere da divisão inteira. A aritmética subjacente utilizada para o cálculo do CRC é baseada na operação XOR (Exclusive-OR), a tabela verdade XOR é descrita como: Tabela 2: Tabela verdade XOR XORXOR 0 1 0 0 1 1 1 0 Fonte: Elaborada pelas autoras (2023). Algumas interpretações necessárias são: • O dividente são os dados de entrada completos (inter- pretados como fluxo binário). • O divisor, também chamado de polinômio gerador, é definido estaticamente pelo algoritmo CRC utilizado. CRC-n usando um polinômio gerador definido fixo com (n+1) bits. • O valor da soma de verificação CRC é definido como dividendo % divisor. Para cálculo manual, n bits zero são anexados aos dados de entrada antes que o cálculo CRC real (divisão polinomial) seja computado. No exemplo a seguir, é possível analisar a execução de um cálculo CRC. 44 COMUNICAÇÃO DE DADOS U ni da de 4 NOTA Os dados de entrada são o byte 0xC2 = b 11000010. Como polinômio gerador (=divisor), vamos usar b 100011101. O divisor tem 9 bits (portanto, esse é um polinômio CRC-8), então acrescente 8 bits zero ao padrão de entrada. Alinhe o ‘1’ inicial do divisor com o primeiro ‘1’ do dividente e execute uma divisão passo a passo semelhante à escola, usando a operação XOR para cada bit: ABCDEFGHIJKLMNOP 11000010 00000000 100011101 ---------- 010011001 100011101 ---------- 000101111 100011101 (*) ---------- 001100101 100011101 ---------- 010001001 100011101 ---------- 0 00001111 = 0x0F ABCDEFGHIJKLMNOP O valor CRC real é 0x0F. Observações úteis: 45COMUNICAÇÃO DE DADOS U ni da de 4 • Em cada passo, o primeiro ‘1’ do divisor está sempre alinhado com o primeiro ‘1’ do divisor. Isso implica que o divisor não se move apenas 1 bit à direita por pas- so, mas às vezes também vários passos (por exemplo, como na linha (*)). • Os algoritmos param se o divisor zerar cada bit dos da- dos de entrada reais (sem bytes de preenchimento): os dados de entrada variam da coluna A a H, inclusive. Na última etapa, a coluna H e todas as colunas anteriores contêm 0, então o algoritmo para. • O restante (= CRC) é o valor ‘abaixo’ dos bits zero de preenchimento (coluna I a P). Como adicionamos n by- tes de preenchimento, o valor CRC real também possui n bits. • Apenas o restante em cada etapa é de interesse, o re- sultado real da divisão (quociente) não é, portanto, ras- treado. Verificação CRC O restante é o valor CRC que é transmitido junto com os dados de entrada para o receptor. O receptor pode verificar os dados recebidos calculando o CRC e comparando o valor CRC calculado com o recebido. Ou, mais comumente usado, o valor CRC é anexado diretamente aos dados reais. Em seguida, o receptor calcula o CRC sobre todos os dados (entrada com valor CRC anexado): se o valor CRC for 0, provavel- mente nenhum erro de bit ocorreu durante a transmissão. Veja- mos a verificação de acordo com o último caso, no exemplo de verificação. 46 COMUNICAÇÃO DE DADOS U ni da de 4 NOTA Os dados de transmissão reais (dados de entrada + CRC) seriam b 11000010 00001111. Observe que usamos um CRC de 8 bits, portanto, o valor real do CRC também tem 8 bits. O polinômio gerador é definido estaticamente pelo algoritmo CRC utilizado e por isso é conhecido pelo receptor. ABCDEFGHIJKLMNOP 11000010 00001111 100011101 ....... ----------....... 010011001....... 100011101 ..... ----------...... 000101111...... 100011101 .. ----------... 001100100... 100011101 ----------. 010001110. 100011101 ---------- 000000000 -> Restante é 0, dados ok! ABCDEFGHIJKLMNOP Conceito do registrador de deslocamento CRC Já entendemos como calcular o valor da soma de verificação CRC manualmente, veremos a seguir como implementá-lo. O fluxo de dados de entrada geralmente é bastante longo (mais de 1 bit), portanto, não é possível realizar uma divisão simples como 47COMUNICAÇÃO DE DADOS U ni da de 4 “Dados de entrada % gerador de polinômio”. A computação deve ser realizada passo a passo e aqui o conceito de registrador de deslocamento entra em jogo. Um registrador de deslocamento tem uma largura fixa e pode deslocar seu conteúdo em um bit, removendo o bit na borda direita ou esquerda e deslocando um novo bit na posição liberada. O CRC usa um registrador de deslocamento à esquerda: quando deslocado, o bit mais significativo sai do registrador, o bit na posição MSB-1 move uma posição à esquerda para a posição MSB, o bit na posição MSB-2 para MSB-1 e assim por diante. A posição do bit menos significativo é livre: aqui o próximo bit do fluxo de entrada é deslocado. MSB LSB --- --- --- -- -- --- <-- | | | |.... | | <-- (deslocamento nos bits da mensagem de entrada) --- --- --- -- -- --- O processo de cálculo do CRC usando um registrador de deslocamento é o seguinte: • Inicialize o registrador com 0. • Mudança no fluxo de entrada bit a bit. Se o MSB exibi- do for ‘1’, XOR o valor do registro com o polinômio do gerador. • Se todos os bits de entrada forem manipulados, o regis- trador de deslocamento CRC conterá o valor CRC. 48 COMUNICAÇÃO DE DADOS U ni da de 4 Vejamos como visualizar o procedimento com os dados do exemplo anterior: Exemplo de registrador de deslocamento CRC-8: Dados de entrada = 0xC2 = b11000010 (com 8 bits zero anexados: b1100001000000000), polinômio = b100011101 NOTA 1. Registro CRC-8 inicializado com 0. --- --- --- --- --- --- --- --- | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | <-- b1100001000000000 --- --- --- --- --- --- --- --- 2. Registro de deslocamento à esquerda em uma posição. MSB é 0, entãonada acontece, mude para o próximo byte do fluxo de entrada. --- --- --- --- --- --- --- --- | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | <-- b100001000000000 --- --- --- --- --- --- --- --- 3. Repita essas etapas. Todas as etapas são deixadas de fora até que haja um 1 no MSB (nada de interessante acontece), então o estado se parece com: --- --- --- --- --- --- --- --- | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | <-- b00000000 --- --- --- --- --- --- --- --- 4. Registrador de deslocamento à esquerda. MSB 1 aparece: --- --- --- --- --- --- --- --- 1 <- | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | <-- b0000000 --- --- --- --- --- --- --- --- Portanto, XOR o registro CRC (com MSB salta- do) b110000100 com polinômio b100011101 = b010011001 = 0x99. O MSB é descartado, então o novo valor do registrador CRC é 010011001: 49COMUNICAÇÃO DE DADOS U ni da de 4 --- --- --- --- --- --- --- --- | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | <-- b0000000 --- --- --- --- --- --- --- --- 5. Registro de deslocamento à esquerda. MSB 1 aparece: b100110010 ^ b100011101 = b000101111 = 0x2F: --- --- --- --- --- --- --- --- | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | <-- b000000 --- --- --- --- --- --- --- --- 6. Desloque o registro para a esquerda até que 1 esteja na posição MSB: --- --- --- --- --- --- --- --- | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | <-- b0000 --- --- --- --- --- --- --- --- 7. Registrador de deslocamento à esquerda. MSB 1 aparece: b101111000 ^ b100011101 = b001100101 = 0x65: --- --- --- --- --- --- --- --- | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | <-- b000 --- --- --- --- --- --- --- --- 8. Desloque o registro para a esquerda até que 1 esteja na posição MSB: --- --- --- --- --- --- --- --- | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | <-- b00 --- --- --- --- --- --- --- --- 9. Registrador de deslocamento à esquerda. MSB 1 aparece: b110010100 ^ b100011101 = b010001001 = 0x89: --- --- --- --- --- --- --- --- | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | <-- b0 --- --- --- --- --- --- --- --- 50 COMUNICAÇÃO DE DADOS U ni da de 4 10. Registrador de deslocamento à esquerda. MSB 1 aparece: b10001001 ̂ b100011101 = b000001111 = 0x0F: --- --- --- --- --- --- --- --- | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | <-- <vazio> --- --- --- --- --- --- --- --- Todos os bits de entrada são processados, o algoritmo para. O registrador de deslocamento contém agora o valor CRC que é 0x0F. Implementação de algoritmo CRC-8 Existem diferentes algoritmos e implementações para calcular valores de checksum CRC-8. Neste capitulo, será utilizado o C#, através de algoritmos simples. Um algoritmo CRC-8 usa, na verdade, um polinômio gerador de 9 bits, mas seria complicado rastrear um valor tão desalinhado em um algoritmo. Felizmente, conforme descrito no capítulo anterior, o bit mais significativo pode ser descartado. Primeiro, é sempre 1. Segundo, porque o divisor está sempre alinhado de tal maneira que esse ‘1’ inicial se alinha com o próximo ‘1’ do divisor, e o resultado XOR para esse bit é sempre 0. Isso significa que deixamos para fora o MSB ‘1’, então podemos usar o gerador polinomial b 1 00011101 = 0x1D como o polinômio de exemplo a partir de agora. Vemos na figura a seguir uma implementação que seja o mais próxima possível da abordagem do registrador de deslocamento: public static byte Compute_CRC8_Simple_OneByte_ ShiftReg( byte byteVal) 51COMUNICAÇÃO DE DADOS U ni da de 4 { const byte generator = 0x1D; byte crc = 0; /* registro init crc com 0 */ /* acrescenta 8 bits zero ao byte de entrada */ byte [] inputstream = new byte [] { byteVal, 0x00 }; /* manipula cada bit do fluxo de entrada iterando sobre cada bit de cada byte de entrada */ foreach ( byte b no fluxo de entrada) { for ( int i = 7; i >= 0; i--) { /* checkse MSB estiver definido */ if ((crc & 0x80) != 0) { /* MSB definido, desloque-o para fora do registrador */ crc = ( byte )(crc << 1); /* deslocamento no próximo bit do fluxo de entrada: * Se for 1, defina LSB de crc como 1. * Se for 0, defina LSB de crc como 0. */ crc = (( byte )(b & (1 << i )) != 0) ? ( byte )(crc | 0x01) : ( byte )(crc & 0xFE); /* Executa a ‘divisão’ fazendo XOR no registrador crc com o polinômio gerador */ 52 COMUNICAÇÃO DE DADOS U ni da de 4 crc = ( byte )(crc ^ generator); } senão { /* MSB não definido, desloque-o e desloque-o para o próximo bit do fluxo de entrada. Igual ao anterior, apenas sem divisão */ crc = ( byte )(crc << 1); crc = (( byte )(b & (1 << i)) != 0) ? ( byte )(crc | 0x01) : ( byte )(crc & 0xFE); } } } return crc; } A implementação anterior pode ser complicada. Para simplificar, devem ser realizados os seguintes passos: • Os primeiros 8 deslocamentos à esquerda são inúteis porque o valor CRC é inicializado com 0, portanto, ne- nhuma operação XOR é executada. Isso significa que podemos inicializar o valor CRC diretamente com o byte de entrada. • Portanto, apenas ‘0’ são deixados no fluxo de entra- da (os zeros anexados). Eles não precisam ser expli- citamente deslocados, pois o operador C# leftshift << preenche o LSB com ‘0’ por padrão. 53COMUNICAÇÃO DE DADOS U ni da de 4 • Isso implica que a matriz inputstream não é mais necessária. A aplicação dessas simplificações resulta na seguinte implementação: public static byte Compute_CRC8_Simple_OneByte( byte byteVal) { const byte generator = 0x1D; byte crc = byteVal; /* init crc diretamente com o byte de entrada em vez de 0, evita 8 bitshifts inúteis até que o byte de entrada esteja no registrador crc */ for ( int i = 0; i < 8; i++) { if ((crc & 0x80) != 0) { /* conjunto de bit mais significativo, desloca o registrador crc e executa a operação XOR, levando em consideração o 9º bit definido não salvo */ crc = ( byte )((crc << 1) ^ generator); } senão { /* bit mais significativo não definido, vá para o próximo bit */ crc <<= 1; 54 COMUNICAÇÃO DE DADOS U ni da de 4 } } return crc; } O fato de que o valor crc é deslocado à esquerda por um _antes_ de ser ‘xored’ com o divisor deve ficar claro: é devido ao motivo já discutido que o bit MSB do polinômio gerador não é armazenado / não é usado pelo algoritmo também como é resultado. RESUMINDO Concluímos mais um ponto de aprendizagem im- portante. Você deve ter aprendido que a verifica- ção de redundância cíclica – CRC é um algoritmo de soma de verificação para detectar inconsistên- cia de dados, por exemplo, erros de bit durante a transmissão de dados. O CRC é baseado na divi- são. Os dados de entrada reais são interpretados como um longo fluxo de bits binários (dividente), que é dividido por outro número binário fixo (divi- sor). O restante dessa divisão é o valor da soma de verificação. Vimos que, para cálculo manual, n bits zero são anexados aos dados de entrada antes que o cálculo CRC real (divisão polinomial) seja compu- tado. Vimos que o receptor pode verificar os dados recebidos calculando o CRC e comparando o valor CRC calculado com o recebido. Estudamos que um registrador de deslocamento tem uma largu- ra fixa e pode deslocar seu conteúdo em um bit, removendo o bit na borda direita ou esquerda e deslocando um novo bit na posição liberada. Um algoritmo CRC-8 usa um polinômio gerador de 9 bits, mas seria complicado rastrear um valor tão desalinhado em um algoritmo. 55COMUNICAÇÃO DE DADOS U ni da de 4 Mediçãode erros na transmissão de dados OBJETIVO Ao término deste capítulo, você será capaz de en- tender sobre os tipos de erros, a diferença entre detecção e correção e estudar sobre a medição de taxa de erros. E então? Motivado para desenvolver esta competência? Então, vamos lá. Avante! Tipos de erros Sempre que uma cadeia de bits navega em uma rede de computadores de um ponto a outro, é possível que possa existir algum tipo de alteração causada por interferências, e ela irá causar modificações em relação às características do sinal. IMPORTANTE É preciso entender que um erro de bit se trata do 0 passando a ser 1 e um 1 que passa a ser 0 (FOROUZAN, 2010). Considera-se erro em rajada quando acontece de vários bits terem sido corrompidos. Veremos esse tipo de erro mais à frente. NOTA Em uma transmissão apresentando taxa de 1.200bps, se existisse uma rajada contendo 1/100 s de ruídos impulsivos, poderia causar alteração dos 12 bits de informação ou uma grande parte deles. Vejamos alguns tipos de erros de bit a seguir. Erro de bit 56 COMUNICAÇÃO DE DADOS U ni da de 4 DEFINIÇÃO Definimos o erro de bit quando apenas 1 bit de alguma unidade de dados, como um pacote ou caractere, sofreu alteração de 1 para 0 ou de 0 para 1 (FOROUZAN, 2010). Digamos que exista um grupo em que cada 8 bits corres- pondam a um caractere ASCII, tendo um bit 0 sendo adicionado à esquerda. Na figura a seguir, podemos visualizar o efeito causa- do do erro de bit em uma unidade de dados, em que foi enviado o caractere 00000010 (ASCIISTX), que significa o início de texto, porém, o caractere recebido foi 00001010 (ASCII LF), que significa avanço de linha (FOROUZAN, 2010). Figura 13: Erro de bit Fonte: Forouzan (2010, p. 268). Nas transmissões de dados seriais, os tipos de erros de bit acontecem com uma probabilidade baixa de ocorrência. Fourozan (2010, p. 268) dá um exemplo dizendo: Imagine que dados são enviados a 1 Mbps. Isso signifi- ca que a duração de cada bit é de apenas 1/1.000.000 s, ou seja, 1 µs. Para que ocorra um erro em um úni- co bit, o ruído deve ter uma duração de 1µs, o que é muito raro na prática; normalmente os ruídos duram muito mais que isso. Erro em rajada 57COMUNICAÇÃO DE DADOS U ni da de 4 O tipo erro em rajada acontece quando 2 ou mais bits foram corrompidos em uma unidade de dados, como demonstrado na figura a seguir. Nela vemos o efeito causado por um erro em rajada em uma unidade de dados. Na figura, é demonstrado que foram enviados os seguin- tes bits: 0100010001000011, porém os bits recebidos foram: 0101110101100011. É importante observar que não significa que esse tipo de erro aconteça em bits consecutivos. A medição da ra- jada acontece a partir do primeiro bit até o último, isso quer dizer que alguns bits que estejam entre os bits corrompidos podem ter sido enviados corretamente. Figura 14: Erro em rajada com comprimento 8 Fonte: Forouzan (2010, p. 268). Ocorrência de erros em rajada é mais provável acontecer do que erro de bit. Isso porque na maioria das vezes o tempo do ruído é maior que o tempo de bit, ou seja, quando os dados são afetados pelo ruído, eles afetam diretamente um conjunto de bits. A quantidade de bits que são afetados vai depender da taxa de transmissão de dados e também da duração do ruído. 58 COMUNICAÇÃO DE DADOS U ni da de 4 NOTA Se estiver acontecendo o envio de dados a kbps, poderá acontecer um ruído de 1/100 e isso irá afetar 10 bits. Já caso o envio seja de 1Mbps, esse mesmo ruído poderá chegar a afetar 10.000 bits. Redundância A redundância é considerada o conceito mais importante nos estudos da detecção e correção de erros, isso porque para conseguir detectar ou realizar a correção de erros é preciso fazer o envio extra de alguns bits redundantes que serão enviados junto aos dados. Esses bits são acrescentados pelo próprio emissor para depois serem retirados pelo receptor. A presença desses bits de redundância irá possibilitar que o receptor consiga detectar e corrigir os bits que foram corrompidos. 59COMUNICAÇÃO DE DADOS U ni da de 4 Detecção x Correção IMPORTANTE É preciso compreender que é mais difícil corrigir erros durante a transmissão de dados do que detectá-los. Quando estamos detectando um erro, é verdade que está sendo apenas verificado se houve ou não algum erro. Ou seja, irá gerar como resposta um sim ou não. Não há interesse até mesmo na quantidade de erro, pois apenas um já irá provocar um efeito igual a blocos de bits, que é justamente a mensagem corrompida. Já na correção de erros, faz-se necessária a exati- dão do número de erros corrompidos e, além dis- so, saber a sua localização na mensagem. Nesse caso, são fatores essenciais tanto o número de er- ros como o tamanho da mensagem. Se for preciso corrigir um erro em uma unidade de dados que te- nha 8 bits, será preciso que sejam consideradas 28 possibilidades. Daí já podemos pensar que quanto maior for a quantidade de erros encontrados em uma unidade, maior será o trabalho de corrigi-los. Correção antecipada de erros x retransmissão Existem dois principais métodos de correção de erros, são eles: correção antecipada de erros e correção por retransmissão (FOROUZAN, 2010). • Na correção antecipada de erros, o receptor busca adi- vinhar a mensagem através do uso de bits redundantes. Isso só será possível se o número de erros for pequeno. 60 COMUNICAÇÃO DE DADOS U ni da de 4 • Na correção de erros por retransmissão, o receptor irá detectar a ocorrência de um erro e solicitar ao emissor que a mensagem seja reenviada. Esse reenvio irá acontecer repetidas vezes até que a mensagem chegue ao receptor sem nenhum erro. Nesse tipo de correção, é possível que existam erros que não sejam identificados. Código de erros A implementação da redundância pode acontecer através de diversos métodos de codificação. O emissor faz a adição de bits redundantes por meio de um processo que cria uma relação entre os bits de dados reais e os bits redundantes. O papel do receptor é verificar essa relação entre os conjuntos e assim detectar ou corrigir erros. Em qualquer tipo de esquema de codificação, tanto a razão existente entre os bits de redundância como os bits de dados reais, assim como a eficiência desse processo, são considerados fatores essenciais e determinantes. Os códigos de erros podem ser divididos em: códigos de blocos e códigos convolucionais. Figura 15: Estrutura de um codificador e decodificador Fonte: Forouzan (2010, p. 270). 61COMUNICAÇÃO DE DADOS U ni da de 4 Erros de precisão É possível melhorar a precisão sabendo como os erros ocorrem e como corrigi-los. Vamos entender sobre as fontes de erro de medição e como monitorar termos de erro. Erros de desvio Os erros de desvio ocorrem por causa da alteração do de- sempenho do instrumento ou do sistema de teste após ter sido concluída uma calibração. As principais causas de erros de des- vio são por características de expansão térmica de cabos de in- terconexão dentro do conjunto de teste e estabilidade de conver- são do conversor de frequência de micro-ondas, e sua remoção pode acontecer por recalibração. O intervalo de tempo durante o qual uma calibração permanece precisa irá depender da taxa de desvio que o sistema de teste sofre em seu ambiente de teste. Para minimizar o desvio, é possível fornecer uma temperatura ambiente estável. Erros aleatórios Erros aleatórios não são previsíveis e não podem ser remo- vidos através de correção de erros. Porém, há coisas que podem ser feitas para minimizar seu impacto na precisão da medição. Vejamos as três principais fontes de erros aleatórios. • Erros de ruído do instrumento: ruído são perturbações elétricas indesejadas geradas nos componentes do analisador. Esses distúrbios incluem: Ruído de baixo nível, por causa do piso de ruído de banda larga do receptor. 62 COMUNICAÇÃO DE DADOS U ni da de 4 Ruído de alto nível oudos dados de rastreamento, por causa do piso de ruído e ao ruído de fase da fonte LO existente dentro do conjunto de teste. É possível reduzir os erros de ruído realizando um ou mais dos seguintes procedimentos: Aumentar a potência da fonte para o dispositivo que está sendo medido; esse procedimento apenas causa redução do ruído de baixo nível. Limitar a largura de banda de FI. Aplicar várias médias de varredura de medição. • Erros de repetibilidade de troca: os interruptores de RF mecânicos são utilizados no analisador com a função de alternar as configurações do atenuador da fonte. Muitas vezes, ao serem ativados os interruptores de RF mecânicos, os contatos fecham de modo diferente de quando foram ativados antes. Sempre que isso ocorre, pode afetar de maneira adversa a precisão de uma me- dição. Para reduzir os efeitos de erros de repetibilidade de comutação, basta evitar a comutação das configura- ções do atenuador no decorrer de uma medição crítica. • Erros de repetibilidade do conector: o desgaste do co- nector provoca alterações no desempenho elétrico. Para reduzir os erros de repetibilidade do conector de- vem ser realizadas boas práticas de métodos de cuida- do do conector. 63COMUNICAÇÃO DE DADOS U ni da de 4 Erros sistemáticos Os erros sistemáticos são causados tanto por imperfeições no analisador quanto pela configuração do teste. Esses erros são: • Repetíveis, dessa forma, são previsíveis, além de serem considerados invariantes no tempo. • Caracterizados durante o processo de calibração e re- duzidos matematicamente durante as medições. • Completamente removidos. Há sempre alguns erros residuais devido às limitações durante o processo de calibração. Os erros sistemáticos residuais existentes após a calibração da medição geram imperfeições em: • Padrões de calibração. • Interface do conector. • Cabos de interconexão. • Instrumentação. As medições de reflexão geram os seguintes três erros sistemáticos: • Diretividade. • Correspondência de origem. • Rastreamento de reflexão de resposta de frequência. As medições de transmissão geram os três erros sistemá- ticos: • Isolamento. • Carregamento de correspondência. • Rastreamento de transmissão de resposta de frequên- cia. 64 COMUNICAÇÃO DE DADOS U ni da de 4 Medição de taxa de erro de bits (BER) Taxa de erro de bit, BER, é um parâmetro-chave para medir o desempenho de um canal de dados com ou sem fio. Ao trans- mitir dados de um ponto a outro, o parâmetro-chave é definido com base em quantos erros irão aparecer nos dados presentes na extremidade remota. Como taxa de erro de bit, o BER é aplicável a tudo, des- de links de fibra óptica até ADSL, Wi-Fi, comunicações celulares, links de IoT e muito mais. Mesmo que os links de dados possam utilizar tipos muito diferentes de tecnologia, os fundamentos da avaliação da taxa de erro de bit são exatamente os mesmos. DEFINIÇÃO Uma taxa de erro de bit é definida como a taxa na qual os erros ocorrem em um sistema de transmissão. Isso pode ser traduzido diretamente no número de erros que ocorrem em uma string de determinado número de bits. A definição de taxa de erro de bit é representada pela seguinte fórmula: PARA = Erros/Número Total de Bits Se o meio entre o transmissor e o receptor for bom e a relação sinal/ruído for alta, a taxa de erro de bit será muito pe- quena, chegando até a ser insignificante e sem efeito perceptível no sistema geral, chance de que a taxa de erro de bit precise ser considerada. As razões principais para existir a degradação de um canal de dados e da BER é o caminho de propagação. Ambos os efeitos têm um elemento aleatório para eles: o ruído segue uma função 65COMUNICAÇÃO DE DADOS U ni da de 4 de probabilidade Gaussiana e o modelo de propagação segue um modelo de Rayleigh. Isso significa que a análise das características do canal é normalmente realizada usando-se técnicas de análise estatística. Fatores que afetam a taxa de erro de bit, BER Pode ser visto usando Eb / No, que a taxa de erro de bit, BER, pode ser afetada por vários fatores. Manipulando as variáveis que podem ser controladas, é possível otimizar um sistema para fornecer os níveis de desempenho necessários. Isso normalmente é realizado nos estágios de projeto de um sistema de transmissão de dados, para que os parâmetros de desempenho possam ser ajustados nos estágios iniciais do conceito de projeto. • Interferência: os níveis de interferência presentes em um sistema são geralmente definidos por fatores exter- nos e não podem ser alterados pelo projeto do sistema. No entanto, é possível definir a largura de banda do sis- tema. Ao reduzir a largura de banda, o nível de interfe- rência pode ser reduzido. No entanto, reduzir a largura de banda limita a taxa de transferência de dados que pode ser alcançada. • Aumento da potência do transmissor: também é possí- vel aumentar o nível de potência do sistema para que a potência por bit seja aumentada. Isso deve ser equili- brado com fatores como os níveis de interferência para outros usuários e o impacto do aumento da saída de energia no tamanho do amplificador de potência e con- sumo geral de energia e duração da bateria etc. • Redução da largura de banda: outra abordagem que pode ser adotada para reduzir a taxa de erro de bit é 66 COMUNICAÇÃO DE DADOS U ni da de 4 reduzir a largura de banda. Níveis mais baixos de ruído serão recebidos e, portanto, a relação sinal-ruído me- lhorará. Mais uma vez, isso resulta em uma redução da taxa de transferência de dados atingível. • Modulação de ordem inferior: esquemas de modulação de ordem inferior podem ser usados, mas isso ocorre à custa da taxa de transferência de dados. É necessário balancear todos os fatores disponíveis para atingir uma taxa de erro de bit satisfatória. Normalmente, não é possível atender a todos os requisitos e algumas compensações são necessárias. No entanto, mesmo com uma taxa de erro de bit abaixo do que é idealmente necessário, outras compensações podem ser feitas em termos dos níveis de correção de erro que são introduzidos nos dados que estão sendo transmitidos. Embora mais dados redundantes tenham que ser enviados com níveis mais altos de correção de erros, isso pode ajudar a mascarar os efeitos de quaisquer erros de bit que ocorram, melhorando assim a taxa geral de erros de bit. A taxa de erro de bit, o parâmetro BER, é frequentemente citada para muitos sistemas de comunicação e é um parâmetro- chave usado para determinar quais parâmetros de link devem ser usados, desde a potência até o tipo de modulação. 67COMUNICAÇÃO DE DADOS U ni da de 4 RESUMINDO E então? Como foi seu aprendizado nesse capítulo? Conseguiu atingir os objetivos de aprendizagem proposto? Nesta unidade, você deve ter aprendido que sempre é possível existir alterações causadas por interferências, e elas irão acarretar modifica- ções em relação às características do sinal. Apren- demos que o erro de bit acontece quando apenas 1 bit de alguma unidade de dados, como um pacote ou caractere, sofreu alteração de 1 para 0 ou de 0 para 1. O tipo erro em rajada acontece quando 2 ou mais bits foram corrompidos em uma unidade de dados. É importante observar que esse tipo de erro não significa que aconteça em bits consecuti- vos. Para conseguir detectar ou realizar a correção de erros, é preciso fazer o envio extra de alguns bits redundantes que serão enviados junto aos dados. Esses bits são acrescentados pelo próprio emissor para depois serem retirados pelo receptor. Vimos que, quando estamos detectando um erro, é ver- dade que está sendo apenas verificado se houve ou não algum erro. Já na correção de erros, faz-se necessária a exatidão do número de erros cor- rompidos e, além disso, saber a sua localização na mensagem. Vimos que existem dois principais métodos de correção de erros, são eles: correção antecipada de erros e correção por retransmissão. Oemissor faz a adição de bits redundantes através de um processo que cria uma relação entre os bits de dados reais e os bits redundantes. O papel do receptor é verificar essa relação entre os conjuntos e assim detectar ou corrigir erros. Estudamos que os erros de desvio ocorrem por causa da alteração do desempenho do instrumento ou do sistema de teste após ter sido concluída uma calibração. Er- ros aleatórios não são previsíveis e não podem ser removidos através de correção de erros. Os erros sistemáticos são causados tanto por imperfeições 68 COMUNICAÇÃO DE DADOS U ni da de 4 no analisador quanto pela configuração do teste. Por fim, vimos que a taxa de erro de bit, BER, é um parâmetro-chave para medir o desempenho de um canal de dados com ou sem fio. Uma taxa de erro de bit é definida como a taxa na qual os erros ocorrem em um sistema de transmissão. Isso pode ser traduzido diretamente no número de erros que ocorrem em uma string de determinado número de bits. 69COMUNICAÇÃO DE DADOS U ni da de 4 RE FE RÊ N CI A S ALBINI, L. C. P.; BANNACK, A. Redes Sem Fio. [s.l.]:[s.n.], 2017. FOROUZAN, B. A. Comunicação de dados e redes de computadores. 4. ed. Porto Alegre: AMGH. [s.l.]:[s.n.], 2010. 1134 p. KUROSE, J. F.; ROSS, K. W. Redes de computadores e a internet: uma abordagem top-down. 3. ed. São Paulo: Pearson, 2006. PETERSON, L. L.; DAVIE, B. S. Redes de computadores: uma abordagem de sistemas. 1. ed. Rio de Janeiro: Elsevier, 2004. ROCHOL, J. Comunicação de dados. 1. ed. Porto alegre: Bookman, 2012. TANENBAUM, A. S. Redes de computadores. 1. ed. Rio de Janeiro: Elsevier, 2003. YOUNG, P. H. Técnicas de comunicação eletrônica. 5. ed. São Paulo: Pearson, 2006. Interfaces rs-232 e v.35 e a interface de comunicação serial rs-232 Porta Serial RS-232 Interface V.35 Conectores DB-25 Pinagem RS-232 de 9 pinos Porta RS-485 Diferença entre as portas serial RS-232 e RS-485 Paridade de caractere e paridade combinada Paridade simples e bidirecional Código de verificação de paridade simples Paridade bidimensional Polinômio gerador crc Verificação de redundância cíclica Verificação CRC Conceito do registrador de deslocamento CRC Implementação de algoritmo CRC-8 Medição de erros na transmissão de dados Tipos de erros Erro de bit Erro em rajada Redundância Detecção x Correção Correção antecipada de erros x retransmissão Código de erros Erros de precisão Erros de desvio Erros aleatórios Erros sistemáticos Medição de taxa de erro de bits (BER) Fatores que afetam a taxa de erro de bit, BER
Compartilhar