Explorador de Portas Lógicas

clica nas entradas e vê os sinais fluir pelas portas

A carregar a simulação interativa...

Só com NAND é possível construir qualquer circuito 🖖

NAND é funcionalmente completo. Podes construir NOT, AND e OR inteiramente com combinações de NAND, razão pela qual muitos chips reais preferem um pequeno conjunto de portas primitivas.

Cada porta é uma minúscula decisão sim/não 🖖

Uma porta lógica lê suas entradas como HIGH (1) ou LOW (0) e produz um único 1 ou 0 segundo uma regra fixa: AND quer ambas altas, OR pelo menos uma, XOR quer que elas difiram. A tabela verdade abaixo é a definição completa da porta: cada combinação de entradas com sua saída, e não há mais nada a saber. Empilhe decisões pequenas o bastante e você obtém somadores, memória e, por fim, um processador inteiro.

Um circuito correto ainda pode piscar 🖖

Os sinais não chegam instantaneamente: cada porta acrescenta um pequeno atraso de propagação, e dois caminhos até a mesma saída podem ter comprimentos diferentes. Quando uma entrada muda, a saída pode mostrar por um instante o valor errado antes de se estabilizar, o que se chama glitch ou hazard, mesmo que a tabela verdade esteja perfeitamente correta. Observe a tira de temporização: a borda de saída segue a de entrada exatamente por esse atraso de porta, e em circuitos de várias portas esses atrasos se acumulam em corridas visíveis.

LÓGICA DIGITAL — QUAL BLOCO FAZ O SERVIÇO?

Em que caso lógico você está?

Todo circuito digital é uma tabela-verdade fantasiada de esquema. A pergunta nunca é o que uma porta faz, e sim de que tabela você precisa: uma decisão tirada de dois bits, uma família lógica inteira construída a partir de uma única peça, aritmética com o seu vai-um, ou uma chave que escolhe um sinal entre vários. Estes quatro casos cobrem quase tudo o que um primeiro curso pede.

Uma decisão a partir de dois bits — escolha a porta pela coluna Y = A ⊕ B
Só há um tipo de porta disponível — NAND basta NOT A = NAND(A, A)
Aritmética, não decisão — a soma é XOR, o vai-um é AND S = A ⊕ B, C = A ∧ B
Escolher em vez de combinar — use um multiplexador Y = A·¬S + B·S

01

Uma decisão a partir de dois bits — escolha a porta pela coluna

O que você sabe: Duas entradas, uma saída e uma regra que cabe em quatro linhas. Escolha a porta cuja coluna de saída bate com a regra que você quer.

Lógica: Y = A ⊕ B

Exemplo resolvido: XOR com A = 1 e B = 0 dá 1; a mesma porta dá 0 sempre que as duas entradas coincidem

Abrir este caso: XOR difere
Uma decisão a partir de dois bits — escolha a porta pela coluna. Quatro linhas fixam a porta por completo; a linha destacada é a entrada que você definiu. Duas entradas, uma saída e uma regra que cabe em quatro linhas. Escolha a porta cuja coluna de saída bate com a regra que você quer.
Quatro linhas fixam a porta por completo; a linha destacada é a entrada que você definiu.

02

Só há um tipo de porta disponível — NAND basta

O que você sabe: NAND é funcionalmente completa. Qualquer outra porta pode ser montada só com cópias dela e, com isso, qualquer circuito que você consiga descrever por uma tabela-verdade.

Lógica: NOT A = NAND(A, A)

Exemplo resolvido: NAND(1, 1) = 0. Ligue as duas entradas e NAND(A, A) = NOT A; realimentando isso, duas NAND fazem um AND

Abrir este caso: NAND universal
Só há um tipo de porta disponível — NAND basta. Uma NAND com as entradas ligadas é um inversor, e é sobre esse truque que se apoia todo o resto. NAND é funcionalmente completa. Qualquer outra porta pode ser montada só com cópias dela e, com isso, qualquer circuito que você consiga descrever por uma tabela-verdade.
Uma NAND com as entradas ligadas é um inversor, e é sobre esse truque que se apoia todo o resto.

03

Aritmética, não decisão — a soma é XOR, o vai-um é AND

O que você sabe: Somar dois bits produz uma resposta de dois bits. O bit baixo é A XOR B e o alto, o vai-um, é A AND B.

Lógica: S = A ⊕ B, C = A ∧ B

Exemplo resolvido: 1 + 1 dá soma = 0 e vai-um = 1, ou seja, 10 em binário — a única das quatro linhas em que o vai-um dispara

Abrir este caso: meio-som. 1+1
Aritmética, não decisão — a soma é XOR, o vai-um é AND. As mesmas duas entradas alimentam as duas portas: XOR produz o bit de soma, AND produz o vai-um. Somar dois bits produz uma resposta de dois bits. O bit baixo é A XOR B e o alto, o vai-um, é A AND B.
As mesmas duas entradas alimentam as duas portas: XOR produz o bit de soma, AND produz o vai-um.

04

Escolher em vez de combinar — use um multiplexador

O que você sabe: Duas entradas de dados e uma linha de seleção. A saída copia a entrada para a qual a seleção aponta e ignora a outra por completo.

