Professional Documents
Culture Documents
end
endmodule
end
if (s1==1)begin
ooutp<=inner;
end
else begin
ooutp<=10'd0;
end
end
endmodule
State diagram
S0= input 1
S1= input 2
S2= input 3
S3= input 4
S4= input 5
S5= input 6
S6= A*B
S7= reg+(C*D) save the result again to reg
S8= reg+(E*F) save the result again to reg
S9= Give the value in reg at output
assign s00=(state[3]&(~state[0])&(~state[1])&(~state[2]))|((~state[3])&(state[0])&(state[1])&(state[2]));
wire s11;
assign s11=state[3]&state[0]&(~state[1])&(~state[2]);
reg clk;
ocircuit y (out,s00,s11,clk,w,rA,rB,state,val);
zero:
if(in)
state=one;
else
state=state;
one:
if (in)
state = two;
else
state = state;
two:
if (in)
state = three;
else
state = state;
three:
if (in)
state = four;
else
state = state;
four:
if (in)
state = five;
else
state = state;
five:
if (in)
state = six;
else
state = state;
six:
state = seven;
seven:
state = eight;
eight:
state = nine;
nine:
if (in)
state = zero;
else
state = state;
endcase
clk=0;
#40
clk=1;
#40
clk=0;
end
endmodule
module test_statemachine();
reg in,reset,clock;
reg [3:0] val;
wire [9:0] out;
state z (out, reset,in, val,clock);
initial
begin
clock =1'b0;
#10
clock =1'b1;
in=1'b0;
reset=1'b1;
val=4'd5;
#100
clock =1'b0;
#10
clock =1'b1;
in=1'b1;
reset=1'b0;
val=4'd2;
#100
clock =1'b0;
#10
clock =1'b1;
in=1'b1;
reset=1'b0;
val=4'd1;
#100
clock =1'b0;
#10
clock =1'b1;
in=1'b1;
reset=1'b0;
val=4'd2;
#100
clock =1'b0;
#10
clock =1'b1;
in=1'b1;
reset=1'b0;
val=4'd3;
#100
clock =1'b0;
#10
clock =1'b1;
in=1'b1;
reset=1'b0;
val=4'd2;
#100
clock =1'b0;
#10
clock =1'b1;
in=1'b1;
reset=1'b0;
val=4'd5;
#100
clock =1'b0;
#10
clock =1'b1;
in=1'b1;
reset=1'b0;
val=4'd5;
#100
clock =1'b0;
#10
clock =1'b1;
in=1'b1;
reset=1'b0;
val=4'd5;
#100
clock=1'b0;
clock =1'b0;
#10
clock =1'b1;
in=1'b1;
reset=1'b0;
val=4'd5;
#100
clock=1'b0;
end
endmodule
Simulation result
For A=5,B=2,C=2,D=1,E=3,F=2