• Nenhum resultado encontrado

Cap 9

N/A
N/A
Protected

Academic year: 2021

Share "Cap 9"

Copied!
31
0
0

Texto

(1)

CAPÍTULO 9

LATCHES E FLIP-FLOPS

Latches e flip-flops são dispositivos básicos de memorização, que permitem a implementação de memórias e registros e são usados na grande maioria dos circuitos digitais, desde simples contadores até grandes sistemas com processadores.

Dispositivos de memorização e circuitos que os utilize são circuitos sequenciais, ou seja, são circuitos em que somente a combinação de valores aplicados às suas entradas não são mais suficientes para determinar o valor das saídas. A sequência de sua aplicação passa a ser um fator determinante.

9.1 LATCH ASSÍNCRONO

Considere os dois inversores em malha fechada apresentado na Figura 1. Se Q=1 então Q=0, que por sua vez garante Q=1. Por outro lado se Q=0então Q=1, que por sua vez garante Q=0. Enquanto estiver energizado, o circuito mantém uma das duas condições.

Figura 9.1 – Dois inversores em malha fechada.

Considere agora a retroalimentação utilizando de portas lógicas Não-Ou, como apresentado em duas formas na Figura 9.2, que formam um latch.

Figura 9.2 – Latch SR por meio de portas Não-Ou.

1 2 1 2 Q Q 1 2 3 1 2 3

Q

Q

R

S

1 2 3 1 2 3

Q

R

S

Q

(2)

Considere a seguinte sequência de aplicação de sinais no latch anterior:

1. S = 1 e R = 0, a saída torna-se Q = . Isto ocorre pois se S = 1, tem-se 1 Q = , 0

independente de Q . Se Q = e R = 0, então 0 Q= . Este valor de 1 Q = , por 1

sua vez, é capaz de garantir Q =0, independente de S.

2. S = 0 e R = 0, a saída preserva Q= . Mesmo mudando de S = 1 para S = 0, 1 1

Q = ainda é capaz de manterQ = , independente de S. Se 0 Q = e R = 0, 0

então Q= . 1

3. S = 0 e R = 1, a saída torna-se Q = . Isto ocorre pois se R = 1, tem-se 0 Q = , 0

independente de Q. Se Q= e S = 0, então 0 Q = . Este valor de 1 Q=1, por sua vez, é capaz de garantir Q= independente de R. 0

4. S = 0 e R = 0, a saída preserva Q= . Mesmo mudando de R = 1 para R = 0, 0 0

Q = ainda é capaz de manterQ = , independente de R. Se 1 Q= e R = 0, 1

então Q = . 0

5. S = 1 e R = 1, as saídas tornam-se Q = e 0 Q = . Isto retrata uma situação 0

proibitiva pois Q=Q.

De forma resumida, tem-se:

Sequência S R Q Q 1 1 0 1 0 2 0 0 1 0 3 0 1 0 1 4 0 0 0 1 5 1 1 0 0

Observe que nas sequências 1 e 3, valores definidos de entrada resultaram em saídas únicas, caracterizando um circuito combinacional. Entretanto, nas sequências 2 e 4, os valores iguais de entrada resultaram em saída distintas. As saídas desses instantes correspondem exatamente aos valores imediatamente anteriores, e que, portanto foram preservados, isto é, a saída da sequência 1 fica preservada na sequência 2, e a saída da sequência 3 fica mantida na sequência 4. O instante 5 representa uma situação proibitiva e nunca deverá ser permitida.

A operação de um latch pode ser representada pela Tabela 9.1 onde Q+ representa o instante de tempo seguinte à aplicação de valores nas entradas.

(3)

Tabela 9.1 – Operação do latch SR.

S R Q Q+ Descrição Operação

1 0 0 1

S = 1 e R = 0 Torna Q= 1

1 0 1 1

0 0 1 1 S = 0 e R = 0 Mantém o estado anterior

0 1 0 0

S = 0 e R = 1 Torna Q = 0

0 1 1 0

0 0 0 0 S = 0 e R = 0 Mantém o estado anterior

1 1 0 0 S = 1 e R = 1 Condição Imprópria

A Tabela 9.2 apresenta as mesmas informações da tabela anterior, porém de forma resumida. Essa tabela é de vital importância e será usada como base na obtenção de outras tabelas.

Tabela 9.2 – Operação resumida do latch SR.

S R Q+

0 0 Q

0 1 0

1 0 1

1 1 -

Uma vez conhecida a operação do latch, podem-se determinar os valores de saída esperados em função dos valores das entradas e dos valores previamente armazenados. Da mesma forma, podem-se descrever os valores necessários de entrada para se obter uma saída desejada.

Assim, sendo a saída Q= e desejando-se que o estado seguinte seja 0 Q+ =0, pode-se entender que a saída deverá ser mantida (S = R=0), ou pode-se considerar que a saída deverá ir para 0 (S =0e R=1). Nesse caso, basta S =0, independente da condição de R, isto é, R pode assumir qualquer valor, ou seja, S =0 e R=−. De forma similar observa-se que sendo a saída Q = e desejando-se que o estado seguinte seja 1 Q+ =1, então pode-se considerar que a saída deverá ser mantida (S=R=0), ou pode-se entender que a saída deverá ir para 1 (S =1e R=0). Portanto, basta R =0, independente da condição de

S, isto é, S pode assumir qualquer valor, ou seja, S =−e R=0.

Para passar a saída de Q = para 0 Q+ =1, existe somente a combinação S =1e

0 =

R . Finalmente, para mudar a saída de Q= para 1 Q+ =0, existe somente a combinação

0 =

S e R=1. Essa análise pode ser condensada em uma tabela de transição, como mostra a Tabela 9.3.

(4)

Tabela 9.3 – Tabela de transição do latch SR. Q Q+ S R 0 0 0 - 0 1 1 0 1 0 0 1 1 1 - 0

Uma outra forma de se implementar um latch SR é por meio de portas lógicas Não-E, como mostrado na Figura 9.3. Este latch apresenta o mesmo comportamento do latch anterior e, portanto apresenta a mesma tabela resumida, e consequentemente a mesma tabela de transição.

Figura 9.3 – Latch SR por meio de portas Não-E.

A operação desse circuito é dada por:

