Partilhar: Classroom Teams WhatsApp
aulify · Sebenta
UC · Unidade de Competência · UC00651

Criar e simular circuitos lógicos

Sebenta · Numeração, portas, Boole, Karnaugh, combinacional, famílias lógicas, simulação e breadboard
50h · 4.5 pontos crédito Curso: T. Sist. Comp. Redes, T. Eletrónica e mais 2 cursos ↗ Referencial oficial SNQ
Índice

Há um pacote premium desta unidade: um PowerPoint editável de 100 ou mais diapositivos, um manual em PDF e dois testes com correção. Esta sebenta continua gratuita.

Apresentação

Esta sebenta acompanha a UC00651 (50 h · 4,5 pontos) do curso Técnico/a de Sistemas de Computação e Redes. O objetivo é que, no fim, sejas capaz de desenhar, simular, montar e testar circuitos digitais simples, partindo de um problema descrito por palavras, de uma tabela de verdade ou de uma expressão de saída.

O percurso segue a ordem do trabalho na prática: representar informação com zeros e uns (capítulos 1 a 3); descrever e simplificar circuitos com portas lógicas, álgebra de Boole e mapa de Karnaugh (4 a 6); projetar circuitos combinacionais (7); escolher componentes, ler esquemas ANSI/IEEE e datasheets e conhecer as famílias TTL e CMOS (8 e 9); simular e montar em placa de ensaio (breadboard) (10); e, no fim, dar memória aos circuitos (11).

Em cada capítulo encontras exemplos resolvidos passo a passo. Não os leias apenas: tapa a resolução, tenta fazer sozinho e só depois compara. No fim do documento há erros comuns, um glossário, uma síntese e exercícios resolvidos para treinares antes das fichas.

Realizações de referência: desenhar circuitos de lógica combinatória a partir da tabela de verdade ou da expressão de saída; configurar e montar circuito lógico em software de simulação; simular e testar o funcionamento de circuitos digitais simples; implementar circuitos lógicos em breadboard.

Critérios de desempenho: adequar os componentes à função do circuito; simplificar as operações lógicas; cumprir as operações lógicas requeridas.

1. Sistemas de numeração

Porquê o binário

Um circuito digital distingue apenas dois níveis de tensão: um nível baixo (por convenção, lógica 0) e um nível alto (lógica 1). Distinguir dois níveis é muito mais fiável do que distinguir dez, porque o ruído elétrico não confunde um valor com o outro desde que haja uma margem confortável entre eles. Por isso toda a informação que um computador guarda ou processa (números, texto, imagens, som) acaba representada por sequências de bits.

Um bit (binary digit) é um dígito binário, 0 ou 1. Um grupo de 4 bits chama-se nibble e um grupo de 8 bits chama-se byte. Com n bits formam-se 2ⁿ combinações diferentes, o que dá 16 valores com 4 bits, 256 com 8 bits e 65 536 com 16 bits.

Sistemas posicionais

Os sistemas que usamos são posicionais: o valor de cada algarismo depende da posição que ocupa. Num sistema de base b, o número com algarismos dₙ…d₂d₁d₀ vale

N = dₙ·bⁿ + … + d₂·b² + d₁·b¹ + d₀·b⁰
Sistema Base Algarismos Uso típico
Decimal 10 0 a 9 Contas e leitura humana
Binário 2 0 e 1 Hardware digital
Hexadecimal 16 0 a 9 e A a F Endereços, cores, depuração

No hexadecimal, as letras valem A = 10, B = 11, C = 12, D = 13, E = 14 e F = 15. Para evitar ambiguidades, escreve-se a base em índice (1011₂, 2F₁₆) ou com sufixo (1011b, 2Fh) ou com prefixo (0x2F).

Convém saber de cor as potências de 2: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 e 1024 (de 2⁰ a 2¹⁰).

Binário para decimal

Soma-se o peso de cada posição onde há um 1. As posições, da direita para a esquerda, pesam 1, 2, 4, 8, 16…

Exemplo resolvido · Binário para decimal

Converter 1101 0110₂ em decimal.

  1. Escrever os pesos por cima de cada bit: 128, 64, 32, 16, 8, 4, 2, 1.
  2. Os bits a 1 estão nas posições de peso 128, 64, 16, 4 e 2.
  3. Somar: 128 + 64 + 16 + 4 + 2 = 214.

Resultado: 1101 0110₂ = 214₁₀.

Decimal para binário

Há dois métodos equivalentes. No método das divisões sucessivas por 2, divide-se o número por 2 até chegar a 0, guardando os restos; o binário lê-se de baixo para cima (o último resto é o bit mais significativo). No método dos pesos, vai-se subtraindo a maior potência de 2 que cabe.

Exemplo resolvido · Decimal para binário (divisões sucessivas)

Converter 202₁₀ em binário.

Divisão Quociente Resto
202 ÷ 2 101 0
101 ÷ 2 50 1
50 ÷ 2 25 0
25 ÷ 2 12 1
12 ÷ 2 6 0
6 ÷ 2 3 0
3 ÷ 2 1 1
1 ÷ 2 0 1

Lendo os restos de baixo para cima: 1100 1010₂. Verificação pelos pesos: 128 + 64 + 8 + 2 = 202. ✓

Binário e hexadecimal

Como 16 = 2⁴, cada algarismo hexadecimal corresponde exatamente a 4 bits. Por isso a conversão é direta e sem contas: agrupam-se os bits de 4 em 4, a partir da direita, e converte-se cada grupo. Por exemplo, 1011 0111₂ = B7₁₆ = 11×16 + 7 = 183.

Decimal Binário Hex Decimal Binário Hex
0 0000 0 8 1000 8
1 0001 1 9 1001 9
2 0010 2 10 1010 A
3 0011 3 11 1011 B
4 0100 4 12 1100 C
5 0101 5 13 1101 D
6 0110 6 14 1110 E
7 0111 7 15 1111 F

Exemplo resolvido · Hexadecimal para binário e decimal

Converter 3AF₁₆ em binário e em decimal.

  1. Cada algarismo vira 4 bits: 3 = 0011, A = 1010, F = 1111. Logo 3AF₁₆ = 0011 1010 1111₂.
  2. Em decimal: 3×16² + 10×16 + 15 = 768 + 160 + 15 = 943.

Decimal para hexadecimal

Usa-se o mesmo método das divisões sucessivas, agora por 16. Dividem-se o número e os quocientes por 16 até chegar a 0; os restos (de 0 a 15, escritos com os algarismos 0 a 9 e as letras A a F) leem-se de baixo para cima. Um caminho alternativo é converter primeiro para binário e agrupar os bits de 4 em 4.

Exemplo resolvido · Decimal para hexadecimal

Converter 478₁₀ em hexadecimal.

Divisão Quociente Resto
478 ÷ 16 29 14 (E)
29 ÷ 16 1 13 (D)
1 ÷ 16 0 1

Lendo os restos de baixo para cima: 1DE₁₆. Verificação: 1×256 + 13×16 + 14 = 256 + 208 + 14 = 478. ✓ Em binário, 1DE₁₆ = 0001 1101 1110₂.

Números fracionários

A parte depois da vírgula usa potências negativas da base: 2⁻¹ = 0,5, 2⁻² = 0,25, 2⁻³ = 0,125, 2⁻⁴ = 0,0625.

Exemplo resolvido · Número fracionário para binário

Converter 13,375₁₀ em binário.

  1. Parte inteira: 13 = 1101₂.
  2. Parte fracionária, multiplicações por 2:
Operação Resultado Bit
0,375 × 2 0,75 0
0,75 × 2 1,5 1
0,5 × 2 1,0 1
  1. A parte fracionária acaba quando o resto é 0: 0,375 = 0,011₂.

Resultado: 1101,011₂. Verificação: 8 + 4 + 1 + 0,25 + 0,125 = 13,375. ✓

Nem todos os decimais têm representação binária finita. O número 0,1₁₀ dá a dízima 0,0001 1001 1001…₂, que se repete indefinidamente. É por isso que os computadores guardam 0,1 com um pequeno erro de arredondamento, e é uma das razões para nunca comparar números fracionários com um teste de igualdade exata.

Números fracionários em hexadecimal

No hexadecimal, a parte depois da vírgula usa potências negativas de 16: 16⁻¹ = 0,0625 e 16⁻² = 0,00390625. Cada algarismo hexadecimal depois da vírgula corresponde a 4 bits, tal como antes da vírgula. Para passar um decimal fracionário a hexadecimal, multiplica-se a parte fracionária por 16, guardando a parte inteira de cada resultado (de 0 a 15, escrita em hexadecimal); o número lê-se de cima para baixo.

Exemplo resolvido · Fracionários em hexadecimal

a) Converter 0,B8₁₆ em decimal e em binário.

  1. Em decimal: B = 11 está em 16⁻¹ e 8 em 16⁻². Logo 11/16 + 8/256 = 0,6875 + 0,03125 = 0,71875.
  2. Em binário, cada algarismo vira 4 bits: B = 1011 e 8 = 1000. Logo 0,B8₁₆ = 0,1011 1000₂ = 0,10111₂ (os zeros finais podem omitir-se).
  3. Verificação: 0,10111₂ = 0,5 + 0,125 + 0,0625 + 0,03125 = 0,71875. ✓

