Skip to content

marcelo-m7/Sequence-Detector-VHDL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

Detetor de Sequência "100101" (FSM com Entrada Paralela de 8 bits)

🎯 Objetivo

Este trabalho tem como objetivo implementar, simular e analisar o comportamento de uma Máquina de Estados Finitos (FSM) do tipo Moore, responsável por detectar a sequência "100101" em uma entrada paralela de 8 bits, utilizando a linguagem de descrição de hardware VHDL.

A FSM deve ser capaz de:

  • Identificar a ocorrência exata da sequência binária "100101", alinhada corretamente dentro dos 8 bits de entrada.
  • Ativar uma saída sequence_detected apenas quando essa condição for satisfeita.
  • Ignorar padrões parcialmente semelhantes ou desalinhados.

⚙️ Arquitetura do Projeto

✔️ Entrada e Saída

  • clk (entrada): sinal de clock.
  • reset (entrada): reinicia a FSM para o estado inicial.
  • sequence_in (entrada): vetor de 8 bits do tipo STD_LOGIC_VECTOR(7 downto 0).
  • sequence_detected (saída): sinal binário (STD_LOGIC) que indica a presença da sequência.

✔️ Estados da FSM

A FSM possui dois estados:

  • IDLE: estado inicial e principal, onde a sequência é analisada.
  • MATCHED: indica que a sequência "100101" foi detectada. A saída será ativada neste estado durante 1 ciclo de clock.

Como se trata de uma FSM do tipo Moore, a saída depende exclusivamente do estado atual, e não diretamente da entrada.


🧠 Lógica de Funcionamento

A FSM analisa, a cada ciclo de clock, se os bits de posição 7 até 2 (seis bits mais significativos) correspondem exatamente ao padrão "100101". Essa escolha evita interpretações erradas de padrões desalinhados ou ambíguos.

📌 Trecho importante do código VHDL:

if sequence_in(7 downto 2) = "100101" then
    next_state <= MATCHED;
else
    next_state <= IDLE;
end if;

Esse trecho implementa a comparação exata da sequência de interesse. Ao restringir a verificação a sequence_in(7 downto 2), evitamos identificar falsamente padrões similares deslocados dentro do vetor.


🔁 Transição de Estados

A transição ocorre em dois blocos separados:

1. Transição de Estado (sincrona com clock)

if reset = '1' then
    current_state <= IDLE;
elsif rising_edge(clk) then
    current_state <= next_state;
end if;

Esse trecho garante que a FSM retorne ao estado inicial (IDLE) quando o reset for ativado, e que as mudanças de estado ocorram apenas na borda de subida do clock, o que garante estabilidade na transição.

2. Lógica de Próximo Estado

case current_state is
    when IDLE =>
        if sequence_in(7 downto 2) = "100101" then
            next_state <= MATCHED;
        else
            next_state <= IDLE;
        end if;
    when MATCHED =>
        next_state <= IDLE;

Quando a sequência é detectada no estado IDLE, a FSM muda para MATCHED, ativando a saída por um ciclo.


🧪 Testbench: Estratégia de Verificação

Um testbench foi criado para verificar o comportamento da FSM sob diferentes padrões de entrada.

📌 Casos de teste incluídos:

Entrada (sequence_in) Esperado sequence_detected Justificativa
"11001010" '0' Sequência incorreta
"10010100" '1' Sequência correta nos bits 7..2
"00000000" '0' Nenhum padrão correspondente
"10010111" '1' Sequência correta, bits restantes ignorados
"00100101" '0' Sequência deslocada (bits 6..1)

O testbench usa um clock com período de 10 ns, e aplica um reset inicial de 20 ns antes de iniciar os testes.


🧰 Resultados esperados

É esperado que o sinal sequence_detected sobe para '1' apenas quando a sequência "100101" está presente nos bits 7 a 2 de sequence_in.


✅ Conclusões

A FSM desenvolvida foi capaz de detectar com precisão a sequência binária "100101" em dados de entrada paralela de 8 bits, garantindo:

  • Detecção somente quando a sequência aparece de forma alinhada.
  • Comportamento estável, com saída ativa por 1 ciclo.
  • Robustez contra padrões semelhantes ou desalinhados.

Este projeto mostra a eficácia da abordagem FSM Moore para reconhecimento de padrões binários em entradas paralelas, uma estratégia comum em sistemas embarcados, protocolos e decodificação de dados.

About

Detetor de Sequência "100101" (FSM com Entrada Paralela de 8 bits)

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages