名称:通用交通灯带倒计时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
设计文档(文档点击可下载):
红绿灯设计文档.doc