Documente Academic
Documente Profesional
Documente Cultură
A
1/0 C Uno de asignación de
1/1
0/0 siguientes estados
58
Faculty of Engineering - Alexandria University 2013
Mealy model
-----------
I
X next present
I
inputs ^ comb. state memory state comb. outputs
circuit elements circuits
X Solo de Qt
ok
Máquinas de estado
module mi_diagrama_de_estados(
input LISTA_DE_ENTRADAS,
output reg LISTA_DE_SALIDAS);
59
Máquinas de estado
En la estructura general hay que completar 4 partes de
código:
Definición y asignación de estados, según el número de estados
utilizaremos mas o menos bits.
Definición de registros para almacenar el estado actual y el
siguiente. Deben ser del mismo tamaño en bits que el utilizado en
el punto anterior
Proceso de cambio de estado: Siempre es el mismo código
Proceso de cálculo de siguiente estado y salida: Hay que
rellenar el código correspondiente las transiciones del
diagrama de estados
60
Máquinas de estado
1/0
module maquina_estados(
input x, clk, reset,
output reg z); B 0/0
1/0
parameter A = 2'b00,
B = 2'b01, Asignación
C = 2'b10, de estados 1/0
D = 2'b11; A C
1/1
reg [1:0] current_state,next_state; 0/0
61
Máquinas de estado
El proceso de calculo del siguiente estado y salida se
realiza con una única sentencia case
La sentencia case debe contemplar todos los estados del diagrama
de estados
Antes de la sentencia case se recomienda establecer por defecto a
cero todas las salidas.
62
Máquinas de estado
si cambia estado_actual o input x x/z
1/0
always @(current_state,x)
begin Salida a cero x/z
z = 0; x/z B 0/0
1/0
case(current_state)
A:
if(x == 1)
next_state = B; Estado A 1/0
else
A x/z C
next_state = A; 1/1 x/z
B: 0/0
if(x == 1) x/z
next_state = B;
else
Estado B
next_state = C; 0/0 0/0
D x/z
x/z
63
Máquinas de estado
C: 1/0
if(x == 1)
next_state = B; Estado C
else B 0/0
1/0
next_state = D;
D:
if(x == 1)
begin
1/0
z = 1;
A C
next_state = B; Estado D 1/1
end 0/0
else
next_state = A;
endcase
0/0 0/0
end D
endmodule
64