Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

ELETRÔNICA DIGITAL 
AULA 4 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Prof. Amilton Carlos Rattmann 
 
 
 
2 
CONVERSA INICIAL 
Nesta aula, abordaremos a implementação e a operação de Flip-flop (FF), 
as quais funcionam nas transições do sinal de clock, denominadas borda. 
Veremos circuitos detectores de borda e conheceremos outros tipos de FF e 
alguns aspectos relacionados ao tempo de operação dos FFs. Estudaremos os 
diagramas de estados, que são ferramentas gráficas importantes na construção 
de circuitos lógicos síncronos e máquinas de estado finito de forma geral. 
Conheceremos alguns circuitos implementados com FF e contadores 
assíncronos que podem ser desenvolvidos para vários módulos de contagem. 
Por último, trataremos da infraestrutura básica de acesso a memórias formadas 
por FF D. 
TEMA 1 – FLIP-FLOP COM CLOCK 
Abordamos anteriormente que os circuitos digitais podiam ser 
classificados como combinacionais – nos quais os sinais de saída são 
determinados pelos sinais de entrada –, ou sequenciais – nos quais os sinais de 
saída são determinados tanto pelos sinais de entrada quanto pelos estados de 
memórias (Pedroni, 2010, p. 77). Uma outra forma de classificar os circuitos 
digitais seria como assíncronos – aqueles nos quais as mudanças de estado 
podem ocorrer a qualquer momento –, ou síncronos – nos quais os estados são 
alterados em momentos específicos (Tocci, 2011, p. 185). Os circuitos digitais 
sequenciais normalmente empregam um sinal de “relógio” (clock, em tradução 
livre), o qual estabelece uma cadência para os sinais e ações dos circuitos 
sequenciais, tornando-os mais fáceis para analisar e controlar (Tocci, 2011, p. 
185). 
1.1 O sinal de clock 
Embora o sinal de relógio seja empregado com o termo traduzido, é 
muito comum encontrá-lo no termo original (clock), seja em livros traduzidos, seja 
nos escritos em português. Um motivo plausível para isso seria a 
internacionalização de projetos de circuitos digitais nos quais os símbolos e 
siglas são mais facilmente compreensíveis em vários locais do mundo quando 
se adota um idioma e padrão gráfico internacionais. Além disso, as folhas de 
dados de componentes digitais e analógicos são normalmente disponibilizadas 
 
 
3 
no idioma inglês, assim como em manuais de aplicação (cookbooks), nos quais 
o termo clock (CLK) é bem frequente. 
O sinal de clock é um trem de pulsos quadrados ou retangulares, 
regulares, em frequência específica compatível com sistema no qual é aplicado, 
oriundo de um oscilador. Os pulsos de clock apresentam borda de subida, 
definida pela transição do nível lógico LO para o nível lógico HI, e borda de 
descida, definida pela transição do nível lógico HI para nível lógico LO, conforme 
apresentado na Figura 1. 
Figura 1 – Sinal de relógio 
 
Os circuitos digitais síncronos trocam de estado nas transições do sinal 
de clock na borda de subida ou na borda de descida. Um mesmo circuito, como 
um flip-flop, operará ou na borda de subida, ou na borda de descida, mas não 
em ambas. Em um circuito digital mais complexo, podem existir circuitos digitais 
operando em borda de subida e outros em borda de descida. É comum aos 
circuitos síncronos que todos os circuitos digitais obedeçam a uma cadência 
estabelecida, normalmente submetidos à frequência de relógio mais elevada 
possível, pois quanto mais rápidas as transições, mais rápidas as repostas do 
sistema digital. Exemplificando isso, normalmente buscamos o 
microprocessador com a maior frequência de clock para um computador, pois 
tornaria o sistema mais rápido. Entretanto, é importante salientar que o circuito 
mais lento de um sistema digital estabelece a velocidade do sistema. Ou seja, o 
clock de um sistema é a solução de pior caso, representando a maior taxa de 
execução que pode ser aplicada ao sistema sem que ocorram erros lógicos 
ocasionados por falhas de transição de sinais digitais nos circuitos mais lentos. 
A frequência máxima (fMÁX) de operação de um FF está presente nos manuais 
de fabricantes. Embora o FF possa operar com frequência mais elevada, o 
fabricante não garante o funcionamento além da fMÁX (Tocci, 2011, p. 199). 
 
 
4 
1.2 Circuitos detectores de borda 
Já estamos habituados ao comportamento dos circuitos lógicos 
combinacionais a ponto de sabermos que operam por nível. Desde a 
especificação do comportamento de um circuito na tabela-verdade à síntese dos 
circuitos para realizar uma função lógica específica, sempre lidamos com níveis 
lógicos. De onde surge então um circuito lógico que opera por borda? 
Assim como consideramos em algumas oportunidades anteriores que os 
circuitos digitais possuíam resposta imediata, ou que a propagação era 
instantânea, entender a resposta por borda é uma questão de percepção 
temporal. Caso habilitemos um circuito digital por tempo muito curto, 
proporcional à transição do sinal digital, teremos uma transição por borda. 
Quando, anteriormente, estudamos o glitch, vimos que se tratava de uma dupla 
transição muito rápida que durava o tempo de uma propagação de porta lógica. 
Esse mesmo princípio é utilizado para permitir que os circuitos sejam 
sensibilizados apenas no período da borda. 
No circuito apresentado na Figura 2(a), a porta NAND (circuito U1) está 
submetida a um sinal digital produzido pela fonte V1, que podemos chamar de 
clock. A porta NAND recebe em uma de suas entradas o sinal de clock 
diretamente da fonte V1 e, na outra entrada, o sinal da mesma fonte invertido 
pela porta NOT (ou porta inversora – circuito U2). Observe na tabela-verdade da 
porta NAND, na Figura 2(b), que entradas A e B, ao receberem os níveis lógicos 
1 e 0, ou níveis 0 e 1, respectivamente, produzem um mesmo valor lógico de 
saída. Do ponto de vista lógico estático, teremos apenas o valor lógico 1 na saída 
do circuito. Porém, ao se simular o circuito, surge um impulso de valor lógico 
baixo em um sinal predominantemente alto, que pode ser observado na Figura 
2(c). Para entender o motivo do impulso, observemos a Figura 2(d), que é uma 
ampliação temporal do sinal de (c), no momento do impulso. O sinal de clock 
apresenta a transição em um determinado tempo t. Entretanto, a transição do 
sinal proveniente da porta inversora ocorre apenas alguns instantes depois (t+tp), 
ou seja, alguns nanosegundos, devido ao tempo de propagação da porta 
inversora. Nessa análise, estamos considerando os tempos de resposta dos 
transistores que formam as portas lógicas que, embora pequenos, passam a ser 
significativos. De fato, podemos observar que não houve uma simples transição 
de 0 e 1 para 1 e 0 nas entradas da porta NAND, mas uma transição de 0 e 1, 
 
 
5 
para 1 e 1 e, então, para 0 e 1. Ocorreu, como apresentado, uma condição de 
entrada de curta duração que produziu uma saída de nível baixo também de 
curta duração. Este impulso é produzido apenas para a transição de nível 
ascendente do clock, pois, na transição descendente, o atraso de propagação 
produz as transições 0 e 1 para 0 e 0 e, então, para 1 e 0 nas entradas da porta 
NAND, que mantém a saída em nível 1. Temos, então, um circuito detector de 
borda de subida. Os flip-flops que operam por borda, incorporam circuitos como 
este (Tocci, 2011, p.189), para se tornarem ativos (habilitados) apenas neste 
curto período, permanecendo inertes ao longo de todo intervalo entre bordas. 
Figura 2 – Simulação do circuito de detecção de borda 
 
