Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

ELETRÔNICA DIGITAL 
AULA 3 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Prof. Amilton Carlos Rattmann 
 
 
 
2 
CONVERSA INICIAL 
Com base na definição da lógica que relaciona variáveis booleanas de 
entrada com as variáveis booleanas de saída, organizadas e descritas em uma 
tabela-verdade, torna-se possível construir um circuito digital, por meio de um 
método de otimização e síntese como POS e SOP ou pelo uso gráfico dos mapas 
de Karnaugh que realize essas funções. Nesta aula, apresentaremos um novo 
método de otimização de expressões booleanas e uma série de circuitos 
combinacionais empregados nos mais diversos sistemas e algumas versões 
integradas destas funções em dispositivos MSI (medium-scale-integration). 
Por último, apresentaremos um estudo detalhado de um importante 
recurso da eletrônica digital: o flip-flop. Ele é utilizado na construção de 
contadores, máquinas de estado finito, registradores e em memória RAM 
estática. O flip-flop armazena o valor de um bit. 
TEMA 1 – MÉTODO DE RESOLUÇÃO QUINE-MCCLUSKEY 
 O método Quine-McCluskey é um método para simplificação em 
computador (analítico), desenvolvidos nos anos 1960, que baseia seu algoritmo 
no teorema da absorção do tipo: Ā.B+A.B = B. Portanto, reduz termos 
adjacentes, ou seja, termos nos quais exista a diferença de um bit entre eles. 
Para apresentação do método, será utilizada a tabela-verdade da figura 
(a) definida para um equipamento de processamento de uma indústria 
madeireira que possui quatro sensores que atuam no caminho da madeira. 
Esses sensores nunca estão ativos ao mesmo tempo em função arquitetura 
interna do equipamento, conforme diagrama na figura (b). Projete um circuito 
digital que sinalize sempre que dois ou mais sensores estiverem ativos ao 
mesmo tempo. 
1.1 Preparação 
O método se inicia pela definição dos mintermos implicantes, com base 
em uma tabela-verdade, conforme apresentado na Figura 1(c). Relembrando, os 
mintermos implicantes são aqueles termos no formato {A.B.C; Ā.B.C} que 
assumem valor “1” na função. As variáveis precisam assumir os valores que 
levam o termo ao valor “1”, como em 011 → Ā.B.C = 1, no qual a variável “A” 
precisa estar negada para que o valor resultante do termo seja “1”. 
 
 
3 
Figura 1 – Tabela-verdade do equipamento (a); Diagrama do equipamento (b); 
Expressão dos mintermos implicantes (c) 
 
(a) 
 
(b) 
𝑸 = 𝒎𝟑 +𝒎𝟓 +𝒎𝟔 +𝒎𝟕 +𝒎𝟗 +𝒎𝟏𝟎
+𝒎𝟏𝟏 +𝒎𝟏𝟐 +𝒎𝟏𝟑 +𝒎𝟏𝟒
+𝒎𝟏𝟓 
(c) 
Fonte: Rattmann, 2021. 
1.2 Processo 
Processo para resolução por Quine-McCluskey: 
1. Dividir os mintermos da tabela-verdade, Figura 2(a), em grupo pela 
quantidade de ‘1’s, conforme apresentado na Figura 2(b). 
2. Comparar o todos os mintermos do grupo A com os do grupo B; os do 
grupo B com o grupo C e, assim, sucessivamente, como apresentado na 
Figura 2(c); 
3. A cada comparação marcar os mintermos dos grupos com um bit de 
diferença, substituindo o bit divergente por “x”, dispondo-os em outra 
tabela, conforme Figura 2(d). Cada mintermo utilizado na formação de 
termos do novo grupo deve ser eliminado (tachado), como observado na 
Figura 2(c); 
4. Comparar o grupo A-B com o grupo B-C e, assim, sucessivamente. As 
posições binárias com “x” devem ser coincidentes; 
5. A cada comparação marcar os mintermos dos grupos com um bit de 
diferença, substituindo o bit divergente por “x”, dispondo-os em outra 
tabela, conforme Figura 2(f). Cada mintermo utilizado na formação de 
termos do novo grupo deve ser eliminado (tachado), como observado na 
Figura 2(e); 
 
 
4 
Figura 2 – Processo de resolução por Quine-McCluskey 
 
(a) 
 
(b) 
 
 
(c) 
 
(d) 
 
(e) 
 
 
 
 
(f) 
Fonte: Rattmann, 2021. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5 
6. O processo de combinação continua até se formar um único bloco ou 
todas as comparações possíveis forem realizadas, conforme apresentado 
na Figura 2(f); 
7. Com as combinações dos mintermos finais, são buscados todos os 
mintermos não recombinados (não eliminados) ou termos primos para a 
formação dos termos da expressão booleana. 
8. Para as variáveis ABCD: 
a. a sequência 1X1X forma o termo AC; 
b. a sequência 01XX forma o termo ĀB; 
c. o “x” elimina a variável; 
d. o “0” nega a variável; 
e. sequência repetida deve ser eliminada. 
A Figura 3(a) apresenta a tabela final do método de resolução, na qual os 
termos redundantes (repetidos) são eliminados (tachados). Os termos não 
tachados formam os termos da expressão booleana final, onde XX11 produz CD, 
X1X1 produz BD, X11X, produz BC e assim sucessivamente, conforme 
apresentado na Figura 3(b). O circuito sintetizado da expressão booleana e 
apresentado na Figura 3(c). Nesse exemplo, apenas a tabela final produziu 
termo. Em outros casos, as tabelas anteriores podem produzir termos que não 
foram recombinados. 
Figura 3 – Fase final do processo Quine-McCluskey (a); expressão booleana (b); 
circuito digital (c) 
 
(a) 
 
(c) 
 
(b) 
Fonte: Rattmann, 2021. 
 
 
6 
TEMA 2 – PARIDADE, CONTROLE E PRODUÇÃO DE SINAIS 
Neste tema, serão apresentados vários circuitos digitais de uso comum, 
como circuitos de geração e detecção de paridade, circuitos de controle de sinal, 
sistemas de habilitação de sinais e circuitos de produção e combinação de sinais. 
2.1 Paridade 
Bits de paridade são utilizados como uma forma simples e prática para 
validação de informações binárias, sendo empregados em memórias e sistemas 
de comunicação serial. O bit de paridade indica se a palavra de informação 
contém uma quantidade par, ou ímpar, de bits “1”. Em sistemas de comunicação, 
a paridade é calculada na origem e transmitida com palavra de informação, 
permitindo que o sistema de destino tenha como validar os dados recebidos pelo 
recálculo e comparação da paridade com o valor de paridade recebido. Em 
sistemas de armazenamento de informações, o bit de paridade é inserido na 
gravação da palavra de informação. No momento de leitura, a paridade é 
recalculada e comparada com o valor armazenado. Caso algum bit de 
informação seja corrompido, isso altera a quantidade de bits “1”, que afeta o 
cálculo da paridade e indica um erro. 
A paridade complementa a quantidade de bits “1” para uma quantidade 
par ou ímpar. Caso a paridade seja par em um sistema e exista no octeto de 
informação três bits “1”, o bit de paridade assumirá valor “1” para manter a 
quantidade de bits “1” (informação + paridade) par. Caso sejam, na mesma 
palavra, dois bits “1”, a paridade assumirá valor zero, conforme Figura 4. A 
paridade ímpar apresenta, algebricamente, valores invertidos aos da paridade 
par. 
Figura 4 – Emprego da paridade par e ímpar em octetos de informação 
 