1. Para S = 1 e R = 0, tem-se que S =0 e R=1 visto que as portas A e B funcionam como inversores. Assim, tem-se Q = pois X = 0. Sendo 1 Q= e 1

0

Y = , tem-se então Q = . 0

2. Para S = 0 e R = 0, tem-se que S =1 e R=1. Para a porta C os valores das

entradas são X = e 1 Q =0(condição anterior) preservando assim Q=1. Da mesma forma, para a porta D os valores das entradas são Y = e 1 Q =1(condição anterior) preservando Q = 0.

3. Para S = 0 e R = 1, tem-se que S =1 e R=0 visto que as portas A e B funcionam como inversores. Desta froma, tem-se Q = pois Y = 0. Sendo 1

1

Q = e X =0, então Q = . 0

4. Para S = 0 e R = 0, tem-se que S =1 e R=1. Para a porta C os valores das

entradas são X = e 1 Q = (condição anterior) preservando 1 Q = . Da mesma 0

forma, para a porta D os valores das entradas são Y = e 1 Q= (condição 0

anterior) preservando Q = . 1

5. Para S = 1 e R = 1, tem-se que S =0 e R=0, o que por sua vez força

1 = = Q

Q . Assim como no caso de latch usando portas Não-Ou, essa condição não é permitida. Q R S Q 1 2 3 1 2 3 1 2 3 1 2 3 S R A C B D

(5)

Para facilitar a representação de latches, usa-se a notação apresentada na Figura 9.4.

S R

Q Q

Figura 9.4 – Representação gráfica de um latch SR assíncrono. 9.1.1. Aplicações de Latches

Quando uma bola cai, normalmente ela bate no chão e por efeito elástico, sobe novamente, e volta a cair, porém atingindo cada vez uma altura menor. Um efeito similar a esse ocorre quando se fecha uma chave ou interruptor, que por ricocheteamento volta a abrir. Devido à mola, o interruptor volta a fechar, e eventualmente pode ocorrer um novo ricocheteamento. Este efeito é imperceptível para se acender uma lâmpada ou ligar um motor, mas pode causar problemas se for usado na entrada de um circuito digital.

Como um exemplo de aplicação de latch, considere o circuito de Figura 9.5, usado para eliminar o ricocheteamento de chaves. Estando a chave C na posição 1, tem-se L=0 e

R=1, e consequentemente Q = . Quando a chave passa para a posição 2, o nó U assume 0

valor 0 e o ponto S vai para 1, forçando Q=1. Pelo ricocheteamento, a chave pode momentaneamente ir para uma posição intermediária entre 1 e 2, fazendo com que o nó U assuma valor 1, tornando S igual a 0. Essa condição não causa mudança em Q. Desta forma, a saída fica imune aos ricocheteamentos, como indicado na Figura 9.6. Assim a saída Q fica imune às mudanças de estado sentidas em S.

S R Q Q Vcc Vcc 1 2 C U L

(6)

S

Q

Figura 9.6 – Exemplo de eliminação de ricocheteamento. 9.2 LATCH SÍNCRONO

Uma grande desvantagem do latch anterior é que mudanças indesejadas nas entradas

S e R podem causar mudanças nas saídas. Para evitar este inconveniente, usa-se uma linha

adicional de controle, a linha de Clock, como apresentado na Figura 9.7.

Figura 9.7 – Circuito usado para eliminação de ricocheteamento.

Observe pela figura que se a linha Clock estiver em nível lógico alto, isto é,

1 =

Clock , o latch apresenta operação normal, como visto anteriormente. Por outro lado, se a linha Clock estiver em nível lógico baixo, isto é, Clock =0, tem-se que X = 1 e Y = 1, e o latch preserva a última informação armazenada (como se estivesse com S = 0 e R = 0). Em outras palavras, Clock =1 assegura operação normal ao latch e Clock =0 desabilita-o. Para facilitar a representação de latches síncronos, usa-se a notação mostrada na Figura 9.8.

S

R

Q

Q Clock

Figura 9.8 – Representação gráfica de um latch SR síncrono. Resumidamente, tem-se:

• Clock = 0 ⇒ as entradas estão inibidas e o latch mantém a última informação. • Clock = 1 ⇒ as entradas estão habilitadas e o latch funciona normalmente.

S Q Q R 1 2 3 1 2 3 1 2 3 1 2 3 R S C B A D Clock

(7)

Para um bom entendimento da operação de um latch síncrono, considere como exemplo as formas de onda mostradas na Figura 9.9.

1 2 3 4 S R Clk Q S=R=1 Condição imprópria de operação

Figura 9.9 – Exemplo de operação de um SR síncrono.

No instante de tempo 1, em que Clk = 1, tem-se S = 1 e R = 0, portanto Q =1. No intervalo de tempo entre 1 e 2, quando Clk = 0, não há mudança de estado.

No instante de tempo 2, em que Clk = 1, tem-se inicialmente S = 0 e R = 1, portanto

0

Q = . A seguir passa-se a ter S = R = 0, e nesse caso o estado anterior é mantido. Na parte

final desse intervalo de tempo, tem-se S = 1 e R = 0, tornando novamente Q=1. No intervalo de tempo entre 2 e 3, quando Clk = 0 não há mudança de estado.

Já no instante de tempo 3, com Clk = 1, ocorre novamente S = 0 e R = 1, portanto

0

Q = . Na parte inicial do intervalo de tempo 4, ocorre S = R = 1 e, portanto não se pode

dizer qual é o valor da saída pois é uma condição imprópria de operação. A seguir tem-se 1

S = e R=0, portanto Q= . Essa condição é mantida quando 1 S =R=0 e quando o sinal de clock retorna à zero.

9.3 ENTRADAS DIRETAS (ASSÍNCRONAS)

Eventualmente, pode ser necessário fazer o ajuste de um circuito síncrono sem o uso do sinal de clock. Como exemplo, tem-se o ajuste inicial de horas e minutos de um relógio digital.

Os latches podem incorporar essa funcionalidade de se estabelecer valores para as saídas, independente do sinal de clock. A Figura 9.10 ilustra uma possível implementação dessa funcionalidade. Os sinais Set e Reset são ativos por nível lógico baixo. Assim, se os sinais Set e Reset ficarem em nível lógico alto, eles não afetam em nada a operação do latch. Por outro lado, se Set=0, como pode ser observado pelo circuito, tem-se Q= . Se 1

