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.