Em lógica digital, qual é a diferença entre um inversor comum e um inversor Schmitt-trigger?

Resposta publicada originalmente no Quora em 26/07/2019

Em eletrônica:

Um Schmitt trigger é um circuito comparador com histerese implementado pela aplicação de realimentação positiva à entrada não inversora de um comparador ou amplificador diferencial.

Ele é um circuito ativo que converte um sinal de entrada analógica em um sinal de saída digital.

O circuito é chamado de “gatilho” (trigger) porque a saída retém seu valor até que a entrada mude o suficiente para disparar uma mudança no sinal de saída.

O Schimitt trigger possui dois níveis de disparo que são o ‘limiar superior’ e o ‘limiar inferior’ conforme indicado na função de transferência exibida abaixo:

Os eixos horizontal e vertical correspondem respectivamente à tensão de entrada e de saída. T e −T são os limites de comutação, e M e −M são os níveis de tensão de saída.

O diagrama abaixo compara o comportamento de um circuito Schimitt triger com um buffer, ambos não inversores.

Configuração inversora e não inversora:

Na configuração não inversora, quando a entrada é maior que o limiar superior, a saída é alta. Quando a entrada está abaixo do limiar inferior, a saída é baixa e, quando a entrada está entre os limiares inferior e superior, o valor na saída do circuito é constante.

Na configuração inversora, quando a entrada é maior que o limiar superior, a saída é baixa. Quando a entrada está abaixo do limiar inferior, a saída é alta e, quando a entrada está entre os limiares inferior e superior, o valor na saída do circuito é constante.

Esse comportamento de limiar de disparo duplo que o sinal de saída muda quando o sinal de entrada atinge valores limiares distintos, é chamada de histerese. Podemos até dizer que o Schimitt trigger possui memória e pode atuar como um multivibrador biestável (latch ou flip-flop).

Existe uma estreita relação entre os dois tipos de circuitos: um Schimitt trigger pode ser convertido em um latch e vice versa.

Schimitt trigger serve para fazer o condicionamento de sinais em circuitos digitais reduzindo o ruído dos mesmos, particularmente reduzindo (não elimina completamente em alguns casos) o efeito de repique (bounce) de chaves eletromecânicas. Também são utilizados em configurações com feedback em loop negativo, implementando osciladores de relaxamanto que encontram aplicação em geradores de função e fontes de alimentação chaveadas.

Há várias maneiras de se implementar um circuito Schmitt trigger e uma delas seria pela utilização de um amplificador operacional.

Pode-se fazer um conversor analógico-digital utilizando um amplificador operacional cuja entrada analógica recebe o sinal e a saída do amplificador operacional fornece o sinal de saída digital.

Isso é possível por conta do alto ganho do amplificador operacional e quando o sinal passa de um certo limite, a saída satura ou corta imediatamente como em um processo de avalanche.

Abaixo seguem dois diagramas básicos (não são circuitos completos), um utilizando a entrada não inversora e outro utilizando a entrada inversora de um amplificador operacional:

Comparador não inversor:

Para o comparador não inversor os dois resistores R1 e R2 formam um somador de tensão paralela. Ele soma uma parte da tensão de saída à tensão de entrada, aumentando-a durante e após a comutação, que ocorre quando a tensão resultante está próxima de zero. Este feedback positivo paralelo cria a histerese necessária que é controlada pela proporção entre as resistências R1 e R2. A saída do somador de tensão paralela é em relação ao terra, então o circuito não precisa de um amplificador com entrada diferencial. Como os amplificadores operacionais convencionais têm uma entrada diferencial, a entrada inversora é aterrada para criando o ponto de referência zero volts.

Comparador inversor:

Para a versão utilizando o comparador inversor, a atenuação e a soma são separadas. Os dois resistores R1 e R2 atuam apenas como um divisor de tensão (atenuador “puro”). O loop de entrada atua como um somador de tensão simples que soma uma parte da tensão de saída em série à tensão aplicada no circuito de entrada. Este feedback positivo em série cria a histerese necessária que é controlada pela proporção entre as resistências de R1 e a resistência do conjunto R1 e R2. A tensão efetiva aplicada à entrada do amplificador operacional está flutuando, logo, o amplificador operacional deve ter uma entrada diferencial.