b) Converter 13,375₁₀ em hexadecimal.

  1. Parte inteira: 13 = D.
  2. Parte fracionária: 0,375 × 16 = 6,0, algarismo 6 e resto 0. A conversão termina.

Resultado: D,6₁₆. Confirma-se com o binário do exemplo anterior, 1101,011₂: agrupando de 4 em 4 a partir da vírgula, 1101 = D e 0110 = 6.

c) Converter 10,8₁₀ em hexadecimal.

  1. Parte inteira: 10 = A.
  2. Parte fracionária: 0,8 × 16 = 12,8, algarismo 12 (C) e resto 0,8; o resto repete-se, e por isso o algarismo C repete-se sem fim.

Resultado: A,CCC…₁₆, uma dízima, tal como 0,1₁₀ em binário.

Quantos bits são precisos

Para representar N valores diferentes são precisos n bits, com 2ⁿ ≥ N. Para guardar os números de 0 a 999 (1000 valores) precisam-se 10 bits, porque 2⁹ = 512 não chega e 2¹⁰ = 1024 chega. O maior número sem sinal que cabe em n bits é 2ⁿ − 1: 15 em 4 bits, 255 em 8 bits, 65 535 em 16 bits.

2. Aritmética binária e números com sinal

Adição

A adição binária segue as regras da adição decimal, mas com apenas quatro casos:

A B Soma Transporte (carry)
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1

Quando a coluna tem três uns (dois bits mais o transporte vindo da coluna anterior), 1 + 1 + 1 = 11₂: escreve-se 1 e transporta-se 1. Este é exatamente o comportamento do full adder, que vais projetar no capítulo 7.

Exemplo resolvido · Soma binária com transportes

Somar 1011₂ + 0110₂ (11 + 6).

    1011
  + 0110
  ------
   10001

Coluna a coluna, da direita para a esquerda:

  1. Bit 0: 1 + 0 = 1, sem transporte.
  2. Bit 1: 1 + 1 = 10, escreve 0 e transporta 1.
  3. Bit 2: 0 + 1 + 1 (transporte) = 10, escreve 0 e transporta 1.
  4. Bit 3: 1 + 0 + 1 (transporte) = 10, escreve 0 e transporta 1.
  5. O último transporte passa a ser o bit 4.

Resultado: 10001₂ = 17, o que confere com 11 + 6. Repara que a soma de dois números de 4 bits precisou de 5 bits: o transporte final é o sinal de que o resultado já não cabe nos 4 bits originais.

Subtração

A subtração faz-se com empréstimos (borrow), como no papel: 0 − 1 pede emprestado 1 à coluna seguinte e fica 10 − 1 = 1.

Exemplo resolvido · Subtração binária

Calcular 0110₂ − 0011₂ (6 − 3).

  1. Bit 0: 0 − 1 não dá. Pede-se emprestado ao bit 1, que passa de 1 a 0, e a coluna fica 10 − 1 = 1.
  2. Bit 1: agora é 0 − 1, que também não dá. Pede-se emprestado ao bit 2, que passa de 1 a 0, e a coluna fica 10 − 1 = 1.
  3. Bit 2: 0 − 0 = 0.
  4. Bit 3: 0 − 0 = 0.

Resultado: 0011₂ = 3. Em hardware, porém, é raro construir subtratores com empréstimos. Como vais ver já a seguir, usa-se o complemento a dois, que transforma a subtração numa soma.

Representação de inteiros com sinal

Para guardar números negativos é preciso reservar um bit para o sinal. Existem três formas clássicas, todas com o bit mais significativo (MSB) a indicar o sinal (0 positivo, 1 negativo).

Sinal e magnitude. O MSB é o sinal e os restantes bits são o valor absoluto. Em 4 bits, +5 = 0101 e −5 = 1101. Tem o inconveniente de ter dois zeros (0000 e 1000) e de exigir circuitos diferentes para somar e subtrair.

Complemento a 1. O negativo obtém-se invertendo todos os bits do positivo. Em 4 bits, +5 = 0101 e −5 = 1010. Continua a haver dois zeros (0000 e 1111).

Complemento a 2. O negativo obtém-se invertendo todos os bits e somando 1. Em 4 bits, +5 = 0101, invertido 1010, mais 1 dá 1011, portanto −5 = 1011. Tem um só zero e a soma funciona igual para positivos e negativos, por isso é a representação usada em praticamente todos os processadores.

Valor Sinal e magnitude Complemento a 1 Complemento a 2
+7 0111 0111 0111
+1 0001 0001 0001
0 0000 ou 1000 0000 ou 1111 0000
−1 1001 1110 1111
−5 1101 1010 1011
−7 1111 1000 1001
−8 não existe não existe 1000

Intervalos em n bits: sinal e magnitude e complemento a 1 vão de −(2ⁿ⁻¹ − 1) a +(2ⁿ⁻¹ − 1); o complemento a 2 vai de −2ⁿ⁻¹ a +(2ⁿ⁻¹ − 1). Com 4 bits, o complemento a 2 cobre de −8 a +7; com 8 bits, de −128 a +127; com 16 bits, de −32 768 a +32 767.

Exemplo resolvido · Escrever e ler complementos a 2

a) Representar −37 em 8 bits, complemento a 2.

  1. +37 em 8 bits: 37 = 32 + 4 + 1 = 0010 0101.
  2. Inverter todos os bits: 1101 1010.
  3. Somar 1: 1101 1011.

Resultado: −37 = 1101 1011₂ = DB₁₆.

b) Que número é 1111 0000, em complemento a 2 com 8 bits?

  1. O MSB é 1, portanto é negativo.
  2. Inverter: 0000 1111. Somar 1: 0001 0000 = 16.
  3. O valor é −16.

Atalho prático: o valor de um complemento a 2 também se calcula dando ao MSB o peso negativo −2ⁿ⁻¹. Aqui, −128 + 64 + 32 + 16 = −16. ✓

Soma e subtração em complemento a 2

Em complemento a 2, A − B = A + (−B), ou seja, soma-se A com o complemento a 2 de B e descarta-se o transporte final. O mesmo somador faz as duas operações.

Exemplo resolvido · Subtrações em complemento a 2

Em 4 bits (intervalo −8 a +7):

a) 7 − 5. Representa-se −5 = 1011. Soma-se 0111 + 1011 = 1 0010. Descartando o transporte, o resultado é 0010 = +2. ✓

b) 5 − 7. Representa-se −7: 0111 invertido é 1000, mais 1 dá 1001. Soma-se 0101 + 1001 = 1110. O MSB é 1, portanto é negativo: 1110 invertido é 0001, mais 1 dá 0010 = 2, logo o resultado é −2. ✓

Excesso de capacidade (overflow)

Há overflow quando o resultado não cabe no número de bits disponível. Com números sem sinal, o overflow vê-se pelo transporte final igual a 1. Com números com sinal (complemento a 2), o transporte final não é um indicador fiável; deteta-se overflow quando os dois operandos têm o mesmo sinal e o resultado tem sinal diferente. Em hardware compara-se o transporte que entra no MSB com o que sai dele: se forem diferentes, houve overflow.

Exemplo resolvido · Deteção de overflow

a) 5 + 4 em 4 bits com sinal: 0101 + 0100 = 1001. Dois positivos deram um resultado com MSB 1, que se lê −7. Houve overflow: o resultado verdadeiro é 9 e o intervalo termina em +7.

b) (−6) + (−4) em 4 bits: 1010 + 1100 = 1 0110. Descartado o transporte, fica 0110 = +6. Dois negativos deram um positivo: overflow, porque −10 está abaixo do mínimo, −8.

c) 3 + (−5) em 4 bits: 0011 + 1011 = 1110 = −2. Sinais diferentes nunca produzem overflow. ✓

3. Códigos binários e deteção de erros

Para que servem os códigos

O binário puro não é a única forma de codificar informação. Consoante o objetivo, usam-se códigos que tornam o hardware mais simples, a conversão para humanos mais fácil ou a transmissão mais segura.

BCD (Binary-Coded Decimal)

No BCD, cada algarismo decimal é guardado em 4 bits, com os valores 0000 a 1001 (0 a 9). As combinações 1010 a 1111 não são usadas. É muito usado em mostradores, relógios e calculadoras, porque converter de e para decimal é imediato.

Assim, 0 é 0000, 5 é 0101 e 9 é 1001.

Repara na diferença: 47 em binário puro é 0010 1111 (8 bits, que é 2F em hexadecimal), enquanto 47 em BCD é 0100 0111 (um grupo por algarismo). O BCD desperdiça combinações (159 em BCD ocupa 12 bits, 0001 0101 1001, contra 8 bits em binário puro), mas poupa conversões.

Soma em BCD. Soma-se como binário normal; se o resultado de um grupo ultrapassar 9 (ou der transporte), acrescenta-se 0110 (6) a esse grupo para saltar as seis combinações inválidas.

Exemplo resolvido · Soma em BCD

Somar 8 + 5 em BCD.

  1. 1000 + 0101 = 1101 (13 em binário).
  2. 1101 é maior do que 1001, logo é inválido em BCD. Corrige-se somando 0110: 1101 + 0110 = 1 0011.
  3. O transporte passa para o grupo das dezenas: 0001 0011.