(8)

por outro lado Reset=0 tem-se Q = . Entretanto não é possível a atuação simultânea 0

0 Set Reset= = .

Figura 9.10 – Exemplo de implementação de um latch com entradas assíncronas.

O símbolo usado para latches com entradas assíncronas é apresentado na Figura 9.11. Para indicar que as entradas Set e Reset são ativas por nível lógico baixo, há um círculo em cada uma para representar inversão lógica.

S R Q Q Clock Set Reset

Figura 9.11 – Representação gráfica de um latch SR síncrono com entradas assíncronas. Resumidamente, tem-se:

1. Reset =Set =1 ⇒ Operação normal do latch, 2. Set =0 Reset=1Q = , independente de Clk, 1

3. Set =0 Reset=0Q = , independente de Clk, 0

4. Reset =Set =0 ⇒ Condição não permitida

A quase totalidade de latches dispõe de entradas assíncronas, entretanto com o objetivo didático de simplificar os circuitos, os sinais Set e Reset serão desenhados somente quando necessário.

1 2 12 13 Clock Preset Y D B C 1 2 4 Q A Q 1 2 12 13 X S R Set 1 2 4

(9)

Para um bom entendimento da operação de um latch síncrono com entradas assíncronas, considere como exemplo apresentado na Figura 9.12.

1 2 3 4 S R Clk Q Reset Set

Figura 9.12 – Exemplo de operação de um SR síncrono com entradas assíncronas.

No instante de tempo 1, que corresponde às condições iniciais, tem-se Reset =0, portanto Q= . No instante de tempo 2, o Clk está ativo com S = 1, o que torna 0 Q= . A 1

seguir, no instante de tempo 3, o Clk está ativo com R = 1, causando Q = . Finalmente no 0

instante de tempo 4, tem-se Set =0, o que torna Q= . 1

9.4 LATCH D

A Figura 9.13 apresenta uma forma de implementação de latch D a partir de um latch SR. Observe que o sinal aplicado à entrada R é invertido em relação à entrada S.

S R Q Q Clock Q Q Clock D

Figura 9.13 – Implementação de latch D a partir latch SR.

Quando D = 0, tem-se S = 0 e R = 1, e portanto Q= . Por outro lado, se D = 1, 0

então S = 1 e R = 0, o que torna Q=1. Dessa forma, como se pode observar, o valor aplicado a D corresponde ao valor de Q. Como um mnemônico, pode-se considerar que D implica em Direto, isto é, o que for aplicado à entrada irá aparecer na saída. Obviamente essa condição só é válida na presença de sinal de clock.

(10)

A operação desse latch pode ser representada pela Tabela 9.4, onde Q+ representa o instante de tempo seguinte à aplicação do sinal de Clk.

Tabela 9.4 – Operação do latch D.

D Q Q+ Descrição Operação 0 0 0 D = 0 Torna Q=0 0 1 0 1 0 1 D = 1 Torna Q=1 1 1 1

A Tabela 9.5 apresenta as mesmas informações da tabela anterior, porém de forma resumida. Essa tabela é de vital importância e será usada como base na obtenção de outras tabelas.

Tabela 9.5 – Operação resumida do latch D.

D Q+

0 0

1 1

Uma vez conhecida a operação do latch D, podem-se determinar os valores de saída esperados em função dos valores das entradas. Da mesma forma, podem-se descrever os valores necessários de entrada para se obter uma saída desejada.

Assim, desejando-se que o estado seguinte da saída seja Q+ =0, deve-se aplicar

0 =

D . Da mesma forma, desejando-se que o estado seguinte da saída seja Q+ =1, basta aplicar D=1. Assim, deve-se aplicar na entrada D exatamente o valor que se deseja na saída Q, independente do valor presente de Q. Essa análise pode ser condensada em uma tabela de transição, como mostra a Tabela 9.6.

Tabela 9.6 – Tabela de transição do latch D.

Q Q+ D

0 0 0

0 1 1

1 0 0

1 1 1

(11)

D Q

Q Clock

Figura 9.14 – Representação gráfica de um latch D.

O latch anterior é ativo quando o sinal de clock está em nível lógico alto. Obviamente se for inserido um inversor na linha de clock, como indicado na Figura 9.15, a captura da informação só ocorrerá quando o sinal de clock estiver em nível baixo. Esse novo latch passa a ser a ser representado pelo símbolo também indicado na Figura 9.15. Observe o circulo na linha de clock, para indicar que é ativo por nível baixo.

D Q Q Clock Clock D Q Q D Q Q Clock

Figura 9.15 – Implementação de um latch D ativo por nível baixo e sua representação gráfica. 9.5 FLIP-FLOP D

Enquanto o sinal Clk estiver em nível alto, o latch D está habilitado e consequentemente os valores aplicados em suas entradas podem alterar o valor armazenado. Eventualmente essa condição pode não ser desejável para determinadas aplicações. Como exemplo, um determinado sinal pode sofrer transitórios ou alterações momentâneas antes de se estabilizar, e a captura dessas condições impróprias pode ser indesejável.

Uma possível forma de sanar essa inconveniência é fazer com que o armazenamento da informação ocorra somente em um curto intervalo de tempo. Essa forma de captura de informação é implementada por um flip-flop.

A Figura 9.16 ilustra a estrutura de um flop D. Como se pode observar, esse flip-flop D é composto por dois latches D.

(12)

D Q Q Clock Clock D D Q Q Clock Q Q 1 2

Figura 9.16 – Implementação de um flip-flop D.

Quando o sinal de entrada Clock está em nível alto, o latch 1 está ativo (seu Clock vale 1) e o latch 2 está inativo (seu Clock vale 0). Por outro lado, quando o sinal de entrada

Clock está em nível baixo, o latch 1 está inativo (seu Clock vale 0) e o latch 2 está ativo (seu Clock vale 1).

Assim, imediatamente antes do sinal de entrada Clock passar de 1 para 0, o valor que estiver presente na entrada do latch 1 será capturado e mantido. Imediatamente após o sinal de entrada Clock passar de 1 para 0, o valor armazenado no latch 1 é capturado pelo latch 2 visto que seu Clock agora vale 1, e consequentemente é apresentado na saída.

