/simplificador-algebra-booleana

Projeto acadêmico desenvolvido na Universidade Federal de Uberlândia.

Primary LanguageDart

Simplificador de Algebra Booleana ➕


Sumário


Introdução

A eletrônica digital é a área que utiliza dois pulsos representados por 1 e 0. Comandos como if-else, for loop e while loop são provenientes da eletrônica digital.

Representamos os bits 1 e 0 nos sistemas eletrônicos atráves dos níveis de tensão elétrica. Nos Circuitos Integrados (CI) utilizamos os seguintes níveis de tensão:

  • 0V (nível BAIXO ou LOW) que representa o bit 0.
  • 5V (nível ALTO ou HIGH) que representa o bit 1.

Veja a diferença entre um sinal analógico e um sinal digital na figura abaixo.


Sinal analógico vs Sinal Digital


O sinal digital geralmente é representado por uma onda quadrada onde a amplitude máxima representa o bit 1, e a amplitude mínima representa o bit 0.

Assim, o presente repositório tem por objetivo apresentar a aplicação das equações booleanas na área de TI, e como ela pode facilitar o entendimento das portas lógicas AND, NOT, OR, XOR e NOT na construção de placas eletrônicas que compõem o hardware dos computadores modernos.


Portas Lógicas

As portas lógicas são dispositivos que operam com um ou mais sinais de entrada, transformando-os um único sinal de saída LOW ou HIGH. As portas lógicas mais conhecidas são a AND, NOT, NAND, OR, NOR, XOR e XNOR.

Para o estudo da algebra booleana por trás das portas lógicas, iremos recorrer a um instrumento conhecido como Tabela Verdade. A tabela verdade facilita a visualização do valor lógico de um circuito digital.


Tabela verdade


Porta AND

A porta AND gera um sinal de saída em nível alto quando ambos os sinais de entrada estiverem em nível alto. Caso contrário, será gerado um sinal em nível baixo.


Tabela verdade porta AND


A expressão booleana da porta AND é x = A * B. Não confuda isso com a multiplicação convencional que vemos diariamente na matemática clássica, entretanto a OPERAÇÃO AND sobre variáveis booleanas equivale à multiplicação convencional.

A simbologia da porta AND é representada logo abaixo.


Simbologia porta AND


O circuito integrado mais utilizado é o IC7408, que possui 4 portas AND em suas conexões.


Pinagem 7408


Onde:

  • Vcc (alimentação) - Deve ser ligada a 5V
  • GND (aterramento)

Entradas das portas AND:

  • Porta A - 1 e 2
  • Porta B - 4 e 5
  • Porta C - 9 e 10
  • Porta D - 12 e 13

Saídas das portas AND:

  • Porta A - 3
  • Porta B - 6
  • Porta C - 8
  • Porta D - 11

Porta OR

Este dispositivo gera um sinal de saída em nível alto quando uma das entradas ou ambas forem de nível alto. Caso contrário, a saída terá nível lógico baixo. A expressão booleana é dada por x = A + B. O sinal "+" não representa a adição convencional. Caso uma das entradas for 0 e o restante for 1, a saída será 1. Caso ambas forem 0, a saída será 0.


Tabela verdade porta OR


A simbologia da porta OR é representada logo abaixo.


Simbologia porta OR


O circuito integrado mais utilizado é o IC732, que possui 4 portas OR em suas conexões.


Pinagem 7432


Onde:

  • Vcc (alimentação) - Deve ser ligada a 5V
  • GND (aterramento)

Entradas das portas OR:

  • Porta A - 1 e 2
  • Porta B - 4 e 5
  • Porta C - 9 e 10
  • Porta D - 12 e 13

Saídas das portas OR:

  • Porta A - 3
  • Porta B - 6
  • Porta C - 8
  • Porta D - 11

Porta NOT

A porta NOT inverte o sinal de entrada. Está porta possui somente uma entrada.


Tabela verdade porta NOT


A simbologia da porta NOT é representada logo abaixo.


Simbologia porta NOT


O circuito integrado mais utilizado é o IC7404, que possui 6 portas NOT em suas conexões.


Pinagem 7404


Onde:

  • Vcc (alimentação) - Deve ser ligada a 5V
  • GND (aterramento)

Entradas das portas NOT:

  • Porta A - 1
  • Porta B - 3
  • Porta C - 5
  • Porta D - 9
  • Porta E - 11
  • Porta F - 13