Resultado: 0001 0011 = 13 em BCD. ✓

Código Gray

No código Gray, dois valores consecutivos diferem num único bit. Isto evita leituras erradas em sensores que mudam de posição (um codificador rotativo, por exemplo): se várias linhas mudassem ao mesmo tempo, qualquer pequeno desfasamento daria valores intermédios falsos. Em Gray só uma linha muda de cada vez.

Decimal Binário Gray
0 000 000
1 001 001
2 010 011
3 011 010
4 100 110
5 101 111
6 110 101
7 111 100

Binário para Gray: o MSB mantém-se; cada bit seguinte é o XOR do bit binário correspondente com o bit binário anterior. Gray para binário: o MSB mantém-se; cada bit binário é o XOR do bit Gray atual com o bit binário já calculado à esquerda. É exatamente a ordem 00, 01, 11, 10 que vais usar nos eixos dos mapas de Karnaugh.

Exemplo resolvido · Conversões binário e Gray

a) Binário 1011 para Gray: MSB = 1; 1⊕0 = 1; 0⊕1 = 1; 1⊕1 = 0. Resultado 1110.

b) Gray 1110 para binário: MSB = 1; 1⊕1 = 0; 0⊕1 = 1; 1⊕0 = 1. Resultado 1011. ✓

Código ASCII

O ASCII (American Standard Code for Information Interchange) atribui um número de 7 bits (0 a 127) a cada caráter básico: letras, algarismos, pontuação e carateres de controlo.

Caráter Decimal Hex Binário
espaço 32 20 010 0000
0 48 30 011 0000
9 57 39 011 1001
A 65 41 100 0001
Z 90 5A 101 1010
a 97 61 110 0001
z 122 7A 111 1010

Duas regularidades úteis: o algarismo n tem código 48 + n (o caráter "7" é 0x37); e a letra minúscula obtém-se da maiúscula somando 32 (0x20), ou seja, ligando o bit 5. O ASCII só cobre o alfabeto inglês; o Unicode (codificado em UTF-8 na web) estende a ideia a todas as línguas, mantendo os primeiros 128 códigos iguais aos do ASCII e acrescentando milhares de outros, como o «ç» e o «ã».

Bit de paridade e deteção de erros

Quando se guarda ou transmite informação, um bit pode mudar por ruído. O bit de paridade é um bit extra acrescentado a cada palavra para permitir detetar que houve um erro.

O emissor calcula a paridade e o recetor volta a contar os uns. Se a contagem não for a esperada, algo mudou na transmissão.

Exemplo resolvido · Gerar e verificar paridade

a) Gerar o bit de paridade par para 1011001 (7 bits de dados).

  1. Contar os uns: 1, 0, 1, 1, 0, 0, 1 dá quatro uns.
  2. Já é par, portanto o bit de paridade é 0.
  3. Palavra enviada (paridade à esquerda): 0 1011001.

b) O recetor obtém 0 1001001. Está correto?

  1. Contar os uns: restam três uns na palavra recebida (0100 1001 tem três uns).
  2. Três é ímpar, e o esperado era par. Foi detetado um erro.

Limites da paridade:

Em hardware, a paridade calcula-se com uma cadeia de portas XOR: o XOR de vários bits dá 1 quando há um número ímpar de uns. Para paridade par, o bit de paridade é P = D₀ ⊕ D₁ ⊕ … ⊕ Dₙ.

4. Portas lógicas e funções lógicas

Níveis lógicos

Uma porta lógica é um circuito que recebe uma ou mais entradas binárias e produz uma saída binária, em função de uma regra fixa. Na lógica positiva, a mais usada, o nível alto de tensão representa o 1 e o nível baixo representa o 0. Na lógica negativa é o contrário. Nesta sebenta usa-se sempre lógica positiva, salvo indicação em contrário.

As sete portas

Porta Expressão Símbolo ANSI/IEEE (forma) Saída = 1 quando
NOT Ā triângulo com círculo na saída a entrada é 0
AND A·B forma em "D" todas as entradas são 1
OR A+B forma curva pontiaguda pelo menos uma entrada é 1
NAND ¬(A·B) AND com círculo na saída nem todas as entradas são 1
NOR ¬(A+B) OR com círculo na saída todas as entradas são 0
XOR A⊕B OR com linha dupla na entrada as entradas são diferentes (número ímpar de uns)
XNOR ¬(A⊕B) XOR com círculo na saída as entradas são iguais

O pequeno círculo na saída (ou na entrada) de um símbolo significa sempre inversão. Esta é a chave para ler esquemas: uma NAND é uma AND seguida de uma inversão, e uma NOR é uma OR seguida de uma inversão.

Tabelas de verdade das portas de duas entradas

A B AND OR NAND NOR XOR XNOR
0 0 0 0 1 1 0 1
0 1 0 1 1 0 1 0
1 0 0 1 1 0 1 0
1 1 1 1 0 0 0 1

A porta NOT tem uma só entrada: a saída é sempre o contrário da entrada (0 dá 1 e 1 dá 0).

Portas com mais de duas entradas

AND, OR, NAND e NOR generalizam-se a três, quatro ou mais entradas sem mudar a regra: uma AND de 4 entradas só dá 1 se as quatro forem 1; uma NOR de 3 entradas só dá 1 se as três forem 0. A XOR de várias entradas dá 1 quando o número de uns é ímpar, e é por isso que serve para calcular paridade (capítulo 3). Em qualquer caso, a tabela de verdade tem 2ⁿ linhas: 8 linhas para 3 entradas, 16 para 4.

Circuitos integrados da série 74xx

As portas compram-se em circuitos integrados (CI) com várias portas iguais num único encapsulamento, normalmente de 14 pinos (DIP-14). Alguns exemplos clássicos:

CI Função Conteúdo
7400 NAND 4 portas de 2 entradas
7402 NOR 4 portas de 2 entradas
7404 NOT (inversor) 6 inversores
7408 AND 4 portas de 2 entradas
7410 NAND 3 portas de 3 entradas
7420 NAND 2 portas de 4 entradas
7432 OR 4 portas de 2 entradas
7486 XOR 4 portas de 2 entradas

A numeração é igual em todas as subfamílias (74LS00, 74HC00…): o que muda é a tecnologia, tema do capítulo 9. Em todos estes CI de 14 pinos, o pino 14 recebe a alimentação (V_CC) e o pino 7 recebe a massa (GND).

Funções lógicas

Uma função lógica associa a cada combinação das variáveis de entrada um valor de saída, 0 ou 1. Pode ser descrita de quatro formas equivalentes, e saber passar de uma para outra é a competência central desta UC:

  1. Por palavras (o enunciado do problema).
  2. Por tabela de verdade.
  3. Por expressão booleana.
  4. Por esquema (circuito com portas).

Com n variáveis existem 2ⁿ combinações de entrada e, para cada uma, a saída pode ser 0 ou 1, logo há 2^(2ⁿ) funções diferentes: 16 funções de 2 variáveis, 256 de 3, 65 536 de 4.

Qualquer função, por complicada que seja, obtém-se combinando portas.

Exemplo resolvido · Do enunciado ao circuito

Um sistema de alarme dispara a sirene (F = 1) quando o sistema está armado (S = 1) e o sensor da porta (P) ou o da janela (J) está ativo.

  1. Variáveis: S, P, J. Três entradas, 8 linhas.
  2. Regra: F = 1 só se S = 1 e (P = 1 ou J = 1). Logo F = S·(P + J).
  3. Tabela:
S P J F
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 0
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1
  1. Circuito: uma porta OR (7432) recebe P e J; a saída vai a uma porta AND (7408) juntamente com S. Duas portas, de dois CI diferentes.
  2. Verificação: se S = 0 a AND dá sempre 0, portanto a sirene nunca toca com o sistema desarmado, como pedido.

5. Álgebra de Boole

Elementos e operações

A álgebra de Boole trabalha com variáveis que só podem tomar dois valores, 0 e 1, e três operações básicas: AND (produto lógico, A·B), OR (soma lógica, A+B) e NOT (complemento, Ā). As outras operações (NAND, NOR, XOR, XNOR) definem-se a partir destas:

NAND:  ¬(A·B)
NOR:   ¬(A+B)
XOR:   A⊕B  =  Ā·B + A·B̄
XNOR:  ¬(A⊕B)  =  A·B + Ā·B̄

O objetivo é simplificar expressões: uma expressão mais curta dá um circuito com menos portas, menos ligações, menos consumo, menos atraso e menos pontos de falha.

Postulados e teoremas

Nome Forma AND Forma OR
Identidade A·1 = A A + 0 = A
Elemento nulo A·0 = 0 A + 1 = 1
Idempotência A·A = A A + A = A
Complemento A·Ā = 0 A + Ā = 1
Involução dupla negação: ¬(Ā) = A
Comutativa A·B = B·A A + B = B + A
Associativa (A·B)·C = A·(B·C) (A+B)+C = A+(B+C)
Distributiva A·(B+C) = A·B + A·C A + B·C = (A+B)·(A+C)
Absorção A·(A+B) = A A + A·B = A
Absorção do complemento A·(Ā+B) = A·B A + Ā·B = A + B
Consenso (A+B)·(Ā+C)·(B+C) = (A+B)·(Ā+C) A·B + Ā·C + B·C = A·B + Ā·C

