Desenhe um diagrama de estado em que as saídas
geram a sequência conhecida como código Gray
e repete). Só deve haver mudança de estados a cada borda de clock se a entrada gent
. Converta a Máquina de Estados (FSM) encontrada em um controlador, usando registradores de estado e portas lógicas.
Passo 1
Beleza, vamos lá! O que a gente tem aqui é um exercício sobre Máquinas de Estados Finitos (FSM) e código Gray. A missão é desenhar um diagrama de estados que gera uma sequência específica de códigos Gray, que são
e depois repete. Além disso, só vamos mudar de estado na borda do clock se a entrada
gent
for igual a 1. Depois disso, a gente precisa converter essa máquina de estados em um controlador usando registradores de estado e portas lógicas. Para isso, vamos usar conceitos de FSM, tabelas de verdade e lógica digital. Vamos passo a passo!Passo 2
Primeiro, vamos entender o que é o código Gray. É uma sequência de números binários onde dois números consecutivos diferem por apenas um bit. Isso é útil para evitar erros de transição em sistemas digitais. A sequência que a gente tem aqui é:
Vamos considerar cada um desses códigos como um estado na nossa máquina de estados.
Passo 3
Agora, vamos listar todos os estados da nossa FSM com base na sequência do código Gray:
- S0: 000
- S1: 010
- S2: 011
- S3: 001
- S4: 101
- S5: 111
- S6: 110
- S7: 100
Cada um desses estados representa um passo na nossa sequência.
Passo 4
Vamos criar o diagrama de estados. A ideia é que, quando a entrada
gent = 1
, a máquina troca para o próximo estado na sequência a cada borda de clock. Se gent = 0
, ela permanece no mesmo estado. O diagrama vai ficar assim:S0 (000) → S1 (010) → S2 (011) → S3 (001) → S4 (101) → S5 (111) → S6 (110) → S7 (100) → S0 (000) → ...
E essas transições só acontecem quando
gent = 1
.Passo 5
Vamos montar a tabela de transição de estados. Ela vai mostrar, para cada estado atual, qual é o próximo estado dependendo da entrada
gent
.Estado Atual | gent = 0 | gent = 1 |
---|---|---|
S0 (000) | S0 | S1 |
S1 (010) | S1 | S2 |
S2 (011) | S2 | S3 |
S3 (001) | S3 | S4 |
S4 (101) | S4 | S5 |
S5 (111) | S5 | S6 |
S6 (110) | S6 | S7 |
S7 (100) | S7 | S0 |
Essa tabela ajuda a visualizar como a máquina muda de estado.
Passo 6
Vamos atribuir codificações binárias para cada estado. Podemos usar 3 bits para representar os 8 estados:
Estado | Código |
---|---|
S0 | 000 |
S1 | 001 |
S2 | 010 |
S3 | 011 |
S4 | 100 |
S5 | 101 |
S6 | 110 |
S7 | 111 |
Essas codificações vão ser usadas nos registradores de estado.
Passo 7
Com a tabela de transição e as codificações, vamos agora criar a lógica de próximo estado. Precisamos determinar, para cada bit do próximo estado, a combinação lógica dos bits atuais e da entrada
gent
.Vamos supor que usamos flip-flops do tipo JK ou D para os registradores. Para simplificar, vamos usar flip-flops do tipo D. A lógica para cada bit D será baseada nas transições da tabela.
Por exemplo, para o bit D0 (menos significativo):
- Observando as transições, podemos derivar a expressão lógica que define D0 com base nos bits atuais e em
gent
.
Isso precisa ser feito para D0, D1 e D2, resultando nas expressões lógicas para cada flip-flop.
Passo 8
Finalmente, vamos montar o controlador. Ele vai consistir nos registradores de estado (os flip-flops) e nas portas lógicas que implementam as funções booleanas derivadas no passo anterior.
O controlador vai receber a entrada
gent
e, na borda do clock, atualizar os registradores de estado de acordo com as funções lógicas. As saídas x y z
serão os bits dos registradores de estado atuais.Resposta
A máquina de estados finitos foi desenhada com oito estados correspondentes aos códigos Gray fornecidos. As transições entre os estados ocorrem somente quando a entrada
gent
é igual a 1 na borda do clock. O controlador foi convertido utilizando registradores de estado (flip-flops do tipo D) e portas lógicas que implementam as funções de transição derivadas da tabela de transição de estados. As saídas x y z
refletem os estados atuais da máquina, gerando a sequência de código Gray desejada.