1.3 FF RS NAND operado por borda 
Vamos considerar um FF visto na aula anterior – o FF RS NAND –, e 
acrescentar outros recursos digitais alterando seu circuito para operar por 
borda1. Relembrando, o FF assume os estados de SET e RESET dependendo 
dos sinais aplicados às entradas R e S, conforme circuito apresentado na Figura 
3(a), e seu respectivo símbolo, na Figura 3Erro! Fonte de referência não 
encontrada.(b). Existem condições inválidas de entrada e condições de 
 
1 Normalmente,os FF operados por nível são denominados Latches, reservando o termo FF para 
aqueles operados por clock. 
 
 
6 
manutenção de estado, além das condições de SET e RESET, conforme 
apresentados na tabela-verdade da Figura 3(c). 
Figura 3 – FF RS NAND operado por nível (Latch): circuito (a); símbolo (b); e 
tabela-verdade (c) 
 
Se houver variações nos sinais de entrada, o FF RS irá responder a estas 
mudanças, mesmo que elas sejam provenientes de ruídos ou condições não 
previstas. O sinal de clock organiza o comportamento do FF habilitando a 
mudança de estado apenas nas transições de borda. 
O diagrama da Figura 4 incorpora o detector de borda e circuitos de 
controle para apresentar os sinais na entrada ao FF RS NAND operado por nível. 
Figura 4 – Circuito do FF RS (NAND) operado por clock (a); e sinais do circuito 
(b) 
 
Os circuitos da parte inferior da Figura 4(a), compostos por U3, U4, U5 e 
U6, formam o detector de borda com um tempo de habilitação de três tempos de 
 
 
7 
propagação de porta inversora. Na Figura 4(b), os sinais CLK e HAB 
representam os sinais de entrada e saída do detector de borda, respectivamente. 
Os circuitos de controle formados pelas portas OR (U7 e U8), permitem a 
passagem dos sinais S e R externos para as entradas S e R do FF-RS interno 
apenas quando o sinal de saída do detector de borda está habilitado. Na Figura 
4(b), os sinais SN e RN externos (entrada) e os sinais SN_ e RN_ (saída) 
apresentam o comportamento do circuito de controle que permite que os sinais 
externos sejam expostos às entradas do FF RS, mas apenas na presença dos 
pulsos HAB. O FF RS é formado pelas portas NAND (U1 e U2), que trocam de 
estado apenas quando o sinal HAB está ativo. No período não habilitado, as 
portas OR mantém os níveis lógicos altos na entrada do FF RS, condição que 
mantém o estado anterior do FF, ou seja, com as saídas inalteradas e iguais à 
última transição realizada. Assim, acompanhamos o comportamento do FF 
operado por clock, no qual os sinais de entrada variam livremente, mas o FF só 
é sensibilizado com os sinais de entrada na borda de subida do sinal de clock. 
Os FF operados por borda possuem uma marca nos símbolos dos 
componentes que indicam este modo de operação, formada por um chanfro (na 
forma de um triângulo de lado) na entrada do sinal de clock. Apenas o triângulo 
indica borda de subida, enquanto o triângulo acompanhado por um círculo, indica 
sensibilidade à borda de descida. Os símbolos do FF RS NAND operado por 
clock são apresentados na Figura 5. 
Figura 5 – FF RS NAND operado por clock: símbolo à esquerda, FF RS operado 
em borda de subida; símbolo à direita FF RS operado em borda de descida 
 
TEMA 2 – FF JK, D, T 
Neste tema, abordaremos de forma mais ampla os flip-flops operados por 
clock, sendo necessário comentar algumas condições definidas para a operação 
 
 
8 
correta desses dispositivos com relação ao sinal de clock: o tempo de setup e 
o tempo de hold. O tempo de setup (tp) (ou de preparação) é um tempo mínimo 
que os sinais devem permanecer estáveis na entrada do FF antes da transição 
do clock. O tempo de hold (th) (ou manutenção) é um tempo mínimo que os 
sinais de entrada devem permanecer estáveis após à transição do sinal de clock 
(Tocci, 2011, p. 186-187). Estes tempos são estipulados em manual de 
componentes para garantir o funcionamento correto dos componentes digitais 
operados por clock. 
Foram desenvolvidos diferentes tipos de FF que apresentam 
comportamentos distintos e são utilizados em várias partes de sistemas, 
resolvendo problemas específicos mais facilmente que outros. Embora existam 
diferenças operacionais, com interconexões e/ou componentes adicionais, 
qualquer flip-flop de um tipo pode realizar as funções típicas de outro tipo de flip-
flop. Vamos conhecer alguns outros FF além do FF RS que vimos no tema 
anterior. 
2.1 Flip-flop JK 
O flip-flop JK é construído sobre o circuito do FF RS com clock, 
aproveitando a combinação de entrada que era proibida no RS, por uma ação 
permitida, adicionando um novo e útil estado. Na Figura 6 temos um circuito para 
o FF RS com clock, um pouco diferente do apresentado na Figura 4, que realiza 
o controle com porta lógicas NAND e utiliza, como sinais de habilitação, pulsos 
estreitos de nível lógico alto. O circuito detector de borda (DB) foi substituído por 
um bloco, simplificando o diagrama. Outra mudança, mas de ordem operacional, 
é que o FF RS agora é acionado externamente por nível lógico alto para as 
entradas R e S, embora internamente o FF RS permaneça operando por nível 
lógico baixo. 
Figura 6 – Flip-flop RS NAND operado por clock, com controle por portas NAND 
e alteração na sensibilidade 
 
 
9 
 
Fonte: elaborado com base em Tocci, 2011, p. 189. 
O estado proibido no FF RS continua existindo, sendo o FF operado por 
clock ou por nível. O FF JK melhora esta característica pelas alterações nos 
circuitos de controle, conforme apresentado na Figura 7. 
Figura 7 – Circuito FF JK operado por clock. 
 
