Código de Convolução Aula 023

Aula 24 · Redes Teórico

Descrição

Esta aula apresenta o código de convolução, um mecanismo de correção de erros que, diferente do código de Hamming, processa um fluxo contínuo de bits em vez de blocos. Por isso é amplamente usado pela NASA em sondas espaciais como as Voyager 1 e 2, além de GSM e redes wireless 802.11. O codificador mantém seu estado interno em seis registradores de memória: a cada novo bit inserido, os valores são deslocados para a direita e uma operação XOR gera os bits de saída, que dependem do bit atual e dos anteriores. A aula demonstra graficamente, passo a passo, o exemplo do livro do Tanenbaum, mostrando como três bits de entrada produzem seis bits adicionais, garantindo boa precisão na transmissão serial.

Transcrição do áudio

Vou agora demonstrar o código de convulsão. Esse código aqui é muito bacana, é utilizado por exemplo pela NASA para algumas sondas espaciais, incluindo a Voyager 1 e 2. É um mecanismo que não requer um boco de dados para o processamento. Ou seja, o código de Hamming precisa de um boco. Esse não, esse eu consigo passar por uma série, um fluxo de bits. Isso é diferente. Isso também é um divisor ali entre vários algoritmos de criptografia. Bom, criptografia é um outro assunto, mas fique você sabendo. Em o código de convulsão, um codificador processa uma sequência, não um boco, de bits de entrada e gera uma sequência de bits de saída. Não existe tamanho de mensagem, limite natural para isso. Não tem essa ideia de boco de transmissão. Então simplesmente um fluxo de bits e aí você vai entender o porquê é tão necessário assim em sonda espacial. Afinal a sonda espacial vai ficar transmitindo um fluxo de bits para a Terra. A saída depende dos bits de entrada atual e naturalmente e anterior. Então quer dizer que preste atenção, o fluxo de bits vai passar e à medida que ele passa pelo meu algoritmo fluxo de bits eu vou confirmando, corrigindo caso necessário. São muito utilizados mesmo, principalmente conforme eu falei, sondas espaciais pela NASA, bem como GSM, modelo de comunicação, já falamos do capítulo de camada física e também 802.11 que é o seu wireless. Então como funciona? Está aqui um desenho do tannibal, ele põe os desenhos muito genéricos. Então imagina que eu tenho uma memória que eu tenho aqui, como eu posso dizer aqui, um número de bits que eu vou trabalhar, 1, 2, 3, 4, 5, 6. Eu sei que você vai falar, porra você falou que não tem boco de bits e agora você me apresenta isso, calma. São posições na memória. Então o fluxo de bits vai entrando aqui e vai caminhando o fluxo de bits e saindo aqui. E aí eu faço o cálculo a cada vez que há uma movimentação de bits. Então vamos lá. O fluxo de bits entra aqui e os bits vão caminhando para lá. E à medida que os bits vão se movimentando, eu vou realizando os cálculos aqui. O cálculo utilizado no livro do tannibal é o mais básico de todos. Eles têm vários algoritmos de convulsão, vários. Bom, mas aqui vamos usar o do tannibal, que é bem simples, que é um for. O tannibal, o tannibal, o machor. O tannibal utiliza o for porque vocês já viram com profundidade, o for em alce, arquitetura e organização de computadores. Sistemas operacionais um teórico. Então vocês chegam aqui, têm embasados nesse assunto. Por isso que o tannibal cobra muito for como um algoritmo ali. Bom, então o estado interno é mantido em seis registradores de memória. É uma profundidade. É uma estuprofundidade. Toda vez que outro bit é inserido, então os valores estão deslocados para a direita. Conforme eu falei, os bits são inseridos aqui e os valores são deslocados até sair em S6. Vai sair para lá. Legal. Então, por exemplo, se for inserido em um logo no início, bom, eu decidi fazer para vocês. Então olha só. Vamos ver como funciona esse exemplo que ele está dando aqui de forma textual. Eu vou colocar para vocês em forma gráfica para vocês entenderem. Então, a princípio eu tenho 0, 0, 0, 0, 0. Nenhuma informação. E aí, eu tenho a primeira entrada, o 1 aqui. Quando eu tenho o 1 aqui, o 0 que estava aqui foi deslocado para cá, o que estava aqui foi deslocado para cá, o que estava aqui foi deslocado para cá, o que estava aqui foi deslocado para cá e o que estava aqui foi deslocado para cá. E o que estava aqui saiu. Certo? Legal. Então, foi inserido um 1 e deslocado todo o resto. Bom, sempre nesse deslocamento, eu faço um cálculo. Por exemplo, aqui entrou um, oh, presta atenção, aqui entrou um. Vamos bem devagar. Ou um aqui. Aqui eu tinha 0. O zero foi para cá, ou seja, aqui não tem nenhum elemento indo para lá. O zero que estava aqui foi deslocado para lá, então o zero foi colocado no cálculo, o zero que estava aqui foi para cá, então o zero foi colocado no cálculo, o zero aqui foi para lá. O zero que estava aqui foi para lá foi colocado no cálculo, o zero que estavam aqui foi colocado no cálculo. de tal forma que nós temos 1, 0, 0, 0, 0, 1. Se você fizer uma operação short, vai dar 1. Ah, foi legal. Vamos dar uma olhada aqui. Quando o 1 entrou aqui, o 1 foi colocado aqui. O 0 que estava aqui foi colocado aqui, aqui, aqui, aqui, aqui. E eu tive então ali como resultado, tá? Dessa primeira execução do algoritmo, 1, 1. Então, a nota lá, 1, 1. Beleza? Tá, vamos nós. Vamos entrar com o próximo 1. Então, quando eu entrei com o próximo 1 aqui, o 1 que estava aqui foi colocado pra cá. O 0 que estava aqui foi colocado pra cá. O 0 que estava aqui foi colocado, foi colocado, foi colocado, certo? Todos andaram. Tá? Legal, então vamos lá. Quando o 1 entrou aqui, eu capturei esse primeiro 1 aqui. O 0 que estava aqui foi pra cá. O 0 estava aqui foi pra cá e eu capturei esse 0 aqui. O 0 que estava aqui foi pra cá, eu capturei esse 0 aqui. O 0 que estava pra cá não foi capturado, o 0 daqui pra lá foi capturado. E o saiu aqui, o 0 está aqui. Isso aqui deu 1. Só 1. Legal. Vamos fazer um cálculo aqui embaixo. O 1 que entrou aqui, eu coloquei aqui na memória. O 1 que estava aqui foi pra cá e aí eu coloquei na memória aqui. Aqui era 0, foi pra lá, 0, 0, 0 e 0. Então, eu tenho 0. Opa, anota aí. Então, nós já temos que anotar. 1, espaço. 1, 0, espaço. Vamos lá. Vamos colocar mais um 1 ali na jogada. Quando eu injetei o 1 aqui, o que estava aqui foi deslocado pra cá. O 1 que estava aqui foi deslocado pra cá. O 0 que estava aqui foi deslocado pra cá. O 0 que estava aqui foi deslocado pra lá e o 0 foi deslocado para lá e o que estava aqui saiu. Foi isso que aconteceu. Então, vamos fazer o cálculo. Capturei o 1 que entrou aqui. Capturei o 1 que estava aqui que foi pra cá, Capturei o 0 que estava aqui que foi pra cá, Capturei o 0 que foi aqui foi pra cá e o 0 que saiu. Então quando eu faço o show, o resultado é zero. Legal. O LOS aqui embaixo. Então eu tenho aqui o 1, eu capto 1, aqui o 1, foi daqui pra cá, coloquei aqui, o 1 foi daqui pra cá, coloquei aqui. Aqui eu tinha o zero que foi pra lá, o zero tá aqui, aqui o zero, tem um zero sobrando, né, e o zero é zero. Deu um, sobrou um zero aqui pelo que eu entendi, tá? Ali no paintbush fazendo. Bom, legal. Então a nota aí é zero 1. Então quer dizer que se você olhar para eu transmitir essa informação, eu também precisei adicionar outros dados a isso. Vamos ver quais são os adicionados. 1, 1, 0 e 0, 1. É um algoritmo que se você olhar e tá querendo transportar três dígitos e consumiu ali seis dígitos a mais, né? Você tem que entender que essa massa de dados aqui de entrada ela é pequena por cálculo que tá sendo feito. Tem algoritmos que conseguem ser mais importantes nesse assunto. São vários algoritmos de código de convulsão. O tempo demonstrou mais básico de todos que algum achou. Mas se você olhar, a precisão dele é muito boa e eu não preciso de um bloco de dados pra conseguir fazer uma operação, uma execução, é serial. Esse código ele tem algumas vantagens frente ao código de handling. É natural que há vários outros algoritmos aqui dentro. Usei o algoritmo mais simples do tannibal. Então quem? No próximo vídeo vou falar sobre o vídeo sólomo e aí depois nós vamos continuar, né? Em outros tópicos que não se são relacionados com o código, tá? Então até o nosso próximo vídeo. Até mais. Tchau.
Voltar ao curso