基于FPGA技术的交通灯控制系统设计

时间:2022-10-29 07:14:02

基于FPGA技术的交通灯控制系统设计

摘 要:交通灯控制系统在城市交通监管中起着极其重要的作用。应用VHDL语言,在Altera公司的Max+Plus Ⅱ软件环境下,通过模块化编程完成了灯亮时间可调的交通灯控制系统设计,并进行了逻辑综合、仿真和硬件下载,系统的软件仿真和实验测试结果满足了设计要求,达到了预期的效果。由于设计采用了EDA技术,不但大大缩短了开发研制周期,提高了设计效率,而且使系统具有设计灵活,实现简单,性能稳定的特点。

关键词:交通灯控制;FPGA;VHDL;仿真

中图分类号:TP312 文献标识码:B 文章编号:1004373X(2008)1719003

Design of Traffic Light Controller Based on FPGA

LI Guodong,REN Zhiping

(School of Electronic Engineering,Xi′an Shiyou University,Xi′an,710065,China)

Abstract:The traffic light controller has become an indispensable part of the traffic systems,playing an important role in the traffic supervision.This paper realizes the design of traffic light controller whose flickering times is adaptively changeable with VHDL.The Max+Plus Ⅱ software automatically completed the VHDL resource program analysis,logic synthesis,optimization and device programming.The results of simulation meet scheme design.With EDA technology,the design has the advantages of facility design,convenient operation,high reliability and the design efficiency is also improved.

Keywords:traffic light control;FPGA;VHDL;simulation

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

1 系统设计要求

所设计的交通信号灯控制电路,主要适用于在两条干道汇合点形成的十字交叉路口,路口设计两组红绿灯分别对两个方向上的交通运行状态进行管理。交通灯的持续闪亮时间由键盘输入控制。灯亮时序如图1所示,当B方向的红灯亮时,A方向对应绿灯亮,由绿灯转换成红灯的过渡阶段黄灯亮,即B方向红灯亮的时间等于A方向绿灯和黄灯亮的时间之和。同理,当A方向的红灯变亮时,B方向的交通灯也遵循此规则。各干道上安装有数码管,以倒计时的形式显示本道各信号灯闪亮的时间。当出现特殊情况时,各方向上均亮红灯,倒计时停止。特殊运行状态结束后,控制器恢复原来的状态,继续运行。

2 系统整体设计

整个系统设计如图2所示,该系统主要由计数模块、控制模块、分频模块、分位模块以及显示电路构成。其中分频模块主要将系统输入的基准时钟信号转换为1 Hz的激励信号,驱动计数模块和控制模块工作。控制模块根据计数器的计数情况对交通灯的亮灭及持续时间进行控制,并通过分位电路将灯亮时间以倒计时的形式通过数码管显示出来。图中Reset是复位信号,高电平有效,可以实现对计数器的异步清零。Hold为保持信号,当Hold为“1”,计数器暂停计数,表示出现特殊情况,各方向车辆都处于禁行状态。

3 主要功能模块设计及仿真

3.1 计数模块设计

计数模块主要实现累加循环计数,计数的最大值由键盘输入控制,输出的计数值为控制模块的灯控提供参考,计数器的主程序设计如下:

entity counter is

port

(clock:in std_logic;

reset:in std_logic;---复位信号

hold:in std_logic;

A,B,C:in std_logic_vector(3 downto 0);---键盘输入值

key:out integer range 0 to 255;

countnum:buffer integer range 0 to 255); ---计数值

end;

architecture behavior of counter is

signal keyin: integer range 0 to 255;

begin

keyin

process(reset,clock)

begin

if reset=′1′ then

countnum

elsif rising_edge(clock) then

if hold=′1′ then---出现紧急情况,计数器暂停计数

countnum

elsif countnum=keyin then

countnum

else

countnum

end if;

end if;

end process;

key

end;

计数模块的仿真如图3所示,从图中可以看出,在时钟的驱动下,计数值不断自加,当计数值countnum等于键盘输入值32(key=32)时, 计数返回到0,开始下一轮计数。当Hold检测到特殊情况时置‘1’,使计数器暂停计数。

3.2 控制器模块的仿真设计

在控制器模块中,红、绿、黄三盏灯工作的总时间由键盘输入,各交通灯时间分配规则如下:红灯时间占总时间的1/2,绿灯时间占3/8,黄灯时间占1/8,本设计中键盘输入值为32(key=32),正常情况下红灯亮16 s,绿灯亮12 s,黄灯亮4 s。

控制模块仿真图控制器仿真情况如图4所示,当hold为低电平,计数值countnum

3.3 分位模块设计

分位模块的设计主要是将灯亮时间分为十位和个位,通过两个相应的数码管分别显示出来。本设计中灯亮时间最长不超过40 s(numin

分位模块的仿真如图6所示,numin的数值大小可以通过numA,numB的组合以十进制数值显示,从而实现了分位功能。

4 系统的硬件设计及调试

本系统的主要逻辑设计由一片EP1K30TC144-3芯片完成,编写的VHDL源程序在Altera公司的逻辑综合工具Max+Plus Ⅱ下经过编译和功能仿真测试后,针对下载芯片进行管脚配置,下载到EP1K30TC144-3芯片中,进行相应的硬件调试,调试结果与软件仿真的结果相吻合,验证了设计完成了预定功能。

5 结 语

本文利用硬件描述语言VHDL编程,借助Altera公司的Max+Plus Ⅱ软件环境下进行了编译及仿真测试,通过 FPGA芯片实现了一个实用的交通信号灯控制系统,设计由于采用了EDA技术,不但大大缩短了开发研制周期,提高了设计效率,而且使系统具有设计灵活,实现简单,性能稳定的特点。

参 考 文 献

[1]张明.VHDL实用教程.计算机技术与发展,2008,18(3):181-183.

[2]谭会生,张昌凡,EDA 技术及应用[M].西安:西安电子科技大学出版社,2001.

[3]潘松,王国栋,VHDL 实用教程[M].西安:西安电子科技大学出版社,2000.

[4]张顺兴,数字电路与系统设计[M].南京:东南大学出版社,20004.

[5]徐志军,徐光辉,PLD/FPGA 的开发与应用[M].北京:电子工业出版社,2002.

[6]蒋璇,臧春华,数字系统设计与PLD应用技术[M].北京:电子工业出版社,2006.

[7]王永华,现代电气控制及PLD技术[M].北京:北京航空航天大学出版社,2005.

[8]王成勇,智能交通灯控制系统[J].广东技术师范学院学报,2006(4):92-94.

[9]张海英,余臻,陈燕萍,模糊控制在智能交通灯监控系统中的应用[J].计算机技术与发展,2008,18(3):181-183

上一篇:基于SPCE061A的温湿度测控系统设计与实现 下一篇:基于USB接口的多节点无线测温系统