Fonte: Rattmann, 2021. 
 
 
7 
Para sintetizarmos um circuito lógico que calcule a paridade, 
recorreremos à tabela-verdade e descrevemos os estados dos sinais de entrada 
e saída para essa função lógica, conforme descrito na Figura 5(a). Observeque 
em cada linha da tabela, incluindo a variável “P”, a quantidade de bits “1” é par. 
Usando um método de resolução como Quine-McCluskey, conforme 
apresentado na Figura 5(b), obtemos os termos mostrados na primeira linha da 
Figura 5(c). Note que não houve combinação dos termos entre os grupos A e B. 
Portanto, são utilizados os termos não recombinados, que nesse caso estão 
todos na primeira tabela. Na segunda tabela, foram indicadas as não 
recombinações. 
Realizando um procedimento algébrico de termos comuns, encontramos 
as funções XOR, que são as funções bases para determinação de paridade. 
Observe também que nenhum método de resolução discutido neste curso 
apresenta resolução em funções XOR, que precisam ser percebidas diretamente 
na tabela-verdade ou obtidas algebricamente pelo formato geral: 𝑄 = �̅�𝑌 + 𝑋�̅�, 
lembrando que “X” e “Y” podem ser tanto variáveis quanto sinais. 
Os circuitos são sintetizados diretamente da expressão booleana que 
representa uma porta XOR com três entradas. Pelas propriedades da função 
XOR, pode ser aplicada uma propriedade associativa 𝑄 = 𝑋⨁𝑌⨁𝑍 = (𝑋⨁𝑌)⨁𝑍, 
alterando para solução com porta XOR de duas entradas. 
Figura 5 – Tabela-verdade da paridade par (a); Resolução por Quine-McCluskey 
(b); álgebra para chegar à função XOR (c); Circuitos lógicos para paridade par 
(d) 
 
Fonte: Rattmann, 2021. 
 
 
8 
Uma aplicação para bit de paridade pode ser encontrada na transmissão 
da interface RS-232 (V.24), em modo assíncrono, que adota uma estratégia de 
transmitir um caractere por vez, utilizando a marcação de início de transmissão 
com o Start bit (ST), seguido de 7 ou 8 bits de dados (caractere), um bit de 
paridade, para verificação dos bits de dados, e um Stop bit (SB). Após o Start 
bit, o primeiro bit de dados transmitido é LSB do valor binário do caractere, 
seguido pelos demais bits. Por último, é enviado o bit de paridade, que nesse 
caso é par. A transmissão encerra com o Stop bit que sempre um. Na Figura 6, 
é demonstrada a transmissão na interface RS-232 (V.24), parte digital1, de três 
caracteres: “T”, “G” e “m”, cujos códigos hexadecimais são 54h, 47h e 6Dh, 
respectivamente, descritos tanto na tabela ASCII quanto no Unicode. 
Figura 6 – Transmissão dos caracteres "T", "G" e "m" na parte digital da interface 
RS-232 (V.24) 
 
Fonte: Rattmann, 2021. 
 
1 Na parte digital da interface RS-232 (V.24), o sinal é representado por uma tensão 0 a 5 V, com 
representação lógica de forma convencional. Na parte da linha, o nível lógico alto é representado 
por uma tensão negativa entre -3 e -25 V, e o nível lógico baixo, por uma tensão positiva entre 3 
e 25 V. 
 
 
9 
A paridade, conforme observado na Figura 6, ficou ativa na transmissão 
do caractere “T” e “m”, que contém um número ímpar de bits uns, mas ficou 
inativa na transmissão do caractere “G”, que contém um número par de bits uns. 
Como uma última informação, a verificação da paridade é realizada 
também por uma função XOR, que compara o valor recebido com o calculado. 
2.2 Controle sinais 
Para se compreender o controle de sinais, é preciso olhar de uma forma 
um pouco diferente para a tabela-verdade das funções lógicas. Para tanto, 
consideraremos que as funções lógicas de duas entradas têm agora uma única 
entrada de sinal e uma entrada de controle. A entrada de controle pode estar 
ativa ou não, controlando o modo como o sinal de entrada estará disponível 
saída da porta. Nas tabelas-verdade da Figura 7, as variáveis de entrada estão 
considerando uma entrada assinalada como “E” (entrada), e a outra entrada 
como “C” (controle). Observe e compare para cada valor de controle como que 
as saídas e entradas se relacionam. Por exemplo, a porta AND para o valor de 
controle “C”=0 fornece na saída apenas valor zero, independentemente do valor 
existente na entrada “E”. Mas para o valor de controle “C”=1, a saída segue o 
sinal de entrada. Ou seja, temos uma chave digital na qual o sinal passa se o 
controle estiver ativo. 
Figura 7 – Tabela-verdade das funções lógicas com uma das entradas 
considerada sinal de controle 
 
Fonte: Rattmann, 2021. 
Para a porta XOR, de forma um pouco diferente, não existe bloqueio de 
sinal, mas ocorre um efeito interessante. Quando o sinal de controle está em 
zero, o sinal de saída segue o sinal de entrada. Quando, entretanto, o sinal de 
controle está em “1”, o sinal de saída apresenta um valor contrário ao sinal de 
entrada. A porta XOR apresenta-se como uma porta inversora controla, que se 
comporta como buffer quando o sinal de controle está em zero e como uma porta 
 
 
10 
inversora (NOT) quando o sinal de controle está em “1”, conforme apresentado 
na Figura 9. Outras portas apresentam sinal de controle no zero, outras 
apresentam sinal bloqueado em nível alto. Portanto, cada problema de controle 
poderá ser resolvido por uma determinada função lógica. 
A Figura 8 apresenta uma visão mais apropriada para representação dos 
sinais de controle, sinais de entrada e sinais de saída, para todas as portas 
relacionadas nas tabelas-verdade da Figura 7. 
Figura 8 – Uso das portas lógicas em funções de controle 
 
Fonte: Elaborado com base em Tocci, 2010. 
Na Figura 9, observa-se que na troca do sinal de controle (PR4) do nível 
baixo para o nível alto, ocorre a ativação do sinal PR2 e a inversão no sinal PR3, 
em consonância com as descrições apresentadas acima, no primeiro parágrafo 
deste item. 
Figura 9 – Funções de controle com portas AND e XOR 
 
Fonte: Rattmann, 2021. 
2.3 Produção de sinais 
A produção de sinais é uma outra forma de aplicação das tabelas-
verdade. O sinal de saída é construído parte a parte, seccionando o sinal de 
entrada a cada mudança nesses sinais, determinando o valor da secção pela 
tabela-verdade da função envolvida. Naturalmente, sinais periódicos de entrada 
 
 
11 
produzem sinais periódicos de saída, mas com formatos variados que dependem 
dos sinais de entrada e das funções lógicas envolvidas na produção do sinal. 
Na Figura 10, os sinais “A” e “B” de entrada são aplicados a uma porta 
OR e NAND para produzir sinais de saída diferentes, combinados. Na Figura 
10(a), observa-se que a cada variação dos sinais “A” e “B”, é definida uma 
secção, marcada por linhas tracejadas verticais. Na primeira secção de (a), o 
sinal “A”=1 e “B”=0 determina o valor de saída em “1”. Na segunda secção de 
(a), “A”=1 e “B”=1, determina o valor de saída em “1”, e assim sucessivamente. 
Na Figura 10(b), da mesma forma que em (a), os sinais de entrada também são 
divididos em secções e avaliados individuais. 
Figura 10 – Sinais de saída de uma porta lógica OR (a); sinais de saída de uma 
porta lógica NAND (b) 
 