Dessa forma, pode-se afirmar que a informação presente na entrada D será capturada pelo flip-flop D exatamente no momento da transição de 1 para 0 do sinal de entrada Clock. Em outras palavras, a captura da informação ocorre somente no momento da transição negativa do sinal Clock. Essa transição de 1 para 0 do sinal Clock é chamada de rampa de descida do sinal de Clock, ou transição negativa do sinal Clock, ou ainda “edge negativo” do

Clock. O flip-flop D pode ser representado pela Figura 9.17. Como ele é ativo por rampa,

utiliza-se o triângulo (seta) na linha de clock. Por ser rampa de descida (edge negativo) adiciona-se o círculo para indicar inversão.

D Q

Q Clock

Figura 9.17 – Representação gráfica de um flip-flop D ativo por rampa de descida.

Para melhor entender a diferença entre um latch e um flip-flop, considere as formas de onda apresentadas na Figura 9.18. Os sinais D e Clock foram aplicados simultaneamente em um latch e em um flip-flop. A saída de um latch é denominada Qlatch e a saída de um

flip-flop corresponde a Qflip-flop. Durante o intervalo de tempo em que Clock está em nível

(13)

que fica armazenado é 1. No caso do flip-flop, a saída só sofre alguma mudança na rampa de descida do sinal de Clock, indicado por uma seta. Nesse momento, como D vale 1, a saída torna-se 1. Como se pode notar, a saída do flip-flop não captura as transições que ocorrem enquanto Clock vale 1.

Clock D

Qflip-flop

Qlatch

Figura 9.18 –Exemplo comparativo de operação entre latch D e flip-flop D.

A Figura 9.19 ilustra uma forma construtiva alternativa de um flip-flop D, empregada por alguns fabricantes. Este flip-flop é ativo por rampa de subida.

D D Q Q Clock Q Q Clock 1 2

Figura 9.19 – Implementação alternativa de um flip-flop D.

Quando Clock está em nível baixo, uma das entradas da porta E é 0 e a outra (via inversor) é 1. Quando o Clock está em nível baixo alto, uma das entradas da porta E é 1 e a outra (via inversor) é 0. Em ambos os casos a saída da porta E é zero e nada acontece com o latch.

Entretanto, imediatamente após o Clock passar de 0 para 1, e antes de o inversor mudar de estado, as duas entradas da porta E ficam momentaneamente em 1, e consequentemente a sua saída fica em 1. Essa saída em 1, mesmo que por um curot intervalo de tempo, é capaz de acionar o latch. Como o tempo em que a porta E fica em nível alto é muito curto, o efeito é o mesmo que se o acionamento fosse feito apenas na rampa de subida do sinal de clock.

(14)

O símbolo de um flip-flop D acionado por rampa de subida (edge positivo) é apresentado na Figura 9.20. Observe que é praticamente igual ao símbolo do flip-flop por rampa de descida, exceto pela ausência do círculo na linha de Clock.

D Q

Q Clock

Figura 9.20 – Representação gráfica de um flip-flop D ativo por rampa de subida. 9.6 FLIP-FLOP JK

A Figura 9.21 apresenta a implementação de um flip-flop SR ativo por rampa de descida a partir de lactes SR, e sua respectiva representação gráfica. O flip-flop SR apresenta a mesma forma de operação do latch SR, diferenciando apenas na forma de gatilhamento, isto é, o latch é ativo por nível e o flip-flop é ativo por rampa.

S Q Q Clock Clock S S Q Q Clock Q Q 1 2 R R R S Q Q Clock R

Figura 9.21 – Estrutura de um flip-flop SR ativo por rampa de descida e sua representação gráfica. A grande deficiência do latch SR (e também do flip-flop SR) é não permitir a aplicação simultânea de S=R=1. Isto pode ser um agravante na sua utilização em alguns circuitos em que essa combinação venha a ocorrer Para solucionar essa limitação foi criado o flip-flop JK, cujo circuito é apresentado na Figura 9.22.

S Q Q Clock Q R J K Clock Q 1 2

(15)

Para melhor entender a operação do flip-flop JK, considere a situação apresentada na Figura 9.23, onde se aplicou J =0 e K = . Se o estado inicial da saída for 1 Q = então, 1

através da realimentação, as entradas S e R recebem 0 e 1, respectivamente. Isso leva a saída para 0, como indicado pelos sinais em verde na figura. Se o estado inicial for Q= , então, 0

através da realimentação, as entradas S e R recebem 0 e 0, respectivamente e, portanto nada acontece com a saída. Resumindo, J =0 e K = , tornam 1 Q = . 0

S Q Q Clock Q R 0 J K 1 Q 1→0 1 0 0→1 0 1 0 0 1 2

Figura 9.23 – Exemplo de operação flip-flop JK para J =0 e K =1.

A situação oposta acontece quando se aplica J =1 e K =0, tornando Q= como 1

indicado na Figura 9.24. 1 0 0 1→0 1 0→1 0 0 0 1 S Q Q Clock Q R J K Q 1 2

Figura 9.24 – Exemplo de operação flip-flop JK para J =1 e K =0.

É fácil perceber que se J =K =0, ocorrerá S =R=0 e, portanto a informação anterior será mantida. Até o momento, a operação do flip-flop JK é exatamente igual à do flip-flop SR.

Considere agora a aplicação de J =K =1, como indicado na Figura 9.25. Observe que quando Q= , a realimentação promove 1 S =0 e R= , forçando 1 Q= (condição 0

indicada em verde). Por outro lado quando Q= , a realimentação promove 0 S =1 e R=0, forçando Q= (condição indicada em vermelho). Assim, quando 1 J =K =1, a saída muda de estado.

(16)

1 1 1→0 1 0 0→1 1→0 0→1 0 1 S Q Q Clock Q R J K Q 1 2

Figura 9.25 – Exemplo de operação flip-flop JK para J =1 e K =1.

Resumindo, o flip-flop JK opera de forma igual ao flip-flop SR, sendo S equivalente a J e R equivalente a K. A diferença entre eles é que se pode aplicar J =K =1, o que faz com que a saída mude de estado. A Tabela 9.7 apresenta essa operação do flip-flop JK.

