Projetar um circuito combinacional pode ser um pouco simples, mas passar o projeto do papel para o mundo real pode ser um pouco complicado a princípio. Portanto, vamos projetar um sistema digital e analisar as etapas necessárias para montá-lo.

Na aula anterior, aprendemos um método para facilitar a criação de um circuito combinacional.


Descrição do problema

A ideia deste post é criar e montar um sistema digital simples utilizando os CIs das portas lógicas. Para isto, considere o seguinte exemplo que criei:

É preciso monitorar alguns parâmetros de um reservatório/tanque de água como: temperatura, pressão e nível. Para isto, temos os seguintes indicadores:

  • Temperatura interna > 20ºC. Será chamado de T20.
  • Temperatura interna > 50ºC. Será chamado de T50.
  • Pressão interna normal. Será chamado de PN.
  • Boia superior. Será chamado de BS.

Veja a imagem abaixo que ilustra a situação:

Tanque de água exemplo de problema

Os indicadores serão as entradas do nosso sistema digital e eles possuirão lógica positiva. Isto é:

  • T20 é 1 se a temperatura for maior que 20ºC.
  • T50 é 1 se a temperatura for maior que 50ºC.
  • PN é 1 se a pressão estiver normal.
  • BS é 1 se o nível da água estiver na boia superior.

Por fim, é necessário criar um sistema digital com as seguintes características:

  • O tanque opera em estado normal se a temperatura interna estiver entre 20º e 50ºC e se a pressão interna estiver normal.
  • Deve haver uma saída digital ligada a uma bomba hidráulica. A bomba deve ser ligada se o estado do tanque for normal e se o tanque não estiver cheio (BS em 0).
  • Deve haver outra saída ligada a uma luz de emergência indicando que o sistema não está em estado normal.

A primeira saída será chamada de B e a segunda de E.


Projetando o circuito combinacional

Para projetar o circuito combinacional corretamente, é fundamental fazer uma boa interpretação dos requisitos. Caso contrário, a tabela-verdade pode ser preenchida erroneamente. E, por consequência, o sistema ficará errado.

Como eu criei e descrevi o problema, fica óbvio para mim entender o que é para ser feito. Mas pode não ser o mesmo para você. Portanto, leia o tópico anterior com calma para entender como projetar este sistema.

Desconsiderando a interpretação, projetar o sistema utilizando o mapa de Karnaugh não costuma ser complicado. Portanto, não pretendo explicar todos os detalhes do processo, já que isto foi explicado na aula anterior.

Criando tabela-verdade

Conforme vimos, teremos, então, 4 entradas e 2 saídas. Farei a ordem das entradas na tabela de acordo com a ordem em que elas foram apresentadas: T20, T50, PN e BS.

Para preencher a tabela é importante obedecer às características do sistema. Por exemplo: se a temperatura interna está entre 20 e 50ºC, quer dizer que T20 é 1 e T50 é 0. Se combinar esses estados com PN=1, teremos o estado normal do tanque.

Um detalhe importante a ser mencionado é que: se a temperatura interna for maior que 50ºC, obrigatoriamente ela será maior que 20ºC. Portanto, as linhas da tabela onde T20=0 e T50=1 (abaixo de 20º e acima de 50º) podem ser tratadas como don’t care (X), já que são condições impossíveis de ocorrer.

Entretanto, você pode considerá-las para indicar uma emergência no sistema. Isso porque, se isto acontecer no mundo real, possivelmente quer dizer que um dos sensores estragou. E este tipo de informação é bastante relevante.

Enfim, abaixo está a tabela-verdade preenchida para as duas saídas. Em caso de dúvida, releia as características do sistema.

Tabela-verdade do circuito combinacional

Criando mapas de Karnaugh

Para criar o mapa de Karnaugh, resolvi agrupar as entradas da seguinte forma: T20 e T50; PN e BS. Mas existem outras possibilidades sim.

E é necessário criar um mapa para cada saída. Desta forma, os mapas serão tabelas 4×4.

Saída B (Bomba)

Mapa de Karnaugh da saida B

Neste mapa, não é possível fazer nenhum agrupamento das saídas, pois, em só um quadrado, ela é 1.

