Em computação e lógica digital, como funciona o código Gray e qual é a sua aplicação?

Texto publicado inicialmente no Quora em 23/07/2019

O código binário refletido (reflected binary code – RBC), também conhecido como código binário refletido (reflected binary RB) ou código cinza (Gray code – depois dos estudos de Frank Gray), consiste da ordenação do sistema numeral binário de maneira tal que dois valores binários sucessivos tenham apenas um bit de diferença entre ambos.

O código Gray foi inicialmente projetado para minimizar o efeito de ruídos aleatórios causados pelo chaveamento de dispositivos eletromecânicos como relés.

Hoje em dia o código Gray é largamente utilizado para facilitar a correção de erros em sistemas de comunicação digital como em televisão e em alguns sistemas de TV a cabo.

Considerando um sistema de posicionamento eletromecânico que faz uso de uma contagem binária, é muito improvável que interruptores físicos consigam comutar simultaneamente à medida que ocorre o posicionamento desse sistema e essa falta de sincronismo causa ruídos no circuito. Para contornar essa limitação, foi criado o Gray Code, que somente uma chave por vez muda de estado à medida que o posicionamento acontece, contornando o problema da falta sincronização na atuação das chaves mecânicas.

Abaixo segue uma tabela exibindo a diferença entre o código binário e o código Gray. Conforme dito, note que no código Gray, apenas um bit muda entre o valor anterior e o valor posterior.

Aplicações:

Em matemática pode ser aplicado na resolução do problema da Torre de Hanoi.

Émile Baudot utilizou o código Gray nos telégrafos em 1878.

Frank Gray patenteou em 1953 um método para converter sinais analógicos para o código Gray utilizando válvula,que fez o sistema “pegar o seu nome”.

Minimização de circuitos booleanos (lógica digital) na rotulação dos eixos do mapa de Karnaugh.

É utilizado em sistemas de posicionamento tanto lineares como rotativos (encoder). Inicialmente era eletromecânico e atualmente utiliza sensores óticos, de efeito hall ou usa outras tecnologias eletrônicas.

Figura: Petruzella

Também pode ser aplicado em outras áreas como algoritmos genéticos, minimização de circuitos eletrônicos e correção de erros, por exemplo.

Fontes:

Wikipedia

PETRUZELLA, Frank D.. Programmable Logic Controllers. 4. ed. New York: Mc Graw Hill, 2005. 396 p. ISBN 978-0-07-351088-0.

Como é que o som de uma música é convertido em sinal digital e armazenado na memória do computador?

Resposta originalmente postada no Quora em 22/07/2019

À medida que o tempo passa e que uma música é tocada conforme indicado na figura abaixo, ocorre o seguinte processo:

Diagrama geral da conversão Analógica para digital
  1. Um sistema de sincronismo, gera um sinal de clock que vai sincronizar o trabalho todo.
  2. Esse sinal de clock de tempos em tempos dispara uma ordem para que seja “tirada uma foto” da música que está tocando. Em outras palavras: o clock aciona um circuito para tirar uma amostra do sinal de áudio.
  3. Essa amostra do sinal de áudio corresponde ao volume do som que está sendo tocado, é uma voltagem que pode ser maior ou menor.
  4. Esse amostra indicando a intensidade instantânea do som é enviada para um conversor analógico digital que converte esse valor para um número digital, composto por zeros e uns.
  5. Por último esse número digital é gravado na memória.

Na hora de tocar a música, basta fazer o caminho contrário: Ir lendo na mesma velocidade que foram gravados esses números e ir convertendo esses números para intensidade de som (converter de digital para analógico) para depois acionar o alto falante e reproduzir a música.

Abaixo tem o diagrama em blocos de um circuito integrado conversor Analógico – Digital mais antiguinho com saída em dados paralela (D0 – D9) para ser gravado na memória:


E aqui o diagrama em blocos de um conversor Analógico – Digital, mais moderno com interface SPI para conectar em um Arduino, por exemplo:

Qual é o significado de ‘ativo baixo’ e ‘ativo alto’ em circuitos digitais e projetos lógicos?

Pergunta originalmente postada o Quora, em nov/2016

Em circuitos digitais quando:

Um sinal é ‘ativo baixo’, significa que o sinal irá executar sua função quando seu nível lógico for 0

Um sinal é ‘ativo alto’, significa que o sinal irá executar sua função quando seu nível lógico for 1

Considerando o sinal ‘habilita_clock’, a figura abaixo mostra um exemplo de sinal ativo alto no lado esquerdo e um exemplo de sinal ativo baixo no lado direito da figura.

Diferença entre ‘ativo alto’ e ‘ativo baixo’.

Simples assim. Espero que ajude. Dê uma setinha para cima se você achar útil.

O que você faz para deixar seu computador mais rápido?

Post originalmente publicado no Quora em 05/07/2019

Tem várias coisas que podem ser feitas para otimizar o Windows.

Muito do que vou falar aqui, se você não souber o que está fazendo vai dar dor de cabeça, mas é o caminho para deixar a máquina zerada se você souber COMO APLICAR as sugestões. Para deixar claro, siga POR SUA CONTA E RISCO. Se for menor de idade, esteja acompanhado de um adulto … responsável é claro.

Criar um ponto de restauração antes de começar a mexer nisso tudo.

  • Trocar o HD por SSD, de longe a melhor opção.
  • Dobrar a quantidade de memória, se der colocar o máximo de memória que seu computador suportar.
  • Assegurar que seu Windows 10 seja de 64 bits.
  • Desinstalar todos os otimizadores freeware e antivírus e deixar apenas o Windows Defender.
  • Instalar o gerenciador de pacotes Chocolatey e instalar os softwares a partir dele ou usar os sites oficiais de cada desenvolvedor. Nada site de downloads brasileiros. Ah, tem também o Sourceforge que tem código aberto.
  • Usar o MSOffice para estudantes pela escola ou assinar o pacote o MSOffice.
  • Zero pirataria, usar Gimp, Inkscape por exemplo. Se precisa editar vídeo compre um editor tipo CorelVideoStudio.
  • WinRar é pago, utilizar 7zip no lugar.
  • Ir no “Painel de Controle” -> “Programas e Recursos” e desinstale tudo o que você não usa, inclusive o leitor de pdf Acrobat Reader que é um saco e fica atualizando uma vez por semana.
  • Instale o leitor de ebook “Sumatra PDF” no lugar do Acrobat Reader. Ele é leve, open source, não fica atualizando, abre ebooks e roda bem.
  • Exibir no menu da barra de tarefas os ícones ocultos, ver todos programas ativos e desativar tudo o que for possível. Por exemplo Skype, Atualização do Java, Atualização do Adobe e por aí afora.
  • Abrir o agendador de tarefas, ir na pasta “Biblioteca do Agendador de Tarefas”, analisar quais tarefas que estão agendadas e remover as que forem desnecessárias. Por exemplo, caso você não use o Chrome, por que vai deixar ativo o Google update? Remove ele.
  • Abrir o gerenciador de serviços, listar os serviços em execução e tentar identificar serviços estranhos ao Windows. Normalmente esses serviços não possuem descrição alguma. Descobrir o que eles fazem e verificar se é o caso de desativá-los. Antes que alguém surte, já vou avisando que o serviço Warsaw é do Internet Banking do Banco do Brasil, há outros sem descrição, mas cabe análise antes de resolver se deve desativar o serviço ou não.
  • Abrir o gerenciador de tarefas, ir na aba Inicializar e verificar os aplicativos que são ligados quando o Windows é inicializado. Entender o que eles fazem e desabilitar os que forem desnecessários ou que puderem ser inicializados manualmente.

Se não falei ainda: Desinstale TODOS otimizadores de desempenho que existirem instalados na máquina.

Devo ter esquecido alguma coisa, mas é por aí.