Así que estoy tratando de simular una máquina de estados con salidas s y v y un estado. por alguna razón, nuestros valores s y v se están actualizando, pero el estado se niega a cambiar, cualquier ayuda sería increíble
module controller(
input x,
input clk,
output reg S,
output reg V);
parameter S0 = 3'b000, S1 = 3'b010, S2 = 3'b001, S3 = 3'b101, S4 = 3'b011, S5 = 3'b100,S6=3'b111;
reg [2:0] state = S0; //assuming starting at S0
always @(negedge clk)
case(state)
S0: begin
if(x==0)begin
S<=1;
V<=0;
state<=S1;
end else begin
S<=0;
V<=0;
state<=S2;
end
end
S1:begin
if(x==0)begin
S<=1;
V<=0;
state<=S3;
end else begin
S<=0;
V<=0;
state<=S4;
end
end
S2: begin
if(x==0)begin
S<=0;
V<=0;
state<=S4;
end else begin
S<=1;
V<=0;
state<=S4;
end
end
S3: begin
if(x==0)begin
S<=0;
V<=0;
state<=S5;
end else begin
S<=1;
V<=0;
state<=S5;
end
end
S4:begin
if(x==0)begin
S<=1;
V<=0;
state<=S5;
end else begin
S<=0;
V<=0;
state<=S6;
end
end
S5: begin
if(x==0)begin
S<=0;
V<=0;
state<=S0;
end else begin
S<=1;
V<=0;
state<=S0;
end
end
S6: begin
if(x==0)begin
S<=1;
V<=0;
state<=S0;
end else begin
S<=0;
V<=1;
state<=S0;
end
end
endcase
endmodule
'timescale 1ns/1ps
module driver();
wire testX,testClk, testS,testV;
controller c
(
.x (testX),
.clk (testClk),
.S (testS),
.V (testV)
);
tester t
(
.x (testX),
.clk (testClk)
);
endmodule
'timescale 1ns/1ps
module tester(
output reg x,
output reg clk
);
always
begin
clk <=0;
#5;
clk <=1;
#5;
end
initial
begin
//1011 1100 1101
#2.5 x=1;
#10 x=0;
#10 x=1;
#10 x=1;
#10 x=0;
#10 x=0;
#10 x=1;
#10 x=1;
#10 x=1;
#10 x=1;
#10 x=0;
#10 x=1;
end
endmodule