Tabela 9.7 – Operação do flip-flop JK.

J K Q Q+ Descrição Operação

0 0 0 0

J = 0 e K = 0 Mantém o estado anterior

0 0 1 1 0 1 0 0 J = 0 e K = 1 Torna Q=0 0 1 1 0 1 0 0 1 J =1 e K = 0 Torna Q= 1 1 0 1 1 1 1 0 1

J = 1 e K = 1 Inverte o estado anterior

1 1 1 0

A Tabela 9.8 apresenta as mesmas informações da tabela anterior, porém de forma resumida. Essa tabela é de vital importância e será usada como base na obtenção de outras tabelas.

Tabela 9.8 – Operação resumida do flip-flop JK.

J K Q+

0 0 Q

0 1 0

1 0 1

1 1 Q

Uma vez conhecida a operação do latch, podem-se descrever os valores necessários de entrada para se obter uma saída desejada. A Tabela 9.9 apresenta esses valores.

(17)

Tabela 9.9 – Tabela de transição do flip-flop JK. Q Q+ J K 0 0 0 - 0 1 1 - 1 0 - 1 1 1 - 0

Assim, estando a saída Q = e desejando-se que o estado seguinte seja 0 Q+ =0, então pode-se considerar que a saída deverá ser mantida (J =K =0), ou pode-se considerar que a saída deverá ir para 0 (J =0e K = ). Nesse caso, basta que 1 J =0, independente de

K, isto é, J =0 e K =−. Por uma análise similar conclui-se que estando a saída Q= e 1

desejando-se que o estado seguinte seja Q+ =1, então pode-se considerar que a saída deverá ser mantida (J =K =0), ou pode-se considerar que a saída deverá ir para 1 (J =1 e

0

K = ). Assim, basta que K =0, independente de J, isto é, J =− e K =0.

Para passar a saída de Q = para 0 Q+ =1, pode-se considerar que a saída deverá a saída deverá ir para 1 (J =1 e K =0) ou ser invertida (J = K =1), assim, deve-se ter

1

J = , independente de K, isto é, J =1 e K =−. Finalmente, para passar a saída de Q = 1

para Q+ =0, pode-se considerar que a saída deverá a saída mudar para 0 (J =0 e K = ) 1

ou ser invertida (J =K =1), assim, deve-se ter K = , independente de J, isto é, 1 J =− e

1 K = .

O símbolo do flip-flop JK (ativo por rampa de descida) é apresentado na figura a seguir. Obviamente pode haver também flip-flop JK ativo por rampa de subida.

Q

Q Clock J

K

Figura 9.26 – Representação gráfica de um flip-flop JK ativo por rampa de descida.

O flip-flop anterior foi implementado à partir de um flip-flop SR. A Figura 9.27 ilustra uma implementação alternativa, a partir do flip-flop D. Vale ressaltar que a operação é exatamente a mesma do outro flip-flop JK já explanado.

(18)

D Q Q Clock J K Q Q Clock 2 2 2

Figura 9.27 – Implementação alternativa de um flip-flop JK utilizando flip-flop D.

Seguindo o mesmo conceito utilizado na implementação alternativa do flip-flop D da Figura 9.19, pode-se implementar um flip-flop JK utilizando um latch SR, como indicado na Figura 9.28. S Q Q Q R J K Q Clock

Figura 9.28 – Implementação alternativa de um flip-flop JK utilizando latch SR. 9.7 FLIP-FLOP JK MESTRE-ESCRAVO

O flip-flop ativo por rampa é sensível apenas no momento da rampa do sinal de Clock, isto é, quaisquer sinais que não estejam presentes no momento da rampa são ignorados. Entretanto existem situações onde necessita-se capturar a informação, mesmo que ocorrendo antes da rampa do Clock. Essa dificuldade pode ser sanada com o uso de um flip-flop escravo. A Figura 9.29 ilustra a implementação de um flip-flop JK mestre-escravo através de latches SR, e a Figura 9.30 apresenta sua representação gráfica onde aparece a notação MS (Master Slave – Mestre Escravo).

(19)

S Q Q Clock R J K Clock S Q Q Clock R Q Q MESTRE ESCRAVO 1 2

Figura 9.29 – Implementação de um flip-flop JK mestre-escravo.

Q Q Clock J K MS

Figura 9.30 – Representação gráfica de um flip-flop JK mestre-escravo. A operação, de forma resumida é dada por:

Clock = 1 Mestre ativo e escravo inativo → mestre faz a captura da informação Clock = 0 Mestre inativo e escravo ativo → escravo apresenta a informação

Para entender a operação do flip-flop JK mestre escravo, considere a forma de onda da Figura 9.31. Clock K QEscravo QMestre J 1 2

(20)

Para Clock = 1, e entradas J =0 e K =0, sendo o estado inicial 0

= = Escravo

Mestre Q

Q , então através da realimentação as entradas SMestre e RMestre recebem 0 e 0, respectivamente. Isso não causa nenhuma mudança em QMestre. Entretanto, quando as entradas se tornarem J =1 e K =0 (instante de tempo 1), através da realimentação, as entradas SMestreeRMestre recebem 1 e 0, respectivamente, tornando QMestre =1. Mesmo que se tenha J =0 e K =1 (instante de tempo 2), não há novas mudanças pois através da realimentação SMestre e RMestre recebem 0 e fica mantido QMestre =1.

Essa é a principal característica desse flip-flop, isto é, mesmo que haja novas mudanças nas entradas, QMestre continua em 1. Quando Clock = 0, o mestre fica inativo e o escravo torna-se ativo, e nesse caso, o escravo armazena e apresenta a informação do mestre, ou seja, tem-se Q = 1.

9.7.1. Análise Simplificada

Com base nas observações anteriores, pode estabelecer a forma de análise simplificada para o flip-flop JK ME:

• Para Clock = 1, se houver pelo menos uma combinação de entradas que mude o estado da saída, ela irá mudar quando Clock passar de 1 para 0.

Para melhor entender as diferenças de operação entre um flip-flop JK ativo por rampa de descida e um flip-flop JK ME, considere as formas de onda da Figura 9.32, onde

QJK↓ representa a saída de um flip-flop JK ativo por rampa de descida e QJK-ME representa a saída de um flip-flop JK mestre-escravo.