Fonte: elaborado com base em Tocci, 2011, p. 192. 
Observe, na Figura 7, que há uma nova realimentação cruzada das saídas 
para as entradas das portas NAND de controle. Vamos analisar o que acontece 
e os efeitos desta realimentação adicional no comportamento do FF. Antes, 
entretanto, devemos considerar algumas premissas para a facilitar a análise de 
funcionamento: 
i. as portas NAND de controle com três entradas geram um nível lógico 
baixo (0) apenas quando as três entradas estiverem em nível lógico alto 
(1); 
ii. qualquer nível lógico baixo nas entradas J ou K inibem a comutação da 
sua respectiva porta NAND de controle; e 
 
 
10 
iii. as alterações de estado só ocorrem quando o detector de borda 
apresentar uma saída de curta duração em nível alto (1), proveniente da 
borda do sinal de clock. 
Com base nessas premissas, podemos analisar os diagramas 
apresentados na Figura 8, como segue. 
1. Com J=1 e K=0, conforme observado na Figura 8(a), a porta NAND da 
entrada J percebe que todas as entradas estão em nível lógico alto e 
produz uma saída de nível lógico baixo, que provoca a ativação (SET) do 
FF. A ponta NAND da entrada K permanece inativa com saída em nível 
lógico alto (1). 
Figura 8 – Análise dos estados do FF JK 
 
2. Com J=0 e K=1, conforme observado na Figura 8(b), a ponta NAND da 
entrada J permanece inativa com saída em nível lógico alto (1). A porta 
NAND da entrada K percebe que todas as entradas então em nível lógico 
alto e produz uma saída de nível lógico baixo, que provoca a desativação 
(RESET) do FF. 
3. Com J=0 e K=0, conforme observado na Figura 8(c), as pontas NAND das 
entradas J e K permanecem inativas com saídas em nível lógico alto (1). 
O FF mantém o estado que estava anteriormente, descrito com Q-1. Não 
ocorrem mudanças no estado do FF. 
 
 
11 
4. Com J=1 e K=1, conforme observado na Figura 8(d), as pontas NAND das 
entradas J e K estão com todas as entradas em nível lógico alto, com 
exceção da linha de realimentação da saída Q. Nestas condições, a porta 
de controle da entrada J produz um zero, levando o FF a ser ativado 
(SET). Note, entretanto, que se a saída Q estivesse em nível lógico alto, 
a saída �̅� levaria o nível lógico baixo até a porta NAND de controle de K, 
produzindo um RESET. Ou seja, com esta condição de entrada, ocorre 
uma troca do estado do FF, com a inversão do estado anterior descrito 
como 𝑄−1̅̅ ̅̅ ̅ e conhecido como toggle. 
Como visto, o FF JK operará de forma semelhante ao FF RS, com a 
vantagem de substituir a condição de entradas proibidas por uma nova condição 
que leva à troca de estado do FF. 
Na Figura 9 são apresentados os símbolos do FF JK e sua tabela-
verdade. Em algumas fontes de referência, as tabelas-verdade trazem uma 
indicação de borda de clock para representar que as transições ocorrem nas 
bordas. 
Figura 9 – Simbologiado FF JK: FF JK sensível à borda de subida (a); FF JK 
sensível à borda de descida (b); e Tabela-verdade FF JK (c) 
 
2.2 Flip-flop D 
O FF D possui uma operação mais simples, contando com uma única 
entrada (D), apresentando dois estados (SET, RESET) e duas condições de 
entrada, mas é o FF mais amplamente utilizado em sistemas digitais (Pedroni, 
2010). Pode ser construído a partir do FF JK, conforme apresentado na Figura 
10. 
Das quatro condições de entrada inicialmente disponíveis no FF JK, 
apenas duas estão disponíveis após a inserção da porta NOT apresentada na 
Figura 10(a). 
 
 
12 
Figura 10 – FF D construído sobre o FF JK (a); tabela-verdade do FF D (b); e 
símbolo do FF D (c) 
 
As condições de troca e manutenção de estados não existem no FF D, 
permanecendo apenas as condições de SET e RESET interpretadas de forma 
ligeiramente diferente neste FF. Os valores lógicos para SET e RESET aplicados 
na entrada D serão os mesmos valores que estarão disponíveis na saída Q, após 
a operação do FF. Então, se o valor lógico alto (1) estiver na entrada D, a 
operação do FF D produzirá um valor lógico alto (1) na saída Q. Caso um valor 
lógico baixo (0) seja aplicado na entrada D, a operação do FF D produzirá um 
valor lógico baixo na saída Q, conforme pode ser observado na Figura 10(b). 
Esse é o comportamento de uma unidade de memória, que armazena o valor de 
D na borda de subida do sinal de clock. O símbolo do FF D é apresentado na 
Figura 10(c). 
O FF D é utilizado em diversos circuitos de sistemas digitais, como 
contatores e registradores. 
2.3 Flip-flop T 
O FF T possui operação mais simples que o FF D e pode ser construído 
a partir de um FF D ou FF JK, conforme diagrama apresentado na Figura 11. A 
Figura 11(a) apresenta um FF T implementado pelas restrições dos valores de J 
e K, submetendo-os a um valor lógico alto (1), de forma permanente. Esta 
implementação obriga o FF JK a operar em estado de troca (toggle) e a trocar 
de estado a cada pulso de clock. Este comportamento descreve bem o 
funcionamento do FF T, cuja tabela-verdade é apresentada na Figura 11(b), 
descrevendo transições do funcionamento do FF T. Na Figura 11(c) é 
apresentado um FF D com função de troca de estado, com a realimentação da 
entrada D com o sinal de �̅�, invertendo o sinal de saída Q e implementando uma 
FF T. 
 
 
13 
Figura 11 – FF T: construído a partir do FF JK (a); tabela-verdade FF T (b); e FF 
T com FF D (c) 
 
Como visto, o princípio de funcionamento do FF T é baseado na contínua 
troca de estado a cada borda de clock. Algumas implementações, entretanto, 
conseguem acrescentar uma função de habilitação (enable) para controlar a 
troca de estados, como as implementações apresentadas na Figura 12. Na 
Figura 12(a), caso o terminal “T” esteja em “1”, o funcionamento do FF T 
permanece como descrito acima e, caso T=“0”, não ocorrem mais trocas de 
estado, mesmo com ocorrências contínuas de bordas de clock. A tabela-verdade 
que descreve este comportamento é apresentada na Figura 12(b). Uma 
implementação da entrada T com FF D é mostrada na Figura 12(c), na qual a 
porta lógica XOR tem a função de inversor controlado pela entrada T. 
Figura 12 – FF T com terminal T: construído com FF JK (a); tabela-verdade do 
FF T com terminal T (b); e FF T construído com FF D (c) 
 