Fonte: Rattmann, 2021. 
Um exemplo de aplicação para a produção de sinais é o código de linha 
Manchester. O código Manchester foi definido inicialmente para gravação de 
informações em cilindros magnéticos, sendo mais tarde utilizado nas primeiras 
redes Ethernet que operavam em 10Mbps. Nessa codificação, definida como 
bifásica, existem inversões de fase para representar os bits “1” e “0” no 
barramento de dados da rede, que ocorrem na metade do tempo de bit. O bit “1” 
sofre uma transição do nível lógico baixo para o nível lógico alto, e o bit “0” sofre 
uma transição do nível lógico alto para o nível lógico baixo, conforme 
demonstrado na Figura 11. Uma porta lógica XOR operando o sinal de dados e 
o sinal de relógio de transmissão produz o código Manchester, como mostra as 
demais informações da Figura 11. 
 
 
12 
Figura 11 – Produção do código de linha Manchester 
 
 
Fonte: Rattmann, 2021. 
2.4 Codificador de prioridade 
Os codificadores de prioridade são utilizados em sistemas de interrupção 
de processadores e outras estruturas de controle para decidir sobre graus de 
importância entre sinais que possam ocorrer simultaneamente. No codificador, 
as entradas têm uma ordem de prioridade,cuja operação define que caso duas 
entradas sejam acionadas simultaneamente, apenas a mais prioritária definirá o 
código de saída. 
Na construção da tabela-verdade, quando uma prioridade maior estiver 
ativa, as demais prioridades de menor grau não têm importância. A saída 
apresentará um código binário sinalizando o nível da prioridade ativa. A 
prioridade P1 é a mais importante, e caso estejam ativas as saídas “xyz”, estas 
indicarão “001b”. Caso a P2 esteja ativa, as saídas indicarão “010b”. Para P3, 
“011b”, e para P4, “100b”. Caso nenhuma linha de prioridade esteja ativa, a saída 
permanecerá em “000b”. A Figura 12(a) apresenta a tabela-verdade para esse 
problema. A Figura 12(b) a solução por Karnaugh. A Figura 12(c) apresenta o 
circuito sintetizado com portas NAND de duas entradas. Lembre-se de que é 
necessário usar alguma álgebra booleana para transformas as expressões SOP 
em expressões NAND apresentadas a seguir: 
𝑥 = 𝑃1̅̅̅̅ . 𝑃2̅̅̅̅̿̿ ̿̿ ̿̿ ̿̿ . 𝑃1̅̅̅̅ . 𝑃4̿̿ ̿̿ ̿̿ ̿̿̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅
 𝑦 = 𝑃1̅̅̅̅ . 𝑃2̅̅ ̅̅ ̅̅ ̅̅ . 𝑃1̅̅̅̅ . 𝑃3̅̅ ̅̅ ̅̅ ̅̅̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅
 𝑧 = 𝑃1̅̅̅̅ . 𝑃2̅̅̅̅ . 𝑃3̅̅ ̅̅ ̅̅ ̅̅̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅
 
 
 
 
 
13 
Figura 12 – Codificador de prioridade – tabela-verdade (a); resolução por 
Karnaugh (b); circuito lógico sintetizado (c) 
 
Fonte: Rattmann, 2021. 
TEMA 3 – CIRCUITOS COMBINACIONAIS 
São denominados circuitos combinacionais aqueles cujas saídas 
dependem apenas das entradas e que apresentam, para uma determinada 
combinação de valores de entrada, sempre o mesmo valor na saída. Neste tema, 
abordaremos vários circuitos lógicos combinacionais clássicos como somadores, 
codificadores e multiplexadores, que são amplamente utilizados e encontrados 
em outros sistemas mais complexos como ALU de microprocessadores e 
microcontroladores e em blocos lógicos de dispositivos lógicos programáveis, 
como CPLD. Serão apresentadas algumas soluções utilizadas para circuitos 
lógicos aritméticos, que são circuitos lógicos que combinam valores binários de 
entrada e produzem valores binários de saída, interpretados corretamente como 
resultados de operações aritméticas. 
3.1 Meio somador 
O processo de adição de bits é de natureza combinacional. Para uma 
soma de dois bits, o resultado é um único bit. Entretanto, quando dois bits com 
valor “1” são somados, o resultado é “0”, com uma transposição de valor “1”, ou 
 
 
14 
seja, o resultado é maior que as unidades operadas, produzindo um “estouro” da 
capacidade de armazenamento utilizada, sinalizada pela transposição. A 
transposição é o “vai-um” dos métodos algébricos utilizados em sistemas 
decimais. 
Avançando na determinação da lógica por trás da soma binária, 
descrevemos o comportamento da operação em uma tabela-verdade, como 
apresentado na Figura 13(a), na qual foram definidas duas variáveis: “A” e “B” 
para a análise. Descrevendo o comportamento aritmético, temos: 
• A soma de “A” e “B”, definidos com valor “0”, é zero, ou seja, tanto 
transposição, definida pela variável “C” (carry), quanto a soma, definida 
pela variável “S” (sum), valem zero; 
• A soma de “A = 1” e “B = 0” ou de “A = 0” e “B = 1”, resulta em “S=1”, mas 
sem transposição, “C=0”; 
• A soma de “A = 1” e “B = 1”, resulta “10b”, ou seja, “S=0”, mas com a 
ocorrência de uma transposição, “C=1”. 
Com esses valores organizados em uma tabela-verdade, o processo de 
análise e síntese pode ser realizado por algum método conhecido. Conforme 
apresentado na Figura 13(b), a função lógica que descreve o comportamento da 
saída “C”, é obtida por uma porta AND. Já a função lógica que descreve o 
comportamento da saída “S” é obtida por uma porta XOR. Portanto, um meio 
somador é construído por duas portas lógicas, conforme apresentado na Figura 
13(c). Um símbolo funcional é utilizado em diagramas mais complexos para 
indicar a função soma, conforme apresentado na Figura 13(d). Esse símbolo 
funcional também pode apresentar forma circular e sigla HA (Half Adder), 
indicando sua função. 
 
 
 
15 
Figura 13 – Meio somador – tabela-verdade (a); expressões booleanas (b); 
circuito lógico (c); símbolo funcional (d) 
 
Fonte: Rattmann, 2021. 
O meio somador não opera uma transposição de entrada, apresentando 
uma funcionalidade incompleta para a operação com vários bits. 
3.2 Somador completo 
O somador completo apresenta uma adequada funcionalidade para a soma de 
vários bits, incluindo a transposição de entrada (carry-in) e a transposição de 
saída (carry-out). Os circuitos somadores completos contam com três variáveis 
de entrada, “A”, “B” e “Ci”, sendo que esse último representa a transposição de 
entrada. As variáveis de saída, assim como no meio somador, são “S” e “Co”. A 
tabela-verdade que apresenta a solução para o somador completo é 
apresentada na Figura 14(a). 
Existem duas expressões normalmente utilizadas para “Co”. Uma obtida 
diretamente do método de resolução (i), e outra obtida a partir dessa última, via 
manipulação algébrica adicional (ii), que preserva mais recursos físicos em 
comparação com a primeira, embora seja mais lenta por contar com até três 
tempos de propagação (tp) de porta. As duas expressões são apresentadas na 
Figura 14(b). A expressão de “S”, obtida pelo método de resolução gráfico, não 
apresenta de forma evidente a função lógica XOR embutida na solução, que 
depende de alguma manipulação algébrica para ser obtida. 
 
 
 
16 
Figura 14 – Somador completo – tabela-verdade (a); resolução das expressões 
booleanas de saída para S e Co, com duas expressões para Co (i) e (ii) 
 
Fonte: Rattmann, 2021. 
Os circuitos gerados a partir das expressões (i) e (ii) são apresentados na 
Figura 15 (a) e (b), respectivamente. Existem algumas representações para o 
bloco funcional do somador completo, apresentadas na Figura 15(c). Em uma 
das representações, a sigla FA significa somador completo (Full Adder). 
Figura 15 – Circuitos lógicos para o somador completo utilizando a expressão 
Co (i) (a); Circuito lógico obtido a partir da expressão lógica Co (ii) (b). Símbolos 
funcionais (c) 
 
Fonte: Rattmann, 2021. 
Para a formação de um somador binário de oito bits, são necessários oitos 
somadores completos interligados. As entradas “Ci” dos blocos somadores 
posteriores (2n), são interligadas com as saídas “Co” dos blocos somadores 
anteriores (2n-1), conforme apresentado na Figura 16. Essa figura ilustra ainda o 
processo de soma de dois octetos: “A = 10110011b” e “B = 10110101b”, 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 = + + = + + + 
 = + + ( + )
 = + ( )
 = 
 = + ( + ) + ( + )
 = + + + + 
 = + + ( + )
 = (1 + ) + ( )
 = + ( )
 
 
 
 
 