Maiores detalhes sobre essa configuração pode ser vista na Wikipedia e está bem detalhada no livro The Art of Electronics.

Na eletrônica digital:

A implementação desse tipo de circuito é representada pelos símbolos abaixo e normalmente estão dentro de circuitos integrados:

Símbolo que representa um Schmitt trigger. Ele possui o desenho de uma curva de histerese dentro do símbolo lógico de um buffer, cuja saída pode ser normal ou inversa (com a bolinha). Detalhes acerca do comportamento de um circuito integrado Schmitt trigger deve ser verificada na documentação do componente, que é fornecida pelo fabricante.

Para saber mais, temos as seguintes opções:

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.

O que é OS Kernel

Resposta publicada no Quora em 16/07/2019

O OS Kernel ou Núcleo do Sistema Operacional é um programa de computador que é o coração do sistema operacional de um computador. Ele tem controle completo sobre tudo que acontece no sistema.

Abaixo tem a estrutura básica de um sistema operacional Unix, situando o modo núcleo.

Fonte: TANENBAUM

E aqui tem a estrutura básica de um sistema operacional Windows 7 situando o modo núcleo do sistema operacional:

Fonte: TANENBAUM

Na maioria dos sistemas ele é um dos primeiros programas a serem carregados na inicialização, logo após do carregador inicial (bootloader). Ele gerencia as demais inicializações assim como as requisições de entrada e saída do software, traduzindo-as em instruções de processamento de dados para o processador do computador. Ele também manuseia a memória e periféricos como teclado, monitor, impressoras e interface de áudio.

O Kernel faz a interface entre o software da aplicação e o hardware do computador.

A parte crítica do código do Kernel é normalmente carregada em uma área separada da memória a qual é protegida de ser acessada pelos programas ou outras partes menos críticas do sistema operacional.

O Kernel executa suas tarefas como rodar processos, gerenciar dispositivos de hardware com o HD, fazer o gerenciamento de interrupções dentro da área protegida do Kernel.

Por outro lado, tudo o que o usuário faz é executado na área do usuário (user space) como escrever um texto no editor de texto, rodar programas em uma interface gráfica (GUI) e etc.

Essa separação previne que os dados dos programas do usuário e os dados do Kernel acabem interferindo um no outro o que pode causar instabilidade no sistema, lentidão no processamento, erros nos programas e até causar erros catastróficos no sistema operacional.

Fonte: Kernel (operating system) – Wikipedia

Fonte das figuras: TANENBAUM, Andrew S.. Organização Estruturada de Computadores. 6. ed. São Paulo: Pearson, 2013. 605 p. ISBN13: 978-85-8143-539-8.

By Renato de Pierri – 16/07/2019

O que é um sistema operacional de tempo real?

Resposta originalmente traduzida no Quora em 06/07/2019.

Sistema Operacional de Tempo Real (Real Time Operating System) é um sistema operacional especializado que é responsável por gerenciar os processos em um sistema de tempo real ( real time system.)

  • Ele é responsável pelo gerenciamento de processos e alocação de recursos.
  • O sistema operacional em tempo real pode ser baseado em um kernel padrão que é usado inalterado ou modificado para uma aplicação específica.
  • Normalmente, não inclui recursos como gerenciamento de arquivos.

Componentes do Sistema Operacional de Tempo Real:

  1. Relógio de tempo real: (Real-time clock) Ele fornece informação para agendamento de tarefas
  2. Gerenciador de interrupções: (Interrupt handler) Gerencia solicitações de serviços assíncronas .
  3. Agendador: (Scheculer) Seleciona o próximo processo a ser executado.
  4. Gerenciador de recursos: (Resource Manager) Aloca os recursos de processador e memória.
  5. Despachante: (Dispatcher) Inicia a execução dos processos.

Os componentes de um sistema operacional de tempo real pode ser conforme abaixo:


-Adição do tradutor Renato de Pierri-

Diferenças entre o sistema operacional de tempo real e o de tempo não real – original: (Differences between Real time and Non-real time Operating system)

Clique na figura para ampliar.

Ashwin Dhakal é autor do livro “Software Engineering” ISBN:978-9937-0-3279-7

Last updated by at .