Os símbolos para o FF T (apresentados na Figura 13) são para 
dispositivos com sensibilidade à borda de subida (a) e sensibilidade à borda de 
descida (b), como também para FF T com entrada T e sensibilidade à borda de 
subida (c), e sensibilidade à borda de descida (d). 
 
 
14 
Figura 13 – Simbologia do FF T: operado por borda de subida (a); operado por 
borda de descida (b); com terminal T e borda de subida (c); e com terminal T e 
borda de descida (d) 
 
2.4 Outras funções implementadas em FF 
Outras funções são normalmente encontradas nas implementações de 
circuitos integrados comerciais, como CLEAR e PRESET. A função limpar 
(CLEAR) zera o FF de forma assíncrona, independentemente do ciclo de clock. 
O PRESET ativa o FF (SET) também de forma assíncrona. Os sinais CLEAR e 
PRESET são normalmente ativos, com nível lógico baixo e se sobrepõem aos 
sinais de entrada como JK ou D, como pode ser observado nos gráficos da 
Figura 14. Embora exista uma possível precedência implementada nos circuitos 
do FF, os sinais de PRESET e CLEAR não devem ser ativados simultaneamente. 
Figura 14 – FF JK com PRESET e CLEAR 
 
Outro sinal normalmente encontrado em circuitos integrados e FF é a 
entrada de habilitação (ENABLE). Esse sinal, normalmente representado por 
ENA ou EN nos diagramas, pode inibir o funcionamento do circuito ou inibir o 
 
 
15 
sinal de clock. Pode ainda, em certos componentes integrados, manter o 
funcionamento do circuito, mas inibir a saída. A leitura da folha de dados 
(datasheet) do componente eletrônico esclarecerá, caso exista na 
implementação do hardware, o funcionamento do sinal de ENABLE. Finalizando, 
o sinal de ENABLE pode ter sensibilidade a nível lógico alto (𝐸𝑁) ou baixo (𝐸𝑁̅̅ ̅̅ ). 
2.5 Temporizações de FF 
Normalmente, os FF estão associados à mesma fonte de clock, 
executando as transições pela mesma referência. Quando o sinal de saída de 
um FF é injetado na entrada de outro FF que utiliza o mesmo sinal de clock, há 
um risco potencial de falha no transporte do sinal, em função dos tempos de 
setup, hold e propagação. A Figura 15 apresenta uma avaliação com dois FF D 
interligados em sequência, utilizando o mesmo sinal de clock. O sinal da saída 
Q1 sofre transição após um período tpLH a partir da borda do sinal de clock. Após 
a mesma borda de clock, inicia também o período tH na entrada D2. Caso o tempo 
de transição da saída Q1 seja maior que o tempo de manutenção (hold) de 
entrada, a operação é estável, pois o FF D U2 fará a leitura do valor anterior à 
transição de borda. Caso o tempo de transição de saída seja maior que o tempo 
de manutenção, então o estado do FF D U2 será indefinido, pois ocorrerá uma 
possível transição de sinal dentro do período de manutenção de U2. 
Figura 15 – Temporização com flip-flops 
 
Felizmente, a maioria dos dispositivos fabricados atualmente têm o tempo 
de manutenção pequeno ou igual a tH = 0 ns (Tocci, 2011, p. 201), garantindo a 
estabilidade e a previsibilidade do funcionamento do circuito digital. 
 
 
16 
TEMA 3 – DIAGRAMA DE ESTADOS 
Neste tema apresentaremos uma ferramenta gráfica que facilitará muito a 
organização e a análise na transição de estados de um sistema, e auxiliará 
principalmente no projeto de circuitos sequenciais síncronos utilizando FF. Os 
diagramas de estado são utilizados para descrever o comportamento de 
máquinas de estado finitos (ou FSM – Finite State Machine). 
3.1 Terminologia 
Começaremos com a terminologia, apresentando os principais elementos 
utilizados em um diagrama de estados. O estado representa uma condição 
estática na qual o sistema pode permanecer indefinidamente. Relembrando do 
diagrama dos circuitos sequenciais (Aula 3), o estado seria definido pelo valor 
registrado nas memórias. Na organização do diagrama de estados, o nome do 
estado deve representar, o mais fielmente possível, o estado do sistema, como 
“leitura de teclado”, “aguardando confirmação” ou, ainda, o valor numérico que 
representa a sequência de uma contagem. O valor de saída representa, de fato, 
o valor que o estado deve produzir para desenvolver as funções esperadas, 
como o acionamento de atuadores, habilitação de componentes MSI (medium 
scale integration), acionamento de mostradores (display), entre outros. A 
representação do estado no diagrama é apresentada na Figura 16(a), na qual o 
nome do estado fica na parte superior, no semicírculo, e o valor de saída do 
estado, no semicírculo inferior. 
Outro elemento do diagrama de estados é a transição. A transição indica 
a relação entre os estados dosistema e apresenta o sentido desta transição nas 
modificações de estados do sistema. A transição é representada por um arco 
com um sentido (seta) e é apresentada na Erro! Fonte de referência não 
encontrada.Figura 16(b). As transições descrevem a evolução dos estados de 
um sistema como em um contador decimal ou em um detector de sequência de 
caracteres que encontra uma palavra específica. A transição pode acontecer 
pelo cadenciamento do sinal de clock ou pela ocorrência de um evento 
específico. O evento é outro elemento presente nos diagramas de estado, que 
apresenta todas as condições que devem ser atendidas para que a transição 
ocorra. O evento pode ser um valor binário, um valor decisão, uma condição ou 
 
 
17 
um conjunto de sinais. A representação do evento pode ser observada na Figura 
16(c). 
Figura 16 – Elementos do diagrama de estados 
 
3.2 Representação do diagrama 
Na Figura 17, um diagrama de estados simples apresenta todos os 
elementos associados, representando uma determinada funcionalidade. Note 
que o sistema possui apenas dois estados e estes apresentam seus respectivos 
nomes e valores de saída. Note também que o sistema realiza transições entre 
os estados somente nas ocorrências de eventos específicos. Caso o sistema 
esteja no estado “A” e ocorra o evento “n”, o sistema sofrerá uma transição para 
o estado “B”. Caso o sistema esteja no estado “B” e ocorra um evento “m”, o 
sistema sofrerá uma transição para o estado “A”. Entretanto, caso esteja no 
estado “A”, a ocorrência do evento “m” não produzirá qualquer alteração no 
sistema, assim como será inerte a ocorrência de um evento “n” no estado “B”. 
Figura 17 – Diagrama de estados 
 
 
18 
 
