9

Laboratório I

Introdução9.1

Hoje, utilizaremos o Logisim-evolution, uma ferramenta padrão no ensino de sistemas digitais, pois, nos permite testar a teoria da disciplina em tempo real.

Primeiro, você deve dominar a ferramenta de simulação, entendendo como manipular entradas, saídas e conexões através de um exemplo prático inicial. Segundo, você provará empiricamente um conceito fundamental da álgebra booleana: a equivalência lógica. Veremos juntos que uma mesma função pode ser implementada por dois circuitos visualmente distintos: a Soma de Produtos (SOP) e o Produto de Somas (POS) que produzem exatamente o mesmo resultado para qualquer combinação de entrada.

Logisim-evolution9.2

Ao iniciar o software, você encontrará a área de trabalho (Canvas), que simula uma protoboard infinita. É crucial que você entenda a distinção funcional das ferramentas agora, para evitar frustrações comuns durante a montagem. Abrindo o programa você deve ver algo semelhante à imagem abaixo (v4.0.0).

Área de trabalho do logisim-evolution.

Localizada no topo da janela, a barra define como o seu mouse interage com o circuito. Existem dois modos principais que você alternará constantemente:

  1. Ferramenta de Edição (Seta Preta): Esta é a sua ferramenta de construção "com o circuito desligado". Utilize-a para selecionar componentes, mover peças e, principalmente, criar conexões (fios) clicando e arrastando de um ponto a outro. Se você precisar corrigir um erro de ligação, é com esta ferramenta que você selecionará o fio para deletá-lo.
  2. Ferramenta de Simulação (Mãozinha / "Poke"): Esta ferramenta coloca o circuito em modo interativo, "ligando a energia". Utilize-a para alternar o estado das chaves (0 para 1 e vice-versa) e testar seu circuito em tempo real. Lembre-se: se você tentar clicar em uma chave com a seta preta, você apenas a selecionará, sem alterar seu valor. Para interagir, use sempre a mãozinha.

Na eletrônica digital, a direcionalidade é fundamental. O sinal flui da entrada para a saída, nunca o contrário. Podemos adicionar entradas e saídas com os elementos abaixo:

  • Input Pin (Entrada): Representado por uma seta ou um quadrado (geralmente verde). Ele atua como uma chave ou sensor. Você, como usuário, define o valor dele (0 ou 1) usando a ferramenta de simulação.
  • Output Pin (Saída): Representado por uma seta virada ou um círculo. Ele atua como um LED ou ponta de prova. Você não pode mudar o valor dele clicando; ele é um elemento passivo que apenas exibe o resultado do processamento lógico realizado pelo seu circuito.

Circuito Simples (AND)9.3

Antes de avançarmos para problemas complexos, vamos garantir que você domina a mecânica básica de conexão. Para isso, implementaremos a função mais fundamental da lógica digital: $S = A \cdot B$ (AND).

  1. Inserção: Na barra de ferramentas, clique no ícone do Input Pin e clique no Canvas para criar uma entrada, faça isso duas vezes para termos duas entradas distintas.

  2. Propriedades e Nomes: Selecione o primeiro input com a Seta Preta. Olhe para a tabela de propriedades no canto inferior esquerdo da tela. Encontre o campo Label e digite A. Repita o processo para o segundo pino, nomeando-o B. A documentação correta começa aqui; sem nomes, um circuito grande se torna ilegível rapidamente.

  3. Lógica: No menu lateral esquerdo (Árvore de Componentes), abra a pasta Gates e selecione a porta AND. Coloque-a no Canvas à direita das entradas.

  4. Wiring (Cabeamento): Aproxime o mouse do ponto de conexão do pino A até ver um pequeno círculo verde brilhar. Clique e arraste até a entrada superior da porta AND. Faça o mesmo para conectar B à entrada inferior.

  5. Saída: Insira um Output Pin e conecte-o à saída da porta AND.

  6. Teste: Selecione a ferramenta Poke (Mãozinha). Clique nas entradas A e B. O LED acende apenas quando ambas as chaves estão ligadas (1 e 1).

Esse processo simples pode ser seguido para implementar o restante desse laboratório, conforme formos avançando na disciplina iremos aprender e utilizar alguns conceitos mais avançados do logisim-evolution.

Entretanto, uma coisa útil desde o início e poder criar vários circuitos em um mesmo arquivo do programa para, por exemplo, salvar todos circuitos desse laboratório em apenas um arquivo e não em vários arquivos distintos. Para isso, na barra lateral (onde clicou para selecionar a porta AND) clique com o botão direito no nome do seu arquivo (se não tiver salvo ainda aparecerá como Untitled) vá em "Add circuit" e dê um nome. Para trocar de circuito basta dar dois cliques com o botão esquerdo do mouse sobre o circuito desejado.

Roteiro9.4

