通用交通灯带倒计时quartus红绿灯时间可调

发布时间:2023年12月21日

名称:通用交通灯带倒计时quartus红绿灯时间可调(代码在文末付费下载)

软件:Quartus

语言:Verilog

要求:

????设计十字路口交通灯,具有倒计时功能,红绿灯时间代码可设置,本工程为交通灯通用代码,其他交通灯控制器可通过本代码简单修改得到。

代码下载地址:hdlcode.com

通用交通灯带倒计时quartus红绿灯时间可调_Verilog/VHDL资源下载

顶层模块代码:

module?Traffic_Light_Control(
input?clk,//500hz
input?car_detection,//car_detection==1时,主路支路交替通通行,等于0时只主路通行
output?R1,//(主干道)高电平亮
output?G1,//(主干道)高电平亮
output?Y1,//(主干道)高电平亮
output?R2,//(支干道)高电平亮
output?G2,//(支干道)高电平亮
output?Y2,//(支干道)高电平亮
output?[7:0]?HEX0,//(主干道)数码管0
output?[7:0]?HEX1,//(主干道)数码管1
output?[7:0]?HEX2,//(支干道)数码管2
output?[7:0]?HEX3//(支干道)数码管3
);

?wire?clk_1;
?wire?[7:0]?G1_BCD;
?wire?[7:0]?Y1_BCD;
?wire?[7:0]?R1_BCD;
?wire?[7:0]?G2_BCD;
?wire?[7:0]?Y2_BCD;
?wire?[7:0]?R2_BCD;
?wire?[7:0]?SMG1;
?wire?[7:0]?SMG2;
?
wire?R1_led;
wire?G1_led;
wire?Y1_led;

wire?R2_led;
wire?G2_led;
wire?Y2_led;

wire?G1_flash;
wire?G2_flash;

assign?R1=R1_led;
assign?G1=G1_led?&?~G1_flash;
assign?Y1=Y1_led;

assign?R2=R2_led;
assign?G2=G2_led?&?~G2_flash;
assign?Y2=Y2_led;


//分频到1hz(脉冲发生器)
div?U0
(
.?clk(clk),
.?clk_1(clk_1)//输出1Hz
);


//红绿灯时间,红灯时间是绿灯加黄灯时间
wire[7:0]??G1_time;
wire[7:0]??Y1_time;
wire[7:0]??G2_time;
wire[7:0]??Y2_time;
//当主干道、支干道均有车时,两者交替允许通行,
//主干道每次通行60秒,支干道每次通行15秒,
//在每次由绿灯向红灯转换的过程中,要亮3秒的黄灯作为过渡
//绿灯闪烁4s再变黄灯
assign??G1_time=8'd60;//主干道每次通行60秒
assign??Y1_time=8'd3;//亮3秒的黄灯作为过渡
assign??G2_time=8'd15;//支干道每次通行15秒
assign??Y2_time=8'd3;//亮3秒的黄灯作为过渡

//交通灯控制模块(状态控制器)
RGY?U1(
.?clk_1(clk_1),
.?no_car_detection(~car_detection),//车辆检测,主干道处于长允许通行状态,而支干道有车来时才允许通行,car_detection==1表示支路有车

.?R1(R1_led),
.?G1(G1_led),
.?Y1(Y1_led),

.?R2(R2_led),
.?G2(G2_led),
.?Y2(Y2_led),

.?G1_time(G1_time),
.?Y1_time(Y1_time),
.?G2_time(G2_time),
.?Y2_time(Y2_time),

.?G1_BCD(G1_BCD),//绿灯时间
.?Y1_BCD(Y1_BCD),//黄灯时间
.?R1_BCD(R1_BCD),//红灯时间
.?G2_BCD(G2_BCD),//绿灯时间
.?Y2_BCD(Y2_BCD),//黄灯时间
.?R2_BCD(R2_BCD)//红灯时间
);

//显示数据(计数器)
SMG?U2(
.?clk(clk),

.?R1(R1_led),
.?G1(G1_led),
.?Y1(Y1_led),

.?R2(R2_led),
.?G2(G2_led),
.?Y2(Y2_led),

.?G1_BCD(G1_BCD),
.?Y1_BCD(Y1_BCD),
.?R1_BCD(R1_BCD),
.?G2_BCD(G2_BCD),
.?Y2_BCD(Y2_BCD),
.?R2_BCD(R2_BCD),

.?G1_time(G1_time),
.?Y1_time(Y1_time),
.?G2_time(G2_time),
.?Y2_time(Y2_time),

.?SMG1(SMG1),//数码管显示
.?SMG2(SMG2)//数码管显示
);

//闪烁控制电路
FLASH_ctrl?i_FLASH_ctrl(
.?clk_1(clk_1),
.?G1_BCD(G1_BCD),//主路绿灯计时
.?G2_BCD(G2_BCD),//支路绿灯计时
.?G1_flash(G1_flash),
.?G2_flash(G2_flash)
);

//数码管译码器	
HEX?U3
(
.?clk(clk),
.?SMG_1(SMG1),//数码管数据显示
.?SMG_2(SMG2),//数码管数据显示

.?HEX0(HEX0),//低电平亮
.?HEX1(HEX1),//低电平亮
.?HEX2(HEX2),//低电平亮
.?HEX3(HEX3)//低电平亮
);

endmodule

设计文档(文档点击可下载):

红绿灯设计文档.jpg

红绿灯设计文档.doc

文章来源:https://blog.csdn.net/diaojiangxue/article/details/132774801
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。