Tutorial Prático de FSM: Projeto de Controle de Semáforo

Este tutorial aborda o desenvolvimento de um projetoIntrodução ao SystemVerilog: História e EvoluçãoIntrodução ao SystemVerilog: História e EvoluçãoDescubra a trajetória do SystemVerilog, sua origem a partir do Verilog, e os marcos que transformaram a verificação de hardware na indústria digital. prático de Máquina de Estado FinitoMáquinas de Estado Finito (FSMs): Diagramas de estado, tabelas de transição e otimização de estadosMáquinas de Estado Finito (FSMs): Diagramas de estado, tabelas de transição e otimização de estadosAprenda a criar diagramas de estado e tabelas de transição e otimize FSMs para circuitos sequenciais com clareza e eficiência. (FSM), utilizando como exemplo o controle de um semáforo. O objetivo é fornecer uma visão aplicada de como projetar e implementar uma FSM, ilustrando de forma clara os principais conceitos envolvidos.

Visão Geral🔗

Uma Máquina de Estado FinitoMáquinas de Estado Finito (FSMs): Diagramas de estado, tabelas de transição e otimização de estadosMáquinas de Estado Finito (FSMs): Diagramas de estado, tabelas de transição e otimização de estadosAprenda a criar diagramas de estado e tabelas de transição e otimize FSMs para circuitos sequenciais com clareza e eficiência. (Finite State Machine) é um modelo matemático de computação que transita entre estados pré-definidos a partir de entradas (ou sinais de controle) e das condições momentâneas do sistema. No contexto de eletrônica digitalIntrodução à Eletrônica Digital: Conceitos Básicos e AplicaçõesIntrodução à Eletrônica Digital: Conceitos Básicos e AplicaçõesDescubra os conceitos e aplicações essenciais da Eletrônica Digital, do funcionamento de sinais binários aos transistores, e comece sua jornada tecnológica., as FSMs são amplamente utilizadas para controlar sequências lógicas de eventos em sistemas embarcados, microcontroladores, e até em circuitos mais complexos como FPGAs.

Características Principais

Para ilustrar, faremos um exemplo de um semáforo simples em um cruzamento de uma única via.

Definição do Problema: Semáforo🔗

Imagine um semáforo com três indicações: Vermelho, Verde e Amarelo. A lógica básica de funcionamento é:

1. Vermelho → aguarda alguns segundos, então muda para Verde.

2. Verde → aguarda alguns segundos, então muda para Amarelo.

3. Amarelo → aguarda alguns segundos, então volta para Vermelho.

As restrições de tempo (ou pulsos de clockFlip-Flops e Latches: Tipos: SR, JK, D, T (funcionamento e clock)Flip-Flops e Latches: Tipos: SR, JK, D, T (funcionamento e clock)Aprenda os conceitos de Flip-Flops e Latches, incluindo tipos SR, JK, D e T, além do impacto do clock na sincronização de circuitos digitais.) podem variar conforme a aplicação. Por exemplo, podemos desejar:

  • Vermelho: 5 segundos
  • Verde: 4 segundos
  • Amarelo: 1 segundo

Para simplificar, poderemos considerar cada segundo como “1 pulso de clockFlip-Flops e Latches: Tipos: SR, JK, D, T (funcionamento e clock)Flip-Flops e Latches: Tipos: SR, JK, D, T (funcionamento e clock)Aprenda os conceitos de Flip-Flops e Latches, incluindo tipos SR, JK, D e T, além do impacto do clock na sincronização de circuitos digitais.” ou contar pulsos que indiquem essas durações.

Diagrama de Estados🔗

Segue um diagrama conceitual em que cada estado representa a cor do semáforo acesa. As transições ocorrem após um tempo pré-estabelecido (contagemRegistradores e Contadores: Contadores síncronos e assíncronos: sequências personalizadasRegistradores e Contadores: Contadores síncronos e assíncronos: sequências personalizadasAprenda as diferenças entre contadores assíncronos e síncronos, e descubra como utilizar sequências personalizadas para otimizar sistemas digitais. interna de pulsos ou outro sinal de temporização).

mermaid stateDiagram-v2 [*] --> VERMELHO VERMELHO --> VERDE: tempo_esgotado VERDE --> AMARELO: tempo_esgotado AMARELO --> VERMELHO: tempo_esgotado
  • VERMELHO: primeiro estado (inicial).
  • VERDE: ativado após o tempo definido para o sinal vermelho expirar.
  • AMARELO: ativado após o tempo definido para o sinal verde expirar.
  • Em seguida, retorna ao VERMELHO e o ciclo se repete.
Este diagrama é de alto nível e não representa detalhes de hardware específicos, mas orienta o projeto lógico.

Tabela de Estados e Transições🔗

Para projetar a FSM de forma sistemática, podemos fazer uma tabela de transições, listando o estado atual, a condição que dispara a mudança e o estado seguinte. Abaixo, um exemplo simplificado:

Estado AtualCondiçãoPróximo EstadoSaída (Se Moore)
VERMELHOTempo_Vermelho_OKVERDESinal Vermelho=0, Verde=1, Amarelo=0 (no instante de próxima saída)
VERDETempo_Verde_OKAMARELOSinal Vermelho=0, Verde=0, Amarelo=1
AMARELOTempo_Amarelo_OKVERMELHOSinal Vermelho=1, Verde=0, Amarelo=0

