Projete um circuito contador sincrono utilizando FF D que realize a contagem de sua Matrícula. Por exemplo, se sua matricula for 2013020345 , você deve utilizar a parte em negrito realizando a sequência da esquerda para a direita. ( 2,5 pontos)
Passo 1
Beleza, vamos projetar um contador síncrono com flip-flops tipo D que percorre uma sequência de estados definida pelos dígitos “em negrito” da sua matrícula. Isso é conteúdo de Projeto de Sistemas Digitais – contadores assíncronos vs. síncronos, codificação de estados e excitação de FF D. Para resolver a gente vai precisar de:
- Identificar a sequência de valores que o contador deve gerar (os dígitos em negrito, esquerda→direita).
- Atribuir um código binário único a cada valor/estado (porque tem dígitos repetidos!).
- Fazer a tabela de transição de estados (estado atual → próximo estado).
- Escrever as equações de entrada D de cada flip-flop (excitação D = próximo valor de Q).
- Simplificar as equações (mapa de Karnaugh ou álgebra booleana).
- Montar o circuito com 3 FF D e lógica combinacional.
Passo 2
Supondo que, por exemplo, a parte em negrito da matrícula 2013020345 seja “1 3 0 2 0 3” (seis dígitos), a gente precisa de 6 estados. Como tem dígitos repetidos (0 e 3 aparecem duas vezes), a gente dá nome a cada passo da contagem e não ao valor numérico em si. Então:
Estado A → “1”
Estado B → “3”
Estado C → “0”
Estado D → “2”
Estado E → “0” (segunda vez)
Estado F → “3” (segunda vez)
Estado A → “1”
Estado B → “3”
Estado C → “0”
Estado D → “2”
Estado E → “0” (segunda vez)
Estado F → “3” (segunda vez)
Cada estado vai receber um código binário de 3 bits (porque 2 bits dão só 4 códigos, e precisamos de 6). Vamos escolher, por exemplo:
A ≡ 000
B ≡ 001
C ≡ 010
D ≡ 011
E ≡ 100
F ≡ 101
A ≡ 000
B ≡ 001
C ≡ 010
D ≡ 011
E ≡ 100
F ≡ 101
Passo 3
Agora montamos a tabela de transição “Estado Atual → Próximo Estado” com seus códigos:
Atual (Q2 Q1 Q0) | Nome | Próximo (Q2⁺ Q1⁺ Q0⁺) | Nome⁺ |
---|---|---|---|
000 | A | 001 | B |
001 | B | 010 | C |
010 | C | 011 | D |
011 | D | 100 | E |
100 | E | 101 | F |
101 | F | 000 | A |
Outros (110,111) | – | 000 | A |
Coloquei também estados “fantasmas” (110,111) para retornarem a A, fechando o circuito contra erros.
Passo 4
Em FF D, a entrada D deve ser igual ao valor do próximo Q. Ou seja:
D2 = Q2⁺,
D1 = Q1⁺,
D0 = Q0⁺.
D2 = Q2⁺,
D1 = Q1⁺,
D0 = Q0⁺.
Da tabela:
Para D2 (próximo Q2):
Quando o próximo estado é 100 (E) ou 101 (F), Q2⁺=1. Isso ocorre se o estado atual for D (011) ou E (100).
Então:
D2 = 1 se (Q2 Q1 Q0 = 011) ou ( = 100).
Quando o próximo estado é 100 (E) ou 101 (F), Q2⁺=1. Isso ocorre se o estado atual for D (011) ou E (100).
Então:
D2 = 1 se (Q2 Q1 Q0 = 011) ou ( = 100).
Em forma booleana:
D2 = ¬Q2·Q1·Q0 + Q2·¬Q1·¬Q0
D2 = ¬Q2·Q1·Q0 + Q2·¬Q1·¬Q0
Para D1 (próximo Q1):
Q1⁺=1 se o próximo estado é 001, 011 ou 100. Isso acontece quando o atual é A(000), C(010) ou D(011).
D1 = (¬Q2·¬Q1·¬Q0) + (¬Q2·Q1·¬Q0) + (¬Q2·Q1·Q0)
= ¬Q2·(¬Q1·¬Q0 + Q1·¬Q0 + Q1·Q0)
= ¬Q2·(¬Q0 + Q1)
Q1⁺=1 se o próximo estado é 001, 011 ou 100. Isso acontece quando o atual é A(000), C(010) ou D(011).
D1 = (¬Q2·¬Q1·¬Q0) + (¬Q2·Q1·¬Q0) + (¬Q2·Q1·Q0)
= ¬Q2·(¬Q1·¬Q0 + Q1·¬Q0 + Q1·Q0)
= ¬Q2·(¬Q0 + Q1)
Para D0 (próximo Q0):
Q0⁺=1 se o próximo estado é 001, 011 ou 101. Acontece quando atual é A(000), C(010) ou E(100).
D0 = ¬Q2·¬Q1·¬Q0 + ¬Q2·Q1·¬Q0 + Q2·¬Q1·¬Q0
= ¬Q0·(¬Q2·¬Q1 + ¬Q2·Q1 + Q2·¬Q1)
= ¬Q0·(¬Q2 + ¬Q1)
Q0⁺=1 se o próximo estado é 001, 011 ou 101. Acontece quando atual é A(000), C(010) ou E(100).
D0 = ¬Q2·¬Q1·¬Q0 + ¬Q2·Q1·¬Q0 + Q2·¬Q1·¬Q0
= ¬Q0·(¬Q2·¬Q1 + ¬Q2·Q1 + Q2·¬Q1)
= ¬Q0·(¬Q2 + ¬Q1)
Passo 5
Simplificando ainda mais:
D2 = ¬Q2·Q1·Q0 + Q2·¬Q1·¬Q0
D1 = ¬Q2·(¬Q0 + Q1)
D0 = ¬Q0·(¬Q2 + ¬Q1)
Nada de mapinha extra—essas são bem enxutas.
Passo 6
Desenha três flip-flops D (Q2,Q1,Q0). Liga cada D<sub>i</sub> à expressão booleana correspondendo aos sinais Q2,Q1,Q0 (e seus inversos via inversores). O clock é comum e síncrono a todos.
Resposta
Contador síncrono de 6 estados (1→3→0→2→0→3→1…) codificado em 3 FF D com as entradas:
D2 = ¬Q2·Q1·Q0 + Q2·¬Q1·¬Q0
D1 = ¬Q2·(¬Q0 + Q1)
D0 = ¬Q0·(¬Q2 + ¬Q1)
D2 = ¬Q2·Q1·Q0 + Q2·¬Q1·¬Q0
D1 = ¬Q2·(¬Q0 + Q1)
D0 = ¬Q0·(¬Q2 + ¬Q1)
E o clock comum a todos os FF D.