exp2.txt
来自「交通灯状态机的实现」· 文本 代码 · 共 147 行
TXT
147 行
timescale 1ns / 1ps
module trafficLight2(reset,clk, snCar, ewCar,snRed, snYellow, snGreen,ewRed, ewYellow, ewGreen);
input reset,clk,snCar,ewCar;
output snRed, snYellow, snGreen,ewRed, ewYellow, ewGreen;
reg[2:0] state;
reg snRed,snYellow,snGreen,ewRed, ewYellow, ewGreen;
reg[7:0] count;
//设定count的初始值
initial begin
count = 8'b0;
end
//设定状态值
parameter
idle ='d0,
ewgreen ='d1,
ewwait ='d2,
ewyellow='d3,
sngreen ='d4,
snwait ='d5,
snyellow='d6;
//未付state初始值
always @(posedge clk)
if(reset)
begin
state<=idle;
end
else
case(state)
idle:
if(ewcar==1)
begin
state<=ewgreen;
end
else
state<=sngreen;
ewgreen: begin
ewGreen <= 1;
snRed <= 1;
snYellow<= 0;
snGreen <= 0;
ewRed <= 0;
ewYellow<= 0;
if(count <8'b11000100)
begin
count <= count+1;
if (count==8'b11000100)
begin
state <= ewwait;
count <= 0;
end
end
end
ewwait: begin
if (!snCar)
begin
ewGreen <= 1;
snRed <= 1;
snYellow<= 0;
snGreen <= 0;
ewRed <= 0;
ewYellow<= 0;
end
else state <= ewyellow ;
end
ewyellow: begin
ewYellow <= 1;
snRed <= 1;
snYellow <= 0;
snGreen <= 0;
ewRed <= 0;
ewGreen <= 0;
if(count <8'b00000100)
begin
count <= count+1;
if (count==8'b00000100)
begin
state <= sngreen;
count <= 0;
end
end
end
sngreen: begin
snGreen <= 1;
ewRed <= 1;
snRed <= 0;
snYellow<= 0;
ewYellow<= 0;
ewGreen <= 0;
if(count <8'b11000100)
begin
count <= count+1;
if (count==8'b11000100)
begin
state <= snwait;
count <= 0;
end
end
end
snwait:begin
if (!ewCar)
begin
snGreen <= 1;
ewRed <= 1;
snRed <= 0;
snYellow<= 0;
ewYellow<= 0;
ewGreen <= 0;
end
else state <= snyellow ;
end
snyellow: begin
snYellow <= 1;
ewRed <= 1;
snRed<=0;
snGreen<=0;
ewYellow<=0;
ewGreen<=0;
if(count <8'b00000100)
begin
count <= count+1;
if (count==8'b00000100)
begin
state <= ewgreen;
count <= 0;
end
end
end
default: state <= ewyellow;
endcase
endmodule
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?