17 
produzindo um resultado “S = 01101000b”, mais uma transposição. Na prática, 
“A”, “B” e “S” seriam registradores de oito bits. Registradores são memórias 
implementadas a partir de portas lógicas, cujo assunto será abordado neste 
curso, detalhadamente, mais à frente. 
O resultado da operação de adição de cada bit de “A” e “B” é armazenado 
na respectiva posição de “S”. O bit de transposição é repassado para o próximo 
bloco somador, associado aos bits de ordem mais alta dos registradores. Como 
cada módulo leva cerca de dois tempos de propagação (2 tp) para processar a 
adição, o bit de transposição leva oito vezes esse tempo (16 tp) para completar 
a operação. Esse modelo de somador, denominado de Carry-Ripple, é um 
circuito simples e lento. Há soluções mais rápidas que, de maneira geral, são 
mais complexas, ocupam mais área de silício e consomem mais energia 
(Pedroni, 2010). 
Figura 16 – Somador completo de oito bits 
 
Fonte: Rattmann, 2021. 
Pelo ponto de vista da estruturade dados, os agregados binários são 
vetores. Os operandos “A” e “B” são vetores binários de n bits, que no caso da 
Figura 16, são de 8 bits. O resultado “S” é um vetor de 9 bits (n+1) para abrigar 
os bits do resultado e a transposição da operação (carry-out) na posição MSB. 
O vetor “C”, de 9 bits (n+1), recebe a transposição de entrada no LSB, a 
transposição de saída no MSB e as transposições intermediárias nas demais 
posições, como apresentado na Figura 17. Opcionalmente, esse vetor pode 
conter 8 bits, levando à operação direta da transposição de entrada, sem ocorrer 
o armazenamento do bit no vetor “C”. O vetor “S” também pode conter 8 bits 
quando a transposição não é armazenada como resultado, mas como sinalizador 
de operação, forma mais comumente implementada. Nesse caso, o valor de 
transposição passa a sinalizar um erro de operação, denominado estouro da 
 
 
18 
capacidade do sistema (overflow), indicando que o resultado é inválido. Além 
desse método, o teste dos bits MSB dos operandos também é utilizado para 
indicar erro de overflow. 
Figura 17 – Representação da operação de soma por vetores 
 
Fonte: Rattmann, 2021. 
Em ALUs, o registrador de resultado “S” e o registrador operando “A” são, 
de fato, o mesmo registrador, sendo denominado Acumulador (ACC). Todas as 
operações lógicas e aritméticas da ALU são realizadas entre outros registradores 
e o acumulador, que sempre recebem o resultado da operação. Os resultados 
do acumulador ativam bits de controle de um registrador especial de estado, que 
são utilizados nas decisões de salto do processador, como a transposição que 
ativa um bit de overflow, indicando que o resultado é maior que o tamanho do 
registrador, ou no resultado zero, que ativa o bit de zero do registrador de estado. 
Cada CPU apresenta um nome para este registrador especial, como palavra de 
status ou flags. Os passos realizados para que as operações ocorram, como a 
movimentação de dados entre memórias e registradores, são organizados pela 
unidade de controle dos processadores, conforme apresentado na Figura 18 
(Tocci, 2011). 
Figura 18 – Diagrama esquemático de uma Unidade Lógica e Aritmética 
 
Fonte: Rattmann, 2021. 
 
 
19 
3.3 Subtratores 
A subtração, assim como visto na adição, apresenta uma relação 
operacional com os bits de transposição, além do resultado poder ser negativo. 
O processo de construção do circuito lógico de subtração parte dos resultados 
necessários e seus registros na tabela-verdade para obtenção das expressões 
booleanas e para a construção dos circuitos lógicos de subtração. 
Na subtração, os sinais de transposição (carry) são substituídos pelo sinal 
de empréstimo, “vem-um” (borrow) dos métodos algébricos decimais. Para a 
análise dessa operação, consideraremos o empréstimo como valor= -1, aplicado 
na expressão Wi+A-B, na qual Wi é empréstimo de entrada (Pedroni, 2011). 
Na operação de subtração entre “A” e “B”, temos 
• A=0 e B=1, sem empréstimo: Wi=0, implica em 0+0-1=-1. O resultado 
negativo indica que houve empréstimo. Em operação binária (módulo 2), 
o empréstimo produz o valor 10b que subtraído de 1, resulta em 1. Dessa 
forma, Wi = 1 (ativo) e S = 1 (modulo 2 do resultado); 
• A=0 e B=0, com empréstimo: Wi=-1, implica em -1+0-0=-1. O resultado 
indica que houve empréstimo. Dessa forma, Wi = 1 (ativo) e S = 1; 
• A=1 e B=0, com empréstimo: Wi=-1, implica em -1+1-0=0. O resultado 
indica que não houve empréstimo. Dessa forma, Wi = 0 (não ativo) e S = 
0; 
• A=0 e B=1, com empréstimo: Wi=-1, implica em -1+0-1=-2. O resultado 
negativo indica que houve empréstimo. Dessa forma, Wi = 1 (ativo) e S = 
0 (módulo 2 do resultado). 
Com esses dados levantados, a tabela-verdade é construída sendo 
apresentada na Figura 19(a). A expressão de “S”, obtida pelo método de 
resolução gráfico, não apresenta, como já visto, de forma evidente a função 
lógica XOR equivalente, que depende de manipulação algébrica. O sinal Wo 
apresenta duas expressões que podem ser encontradas em implementações. 
Os circuitos gerados a partir das expressões (i) e (ii) são apresentados na 
Figura 20 (a) e (b), respectivamente. Observe que os circuitos da Figura 20 são 
muito semelhantes aos da Figura 15, sendo possível compartilhar boa parte dos 
 
 
20 
recursos na elaboração de um único circuito lógico somador/subtrator, 
selecionando a função aritmética através de um sinal de controle. 
Figura 19 – Subtrator completo – tabela-verdade (a); resolução das expressões 
booleanas de saída para S e Wo, com duas expressões para Wo (i) e (ii) 
 
Fonte: Rattmann, 2021. 
Figura 20 – Circuitos lógicos para o subtrator completo utilizando a expressão 
Wo (i) (a) e a expressão lógica Wo (ii) (b) 
 
Fonte: Rattmann, 2021. 
A Figura 21(b) apresenta um circuito subtrator/somador que realiza uma 
ou outra função via sinal de controle SUB. Caso SUB esteja em nível lógico alto, 
o circuito executa a função subtração; caso esteja em nível lógico baixo, executa 
a função de adição. Observe que as expressões lógicas da Figura 21(a), “Ci” e 
“Wi”, “Co” e “Wo”, são equivalentes e que existe basicamente duas negações 
que diferenciam as expressões de adição e subtração, justamente 
representadas pelas portas NOT presentes no circuito da Figura 20(b). As portas 
inversoras desse circuito foram substituídas por portas de controle (XOR) que, 
como visto na Figura 8, apresentam um comportamento de inversão controlada. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 = + + 
 = + + + 
 = + + ( + )
 = + ( )
 = 
 = + ( + ) + ( + )
 = + + + + 
 = + + ( + )
 = . (1 + ) + ( )
 = + ( )
 
 
 
 
 
21 
O sinal SUB atua na seleção de função, invertendo os valores de “A” e do circuito 
lógico de “Wo”, via porta XOR, que são as diferenças existentes entre as 
expressões lógicas do somador e do subtrator. 
Figura 21 – Comparação entre as tabelas-verdade da função adição e subtração 
(a); circuito lógico para adição/subtração selecionado por sinal de controle (b) 
 
