基于FPGA的交通红绿灯控制器_基于fpga的ddr3控制器

2020-02-27 其他范文 下载本文

基于FPGA的交通红绿灯控制器由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“基于fpga的ddr3控制器”。

基于FPGA的交通红绿灯控制器

姓名:

学号:

专业:

班级:

目录

1.设计思路...................................................3 1.1设计思想..............................................3 1.2 系统功能与要求.......................................1 1.3总体设计.............................错误!未定义书签。2.主要模块设计程序...........................................4 2.1主控制模块............................................4 2.2主程序................................................5 2.3定时计数器模块

3.所实现功能说明...........................错误!未定义书签。

3.1实现功能.............................................14 3.2仿真波形.............................................14 4.所设计原理图及故障分析...................错误!未定义书签。5.心得体会..................................错误!未定义书签。参考文献....................................................18 附录1 元件清单.............................错误!未定义书签。附录2 管脚.................................................20

1.设计思路

1.1设计思想

交通灯是城市交通监管系统的重要组成部分,对于保证机动车辆的安全运行,维持城市道路的顺畅起到了重要作用。目前很多城市交叉路口的交通灯实行的是定时控制,灯亮的时间是预先设定好的,在时间和空间方面的应变性能较差,一定程度上造成了交通资源的浪费,加重了道路交通压力。本文利用FPGA的相关知识设计了交通灯控制系统,可以根据实际情况,交通拥堵时由交通警察人工控制某方向上的放行时间,以便按照交通负荷疏导阻塞车辆。整个设计系统通过Max+PlusⅡ软件进行了模拟仿真,并下载到FPGA器件中进行硬件的调试,验证了设计的交通信号灯控制电路完全可以实现预定的功能,具有一定的实用性。

1.2 系统功能与要求

交通红绿灯控制器,假定十字交叉路口的两个方向各有一组红,黄,绿三个灯组成的交通灯设计一个可以由交通警察人工控制的红绿灯控制器,要求:(1)正常时,交通放行十字交叉路口的横纵两个方向,放行时间相等;(2)交通堵塞时,由交通警察人工控制某个方向的放行时间,以便按照交通负荷疏导阻塞车辆;

(3)在正常运行状态下,两组交通灯按以下规律自动进行转换,在不同时刻分别放行不同方向的车辆:

(绿,红)2s→(绿,黄红)0.5s→(黄,红)2s→(黄红,红)2s→(红,黄)1s→(红,绿)5s→(红,黄绿)0.5s→(红,黄)2s→(红,黄绿)2s→(黄,红)1s→(绿,红)3s(括号内以逗号分割的分别为横,纵两方向点亮的交通灯,横向红绿黄灯分别用LEDR0,LEDG0,LEDG1,表示,纵向红绿黄分别用LEDR4,LEDG4,LEDG5表示)

(4)人工控制放行的方法是,在欲放行某个方向时按下该方向的“放行”按钮(控制)横向使用KEY0控制纵方向使用KEY1),则红绿灯自动将相应方向的道路方向,此后不会放行另一方向的道路,这时候若只按一次“恢复到正常状态”(KEY3),则整个系统恢复到正常运行状态。

(5)可使用VERLOG HDL语言和原理图来设计系统并对系统进行仿真和下载验证。

图1 十字路口示意图

1.3 总体设计

交通灯控制器系统框图如下图所示所示,包括置数模块,计数模块,和主控制器模块。置数模块将交通灯的点亮时间预置到置数电路中,计数模块以秒为单位倒计时,当计数值减为零时,主控电路改为输出状态,电路进入下一个状态的倒计时。为了简化设计和结构清晰,将置数模块,计数模块视为整个电路的数据通道,与主控制器模块构成了“数据通道+控制器”的系统结构。因为将定时计数器划归到了数据通道,使得控制器的状态数大大减少,主控制部分可以按照有限状态机设计。

2.主要模块设计程序

2.1 主控制模块

交通灯控制原理图:

根据对设计要求的分析,主控单元的输入信号有:(1)时钟信号;

(2)复位清零信号reset(reset=1表示系统复位恢复到正常状态);

(3)按键信号KEY(由KEY0,KEY1,KEY3组成,KEY0=1表示横向方向放行车辆,横向亮绿灯,纵向亮红灯;KEY1=1,表示纵向方向放行车辆,纵向亮绿灯,横向亮红灯;KEY3=1表示恢复到正常状态);(4)定时计

器的输

sensor

(由sensor1,sensor2,sensor3,sensor4,sensor5组成,该信号为高电平时,分别表示2s,0.5s,1s,5s,3s的计时完成)。输出信号有:

(1)横向交通灯控制信号(LEDR0,LEDG0,LEDG1);(2)纵向交通灯控制信号(LEDR4,LEDG4,LEDG5);(3)控制状态信号:state(输出到定时计数器,分别表示2s,0.5s,1s,5s,3s计时)。