Repara na simetria entre as duas colunas: cada igualdade da coluna AND obtém-se da coluna OR trocando AND por OR e 0 por 1. É o princípio da dualidade, e permite memorizar metade das regras.

Como se prova um teorema

Em Boole há sempre um método seguro: provar com a tabela de verdade. Se as duas expressões dão a mesma coluna de saída para todas as combinações, são iguais. Por exemplo, a absorção do complemento, A + Ā·B = A + B:

A B Ā·B A + Ā·B A + B
0 0 0 0 0
0 1 1 1 1
1 0 0 1 1
1 1 0 1 1

As duas últimas colunas coincidem, logo a igualdade é verdadeira.

Teoremas de De Morgan

Os teoremas de De Morgan permitem trocar ANDs por ORs, e são a ponte para a lógica só com NAND ou só com NOR:

¬(A·B)  =  Ā + B̄
¬(A+B)  =  Ā · B̄

Em palavras: o complemento de um produto é a soma dos complementos, e o complemento de uma soma é o produto dos complementos. Generalizam-se a n variáveis: ¬(A·B·C) = Ā + B̄ + C̄ e ¬(A+B+C) = Ā·B̄·C̄.

Para aplicar De Morgan: troca-se cada AND por OR (e vice-versa) e complementa-se cada variável, respeitando os parênteses.

Exemplo resolvido · Simplificação algébrica

a) Simplificar F = A·B + A·B̄ + Ā·B.

  1. Agrupar os dois primeiros termos: A·B + A·B̄ = A·(B + B̄) = A·1 = A.
  2. Fica F = A + Ā·B.
  3. Pela absorção do complemento, A + Ā·B = A + B.

Resultado: F = A + B, ou seja, uma só porta OR em vez de três termos AND e um OR.

b) Simplificar F = (A + B)·(A + C).

  1. Usar a distributiva da forma OR: (A + B)·(A + C) = A + B·C.

Resultado: F = A + B·C.

c) Simplificar F = Ā·B·C + A·B·C + A·B·C̄.

  1. Os dois primeiros termos partilham B·C: Ā·B·C + A·B·C = B·C·(Ā + A) = B·C.
  2. O segundo e o terceiro partilham A·B: A·B·C + A·B·C̄ = A·B. Usa-se o termo A·B·C duas vezes, o que é permitido pela idempotência (X = X + X).
  3. F = B·C + A·B.

Resultado: F = B·C + A·B = B·(A + C).

d) Aplicar De Morgan a F = ¬(A·B + C).

  1. O complemento de uma soma é o produto dos complementos: F = ¬(A·B)·C̄.
  2. De Morgan no primeiro fator: ¬(A·B) = Ā + B̄.
  3. F = (Ā + B̄)·C̄ = Ā·C̄ + B̄·C̄.

Resultado: F = Ā·C̄ + B̄·C̄.

Formas canónicas

Qualquer função pode escrever-se sempre numa forma padrão, a partir da tabela de verdade.

Soma de produtos (SOP, primeira forma canónica): OR dos mintermos das linhas onde F = 1. Produto de somas (POS, segunda forma canónica): AND dos maxtermos das linhas onde F = 0.

Exemplo resolvido · Forma canónica a partir da tabela

Uma função de maioria: F = 1 quando pelo menos duas das três entradas são 1.

A B C F
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1

SOP: F = Σm(3, 5, 6, 7) = Ā·B·C + A·B̄·C + A·B·C̄ + A·B·C.

POS: F = ΠM(0, 1, 2, 4) = (A+B+C)·(A+B+C̄)·(A+B̄+C)·(Ā+B+C).

Simplificação: juntando cada um dos três primeiros mintermos com A·B·C (idempotência), ou pelo mapa de Karnaugh do capítulo 6, obtém-se F = A·B + A·C + B·C: três ANDs e uma OR de 3 entradas.

Universalidade das portas NAND e NOR

Uma porta é universal se, apenas com ela, se consegue construir qualquer função lógica. NAND e NOR são universais. Como qualquer função se escreve com NOT, AND e OR, basta mostrar como se obtêm essas três a partir de NAND (ou de NOR).

Só com NAND:

Só com NOR:

Na prática, isto tem três vantagens: menos tipos de CI em stock e na placa, fabrico mais simples (num CI de CMOS as portas NAND e NOR são as mais pequenas e rápidas) e reaproveitamento de portas livres no mesmo encapsulamento.

Exemplo resolvido · Converter uma expressão em NAND-NAND

Implementar F = A·B + C·D apenas com portas NAND.

  1. Aplicar dupla negação: F = ¬(¬(A·B + C·D)).
  2. De Morgan no complemento interior: ¬(A·B + C·D) = ¬(A·B)·¬(C·D).
  3. Logo F = ¬( ¬(A·B) · ¬(C·D) ) = NAND( NAND(A,B), NAND(C,D) ).

Resultado: dois NAND de 2 entradas no primeiro nível e um NAND de 2 entradas no segundo. Qualquer SOP converte-se em NAND-NAND sem acrescentar nenhum inversor: é a razão pela qual os projetistas pensam "soma de produtos" e montam "dois níveis de NAND". Com um 7400 (4 NAND) sobra ainda uma porta.

Exemplo resolvido · Construir a XOR com 4 NAND

A XOR pode fazer-se com quatro NAND (um 7400 completo):

N1 = NAND(A, B)
N2 = NAND(A, N1)
N3 = NAND(B, N1)
Y  = NAND(N2, N3)
A B N1 N2 N3 Y
0 0 1 1 1 0
0 1 1 1 0 1
1 0 1 0 1 1
1 1 0 1 1 0

A coluna Y é a tabela da XOR. Este circuito será montado em breadboard no capítulo 10.

6. Mapa de Karnaugh

Ideia e regras

A simplificação algébrica exige perícia para descobrir que termos juntar. O mapa de Karnaugh transforma esse problema num jogo visual. É uma tabela de verdade reorganizada numa grelha, onde as células vizinhas diferem num único bit, para que dois mintermos vizinhos se possam juntar eliminando a variável que muda. Isto consegue-se escrevendo os eixos em código Gray (00, 01, 11, 10) e nunca em ordem binária (00, 01, 10, 11).

Dimensões: 2 variáveis dão 4 células; 3 variáveis dão 8 (2 × 4); 4 variáveis dão 16 (4 × 4). Acima de 5 ou 6 variáveis o método deixa de ser prático e usam-se programas.

Regras de agrupamento:

  1. Agrupam-se células a 1 (para obter a forma SOP).
  2. Os grupos têm tamanho potência de 2: 1, 2, 4, 8 ou 16 células.
  3. Os grupos são retangulares (nunca em diagonal).
  4. O mapa é cíclico: a coluna da esquerda é vizinha da coluna da direita, e a linha de cima da linha de baixo. Os quatro cantos de um mapa de 4 variáveis formam um grupo de 4.
  5. Cada grupo deve ser o maior possível, e todos os 1 têm de ficar cobertos, usando o menor número de grupos. Um 1 pode pertencer a vários grupos.
  6. Cada grupo dá um termo produto onde só ficam as variáveis que não mudam dentro do grupo (direta se valem 1, complementada se valem 0). Um grupo de 2ᵏ células elimina k variáveis.

Exemplo resolvido · Três variáveis

Simplificar F(A,B,C) = Σm(1, 3, 5, 6, 7).

       BC
A   00 01 11 10
0    0  1  1  0
1    0  1  1  1
  1. Os quatro 1 das colunas 01 e 11 formam um grupo de 4 (células m1, m3, m5, m7). Dentro dele só C se mantém igual a 1; A e B mudam. Termo: C.
  2. Falta o 1 de m6 (A=1, B=1, C=0). O seu vizinho é m7. O grupo de 2 (m6 e m7) mantém A=1 e B=1 e elimina C. Termo: A·B.

Resultado: F = C + A·B. A expressão original, em forma canónica, tinha 5 mintermos de 3 literais cada (15 literais); a simplificada tem 3.

Exemplo resolvido · Detetor de números primos

Projetar um circuito com entrada de 4 bits (ABCD, de 0 a 15) cuja saída F vale 1 quando o número é primo.

  1. Os primos até 15 são 2, 3, 5, 7, 11 e 13. Logo F = Σm(2, 3, 5, 7, 11, 13).
AB\CD 00 01 11 10
00     0  0  1  1
01     0  1  1  0
11     0  1  0  0
10     0  0  1  0
  1. m2 e m3 formam um grupo de 2 (A=0, B=0, C=1): Ā·B̄·C.
  2. m3 e m11 formam um grupo de 2 (B=0, C=1, D=1): B̄·C·D.
  3. m5 e m13 formam um grupo de 2 (B=1, C=0, D=1): B·C̄·D.
  4. Falta m7: junta-se a m3 (A=0, C=1, D=1): Ā·C·D.