Observação:

Etapas de Projeto🔗

Definir Entradas e Saídas

Selecionar o Tipo de FSM

Para um semáforo básico, utilizaríamos o modelo MooreMáquinas de Estado Finito (FSMs): Tipos: Moore e Mealy (diferenças e usos)Máquinas de Estado Finito (FSMs): Tipos: Moore e Mealy (diferenças e usos)Explore as bases das FSMs e aprenda as diferenças entre as máquinas Moore e Mealy, fundamentais para circuitos sequenciais e sistemas digitais. por ser mais direto e previsível.

Atribuir Códigos para Cada Estado

Como na maioria dos projetosIntrodução ao SystemVerilog: História e EvoluçãoIntrodução ao SystemVerilog: História e EvoluçãoDescubra a trajetória do SystemVerilog, sua origem a partir do Verilog, e os marcos que transformaram a verificação de hardware na indústria digital. digitais, é comum codificar cada estado em binário. Exemplo (3 estados = 2 bits são suficientes, mas aqui ilustramos 2 bits e ignoramos o 4º estado não usado):

EstadoCódigo Binário
VERMELHO00
VERDE01
AMARELO10

Criar a Lógica de Transição

A lógica de transição determina qual será o próximo estado (próximo valor de bitsSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalAprenda conversões de sistemas numéricos em eletrônica digital. Descubra métodos para converter entre decimal, binário, octal e hexadecimal com exemplos.) em função do estado atual e do sinal de tempo atingido. Por exemplo, se estamos em VERMELHO (00) e o tempo do vermelho já expirou, vamos para VERDE (01); caso contrário, continuamos em VERMELHO (00) até que o tempo seja concluído.

Implementar a Lógica de Saída

Para uma FSM do tipo MooreMáquinas de Estado Finito (FSMs): Tipos: Moore e Mealy (diferenças e usos)Máquinas de Estado Finito (FSMs): Tipos: Moore e Mealy (diferenças e usos)Explore as bases das FSMs e aprenda as diferenças entre as máquinas Moore e Mealy, fundamentais para circuitos sequenciais e sistemas digitais., as saídas estão relacionadas apenas ao estado atual. Assim, ao estarmos no estado VERMELHO (00), acenderemos apenas a luz vermelha, no VERDE (01) ligamos apenas a luz verde, etc.

Benefícios e Possíveis Extensões🔗

Conclusão🔗

As Máquinas de Estado FinitoMáquinas de Estado Finito (FSMs): Diagramas de estado, tabelas de transição e otimização de estadosMáquinas de Estado Finito (FSMs): Diagramas de estado, tabelas de transição e otimização de estadosAprenda a criar diagramas de estado e tabelas de transição e otimize FSMs para circuitos sequenciais com clareza e eficiência. (FSMs) formam a espinha dorsal de inúmeros sistemas digitais de controle, desde aplicações simples como um semáforo até máquinas industriais e protocolos de comunicação avançados. Dominar a modelagem de estados, compreender como implementar as lógicas de transição e saída, e garantir a correta temporização é fundamental em projetosIntrodução ao SystemVerilog: História e EvoluçãoIntrodução ao SystemVerilog: História e EvoluçãoDescubra a trajetória do SystemVerilog, sua origem a partir do Verilog, e os marcos que transformaram a verificação de hardware na indústria digital. de engenharia elétrica, eletrônica, computação e áreas correlatas.

Este exemplo de projetoIntrodução ao SystemVerilog: História e EvoluçãoIntrodução ao SystemVerilog: História e EvoluçãoDescubra a trajetória do SystemVerilog, sua origem a partir do Verilog, e os marcos que transformaram a verificação de hardware na indústria digital. prático de semáforo serve como base para se familiarizar com a abordagem de FSMs. A prática de desenhar o diagrama de estados, montar tabelas de transiçãoMáquinas de Estado Finito (FSMs): Diagramas de estado, tabelas de transição e otimização de estadosMáquinas de Estado Finito (FSMs): Diagramas de estado, tabelas de transição e otimização de estadosAprenda a criar diagramas de estado e tabelas de transição e otimize FSMs para circuitos sequenciais com clareza e eficiência. e codificar cada estado é facilmente adaptável a outras situações de controle sequencial.

Dica: antes de partir para a implementação em hardware ou simulação, é sempre recomendável revisar a consistência dos estados e transições e, se possível, simular em software (usando ferramentas que suportem lógica digital) para garantir que todo o fluxo funcione como esperado.

Esperamos que este tutorial facilite a compreensão e o desenvolvimento de projetos baseados em Máquinas de Estado FinitoMáquinas de Estado Finito (FSMs): Diagramas de estado, tabelas de transição e otimização de estadosMáquinas de Estado Finito (FSMs): Diagramas de estado, tabelas de transição e otimização de estadosAprenda a criar diagramas de estado e tabelas de transição e otimize FSMs para circuitos sequenciais com clareza e eficiência.!

Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.

Compartilhar artigo