主控单元的状态转移图:

主控制模块程序:

module traffic_control(clock,reset,KEY,sensor,LEDR0,LEDG0,LEDG1,LEDR4,LEDG4,LEDG5);input clock,reset,KEY,sensor;

output LEDR0,LEDG0,LEDG1,LEDR4,LEDG4,LEDG5;parameter st0=0,st1=1,st2=2,st3=3,st4=4,st5=5,st6=6,st7=7,st8=8,st9=9,st10=10,st11=11;reg[2:0] state,nxstate;reg LEDR0,LEDG0,LEDG1,LEDR4,LEDG4,LEDG5;always @(posedge clock)begin if(!reset)state=st1;else state=nxstate;end always @(state or KEY or sensor)begin case(state)st1:begin if(KEY0)begin nxstate=st1;LEDR0=1'b0;LEDG0=1'b1;LEDG1=1'b0;LEDR4=1'b1;LEDG4=1'b0;LEDG5=1'b0;end else if(KEY1)begin LEDR0=1'b1;LEDG0=1'b0;LEDG1=1'b0;LEDR4=1'b0;LEDG4=1'b1;LEDG5=1'b0;nxstate=st6;end else if(KEY3)LEDR0=1'b0;LEDG0=1'b;LEDG1=1'b0;LEDR4=1'b1;LEDG4=1'b0;LEDG5=1'b0;nxstate=st1;else if(sensor1)begin LEDR0=1'b0;LEDG0=1'b1;LEDG1=1'b1;LEDR4=1'b1;LEDG4=1'b0;LEDG5=1'b0;nxstate=st2;end end end st2:begin if(KEY0)begin LEDR0=1'b0;LEDG0=1'b1;LEDG1=1'b0;LEDR4=1'b1;LEDG4=1'b0;LEDG5=1'b0;nxstate=st1;end else if(KEY1)begin LEDR0=1'b1;LEDG0=1'b0;LEDG1=1'b0;LEDR4=1'b0;LEDG4=1'b1;LEDG5=1'b0;nxstate=st6;end else if(KEY3)LEDR0=1'b0;LEDG0=1'b1,LEDG1=1'b1;LEDR4=1'b1;LEDG4=1'b0,LEDG5=1'b0;nxstate=st2;else if(sensor2)begin LEDR0=1'b0;LEDG0=1'b0;LEDG1=1'b1;LEDR4=1'b1;LEDG4=1'b0;LEDG5=1'b0;nxstate=st3;end end end st3:begin if(KEY0)begin LEDR0=1'b0;LEDG0=1'b1;LEDG1=1'b0;LEDR4=1'b1;LEDG4=1'b0;LEDG5=1'b0;nxstate=st1;end else if(KEY1)begin LEDR0=1'b1;LEDG0=1'b0;LEDG1=1'b0;LEDR4=1'b0;LEDG4=1'b1;LEDG5=1'b0;nxstate=st6;end else if(KEY3)LEDR0=1'b0;LEDG0=1'b0;LEDG1=1'b1;LEDR4=1'b1;LEDG4=1'b0;LEDG5=1'b0;nxstate=st3;else if(sensor1)begin LEDR0=1'b1;LEDG0=1'b0;LEDG1=1'b1;LEDR4=1'b1;LEDG4=1'b0;LEDG5=1'b0;nxstate=st4;end end end st4:begin if(KEY0)begin LEDR0=1'b0;LEDG0=1'b1;LEDG1=1'b0;LEDR4=1'b1;LEDG4=1'b0;LEDG5=1'b0;nxstate=st1;end else if(KEY1)begin LEDR0=1'b1;LEDG0=1'b0;LEDG1=1'b0;LEDR4=1'b0;LEDG4=1'b1;LEDG5=1'b0;nxstate=st6;end else if(KEY3)LEDR0=1'b1;LEDG0=1'b0;LEDG1=1'b1;LEDR4=1'b1;LEDG4=1'b0;LEDG5=1'b0;nxstate=st4;else if(sensor1)begin LEDR0=1'b1;LEDG0=1'b0;LEDG1=1'b0;LEDR4=1'b0;LEDG4=1'b0;LEDG5=1'b1;nxstate=st5;end end end st5:begin if(KEY0)begin LEDR0=1'b0;LEDG0=1'b1;LEDG1=1'b0;LEDR4=1'b1;LEDG4=1'b0;LEDG5=1'b0;nxstate=st1;end else if(KEY1)begin LEDR0=1'b1;LEDG0=1'b0;LEDG1=1'b0;LEDR4=1'b0;LEDG4=1'b1;LEDG5=1'b0;nxstate=st6;end else if(KEY3)LEDR0=1'b1;LEDG0=1'b0;LEDG1=1'b0;LEDR4=1'b0;LEDG4=1'b0;LEDG5=1'b1;nxstate=st5;else if(sensor3)begin LEDR0=1'b1;LEDG0=1'b0;LEDG1=1'b0;LEDR4=1'b0;LEDG4=1'b1;LEDG5=1'b0;nxstate=st6;end end end st6:begin if(KEY0)begin LEDR0=1'b0;LEDG0=1'b1;LEDG1=1'b0;LEDR4=1'b1;LEDG4=1'b0;LEDG5=1'b0;nxstate=st1;end else if(KEY1)begin LEDR0=1'b1;LEDG0=1'b0;LEDG1=1'b0;LEDR4=1'b0;LEDG4=1'b1;LEDG5=1'b0;nxstate=st6;end else if(KEY3)LEDR0=1'b1;LEDG0=1'b0;LEDG1=1'b0;LEDR4=1'b0;LEDG4=1'b1;LEDG5=1'b0;nxstate=st6;else if(sensor4)begin LEDR0=1'b1;LEDG0=1'b0;LEDG1=1'b0;LEDR4=1'b0;LEDG4=1'b1;LEDG5=1'b1;nxstate=st7;end end end st7:begin if(KEY0)begin LEDR0=1'b0;LEDG0=1'b1;LEDG1=1'b0;LEDR4=1'b1;LEDG4=1'b0;LEDG5=1'b0;nxstate=st1;end else if(KEY1)begin LEDR0=1'b1;LEDG0=1'b0;LEDG1=1'b0;LEDR4=1'b0;LEDG4=1'b1;LEDG5=1'b0;nxstate=st6;end else if(KEY3)LEDR0=1'b1;LEDG0=1'b0;LEDG1=1'b0;LEDR4=1'b0;LEDG4=1'b1;LEDG5=1'b1;nxstate=st7;else if(sensor2)begin LEDR0=1'b1;LEDG0=1'b0;LEDG1=1'b0;LEDR4=1'b0;LEDG4=1'b0;LEDG5=1'b1;nxstate=st8;end end end st8:begin if(KEY0)begin LEDR0=1'b0;LEDG0=1'b1;LEDG1=1'b0;LEDR4=1'b1;LEDG4=1'b0;LEDG5=1'b0;nxstate=st1;end else if(KEY1)begin LEDR0=1'b1;LEDG0=1'b0;LEDG1=1'b0;LEDR4=1'b0;LEDG4=1'b1;LEDG5=1'b0;nxstate=st6;end else if(KEY3)LEDR0=1'b1;LEDG0=1'b0;LEDG1=1'b0;LEDR4=1'b0;LEDG4=1'b0;LEDG5=1'b1;nxstate=st8;else if(sensor1)begin LEDR0=1'b1;LEDG0=1'b0;LEDG1=1'b0;LEDR4=1'b1;LEDG4=1'b0;LEDG5=1'b1;nxstate=st9;end end end st9:begin if(KEY0)begin LEDR0=1'b0;LEDG0=1'b1;LEDG1=1'b0;LEDR4=1'b1;LEDG4=1'b0;LEDG5=1'b0;nxstate=st1;end else if(KEY1)begin LEDR0=1'b1;LEDG0=1'b0;LEDG1=1'b0;LEDR4=1'b0;LEDG4=1'b1;LEDG5=1'b0;nxstate=st6;end else if(KEY3)LEDR0=1'b1;LEDG0=1'b0;LEDG1=1'b0;LEDR4=1'b1;LEDG4=1'b0;LEDG5=1'b1;nxstate=st9;else if(sensor1)begin LEDR0=1'b0;LEDG0=1'b0;LEDG1=1'b1;LEDR4=1'b1;LEDG4=1'b0;LEDG5=1'b0;nxstate=st10;end end end st10:begin if(KEY0)begin LEDR0=1'b0;LEDG0=1'b1;LEDG1=1'b0;LEDR4=1'b1;LEDG4=1'b0;LEDG5=1'b0;nxstate=st1;end else if(KEY1)begin LEDR0=1'b1;LEDG0=1'b0;LEDG1=1'b0;LEDR4=1'b0;LEDG4=1'b1;LEDG5=1'b0;nxstate=st6;end else if(KEY3)LEDR0=1'b0;LEDG0=1'b0;LEDG1=1'b1;LEDR4=1'b1;LEDG4=1'b0;LEDG5=1'b0;nxstate=st10;else if(sensor3)begin LEDR0=1'b0;LEDG0=1'b1;LEDG1=1'b0;LEDR4=1'b1;LEDG4=1'b0;LEDG5=1'b0;nxstate=st1;end end end endcase end endmodule 2.3 定时器模块

《基于FPGA的交通红绿灯控制器.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
基于FPGA的交通红绿灯控制器
点击下载文档
相关专题 基于fpga的ddr3控制器 交通 红绿灯 控制器 基于fpga的ddr3控制器 交通 红绿灯 控制器
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文