1 2 3 4 S R Clk QJK QJK-ME

(21)

No intervalo de tempo 1, tem-se somente S =1 e R=0, e as operações dos dois flip-flops são iguais. No intervalo de tempo 2, tem-se somente S =0 e R=1, e as operações dos dois flip-flops também são iguais.

No intervalo de tempo 3, deve-se observar se há as combinações S =1 e R=0 ou

1 =

S e R=1 para fazer a saída QJK-ME mudar de 0 para 1. Como existe pelo menos uma dessas combinações, a saída irá mudar. Na verdade cada combinação ocorre três vezes. Vale a pena estressar que não interessa se há mais de uma combinação. Havendo pelo menos uma, a saída irá mudar. Por outro lado, na rampa de descida de Clock tem-se S =0 e R=1

e portanto QJK↓ = 0, ou seja não há mudança.

Finalmente, no intervalo de tempo 4, deve-se observar se há as combinações S =0 e

1 =

R ou S =1 e R=1 para fazer a saída QJK-ME mudar de 0 para 1. Como existe pelo menos uma dessas combinações, a saída irá mudar. Na verdade a combinação S =0 e R=1

ocorre duas vezes e a combinação S =1 e R=1 ocorre uma única vez. Lembrando novamente que não interessa se há mais de uma combinação. Havendo pelo menos uma, a saída irá mudar. Por outro lado, na rampa de descida de Clock tem-se S =0 e R=0 e portanto fica mantido QJK↓ = 0.

Desta forma fica clara a diferença entre os dois tipos de flip-flop. No flip-flop JK ativo por rampa de descida, leva-se em conta somente o momento da rampa de descida de

Clock. No flip-flop JK mestre-escravo deve-se observar todo o intervalo de tempo em que Clock está em nível alto.

9.8 FLIP-FLOP T

Quando se juntam as entradas J e K, como indicado na Figura 9.33, tem-se um flip-flop T. A Figura 9.33 também apresenta a sua representação gráfica.

Q Q Clock J K Q T Clock T Q Q Clock

(22)

Estando a entrada T em 0, implica que as entradas JK estão em 0, e o flip-flop mantém o estado anterior. Por outro lado, se a entrada T está em 1, implica que as entradas JK estão em 1, e o flip-flop inverte sua saída. A sua operação pode ser representada pela tabela a seguir. Como um mnemônico, pode-se considerar que T implica em Troca*, assim se for aplicado 1 à sua entrada, a saída irá mudar de estado. Na verdade T vem de toggle (troca em Inglês). Obviamente essa condição só é válida na presença de sinal de clock.

A operação desse flip-flop pode ser representada pela Tabela 9.10, onde Q+ representa o instante de tempo seguinte à aplicação do sinal de Clk.

Tabela 9.10 – Operação do flip-flop T.

T Q Q+ Descrição Operação 0 0 0 T = 0 Mantém a saída 0 1 1 1 0 1 T = 1 Troca a saída 1 1 0

A Tabela 9.11 apresenta as mesmas informações da tabela anterior, porém de forma resumida. Essa tabela é de vital importância e será usada como base na obtenção de outras tabelas.

Tabela 9.11 – Operação resumida do flip-flop T.

T Q+

0 Q

1 Q

Uma vez conhecida a operação do flip-flop T, podem-se determinar os valores de saída esperados em função dos valores da entrada. Da mesma forma, podem-se descrever os valores necessários de entrada para se obter uma saída desejada.

Desta forma, estando a saída Q = e desejando-se que o estado seguinte seja 0

0 =

+

Q , assim como estando a saída Q =1 e desejando-se que o estado seguinte seja 1

=

+

Q então pode-se considerar que a saída deverá ser mantida e portanto T =0. Por outro lado, estando a saída Q = e desejando-se que o estado seguinte seja 0 Q+ =1, ou estando a saída Q =1 e desejando-se que o estado seguinte seja Q+ =0então pode-se considerar que a saída deverá mudar e portanto T =1. Essa análise pode ser condensada em uma tabela de transição, como mostra a Tabela 9.12.

(23)

Tabela 9.12 – Tabela de transição do flip-flop T. Q Q+ T 0 0 0 0 1 1 1 0 1 1 1 0

A Figura 9.34 apresentada duas forma alternativas de implementação de flip-flop T, a partir de flip-flop D e a partir de flip-flop SR, respectivamente.

D Q Q Clock Q Q T Clock S Q Q Clock 1 R 2 T Clock Q Q

Figura 9.34 – Formas alternativas de implementação de flip-flop T. 9.9 TEMPORIZAÇÃO

Os latches e flip-flops são constituídos por portas lógicas (implementadas por transistores) ou diretamente com transistores, e consequentemente apresentam atrasos em sua operação. Assim, para garantir a sua correta operação, algumas restrições de tempo ou temporizações devem ser obedecidas.

Da mesma forma, após a aplicação do sinal de clock, os flip-flops e latches demoram até que a resposta esteja disponível e estável na saída, e portanto apresentam tempos de propagação.

As principais temporizações e o tempo de propagação são definidos por:

• tSU Tempo de acomodação ou set up time – tempo mínimo em que as entradas

síncronas devem estar estáveis antes do sinal de clock.

• tH Tempo de manutenção ou hold time – tempo mínimo em que as entradas

síncronas devem permanecer estáveis após o sinal de clock.

• tCLKH Tempo mínimo de clock em nível alto ou minimum clock high time – tempo

mínimo do sinal de clock em nível alto.

• tCLKL Tempo mínimo de clock em nível baixo ou minimum clock low time – tempo

(24)

• tCO Tempo de propagação ou clock-to-output delay – tempo até a saída responder

após a aplicação do sinal de clock.

A Figura 9.35 ilustra as temporizações e o tempo de atraso para um flip-flop D ativo por rampa de descida. Os mesmos conceitos são válidos para outros tipos flip-flops e latches. Clk D Q tSU tH tCLKL tCLKH tCO

Figura 9.35 – Tempos de atraso e de propagação em flip-flop tipo D.

A Tabela 9.13 apresenta como exemplo os valores de tempos de atraso e de propagação internos da família de FPGAs Cyclone II do fabricante Altera.

Tabela 9.13 – Tempos de atraso e de propagação internos da Altera Cyclone II (em picosegundos).

