Menu
Coddy logo textTech

Definindo os Estados

Parte da seção Fundamentos do Journey de Verilog da Coddy — lição 79 de 90.

challenge icon

Desafio

Um controlador de semáforo é uma máquina de estados finitos que alterna entre diferentes estados de luz (Vermelho, Amarelo, Verde) com intervalos de tempo específicos. Uma máquina de estados finitos (FSM) é um circuito que pode estar em um número limitado de estados. Ela muda de um estado para outro com base em entradas ou no tempo.

Neste projeto, você construirá um controlador de semáforo para um cruzamento simples. O semáforo possui três saídas:

LuzOutputSignificado
Redred = 1Pare
Yellowyellow = 1Atenção
Greengreen = 1Siga

As luzes alternam nesta ordem:

Green → Yellow → Red → Green → …

Sequência de Tempo

stateDuraçãoPróximo Estado
Green30 segundosYellow
Yellow10 segundosRed
Red40 segundosGreen

Nesta lição, você definirá os estados para o controlador de semáforo.

Um semáforo possui três estados possíveis:

stateLuzCódigo
GreenLuz verde LIGADA2'b00
YellowLuz amarela LIGADA2'b01
RedLuz vermelha LIGADA2'b10

Complete o module adicionando as partes que faltam.

O que fazer:

Defina a codificação dos estados: 0=Green, 1=Yellow, 2=Red

  1. Declare um register de 2 bits chamado state
  2. Declare um register de 6 bits chamado counter (para contagem de tempo até 40 segundos)
  3. Adicione as assignments de saída:
    • Quando state for 0: green = 1, yellow = 0, red = 0
    • Quando state for 1: green = 0, yellow = 1, red = 0
    • Quando state for 2: green = 0, yellow = 0, red = 1

Experimente você mesmo

module traffic_light (
  input clk,
  input reset,
  output reg red,
  output reg yellow,
  output reg green
);
  // TODO: Tarefa 1 - Declare o registrador de estado (2 bits)
  
  // TODO: Tarefa 2 - Declare o registrador contador (6 bits)
  

  // TODO: Tarefa 3 - Atribuições de saída usando case (state)
  // estado 0: green=1, yellow=0, red=0
  // estado 1: green=0, yellow=1, red=0
  // estado 2: green=0, yellow=0, red=1

endmodule

Todas as lições de Fundamentos