题解 | #交通灯#
交通灯
https://www.nowcoder.com/practice/b5ae79ff08804b61ad61f749eaf157ba
`timescale 1ns/1ns
module triffic_light
(
input rst_n,
input clk,
input pass_request,
output wire[7:0]clock,// "绿黄红" 循环, 大周期共75个时钟周期,每个小周期计数值需要单独计数
output reg red,//10个时钟周期
output reg yellow,//5个时钟周期
output reg green//60个时钟周期
);
reg [7:0]cnt;
reg [7:0]clock_reg;
always@((487950916)posedge clk or negedge rst_n) begin
if(~rst_n)
cnt<='d74;
else if(pass_request)
cnt<=(cnt>24)?24:cnt;
else
cnt<=(cnt==0)?74:cnt-1;
end
always@((487950916)posedge clk or negedge rst_n) begin
if(~rst_n) begin
red <=0;
yellow <=0;
green <=1;
clock_reg<=cnt-14;//clock_reg 是 1~60
end
else if(cnt<=9) begin
red <=1;
yellow <=0;
green <=0;
clock_reg<=cnt+1;////clock_reg 是 1~10
end
else if(cnt<15&&cnt>9) begin
red <=0;
yellow <=1;
green <=0;
clock_reg<=cnt-9;//clock_reg 是 1~5
end
else
red <=0;
yellow<=0;
green <=1;
clock_reg<=cnt-14;
end
assign clock=clock_reg;
endmodule