通用交通灯带倒计时quartus红绿灯时间可调
2023-12-21 11:38:55
名称:通用交通灯带倒计时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
设计文档(文档点击可下载):
文章来源:https://blog.csdn.net/diaojiangxue/article/details/132774801
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!