prof v vargas, ist flip-flops 26/11/13, pg...

22
Prof V Vargas, IST Flip-flops 26/11/13, Pg 1/22

Upload: lykien

Post on 09-Nov-2018

212 views

Category:

Documents


0 download

TRANSCRIPT

Prof V Vargas, IST Flip-flops 26/11/13, Pg 1/22

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 3/22

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 5/22

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 7/22

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 9/22

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 11/22

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 13/22

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 15/22

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 17/22

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 19/22

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 21/22

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 ?