基于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


演示视频:

设计文档:

交通灯设计.doc

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仿真

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员