Saídas das portas NOT:

  • Porta A - 2
  • Porta B - 4
  • Porta C - 6
  • Porta D - 8
  • Porta E - 10
  • Porta F - 12

Porta NAND

A porta NAND é análoga a AND seguida de uma porta NOT. Apresenta a operação inversa da porta AND.


Tabela verdade porta NAND


A simbologia da porta NAND é representada logo abaixo.


Simbologia porta NAND


O circuito integrado mais utilizado é o IC7400, que possui 4 portas NAND em suas conexões.


Pinagem 7400


Onde:

  • Vcc (alimentação) - Deve ser ligada a 5V
  • GND (aterramento)

Entradas das portas NAND:

  • Porta A - 1 e 2
  • Porta B - 4 e 5
  • Porta C - 9 e 10
  • Porta D - 12 e 13

Saídas das portas NAND:

  • Porta A - 3
  • Porta B - 6
  • Porta C - 8
  • Porta D - 11

Porta NOR

É análago a porta OR seguida de uma porta NOT. Apresenta a operação inversa da porta OR.


Tabela verdade porta NOR


A simbologia da porta NOR é apresentada logo abaixo.


Simbologia porta NOR


O circuito integrado mais utilizado é o IC7402, que possui 4 portas NOR em suas conexões.


Pinagem 7402


Onde:

  • Vcc (alimentação) - Deve ser ligada a 5V
  • GND (aterramento)

Entradas das portas NOR:

  • Porta A - 2 e 3
  • Porta B - 5 e 6
  • Porta C - 8 e 9
  • Porta D - 11 e 12

Saídas das portas NOR:

  • Porta A - 1
  • Porta B - 4
  • Porta C - 10
  • Porta D - 13

Porta XOR

Conhecido como "OR exclusivo", a porta lógica produz uma saída em nível ALTO sempre que as duas entradas estiverem em níveis opostos.


Tabela verdade porta XOR


A simbologia da porta XOR é representada logo abaixo.


Simbologia porta XOR


O circuito integrado mais utilizado é o IC7486, que possui 4 portas XOR em suas conexões.


Pinagem 7486


Onde:

  • Vcc (alimentação) - Deve ser ligada a 5V
  • GND (aterramento)

Entradas das portas XOR:

  • Porta A - 1 e 2
  • Porta B - 4 e 5
  • Porta C - 9 e 10
  • Porta D - 12 e 13

Saídas das portas XOR:

  • Porta A - 3
  • Porta B - 6
  • Porta C - 8
  • Porta D - 11

Porta XNOR

Opera de maneira completamente oposta ao circuito XOR onde gerará uma saída em nível ALTO caso as duas entradas estiverem no mesmo nível lógico.


Tabela verdade porta XNOR


A simbologia da porta XNOR é representada logo abaixo.


Simbologia porta XNOR


O circuito integrado mais utilizado é o IC74266, que possui 4 portas XNOR em suas conexões.


Pinagem 74266


Onde:

  • Vcc (alimentação) - Deve ser ligada a 5V
  • GND (aterramento)

Entradas das portas XNOR:

  • Porta A - 1 e 2
  • Porta B - 5 e 6
  • Porta C - 8 e 9
  • Porta D - 12 e 13

Saídas das portas XNOR:

  • Porta A - 3
  • Porta B - 4
  • Porta C - 10
  • Porta D - 11

Álgebra Booleana

A álgebra booleana é um método que serve para simplificar circuitos lógicos em eletrônica digital que foi criada pelo matemático inglês George Boole em 1854. A lógica booleana permite apenas dois estados de circuito (verdadeiro ou falso), sendo representados por 1 e 0.



As variáveis booleanas 1 e 0 não representam necessariamente números, e sim o estado do nível de tensão de uma variável de entrada ou saída. Para entender melhor isso, será apresentada algumas identidades básicas.


  • Leis Fundamentais

Leis fundamentais da algebra booleana


  • Lei Comutativa

Lei comutativa


  • Lei Distributiva

Lei distributiva


  • Outras identidades

Outras identidades


Lei de DeMorgan

O teorema de DeMorgan é muito útil quando queremos simplificar uma expressão booleana a fim de reduzir o número de portas lógicas durante a montagem do circuito. As identidades da Lei de DeMorgan estão logo abaixo.


Lei de Morgan


Eis os circuitos equivalentes das identidades propostas.




É possível simplificar funções booleanas através de dois métodos:

  1. Método algébrico - Utilizando identidades e leis booleanas.
  2. Método gráfico - Utilizando o método do Mapa de Karnaugh.