Resultado: F = Ā·B̄·C + B̄·C·D + B·C̄·D + Ā·C·D. Quatro portas AND (de 3 entradas) e uma OR de 4 entradas. A célula m7 também podia juntar-se a m5 (Ā·B·D); as duas soluções têm o mesmo custo.

Condições indiferentes (don't care)

Há situações em que certas combinações de entrada nunca acontecem (por exemplo, os códigos 1010 a 1111 num BCD) ou em que o valor da saída não interessa. Marcam-se no mapa com X e podem ser usadas como 1 ou como 0, o que for mais conveniente para fazer grupos maiores. Cada X só entra num grupo se ajudar.

Exemplo resolvido · Segmento "a" de um mostrador de 7 segmentos

Um descodificador BCD para 7 segmentos acende o segmento a (o de cima) nos dígitos 0, 2, 3, 5, 6, 7, 8 e 9 e mantém-no apagado em 1 e 4. Os códigos 10 a 15 são indiferentes.

AB\CD 00 01 11 10
00     1  0  1  1
01     0  1  1  1
11     X  X  X  X
10     1  1  X  X
  1. As colunas 11 e 10 formam o grupo de 8 de C=1 (com os indiferentes): termo C.
  2. A linha A=1 inteira (m8 e m9 a 1, o resto indiferentes) é um grupo de 8: A.
  3. m5, m7 e os X m13, m15 formam um grupo de 4: B·D.
  4. m0 e m8 (e, pelo cíclico, m2 e m10): os quatro cantos formam B̄·D̄, que cobre o 0 e o 8.

Resultado: a = A + C + B·D + B̄·D̄. Nota que 9 (1001) fica coberto por A e 5 (0101) por B·D.

Forma POS no mapa de Karnaugh

Se se agruparem os zeros em vez dos uns, obtém-se o complemento da função em forma SOP. Complementando esse resultado com De Morgan, aparece a função em produto de somas.

Exemplo resolvido · POS por agrupamento de zeros

Simplificar F(A,B,C) = Σm(0, 1, 3, 7) em forma POS.

       BC
A   00 01 11 10
0    1  1  1  0
1    0  0  1  0
  1. Os zeros estão em m2, m4, m5 e m6. Grupos de zeros: m4 e m5 (A=1, B=0) dão A·B̄; m2 e m6 (B=1, C=0) dão B·C̄.
  2. Complemento: F̄ = A·B̄ + B·C̄.
  3. De Morgan: F = ¬(A·B̄)·¬(B·C̄) = (Ā + B)·(B̄ + C).

Resultado: F = (Ā + B)·(B̄ + C). Verificação em m3 (A=0, B=1, C=1): (1 + 1)·(0 + 1) = 1, correto.

7. Circuitos combinacionais

Definição e método de projeto

Num circuito combinacional, a saída depende apenas da combinação atual das entradas. Não há memória: se as entradas voltam a ter o mesmo valor, a saída volta a ter o mesmo valor. O projeto segue sempre os mesmos passos, e é este roteiro que os critérios de avaliação pedem para cumprires:

  1. Especificar o problema: entradas, saídas e regra de funcionamento.
  2. Construir a tabela de verdade.
  3. Obter a expressão (SOP ou POS) a partir da tabela.
  4. Simplificar (Boole ou Karnaugh).
  5. Desenhar o circuito, escolhendo as portas e os CI.
  6. Simular e testar todas as combinações; só depois montar.

Meio somador (half adder)

Soma dois bits A e B e produz a soma S e o transporte de saída Cout. Pela tabela: S = A ⊕ B e Cout = A·B.

A B S Cout
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1

Somador completo (full adder)

Soma três bits: A, B e o transporte de entrada Cin. É o bloco que permite somar números de vários bits, porque cada coluna recebe o transporte da anterior.

Exemplo resolvido · Projeto do full adder

  1. Tabela de verdade:
A B Cin S Cout
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
  1. Soma: S = Σm(1, 2, 4, 7). No mapa de Karnaugh os uns estão em tabuleiro de xadrez, sem nenhum vizinho, por isso não há simplificação por agrupamento. Reconhece-se que S vale 1 quando o número de uns nas entradas é ímpar: S = A ⊕ B ⊕ Cin.
  2. Transporte: Cout = Σm(3, 5, 6, 7). No mapa, três grupos de 2 (como na função de maioria): Cout = A·B + A·Cin + B·Cin. Equivalente: Cout = A·B + Cin·(A ⊕ B), que reaproveita o XOR já calculado para S.
  3. Circuito: dois meios somadores e uma porta OR. O primeiro soma A e B; o segundo soma o resultado com Cin; o OR junta os dois transportes.

Somador de n bits

Ligando em cadeia n full adders (o Cout de cada um vai ao Cin do seguinte), obtém-se um somador de n bits com transporte propagado (ripple carry). O CI 7483 é um somador binário completo de 4 bits. É a base da unidade aritmética e lógica (ALU) de um processador. O seu defeito é o atraso: o transporte tem de atravessar todos os estágios, por isso somadores rápidos usam lógica de transporte antecipado.

Exemplo resolvido · Somador/subtrator

Um somador de 4 bits pode também subtrair. Põe-se um XOR em cada entrada B, com um sinal de controlo M ligado à outra entrada de cada XOR e ao Cin do primeiro full adder.

  1. Com M = 0: B⊕0 = B e Cin = 0, logo S = A + B.
  2. Com M = 1: B⊕1 = B̄ (complemento a 1) e Cin = 1, logo S = A + B̄ + 1 = A − B, em complemento a 2.

Comparador

Compara dois números e indica A>B, A=B ou AB é A·B̄ e A<B é Ā·B. Para 4 bits existe o CI 7485, com entradas de cascata para comparar números maiores.

Descodificador

Um descodificador n para 2ⁿ ativa uma única saída consoante o código de entrada: cada saída é um mintermo. O 2 para 4 tem entradas A1 e A0 e saídas Y0 = Ā1·Ā0, Y1 = Ā1·A0, Y2 = A1·Ā0 e Y3 = A1·A0. O 74138 é um descodificador 3 para 8 com saídas ativas a nível baixo e três entradas de habilitação (uma ativa a alto e duas a baixo). Com as entradas de habilitação desligadas, nenhuma saída é ativada.

Multiplexer e demultiplexer

Um multiplexer (MUX) escolhe uma de 2ⁿ entradas de dados e leva-a à saída, consoante n linhas de seleção. O MUX 4 para 1 tem Y = S̄1·S̄0·I0 + S̄1·S0·I1 + S1·S̄0·I2 + S1·S0·I3. CI úteis: 74157 (quatro MUX 2 para 1), 74153 (dois MUX 4 para 1), 74151 (MUX 8 para 1). O demultiplexer faz o inverso: encaminha uma entrada para uma de 2ⁿ saídas; um descodificador com a entrada de habilitação usada como dados funciona como demultiplexer.

Exemplo resolvido · Função com multiplexer

Implementar F = Σm(1, 2, 4, 7) com um MUX 4 para 1, usando A e B como seleção e C como dados.

  1. Para cada valor de AB, ver o que F faz em função de C:
AB Mintermos F em função de C Entrada
00 m0, m1 F = C (só m1 vale 1) I0 = C
01 m2, m3 F = C̄ (só m2) I1 = C̄
10 m4, m5 F = C̄ (só m4) I2 = C̄
11 m6, m7 F = C (só m7) I3 = C
  1. Ligar I0 = I3 = C e I1 = I2 = C̄ (um inversor). Esta função é A⊕B⊕C: vale 1 quando o número de uns é ímpar, e é por isso o bit de paridade par de três bits (capítulo 3).

Codificador, codificador de prioridade e mostrador de 7 segmentos

O codificador faz o inverso do descodificador: 2ⁿ linhas para n bits. Se várias linhas puderem estar ativas ao mesmo tempo, usa-se um codificador de prioridade, que dá a saída da linha de maior prioridade (o 74148 é um codificador de prioridade de 8 para 3, com entradas e saídas ativas a baixo).

Um mostrador de 7 segmentos (segmentos de a a g) mostra algarismos acendendo segmentos. O 7447 converte BCD para os sete segmentos, com saídas ativas a baixo, para mostradores de ânodo comum; o 7448 faz a mesma conversão para mostradores de cátodo comum. Cada segmento é uma função de 4 variáveis, simplificável por Karnaugh com os códigos 10 a 15 como indiferentes (capítulo 6).

Atrasos e picos indesejados (glitches)

As portas reais têm atraso de propagação (alguns nanossegundos). Se dois caminhos levam o mesmo sinal ao mesmo ponto, ele pode chegar em instantes diferentes e produzir um pico indesejado (glitch) na saída. É inofensivo num LED, mas pode ser destrutivo se alimentar um contador. O remédio habitual é sincronizar a saída com um flip-flop.

8. Componentes eletrónicos, simbologia e datasheets

Os cinco componentes de base

Um circuito lógico real não é feito só de portas: precisa de componentes que as alimentam, ligam ao mundo exterior e protegem.

Resistência (o componente, a que o referencial chama resistor). Limita a corrente. Mede-se em ohm (Ω) e obedece à lei de Ohm, V = R·I. O valor lê-se pelas cores: os dois primeiros anéis são algarismos, o terceiro é o multiplicador (potência de 10) e o quarto é a tolerância. Cores dos algarismos: preto 0, castanho 1, vermelho 2, laranja 3, amarelo 4, verde 5, azul 6, violeta 7, cinzento 8, branco 9. Assim, 330 Ω é laranja-laranja-castanho e 4,7 kΩ é amarelo-violeta-vermelho.

Condensador. Armazena carga. A sua capacidade mede-se em farad (F), na prática em µF, nF ou pF. Um condensador de 100 nF ligado entre V_CC e GND junto de cada CI (condensador de desacoplamento) absorve os picos de corrente das portas ao comutar. Com uma resistência, forma um circuito RC, de constante de tempo τ = R·C.

Díodo. Deixa passar corrente num só sentido, do ânodo para o cátodo. O LED é um díodo que emite luz quando conduz, com uma queda de tensão típica de 1,8 a 2,2 V, e tem sempre de levar uma resistência em série.

Transístor. Funciona como interruptor controlado por um sinal pequeno. Um NPN fecha entre coletor e emissor quando a base recebe corrente. Serve para ligar cargas que as portas não conseguem alimentar diretamente (um relé, um avisador sonoro, ou buzzer).

Indutor (bobina). Armazena energia em campo magnético e opõe-se a variações de corrente. Aparece em filtros e em fontes comutadas; num relé, a sua bobina gera um pico de tensão ao desligar, e por isso leva um díodo em antiparalelo (de roda livre).

Exemplo resolvido · Resistência para um LED

Ligar um LED vermelho (queda de 2 V, corrente de 10 mA) a uma alimentação de 5 V.

  1. A resistência tem de suportar a diferença: 5 − 2 = 3 V.
  2. R = V / I = 3 / 0,010 = 300 Ω.
  3. O valor calculado, 300 Ω, fica a meio entre 270 Ω e 330 Ω da série normalizada E12. Escolhe-se o valor normalizado imediatamente acima, 330 Ω (laranja-laranja-castanho), que mantém a corrente abaixo de 10 mA.
  4. Corrente real: 3 / 330 ≈ 9,1 mA, perfeitamente segura. Potência na resistência: 3 × 0,0091 ≈ 27 mW, bem abaixo de ¼ W.

Exemplo resolvido · Transístor como interruptor

Uma porta 74HC00 alimentada a 5 V quer ligar um avisador sonoro (buzzer) de 5 V que consome 20 mA, através de um transístor NPN. Segundo o datasheet da Texas Instruments, a saída em nível alto fornece 4 mA com uma tensão garantida de pelo menos V_OH = 3,84 V (a 4,5 V de alimentação, com I_OH = −4 mA).

  1. Para garantir saturação usa-se um ganho "forçado" de 10: I_B = 20 / 10 = 2 mA.
  2. A tensão na resistência de base é, no mínimo, V_OH − V_BE = 3,84 − 0,7 = 3,14 V (a queda base-emissor é cerca de 0,7 V).
  3. R_B = 3,14 / 0,002 = 1570 Ω. Escolhe-se o valor normalizado 1,5 kΩ (castanho-verde-vermelho), abaixo do calculado para a corrente não ficar aquém do necessário: I_B ≥ 3,14 / 1500 ≈ 2,1 mA, acima dos 2 mA pedidos e abaixo dos 4 mA a que o datasheet garante V_OH ≥ 3,84 V.

Com uma porta TTL (74LS00) este circuito não funciona: em nível alto a saída só fornece I_OH = −0,4 mA, cinco vezes menos do que os 2 mA de que a base precisa. Para esta carga usa-se uma porta de outra família, como a 74HC.

Pull-up e pull-down

Uma entrada digital não pode ficar "ao ar", porque apanha ruído e lê valores aleatórios. Se estiver ligada a um botão, usa-se uma resistência (tipicamente 10 kΩ) que puxa a entrada para um nível definido quando o botão está aberto: pull-down para GND (o botão liga a V_CC) ou pull-up para V_CC (o botão liga a GND).

Simbologia ANSI/IEEE

Os esquemas elétricos e eletrónicos seguem símbolos normalizados. Os dos componentes de base, desenhados em texto, são estes:

Resistência         ----[ R ]----        (retângulo; em alternativa, linha em zigue-zague)
Condensador         ----| |----          (duas placas paralelas)
Díodo               ----|>|----          (ânodo à esquerda, cátodo à direita, no lado da barra)
LED                 ----|>|----          (díodo com duas setas a sair)
                           \ \
Transístor NPN             C (coletor)
                          /
                 B ----- |               (a seta no emissor aponta para fora)
                          \>
                           E (emissor)
Massa (GND)           |
                     ---
                      -
Alimentação (V_CC)    +5 V
                       ^
                       |

As portas lógicas aparecem em dois estilos, ambos previstos na norma ANSI/IEEE 91 (o retangular coincide com o da IEC 60617-12). O desenho distintivo identifica a função pela forma do corpo; o retangular usa a mesma caixa para todas e escreve lá dentro o símbolo da função. O círculo marca sempre uma inversão, em qualquer dos estilos.

NOT  (Y = Ā)             AND  (Y = A·B)           NAND  (Y = ¬(A·B))
       |\                       ____                      ____
 A ----| >o---- Y         A ---|    \                A ---|    \
       |/                      |     )--- Y               |     )o-- Y
                         B ---|____/                B ---|____/