Agora que temos uma noção básica sobre a interface do programa, realizaremos três exercícios rápidos para fixar a manipulação de portas lógicas e a estrutura das expressões booleanas.

Exercício 19.4.1

A forma SOP é caracterizada por uma camada de portas AND (que realizam os produtos lógicos) alimentando uma única porta OR (que realiza a soma lógica). Vamos implementar a função simples $S = (A \cdot B) + C$.

  1. Insira três Input Pins e nomeie-os como A, B e C.
  2. Arraste uma porta AND e conecte A e B às suas entradas. Isso isola o termo $(A \cdot B)$.
  3. Arraste uma porta OR. Conecte a saída da porta AND em uma das entradas da OR.
  4. Conecte a entrada C diretamente na outra entrada da porta OR.
  5. Finalize conectando um Output Pin à saída da OR.
  6. Use a ferramenta de simulação. Note que se $C=1$, a saída deve acender imediatamente, independente do estado de A e B. Isso ocorre porque, na porta OR, basta uma entrada verdadeira para ativar a saída.

O circuito resultante deve ser parecido com o esquema abaixo:

2026-02-27T18:15:53.495688image/svg+xmlMatplotlib v3.10.8, https://matplotlib.org/SCAB

Exercício 29.4.2

A forma POS opera pela lógica dual: uma camada de portas OR (somas) alimenta uma porta AND (produto). Implemente a função $S = (A + B) \cdot C$.

  1. Crie novas entradas A, B, C em uma área limpa do Canvas.
  2. Utilize uma porta OR para somar A e B.
  3. A saída dessa OR deve entrar em uma porta AND.
  4. A entrada C deve ser conectada à outra perna da porta AND.
  5. Para o LED acender, você precisa obrigatoriamente que $C=1$ E que a soma $(A+B)$ também seja verdadeira. Perceba como a porta AND final atua como um "porteiro", exigindo que todas as condições (somas) anteriores sejam satisfeitas.

O circuito resultante deve ser parecido com o esquema abaixo:

2026-02-27T18:15:53.510567image/svg+xmlMatplotlib v3.10.8, https://matplotlib.org/SCAB

Exercício 39.4.3

Considere a pequena tabela-verdade abaixo para um circuito de duas entradas:

$$ \begin{array}{c|c||c} A & B & S \\ \hline 0 & 0 & 0 \\ 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\ \end{array} $$

Se você observar os mintermos (as linhas onde a saída é 1), temos as linhas 1 ($A=0, B=1$) e 2 ($A=1, B=0$). A expressão SOP extraída é $S = \bar{A}B + A\bar{B}$ ou ainda $S = \sum m(1, 2)$.

Implemente este circuito no Logisim. Diferente dos anteriores, aqui você precisará de portas NOT para criar os sinais barrados ($\bar{A}$ e $\bar{B}$) antes de eles entrarem nas portas AND, você poderá arrastá-las para a área de trabalho assim como fez para a porta AND. Este circuito é a famosa porta XOR (Ou-Exclusivo), essencial em operações aritméticas binárias.

Exercício 49.5

Agora que você domina a construção, vamos ao objetivo principal do laboratório: provar que as formas canônicas SOP e POS, embora diferentes visualmente, são logicamente idênticas. Utilizaremos a seguinte especificação (Tabela-Verdade):

$$ \begin{array}{c|c|c|c|c} \textbf{Índice} & \mathbf{A} & \mathbf{B} & \mathbf{C} & \textbf{Saída } f(A,B,C) \\ \hline \mathbf{0} & 0 & 0 & 0 & \mathbf{0} \\ \mathbf{1} & 0 & 0 & 1 & \mathbf{1} \\ \mathbf{2} & 0 & 1 & 0 & \mathbf{0} \\ \mathbf{3} & 0 & 1 & 1 & \mathbf{1} \\ \mathbf{4} & 1 & 0 & 0 & \mathbf{0} \\ \mathbf{5} & 1 & 0 & 1 & \mathbf{1} \\ \mathbf{6} & 1 & 1 & 0 & \mathbf{1} \\ \mathbf{7} & 1 & 1 & 1 & \mathbf{0} \\ \end{array} $$

Circuitos complexos viram um "espaguete" de fios rapidamente, o que dificulta a identificação de erros. Para evitar isso, utilizaremos uma técnica muito famosa: o barramento. Isso organiza os sinais disponíveis como se fossem trilhos de energia.

  1. Insira 3 entradas no topo da tela ($A, B, C$) e mude a propriedade Facing para South (Sul).
  2. Puxe fios longos verticais para baixo a partir de cada entrada.
  3. Insira portas NOT conectadas a cada linha principal e crie linhas verticais paralelas para os sinais invertidos ($\bar{A}, \bar{B}, \bar{C}$).
  4. Ao final, você terá 6 "trilhos" verticais disponíveis ($A, \bar{A}, B, \bar{B}, C, \bar{C}$) para conectar qualquer porta ao longo do circuito. Semelhante à imagem abaixo:
Organização e Integridade

Além da organização visual, essa técnica garante a integridade do teste: ao conectar ambos os circuitos (SOP e POS) a este mesmo barramento, garantimos que eles recebam exatamente os mesmos sinais de entrada simultaneamente.

Agora que temos o barramento, vamos começar a montar os circuitos. Iremos montar o mesmo circuito duas vezes, entretanto, uma na forma SOP e outra na forma POS. Iremos começar com a forma SOP, focando apenas nas linhas onde a Saída é 1. Olhando a tabela, identificamos os índices 1, 3, 5 e 6.

Lembre-se da regra dos mintermos: queremos criar uma porta AND que detecte uma combinação específica. Se a entrada na tabela é 0, usamos a variável barrada (para que o 0 vire 1 e ative a AND); se é 1, usamos a normal.

  • $m_1 (001) \to \bar{A}\bar{B}C$
  • $m_3 (011) \to \bar{A}BC$
  • $m_5 (101) \to A\bar{B}C$
  • $m_6 (110) \to AB\bar{C}$

Implemente isso usando 4 portas AND conectadas aos trilhos do seu barramento. Para colocar 3 entradas em cada porta, clique em cima da porta com o botão esquerdo do mouse e vá na opção "Number of Inputs" no menu lateral de propriedades. Por fim, todas as saídas das portas AND devem entrar em uma grande porta OR de 5 entradas. Nomeie a saída final dessa OR como Saida_SOP.

Agora, para forma POS, focamos nas linhas onde a Saída é 0 (índices 0, 2, 4 e 7). Aqui a lógica é inversa (Dualidade): queremos bloquear as combinações indesejadas. Se a variável na tabela é 1, nós a invertemos para que ela chegue como 0 na porta OR (lembre-se que a porta OR só resulta em 0 se todas as entradas forem 0).

  • $M_0 (000) \to (A + B + C)$
  • $M_2 (010) \to (A + \bar{B} + C)$
  • $M_4 (100) \to (\bar{A} + B + C)$
  • $M_7 (111) \to (\bar{A} + \bar{B} + \bar{C})$

Implemente usando 4 portas OR de 3 entradas. Conecte as saídas dessas portas OR em uma única porta AND final. Nomeie a saída como Saida_POS. O resultado final deve ser algo parecido com à imagem abaixo:

Agora você tem dois circuitos distintos no mesmo canvas, ambos alimentados pelo mesmo barramento. Selecione a ferramenta de simulação (mãozinha) e teste todas as 8 combinações da tabela verdade (000 até 111).

Observe os LEDs de saída. Se o projeto estiver correto, Saida_SOP e Saida_POS devem acender e apagar em perfeita sincronia. Se em algum momento um acender e o outro não, revise suas conexões naquele termo específico.

Questões9.6

Para garantir que você realmente dominou o Logisim e os conceitos de formas canônicas, tente resolver os desafios abaixo.

  1. Implemente a função abaixo. Note que o primeiro termo tem apenas duas variáveis, enquanto o segundo tem três. $$S = \bar{A}B + A\bar{B}C$$ Dica: Você precisará de uma porta AND de 2 entradas e outra de 3 entradas. A porta OR final receberá o resultado de ambas.

  2. Implemente a função POS a seguir, atentando-se aos parênteses. $$S = (A + \bar{B}) \cdot (\bar{A} + C)$$ Dica: Construa primeiro os blocos dentro dos parênteses usando portas OR, depois una tudo com uma AND.

  3. Você foi contratado para criar um circuito que vota "Sim" (1) sempre que a maioria das entradas for 1. Observe a tabela verdade abaixo e desenhe o circuito no Logisim usando a forma SOP (foque nos 1s).

$$ \begin{array}{c|c|c|c|c} \textbf{Índice} & \mathbf{A} & \mathbf{B} & \mathbf{C} & \textbf{Saída} \\ \hline \mathbf{0} & 0 & 0 & 0 & 0 \\ \mathbf{1} & 0 & 0 & 1 & 0 \\ \mathbf{2} & 0 & 1 & 0 & 0 \\ \mathbf{3} & 0 & 1 & 1 & 1 \\ \mathbf{4} & 1 & 0 & 0 & 0 \\ \mathbf{5} & 1 & 0 & 1 & 1 \\ \mathbf{6} & 1 & 1 & 0 & 1 \\ \mathbf{7} & 1 & 1 & 1 & 1 \\ \end{array} $$

Verificação: Ao testar, seu circuito deve acender o LED apenas quando duas ou mais chaves estiverem ligadas.

Próximos passos9.7

Conteúdo em desenvolvimento!

Este conteúdo ainda não foi finalizado. Assim que estiver completo, este aviso será atualizado com o link correspondente.