Para exemplificar o uso do diagrama de estados, vamos descrever um 
sistema de sinalização de saída de veículos da garagem de um edifício 
comercial. Neste sinalizador, as lâmpadas amarela e vermelha alternam-se em 
uma cadência predeterminada. O diagrama de estados deste sinalizador é 
apresentado na Figura 18(a). As saídas dos estados acionam as lâmpadas do 
sinalizador em vermelho e amarelo. A transição ocorre por tempo: um período 
de 2 segundos. 
Outro exemplo, apresentado na Figura 18(b), desenvolve os estados de 
um sistema que aplica dupla função para um interruptor de contato momentâneo, 
permitindo ligar e desligar um equipamento. Um estado é denominado Ligado, 
cuja saída liga uma fonte de alimentação, e um estado denominado Desligado, 
cuja saída desliga a fonte de alimentação. Tanto a transição do estado Desligado 
para o Ligado quanto a transição do estado Ligado para o Desligado têm o 
mesmo evento “Pressionado B1”, que executa funções diferentes dependendo 
do estado envolvido. Note que são eventos distintos, mesmo sendo produzidos 
pelo mesmo botão. 
Figura 18 – Exemplos de diagramas de estado: sinalizador de garagem (a); e 
ligar e desligar com o mesmo botão (b) 
 
 
19 
 
 
Os diagramas de estado podem descrever sistemas mais complexos com 
diversos estados e eventos. Na Figura 19, é apresentado um sistema descrito 
em três estados e cinco transições. Observe que, no estado “A”, após uma 
transição ocorrida pelo um evento “k”, há um retorno para o mesmo estado “A”. 
Essa representação poderia descrever um estado de espera, no qual, no 
entanto, se o evento não fosse diferente de “k”, o sistema permaneceria no 
estado “A”. Observe também que a evolução do estado “A” ao “C” passa pelo 
estado “B”, mas na ocorrência do evento “t”, o retorno ocorre diretamente ao 
estado “A”. É importante entender que, seguindo algumas regras básicas de 
representação, o diagrama deve representar a operação do sistema digital de 
forma mais fiel possível. 
Figura 19 – Diagrama de sistema com múltiplos eventos 
 
 
20 
 
TEMA 4 – APLICAÇÕES COM FLIP-FLOP 
Neste tema, abordaremos alguns circuitos que utilizam FF para elaborar 
controle de sinais, sincronização de pulsos, detecção de acionamento 
antecipado e divisão de sinais de clock. 
4.1 Sincronizador de pulsos 
Neste exemplo, empregaremos um FF D para solucionar um problema de 
sincronismo de sinal. A interconexão de sistemas diferentes pode trazer um 
problema de sincronização, como uma diferença de fase entre sinais de clock, 
mesmo que possuam a mesma frequência, ou a ocorrência de sinais por 
sensores, por exemplo, que acontecem de forma assíncrona. Na Figura 20(a) é 
apresentado um circuito hipotético, no qual uma chave S1 é acionada, 
habilitando uma porta AND na passagem de pulsos de uma determinada 
frequência, oriundos da fonte V1. Observe no gráfico da Figura 20(b), que os 
pulsos da fonte V1 são produzidos com distorção na saída da porta AND, em 
função da defasagem entre os sinais da chave e da fonte V1. 
Na Figura 20(c), é apresentado um circuito com FF D para corrigir a 
distorção do sinal. O sinal da chave, nesse circuito, só é propagado quando 
ocorrer uma borda de subida do sinal de V1, sincronizando o sinal de 
acionamento assimétrico da chave com o sinal de V1. Este sincronismo evita a 
ocorrência dos pulsos curtos, distorcidos, que poderiam causar algum tipo de 
mau funcionamento nos circuitos posteriores, pela transmissão de pulsos 
sempre regulares, para qualquer momento de ocorrência e de permanência do 
acionamento de S1. 
 
 
21 
Figura 20 – Sincronizador de pulsos: circuito sem sincronismo (a); gráfico dos 
sinais da chave S1 (PR1), de V1 (PR2) e da saída (PR3) (b), respectivamente; 
circuito com correção de sincronismo (c); e gráfico dos sinais da chave S1 (PR1), 
de V1 (PR2), da saída do FF D (PR4) e da saída do circuito (PR3) (d) 
 
4.2 Circuito de detecção de acionamento antecipado 
O circuito apresentado na Figura 21 é um detector de acionamento 
antecipado, no qual quatro botões são acionados por candidatos e apenas um 
permanecerá ativo – justamente aquele que for o mais rápido. Na borda de 
subida do clock, os quatro FF D transportam o sinal de entrada D para a saída 
Q. Caso um sinal lógico alto seja transportado, a porta NOR produzirá um sinal 
de bloqueio que inibirá todos os FF de forma assíncrona pelo sinal de ENABLE, 
permanecendo ativo apenas aquele FF que transportou o sinal antes dos 
demais. A diferença mínima de tempo para percepção é o período do clock. Caso 
dois acionamentos ocorram dentro do mesmo período de clock, ocorrerá um 
empate. Para minimizar a chance de empate, a frequência do clock pode ser 
aumentada. 
4.3 Circuito de divisão de clock 
O FF T e o FF D podem ser utilizados para produzir uma divisão na 
frequência de um sinal de clock, uma vez que estejam configurados para a troca 
de estado (retome a Figura 11). 
Figura 21 – Circuito de detecção de acionamento antecipado 
 
 
22 
 
 
A divisão por 2, por exemplo, ocorre por meio da alteração de níveis 
lógicos da saída do FF D a cada borda de subida (ou descida) do sinal de 
entrada, em função da realimentação do sinal da saída de 𝑄1̅̅ ̅ para a entrada D 
(toggle), como apresentado na Figura 22. 
Figura 22 – Divisão de clock com FF D 
 
 
23 
 
Na primeira borda de subida do sinal de clock, considerando que o estado 
inicial do FF D é de saída zero (RESET), ocorre a troca de estado, fazendo a 
saída Q1 ir de “0” para “1”. Na próxima borda de subida, como Q1 = 1 e 𝑄1̅̅ ̅ = 0, 
o sinal de saída de Q1 vai de “1” para “0”. Este comportamento do FF produz um 
sinal com a metade da frequência do sinal presente na entrada de clock. Já se a 
saída Q1 for interligada com a entrada de clock do FF D U2, que também está 
no modo de troca de estado, esse também realizará a troca na saída Q2 a cada 
borda de subida de Q1, produzindo uma divisão por quatro na frequência, com 
relação ao sinal inicial, CLK. 
TEMA 5 – CIRCUITOS SEQUENCIAIS ASSÍNCRONOS: CONTADORES E 
MEMÓRIAS 
Neste tema, veremos contadores binários assíncronos progressivos e 
regressivos e uma estrutura básica de acesso à memória, como a organização 
desinais habilitação, escrita e leitura. 
5.1 Contadores assíncronos regressivos 
Se observarmos novamente o gráfico da Figura 22, no qual um sinal de 
clock sofre uma dobra no período ou uma divisão por dois na frequência e sofre 
nova divisão na saída, o FF D U2, e destacarmos com valores lógicos “0” e “1” 
 
 
24 
entre cada intervalo de transição, poderemos observar uma evolução binária que 
apresenta certa lógica, conforme apresentado na Figura 23(a), identificados em 
uma ordem da primeira à oitava ocorrência. 
Figura 23 – Gráfico de sinais do contador assíncrono regressivo (a); progressão 
dos valores decimais (b) 
 
 
 
