Definindo os Estados
Parte da seção Fundamentos do Journey de Verilog da Coddy — lição 79 de 90.
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:
| Luz | Output | Significado |
|---|---|---|
| Red | red = 1 | Pare |
| Yellow | yellow = 1 | Atenção |
| Green | green = 1 | Siga |
As luzes alternam nesta ordem:
Green → Yellow → Red → Green → …
Sequência de Tempo
state | Duração | Próximo Estado |
|---|---|---|
| Green | 30 segundos | Yellow |
| Yellow | 10 segundos | Red |
| Red | 40 segundos | Green |
Nesta lição, você definirá os estados para o controlador de semáforo.
Um semáforo possui três estados possíveis:
state | Luz | Código |
|---|---|---|
| Green | Luz verde LIGADA | 2'b00 |
| Yellow | Luz amarela LIGADA | 2'b01 |
| Red | Luz vermelha LIGADA | 2'b10 |
Complete o module adicionando as partes que faltam.
O que fazer:
Defina a codificação dos estados: 0=Green, 1=Yellow, 2=Red
Declareumregisterde 2 bits chamadostateDeclareumregisterde 6 bits chamadocounter(para contagem de tempo até 40 segundos)- Adicione as
assignmentsde saída:- Quando
statefor 0:green = 1,yellow = 0,red = 0 - Quando
statefor 1:green = 0,yellow = 1,red = 0 - Quando
statefor 2:green = 0,yellow = 0,red = 1
- Quando
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
endmoduleTodas as lições de Fundamentos
1Introdução
O que é VerilogHardware vs SoftwareNíveis de Abstração de ProjetoSeu Primeiro MóduloComentários4Operadores Parte 1
Operadores AritméticosOperador de MóduloOperadores de ComparaçãoRecapitulação - Matemática SimplesOperadores Bitwise7Atribuição e Portas Lógicas
Atribuição ContínuaAtribuição com OperadoresPrimitivas de Portas IntegradasPortas AND, OR e NOTPortas XOR e XNORRecapitulação - Circuito de Portas Lógicas10Tomada de Decisão
Instrução IfIf - ElseRecapitulação - Comparador SimplesInstrução CaseCasex e CasezRecapitulação - Projeto de ALU2Tipos de Dados
Tipo WireTipo RegInteger e RealVetoresArraysParâmetrosRecapitulação - Declarar Sinais5Operadores Parte 2
Operadores LógicosOperadores de ReduçãoOperadores de DeslocamentoOperador de ConcatenaçãoOperador CondicionalRecapitulação - Desafio de Operadores3Sistemas de Numeração
Representação BináriaNúmeros com Tamanho DefinidoNúmeros sem Tamanho DefinidoNúmeros NegativosValores Especiais X e ZRecapitulação - Formatos de Números6Módulos
Estrutura de MóduloPortas de Entrada e SaídaPortas InoutInstanciação de MóduloMapeamento de Portas por NomeMapeamento de Portas por OrdemRecapitulação - Construa um Módulo9Blocos Procedurais
Bloco AlwaysBloco InitialLista de SensibilidadeAtribuição BloqueanteAtribuição Não BloqueanteRecapitulação - Always vs Initial15Controlador de Semáforo
Definindo os EstadosLógica da Máquina de Estados