名称:交通信号灯控制器设计Verilog代码VIVADO仿真
软件:VIVADO
语言:Verilog
代码功能:
交通信号灯控制器
功能要求:
1、设计一个交通信号灯控制器,由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。用传感器或逻辑开关作检测车辆是否到来的信号;
2、主干道处于常允许通行的状态,支干道有车来时才允许通行。主干道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯;
3、主、支干道均有车时,两者交替允许通行,主干道每次放行时间A,支干道每次放行时间B,设立A、B计时显示电路;在每次由绿灯亮到红灯亮的转换过程中,要亮黄灯C时间作为过渡,使行驶中的车辆有时间停到禁行线外,设立C计时显示电路。时间A>B>C。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. 状态图
000表示M_G_state状态
一共4个状态。
M_G_state为主干道绿灯45秒状态,M_Y_state为主干道黄灯5秒状态,B_G_state为支干道绿灯25秒状态,B_Y_state为支干道5s黄灯状态。
5. RTL图
6. Testbench
7. 仿真图
主干道绿灯45秒,主干道黄灯5秒,支干道绿灯25秒,支干道5s黄灯
部分代码展示:
//顶层模块 module traffic_LED( clk_in,//时钟 car_come,//支路车检测,高电平表示支干道有车 main_R,//主干道红灯 main_G,//主干道绿灯 main_Y,//主干道黄灯 branch_R,//支干道红灯 branch_G,//支干道绿灯 branch_Y,//支干道黄灯 bit_sel,//数码管位选 seg_sel//数码管段选 ); input wireclk_in; input wirecar_come; output wiremain_R; output wiremain_G; output wiremain_Y; output wirebranch_R; output wirebranch_G; output wirebranch_Y; output wire[3:0] bit_sel; output wire[7:0] seg_sel; wireclk_1Hz; wire[7:0] Branch_road; wire[7:0] Main_road; //分频模块 fengpingb2v_inst( .clk_in(clk_in), .clk_1Hz(clk_1Hz)); //红绿灯控制模块 light_ctrlb2v_inst1( .clk_in(clk_in), .clk_1Hz(clk_1Hz), .car_come(car_come), .main_R(main_R), .main_G(main_G), .main_Y(main_Y), .branch_R(branch_R), .branch_G(branch_G), .branch_Y(branch_Y), .Branch_road(Branch_road), .Main_road(Main_road));
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=888
363