Lógica: Y = A·¬S + B·S

Exemplo resolvido: A = 0, B = 1, S = 1 → saída = 1, pois saída = A·(NOT S) + B·S

Abrir este caso: selecção MUX
Escolher em vez de combinar — use um multiplexador. A linha de seleção encaminha uma entrada para a saída e bloqueia a outra. Duas entradas de dados e uma linha de seleção. A saída copia a entrada para a qual a seleção aponta e ignora a outra por completo.
A linha de seleção encaminha uma entrada para a saída e bloqueia a outra.
Referências (1)

Problema resolvido na íntegra

  1. Um meio somador construído apenas com portas NAND, e por que razão cinco é o limite mínimo 8 passos

    Uma fábrica de semicondutores vende-lhe um componente e um componente apenas: a porta NAND de duas entradas. Construa o meio somador que a ferramenta desenha em Meio Somador — um bit de soma, um bit de transporte — sem usar mais nada. De quantas portas NAND precisa, e como saberia que tinha encontrado o circuito mais barato?

    A B & G1 & G2 & G3 & G4 S & G5 C
    1. Comece com o NOT, que é a função mais barata em que uma NAND se pode converter. Ligue ambas as suas entradas ao mesmo fio. A porta pergunta "ambas as entradas estão no nível alto?", e como ambas são A, responde sempre que A não estiver.

    2. O AND custa mais uma. Uma NAND já é um AND com a resposta invertida, por isso volte a invertê-la: encaminhe a saída para um NOT, que pelo passo 1 é uma segunda NAND com as entradas ligadas entre si. O OR exige três, invertendo cada entrada antes de uma NAND, o que é a lei de De Morgan lida ao contrário.

    3. O XOR é o que oferece resistência. O truque consiste em calcular o termo intermédio uma vez e combiná-lo com cada entrada, por sua vez. Chame-lhe C, e encaminhe-o para uma NAND juntamente com A, e novamente com B.

    4. Desenvolva D. Lê-se "não ambos A e (não A ou não B)". A metade A-e-não-A dessa expressão nunca pode acontecer, pelo que é eliminada, e o que resta é curto. E é a mesma expressão com as letras trocadas.

    5. A última NAND junta-os. De Morgan transforma uma NAND de duas negações num OR simples, e um OR de "A mas não B" com "B mas não A" é o significado de XOR. Quatro portas para o bit de soma.

    6. Agora o transporte. É A AND B, cujo custo avaliou em duas portas no passo 2 — mas a primeira dessas duas é C, e C já se encontra num fio a meio do XOR que acabou de construir. Leia-o uma terceira vez e ligue-o a si próprio.

    7. Portanto, são cinco em vez de seis. Metade dessa conclusão já foi obtida: pelo passo 2, o transporte requer, por si só, 2 portas; pelo passo 5, a soma requer 4; e o passo 6 mostra que ambos partilham exatamente uma porta. Assim, 2 + 4 − 1 = 5. Provar que não existe uma solução com menos de cinco portas é outra questão, e nada nesta página o demonstra. Esse resultado provém de uma busca exaustiva de todas as redes NAND com, no máximo, seis portas e duas entradas, ou seja, de um cálculo, não de um argumento matemático.

    8. A contagem de portas nada diz sobre o tempo. Siga o transporte: sai de G1, vai diretamente para G5, com duas portas de profundidade. A soma tem de passar por G2 ou G3 e depois por G4, pelo que tem três portas de profundidade. Conte os caminhos de A para a soma e constatará que nem sequer têm o mesmo comprimento entre si.

    Resposta

    Cinco portas NAND, e cinco é o limite mínimo. Ajuste a ferramenta para Meio Somador com A = 1 e B = 1 e esta indica o bit de soma passa a 0 e o transporte passa a 1. Siga essa linha pelo esquema: C = 0, depois D = E = 1, depois S = 0, e a porta de transporte que lê C contra si próprio dá 1. C é calculated uma vez e lido três vezes, e aí reside toda a poupança.

    As profundidades no passo 8 têm uma consequência que a tabela de verdade não consegue mostrar. Aborde 1 + 1 a partir da linha anterior, com A já no nível alto e B a subir. O transporte sobe após dois atrasos de porta; a soma só desce no terceiro. Durante um atraso de porta completo, os dois pinos de saída leem 1 e 1, o que, como transporte e soma, é 11 em binário, e o somador está temporariamente a alegar que 1 + 1 = 3. Um chip com relógio nunca vê isto, porque o período de relógio é escolhido para ser mais longo do que o caminho mais lento pela lógica. Escolhê-lo demasiado curto é o que define uma violação de temporização.

Problemas de exemplo

  • XOR difere - XOR A=1 B=0 -> 1: verdadeiro quando as entradas diferem
  • NAND universal - NAND(1,1) = 0 — o NAND inverte o AND; com ele é possível construir todas as outras portas
  • meio-som. 1+1 - Meio somador 1+1: Soma=0 Carry=1 — o mesmo carry se propaga por toda CPU
  • selecção MUX - Multiplexador com S=1 encaminha a entrada B para a saída, independentemente de A