Desenhe um diagrama de estado em que as saídas x y z geram a sequência conhecida como código Gray (000,010,011,001,101,111,110,100 e repete). Só deve haver mudança de estados a cada borda de clock se a entrada gent =1. 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 000, 010, 011, 001, 101, 111, 110, 100 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 é:
000, 010, 011, 001, 101, 111, 110, 100
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:
  1. S0: 000
  2. S1: 010
  3. S2: 011
  4. S3: 001
  5. S4: 101
  6. S5: 111
  7. S6: 110
  8. 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.

Exercícios relacionados