Quartus交通灯控制器verilog代码仿真
名称:Quartus交通灯控制器verilog代码仿真
软件:Quartus
语言:Verilog
代码功能:
:用 Verilog HDL或VHDL语言设计有限状态机及其附属电路(定时器),实现交通灯控制器。其功能为东西方向、南北方向各红、黄绿三个灯。绿灯每次亮30秒,黄灯每次亮3秒定时器的输入时钟频率为1Hz。状态机的输入时钟与定时器相同,状态机有复位输入,复位后进入某个确定状态。
要求
(1)画出状态转移图;
2)完整的源代码,含有限状态机、附属电路(定时器);(附代码说明文档、或代码详细注释)
(3)仿真波形截图(含简单说明),(可采用任意工具软件,如: Modelsim
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件

2. 程序文件

3. 程序编译

4. 状态图

5. Testbench

6. 仿真图

部分代码展示:
/* 红->绿 绿->黄 黄->红 1、红--计时main_red_times------------------------绿--计时main_green_times---main_yellow_times黄灯---------------红 2、绿--计时branch_green_times---branch_yellow_times黄灯--------------------红--计时branch_reg_times-------------------绿 */ //交通灯控制 module traffic_light( input clk_1Hz,//1Hz input reset,//复位 output reg main_red,//主路灯(东西方向) output reg main_green,// output reg main_yellow,// output reg branch_red,//支路灯(南北方向) output reg branch_green,// output reg branch_yellow ); reg [7:0] main_green_BCD; reg [7:0] main_yellow_BCD; reg [7:0] main_red_BCD; reg [7:0] branch_green_BCD; reg [7:0] branch_yellow_BCD; reg [7:0] branch_red_BCD; parameter main_green_state=3'd0; parameter main_yellow_state=3'd1; parameter branch_green_state=3'd2; parameter branch_yellow_state=3'd3; //定义路口个灯持续时间,修改此处时间 //主路绿灯+主路黄灯=支路红灯时间 //支路绿灯+支路黄灯=主路红灯时间 wire [7:0] main_green_time; wire [7:0] main_yellow_time; wire [7:0] branch_green_time; wire [7:0] branch_yellow_time; assign main_green_time=8'd30; assign main_yellow_time=8'd3; assign branch_green_time=8'd30; assign branch_yellow_time=8'd3; reg [2:0] state=3'd0; reg [7:0] main_green_cnt=8'd1; reg [7:0] main_yellow_cnt=8'd1; reg [7:0] branch_green_cnt=8'd1; reg [7:0] branch_yellow_cnt=8'd1; //主路绿灯+主路黄灯=支路红灯时间 //支路绿灯+支路黄灯=主路红灯时间 always@(posedge clk_1Hz or negedge reset) if(!reset) state<=main_green_state;//reset else case(state) main_green_state: if(main_green_cnt<main_green_time) begin//主路绿灯 state<=main_green_state; main_green_cnt<=main_green_cnt+'d1; end else begin state<=main_yellow_state;//计数到后到下一状态 main_green_cnt<='d1; end main_yellow_state: if(main_yellow_cnt<main_yellow_time) begin//主路黄灯 state<=main_yellow_state; main_yellow_cnt<=main_yellow_cnt+'d1; end else begin state<=branch_green_state;//计数到后到下一状态 main_yellow_cnt<='d1; end branch_green_state: if(branch_green_cnt<branch_green_time) begin//支路绿灯 state<=branch_green_state; branch_green_cnt<=branch_green_cnt+'d1; end else begin state<=branch_yellow_state;//计数到后到下一状态 branch_green_cnt<='d1; end branch_yellow_state: if(branch_yellow_cnt<branch_yellow_time) begin//支路3s黄灯 state<=branch_yellow_state; branch_yellow_cnt<=branch_yellow_cnt+'d1; end else begin state<=main_green_state;//计数到后到下一状态 branch_yellow_cnt<='d1; end default:state<=main_green_state; endcase //交通灯状态控制,state为相应状态时亮相应灯 always@(posedge clk_1Hz ) begin if(state==main_green_state) main_green<=1; else main_green<=0; if(state==main_yellow_state ) main_yellow<=1; else main_yellow<=0; if(state==branch_green_state | state==branch_yellow_state) main_red<=1; else main_red<=0; end //交通灯状态控制,state为相应状态时亮相应灯 always@(posedge clk_1Hz ) begin if(state==branch_green_state) branch_green<=1; else branch_green<=0; if(state==branch_yellow_state ) branch_yellow<=1; else branch_yellow<=0; if(state==main_green_state | state==main_yellow_state) branch_red<=1; else branch_red<=0; end endmodule
代码文件(付费下载):
![]()
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » Quartus交通灯控制器verilog代码仿真
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » Quartus交通灯控制器verilog代码仿真
发表评论
模板文件不存在: ./template/plugins/comment/pc/index.htm