Fonte: Rattmann, 2021. 
Uma vez que a subtração de dois valores como 2-1=1 pode ser vista como 
a adição de um número positivo e de outro negativo, como em 2+(-1), a aplicação 
do complemento de 2 no segundo operando, e a sequente, realização da soma, 
substituiu os circuitos subtratores, sendo a forma mais utilizada de 
implementação. 
3.4 Complemento de 2 
Como visto anteriormente, o complemento de 2 é a forma mais utilizada 
para representação de números negativos. Para se determinar o valor de -2, 
complementa-se o valor positivo de 2, “00000010b”, obtendo-se “11111101b”. 
Para o complemento de 2, soma-se uma unidade binária, obtendo-se finalmente 
“11111110b”. Como prova da representação, adicionando 2+(-2), “11111101b” + 
“11111110b”, obtém-se “00000000b”. 
Um circuito lógico para realizar o complemento de 2 pode utilizar o mesmo 
processo manual: inversão e soma de uma unidade, como apresentado na 
Figura 22. As portas XOR realizam ou não a inversão dependendo do valor de 
𝑆𝑈𝐵/𝑆𝑈𝑀̅̅ ̅̅ ̅̅ . Essa representação considera que o sinal está ativo como nível 
lógico alto. Assim, a subtração está ativa com nível lógico alto e a soma com 
 
 
22 
nível lógico baixo (negado). Para o sinal de controle em nível alto, o operando 
“B” sofre uma inversão dos seus valores binários causados pelas portas XOR. 
Além disso, a presença do sinal de transposição de entrada Ci (carry-in), 
produzido pelo sinal de controle, finaliza o complemento de 2, acrescentando 
uma unidade binária à operação. Com o sinal de controle em nível baixo, as 
portas XOR representam apenas atraso de propagação sem alterar o valor lógico 
de “B” e a transposição de entrada deixa de existir, realizandoa adição entre os 
valores. 
Figura 22 – Circuito subtrator/somador por complemento de 2 
 
Fonte: Rattmann, 2021. 
3.5 Codificadores e decodificadores 
Os circuitos codificadores são utilizados para agregação de sinais ou para 
geração de códigos para linhas com significado individual. Podem ser 
construídos para estabelecer prioridades entre sinais, como em codificadores de 
prioridade. Um teclado de 16 teclas, por exemplo, utiliza 16 linhas para conduzir 
os sinais digitais individuais de cada tecla até a unidade de controle, que poderia 
estar localizada em outra placa de circuito impresso, ocupando várias vias de 
conectores e cabos. Codificando essas 16 linhas, em código binário, por 
exemplo, seriam empregadas apenas quatro linhas para o código e uma para 
sinalização de tecla pressionada (strobe). A tabela-verdade para esse 
codificador é apresentada na Figura 23, da qual podemos apresentar algumas 
observações: 
 
 
23 
• A tabela-verdade é degenerada, pois seriam necessárias mais 65.000 
linhas para representar as 216 possíveis combinações de entrada; 
• Não é possível codificar teclas pressionadas simultaneamente; 
• A tabela apresenta uma prioridade no acionamento das teclas, na qual 
uma vez pressionada T1, não importa o estado nas demais teclas, 
representado pelo “X” (don’t care). O mesmo ocorre para T2 com relação 
às teclas T3, T4 e assim sucessivamente; 
• O sinal St (strobe) fica ativo quando uma tecla é pressionada. 
Figura 23 – Tabela-verdade do codificador de 16 para 4 linhas, com linha de 
sinalização (strobe) 
 
Fonte: Rattmann, 2021. 
Pelas observações e pelas técnicas vistas até agora, seria um grande 
desafio sintetizar esse codificador. Todavia, podemos dividir o desafio em partes 
funcionais para facilitar a construção do circuito digital. Uma das observações 
apresentadas acima sugere a adoção de uma relação de prioridade entre as 
entradas como uma forma de arbitrar a ocorrência de sinais simultâneos. Um 
codificador de prioridade teria essa função. 
 
 
 
24 
3.5.1 Codificadores de prioridade 
O codificador de prioridade é um circuito de N entradas para N saídas, no 
qual a entrada de maior prioridade, independentemente das demais entradas, 
define a saída. A Figura 24(a) apresenta a tabela-verdade para o codificador de 
prioridade para oito linhas. Na Figura 24(b), são apresentadas as expressões 
booleanas de cada linha de saída, que se mostram crescentes com o valor N. 
Entretanto, se definirmos variáveis intermediárias, podemos encontrar uma 
implementação modular. Reescrevendo as expressões de saída, teremos: 
• 𝑆6 = 𝑥.𝐸6 → 𝑥 = 𝐸8̅̅ ̅. 𝐸7̅̅ ̅ 
• 𝑆5 = 𝑦.𝐸5 → 𝑦 = 𝑥. 𝐸6̅̅ ̅ 
• 𝑆4 = 𝑧. 𝐸4 → 𝑧 = 𝑦. 𝐸5̅̅ ̅ generalizando, 
• 𝑆𝑛−1 = 𝑤𝑖 . 𝐸𝑛−1 → 𝑤𝑖 = 𝑃𝑛 . 𝐸𝑛̅̅ ̅ → 𝑆𝑛−1 = 𝑃𝑛 . 𝐸𝑛̅̅ ̅. 𝐸𝑛−1 
Figura 24 – Tabela-verdade de um codificador de prioridade de 8 linhas (a); 
expressões algébricas das saídas priorizadas (b) 
 
Fonte: Rattmann, 2021. 
Assim, as portas lógicas com quantidades de entradas crescentes podem 
ser substituídas e implementadas com operações AND parciais, formando um 
circuito com estrutura repetitiva, como observado na Figura 25(a). A 
configuração lógica modular é apresentada na Figura 25(b) e sua respectiva 
aplicação estruturada é sugerida na Figura 25(c). 
A saída codificada por prioridade facilita o processo posterior de 
codificação binária, por limitar as combinações nos estados de saída. 
 
 
 
25 
Figura 25 – Circuito lógico do codificador de prioridade (a); módulo genérico do 
codificador de prioridade (b); aplicação do módulo de prioridade (c) 
 
Fonte: Rattmann, 2021. 
3.5.2 Codificador One-Hot – binário 
O codificador One-Hot para binário é um circuito lógico combinacional de 
2N entradas para N saídas. As entradas, entretanto, apresentam apenas um sinal 
ativo em nível alto a cada instante, semelhante à saída do codificador de 
prioridade, como descrito na tabela-verdade da Figura 26(a). A elevada 
quantidade de variáveis booleanas de entrada restringe o uso de técnicas 
gráficas na resolução. Todavia, as combinações de entradas são simples, 
permitindo que o método SOP seja o mais prático nessa solução. As expressões 
do codificador são apresentadas na Figura 26(b). O código no tribit C2C1C0, para 
nenhuma entrada ou para entrada H1, é o mesmo. O sinal St (strobe) é 
necessário para diferenciar uma conversão válida da condição de nenhuma 
entrada, além de sinalizar quando um sinal convertido está presente. 
 
 
 
26 
Figura 26 – Tabela-verdade do codificador One-Hot para binário com N=3 (a); 
expressões booleanas de saída obtidas por SOP 
 
Fonte: Rattmann, 2021. 
Figura 27 – Circuito lógico do codificador One-Hot – binário (a); expressões 
booleanas com aproveitamento de termos comuns (b) 
 
Fonte: Rattmann, 2021. 
Na Figura 27(a), é apresentado o circuito lógico sintetizado do codificador 
One-Hot – binário. Observe que houve uma redução no tamanho do circuito 
decorrente do aproveitamento de expressões booleanas comuns entre as 
saídas, indicadas na Figura 27(b) por “x”, “y” e “z”. Esta é uma técnica final, 
aplicada após a síntese, com o propósito de melhorar a resposta do circuito em 
relação a algum parâmetro, através manipulação algébrica, privilegiando a 
redução do tempo de propagação do circuito, a redução do consumo ou a área 
de silício, por exemplo. 
 
 
 