tSU tH tCO tCLKL tCLKH

35 170 255 252 249

Essa temporização permite algumas considerações importantíssimas. Primeiramente, a informação é capturada pelo flip-flop no momento do clock, e consequentemente a informação deve estar estável nesse instante. Segundo, o flip-flop demora um certo tempo para apresentar em sua saída a informação capturada.

Para melhor apreciar essa segunda consideração, observe o circuito da Figura 9.36. Considere que o estado inicial de todos flip-flops é 0.

(25)

D0 Q0 1 Clk 2 3 1 0 Q0 D1 Q1 Q1 D3 Q3 Q3 D2 Q2 Q2

Figura 9.36 – Registrador para observação de temporização em flip-flops.

Admitindo que no momento da ocorrência do primeiro pulso de Clk tem-se D0 =1 e 0

3 2

1 =D =D =

D , as saídas passam a valer Q0 =1 e Q1 =Q2 =Q3 =0 após o tempo de

propagação, conforme indicado na Figura 9.37.

Clk

Q0 Q1 Q2 Q3

Figura 9.37 – Diagrama de tempo do circuito da Figura 9.36.

No momento da ocorrência do segundo pulso de Clk tem-se D0 = D1 =1 e 0

3 2 = D =

D . Consequentemente as saídas passam a valer Q0 = Q1=1 e Q2 = Q3 =0 após o

tempo de propagação, também indicado na Figura 9.37. Seguindo esse raciocínio, após o tempo de propagação do terceiro pulso de Clk, tem-se Q0 =Q1 =Q2 =1 e Q3 =0.

Finalmente após o último pulso Clk de tem-se Q0 =Q1 =Q2 =Q3 =1.

Assim, pode-se concluir que no caso de flip-flops interligados, a informação presente na entrada é capturada no momento do pulso de Clk e após algum tempo a nova informação é apresentada na saída. Como estão todos ligados na mesma linha de Clk, todos capturam os dados em suas entradas naquele momento, e somente depois de um atraso é que novos dados estarão presentes nas saídas.

9.10 REGISTRADORES DE DESLOCAMENTO

A estrutura apresentada na Figura 9.36 é conhecida como registrador de deslocamento. Os sinais apresentados na Figura 9.37, referentes ao registrador de deslocamento da Figura 9.36, podem ser tabelados, como mostrado na Tabela 9.14.

(26)

Tabela 9.14 – Estados dos flip-flops da Figura 9.36. D0 Q0 Q1 Q2 Q3 inicial 0 0 0 0 1 1 0 0 0 1 1 1 0 0 1 1 1 1 0 1 1 1 1 1

Ao invés de a entrada D0 permanecer fixa em 1, ela poderia receber dados, como mostrado na Figura 9.38. D0 Q0 E Clk 2 3 1 0 Q0 D1 Q1 Q1 D3 Q3 Q3 D2 Q2 Q2

Figura 9.38 – Registrador de deslocamento à direita.

Para exemplificar sua operação, considere que o estado inicial dos flip-flops é 0, e admita a sequencia 1001 aplicada na entrada E. A Tabela 9.15 mostra os estados dos flip-flops de acordo com a aplicação de pulsos de Clk. Pode-se observar que os dados aplicados na entrada se deslocam para a direita, pois entram no flip-flop 1 e caminham em direção ao flip-flop 4.

Tabela 9.15 – Estados dos flip-flops da Figura 9.38.

D0 Q0 Q1 Q2 Q3 inicial 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 0 1

Por meio de alteração nas interligações dos flip-flops, pode-se implementar um registrador com deslocamento à esquerda, como apresentado da Figura 9.39. Nesse caso os dados são aplicados na entrada D3 e se deslocam para a esquerda, isto é caminham em direção ao flip-flop 1.

(27)

E Clk D0 Q0 2 3 1 0 Q0 D1 Q1 Q1 D3 Q3 Q3 D2 Q2 Q2

Figura 9.39 – Registrador de deslocamento à esquerda.

Como se pode observar pelas Figuras 9.38 e 9.39, o sentido de deslocamento depende das interligações dos flip-flops. Portanto, através do uso de um multiplexador é possível selecionar o sentido de deslocamento, como mostrado na Figura 9.40. Assim, se a linha Direcao vale 0, há deslocamento à esquerda e se linha Direcao vale 1, há deslocamento à direita. Esse registrador é chamado de bidirecional ou esquerda-direita.

Clk M U X M U X M U X M U X ED EE Direcao D0 Q0 2 3 1 0 Q0 D1 Q1 Q1 D3 Q3 Q3 D2 Q2 Q2

Figura 9.40 – Registrador de deslocamento bidirecional.

Dependendo da aplicação, pode ser necessário fazer o carregamento direto ou paralelo dos flip-flops. Esse carregamento pode ser feito através das linhas Set e Reset dos flip-flops, como apresentado na Figura 9.41.

Assim, se Carregar for igual a 0, X e Y serão iguais a 1, e independente de a, nada acontece no flip-flop. Por outro lado, se Carregar for igual a 1, o valor de a determinará o estado do flip-flop. Nesse caso, se a for igual a 0, X será 1 e Y será 0, que por sua vez promove o “reset” do flip-flop, levando sua saída para 0. Ao contrário, se a for igual a 1, X será 0 e Y será 1, que por sua vez promove o “set” do flip-flop, levando sua saída para 1. Em outras palavras, se Carregar for igual a 1, a saída A assume o valor de a.

A Figura 9.42 apresenta a estrutura completa do registrador de deslocamento bidirecional com carregamento paralelo. Se Paralelo for igual a 1, o conteúdo presente em

E0E1E2E3 é carregado no registrador, e portanto passa para as saídas Q0Q1Q2Q3. Se Paralelo for igual a 0, o conteúdo presente em E0E1E2E3 é ignorado pelo registrador.

(28)

A 1 1 Clk J K Set Clr Q Q a Inicial X Y

Figura 9.41 – Carregamento de flip-flop.

Clk Direcao Set Clr M U X Set Clr M U X Set Clr M U X EE Set Clr 0 D0 Q0 Q0 M U X ED Carga Paralela E0 E1 E2 E3 1 D1 Q1 Q1 2 D2 Q2 Q2 3 D3 Q3 Q3