Organizando esta sequência em uma tabela e ordenando as colunas com 
valores de saída, iniciando da transição mais lenta (Q2) para a mais rápida 
 
 
25 
(CLK), podemos identificar, na coluna “Valor decimal”, que se trata de uma 
sequência de contagem regressiva. Caso consideremos apenas as saídas Q2 e 
Q1, teremos um contador assíncrono regressivo de dois bits, com cadência de 
contagem igual à frequência de clock. Caso consideremos o próprio sinal de 
clock na contagem, teremos um contador binário de três bits com cadência de 
regressão igual ao dobro da frequência de clock. 
Este último exemplo é mais ilustrativo do que prático. Não é recomendável 
construir um contador cujo sinal de clock de entrada faça parte da saída de 
contagem. Além desse aparente contrassenso, o motivo principal está no fato de 
que o sinal de clock está interconectado com vários outros circuitos, e pode 
sofrer distorções talvez não perceptíveis para o acionamento por borda, mas 
suficientemente comprometido para afetar o enquadramento do sinal de saída, 
podendo também apresentar ciclo de trabalho (duty cycle) diferente de 50%, e 
taxa de subida e descida muito inclinados (slew rate). 
5.2 Contadores assíncronos progressivos 
Utilizando a mesma avaliação aplicada ao contador regressivo, como 
poderíamos obter um contador progressivo? Uma forma é pelo complemento da 
saída ou pela utilização das saídas negadas dos FF D, no qual a palavra binária 
“11” se torna “00”, “10” se torna “01” e assim sucessivamente, como visto na 
Figura 24(a). De fato, ao se inverter os sinais de saída do contador regressivo, 
obtém-se uma contagem progressiva, como é demonstrado na Figura 24(b), na 
qual um contador progressivo de dois bits é obtido invertendo-as saídas Q2 e Q1 
no circuito da Figura 22. 
Figura 24 – Contador assíncrono de dois bits: gráfico de sinais (a); e evolução 
dos valores decimais (b) 
 
 
26 
 
Para que o contador regressivo assíncrono inicie a contagem, é preciso 
aplicar os sinais de PRESET nos FF D, assim como para iniciar o contador 
progressivo. Isto pode parecer um pouco estranho, pois normalmente espera-se 
que um sinal de RESET zere as memórias e reinicie os circuitos. Isto não chega 
a ser um problema, mas precisa estar adequadamente documentado para não 
produzir equívocos na análise do circuito digital. 
Uma alternativa para iniciar a contagem com RESET pode ser obtida 
alterando a implementação do contador, modificando as interconexões dos FF 
D, como apresentado na Figura 25(a). Neste, o sinal aplicado ao clock de U2 
vem da saída negada de U1. Essa alteração provoca um deslocamento de um 
período de clock no sinal de saída Q2, produzindo uma contagem progressiva 
nas saídas Q2 e Q1, observada na Figura 25(b). Este contador é naturalmente 
progressivo. O contador regressivo pode ser obtido pela inversão dos sinais de 
saída ou pela utilização das saídas negadas. Para as duas progressões nesse 
circuito, a inicialização ocorre por RESET. 
 
 
27 
5.3 Contador assíncrono progressivo-regressivo 
Um contador progressivo-regressivo é um circuito lógico contador que 
pode contar tanto de forma progressiva quanto de forma regressiva, por meio de 
um sinal de seleção de função, como apresentado na Figura 26(a). 
Figura 25 – Contador assíncrono progressivo com inicialização com RESET (a); 
e sinais presentes no contador progressivo (b) 
 
 
 
Um contador assíncrono progressivo-regressivo poderia ser 
implementado atuando-se na interconexão do clock do FF D U2 com as saídas 
FF D U1. Caso o contador opere como progressivo, interconecta-se a entrada 
 
 
28 
de clock de U2 com a saída negada Q1’ de U1. Caso o contador opere como 
regressivo, interconecta-se a entrada de clock de U2 com a saída Q1 de U1. O 
processo de interconexão pode utilizar um MUX de duas entradas, comutando a 
entrada de clock de U2 às saídas de U1 por um sinal de seleção SEL. Entretanto, 
não se pode garantir previamente que o contador mantenha o valor estável 
durante a comutação, pois dependendo dos valores de Q1 e Q1’ pode ocorrer 
uma borda de subida, afetando a contagem durante a seleção de função, como 
apresentado na Figura 26(b). 
Figura 26 – Contador assíncrono progressivo-regressivo (a); e influência do sinal 
de seleção na entrada de clock de U2 (b) 
 
 
 
 
 
29 
 
Um contador síncrono projetado como uma máquina de estados finitos 
pode implementar um contador progressivo-regressivo sem problemas de 
seleção, como será visto futuramente. 
5.4 Propagação do clock nos contadores assíncronos 
Os contadores assíncronos são nominados assim porque o sinal clock 
não é comum a todos os FF, mas é propagado FF a FF até realizar a transição 
completa do valor binário. Embora sejam simples e fáceis de projetar, sua 
propagação característica limita seu emprego em aplicações, assim como sua 
velocidade máxima de operação. Uma transição de borda na entrada de clock 
do primeiro FF é propagada quase como um efeito dominó, no qual cada peça 
caída representaria o tempo de propagação do FF D ou FF T, conforme 
representado no gráfico da Figura 27. 
Figura 27 – Propagação de clock em contadores assíncronos 
 
 
30 
 