27 
3.5.3 Codificador de teclado 
O circuito lógico para a implementação de um codificador de teclado com 
16 teclas, inicialmente discutido em 3.5, pode ser obtido de forma mais simples 
através do emprego de codificadores combinados, adotando-se um codificador 
de prioridade e um codificador One-Hot para binário, em sequência, conforme 
diagrama apresentado na Figura 28. O codificador para 16 teclas, por esse 
método, empregaria 65 portas lógicas, contabilizado pelos circuitos dos itens 
3.5.1 e 3.5.2, proporcionalmente. Para estabelecer uma comparação entre o 
método de codificadores combinados e o método clássico (via tabela-verdade), 
na síntese de um codificador para um teclado com oito teclas, seriam utilizadas 
35 e 300 portas lógicas, respectivamente, para circuitos com a mesma função. 
Figura 28 – Esquema de construção de codificador de teclado através de outros 
codificadores 
 
Fonte: Rattmann, 2021. 
Outro método utilizado para teclado é a indexação de linhas e colunas 
para cada tecla. Normalmente, esse método é implementado pela varredura de 
linhas e leitura de colunas, geralmente utilizando microcontroladores. Em 
circuitos combinacionais, para 16 teclas, sendo 4 linhas e 4 colunas, implicaria 
uma tabela-verdade com 256 linhas, gerando um circuito com cerca de 680 
portas lógicas. Portanto, existem várias soluções possíveis e disponíveis, mas 
torna-se essencial encolher aquelas que sejam mais adequadas à resolução do 
problema. 
3.5.4 Decodificador BCD – 7 segmentos 
Os decodificadores são circuitos lógicos combinacionais que, 
normalmente, possuem mais linhas de saída do que linhas de entrada. O 
decodificador BCD – 7 segmentos, por exemplo, que foi apresentado em aula 
 
 
28 
anterior, apresenta quatro sinais de entrada e acionam 7 sinais de saída (LEDs) 
para formação dos números em um display de 7 segmentos. 
3.5.5 Decodificador binário 
O decodificador binário é um circuito lógico que apresenta N linhas de 
entrada e 2N linhas de saída. São normalmente designados como 
decodificadores 3:8 ou 4:16, conforme o valor de N. Nesse decodificador, apenas 
uma saída estará ativa para cada combinação dos sinais de entrada. 
Um decodificador 3:8 é apresentado na Figura 29, na qual a tabela-
verdade é apresentada em (a), as expressões SOP em (b) e o circuito lógico 
empregando portas NOR em (c). 
Figura 29 – Tabela-verdade decodificador 3:8 (a); expressões booleanas SOP 
das saídas de decodificador (b); Circuito lógico NOR do decodificador 3:8 
 
Fonte:Rattmann, 2021. 
Os decodificadores são utilizados em vários blocos lógicos, entre eles em 
habilitação de partes de circuitos ou componentes integrados, normalmente 
utilizando um esquema de endereçamento comum. Arranjo de circuitos de 
memória para ampliação de capacidade total de armazenamento, por exemplo, 
utilizam o decodificador binário para habilitar um CI de memória específico. 
Nesse arranjo, todos os CIs de memória estão ligados aos mesmos sinais de 
endereçamento, controle e dados, sendo que a única forma de impedir que 
sejam acionados simultaneamente é a utilização de um sinal de habilitação 
presente no CI. Esse sinal é controlado pela saída do decodificador conforme a 
 
 
29 
combinação das linhas de endereçamento extras aplicadas ao decodificador. A 
Figura 30 apresenta um diagrama de endereçamento para um banco de 8 MB, 
utilizando 8 circuitos integrados de memória de 1 MB. 
Figura 30 – Aplicação do decodificador 3:8 na seleção individual de oito CIs de 
memória, com três linhas adicionais de endereçamento 
 
Fonte: Rattmann, 2021. 
3.6 Multiplexadores e demultiplexadores 
Os multiplexadores são circuitos lógicos de N entradas para uma saída, 
na qual cada entrada pode ser comutada (conectada) à saída, como por uma 
chave, por sinais de seleção. Os demultiplexadores, de forma oposta, são 
circuitos lógicos com uma entrada e N saídas, no qual uma entrada pode ser 
conectada à saída, controlado por sinais de seleção. Portas lógica NAND, 
operando como controle e circuitos de decodificação 2N:N, compõem os circuitos 
lógicos de mux e demux. A Figura 31(a) apresenta um multiplexador de duas 
entradas. Observe que o sinal de seleção ora ativa uma porta AND ora outra, 
fazendo com que o sinal “X” ou “Y”, esteja presente na saída. Na Figura 31(b), é 
apresentado um demultiplexador de dois canais, no qual o sinal de entrada é 
comum às duas portas AND, mas apenas uma delas estará habilitada pelo sinal 
de seleção, fazendo com que o sinal de entrada esteja apenas na saída 
selecionada. 
Na Figura 31(c) é apresentado um multiplexador de quatro canais, no qual 
se percebe um decodificador 2:4 para a seleção de uma das portas AND de 
controle. O decodificador é implementado em duas das três entradas das portas 
AND. Uma das quatro entradas “Xn” estará presente na saída “M” do circuito. Na 
Figura 31(d), é apresentado o circuito demultiplexador de quatro canais, no qual 
 
 
30 
a entrada “D” estará presente em uma das saídas “Xn”, dependendo dos sinais 
de seleção S1S0. Os símbolos utilizados para multiplexador ou demultiplexador 
são apresentados, ao lado de cada circuito lógico, na Figura 31. 
Figura 31 – Circuito lógico e símbolo de: mux duas entradas (a); demux de duas 
saídas (b); mux de quatro entradas (c); demux de quatro saídas (d) 
 
Fonte: Rattmann, 2021. 
TEMA 4 – CIRCUITOS INTEGRADOS MSI 
Os circuitos integrados são formados por resistores, diodos e transistores 
em uma única pastilha de silício. A quantidade de transistores, comumente, é 
tida como uma medida de complexidade dos circuitos integrados. Outra medida 
é dada pela quantidade de portas lógicas existentes nos circuitos integrados. Os 
circuitos integrados MSI (medium-scale-integration) possuem algumas centenas 
de transistores e cerca de 100 portas lógicas, que integram funções completas, 
como será visto neste tema. 
4.1 Decodificadores 
O primeiro exemplo de CI MSI será o decodificador binário 74AHC138. É 
um CI de 16 pinos, com função de decodificador de 3 para 8 linhas, em lógica 
NAND, de família CMOS de alta velocidade (AHC). O CI possui 3 entradas de 
sinais codificados em binário (An), 8 saídas (Yn), 3 sinais para habilitação (En) 
e mais dois pinos de alimentação (Vcc, GND), conforme apresentado na Figura 
 
 
31 
32(a). O circuito completo do decodificador é mostrado na Figura32(b), no qual 
se observa os circuitos de decodificação e habilitação de saída. 
Figura 32 – Vista superior do 74AHC138 (a); circuito lógico do CI 74AHC138 (b) 
 
Fonte: baseado em Diodes, 2021. 
Quando o CI está desabilitado, as entradas são desconsideradas e 
representadas em “X” (don’t care) na F, e todas as saídas apresentam nível 
lógico alto “H”. Na habilitação do CI, as entradas são decodificadas ativando uma 
única saída para cada código de entrada. 
Figura 33 – Tabela-verdade completa do circuito integrado 74AHC138 
 
Fonte: Diodes, 2021. 
 
 
 