Figura 9.42 – Registrador universal de 4 bits. 9.10.1. Aplicações de Registradores de Deslocamento

O registrador de deslocamento da Figura 9.42 pode ser empregado em uma grande variedade de aplicações, destacando-se conversão série-paralelo, conversão paralelo-série, contador anel e deslocamentos esquerda/direita.

Conversão Série-Paralelo: Um dado serial é ligado à entrada ED. As entradas Paralelo e

Direcao devem receber 0. A cada dado presente na entrada ED, há um pulso de Clk. Após 4 pulsos de Clk, o dado recebido serialmente estará presente, de forma paralela, nas saídas

(29)

Conversão Paralelo-Série: Os sinais presentes de forma paralela nas entradas E0E1E2E3 são capturados pelo registrador quando Paralelo=1. O sinal serial é obtido da saída Q3 quando

Direcao=0. O valor inicial de Q3 corresponde ao valor de E3 carregado no registrador. Após o primeiro pulso de Clk, (deslocamento à direita), a saída Q3 recebe o valor anterior de Q2. No próximo pulso de Clk, valor de Q3 corresponde ao valor original (inicial) de Q1. Com mais um pulso de Clk, valor de Q3 passa a apresentar o valor original de Q0. Consequentemente, Q3 passa a apresentar serialmente os valores originais carregados no registrador de deslocamento.

A Figura 9.43 ilustra, como exemplo, a conversão paralelo-série do valor 0100. No momento A tem-se Q3=0, em B tem-se Q3=0, em C tem-se Q3=1 e finalmente em D tem-se

Q3=0. Desta forma a saída Q3 apresenta o valor serial, iniciando pelo valor de E3. A conversão paralelo-séria também poderia iniciar pelo valor de E0, bastando apenas fazer o deslocamento para a esquerda.

E0 E1 E2 E3 Q0 Q1 Q2 Q3 Paralelo Clk 0 0 0 1 0 0 0 1 A 0 1 0 0 0 0 1 0 0 0 0 0 B C D

Figura 9.43 – Exemplo de conversão paralelo-serial.

Contador Anel: Se a saída Q3 for conectada à entrada ED obtém-se um contador anel. A Figura 9.44 ilustra as formas de onda de um exemplo de contador anel em que tem-se inicialmente Q0=0.

(30)

Q0 Q1 Q2 Q3 Clk 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1

Figura 9.44 – Exemplo de contador anel. 9.11 LATCHES E FLIP-FLOPS UTILIZANDO VHDL

Latches e flip-flops utilizando VHDL.

9.12 EXERCÍCIOS

1. A partir de um flip-flop T como se pode obter um flip-flop D?

2. As Figuras 9.2 e 9.3 apresentam implementações do latch SR utilizando portas lógicas Não-Ou e Não-E, respectivamente. Quais são suas saídas para S = R =0?

3. A Figura 9.21 apresenta um flip-flop JK ativo por rampa de descida. Como seria a sua implementação para rampa de subida?

4. A Figura 9.33 apresenta um flip-flop T. É viável implementar um latch T? Por que? 5. Após o sinal Init passar de 0 para 1, obtenha as formas de onda para os pontos A, B, C

e D no circuito da Figura 9.38 para 16 pulsos de Clk.

J Q Q K D Q Q J Q Q K J Q Q K Preset CLR CLR CLR Init Clk C D B A

Figura 9.38 – Circuito para o exercício 9.5.

6. Considere a condição inicial Q=0para o flip-flop JK da Figura 9.26. Obtenha as formas de sua saída Qpara os sinais da Figura 9.39.

(31)

J K Clk

Figura 9.39 – Formas de onda para o exercício 9.6.

7. Refaça o exercício anterior para o flip-flop JK ME da Figura 9.30. Compare os resultados.

8. Considere a condição inicial Q=0para o flip-flop JK da Figura 9.26. Obtenha as formas de sua saída Qpara os sinais da Figura 9.40.

J K Clk

Figura 9.40 – Formas de onda para o exercício 9.8.

9. Refaça o exercício anterior para o flip-flop JK ME da Figura 9.30. Compare os resultados com o exercício anterior.

10. É possível implementar um flip-flop T ME? O que muda com relação à um flip-flop T normal?

11. É possível um flip-flop D ME? O que muda com relação à um flip-flop D normal? 12. Considere a condição inicial Q=0para o flip-flop T da Figura 9.33. Obtenha as formas

de sua saída Qpara os sinais da Figura 9.41.

T Clk

Figura 9.41 – Formas de onda para o exercício 9.11. 13. Refaça o exercício anterior para o flip-flop D da Figura 9.17.

14. Refaça o exercício anterior para o latch D da Figura 9.14. Compare os resultados com o exercício anterior.

15. Refaça os exercícios 9.8 9.11 e 9.12 para o caso Clk ativo por rampa de subida.

16. O que acontece com um valor binário presente em um registrador de deslocamento quando há um deslocamento à esquerda? E se o deslocamento for à direita?

Referências

Documentos relacionados

A Sementinha dormia muito descansada com as suas filhas. Ela aguardava a sua longa viagem pelo mundo. No entanto, sempre vivera junto ao pomar do António Seareiro e até

8- Indica duas utilizações do granito.. Indica duas utilizações

5- Bruno não percebeu (verbo perceber, no Pretérito Perfeito do Indicativo) o que ela queria (verbo querer, no Pretérito Imperfeito do Indicativo) dizer e, por isso, fez

1- Indica com P, se a frase estiver na voz passiva e com A se estiver na ativa. Depois, passa-as para a outra forma. a) Vimos um cisne moribundo.. Assinala com um X o

1- Indica com P, se a frase estiver na voz passiva e com A se estiver na ativa. Depois, passa-as para a outra forma.. Assinala com um X o retângulo correspondente.. Derivada

13. Portugal teve condições privilegiadas para iniciar a Expansão marítima. Indica duas delas, explicitando-as.. Completa a legenda da imagem... 14.2. Esta embarcação

A bicharada já andava toda admirada, mas muito desconfiada!.

À volta da casa de Berlim havia outras ruas também com grandes casas e as ruas que iam dar ao centro da cidade estavam sempre cheias de pessoas a passearem que paravam para