Upload
hoangcong
View
226
Download
0
Embed Size (px)
Citation preview
Curso de Lógica Sequencial – Cap. 5: Circuitos Sequenciais III: Contadores Síncronos | Prof. Marcelo Wendling
77
CAPÍTULO 5 – CIRCUITOS SEQUENCIAIS III: CONTADORES SÍNCRONOS
Sumário
5.1. Introdução ............................................................................................................................ 79
5.2. Tabelas de transição dos flip-flops ....................................................................................... 80
5.2.1. Tabela de transição do flip-flop JK .................................................................................. 80
5.2.2. Tabela de transição do flip-flop T .................................................................................... 80
5.2.3. Tabela de transição do flip-flop D .................................................................................... 81
5.3. Projeto de contador síncrono ............................................................................................... 82
5.3.1. Diagramas de Transição .................................................................................................. 82
5.3.2. Tabela de Estados Futuros e de Entradas dos Flip-flops ................................................... 82
5.4. Contador Síncrono Crescente / Decrescente ....................................................................... 86
5.5. Exercícios de Fixação ........................................................................................................... 90
Curso de Lógica Sequencial – Cap. 5: Circuitos Sequenciais III: Contadores Síncronos | Prof. Marcelo Wendling
78
CAPÍTULO 5 – CIRCUITOS SEQUENCIAIS III: CONTADORES SÍNCRONOS
Continuando os estudos sobre circuitos contadores, partimos agora para circuitos os
Contadores Síncronos.
Após esse capítulo você deverá ser capaz de:
(1) Entender o funcionamento de circuitos contadores síncronos; e
(2) Projetar um contador síncrono a partir das especificações necessárias.
Curso de Lógica Sequencial – Cap. 5: Circuitos Sequenciais III: Contadores Síncronos | Prof. Marcelo Wendling
79
5.1. Introdução
Contadores síncronos são circuitos sequenciais capazes de executar contagens binárias de
forma aleatória, pois possuem um circuito combinacional externo, que utiliza como entradas as
saídas Q e Q’ de cada flip-flop e suas saídas são conectadas às entradas dos flip-flops utilizados. A
figura 5.1 apresenta o diagrama geral de um contador síncrono utilizando flip-flops JK para
contagem.
Figura 5.1 Diagrama geral de um contador síncrono com flip-flops JK.
As características principais dos contadores síncronos são:
(1) Os FF POSSUEM as entradas clock em comum;
(2) Possuem circuito combinacional externo, que utiliza as equações de transição dos flip-flops
utilizados para ser implementado;
(3) Possuem saída binária aleatória; e
(4) O bit mais significativo da contagem (MSB) pode ser qualquer um dos flip-flops, pois quem
determina essa ordem é o circuito combinacional externo. No caso da figura 5.1 o bit mais
significativo pode ser tanto o flip-flop ‘1’ quanto o flip-flop ‘n’.
Antes de estudarmos o projeto de contadores síncronos, devemos analisar as tabelas de transição
dos flip-flops.
Curso de Lógica Sequencial – Cap. 5: Circuitos Sequenciais III: Contadores Síncronos | Prof. Marcelo Wendling
80
5.2. Tabelas de transição dos flip-flops
As tabelas de transição dos flip-flops nada mais são que outra forma de visualização das
tabelas verdades desses flip-flops. Para a montagem dessas tabelas, devemos analisar com foco nos
valores de transições das saídas e nos valores de entrada que se deve ter em suas entradas para
provocar essa transição, desde que um pulso de clock ocorra em suas entradas.
A saída do flip-flop em seu estado atual é denominada nQ , ou simplesmente Q , e a saída
em seu estado futuro, ou seja, após a transição, é denominada 1nQ ou Q .
5.2.1. Tabela de transição do flip-flop JK
Para o flip-flop JK temos:
0nQ para 01 nQ , utilizamos em suas entradas, J = 0 e K = 0 ou J = 0 e K = 1.
0nQ para 11 nQ , utilizamos em suas entradas, J = 1 e K = 0 ou J = 1 e K = 1.
1nQ para 01 nQ , utilizamos em suas entradas, J = 0 e K = 1 ou J = 1 e K = 1.
1nQ para 11 nQ , utilizamos em suas entradas, J = 0 e K = 0 ou J = 1 e K = 0.
Logo, resumindo essas proposições, temos a seguinte tabela verdade de transição:
nQ 1nQ J K
0 0 0 X
0 1 1 X
1 0 X 1
1 1 X 0
5.2.2. Tabela de transição do flip-flop T
Para o flip-flop T temos:
0nQ para 01 nQ , utilizamos T = 0.
0nQ para 11 nQ , utilizamos T = 1.
Curso de Lógica Sequencial – Cap. 5: Circuitos Sequenciais III: Contadores Síncronos | Prof. Marcelo Wendling
81
1nQ para 01 nQ , utilizamos T = 1.
1nQ para 11 nQ , utilizamos T = 0.
Logo, resumindo essas proposições, temos a seguinte tabela verdade de transição:
nQ 1nQ T
0 0 0
0 1 1
1 0 1
1 1 0
5.2.3. Tabela de transição do flip-flop D
Para o flip-flop D temos:
0nQ para 01 nQ , utilizamos D = 0.
0nQ para 11 nQ , utilizamos D = 1.
1nQ para 01 nQ , utilizamos D = 0.
1nQ para 11 nQ , utilizamos D = 1.
Logo, resumindo essas proposições, temos a seguinte tabela verdade de transição:
nQ 1nQ D
0 0 0
0 1 1
1 0 0
1 1 1
Curso de Lógica Sequencial – Cap. 5: Circuitos Sequenciais III: Contadores Síncronos | Prof. Marcelo Wendling
82
5.3. Projeto de contador síncrono
Antes de projetarmos um contador síncrono necessitamos entender algumas partes
integrantes deste projeto.
5.3.1. Diagramas de Transição
Para projetar um contador síncrono, deve-se primeiro entender as especificações de projeto.
Um contador síncrono tem sua contagem especificada através de um diagrama de transição,
apresentado na figura 5.2, que indica qual é o estado futuro a ser atingido pelo contador quando é
aplicado um pulso de clock.
Figura 5.2 Diagrama de estados de um contador síncrono.
A indicação (1) mostra que o contador deve iniciar sua contagem pelo estado indicado por
(2). Cada circunferência representa um estado da contagem e pode indicar um valor decimal,
binário, hexadecimal ou um nome – exemplo ‘state1’ que representa algum valor tabelado. A seta
com a indicação (3) representa que existe uma transição do estado ‘state1’ para ‘state2’, assim
como para os outros estados.
5.3.2. Tabela de Estados Futuros e de Entradas dos Flip-flops
Considere o contador síncrono representado pelo diagrama de estados da figura 5.3, a tabela
de estados futuros desse contador nada mais é que uma representação tabelada dos seus estados. Ela
será extremamente importante para que possamos gerar a tabela de entrada dos flip-flops adiante.
Curso de Lógica Sequencial – Cap. 5: Circuitos Sequenciais III: Contadores Síncronos | Prof. Marcelo Wendling
83
Figura 5.3 Diagrama de estado de um contador síncrono de módulo 5.
A tabela de estados futuros de um diagrama de estados é gerada colocando em uma coluna o
estado atual que o contador se encontra e em outra coluna o seu próximo estado. No caso da figura
5.3, sua tabela de estados futuros fica como demonstrado a seguir, considerando três flip-flops A, B
e C, sendo A o bit mais significativo.
Estados Atuais Estados Futuros
QA QB QC QA+ QB
+ QC
+
0 0 0 0 0 1
0 0 1 0 1 0
0 1 0 0 1 1
0 1 1 1 0 0
1 0 0 0 0 0
1 0 1 0 0 0
1 1 0 0 0 0
1 1 1 0 0 0
A partir dessa tabela, podemos gerar a tabela de entrada dos flip-flops, que são as tabelas
que geram as equações lógicas do circuito combinacional, mostrado na figura 5.1, necessárias para
a implementação do contador.
Curso de Lógica Sequencial – Cap. 5: Circuitos Sequenciais III: Contadores Síncronos | Prof. Marcelo Wendling
84
Para gerar essa tabela, necessitamos das tabelas de transição do tipo de flip-flop utilizado,
descritas no item 5.2. Considerando que os flip-flops utilizados para implementação desse contador
sejam flip-flops JK, para gerar a tabela de entrada dos flip-flops, basta observarmos quais são as
transições que ocorrem dos estados Qx para o estado Qx+ de cada linha e preenchermos as entradas
Jx e Kx de cada flip-flop de acordo com a tabela de transição do flip-flop JK.
A tabela de entrada dos flip-flops do contador descrito na figura 5.3 fica da seguinte forma:
Estados Atuais Estados Futuros Entradas dos Flip-Flops JK
QA QB QC QA+ QB
+ QC
+ JA KA JB KB JC KC
0 0 0 0 0 1 0 X 0 X 1 X
0 0 1 0 1 0 0 X 1 X X 1
0 1 0 0 1 1 0 X X 0 1 X
0 1 1 1 0 0 1 X X 1 X 1
1 0 0 0 0 0 X 1 0 X 0 X
1 0 1 0 0 0 X 1 0 X X 1
1 1 0 0 0 0 X 1 X 1 0 X
1 1 1 0 0 0 X 1 X 1 X 1
Gerada a tabela de entradas dos flip-flops, necessitamos gerar as funções lógicas do circuito
combinacional responsável pela contagem, e para isso, como descrito no diagrama de blocos da
figura 5.1, utilizaremos QA, QB e QC como entradas do circuito combinacional e JA, KA, JB, KB, JC e
KC como saídas, ou seja, basta implementar uma função lógica para cada um dos J’s e K’s
utilizados, fazendo como entradas dessas funções as saídas Q dos flip-flops.
Como ferramenta para gerar essas funções, utilizaremos mapas de Veitch-Karnaugh,
revisados no capítulo 1, e simplificando as funções lógicas descritas, obteremos as seguintes
equações:
(1)
(2)
(3)
(4)
(5)
(6)
Curso de Lógica Sequencial – Cap. 5: Circuitos Sequenciais III: Contadores Síncronos | Prof. Marcelo Wendling
85
Determinadas as equações lógicas das entradas, para finalizar o projeto, basta implementar o
circuito lógico, retirando como saídas do contador as saídas Q de cada flip-flop. O circuito do
exemplo utilizado é mostrado na figura 5.4.
Figura 5.4 Circuito contador síncrono de módulo 5 implementado com flip-flops JK.
Pergunta: Na figura 5.3 possuímos um indicativo de que o contador deve iniciar sua
contagem no estado ‘000’. O que podemos fazer nesse circuito para garantirmos que sempre que o
contador seja ligado ele inicie sua contagem em ‘000’ se suas entradas assíncronas forem ativadas
em nível baixo?
Sugestão: Implemente o mesmo contador do exemplo anterior utilizando flip-flops tipo T e
tipo D como elementos de memória.
Implementado o circuito lógico, finalizamos o projeto de um contador síncrono. Resumindo
as etapas de projeto temos:
(1) Determinação do diagrama de estados do contador a partir das especificações de projeto;
(2) Montagem da tabela de estados futuros;
(3) Montagem da tabela de entrada dos flip-flops;
(4) Implementação das funções lógicas de entrada dos flip-flops; e
(5) Implementação do circuito lógico.
Curso de Lógica Sequencial – Cap. 5: Circuitos Sequenciais III: Contadores Síncronos | Prof. Marcelo Wendling
86
5.4. Contador Síncrono Crescente / Decrescente
O projeto de um contador síncrono crescente / decrescente necessita da inserção de uma
variável de controle. No nosso caso, vamos chamar essa variável de controle de variável ‘Z’, que
será inserida no circuito combinacional da figura 5.1 para executar uma etapa de controle.
Figura 5.5 Diagrama de blocos de um contador síncrono com váriável Z de controle.
Tomando como exemplo um contador síncrono crescente / decrescente de 2 bits, devemos
construir um diagrama de estados que contenha as duas possíveis sequências de contagem.
Definindo como contagem crescente para Z = 0 e decrescente para Z = 1 podemos obter os dois
diagramas da figura 5.6 ou ainda obter um único diagrama, figura 5.7, que contenha as duas
sequências obtidas de acordo com o valor de ‘Z’.
Figura 5.6 Diagramas de estado para os distintos valores da variável de controle 'Z'.
Curso de Lógica Sequencial – Cap. 5: Circuitos Sequenciais III: Contadores Síncronos | Prof. Marcelo Wendling
87
Figura 5.7 Diagrama de estados que contém as duas possíveis sequências do contador.
A montagem da tabela de estados futuros e de entrada dos flip-flops, considerando flip-flops
JK, e inserindo a variável ‘Z’, fica da seguinte forma:
Estados Atuais Estados Futuros Entradas dos Flip-Flops JK
Z QB QA QB+ QA
+ JB KB JA KA
0 0 0 0 1 0 X 1 X
0 0 1 1 1 1 X X 0
0 1 0 0 0 X 1 0 X
0 1 1 1 0 X 0 X 1
1 0 0 1 0 1 X 0 X
1 0 1 0 0 0 X X 1
1 1 0 1 1 X 0 1 X
1 1 1 0 1 X 1 X 0
Simplificando as funções lógicas, obtemos as seguintes equações:
(7)
(8)
(9)
(10)
Curso de Lógica Sequencial – Cap. 5: Circuitos Sequenciais III: Contadores Síncronos | Prof. Marcelo Wendling
88
Implementando as equações (7) à (10), obtemos o circuito descrito na figura 5.8.
Figura 5.8 Circuito de um contador síncrono crescente / decrescente com uma variável ‘Z’
de controle (Z = 0 – crescente).
Pergunta: Na figura 5.7 possuímos um indicativo de que o contador deve iniciar sua
contagem no estado ‘00’. O que podemos fazer nesse circuito para garantirmos que sempre que o
contador seja ligado ele inicie sua contagem em ‘00’ se suas entradas assíncronas forem ativadas
com nível alto?
Sugestão: Implemente o mesmo contador do exemplo anterior utilizando flip-flops tipo T e
tipo D como elementos de memória.
A partir desse tipo de projeto de contador síncrono, podemos projetar contadores síncronos
de sequências aleatórias controlados por variáveis externas. A figura 5.9 mostra um exemplo de
diagrama de estados de um contador síncrono aleatório controlado pela variável externa ‘Z’. Faça a
tabela de estados futuros desse contador. Os estados estão codificados da seguinte forma:
Nome Valor em
binário
S0 0000
S1 0001
S2 1000
S3 0101
S4 0111
S5 1101
S6 1100
S7 1110
S8 1111
Curso de Lógica Sequencial – Cap. 5: Circuitos Sequenciais III: Contadores Síncronos | Prof. Marcelo Wendling
89
Figura 5.9 Contador síncrono aleatório controlado por variável ‘Z’.
Pergunta 1: No diagrama da figura 5.9, podemos verificar que nem todos os estados que
podem ser executados com 4 bits estão sendo utilizados. O que aconteceria se por algum distúrbio
no sistema o contador apresentasse o valor ‘0110’ em sua saída?
Pergunta 2: O que aconteceria o contador estivesse no estado S3, com Z =1, e o valor da
variável ‘Z’ fosse alterado para ‘0’?
Sugestão: Implemente o mesmo contador do exemplo anterior utilizando flip-flops tipo T.
Curso de Lógica Sequencial – Cap. 5: Circuitos Sequenciais III: Contadores Síncronos | Prof. Marcelo Wendling
90
5.5. Exercícios de Fixação
1) Implemente um contador síncrono crescente, com reset automático, de módulo 16
utilizando FF JK.
2) Implemente um contador síncrono, sem reset automático, que conte de 2 até 6, crie uma
sub-rotina de inicialização para esse contador. Utilize FF T.
3) Implemente um contador síncrono, que execute a sequência abaixo. O contador deve
possuir reset automático em ‘1’ e deve-se utilizar FF JK.
4) Implemente um contador síncrono, com reset automático, que execute a seguinte
sequência: 1 2 3 5 6 7 9 10 12 1. Use FF D.
5) Implemente um contador síncrono de 4 bits, com reset automático, que execute uma
contagem dos números pares. Utilize FF JK.
6) Implemente um contador síncrono de 4 bits, sem reset automático, que execute uma
contagem dos números ímpares. Utilize FF JK.
7) Implemente um contador síncrono de 3 bits, crescente / decrescente, com uma variável Z
de controle. Utilize FF JK.
8) Implemente um contador síncrono de 3 bits, com uma variável Z de controle, que execute
as seguintes sequências:
a. Com Z = 0: 0 1 3 2 5 4 6 7 0.
b. Com Z = 1: 3 1 2 0 6 7 4 5 3.
Utilize FF D.
Curso de Lógica Sequencial – Cap. 5: Circuitos Sequenciais III: Contadores Síncronos | Prof. Marcelo Wendling
91
9) Implemente um contador síncrono que execute a sequência abaixo. Utilize FF T.
10) Implemente um contador síncrono que execute a sequência abaixo. Utilize FF D.
11) Implemente um contador síncrono, com variáveis Y e X de controle, que execute as
seguintes sequências abaixo, com reset inicial em 2h. Utilize FF JK.