32 
Entre as aplicações desse componente, estão: 
• Decodificação de seleção de chip de memória; 
• Demultiplexação; 
• Controle de periféricos de linha única; 
• Extensão de controle para microcontrolador para acionamento de 
dispositivos. 
4.2 Decodificador de BCD para 7 segmentos 
Os decodificadores de BDC para 7 segmentos, como o 74HC4511, são 
muito comuns em circuitos com mostradores digitais, como apresentado na 
Figura 34(a). Encapsulado em DIP (Dual-In-line Package) de 16 pinos, visto na 
Figura 34(b), é da família CMOS (HC) e possui saídas de alta capacidade de 
corrente. Conta com sinais especiais de controle, como: LE’ (Latch Enable), para 
habilitação da memória interna, BL’ (Blank Enable), para apagar o mostrador, e 
LT’ (Lamp Test), para testar os LEDs, ativando todos os segmentos do 
mostrador, conforme descritos na tabela-verdade da Figura 34(c). 
Figura 34 – Decodificador BCD-7 segmentos: saídas do display e designação de 
segmentos (a). Vista superior (b) tabela-verdade (c) 
 
Fonte: Elaborado com base em Texas, 2021. 
A Figura 35(a) mostra o diagrama em blocos e os circuitos de controle em 
(b) do 74HC4511. 
 
 
33 
Figura 35 – Diagrama em blocos do decodificador (a); circuitos lógicos de 
controle do mostrador (b) 
 
Fonte: Elaborado com base em Texas, 2021. 
4.3 Codificador de prioridade 
O 74LS147 é um CI codificador de prioridade de 10 linhas de entrada para 
4 linhas de saída. Encapsulado em DIP de 16 pinos, apresentado na Figura 
36(a), da família TTL, possui nove entradas, numeradas de 1 a 9 e quatro saídas. 
As entradas são sensíveis a níveis lógicos baixos, sendo que a de maior 
prioridade é a nove (9), seguida pela entrada oito (8), e assim sucessivamente. 
As saídas são codificadas com lógica negada de “1110b” a “0110b” para as 
entradas de um a nove, respectivamente. A saída para nenhuma entrada é 
“1111b”, que é a condição implícita da entrada zero, conforme apresentado na 
Figura 36(b). 
Figura 36 – CI codificador de prioridade: vista superior (a); tabela-verdade (b) 
 
Fonte: Elaborado com base em Motorola, 2021. 
 
 
34 
4.4 Contador BCD 
O CI 74LS90 é um contador duplo tanto para código BCD quanto para 
código de módulo 5 de dois estágios ou bi-quinário. O CI apresenta quatro sinais 
de saída (Qα) para a representação da contagem, duas linhas de reset, e duas 
entradas de relógio (clock), que são utilizadas para acionar a contagem. O 
contador BCD gera saídas de “0000b” (0) a “1001b” (9). Os pinos MR realizam 
um reset no contador e os pinos MS carregam o valor “1001b”, para aplicações 
que utilizam o complemento de nove. O contador módulo 5 gera saídas de 005 
até 145. 
Para ativar o contador BCD, a saída Q0 deve ser interligada com a entrada 
CP1, e o sinal de relógio deve ser aplicado na entrada CP0. Para ativar o contador 
módulo 5, a saída Q3 deve ser interligada com CP0.e os pulsos de relógio 
aplicados em CP1. 
O 74LS90 possui os estágios internos separados para permitir, além da 
divisão por 10, simétrica em modulo 5, a divisão por 2 e por 5, independentes. 
Figura 37 – Contador BCD: visão superior (a); tabela-verdade de controle (b); 
tabela-verdade de contagem (c) 
 
Fonte: Elaborado com base em Fairchild, 2021. 
 
 
 
35 
4.5 Contador de eventos 
O próximo exemplo emprega componentes digitais MSI para implementar 
um contador de eventos de dígito único, em modo BCD, com relógio externo 
proveniente do circuito de interface do sensor utilizado, apresentado na Figura38. 
Figura 38 – Contador de eventos BCD com circuitos integrados MSI 
 
Fonte: Rattmann, 2021. 
TEMA 5 – FLIP-FLOP 
Neste tema, serão abordados circuitos para retenção de valores que são 
conhecidos como flip-flops. Os flip-flops são utilizados em circuitos lógicos que 
operam com memorização de estados como em contadores, registradores e 
máquinas de estados finitos. 
5.1 Sistemas sequenciais 
Nos temas anteriores, estudamos os circuitos lógicos combinacionais, 
cujos resultados da saída são instantâneos, repetitivos e definidos 
exclusivamente pelas combinações das entradas. Neste tema, estudaremos os 
circuitos sequenciais, cujas saídas dependem dos estados anteriores, 
armazenados em memórias, conforme diagrama apresentado na 39(a). 
O elemento mais importante das memórias eletrônicas são os flip-flops, 
que são formados por portas lógicas realimentadas por interconexões, que criam 
o circuito de retenção, mantendo o estado lógico. Os flip-flops apresentam uma 
saída normal, para a qual são definidos os estados de saída, e uma saída 
 
 
36 
negada (invertida) conforme apresentado na Figura 39(b). Os flip-flops assumem 
dois estados: o Set, quando a saída (normal) vai para um, e o Reset, quando a 
saída (normal) vai para zero, dependendo dos sinais de entrada. 
Figura 39 – Diagrama de circuito lógico sequencial (a); diagrama genérico de flip-
flop (b) 
 
Fonte: Elaborado com base em Tocci, 2011. 
5.2 Flip-Flop NAND 
O flip-flop NAND RS (FF RS) é o primeiro que será estudado, por ser o 
mais simples e por ser utilizado na formação de outros flip-flops. O FF RS é 
apresentado na Figura 40(a), no qual se apresentam duas portas lógicas NAND, 
interconectadas criando realimentação cruzada, observada pela conexão da 
saída de uma porta lógica à entrada da outra porta lógica e vice-versa. Circuitos 
realimentados podem apresentar estabilidade, condição quando os níveis 
lógicos das saídas se apresentam estáveis, ou instabilidade, quando os níveis 
lógicos não estabilizam. A estabilidade é avaliada, em ambos os casos, para os 
sinais de entrada estáveis. O símbolo do FF RS é apresentado na Figura 40(b). 
Figura 40 – Flip-flop NAND RS (a); Símbolo flip-flop RS (b) 
 
Fonte: Rattmann, 2021. 
 
 
37 
 
O comportamento do FF depende das entradas “R” e “S” e das condições 
de estabilidade da realimentação do circuito. Para se apresentar o princípio de 
funcionamento do FF, fazem-se necessárias algumas considerações: 
• O nível lógico baixo aplicado em uma das entradas de uma porta NAND 
define o estado de saída como nível baixo, independentemente do valor 
lógico da outra entrada; 
• Aplicando nível lógico alto em uma das entradas, por outro lado, não há 
como saber o nível lógico de saída até que o valor da outra entrada seja 
conhecido; 
• A porta lógica ligada à saída Q é denominada porta Q, e a segunda, como 
porta Q’. 
Avaliando o FF na situação da Figura 40(a), com S=0 e R=1: 
1. Ao se aplicar níveis lógicos nas entradas do FF, S=0 e R=1 (1º), o valor 
de S é suficiente para definir o estado de saída da porta lógica Q, em 
Q=1 (2º); 
2. Esse valor é aplicado na entrada da porta Q’ (3º) que, com o valor de 
R, define o estado de saída desta porta Q’, em Q’=0 (4º); 
3. O valor da saída da porta Q’ é aplicado na entrada da porta Q (5º) que, 
com o valor de S, mantém o nível lógico de saída, anterior; 
4. As duas portas mantêm os níveis lógicos de saída definidos e estáveis. 
Nesta condição, o FF está em “SET”, quando Q = 1 e Q’ = 0. 
Avaliando o FF na situação da Figura 40(b), com S=1 e R=0: 
1. Ao se aplicar níveis lógicos nas entradas do FF, S=1 e R=0 (1º), o valor 
de R é suficiente para definir o estado de saída da porta lógica Q’, em 
Q’=1 (2º); 
2. Esse valor é aplicado na entrada da porta Q (3º) que, com o valor de S, 
define o estado de saída desta porta Q, em Q=0 (4º); 
3. O valor da saída da porta Q é aplicado na entrada da porta Q’ (5º), que, 
com o valor de R, mantém o nível lógico de saída, anterior; 
4. As duas portas mantêm os níveis lógicos de saída definidos e estáveis. 
Nessa condição, o FF está “RESET”, quando Q = 0 e Q’ = 1. 
 
 
38 
Figura 41 – Análise do funcionamento do FF RS NAND, na condição de SET (a); 
na condição de RESET (b); na condição proibida (c); na condição de manutenção 
SET (d); na condição de manutenção RESET (e); tabela-verdade FF RS NAND 
(f) 
 