Neste artigo, abordaremos o método do Mapa de Karnaugh já que o algoritmo por trás da simplificação é baseado na lógica do mesmo.


Mapa de Karnaugh

O Mapa de Karnaugh (Mapa K) é um método gráfico utilizado para simplificar uma equação lógica ou converter uma tabela-verdade no circuito lógico correspondente, de maneira simples e metódica. Para fins ditáticos e práticos, o algoritmo é restrito a problemas com até quatro variáveis, pois resolver problemas de cinco ou seis variáveis é complicado demais, sem contar a lógica de programação por trás de problemas com mais de quatro variáveis ser bem mais complexa.

Estarei disponibilizando alguns links caso tenha interesse em aprofundar sobre o método de resolução de funções booleanas com o Mapa K, pois não estarei entrando em muito detalhes do passo a passo para não deixar o artigo muito grande.

🔗 Mapa de Karnaugh – Aula 6.1 – ED

🔗 Mapa de Karnaugh de 3 e de 4 variáveis

🔗 Sistemas Digitais: Princípios e Aplicações

Para a construção do Mapa K, foi-se necessário utilizar algumas estrutura de dados como OrderedDict, List e Set. O mapa K foi feito por uma List de no máximo 4 linhas e 4 colunas. A tabela abaixo mostra uma pequnea noção da lógica por trás do mapa.



Veja que as entradas A e B representam as linhas da matriz, enquanto as entradas C e D representam as colunas da matriz.

Antes de fazer a matriz, o algoritmo construiu uma tabela verdade para a montagem do mapa K.

Uma observação importante é sempre deixar a tabela verdade na ordem decrescente para não haver confusões durante sua aplicação.


Sobre o projeto

O projeto foi desenvolvido na linguagem dart utilizando o framework Flutter. O simplificador é um trabalho acadêmico desenvolvido por Arthur Nazário da Costa, juntamente com o professor Júlio Cesar Coelho, estudante do curso de graduação de Engenharia Eletrônica e de Telecomunicações da Universidade Federal de Uberlândia campus Patos de Minas.

O objetivo do trabalho é ajudar os estudantes ou profissionais da área de TI a resolverem problemas envolvendo a área da eletrônica digital. Além disso, o leitor terá uma certa noção de como a Algebra Booleana consegue descrever o comportamento das portas lógicas, que são essenciais para a realização de inúmeros comandos ao usufruir um smartphone, smart tv, notebook, etc.

O código foi por trás de todo o aplicativo foi separado em diversos arquivos .dart a fim de organizar o código para melhor experiência do leitor. Abaixo está uma imagem da tela principal do simplificador.


Tela do app


Para que o aplicativo funcione de forma correta, é preciso utilizar os comandos descritos na legenda no campo de texto. Após escrever a função, basta clicar em "Efetuar Operação" para obter a função simplifica da equação inserida.

Para a resolução das operações, utilizei uma biblioteca que realiza as operações booleanas no formato de String. Ao realizar as operações, escrevi um algoritmo que montasse a tabela-verdade para a construção do Mapa de Karnaugh.

Os códigos do app estão disponíveis na pasta lib.


Desenvolvimento

Foi utilizada as seguintes ferramentas na construção do simplificador.

  • Dart
    • Flutter
    • Android Studio
  • VsCode
    • Prettier
    • Markdown All in One
    • Extensão Dart
    • Extensão Flutter
  • CIs
    • 7404
    • 7432
    • 7486
  • Git
  • Github

Referências

[1] TOCCI, R. J.; WIDMER, N. S.; MOSS, G. L. Sistemas digitais princípios e aplicações. [s.l.] São Paulo Pearson Prentice Hall, 2007.

‌[2] ELETROGATE. Introdução às Portas Lógicas. Disponível em: https://blog.eletrogate.com/introducao-as-portas-logicas/#:~:text=para%20uso%20geral.-. Acesso em: 5 mar. 2023.

‌[3] BARRETO, C. G. Tudo sobre a eletrônica analógica e eletrônica digital! Disponível em: https://automacaoecartoons.com/2020/04/10/eletronica-analogica-eletronica-digital/. Acesso em: 5 mar. 2023.

‌[4] Descubra o que estuda a eletrônica! - Blog da Eletrônica. Disponível em: https://www.blogdaeletronica.com.br/descubra-o-que-estuda-a-eletronica/. Acesso em: 5 mar. 2023.