OR  (Y = A + B)          NOR  (Y = ¬(A+B))        XOR  (Y = A⊕B)
      _____                    _____                     _____
 A --\     \              A --\     \             A -\\     \
      )     )--- Y             )     )o-- Y            ))     )--- Y
 B --/_____/              B --/_____/              B -//_____/

A XNOR desenha-se como a XOR com um círculo na saída. No estilo retangular, o rótulo dentro da caixa identifica a função:

Porta Rótulo na caixa Círculo na saída
NOT 1 sim (o círculo é o que a distingue de um simples amplificador)
AND & não
NAND & sim
OR ≥1 não
NOR ≥1 sim
XOR =1 não
XNOR =1 sim
  AND (&)            OR (≥1)            NAND (&, círculo)
 A --+-----+        A --+------+        A --+-----+
     | &   |--- Y      | >=1  |--- Y       | &   o--- Y
 B --+-----+        B --+------+        B --+-----+

Saber ler os dois estilos evita enganos com esquemas de origens diferentes.

Para ler um esquema: identificar a alimentação e a massa, seguir o sinal da esquerda para a direita (entradas à esquerda, saídas à direita), reconhecer cada porta pelo símbolo, dar um nome a cada fio intermédio e anotar o valor dos componentes.

Exemplo resolvido · Ler um esquema

Dado o esquema (estilo retangular), obter a expressão de F e a tabela de verdade.

        +-----+
 A -----| &   |
        |     |------ X ------+
 B -----|     |               |   +------+
        +-----+               +---| >=1  |
                                  |      |----- F
        +-----+               +---|      |
 C -----| 1  o|------ Y ------+   +------+
        +-----+
  1. A primeira caixa tem "&" e duas entradas: é uma AND, logo X = A·B.
  2. A segunda caixa tem "1" e um círculo na saída: é um NOT, logo Y = C̄.
  3. A terceira caixa tem "≥1": é uma OR de X e Y, logo F = X + Y = A·B + C̄.
  4. Tabela, com uma coluna por fio intermédio (3 entradas, 8 linhas):
A B C X = A·B Y = C̄ F = X + Y
0 0 0 0 1 1
0 0 1 0 0 0
0 1 0 0 1 1
0 1 1 0 0 0
1 0 0 0 1 1
1 0 1 0 0 0
1 1 0 1 1 1
1 1 1 1 0 1

F vale 1 nas linhas 000, 010, 100, 110 e 111: F = Σm(0, 2, 4, 6, 7). Verificação: com C = 0 o termo C̄ vale 1 e F = 1 sempre; com C = 1, F = A·B, que só vale 1 em 111. ✓

Exemplo resolvido · Definir os componentes e o layout

Montar em breadboard o alarme do capítulo 4, F = S·(P + J), com CI 74HC (CMOS, a família que usamos na montagem).

  1. Portas necessárias: uma OR (P + J) e uma AND (com S). Escolhem-se o 74HC32 (4 OR) e o 74HC08 (4 AND), que têm a mesma disposição de pinos do 7400 (ver «Ler o pinout de um 7400», mais à frente neste capítulo).
  2. Lista de componentes:
Quantidade Componente Função
1 74HC32 (U1) OR de P e J
1 74HC08 (U2) AND de X com S
3 interruptores entradas P, J e S
3 resistências de 10 kΩ (castanho-preto-laranja) pull-down das três entradas
1 LED vermelho indica F
1 resistência de 680 Ω (azul-cinzento-castanho) limita a corrente do LED
2 condensadores de 100 nF desacoplamento, um por CI
1 fonte de 5 V e fios alimentação e ligações
  1. Resistência do LED: a saída do 74HC garante V_OH ≥ 3,84 V com I_OH = −4 mA (datasheet da Texas Instruments). Com um LED vermelho de 2 V e R = 680 Ω, a corrente é pelo menos (3,84 − 2) / 0,68 kΩ ≈ 2,7 mA, dentro do que a porta fornece.
  2. Layout: U1 e U2 lado a lado, a cavalo sobre o canal central, com a marca no pino 1 virada para a esquerda. Barramento + a 5 V e barramento − a GND. Cada interruptor liga o nó de entrada a +5 V, e a resistência de 10 kΩ liga o mesmo nó a GND. Ligações dos CI:
Pino U1 (74HC32) U2 (74HC08)
1 P X (saída de U1, pino 3)
2 J S
3 saída X, vai ao pino 1 de U2 saída F, vai à resistência de 680 Ω e ao LED
4, 5, 9, 10, 12, 13 GND (portas livres, entradas nunca soltas em CMOS) GND (portas livres)
6, 8, 11 em aberto (saídas das portas livres) em aberto
7 GND GND
14 +5 V +5 V
  1. LED: o ânodo (perna longa) liga à resistência de 680 Ω e o cátodo a GND. Antes de ligar a alimentação, verificar de novo os pinos 7 e 14 de cada CI.

Interpretação de datasheets

O datasheet é o documento do fabricante que descreve um CI. Nunca se monta um circuito sem o consultar. As secções mais úteis são:

Secção O que diz
Descrição e características Função do CI, família, tensão de alimentação
Ligações dos pinos (pinout) Qual pino é entrada, saída, V_CC e GND
Tabela de função O que o CI faz para cada combinação das entradas
Valores máximos absolutos Limites que não podem ser excedidos
Condições de funcionamento recomendadas Tensão e temperatura de uso normal
Características elétricas V_IH, V_IL, V_OH, V_OL, correntes, consumo
Características de comutação Atrasos de propagação

Exemplo resolvido · Ler o pinout de um 7400

O 7400 tem 4 portas NAND de 2 entradas em 14 pinos. Ligações: pinos 1 e 2 são as entradas da primeira porta e o pino 3 a sua saída; 4 e 5 entradas e 6 saída da segunda; 9 e 10 entradas e 8 saída da terceira; 12 e 13 entradas e 11 saída da quarta. O pino 7 é GND e o pino 14 é V_CC. O 7402 (NOR) não tem a mesma disposição: nas portas 1 e 2 a saída vem antes das entradas (porta 1: saída 1, entradas 2 e 3; porta 2: saída 4, entradas 5 e 6), mas nas portas 3 e 4 vem depois (porta 3: entradas 8 e 9, saída 10; porta 4: entradas 11 e 12, saída 13). O GND está no pino 7 e o V_CC no 14. Trocar de CI sem consultar o datasheet é um erro clássico de montagem.

A marca de referência (um entalhe semicircular ou um ponto) identifica o pino 1: com o entalhe para a esquerda, o pino 1 é o do canto inferior esquerdo e os pinos contam-se no sentido contrário ao dos ponteiros do relógio.

9. Famílias lógicas

O que é uma família

Uma família lógica é um conjunto de CI com a mesma tecnologia de fabrico e as mesmas características elétricas, de modo que se ligam entre si sem circuitos de adaptação. As duas grandes tecnologias são a TTL (Transistor-Transistor Logic, baseada em transístores bipolares) e a CMOS (Complementary MOS, baseada em transístores de efeito de campo complementares).

Parâmetros funcionais

Parâmetro Significado
V_IH(min) Tensão mínima que a entrada aceita como nível alto
V_IL(max) Tensão máxima que a entrada aceita como nível baixo
V_OH(min) Tensão mínima garantida à saída em nível alto
V_OL(max) Tensão máxima garantida à saída em nível baixo
Margem de ruído Folga entre o que uma saída garante e o que a entrada seguinte exige
Atraso de propagação (t_p) Tempo entre uma variação na entrada e a variação na saída
Dissipação de potência Consumo, que em CMOS cresce com a frequência
Fan-out Número de entradas que uma saída consegue alimentar

As margens de ruído calculam-se por N_MH = V_OH(min) − V_IH(min) (nível alto) e N_ML = V_IL(max) − V_OL(max) (nível baixo). Quanto maiores, mais imune é o circuito a interferências.

Exemplo resolvido · Margens de ruído e fan-out

Valores do 74LS00 (datasheet da Texas Instruments, com a alimentação a 5 V): V_OH(min) = 2,5 V, V_OL(max) = 0,5 V, V_IH(min) = 2,0 V, V_IL(max) = 0,8 V, I_OH = −0,4 mA, I_OL(max) = 8 mA, I_IH = 20 µA e I_IL = −0,4 mA (o sinal negativo indica corrente que sai da entrada).

  1. N_MH = 2,5 − 2,0 = 0,5 V.
  2. N_ML = 0,8 − 0,5 = 0,3 V. A margem mais pequena é a que limita a imunidade ao ruído.
  3. Fan-out no nível baixo = I_OL / I_IL = 8 / 0,4 = 20 entradas.
  4. Fan-out no nível alto = I_OH / I_IH = 0,4 mA / 20 µA = 400 / 20 = 20 entradas.
  5. O fan-out da saída é o menor dos dois valores: 20.

Num 7400 da série standard os valores são outros (V_OH(min) = 2,4 V, I_OL = 16 mA, I_IL = −1,6 mA, I_IH = 40 µA), por isso o datasheet certo tem de ser o do CI que se usa.

Exemplo resolvido · Atraso de propagação e consumo

Analisar o desempenho da XOR de 4 NAND do capítulo 5, feita com um 74LS00 (datasheet da Texas Instruments: t_PLH típico 9 ns, t_PHL típico 10 ns, máximo de 15 ns em ambos).

  1. O caminho mais longo, o caminho crítico, atravessa 3 portas: A (ou B) → N1 → N2 (ou N3) → Y. O caminho A → N2 → Y tem apenas 2.
  2. Atraso típico do caminho crítico: 3 × 10 ns = 30 ns. No pior caso: 3 × 15 ns = 45 ns.
  3. A saída só é válida depois desse tempo, por isso as entradas têm de manter-se estáveis pelo menos 45 ns. Isto limita a frequência de variação das entradas a cerca de 1 / 45 ns ≈ 22 MHz (≈ 33 MHz com os valores típicos).
  4. Consumo: o datasheet dá, para o CI inteiro (quatro portas), I_CC típica de 0,8 mA com as saídas em nível alto e de 2,4 mA com as saídas em nível baixo. A 5 V, isso são 4 mW a 12 mW. Numa série CMOS o consumo em repouso é muito menor, mas cresce com a frequência.

TTL e CMOS

Característica TTL (74, 74LS) CMOS (4000B, 74HC)
Alimentação 5 V, com pouca tolerância Gama larga, consoante a série
Consumo em repouso Elevado Muito baixo
Velocidade Boa Comparável (74HC e 74LS)
Imunidade ao ruído Razoável Elevada
Sensibilidade a estática Baixa Alta
Entradas não utilizadas Evitar deixar soltas Nunca deixar soltas

As séries atuais mais usadas em ensino e em protótipos são a 74HC (CMOS de alta velocidade) e a 74LS. A 74HCT é CMOS com níveis de entrada compatíveis com TTL, o que permite ligar saídas TTL a entradas CMOS. A série 4000B é CMOS de gama larga de alimentação e velocidade modesta.

Boas práticas com famílias lógicas

10. Simulação e montagem em breadboard

Porquê simular primeiro

Simular antes de montar poupa tempo e componentes: um erro de lógica descobre-se em segundos no ecrã, enquanto na placa obriga a procurar um fio mal posto entre dezenas. A simulação testa a lógica; a montagem testa também a realidade (alimentação, contactos, ruído). Um bom projeto faz as duas coisas, por esta ordem.

Software de simulação

Programa Características
Logisim Evolution Desktop, gratuito, desenho por portas, ideal para combinacional e sequencial
CircuitVerse Online, partilha de projetos e simulação de portas
Falstad Simulação analógica e digital animada, mostra correntes e tensões
Tinkercad Circuits Online, mostra a breadboard virtual e CI reais

Procedimento de simulação

  1. Criar o projeto e guardá-lo com um nome claro.
  2. Colocar as entradas (interruptores ou pinos de entrada) e as saídas (LED ou pinos de saída), com nomes iguais aos das variáveis.
  3. Colocar as portas pela ordem do esquema e ligar com fios, confirmando que cada fio termina num pino (um fio solto não conduz).
  4. Testar alternando as entradas e comparando a saída com a tabela de verdade. A maior parte dos simuladores tem uma ferramenta para gerar a tabela de verdade automática do circuito, e outra para criar diagramas temporais.
  5. Registar os resultados e corrigir.

Um plano de testes decente cobre todas as combinações de entrada (2ⁿ), e no caso de circuitos sequenciais testa também as sequências críticas, os valores-limite e o reset.

A placa de ensaio (breadboard)

A breadboard permite montar circuitos sem soldar. A sua estrutura:

