traffic light controller

can't run on model sim

  • near "module": syntax error

    Votes: 0 0.0%
  • programing error

    Votes: 0 0.0%

  • Total voters
    0
  • Poll closed .
Joined
Jan 17, 2016
Messages
1
Reaction score
0
module tlc(
input peak,clk,rst,sen1,sen2,
output reg [2:0]t1,
output reg [2:0]t2,
output reg [2:0]t3,
output reg [2:0]t4,
output reg [2:0]t5,
output reg [2:0]t6
);
reg [2:0]state;
reg [4:0]count;

/////////////states declaration/////////
parameter s0=3'b000;
parameter s1=3'b001;
parameter s2=3'b010;
parameter s3=3'b011;
parameter s4=3'b100;
parameter s5=3'b101;
parameter s6=3'b110;
parameter s7=3'b111;

////////timer declaration//////////
parameter sec32=5'd32;
parameter sec16=5'd16;
parameter sec8=5'd8;
parameter sec5=5'd5;
parameter sec3=5'd3;



always @ (posedge clk or negedge rst)
begin
if(~rst)
begin
state<=s0;
count<=0;
end
else
case(state)
s0:if(count<sec3)
begin
state<=s0;
count<=count+1;
end
else
begin
state<=s1;
count<=0;
end

s1:if(peak==1)
begin
if(count<sec32)
begin
state<=s1;
count<=count+1;
end
else if (sen1==1)
begin
state<=s2;
count<=0;
end
else if (sen2==1)
begin
state<=s5;
count<=0;
end
else
begin
state<=s1;
count<=0;
end
end
else
begin
if(count<sec16)
begin
state<=s1;
count<=count+1;
end
else if (sen1==1)
begin
state<=s2;
count<=0;
end
else if (sen2==1)
begin
state<=s5;
count<=0;
end
else
begin
state<=s1;
count<=0;
end
end

s2:if(count<sec5)
begin
state<=s2;
count<=count+1;
end
else
begin
state<=s3;
count<=0;
end

s3:if(peak==1)
begin
if(count<sec16)
begin
state<=s3;
count<=count+1;
end
else if (sen2==1)
begin
state<=s4;
count<=0;
end
else
begin
state<=s1;
count<=0;
end
end
else
begin
if(count<sec8)
begin
state<=s3;
count<=count+1;
end
else if (sen2==1)
begin
state<=s4;
count<=0;
end
else
begin
state<=s1;
count<=0;
end
end
s4:if(count<sec5)
begin
state<=s4;
count<=count+1;
end
else
begin
state<=s6;
count<=0;
end

s5:if(count<sec5)
begin
state<=s5;
count<=count+1;
end
else
begin
state<=s6;
count<=0;
end

s6:if(peak==1)
begin
if(count<sec16)
begin
state<=s6;
count<=count+1;
end

else
begin
state<=s7;
count<=0;
end
end
else
begin
if(count<sec8)
begin
state<=s6;
count<=count+1;
end

else
begin
state<=s7;
count<=0;
end
end

s7:if(count<sec5)
begin
state<=s7;
count<=count+1;
end
else
begin
state<=s1;
count<=0;
end

default:state<=s0;

endcase
end



always @ (*) ////consider 3bit input as RYG////
///if R is active R=100//////if Y is active Y=010///
begin ///if G is active G=001//////
case(state)
s0:begin
t1=3'b000;t2=3'b000;
t3=3'b000;t4=3'b000;
t5=3'b000;t6=3'b000;
end

s1:begin
t1=3'b001;t2=3'b001;
t3=3'b100;t4=3'b001;
t5=3'b100;t6=3'b001;
end

s2:begin
t1=3'b010;t2=3'b010;
t3=3'b100;t4=3'b010;
t5=3'b100;t6=3'b001;
end

s3:begin
t1=3'b100;t2=3'b100;
t3=3'b001;t4=3'b100;
t5=3'b100;t6=3'b001;
end

s4:begin
t1=3'b100;t2=3'b100;
t3=3'b010;t4=3'b100;
t5=3'b100;t6=3'b010;
end

s5:begin
t1=3'b010;t2=3'b001;
t3=3'b100;t4=3'b010;
t5=3'b100;t6=3'b010;
end

s6:begin
t1=3'b001;t2=3'b001;
t3=3'b100;t4=3'b100;
t5=3'b001;t6=3'b100;
end

s7:begin
t1=3'b100;t2=3'b001;
t3=3'b100;t4=3'b100;
t5=3'b010;t6=3'b100;
end
endcase
end
endmodule
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,734
Messages
2,569,441
Members
44,832
Latest member
GlennSmall

Latest Threads

Top