Fonte: Rattmann, 2021. 
Avaliando o FF na situação da Figura 34(c), com S=0 e R=0: 
1. Ao se aplicar níveis lógicos nas entradas do FF, S=0 e R=0 (1º), os 
valores de R e S são suficientes para definir os estados de saída das 
duas portas lógicas em nível lógico alto, criando uma inconsistência 
com relação às saídas Q e Q’, uma vez que devem ser opostas (2º); 
2. Esses valores aplicados nas entradas das duas portas (3º) não alteram 
o estado de saída, mantendo-os em Q=1 e Q’=1; 
3. As duas portas mantêm os níveis lógicos de saída definidos e estáveis, 
porém essa combinação de valores de entrada leva o FF a uma 
condição de inconsistência. Por esse motivo, são considerados 
proibidos e não devem ser utilizados. 
 
 
 
39 
Para essa avaliação, deve-se considerar que o FF estava em SET e as 
entradas foram levadas à condição de S=1 e R=1, conforme Figura 34(d): 
1. Ao se alterar o nível lógico na entrada S do FF para nível lógico alto (1º), 
a porta Q não altera o valor de saída (2º); 
2. Dessa forma, todos os demais valores lógicos são mantidos (3º)(4º)(5º); 
3. Essa condição de entrada mantém o estado de SET, que já estava 
definido, na saída do FF. Essas condições de entrada mantém o estado 
anterior do FF: Q=Q-1 e Q’=Q’-1. 
Para essa avaliação deve-se considerar que o FF estava em RESET e as 
entradas foram levadas à condição de S=1 e R=1, conforme Figura 41(e): 
1. Ao se alterar o nível lógico na entrada R do FF para nível lógico alto (1º), 
a porta Q’ não altera o valor de saída (2º); 
2. Dessa forma, todos os demais valores lógicos são mantidos (3º)(4º)(5º); 
3. Essa condição de entrada mantém o estado de RESET, que já estava 
definido, na saída do FF. Essas condições de entrada mantém o estado 
anterior do FF: Q=Q-1 e Q’=Q’-1. 
Como visto na análise do FF RS NAND, o estado de manutenção é o 
estado de repouso, no qual o flip-flop permanece até que um sinal de Set ou 
Reset seja aplicado. Essa condição operacional evita que os sinais de Set e 
Reset sejam acionados ao mesmo tempo levando à condição de inconsistência 
na saída do FF. A Figura 41(f) apresenta a tabela-verdade do FF RS NAND. 
5.3 Flip-Flop NOR 
O flip-flop NOR RS (FF RS) é tão simples quanto o FF NAND e pode ser 
utilizado tanto de forma individual quanto na formação de outros flip-flops, 
entretanto o FF RS NOR apresenta diferentes valores na sua operação. 
 
 
 
40 
Figura 42 – Flip-flop NOR RS (a); Símbolo do FF RS NOR (b); tabela-verdade 
FF RS NOR (c) 
 
Fonte: Rattmann, 2021. 
O FF RS é apresentado na Figura 42(a) e seu símbolo na Figura 42(b), 
no qual se apresentam duas portas lógicas NOR, interconectadas, criando 
realimentação cruzada. O comportamento do FF depende das entradas R e S e 
das condições de estabilidade da realimentação do circuito. Para se apresentar 
o princípio de funcionamento do FF RS NOR, fazem-se necessárias algumas 
considerações: 
• O alto nível lógico aplicado em uma das entradas de uma porta NOR 
define o estado de saída como nível baixo, independentemente do valor 
lógico da outra entrada; 
• Aplicando, de outra forma, nível lógico baixo em uma das entradas, não 
há como saber o nível lógico de saída até que o valor da outra entrada 
seja conhecido; 
• A porta lógica ligada à saída Q é denominada porta Q, e a segunda, porta 
Q’. 
O estado proibido é definido para as duas entradas “R” e “S” em nível 
lógico alto e a conservação de estado, com as duas entradas em nível baixo, 
conforme apresentado na tabela-verdade da Figura 42(c) 
Para o FF RS NOR, o estadode manutenção (estado de repouso) é 
definido por R=0 e S=0, no qual o flip-flop deve permanecer até que um sinal de 
Set ou Reset, em nível lógico alto, seja aplicado. Assim como no FF RS NAND, 
essa condição operacional evita que os sinais de Set e Reset sejam acionados 
ao mesmo tempo, levando à condição de inconsistência na saída do FF. 
 
 
 
41 
5.4 Considerações gerais sobre Flip-Flop e exemplo de aplicação 
Uma vez que o FF tenha sido colocado em SET, uma nova aplicação do 
sinal de SET não altera seu estado de saída. Da mesma forma, caso tenha sido 
colocado em RESET, uma nova aplicação do sinal de RESET não altera seu 
estado de saída, conforme demonstrado em simulação na Figura 43(a). 
Uma aplicação imediata dessa característica do FF RS é na eliminação 
do repique (bounce) em chaves de comutação. O repique é caracterizado por 
uma variação rápida nos níveis de tensão causada pela parte móvel da chave 
até que estabilize. Embora dure poucos milissegundos, pode ser inaceitável em 
aplicações digitais ou outras que sejam afetadas por esta variação. Uma solução 
possível é utilizar um FF RS entre a chave o sistema. Conforme apresentado na 
figura, enquanto a parte móvel da chave se desloca, as entradas se mantêm em 
estado de repouso. Assim que houver o primeiro contato com as partes fixas da 
chave, é produzido um sinal SET e o FF comuta, não sendo afetado pelos 
demais contatos da chave, eliminando o problema do repique. Da mesma forma, 
funciona eliminando o repique na mudança para a posição inicial. Esse benefício 
é apresentado na Figura 43(b) em simulação, utilizando uma fonte de ruído para 
representar o ruído de comutação e um flip-flop RS NOR. Observe que apesar 
dos inúmeros impulsos nos sinais “R” e S, o sinal “Q” apresenta a comutação do 
FF na primeira sinalização dos sinais de SET ou RESET, não repassando à 
saída o repique de entrada. 
Figura 43 – Reaplicação do sinal de SET e RESET (a); Aplicação do FF NOR na 
eliminação de repique (bounce) para ruído de comutação simulado (b) 
 
Fonte: Rattmann, 2021. 
 
 
42 
FINALIZANDO 
Nesta aula, vimos o método de simplificação e síntese Quine-McCluskey, 
que se apresenta mais prático para processar uma quantidade maior de variáveis 
booleanas de entrada que o método de Karnaugh. 
Foram apresentados circuitos lógicos para cálculo de paridade utilizados 
em alguns sistemas de comunicação digital como em interfaces RS-232 (V.24) 
e em teclados e formas de controle de produção de sinais digitais com o emprego 
de portas lógicas. Foram ainda apresentados vários circuitos combinacionais, 
como circuitos lógicos aritméticos, codificadores e decodificadores. 
Por fim, foram vistos circuito integrados MSI, úteis na construção mais 
simplificada de sistemas digitais e o princípio de funcionamentos dos flip-flop RS 
em lógica NAND e NOR. 
 
 
 
 
 
43 
REFERÊNCIAS 
TOCCI, R. J. Sistemas Digitais – Princípios e aplicações. 11. ed. São Paulo: 
Pearson Prentice Hall, 2011. 
PEDRONI, V. A. Eletrônica Digital Moderna e VHDL. Rio de Janeiro: Elsevier, 
2010.

Mais conteúdos dessa disciplina