Skip to content

Commit

Permalink
fsm: adicionar READMEs
Browse files Browse the repository at this point in the history
  • Loading branch information
goll72 committed Oct 15, 2024
1 parent 9683b3d commit 24b00df
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 1 deletion.
19 changes: 19 additions & 0 deletions fsm/consecutive/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
consecutive
===========

Nesse exercício, foi implementada uma máquina de estados para detectar
uma sequência consecutiva de quatro uns ou quatro zeros. A Máquina de Estados
implementada, uma máquina de Moore, consiste de 9 estados, onde um estado é o
inicial e os demais detectam se o valor atual de $ w $ é consistente com relação
à sequência que estão detectando (quatro estados para verificar uma sequência
consecutiva de quatro zeros e quatro estados para verificar uma sequência consecutiva
de quatro uns). Caso o(s) valor(es) anterior(es) de w seja(m) zero e o atual seja um,
o próximo estado será o estado inicial para detectar uma sequência de uns e vice-versa.

Os estados finais correspondentes a uma sequência de zeros ou uns habilita uma saída,
nesse caso, a porta `LEDR9`. Nota-se que a FSM permanecerá em um estado final se o valor
de w for preservado, ou seja, a FSM detecta todas as sequências consecutivas de quatro uns
ou quatro zeros, até mesmo sequências que se sobreponham.

Usando os códigos de estado dados, montamos a máquina de estados usando a estrutura
`case ... when` do VHDL.
1 change: 0 additions & 1 deletion fsm/consecutive/fsm.vhdl
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ begin
state_transition : process(w, clk, reset) is
variable current_state : std_logic_vector(8 downto 0);
begin

if rising_edge(clk) then
case current_state is
when "000000001" =>
Expand Down
37 changes: 37 additions & 0 deletions fsm/morse/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
morse
=====

O objetivo desse exercício é reimplementar o circuito para codificar uma letra
em código morse, usando Máquina de Estados (FSM). Escolhemos usar uma Máquina de
Estados de Moore, cuja representação gráfica é exibida a seguir.

```mermaid
graph LR;
R[Reset];
A((A / q = 0, n = 0));
B((B / q = 0, n = 0));
C((C / q = 1, n = 0));
D((D / q = 1, n = 0));
E((E / q = 1, n = 0));
F((F / q = 1, n = 1));
R-->A;
A-->|enable = 0|B;
B-->|c = 0|A;
B-->|w = 0|C;
C-->B;
B-->|w = 1|D;
D-->E;
E-->F;
F-->B;
```

O estado $ A $ é o estado inicial, onde devemos aguardar até que o
usuário pressione o botão $ \textrm{enable} $. O estado $ B $ é um
estado de pausa entre cada pulso do código morse, que retornará ao
estado inicial caso a contagem da quantidade restante de pulsos que
devem ser exibidos chegue a zero. As saídas da FSM são $ q $ (o
código em si) e $ n $ (sinal para decrementar o contador do tamanho da
sequência restante e habilitar o registrador de deslocamento
por um ciclo de clock).

0 comments on commit 24b00df

Please sign in to comment.