基于FPGA的交通灯设计Verilog代码ISE仿真
名称:基于FPGA的交通灯设计Verilog代码ISE仿真
软件:ISE
语言:Verilog
代码功能:
整体功能要求
根据交通规则管理一个十字路口的交通灯。
基本指标
(1)设置两组红、黄、绿灯:南北方向的红、黄、绿灯,东西方向的红、黄、绿灯。
(2)设置两组时间显示,南北方向和东西方向各一组,用倒计时方式显示通行时间(绿灯)、禁止时间(红灯)和等待时间(黄灯)的剩余时间,每秒变化一次。
(3)管理器的基本工作状态有四种
a、南北绿灯,东西红灯;
b、南北黄灯,东西红灯;
c、南北红灯,东西绿灯;
d、南北红灯,东西黄灯。
(4)各方向绿灯时间30s,黄灯时间5s,红灯时间35s
(5)在以上基础上,使绿灯时间可以在15s~100s之间可调,黄灯时间在3s~15s之间可调。(红灯时间应与两者之和保持一致。)
(6)在以上基础上,设置一组按键,可进入、退出夜间模式,在夜间模式下,各方向均跳黄灯(但不倒计时),以保证各方向慢行通过
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. 管脚分配

部分代码展示:
//交通灯控制模块 module control( input clk_1Hz, input clk_in, input key_night,//夜间模式控制 input key_NSG_add,//南北方向绿灯加 input key_EWG_add,//东西方向绿灯加 //南北方向灯 output reg NSR,// output reg NSG,// output reg NSY,// //东西方向灯 output reg EWR,// output reg EWG,// output reg EWY, output reg [7:0] NS_number,//南北数据显示 output reg [7:0] EW_number//东西数据显示 ); reg [7:0]NSG_time=8'd30; wire [7:0]NSY_time; reg [7:0]EWG_time=8'd30; wire [7:0]EWY_time; //定义路口个灯持续时间,修改此处时间 //assign NSG_time=8'd30;//南北绿灯30秒 assign NSY_time=8'd5;//南北黄灯5秒 //assign EWG_time=8'd30;//东西绿灯30秒 assign EWY_time=8'd5;//东西黄灯5秒 always@(posedge clk_1Hz) if(key_NSG_add) if(NSG_time<8'd99) NSG_time<=NSG_time+8'd1; else NSG_time<=8'd15; else NSG_time<=NSG_time; always@(posedge clk_1Hz) if(key_EWG_add) if(EWG_time<8'd99) EWG_time<=EWG_time+8'd1; else EWG_time<=8'd15; else EWG_time<=EWG_time; //定义5个状态 parameter NSG_state=3'd1; parameter NSY_state=3'd2; parameter EWG_state=3'd3; parameter EWY_state=3'd4; parameter night_state=3'd0; reg [2:0] state=3'd0; reg [7:0] NSG_cnt=8'd1; reg [7:0] NSY_cnt=8'd1; reg [7:0] EWG_cnt=8'd1; reg [7:0] EWY_cnt=8'd1; always@(posedge clk_1Hz or posedge key_night) if(key_night) state<=night_state;//夜间模式控制 else case(state) NSG_state: if(NSG_cnt<NSG_time) begin//南北绿灯 state<=NSG_state; NSG_cnt<=NSG_cnt+8'd1; end else begin state<=NSY_state;//计数到后到下一状态 NSG_cnt<=8'd1; end NSY_state: if(NSY_cnt<NSY_time) begin//南北黄灯 state<=NSY_state; NSY_cnt<=NSY_cnt+8'd1; end else begin state<=EWG_state;//计数到后到下一状态 NSY_cnt<=8'd1; end EWG_state: if(EWG_cnt<EWG_time) begin//东西绿灯 state<=EWG_state; EWG_cnt<=EWG_cnt+8'd1; end else begin state<=EWY_state;//计数到后到下一状态 EWG_cnt<=8'd1; end EWY_state: if(EWY_cnt<EWY_time) begin//东西黄灯 state<=EWY_state; EWY_cnt<=EWY_cnt+8'd1; end else begin state<=NSG_state;//计数到后到下一状态 EWY_cnt<=8'd1; end default:state<=NSG_state; endcase
代码文件(付费下载):
![]()
![]()
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 基于FPGA的交通灯设计Verilog代码ISE仿真
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 基于FPGA的交通灯设计Verilog代码ISE仿真