Os quadrados com don’t care podem ser ignorados, mas também poderiam ser utilizados para agrupar as saídas. Como não dá para agrupar o 1 com algum don’t care, resta apenas extrair a expressão naquele quadrado:

Mapa de Karnaugh com agrupamentos da saida B

Logo:

B = T20.(¬T50).PN.(¬BS)

Saída E (Emergência)

Mapa de Karnaugh da saida E

Já neste mapa, existem diversos agrupamentos que podem ser feitos. Lembrando que só podem ser duplas, quartetos, octetos… (baseados na potência de 2).

Veja os agrupamentos que fiz na imagem abaixo com a ajuda dos quadrados com don’t care (3 octetos). Eles não são redundantes, pois cada um engloba 1’s que não são englobados por outros.

Mapa de Karnaugh com agrupamentos saida E

Como os agrupamentos englobam diversas condições diferentes, é possível eliminar muitas entradas de uma expressão. Para explicar melhor, vamos considerar o agrupamento verde:

Dentro dele, as variáveis T20 e T50 mudam de valor, pois ele engloba todas as linhas. Além disto, a variável BS também muda de estado. Desta forma, a única entrada que mantém seu valor é PN. E, como PN é 0, ela deve ser barrada para obter a expressão final do agrupamento: (¬PN).

Para obter as outras expressões, basta seguir a mesma lógica. E por fim, para obter a expressão final da saída E, é só somar todas as expressões:

E = (¬T20) + T50 + (¬PN)

Desenhando o circuito combinacional

Antes de fazer a montagem é interessante fazer um desenho do circuito combinacional com as ligações entre as portas lógicas, as entradas e as saídas.

Para este propósito, vou utilizar o software Logisim, que permite inclusive simular o circuito.

Vou desenhar o circuito utilizando apenas portas lógicas de 2 entradas. Isto porque, os CIs mais comuns das portas lógicas são os com apenas 2 entradas. Veja o resultado abaixo:

Circuito combinacional do sistema

O circuito funcionou como o esperado na simulação e, portanto, podemos passar para a montagem.


Escolhendo os CIs das portas lógicas

É extremamente importante ler a aula sobre os CIs das portas lógicas para entender o que eles são.

Para fazer a montagem, é importante conhecer quais são os CIs disponíveis para utilizarmos e como a ligação com eles é feita. Para isto, existe esta lista na Wikipedia mostrando todos os CIs da série 74XXX que é da família TTL.

Você pode escolher o CI de qualquer série ou família que desejar. No meu caso, optei pela série 74XXX, pois são fáceis de achar, são recomendados para aplicações simples e eu já possuía alguns no meu estoque.

Depois da sua escolha, você terá que ficar atento às características elétricas dos CIs da família (fan-out, níveis de tensão etc), conforme foi exposto na aula 4.2. E é importante ler o datasheet dos CIs para verificar outras informações mais específicas de cada um.

De qualquer forma, vou utilizar os CIs:

  • 7404 – 6 portas NOT.
  • 7408 – 4 portas AND de duas entradas.
  • 7432 – 4 portas OR de duas entradas.

Conhecendo os CIs

Após escolher o CI, é importante recorrer ao datasheet (ou ao Google) para verificar a configuração de seus pinos. Para o meu caso, os CIs seguem o padrão de serem alimentados com 5v pelo pino 14 e com GND pelo pino 7.

Enfim, as imagens abaixo mostram como as portas lógicas estão ligadas dentro dos CIs, além de mostrar os pinos de alimentação:

Porta NOT. Fonte: Wikipedia
Porta AND. Fonte: Wikipedia
Porta OR. Fonte: Wikipedia

Como o fan-out da família TTL é 10, não precisarei me preocupar com isto, pois cada CI está ligado a apenas um outro (saída de um na entrada do outro).

E o tempo de propagação neste caso não é um fator importante. Mesmo que fosse, ele está na casa dos nanosegundos, que é um tempo extremamente pequeno.


Montando o circuito combinacional

Como estamos montando um exemplo, pretendo fazer a montagem em uma protoboard. Entretanto, é possível criar o layout do circuito e montá-lo em uma placa de circuito impresso para ter um resultado mais profissional.

