prof v vargas, ist flip-flops 26/11/13, pg...
TRANSCRIPT
Prof V Vargas, IST Flip-flops 26/11/13, Pg 2/22
Flip-flops / 15aº Projecto
Esta sessão encerra a abordagem dos tijolos básicos próprios dos circuitos Sequenciais. Debruçar-se-á
sobretudo sobre flip-flops. Como nas outras sessões, ir-se-á desenrolar a partir de um Projecto concreto...
Considere-se que, para acender ou apagar uma lâmpada, foi disponibilizado um botão de pressão, caracterizado
pelo seguinte: quando premido, emite um impulso de curta duração, retornando depois à situação de repouso.
Ao lado, traçou-se um Diagrama Temporal ilustrando como se pretende que evolua o estado da lâmpada:
• Pressupondo que a lâmpada está inicialmente apagada, ela acende em ‘t1‘, o instante em que é premido o
botão – e ele emite um impulso curto; e continua acesa mesmo quando, em ‘t2‘, finda esse impulso;
• Quando, em ‘t3‘, o botão volta a ser premido – e volta a emitir um impulso –, a lâmpada apaga-se; e continua
apagada mesmo quando, em ‘t4‘, esse impulso se esvanece;
• A continuação intui-se…
Decidindo-se pela codificação ao lado, um projectista concebeu um logigrama envolvendo uma latch SR
enabled. A justificação apontada pelo “artista” foi a seguinte:
• ‘B’ está directamente ligado à entrada enable da latch; com isso, enquanto o botão não for premido, ela
encontra-se disabled – pelo que a lâmpada mantém o seu estado (aceso ou apagado);
• Isto é: somente quando ele for premido é que a latch advém enabled (e portanto poderá mudar de estado); o
que resta fazer é providenciar que o que então estiver aplicado nas entradas {S, R} a force mesmo a mudar de
estado; ora, isso consegue-se com as ligações estabelecidas no logigrama: as subsequentes expressões para as
entradas {S, R}, quando substituídas na equação característica da latch, conduzem a que, quando o botão é
premido e portanto a latch advém enabled, ela mude de estado – com o que, se a lâmpada estiver acesa, se apague
(e vice-versa)…
Será que o logigrama estará correcto – que conduz mesmo ao Diagrama Temporal acima? A resposta é: não,
está errado! Para o compreender, convirá olhar mais em pormenor a sucessão de eventos a partir do momento em
que de facto se prime o botão…
• Suponha-se que, inicialmente, ‘Q’ se encontra no estado ‘0’ – e portanto S=1 e R=0; suponha-se também que
‘B’ é ‘0’;
• Admita-se, então, que o botão é premido: ‘B’ volve-se ‘1’… e a latch fica enabled:
• Um certo tempo tpHL depois, ‘ Q ’, e por conseguinte também ‘S’, advêm ‘0’;
• E um certo tempo tpLH depois, ‘Q’, e por conseguinte também ‘R’, advêm ‘1’;
• Quer dizer: as entradas {S, R} mudaram de valor, passaram a ser ‘0’ e ‘1’, respectivamente…
• Mas, se o impulso curto não for “tão curto assim”, ‘B’ ainda continuará permanecendo ‘1’…
• Com o que a latch se manterá enabled:
• Um certo tempo tpLH depois, ‘ Q ’, e por conseguinte também ‘S’, advêm ‘1’;
• E um certo tempo tpHL depois, ‘Q’, e por conseguinte também ‘R’, advêm ‘0’;
• Quer dizer: as entradas {S, R} mudaram outra vez de valor, passaram a ser ‘1’ e ‘0’, respectivamente…
• Ou seja: foi reposta a situação imediatamente a seguir ao premir do botão – e a continuação adivinha-se: uma
oscilação {apagada → acesa → apagada → acesa → apagada …} da lâmpada, que acabará quando terminar o
impulso curto detonado pelo premir do botão, mas de que não se sabe como acabará: se acesa, se apagada…
É claro que o problema ficaria resolvido se, quando acontecesse o enable da latch, fosse permitida uma única
alteração no estado da latch – e é precisamente a este assunto que serão dedicadas as próximas páginas.
Prof V Vargas, IST Flip-flops 26/11/13, Pg 4/22
Flip-flops / Flip-flop SR Master-slave
Como garantir que, quando ocorrer o enable da latch, haja uma única alteração no seu estado? Revendo a
evolução temporal do logigrama proposto para o 15aº Projecto, é claro o seu calcanhar de Aquiles: reside no facto
de as entradas {S, R} dependerem do Estado da própria latch – mudando quando este muda –, e portanto
habilitando a que, quando advém activa a entrada enable, o seu estado sofra duas (ou mais) mudanças. No sentido
de o evitar, a solução será deixar que o estado da latch mude somente depois de a entrada enable ficar inactiva!
Uma primeira estratégia para o conseguir é a assim denominada estrutura master-slave: em vez de usar uma
única latch SR, recorre-se a duas latches em série, ditas de mestre e escravo, vidé ao lado – e de tal modo
interligadas a uma entrada clock externa que as respectivas entradas enable ‘C’ ficam activas em momentos
diferentes (quando uma delas, seja ‘Cmaster’, está activa, a outra, ‘Cslave’, estará inactiva, e vice-versa).
A lógica subjacente é a seguinte: suponha-se que, em dado momento, estando estáveis as entradas externas {S,
R}, e portanto estáveis as entradas {S, R} da latch mestre, advém activa a entrada clock. Em consequência disso, a
entrada enable ‘Cmaster’ fica activa – e o estado dessa latch pode mudar (isso dependendo, é claro, dos valores
aplicados em {S, R}). Por outras palavras: a sua saída, seja ‘Qmaster’, pode advir diferente – o que equivale a dizer
que as entradas {S, R} da latch escravo podem ficar diferentes. Porém, essa latch está então impedida de mudar de
estado – pois que a respectiva entrada enable ‘Cslave’ se encontra inactiva (é a consequência do inversor entre a
entrada clock e ‘Cslave’); por outras palavras, a sua saída, ‘Qslave’, mantém-se imperturbável…
Algum tempo mais tarde, a entrada clock advém inactiva – por conseguinte inactivando a entrada enable
‘Cmaster’, porém activando a entrada enable ‘Cslave’; com isso, o valor na saída ‘Qmaster’ propaga-se para a latch
escravo, isto é: se Qmaster=0, irá ficar Q=Qslave=0, e, se Qmaster=1, ficará Q=Qslave=1.
Visto globalmente: quando advém activa a entrada clock, regista-se temporariamente na latch mestre o valor
com que deve ficar a saída terminal ‘Q’ – mas somente depois de aquela ficar inactiva é que esse valor é
propagado para a latch escravo – e apresentado na saída ‘Q’ da estrutura.
Consequência disso é que a saída visível ‘Q’ da estrutura muda no flanco dos impulsos recebidos na entrada
clock – e que neste caso é dito descendente (falling) ou negativo porque corresponde à transição ‘1’→‘0’ nessa
entrada; se se quisera que ‘Q’ mudasse no flanco ascendente (rising) ou positivo, isto é, na transição ‘0’→‘1’ na
entrada clock, bastaria alterar adequadamente a localização do inversor… A um tijolo básico com esta propriedade
dá-se o nome de flip-flop – e, neste caso, trata-se de um flip-flop SR; e, ao flanco dos impulsos de relógio em que
muda a saída visível ‘Q’ da estrutura dá-se o nome de flanco de comutação (ou activo) do relógio.
Não é demais comparar as saídas visíveis de latches e flip-flops: a de uma latch reage enquanto a entrada
enable estiver activa, já a de um flip-flop reage só quando o valor na entrada clock muda – ou, no calão aplicável,
no flanco (descendente ou ascendente) do relógio.
Ao lado, apresenta-se o símbolo IEC do flip-flop SR master-slave. As duas entradas {S, R} são activas a High
– e, como expectável, os seus rótulos são prefixados por ‘1’, e ‘C’ é sufixado por ‘1’. A saída, ‘Q’, é dada sob as
formas normal e complementar – e sinalizadas com ‘┐’, símbolo de atraso que assinala que mudam no flanco
descendente de ‘C’.
A título de completude do 15aº Projecto, ao lado apresenta-se o circuito de controlo da lâmpada – todavia
usando agora um flip-flop SR master-slave reagindo no flanco descendente.
O Diagrama Temporal reflecte a alteração feita, de substituir a latch por um flip-flop: quando ‘B’ emite um
impulso curto…
• Pressuponha-se que a lâmpada está inicialmente apagada;
• No instante em que é premido o botão – e ele emite um impulso curto –, o estado da latch mestre altera-se,
mas o estado da latch escravo mantém-se impávido – portanto continuando a lâmpada apagada;
• Quando esse impulso se esvanece, o estado da latch escravo altera-se – com o que a lâmpada se acende –, mas
o estado da latch mestre mantém-se impávido;
• A continuação intui-se…
Prof V Vargas, IST Flip-flops 26/11/13, Pg 6/22
Flip-flops / Flip-flop JK Master-slave
Sendo arriscado activar em simultâneo ambas as entradas de uma latch SR, uma solução para o evitar é garantir
que, a cada momento, elas sejam complementares uma da outra – e foi esse o raciocínio que conduziu à latch D.
Resultado de uma filosofia diferente é o assim designado flip-flop JK (concebido por Jack Kilby): tem um
mapa de Karnaugh em tudo semelhante ao de uma latch (ou flip-flop) SR – com a diferença de que, sim, se podem
activar em simultâneo ambas as entradas {J, K}, a consequência sendo o flip-flop mudar de estado, vidé ao lado.
Com isso, o flip-flop JK apresenta, ademais dos modos de funcionamento de uma latch SR, um outro dito de
Toggles: o estado do flip-flop JK muda quando ambas as entradas são ‘1’.
Quanto ao correspondente Diagrama de Estados, ele vem a ser muito parecido com o da latch SR – a diferença
sendo que, agora, há uma outra maneira de, a partir do estado Q(t)=0, se ingressar no estado Q(t+1)=1, e vice-versa.
Como materializar um flip-flop assim? – eis a pergunta que agora se impõe. A resposta da lei do menor esforço
será natural: partir daquilo que já se sabe fazer, um flip-flop SR, e construir uma malha combinatória a aplicar nas
entradas {S, R}, de modo que o conjunto funcione como um flip-flop JK, vidé ao lado.
Por noutras palavras: é já conhecida a equação característica dum flip-flop SR; quanto à equação de um flip-
flop JK, não custa deduzi-la do mapa de Karnaugh ao lado. O desafio é claro: que é que se deve aplicar nas
entradas {S, R}, para que a equação característica do conjunto seja a do flip-flop JK? É natural que o leitor olhe
para as equações e exclame: “É canja: basta fazer QJS e R=K!”. Porém, esta resposta está errada: se o estado
inicial fosse Q=0, e ‘J’ e ‘K’ fossem, ambos, ‘1’, sucederia {S=1 e R=1} – o que, já se repetiu, é arriscado!
O método correcto de encontrar a resposta é fazer o seguinte, vidé ao lado:
● Porquanto se pretende exprimir {S, R} em função de {J, K} e ‘Q’, há que elaborar os mapas de Karnaugh de
{S, R}, em que à esquerda se dispõem três colunas para, precisamente, {Q(t), J e K};
● Após o que, como expectável, se preenchem as três colunas com todas as (8) combinações dessas entradas;
● A etapa seguinte é usar a equação característica do flip-flop JK, ou talvez mais fácil ainda, o seu Diagrama
de Estados, para preencher uma coluna, ‘Q(t+1)’; por exemplo, nas primeiras duas linhas trata-se de discernir qual o
estado seguinte, ‘Q(t+1)’, quando o actual é Q(t)=0 e as entradas são J=0 e K=X (versão condensada de K=0 ou
K=1}; o Diagrama mostra que ele é Q(t)=0 – e é esse valor, ‘0’, que se inscreve na coluna ‘Q(t+1)’;
● Enfim, linha a linha, preenchem-se as colunas {S, R}, recorrendo à Tabela de Excitação do flip-flop SR; por
exemplo, nas primeiras duas linhas verifica-se que Q(t)=0 e Q(t+1)=0 – o que remete para a seguinte pergunta: como
excitar as entradas {S, R}, para que aconteça essa “transição” de estados (‘0’→‘0’)? A resposta da Tabela de
Excitação é {S=0, R=X} – e são estes valores {0, X} que se inscrevem nas colunas {S, R}, respectivamente;
● A última etapa é, é claro, lograr as expressões algébricas simplificadas de {S, R} e desenhar o logigrama…
Convém fixar esta metodologia: os cinco passos pautando o desenho de um flip-flop JK a partir de um flip-
flop SR são, como se verá na Parte III deste itinerário, aqueles que se repetidamente se usarão para a síntese de
circuitos Sequenciais (síncronos).
Ao lado, apresentam-se símbolos IEC do flip-flop JK master-slave. Em ambos, as entradas {J, K} são activas a
High – e, como expectável, os seus rótulos são prefixados por ‘1’, e ‘C’ é sufixado por ‘1’. A saída, ‘Q’, é dada
sob as formas normal e complementar – e sinalizadas com ‘┐’, significando que mudam no flanco de ‘C’ –
descendente ou ascendente, consoante se trata do símbolo da esquerda ou da direita.
Uma última nota: terá o leitor verificado que, na precedente sessão, se abordaram as latches SR e D – mas não
se mencionou qualquer latch JK… A razão tem a ver com o modo Toggle, como se pode constatar no Diagrama
Temporal ao lado, em que se pressupôs uma latch JK – isto é, que reage enquanto a entrada enable estiver activa,
que não apenas num seu flanco.
Inicialmente, o estado é Q=0 – após o que as entradas {J, K} assumem diferentes valores:
• Quando {J=0, K=0}, o estado não se altera, quando a entrada enable advém activa, continua Q=0;
• Quando {J=1, K=0}, o estado torna-se Q=1, quando a entrada enable advém activa, e aí continua;
• Quando {J=0, K=1}, o estado fica sendo Q=0, quando a entrada enable advém activa, e aí continua;
• Quando {J=1, K=1}, o estado muda para Q=1 (toggles) quando a entrada enable advém activa; mas,
continuando ela activa, volta a mudar (toggles), agora para Q=0, e depois para Q=1, etc… Há um toggle contínuo,
razão para não se poder usar um tijolo JK que não seja master-slave (ou edge-triggered, como adiante se verá).
Prof V Vargas, IST Flip-flops 26/11/13, Pg 8/22
Flip-flops / 15bº Projecto
Esta sessão começou, recorde-se, tendo em vista sintetizar um circuito para controlar o acender e apagar de
uma lâmpada a partir dos impulsos gerados por um botão de pressão – tendo-se chegado ao logigrama ao lado.
Admita-se, agora, que chegava às mãos do leitor um logigrama assim – e lhe pediam para o analisar…
As etapas para tal são conhecidas: determinar as expressões das entradas {S, R} – e aplicá-las na equação
característica do flip-flop SR – chegando a uma expressão para o estado seguinte em função do estado actual…
O traçado do Diagrama temporal reflecte-o: sempre que findar o impulso gerado por ‘B’ – e portanto houver um
flanco descendente na entrada de relógio –, o estado do circuito muda: de ‘0’ para ‘1’ ou de ‘1’ para ‘0’…
A pergunta resume-se agora ao seguinte: o que é “isto”, este é o Diagrama temporal de quê? A resposta mais
imediata será: “isto” é um Divisor de Frequência (por 2)! E, retorquir-se-á: mas que é isso, de Divisor de
Frequência? Para o apreender, um bom exemplo será um relógio de segundos, minutos e horas:
Admita que ele dispõe de três ponteiros “alimentados” por impulsos {Is, Im, Ih}: muito simplificadamente, cada
um deles avança um tick quando finda o impulso que lhe diz respeito. Pressuponha, ainda, que ele se suporta sobre
um circuito electrónico gerando um impulso ‘Is’ por segundo. Sempre que um impulso ‘Is’ finda, o ponteiro dos
segundos avança 1 tick; quando tiverem sido gerados 60 impulsos ‘Is’, produz-se o impulso ‘Im’ – e o ponteiro dos
minutos avança 1 tick; quando tiverem sido gerados 60 impulsos ‘Im’, produz-se o impulso ‘Ih’ – e o ponteiro das
horas avança 1 tick… Circuitos assim (que, por N impulsos recebidos, produzem 1 impulso), dizem-se Divisores
de Frequência (por N) – do que se depreende que um relógio será um encadeado de Divisores de Frequência.
Isto dito, será compreensível a resposta acima: “isto” é um Divisor de Frequência (por 2)! Com efeito, o
Diagrama testemunha que, após recebidos 4 impulsos (ou, equivalentemente, após 4 flancos descendentes) em ’B’,
foram produzidos 2 impulsos (e 2 flancos descendentes) em ‘L’ – o que se volve numa proporção 2:1.
Os impulsos na saída ‘L’ do circuito têm uma duração não tão curta como os recebidos em ‘B’ – mas, se se
quiser que eles adquiram uma duração similar, bastará acrescentar um AND, vidé ao lado.
E tendo apreendido que um relógio será um encadeado de Divisores de Frequência, intui-se como lograr um
Divisor de Frequência por 4: bastarão dois Divisores de Frequência por 2, designem-se eles de {Q1 e Q0},
dispostos em série – de tal modo que a entrada de relógio do primeiro, ‘Q0’, seja directamente alimentada por ‘B’,
e a entrada de relógio do segundo, ‘Q1’, seja alimentada pela saída, ‘Q0’, do primeiro.
Assim fazendo, acontecerá o seguinte: por cada par de flancos descendentes em ‘B’, ocorrerá um flanco
descendente em ‘Q0’ – e por cada par de flancos descendentes em ‘Q0’, ocorrerá um flanco descendente em ‘Q1’;
no conjunto, portanto, por cada quatro flancos descendentes em ‘B’, ocorrerá um flanco descendente em ‘Z’.
O AND que produz a saída ‘Z’ destina-se, é claro, a lograr impulsos com uma duração similar aos de ‘B’.
Como já aconteceu na sessão anterior (em que se analisou um circuito com uma latch D e uma latch SR), este
último circuito, com dois flip-flops SR, vem a apresentar quatro estados; designando de {Q1 e Q0} os estados
individuais dos flip-flops, portanto atribuindo um peso menor a ‘Q0’, eles vêm a memorizar ciclicamente os
códigos binários dos símbolos da base ‘4’. Por tal motivo, ele designa-se contador cíclico ascendente de módulo 4.
No caso, e em virtude do modo como os flip-flops reagem, trata-se dum contador assíncrono. Para apreender o
significado deste adjectivo, reparem-se nos momentos {t1, t2, t3 e t4} assinalados no Diagrama Temporal:
– admita-se que, inicialmente, os estados dos flip-flops são {Q1=0 e Q0=0}, ou, mais compactamente, ‘00’;
– no instante ‘t1’, ocorre um flanco descendente em ‘B’, pelo que o flip-flop ‘Q0’ muda de estado – com o que o
circuito passa ao estado ‘01’;
– no instante ‘t2’, ocorre novo flanco descendente em ‘B’, pelo que o flip-flop ‘Q0’ muda outra vez de estado –
passando o circuito ao estado ‘00’; mas isso significa um flanco descendente em ‘Q0’, pelo que o flip-flop ‘Q1’
vem também ele a mudar de estado – com o que o circuito passa enfim ao estado ‘10’. Assincronismo significa
precisamente este fenómeno de os flip-flops não reagirem em simultâneo: ‘Q1’ muda só depois de ‘Q0’ mudar.
O circuito transita então, de facto, pelos estados ‘00’ → ‘01’ → ‘00’ → ‘10’… e não como a sequência ao lado
levaria a entender… Claro é que o intervalo de tempo em que o circuito permanece no estado intermédio ‘00’ entre
‘01’ e ‘10’ é assaz curto, cerca do tempo de propagação do flip-flop SR (e um fenómeno análogo ocorre na
transição dos estados ‘11’ para ‘00’, em ‘t4’). Há aplicações para as quais esse intervalo de tempo é desprezável –
mas outras há para as quais não o é, pelo que oportunamente se terão de abordar contadores síncronos…
Deixa-se ao leitor o desenho dum logigrama dum contador assíncrono cíclico ascendente de módulo 8: o tempo
sendo escasso, convirá dedicá-lo a contadores cujo módulo não seja potência de 2 – e é o que se fará já de seguida.
Prof V Vargas, IST Flip-flops 26/11/13, Pg 10/22
Flip-flops / 15cº Projecto
Pressupondo que já não haverá dúvidas quanto à construção de um contador cujo módulo seja potência-de-2,
suponha-se então que se pretende um contador cíclico de módulo ’3’ – isto é, que a sequência de contagem envolva
apenas três números, concretamente {0, 1, 2}, ou, em binário: {‘00’, ‘01’, ‘10’}…
Um projectista deduziu, e bem, que, para suportar três estados diferentes, um só flip-flop seria insuficiente –
tendo então proposto um circuito com dois flip-flops, interligados conforme ao logigrama ao lado; na prática,
resolveu partir do logigrama dum contador de módulo-4, e fazer-lhe alguns ajustes; a lógica do “artista” foi esta:
• A saída, ‘Z’, do circuito deve volver-se num impulso cujo flanco descendente deverá acontecer quando,
estando o circuito no estado ‘10’, ocorra o flanco descendente em ‘B’; ora, isso consegue-se detectando essa
situação – o que remete para um implicante primo: concretamente um AND com as pertinentes entradas…
• Sem quaisquer alterações (no logigrama do contador de módulo-4), o flip-flop ‘Q0’ estaria oscilando, ao ritmo
dos impulsos em ‘B’, entre os estados ‘0’ e ‘1’; o que agora se requer é que, quando ocorrer o flanco descendente
em ‘Z’, ‘Q0’ permaneça no estado ‘0’ (em vez de ingressar no estado ‘1’); ora, do Diagrama de Estados dum flip-
flop SR, basta, para tal, que, quando ocorrer esse flanco descendente, se esteja forçando S0=0 – ou seja: enquanto
Z=0, a entrada ‘S0’ deverá comportar-se como no contador de módulo-4 – mas, quando Z=1, ela deve ser forçada a
tomar o valor ‘0’; isso remete para um OR com as pertinentes entradas, e com saída activa a Low…
• Sem quaisquer alterações (no logigrama do contador de módulo-4), o flip-flop ‘Q1’ estaria oscilando, ao ritmo
dos impulsos em ‘Q0’, entre os estados ‘0’ e ‘1’; o que agora se requer é que, quando ocorrer o flanco descendente
em ‘Z’, ‘Q1’ transite para o estado ‘0’ (em vez de continuar no estado ‘1’); ora, do Diagrama de Estados, basta,
para tal, que, quando ocorrer esse flanco descendente, se esteja forçando S1=0 e R1=1; ora, se as entradas {S1 e R1}
estiverem interligadas como no contador de módulo-4, isso fica automaticamente garantido; só resta providenciar
para que, então, a respectiva entrada de relógio esteja enabled; globalmente, esta deve, pois, funcionar assim:
enquanto Z=0, ela deverá comportar-se como no contador de módulo-4 – mas, quando Z=1, ela deve ser forçada a
tomar o valor ‘1’ – para que, aquando do flanco descendente em ‘Z’, também nela ocorra um flanco descendente…
Será que o logigrama estará correcto – que resulta mesmo num contador cíclico de módulo ’3’? A resposta é:
não, está errado! Para o compreender, convirá olhar mais em pormenor a sucessão de eventos em torno do instante
em que ocorre o flanco descendente em ‘B’ quando o circuito se encontra no estado ‘10’…
Ao lado, o Diagrama Temporal da esquerda apresenta uma evolução dos estados de um contador de módulo ’3’.
Todavia, veja-se mais de perto o que ocorre após o circuito proposto ingressar no estado ‘10’:
• Algum tempo depois, seja no instante ‘t3’, ocorre um impulso em ‘B’, isto é: ‘B’ advém ‘1’…
ficando então activas as entradas do AND que produz ‘Z’ – que, após um tempo ‘tpLH’, advém então ‘1’;
• Com isso, a saída do OR muda: após um tempo ‘tpHL’ a saída ‘S0’ fica ‘0’, e, ‘tpLH’ depois, ‘Clk1’ advém ‘1’;
Dirá o artista que é mesmo isso que se quer: quando findar o impulso em ‘B’, em‘t4’, ‘Q0’ tomará o valor ‘0’ e,
após um tempo ‘tpHL’, ‘Z’ retornará a ‘0’ – com o que ‘Clk1’ retornará também a ‘0’, e ‘Q1’ tomará o valor ‘0’…
Mas, de facto, e em virtude do modo como o flip-flop R master-slave funciona, as coisas não se passarão assim:
‘Clk0’ está interligada a ‘B’ – pelo que, quando este, em ‘t3’, advir ‘1’, o mestre irá reagir… Ora, então, verifica-se
{S0=1 e R0=0} – com o que o mestre ingressará no estado QMaster=1. Dirá o artista que, algum tempo tpHL + tpLH
depois, ‘S0’ tomará o valor ‘0’… Todavia, e o logigrama da latch SR mostra-o claramente, isso não mudará o
estado QMaster: com R=0, e desde que ‘Q’ se volva ‘1’, não mais deixará de o ser! A este fenómeno dá-se o nome
de 1’s catching (pois será o suporte natural para concretizar um circuito que detecte se numa linha ocorreu algum
‘1’).… Quando, então, em ‘t4’, ocorrer o flanco descendente em ‘B’, o escravo adquirirá o estado do mestre, isto é,
‘Q0’ volver-se-á em ‘1’ – e, não, em ‘0’, como se esperaria de um contador de módulo-3…
Como resolver este problema? Note-se que ele acontece porque, enquanto o mestre está enabled, as suas
entradas não permanecem constantes: ‘S0’, antes de tomar o valor ‘0’, chegou a ser ‘1’; bem vistas as coisas, o
problema ficaria solucionado se o mestre ficasse enabled somente depois de ‘S0’ tomar o valor ‘1’ – ou, visto de
outra maneira: “um tudo nada” antes de ficar disabled! A um flip-flop que reage assim – isto é, o seu estado
seguinte depende das entradas tais como estão no instante preciso em que ocorre o flanco de comutação do
relógio – dá-se o nome de flip-flop edge-triggered. No caso, e para o lograr, bastaria, e em vez de interligar
directamente a linha ‘B’ a ‘Clk0’, interpor um circuito que encurtasse drasticamente o intervalo de tempo em que o
mestre ficasse enabled – mas convém passar em revista outras estratégias…
Prof V Vargas, IST Flip-flops 26/11/13, Pg 12/22
Flip-flops / Flip-flops edge-triggered
O logigrama proposto para o 15cº Projecto exibe o que não se deve considerar excepção: a oscilação, entre ‘0’ e
‘1’, das entradas dos flip-flops, antes do flanco de comutação. Em virtude das suas consequências, convirá, então:
– ou, se se usar um flip-flop master-slave, garantir que as entradas não mudam enquanto o clock estiver High;
– ou conceber um outro tipo de flip-flops – de tal modo que o estado seguinte dependa só dos valores que estão
aplicados às suas entradas no preciso instante em que ocorre o flanco de comutação. Flip-flops assim são ditos de
edge-triggered. Como serão eles por dentro? Eis três das estratégias seguidas para os lograr:
Uma primeira estratégia, aplicável a, por exemplo, uma latch D enabled, foi já sugerida: consiste em detectar
o instante em que ocorre o flanco de comutação – e, nesse momento, gerar um impulso muito breve (para a activar)
Ao lado, está esquematizada a estrutura global de um flip-flop dotado de um circuito cumprindo esse objectivo:
pressupondo que do gerador de impulsos de relógio, estão chegando impulsos, o assim denominado detector de
flancos “transforma-os” em impulsos bem mais breves – e são eles que são aplicados na entrada enable da latch.
Como será esse detector “lá por dentro”? Ao lado, apresentam-se dois esquemas possíveis, para equipar flip-
flops reagindo aos flancos, respectivamente ascendente e descendente do relógio.
À esquerda, usam-se três (ou mais) inversores em série para atrasar muito ligeiramente os sinais recebidos em
‘Clk’; designando de ‘Clkd’ a saída do último, o AND entre ‘Clk’ e ‘Clkd’ resulta numa sucessão de impulsos
extremamente breves, gerados precisamente aquando do flanco ascendente dos impulsos de relógio originais.
Isto compreendido, não deverá ser necessário gastar tempo com o esquema ao lado à direita…
(Abra-se um parêntesis: esta estratégia é pouco fiável porque, consideradas as tolerâncias nos tempos de atraso
dos inversores, não é possível garantir uma duração mínima para o impulso gerado)
Ao lado, apresentam-se símbolos IEC de flip-flops D edge-triggered. A entrada ‘D’ é activa a High – e, como
expectável, o seu rótulo é prefixado por ‘1’, e ‘C’ é sufixado por ‘1’. ‘C’ é sinalizada com ‘>’, que assinala que o
flip-flop é edge-triggered; se for o caso de ele reagir ao flanco descendente de ‘C’, há que o assinalar, mediante o
indicador de polaridade. A saída, ‘Q’, é dada sob as formas normal e complementar. (Os símbolos IEC de flip-
flops SR ou JK edge-triggered são análogos, a diferença sendo que as entradas são rotuladas {S, R} ou {J, K})
Uma segunda estratégia, que se volve no flip-flop D master-slave, baseia-se no facto de a latch D não sofrer
do fenómeno 1’s catching: usa, como mestre, uma latch D (e não SR), vidé ao lado. Com efeito, enquanto Clk=1,
‘Qmaster’ acompanha pari passu o valor na entrada ‘D’, ignorando transitórios que nela tenham eventualmente
ocorrido – com o que, quando ‘Clk’ advém ‘0’, o que o escravo fica memorizando é o “último” valor de ‘D’.
Uma terceira estratégia é usar estruturas não master-slave que vieram entretanto a ser concebidas.
Ao lado, apresenta-se um exemplo assim: um flip-flop D edge-triggered positivo constituído por três latches
{Latch0, Latch1, Latch2} sabiamente interligadas. Não custará entender o seu funcionamento:
– quando Clk=0, ambas as saídas ‘Q0’ e ‘Q1’ ficam sendo ‘1’; com isso, a saída ‘Q’0’ da Latch0 advém igual a
‘ D ’, e, consequentemente, a saída ‘Q’1’ da Latch1 advém igual a ‘ D ’. Repare-se que a circunstância Q0=Q1=1
conduz a que as saídas da Latch2 permanecem inalteradas durante todo o intervalo de tempo em que Clk=0;
– poderão, eventualmente, ocorrer oscilações na entrada ‘D’ – que elas se irão repercutir pari passu nas saídas
{Q’0, Q
’1} – com o que estas ficarão reflectindo o valor nessa entrada quando ela enfim estabilizar;
– quando Clk=1, a saída ‘Q1’ advém igual a ‘ D ’; e, consequentemente, a saída ‘Q0’ toma o valor’ D ’;
– poder-se-ia suspeitar que eventuais alterações em ‘Q0’ e ‘Q1’ se volveriam em alterações nas saídas {Q0’, Q1
’}
das latches da esquerda (em virtude dos feedback assinalados) – mas tal não sucede: o leitor poderá conferir por si
que elas permanecem exactamente como estavam antes do flanco ascendente do relógio, Q’0= D e Q
’1= D ;
– isso tem uma consequência directa: a entrada 1R não muda; em consequência, ‘Q1’ não sofre mais alterações
– e por isso mesmo também ‘Q0’ não as sofre: presumindo que ‘Clk’ advém ‘1’ somente após ‘D’ estabilizar, ‘Q0’ e
‘Q1’ transitaram, de um golpe só, sem quaisquer oscilações de permeio, para os valores “finais”!
– globalmente, constata-se que, de uma situação (Clk=0) em que Q0=Q1=1, e portanto as entradas da Latch2
são iguais, se evoluiu para uma situação (Clk=1) em que são complementares uma da outra; por outras palavras: só
uma delas se alterou, sem ter havido quaisquer transitórios… O resultado é que o estado imediato do flip-flop após
o ‘Clk’ ter passado a ser ‘1’ vem a ser Q2= D : trata-se mesmo de um flip-flop D edge-triggered positivo.
Prof V Vargas, IST Flip-flops 26/11/13, Pg 14/22
Flip-flops / Flip-flop T
Além dos flip-flops SR, D e JK, o mercado oferece um outro, dito de flip-flop T – que pode conceptualmente ser
entendido como o resultado da interligação de ambas as entradas de um flip-flop JK, vidé ao lado.
O respectivo Diagrama de Estados encontra-se ao lado; exibe dois modos de funcionamento:
● Quando T=0 – modo de funcionamento dito de “Hold” –, o estado mantém-se tal como era: se, antes, era
Q(t)=0, depois continua sendo Q(t+1)=0 – e se, antes, era Q(t)=1, depois continua sendo Q(t+1)=1;
● Quando T=1 – modo de funcionamento dito de “Toggles” –, o estado muda (de ‘0’ para ‘1’ ou vice-versa)…
Vidé ao lado o símbolo IEC de um flip-flop T edge-triggered reagindo ao flanco descendente de ‘C’. A entrada
‘T’ é activa a High – e, como expectável, o seu rótulo é prefixado por ‘1’, e ‘C’ é sufixado por ‘1’. A entrada ‘C’ é
sinalizada com ‘>’ e com o indicador de polaridade. A saída, ‘Q’, é dada sob as formas normal e complementar.
Um flip-flop T é especialmente vocacionado para materializar Divisores de Frequência (ou Contadores). Em
particular, o Divisor de Frequência por 2, com o Diagrama Temporal figurado ao lado, foi já apresentado como
motivo para o logigrama anexo, envolvendo um flip-flop SR; as ligações que nele constam destinam-se, como se
viu, a garantir que, por cada flanco de comutação do relógio, o estado do flip-flop muda. Ora, esta é precisamente a
característica do modo de funcionamento Toggles – o que sugere que, recorrendo a um flip-flop T, há uma maneira
mais simples de o fazer: forçando ‘1’ na sua entrada ‘T’, vidé ao lado.
E se, pela apropriada conexão em série de dois flip-flops SR, se consegue lograr um Divisor de Frequência por
4, assim fica mais fácil fazê-lo mediante dois flip-flops T: designando-os de {Q1 e Q0}, bastará dispô-los em série
– de tal modo que a entrada de relógio do primeiro, ‘Q0’, seja directamente alimentada por ‘B’, e a entrada de
relógio do segundo, ‘Q1’, seja alimentada pela saída, ‘Q0’, do primeiro.
O circuito logrado, que apresenta quatro estados, pode também ser designado de contador cíclico ascendente
de módulo 4 – assíncrono, porquanto os flip-flops não reagem em simultâneo: ‘Q1’ muda só depois de ‘Q0’ mudar:
a saída ‘Q0’ muda após ter decorrido um tempo de propagação tpLH ou tpHL depois do flanco descendente de ‘B’ –
e a saída ‘Q1’ muda somente depois de ter decorrido um tempo de propagação tpLH ou tpHL após o flanco
descendente de ‘Q0’.
É hora, porém, de anunciar que é possível constituir uma versão síncrona para esse contador – isto é, em que
os flip-flops (e porque as suas entradas de relógio se encontram ambas ligadas a ‘B’) reajam “ao mesmo tempo”:
bastará discernir os modos de funcionamento a imprimir aos dois flip-flops para conseguir o efeito em vista:
● Relativamente ao flip-flop ‘Q0’, e conferindo pelo Diagrama Temporal que, sempre que houver um flanco
descendente em ‘B’, ele deverá mudar de estado, a conclusão é óbvia: ele deverá funcionar permanentemente no
modo Toggles – o que conduz a fixar ‘1’ na entrada ‘T’ desse flip-flop;
● Já quanto ao flip-flop ‘Q1’, o Diagrama Temporal mostra que, para ele mudar de estado, não basta que haja
um flanco descendente em ‘B’: só o fará se o estado de ‘Q0’ nesse instante for ‘1’; por outras palavras: se, aquando
desse flanco em ‘B’, Q0=0, ele deverá funcionar no modo Hold (isto é: dever-se-á aplicar-lhe T=0), mas se for
Q0=1, ele deverá funcionar no modo Toggles (isto é: dever-se-á aplicar-lhe T=1); a conclusão é clara: ‘T’ segue
pari passu a saída de ‘Q0’, pelo que se deverá ligar, à entrada ‘T’ do flip-flop ‘Q1’, a saída de ‘Q0’.
As entradas de relógio dos flip-flops estarão ambas ligadas a ‘B’ – com o que, quando ocorrer o flanco
descendente em ‘B’, ambos irão reagir “ao mesmo tempo”; nomeadamente, no segundo flanco descendente
assinalado, ‘Q0’ irá transitar de ‘1’ para ‘0’, e ‘Q1’ irá transitar de ‘0’ para ‘1’: parecerão estar a funcionar em
simultâneo, em que a menção “parecerão” significa que, sendo impossível garantir que os tempos de propagação
sejam realmente iguais, só idealmente é que os flip-flops reagirão “ao mesmo tempo”.
Quiçá sendo desnecessário mencioná-lo, a alteração sofrida em ‘Q0’ aquando do flanco descendente do sinal de
relógio não terá então quaisquer efeitos em ‘Q1’: pois que os flip-flops são edge-triggered, a evolução de cada um
depende do que estiver aplicado à sua entrada ‘T’ no instante preciso em que ocorre o flanco descendente em ‘C’;
se ‘Q0’ mudar, isso terá efeitos, quando muito, no flanco descendente seguinte do sinal de relógio.
Esta característica torna sumamente pacífico o desenho de circuitos síncronos, isto é: em que todos os flip-flops
são alimentados pelo mesmo sinal de relógio. Mas isso fica para a Parte III deste itinerário…
Prof V Vargas, IST Flip-flops 26/11/13, Pg 16/22
Flip-flops / Recapitulando... O Bando dos Quatro
Ao lado, apresenta-se uma sinopse dos quatro tijolos básicos próprios de circuitos sequenciais, a saber: latches
e flip-flops SR e D, e flip-flops JK e T; enquanto tal, ela não traz nada de novo, é um ponto de chegada deste
itinerário – e, ao mesmo tempo, um ponto de partida para o que aí vem…
Para cada um, apresentam-se:
● A Tabela de Verdade/Mapa de Karnaugh da sua saída (que é o estado seguinte ‘Q(t+1)’), em função do estado
actual, ‘Q(t)’, e das entradas específicas de cada latch ou flip-flop…
● A equação característica, que é a expressão algébrica que se deduz do Mapa, exprimindo o estado seguinte
‘Q(t+1)’, como função do estado actual, ‘Q(t)’, e das entradas específicas de cada latch ou flip-flop…
● O Diagrama de Estados, que traduz sob forma gráfica a sua evolução temporal: para que estado seguinte é
que ele transita quando, estando originalmente em algum estado actual {‘0’ ou ‘1’}, lhe são aplicados valores
concretos nas entradas…
● A Tabela de Excitação, que indica quais os valores a aplicar nas entradas para lograr cada uma das quatro
transições possíveis: {‘0’→’0’}, {‘0’→’1’}, {‘1’→’0’} e {‘1’→’1’}…
Estes vários modos de caracterizar uma latch ou flip-flop são, como se referiu já, todos eles, importantes:
– o Mapa de Karnaugh e o Diagrama de Estados, porque a partir de qualquer deles se deduzem os outros;
– a Equação característica, que é a ela que um “espião” recorre para descobrir para que serve um Circuito;
– a Tabela de Excitação, que é a ela que um Projectista recorre para desenhar um Circuito Sequencial.
Todos eles são aplicáveis a latches e flip-flops; consoante a maneira como reagem a uma alteração nalguma
entrada, há a considerar as seguintes variedades:
– Latch não controlada: a saída pode mudar em qualquer momento;
– Latch controlada: a saída pode mudar enquanto a entrada enable estiver activa,
– Flip-flop: a saída pode mudar só quando o valor na entrada clock muda – ou, no calão aplicável, no flanco de
comutação (descendente ou ascendente) do relógio; existem duas variantes de flip-flops:
– Flip-flop master-slave (pulse triggered): a saída depende dos valores que as entradas foram tendo ao
longo de todo o intervalo de tempo em que a entrada clock esteve activa (a seguir ao precedente flanco de
comutação do relógio);
– Flip-flop edge-triggered: a saída depende só dos valores que as entradas têm no instante preciso em que
ocorre o flanco de comutação do relógio.
(A menção “pode mudar” significa genericamente que, para uma combinação particular das entradas, o estado
seguinte pode vir a coincidir com o estado actual – portanto não dando azo a qualquer mudança de estado)
Em termos de aplicações,
– na síntese de circuitos sequenciais general purpose, os mais interessantes serão os flip-flops D e T:
– os flip-flops D estão especialmente vocacionados para concretizar registos (armazéns de informação);
– os flip-flops T estão especialmente vocacionados para concretizar contadores;
– já na síntese de circuitos sequenciais genéricos, quiçá os mais interessantes sejam os flip-flops JK e SR – mas
oportunamente se discutirão métodos de síntese ditos não-clássicos suportados em registos e contadores.
(Abra-se um parêntesis de explicação para advertências “Se sobrar tempo na aula…” neste e noutros slides:
Na sessão inicial, deixou-se subentendido que cada sessão se bastaria numa aula teórica de 1:30; na prática, nas
aulas ministradas pelo autor, o tempo útil acabou por se reduzir a 1:20 – já que os primeiros 10 minutos eram
gastos à espera que os mais de cem alunos viessem de outros pavilhões do campus universitário e se acomodassem.
Isso foi previsto a priori, pelo que a colecção de slides concernindo uma sessão foram desenhados para não
exceder esses 1:20 – mas slides há que foram anotados “Se sobrar tempo na aula…”: se, ao longo da exposição, a
audiência manifestasse dificuldade em acompanhar o assunto em questão, seria preferível gastar tempo em superá-
la, mesmo que isso levasse a “saltar” tais slides – que em rigor não introduzem novidade de maior)
Prof V Vargas, IST Flip-flops 26/11/13, Pg 18/22
Flip-flops / Análise de Circuitos com Flip-flops
Já se viu que a Equação característica é o instrumento usado para discernir o comportamento de um circuito
com latches; o mesmo vale para circuitos com flip-flops, como se pode testemunhar com o circuito ao lado.
● O circuito envolve um flip-flop JK e um flip-flop T – cujas entradas de relógio ‘C’ recebem impulsos da
mesma fonte, clk (e que por isso é dito de circuito síncrono); designem-se de ‘Q1’ e ‘Q0’ os respectivos estados.
● O primeiro passo na análise é escrever as expressões algébricas que traduzem o comportamento da saída do
circuito e das entradas dos flip-flops. O segundo passo é substituir as expressões das entradas dos flip-flops nas
respectivas equações características; resultam expressões que exprimem o estado seguinte dos flip-flops – em
função dos seus estados e da entrada ‘X’ no instante em que ocorre o flanco activo (no caso, ascendente) do clock.
● O terceiro passo é converter tais expressões nas Tabelas de Estado/Saída {Q1, Q0, Z} – que indicam, para
cada combinação das entradas internas e externas {Q1, Q0, X} num instante ‘t’, a saída ‘Z’ do circuito nesse
instante, e, a ocorrer em ‘t’ o flanco activo do relógio, os estados dos flip-flops no instante ‘t+1’ seguinte. Veja-se o
caso da primeira linha, em que {Q1=Q0=0}; substituindo estes valores nas expressões entretanto obtidas, obtém-se
Z= X , Q1(t+1)= X, Q0(t+1)=X; isto sugere inscrever ‘10’, ‘01’ e ‘01’ na primeira linha de ‘Z’, ‘Q1’ e ‘Q0’…
● O passo seguinte será aglutinar as duas Tabelas dos estados seguintes {Q1, Q0}, numa só Tabela, dita do
estado seguinte do circuito, ‘Q1Q0(t+1)’; veja-se o caso da primeira linha, em que, conforme X=0 ou X=1, assim
advém {Q1=0, Q0=0} ou {Q1=1, Q0=1}; aglutinar significa preencher a primeira linha da nova Tabela com ‘00’ e
‘11’, respectivamente nas colunas ‘X=0’ e ‘X=1’. Para as restantes linhas, a metodologia é a mesma…
A Tabela obtida pode reescrever-se numa outra em que cada par de bits ‘Q1Q0’ é entendido como o código
binário de um número, e ele é substituído pela representação desse número na base 10; essa Tabela descreve “para
que Estado” evoluem os Estados {‘0’, ‘1’, ‘2’ e ‘3’} do circuito, à medida que se vai alterando a entrada ‘X’.
● Resta desenhar o Diagrama de Estados: a cada estado, associa-se um círculo, etiquetado com um número ou
código binário; depois, traçam-se setas rotuladas, descrevendo graficamente a Tabela obtida. Veja-se a primeira
linha, relativa ao estado E=0: quando X=0, a saída é Z=1, e o estado seguinte será E=0; isso volve-se numa seta
dirigida do círculo ‘0’ para ele mesmo – rotulada por X=0/Z=1, ou, como o manda a lei do menor esforço, 0/1…
● Dado o Diagrama de Estados, advém trivial traçar o Diagrama Temporal da evolução do circuito, a partir de
algum estado, seja {Q1=0, Q0=1}, e à medida que ‘X’ varia e os impulsos de relógio se sucedem:
– o estado do circuito pode mudar só aquando do flanco activo do relógio; de facto, ele vem a mudar nos
instantes t2, t4, t5, t8: em t2, ingressa no estado ‘10’ (porquanto o estado é ‘01’ e X=1); em t4, ingressa em ‘11’ (pois
o estado é ‘10’ e X=0); em t5, reingressa em ‘10’; em t8, retorna a ‘11’ (pois o estado é ‘10’ e X=0)...
– já a saída ‘Z’ do circuito pode mudar quando muda ‘X’ ou quando muda o estado do circuito (no caso em
questão, quando ‘Q1’ se altera); com isso, os instantes em que ‘Z’ muda vêm a ser os seguintes: em t1, passa a ‘0’
(pois que, conquanto o estado se mantenha em ‘01’, ‘X’ advém ‘1’); em t2, passa a ‘1’ (pois que, embora ‘X’
continue ‘1’, o estado muda, para ‘10’; em t3, passa a ‘0’ (pois que, conquanto o estado continue em ‘10’, ‘X’
advém ‘0’); em t6, passa a ‘1’ (pois que, conquanto o estado continue em ‘10’, ‘X’ advém ‘1’); em t7, passa a ‘0’
(pois que, conquanto o estado continue em ‘10’, ‘X’ advém ‘0’).
Ao lado, detalham-se os eventos após ‘t1’: ‘X’ advém ‘1’ – com o que as entradas {K, J, T} se volvem ‘1’; com
isso, é expectável que os flip-flops venham a mudar de estado – faltando só que ocorra o flanco activo do relógio, o
que sucederá em ‘t2’; isso provoca alterações nas entradas {K, J, T}, porém sem que elas se repercutam nos
estados dos flip-flops! Em ‘t3’, ‘X’ advém ‘0’ – com o que as entradas {J, T} mudam de valor; é expectável que o
flip-flop ‘Q0’ mude de estado – bastando que ocorra o flanco activo seguinte, o que virá a suceder em ‘t4’…
Em ambos os casos, são patentes as duas fases a que o uso dos flip-flops obriga: antes de mais, aplicam-se-lhes,
nas respectivas entradas, os valores a que eles deverão reagir – e só depois se força o flanco activo do relógio…
Ora, os fabricantes de circuitos integrados explicitam valores temporais que há que ter em conta no desenho de
circuitos: para que os flip-flops funcionem como se quer,
● as entradas {S, R, J, K, T, D} dos flip–flops têm que estar estáveis ao menos TSetUp (abreviadamente, Tsu)
segundos antes do flanco activo do relógio; a esse tempo TSetUp, dá-se o nome de Tempo de preparação;
● e essas mesmas entradas têm que continuar estabilizadas até pelo menos THold (abreviadamente, Th) segundos
depois desse flanco; a esse tempo THold, dá-se o nome de Tempo de manutenção.
Se isso não for garantido para algum flip-flop, o fornecedor não se responsabiliza pelo que irá suceder: o flip-
flop pode entrar num assim designado estado meta-estável – cujo futuro é uma incógnita…
Prof V Vargas, IST Flip-flops 26/11/13, Pg 20/22
Flip-flops / Frequência Máxima do Relógio (clock)
Considere-se o logigrama ao lado. A entrada ‘C’ é dita de relógio/clock porquanto a sequência de bits ‘0’→’1’
→‘0’→’1’…, que nela ocorre é, em muitas aplicações, periódica – este adjectivo significando que o intervalo de
tempo entre dois flancos de comutação consecutivos é constante. A esse intervalo dá-se o nome de período do
relógio, ‘T’. O seu inverso, 1/T, denomina-se de frequência de relógio – e em termos práticos indica quantos
impulsos de relógio se sucedem em cada unidade de tempo. Uma questão importante é: qual o menor período do
relógio, ‘T’, possível? – e, por consequência, qual o maior valor que pode ter a frequência de relógio, 1/T?
Para responder a esta questão, convirá observar detalhadamente o desenrolar dos acontecimentos desde que
ocorre um flanco de comutação do relógio até acontecer o flanco de comutação seguinte…
Quiçá a topologia conferida ao logigrama ao lado seja a mais apropriada para acompanhar esse historial: à
esquerda, encontram-se os flip-flops… e à sua direita encontra-se uma malha combinatória, com duas funções:
– por um lado, produzir a saída do circuito, ‘Z’;
– por outro lado, produzir os novos valores a aplicar nas entradas {J, K e T} dos flip-flops – e que são
responsáveis pelas mudanças dos estados a acontecer no próximo flanco de comutação do relógio…
Suponha-se, então, que, em dado momento, ocorre um flanco de comutação do relógio…
– e admita-se que, então, as entradas dos flip-flops são tais que as respectivas saídas {Q1 e/ou Q0} irão mesmo
mudar; ora, isso não será instantâneo: para que as saídas adquiram os seus novos valores, será preciso aguardar um
certo tempo de propagação, tpLH ou tpHL – contado a partir do momento em que ocorre o flanco de comutação;
– mas a alteração dessas saídas significa que poderão mudar as saídas da malha combinatória – em particular,
poderão mudar as que produzem os novos valores a aplicar às entradas dos flip-flops; de novo, isso não será
instantâneo: para que as entradas dos flip-flops adquiram os seus novos valores, haverá que esperar um certo tempo
de propagação, tpLH ou tpHL – contado a partir do momento em que mudaram as saídas dos flip-flops;
– quando isso enfim acontecer, ainda assim não poderá logo ocorrer o próximo flanco de comutação: será
preciso aguardar um certo tempo de preparação, tsu – contado a partir de quando mudaram as entradas dos flip-
flops –, em que essas entradas têm que permanecer estáveis, para que ocorra o próximo flanco de comutação.
Globalmente, pois, há que deixar decorrer, entre dois flancos de comutação consecutivos, um tempo total – que
será uma soma onde entram o tempo de propagação dos flip-flops, o tempo de propagação da malha combinatória
e o tempo de preparação dos flip-flops (adiante, esta asserção será enunciada com mais exactidão).
Isto significa que, face a um circuito concreto, há que conhecer parâmetros temporais que os pertinentes
catálogos associam aos integrados que referem, e de que se dão ao lado alguns exemplos.
Ora, estes parâmetros são omissos quanto à malha combinatória – em particular a que produz os feedbacks que
alimentam as entradas dos flip-flops: requerem-se operações aritméticas… Há que calcular o tempo de propagação
total associado a cada feedback entre uma das saídas dos flip-flops e uma das respectivas entradas: sucessivamente,
– qual o tempo total associado aos feedbacks entre as saídas {Q1 e Q0} e a entrada ‘T’ do flip-flop-0?
– qual o tempo total associado aos feedbacks entre as saídas {Q1 e Q0} e a entrada ‘J’ do flip-flop-1?
– qual o tempo total associado aos feedbacks entre as saídas {Q1 e Q0} e a entrada ‘K’ do flip-flop-1?
Na prática, cada questão volve-se em discernir, mentalmente, um caminho de feedback – vidé ao lado –, que
será sempre (se existente) aquele que interliga uma saída fonte {Q1 ou Q0} a uma entrada destino {J, K ou T}; e
adicionar os tempos de propagação individuais das gates que fazem parte desse caminho – e, mais ainda, os
tempos de propagação do flip-flop fonte e o tempo de preparação do flip-flop destino…
Considere-se, por exemplo, o tempo total associado ao feedback entre a saída ‘Q0’ e a entrada ‘T’ do flip-flop-0.
Ele vem a ser a soma do tempo de propagação do flip-flop T, dos tempos de propagação do AND e do OR, e do
tempo de preparação do flip-flop T – que resulta 90 ns (nano-segundos). O que isto significa é que, entre dois
flancos de comutação consecutivos do relógio, tem que mediar pelo menos 90 ns…
Procedendo similarmente para calcular os tempos totais associados a todos os feedbacks entre saídas e entradas
dos flip-flops, chega-se a uma lista de valores: 90, 100, 80 e 65 ns… Daqui, conclui-se que, entre dois flancos de
comutação consecutivos do relógio, tem que mediar pelo menos um período mínimo T=100 ns: ele é o valor que
cobre todos aqueles que a lista apresenta – e que, não por acaso, é o tempo total associado ao feedback mais lento.
A maior frequência de relógio a que o circuito poderá operar será, então, 1/(100 10-9
)=107 ciclos/seg=10 MHz
(Constata-se que se ignorou tHold, o intervalo de tempo em que as entradas dos flip-flops têm de permanecer
estáveis após o flanco de comutação: o tempo de propagação dos flip-flops, tpLH ou tpHL, já o excede… pelo que o
único cuidado a garantir é que a entrada externa ‘X’ continue estável ao menos tHold após o flanco de comutação)
Prof V Vargas, IST Flip-flops 26/11/13, Pg 22/22
Flip-flops / Culinária: como fazer Flip-flops com Flip-flops?
Com esta sessão dedicada a flip-flops, finda a abordagem aos tijolos básicos próprios a circuitos sequenciais, e
finda também a Parte II deste itinerário. A parte III será toda ela dedicada ao desenho (ou, sob uma outra
designação comum, síntese) de circuitos sequenciais; entretanto, e a modos de preliminares, não será desperdício
de tempo dedicar algum tempo à síntese de um tipo simples de circuitos sequenciais: os próprios flip-flops…
Em si, isso já foi feito: recorde-se o desenho da Latch D a partir da Latch SR, ou o do flip-flop T a partir de um
flip-flop JK, ou, com uma ênfase especial, o desenho do flip-flop JK a partir do flip-flop SR (ambos master-slave) –
ao longo de 5 passos… Na altura, ele foi explicitamente sublinhado como o método geral para a síntese de
Circuitos Sequenciais (síncronos) – mas haverá casos simples, em que ele é dispensável, bastarão equações
características, vidé adiante…
O desafio é passar em revista os vários flip-flops considerados {SR, D, JK e T}, cujas equações características
se recordam ao lado, e concretizá-los a partir de qualquer um dos outros. Nomeadamente:
– eis o primeiro problema: como concretizar um flip-flop D a partir de um flip-flop JK – ou, por outras palavras,
e supondo que se dispõe de um flip-flop JK, que é que se deve ligar às suas entradas para obter um flip-flop D?
Confrontando as respectivas equações características, esta pergunta é equivalente a: que é que se deve ligar às
entradas {J e K} para que a expressão do estado seguinte, ‘Q(t+1)’ se transforme na de um flip-flop D, Q(t+1)=D? A
resposta – sob a forma de expressões de {J e K} em termos de ‘D’ – encontra-se ao lado, tal como o subsequente
logigrama;
– o problema inverso será o seguinte: como concretizar um flip-flop JK a partir de um flip-flop D – ou, por
outras palavras, que é que se deve ligar à entrada ‘D’ para que a expressão do estado seguinte, ‘Q(t+1)’ se transforme
na de um flip-flop JK? A resposta – sob a forma de expressões de ‘D’ em termos de {J e K} (e de ‘Q’) – encontra-
se ao lado, tal como o subsequente logigrama;
– um problema semelhante será: como concretizar um flip-flop T a partir de um flip-flop JK – ou, por outras
palavras, que é que se deve ligar às entradas {J e K} para que a expressão do estado seguinte, ‘Q(t+1)’ se transforme
na de um flip-flop T? A resposta – sob a forma de expressões de às entradas {J e K} em termos de 'T’ – encontra-se
ao lado, tal como o subsequente logigrama;
– eis outros problemas similares, cujas respostas se deixam ao leitor:
– como concretizar um flip-flop SR ou T a partir de um flip-flop D ?
– como concretizar um flip-flop SR ou D ou JK a partir de um flip-flop T ?
– como concretizar um flip-flop T a partir de um flip-flop SR ?