Boas práticas de montagem

  1. Desligar a alimentação antes de mexer em fios ou componentes.
  2. Montar primeiro V_CC e GND nos barramentos, e levar a alimentação a cada CI com fios curtos (pino 14 e pino 7 num 7400).
  3. Usar fios rígidos de cores consistentes: vermelho para V_CC, preto para GND, outras cores para os sinais.
  4. Colocar um condensador de 100 nF junto de cada CI.
  5. Ligar as entradas de teste a interruptores com resistência de pull-down e as saídas a LED com resistência em série. O valor depende da família: com um 74HC, que garante V_OH ≥ 3,84 V até 4 mA em nível alto, usa-se 680 Ω (cerca de 3 mA no LED); uma saída TTL (74LS) só fornece 0,4 mA em nível alto e absorve até 8 mA em nível baixo, por isso o LED liga-se entre +5 V e a saída, com 470 Ω.
  6. Montar por blocos, testar cada bloco, e só depois juntar.
  7. Verificar a polaridade do LED (perna longa no ânodo) e dos CI (marca no pino 1).

Exemplo resolvido · Montar a XOR com 4 NAND num 74HC00

O circuito do capítulo 5, montado num 74HC00, que tem a mesma disposição de pinos do 7400:

Porta Entradas (pinos) Ligação Saída (pino)
1 1 e 2 A e B 3 (N1)
2 4 e 5 A e pino 3 6 (N2)
3 9 e 10 pino 3 e B 8 (N3)
4 12 e 13 pinos 6 e 8 11 (Y)
  1. Alimentar: pino 14 a +5 V, pino 7 a GND, 100 nF entre os dois.
  2. Ligar A e B a dois interruptores com pull-down.
  3. Ligar o pino 11 a um LED vermelho (queda de 2 V) com uma resistência de 680 Ω para GND. A saída do 74HC00 garante V_OH ≥ 3,84 V com I_OH = −4 mA, por isso a corrente no LED é pelo menos (3,84 − 2) / 680 ≈ 2,7 mA, abaixo dos 4 mA a que o datasheet garante esse V_OH.
  4. Testar as quatro combinações: o LED só acende com A ≠ B.

Com um 74LS00 esta ligação não serve: o datasheet limita a saída em nível alto a I_OH = −0,4 mA e o LED ficaria quase apagado. Em TTL liga-se o LED entre +5 V e o pino 11, com 470 Ω, e o LED acende quando Y = 0, ou seja, com A = B.

Instrumentos de medida

Se não funciona

Seguir uma ordem fixa poupa tempo: (1) alimentação (medir V_CC no pino de cada CI); (2) massa comum em todos os componentes; (3) pinout verificado contra o datasheet; (4) entradas soltas a baixo ou a alto; (5) testar bloco a bloco, de trás para a frente. A maior parte dos defeitos é uma ligação em falta ou trocada, não um CI avariado.

11. Circuitos sequenciais

Memória e clock

Num circuito sequencial, a saída depende das entradas e do estado anterior: o circuito tem memória. O elemento de memória elementar é o flip-flop e as mudanças de estado são coordenadas por um sinal periódico, o clock. Os circuitos sequenciais são o que torna possíveis os contadores, os registos e os processadores.

Latches e flip-flops

O latch SR (set-reset) pode fazer-se com duas portas NOR realimentadas: S=1 põe a saída Q a 1 (set), R=1 põe-na a 0 (reset), S=R=0 mantém o estado, e S=R=1 é proibido por ser ambíguo. Um latch é sensível ao nível do sinal de controlo; um flip-flop é sensível ao flanco do clock (a transição de 0 para 1, o flanco ascendente, ou de 1 para 0, o flanco descendente), o que o torna previsível em sistemas síncronos.

Tipo Comportamento no flanco ativo Equação de Q⁺
D Q copia D Q⁺ = D
T T=1 inverte, T=0 mantém Q⁺ = T ⊕ Q
JK J=K=0 mantém; J=1,K=0 põe a 1; J=0,K=1 põe a 0; J=K=1 inverte Q⁺ = J·Q̄ + K̄·Q

CI clássicos: 7474 (dois flip-flops D) e 7476 (dois flip-flops JK).

Registos e contadores

Máquinas de estados finitos (FSM)

Uma FSM modela-se com um diagrama de estados e implementa-se com flip-flops (o estado) e lógica combinacional (próximo estado e saídas). Na máquina de Moore, a saída depende só do estado; na de Mealy, depende do estado e das entradas.

Exemplo resolvido · Contador módulo 3

Projetar um contador que conta 00, 01, 10, 00, 01… com dois flip-flops D (Q1 é o bit mais significativo).

  1. Tabela de transições:
Q1 Q0 atual Q1⁺ Q0⁺ seguinte
00 01
01 10
10 00
11 (não usado) 10
  1. Num flip-flop D, a entrada é o valor desejado do estado seguinte: D1 = Q0 (Q1⁺ vale 1 só quando o estado é 01 e quando é 11) e D0 = Q̄1·Q̄0 (Q0⁺ vale 1 só quando o estado é 00).
  2. Estado não usado: o 11 foi mandado para 10 em vez de ficar indefinido. Assim, se o circuito arrancar nesse estado, entra na sequência normal num ciclo de clock.

Erros comuns

Glossário

Síntese

Os circuitos digitais representam tudo com bits: binário e hexadecimal, inteiros em complemento a dois, códigos BCD, Gray e ASCII, e paridade para detetar erros. Um circuito descreve-se por tabela de verdade, expressão booleana ou esquema; a álgebra de Boole, os teoremas de De Morgan e o mapa de Karnaugh simplificam-no, e as portas NAND e NOR são universais. O projeto combinacional segue sempre o roteiro especificar, tabela, simplificar, desenhar, simular, montar. A simbologia e o datasheet dizem como ligar cada CI, e as famílias TTL e CMOS diferem em tensão, consumo e sensibilidade. A simulação valida a lógica e a breadboard valida a montagem. Os circuitos sequenciais juntam memória à lógica combinacional.

Exercícios resolvidos

1. Converte 2025₁₀ para hexadecimal e confirma pelo binário.

Resolução: 2025 ÷ 16 = 126 resto 9; 126 ÷ 16 = 7 resto 14 (E); 7 ÷ 16 = 0 resto 7. Lendo de baixo para cima: 7E9₁₆. Verificação: 7×256 + 14×16 + 9 = 1792 + 224 + 9 = 2025. ✓ Em binário: 0111 1110 1001₂.

2. Converte 0,A4₁₆ para decimal e 5,5625₁₀ para hexadecimal.

Resolução: 0,A4₁₆ = 10/16 + 4/256 = 0,625 + 0,015625 = 0,640625. Para 5,5625: a parte inteira é 5; 0,5625 × 16 = 9,0, algarismo 9 e resto 0. Resultado: 5,9₁₆. Verificação: 5 + 9/16 = 5,5625. ✓

3. Simplifica no mapa de Karnaugh F(A,B,C,D) = Σm(0, 2, 5, 7, 8, 10, 13, 15).

Resolução: os quatro cantos (m0, m2, m8, m10) formam um grupo de 4 com B=0 e D=0: B̄·D̄. O bloco central (m5, m7, m13, m15) é outro grupo de 4 com B=1 e D=1: B·D. Resultado: F = B̄·D̄ + B·D, que é o XNOR de B e D.

4. Implementa F = (A + B)·C̄ só com portas NOR.

Resolução: F = ¬(¬(A+B) + C), por De Morgan. Logo F = NOR( NOR(A,B), C ): duas portas NOR, a primeira com A e B, a segunda com o resultado e C. Teste em A=1, B=0, C=0: NOR(1,0) = 0, NOR(0,0) = 1, e F = (1+0)·1 = 1. ✓

5. Simplifica a função que vale 1 nos dígitos BCD 0, 3, 6 e 9 (códigos 10 a 15 indiferentes).

Resolução: com A como MSB, o grupo A·D cobre o 9 e usa os indiferentes 11, 13 e 15. O 3 junta-se ao indiferente 11 em B̄·C·D. O 6 junta-se ao indiferente 14 em B·C·D̄. O 0 não tem vizinhos úteis e fica como Ā·B̄·C̄·D̄. Resultado: F = Ā·B̄·C̄·D̄ + B̄·C·D + B·C·D̄ + A·D.

6. Lê o esquema e escreve a tabela de verdade. Entradas A, B e C. A primeira caixa tem "≥1" com um círculo na saída e recebe A e B (saída N1). A segunda caixa tem "&" com um círculo na saída e recebe N1 e C. A saída é F.

Resolução: a primeira caixa é uma NOR, N1 = ¬(A + B), e a segunda é uma NAND, F = ¬(N1·C). A saída F só vale 0 quando N1 = 1 e C = 1, ou seja, com A = B = 0 e C = 1 (linha 001). Nas outras sete linhas F = 1. Por Boole: F = ¬(Ā·B̄·C) = A + B + C̄. ✓

7. Define a lista de componentes de um circuito em que um LED acende quando o interruptor X e o interruptor Y estão ambos fechados, usando um 74HC08.

Resolução: 1 CI 74HC08 (usa-se a porta 1: entradas nos pinos 1 e 2, saída no pino 3); 2 interruptores com 2 resistências de pull-down de 10 kΩ; 1 LED com uma resistência de 680 Ω entre o pino 3 e o ânodo, cátodo a GND; 1 condensador de 100 nF entre os pinos 14 e 7; pino 14 a +5 V e pino 7 a GND; entradas das portas livres (4, 5, 9, 10, 12 e 13) ligadas a GND.