Se você não sabe utilizar uma protoboard, recomendo ler este post.

As ligações na protoboard serão feitas com fiozinhos retirados de um cabo de rede. Estes fios são bastante úteis para criar ligações em protótipos, como este caso. Veja um cabo aberto na imagem abaixo:

Fonte: Wikipedia

E, pretendo seguir um padrão de cor dos fios para ligação:

  • Vermelho: 5V.
  • Azul: GND.
  • Verde: Entradas.
  • Marrom: Saídas.
  • Branco e marrom: Interligação entre CIs.

Desta forma, fica mais fácil  de montar e identificar erros de ligação.

O ideal também seria criar um esquemático do circuito combinacional com as ligações apropriadas entre os componentes, mas não farei isso, pois o circuito é relativamente simples.

Entradas

Para simular as entradas, utilizei botões que foram retirados de mouses antigos. Entretanto, você pode usar qualquer push-button que encontrar.

A ideia do botão é que, ao ser pressionado, ele mande um sinal de nível alto (5V) para as portas lógicas apropriadas. Para isto, basta liga-lo, de um lado, nas portas lógicas, e, do outro lado, no 5V.

Além disto, para que a entrada não fique flutuando (estado indeterminado) quando o botão não for pressionado, é necessário colocar um resistor de pull-down em cada entrada. Veja a imagem abaixo para entender.

resistor de pull-down
Resistor de pull-down com uma chave (botão)

No início da minha montagem eu acabei invertendo a lógica anterior: ligando o botão no GND e colocando um resistor de pull-up (10kΩ). Mas, isto foi corrigido posteriormente. A imagem abaixo mostra a ligação dos botões com este erro:

Disposição das entradas (botoes) do circuito combinacional

Saídas

Para simular as saídas, utilizei LEDs: um azul para a saída da bomba e um vermelho para a saída de emergência.

O positivo dos LEDs foi ligado na saída dos CIs e o negativo foi ligado em um resistor de 220Ω. O resistor, por sua vez, foi ligado no GND.

Aprenda a calcular o resistor correto pro LED aqui.

Veja a ligação abaixo:

Disposição das saídas (LEDs) do circuito combinacional

CIs

Depois de ter as entradas e as saídas com as devidas ligações e resistores, recomendo passar para os CIs.

Para começar a ligação, posicione os CIs e ligue primeiro os fios de alimentação. Veja a figura abaixo:

Disposição dos CIs do circuito combinacional

Por fim, é só realizar o restante das ligações: entre as entradas e os CIs; entre os próprios CIs; e entre os CIs e as saídas.


Resultados

Após fazer todas as ligações apropriadamente, alimentei o circuito para verificar se o mesmo estava funcionando.

A princípio ele não se comportou como o esperado. Como eu utilizei cores diferentes para indicas saídas, entradas etc, foi fácil verificar que o circuito estava correto.

O problema foi que esqueci de interligar a barra de alimentação esquerda com a direta do circuito (veja imagem para entender). Em algumas protoboards, esta ligação já vem feita e eu estava contando com isto.

Caso a sua montagem apresente algum erro, uma boa prática é testar a continuidade das ligações com um multímetro. Além disto, verificar os níveis de tensão da alimentação e da saída das portas lógicas também ajuda a identificar o erro.

Enfim, as duas imagens abaixo mostram a montagem completa, incluindo etiquetas nas entradas e saídas que coloquei para facilitar o entendimento do circuito.

Adiante está o vídeo demonstrativo do circuito combinacional.

Observações finais

Apesar da ideia do sistema ser relativamente simples, o processo de montagem do circuito na prática é um pouco complicado a princípio (e demorado). Entretanto, a medida que você vai aprendendo como ligar cada CI, o processo fica mais claro.

E, agora que você já é capaz de montar circuitos combinacionais, não há necessidade de recorrer sempre a um microcontrolador para criar um sistema digital.

Enfim, para finalizar esta parte de circuito combinacional, veremos, na próxima aula, a universalidade das portas NAND e NOR.

Universalidade das portas NAND e NOR – Aula 6.3 – ED