Caso analisemos um contador de 20 bits, por exemplo, implementado 
com FF D com propagação típica da ordem de 50 ns, o último FF D perceberia 
o sinal de clock após 19 x 50 ns = 0,950 µs, levando a um período de atualização 
das saídas do contador de 1 µs. O próximo pulso de clock poderia ser aplicado 
após um período de estabilidade dos sinais de saída, o que reduz bastante a 
taxa máxima de contagem do contador, conforme demostrado na Figura 27. 
Em um contador síncrono, todos os FF operam ao mesmo tempo, 
computando um único tempo de propagação independentemente da quantidade 
de FF, podendo implementar um contador grande com maior tempo de 
estabilidade e maior velocidade. 
5.5 Contadores com reinício antecipado 
Os exemplos de contares assíncronos até agora contavam o valor binário 
inteiro (ou módulo inteiro), ou seja, um contador binário de dois bits, 22, quatro 
valores (módulo 4); um contador binário de três bits, 23, oito valores (módulo 8). 
Mas como seria um contador até seis? Ou sete? Para implementar um contador 
para módulo diferente de 2n, utiliza-se o reinício antecipado por um circuito lógico 
combinacional que produz um sinal de SET/RESET no contador, reiniciando a 
contagem. Para implementar com que o contador conte até um determinado 
valor (como 13, por exemplo), denominado como contador módulo 14, é 
necessário determinar o maior e mais próximo número de base 2. Nesse 
 
 
31 
exemplo, 24 = 16 define a quantidade de quatro FF D ou FF T. O número decimal 
14 não existe no contador proposto sendo, consequentemente, o valor que será 
utilizado para reiniciar o contador progressivo. O contador contará com quatro 
saídas Q3, Q2, Q1, e Q0, nas quais o valor 14, em binário “1110”, será a condição 
de RESET para reiniciar a contagem, ativando um nível lógico baixo nas 
entradas 𝑅𝑆𝑇̅̅ ̅̅ ̅ dos FF D, por meio da função lógica 𝑄4. 𝑄3. 𝑄2̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ , conforme 
apresentado na Figura 28. 
Figura 28 – Contador assíncrono módulo 13 
 
5.6 Contadores com carga paralela 
Os contadores assíncronos, como vimos, podem ser reiniciadospelo sinal 
de RESET. Podem também ser implementados para iniciar a contagem com um 
valor específico externo, carregado nos FF. Essa característica é denominada 
carga paralela, e é apresentada no circuito da Figura 29. 
Figura 29 – Contador assíncrono módulo 16 com carga paralela 
 
 
32 
 
A carga paralela carrega um valor binário no contador, controlado por um 
sinal de carga (LOAD). O circuito de carga, nesse exemplo, atua nas entradas 
𝑅𝑆𝑇̅̅ ̅̅ ̅ (RESET) ou 𝑃𝑅𝐸̅̅ ̅̅ ̅̅ (PRESET), conforme o valor de entrada para, de forma 
assíncrona, definir o valor externo no contador, a partir do qual a contagem inicia 
(ou continua). 
As portas NAND, na parte superior da Figura 29, formam um 
decodificador. Neste, o sinal LD em nível lógico baixo mantém as saídas do 
decodificador em nível alto, sem acionar RESET ou PRESET nos FF D, 
independentemente do sinal de entrada. Caso o sinal LD esteja em nível lógico 
alto, as entradas em nível lógico alto produzem um PRESET, e as entradas de 
nível lógico baixo produzem um RESET nos FF D. A Tabela 1 apresenta a tabela-
verdade deste decodificador. 
Tabela 1 – Tabela-verdade do decodificador de carga para acionamento de 
RESET/PRESET 
Carga (LD) Entrada 𝑷𝑹𝑬̅̅ ̅̅ ̅̅ 𝑹𝑺𝑻̅̅ ̅̅ ̅̅ Ação 
0 0 1 1 Sem ação 
0 1 1 1 Sem ação 
1 0 1 0 Aciona RESET 
1 1 0 1 Aciona PRESET 
5.7 Infraestrutura para acesso a memória 
Os FF são unidades de memória. Como tal, podemos guardar, atualizar e 
consultar valores binários armazenados, registrando um bit em cada FF. Os FF 
 
 
33 
D são mais utilizados na função de memória pela facilidade na interconexão e 
operação. Guardar um valor de um byte de comprimento em memória demanda 
uma disponibilidade exclusiva de oito FF D para a estrutura de armazenamento 
desta informação. O processo de registro de informações na memória é 
operacionalizado pela disponibilização dos valores na entrada dos FF D, até que 
ocorra o pulso de clock (borda). Após a ocorrência do pulso, os valores de 
entrada tornam-se indiferentes para o FF até o próximo pulso de clock, momento 
que pode ser utilizado para promover uma atualização dos valores armazenados 
nos FF D. Uma vez armazenado, o valor permanece disponível nas saídas dos 
FF D, conforme o diagrama apresentado na Figura 30. 
Figura 30 – Armazenamento, atualização e consulta de valor em FF 
 
Neste estudo de infraestrutura de acesso às memórias, utilizaremos o 
contador assíncrono, módulo 16, com carga paralela como elemento ativo. 
Vamos supor que existe um sinal com o período de 1 segundo aplicado na 
entrada de clock do contador, que implica no contador tornar-se um temporizador 
ou um relógio de 16 segundos. Vamos ainda supor que este temporizador possa 
armazenar o valor atual do tempo decorrido em uma memória de quatro bits. É 
comum existir uma definição padrão no tamanho dos dados dentro de um 
sistema. Caso um microprocessador manipule, por exemplo, dados de 16 bits de 
 
 
34 
largura, a infraestrutura no entorno do microprocessador, como registradores e 
memórias, normalmente estará implementada com 16 bits de largura. Neste 
estudo, o temporizador e as memórias terão quatro bits de largura para os dados 
manipulados no sistema. 
A saídas do temporizador estão ligadas às entradas D dos FF de memória. 
Ao atingir um valor que deva ser salvo em memória, um pulso de escrita (clock) 
é aplicado nos FF D do arranjo de memórias, fazendo com que o valor presente 
no contador seja armazenado. Por outro lado, as saídas das memórias estão 
ligadas às entradas de carga paralela do temporizador, de modo que, ao ocorrer 
um sinal de carga (LD), o circuito do temporizador assume os valores binários 
armazenados na memória. Esta interconexão é apresentada no diagrama da 
Figura 31(a). 
Figura 31 – Interconexão de um contador e uma memória (a); interconexão de 
um contador e duas memórias (b); e interconexão de dois contadores e duas 
memórias (c) 
 
Te
m
p
o
ri
za
d
o
r 
M
em
ó
ri
a 
(a) 
 
 
35 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Te
m
p
o
ri
za
d
o
r M
em
ó
ri
a 
1
 
M
em
ó
ri
a 
2
 
(b) 
Te
m
p
o
ri
za
d
o
r 
 
2
 
M
em
ó
ri
a 
1
 
M
em
ó
ri
a 
2
 
Te
m
p
o
ri
za
d
o
r 
 
1
 
? 
? 
(c) 
 
 
36 
 
