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

名称:通用交通灯带倒计时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

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

通用交通灯带倒计时quartus红绿灯时间可调_第1张图片

红绿灯设计文档.doc

你可能感兴趣的:(fpga开发)