Vamos considerar agora que o temporizador deva salvar dois valores, em 
arranjos de memórias diferentes. As saídas do temporizador devem ser 
interligadas às entradas dos FF D dos dois arranjos de memórias. As saídas das 
memórias devem ser ligadas às entradas do temporizador, algo que não pode 
ser feito, pois estaríamos aplicando um curto-circuito nas saídas dos FF D dos 
arranjos de memórias. Um arranjo poderia ser interligado ao temporizador, mas 
o outro não, conforme apresentado no diagrama da Figura 31(b). 
Por último, vamos considerar um cenário mais dinâmico, no qual dois 
temporizadores podem salvar valores, compartilhando dois arranjos de 
memórias. Naturalmente, estamos considerando os limites do sistema no qual 
um temporizador possa armazenar nenhum, um ou dois valores, desde que o 
outro temporizador não os esteja utilizando. Também não entraremos no 
problema de coordenação entre os dois temporizadores, mas apenas no 
contexto da interconexão. Nesse cenário, as saídas do primeiro temporizador 
seriam interligadas às entradas das memórias. As saídas do primeiro arranjo de 
memória seriam interligadas às entradas dos dois temporizadores. Porém, a 
partir deste ponto, mais nada poderia ser conectado, como as saídas do segundo 
temporizador às entradas das memórias e as saídas do segundo arranjo de 
memória às entradas dos temporizadores, conforme demonstrado no diagrama 
da Figura 31(c). 
Utilizando alguns componentes digitais vistos em aulas anteriores que 
provavelmente não tinham apresentado muito claramente sua utilidade, eles nos 
ajudarão a resolver o problema de interconexão entre os temporizadores e os 
arranjos de memória. Tomaremos com base para esta discussão o diagrama da 
Figura 31(b) e o circuito da Figura 32, que apresenta uma solução para 
interconexão dos dois arranjos de memória com o temporizador. Como visto no 
diagrama do circuito, é realizada a interconexão das saídas do temporizador às 
entradas dos arranjos de memória diretamente. As saídas das memórias, que 
não podiam ser interligadas às entradas do temporizador, agora são possíveis 
pelo emprego de buffers de três estados (tri-state buffer, ou 3S), que possuem o 
estado de alta impedância (Z) quando estão desabilitados. Esse estado impede 
a condição de curto-circuito entre as saídas das memórias, pois, enquanto as 
saídas de um arranjo têm acesso às entradas do temporizador, as saídas do 
outro arranjo ficam ligadas a uma carga de alta impedância. O funcionamento do 
 
 
37 
buffer 3S, quando acionado, permite a passagem dos sinais de saída (ação de 
comutação) do arranjo 1 ou do arranjo 2 de memória exclusivamente para as 
entradas do temporizador. O controle (SEL) do multiplexador de duas entradas 
(MUX) permite direcionar para qual saída o sinal de habilitação (HAB) é 
conectado, acionando os buffers 3S do arranjo 1 ou 2. Já para o acionamento de 
armazenamento dos arranjos de memória 1 e 2, outro MUX controla a direção 
do pulso de clock, por meio de outro sinal de seleção (SEL). 
Ao conjunto de sinais aplicados ao controle, como HAB, CLK e LD, é dada 
a denominação de sinais de controle, que são dispostos no barramento de 
controle. Note que os sinais de seleção (SEL) existem para cada arranjo de 
memória. Para sistemas com muitas memórias, os sinais de seleção são 
codificados em um barramento de endereços, com tantos bits de largura 
quanto a quantidades de arranjos de memória. Caso em um sistema tivesse 
1024 bytes de memória, organizados de quatro em quatro bits (arranjos), seriam 
necessários 2048 sinais de seleção, necessitando de um barramento de 
endereços de 11 bits de largura (211 = 2048).Figura 32 – Interconexão de dois arranjos de memória e um temporizador 
 
O último conjunto de sinais que podemos denominar é aquele responsável 
pelo transporte dos dados. No caso da Figura 32, temos um conjunto que sai das 
memórias para o temporizador, e outro que sai do temporizador para as 
 
 
38 
memórias. Nesse caso particularmente, os dois conjuntos de dados são 
unidirecionais, ou seja, os sinais saem de um dispositivo sempre em direção ao 
outro. Em sistemas digitais, os barramentos de dados são normalmente 
bidirecionais, ou seja, os sinais continuam no sentido das saídas para as 
entradas, mas podem utilizar vias comuns reduzindo recursos, principalmente 
para barramentos largos. Atualmente, os microprocessadores para 
computadores pessoais utilizam barramentos de dados de 64 bits de largura. 
Na Figura 33, é apresentada uma modificação do circuito da Figura 32, 
para que as memórias operem com barramento bidirecional. Não existe, além do 
tracejado de delimitação, sinais de entrada e saída para dados. Tanto os sinais 
de entrada quanto os de saída são disponibilizados por interconexões comuns. 
Já apresentando a terminologia de sistemas digitais, os sinais de seleção (SEL) 
foram substituídos por sinais de endereçamento (ADDRESS); os sinais de clock 
(CLK), foram substituídos por um sinal de escrita (WRITE – WR); e o sinal de 
habilitação, por sinais de leitura (READ – RD). É comum encontrar, nos sinais 
de controle, sinais de habilitação (ENABLE – EN), e sinal combinado de escrita-
leitura (WRITE/READ - 𝑊𝑅̅̅ ̅̅ ̅/𝑅𝐷) complementares. 
Figura 33 – Unidades de memória para barramento bidirecional e sinais de 
controle 
 
Na Figura 34, é apresentada uma possível solução para o problema de 
conexão mostrado na Figura 31(c), implementando um barramento bidirecional 
 
 
39 
de dados, contando com a utilização de buffers de três estados, decodificadores 
e multiplexadores. O sistema de endereçamento está relacionado com 
contadores e o sistema de controle da Figura 34, é mais complexo, e está 
relacionado com máquinas de estados finitos (FSM). 
Figura 34 – Sistema com barramento bidirecional 
 
FINALIZANDO 
Nessa aula, conhecemos a implementação e a operação de flip-flops RS 
(FF RS) que operam por borda de subida e descida do sinal de clock. 
Conhecemos os FF tipo JK, D e T que são utilizados nos mais diversos circuitos 
sequenciais, como detectores de sequência, divisores de sinal de clock e 
sincronizadores de pulsos, além de alguns problemas de temporização na 
operação de FF. Estudamos os componentes, termos e a descrição de sistemas 
com a utilização de diagramas de estado. Estudamos, de forma ampla, o 
princípio de funcionamento e a construção de contadores assíncronos 
progressivos e regressivos, para contagem completa e para terminação 
antecipada e com possibilidade de carga paralela de valor. Vimos também os 
sinais de controle aplicados aos FF como RESET, PRESET e ENABLE e 
circuitos detectores de borda. Conhecemos alguns circuitos implementados com 
FF e, por último, a infraestrutura básica de acesso a arranjos de memórias e 
forma de acessos aos dados registrados, com barramentos uni e bidirecionais, 
empregando buffers de três estados, multiplexadores e decodificadores. 
 
 
40 
 
REFERÊNCIAS 
PEDRONI, V. A. Eletrônica digital moderna e VHDL. Rio de Janeiro: Elsevier, 
2010. 
TOCCI, R. J. Sistemas digitais: princípios e aplicações. 11. ed. São Paulo: 
Pearson Prentice Hall, 2011.

Mais conteúdos dessa disciplina