1、红绿灯交通控制的 EDA 设计摘要随着社会经济的发展,城市交通问题越来越引起人们的关注。人、车、路三者关系的协调,已成为交通管理部门需要解决的重要问题之一。城市交通控制系统是用于城市交通数据监测、交通信号灯控制与交通疏导的计算机综合管理系统,它是现代城市交通监控指挥系统中最重要的组成部分。本文基于 XILINX ISE 设计软件及 Modelsim 仿真软件,采用 Verilog HDL 语言描述,设计了一个十字路口的交通灯控制电路,该电路能自动控制十字路口两组红、黄、绿交通灯的状态转换,实现十字路口(主干道和次干道)自动化。设计给出了原理图、相应的程序、RTL 简图及仿真结果。关键词: 交通
2、灯 控制电路 主次干道 ISE VHDL 引言课程设计背景随着世界范围内城市化和机动化进程的加快,城市交通越来越成为一个全球化的问题。城市交通基础设施供给滞后于高速机动化增长需求,道路堵塞日趋加重,交通事故频繁,环境污染加剧等问题普遍存在。目前,全国大中城市普遍存在着道路拥挤、车辆堵塞、交通秩序混乱的现象,交通事故频发,这给人民的生命财产安全带来了极大的损失。如何解决城市交通问题已成为全社会关注的焦点和大众的迫切呼声。探究城市交通发展中存在问题的原因,无论是从宏观上还是从微观上分析,其根本原因在于城市交通系统的管理机制不适应。城市交通控制系统(UTC ,Urban Traffic Contro
3、l System)是现代城市智能交通系统(IDJ ,Intelligent transport system)的组成之一,主要用于城市道路交通的控制与管理。城市平交路口实现交通信号控制是城市交通管理现代化的基本标志之一,是提高交通管理效能的重要技术手段。路口信号控制器是控制交叉路口交通信号的设备,它是交通信号控制的重要组成部分。各种交通控制方案,最终都要由路口信号控制器来实现。为了确保十字路口的行人和车辆顺利、畅通地通过,往往采用电子控制的交通信号来进行指挥。伴随着社会的发展以及人类生活水平的提高,汽车的数量在不断增加,EDA 技术的发展和应用领域也在不断的扩大与深入,机械、电子、通信、航空航
4、天、化工、矿产、生物、医学、军事等各个领域的重要性日益突出。利用 EDA 技术设计交通灯来完成这个需求就显的更加迫切,同样也是非常的实用和合理。课程设计目的a.掌握十字路口交通灯控制的设计原理,并能够运用 VHDL 编程语言编写出实验程序,进一步对所学的 EDA 知识进行掌握与实际应用。b.学会在 MAX+plus 软件环境中仿真,熟悉软件的基本操作和运行环境。c.锻炼自己获取信息的能力,以及能够独立自主的思考和解决问题的能力。1、 系统分析与总体方案11 系统分析要实现十字路口的交通灯控制,则必须满足主干道上是黄灯或者是绿灯时,次干道上为红灯以及次干道上为黄灯或绿灯时,主干道上为红灯,即主干
5、道上红灯时间为次干道上绿灯时间和黄灯时间之和,次干道上红灯为主干道上黄灯时间和绿灯时间之和。所以,由分析可知主干道上红灯、黄灯、绿灯的时间分别为 20s,5s,35s;次干道上红灯、黄灯、绿灯的时间分别为 40s,5s,15s。在设计中就是使得每一次主干道上红灯亮时主干道上计数器从 34 秒开始倒计时,此时次干道上先是绿灯亮从 14 秒开始倒计时到零,次干道上绿灯变为黄灯,当次干道黄灯倒计时到零时,主干道红灯也倒计时到零;接着主干道变为绿灯从 34 秒开始倒计时,次干道为红灯从 39 秒开始倒计时,到主干道绿灯变为零时,主干道上黄灯亮从 4秒开始倒计时,计时到零,之后主干道上变为红灯,次干道上
6、为绿灯,如此循环。将其状态数字化可以的到如下所示的状态表。由于其是主干道和次干道的控制,所以本设计采用两个控制电路进行。状态 主绿 主黄 主红 次绿 次黄 次红S0 1 0 0 0 0 1S1 0 1 0 0 0 1S2 0 0 1 1 0 0S3 0 0 1 0 1 012 总体设计交通灯控制系统的原理框图下图所示。其主要包括分频器模块,控制电路模块(主干道为 A、次干道为 B) ,分位模块和译码电路模块。2、 系统各模块的设计21 分频器2.1.1 分频器的功能将 FPGA 内部频率为 48MHz 的时钟信号进行分频,以产生频率为 1hz 的信号,来驱动控制电路 A 和 B 来实现倒计时功
7、能。2.1.2 分频器的模块图2.1.2 分频器 VHDL 程序entity FENPIN isport(CLK:in std_logic;CLK1:out std_logic);end FENPIN;architecture Behavioral of FENPIN issignal f1: integer:=0;signal clk1_out: std_logic:=1;beginprocess(clk)beginif clkevent and clk=1 thenif f1=23999999 thenf1cntcntcntcntcntcntcntcnt=0;LAMPB=“000“;end
8、 case;else if cnt=0 then tempb=0;cnt=cnt;else cnt=cnt-1;end if;end if;end if; end if;end process;BCOUNT=“00000000“ when cnt=0 else“00000001“ when cnt=1 else“00000010“ when cnt=2 else“00000011“ when cnt=3 else“00000100“ when cnt=4 else“00000101“ when cnt=5 else“00000110“ when cnt=6 else“00000111“ whe
9、n cnt=7 else“00001000“ when cnt=8 else“00001001“ when cnt=9 else“00010000“ when cnt=10 else“00010001“ when cnt=11 else“00010010“ when cnt=12 else“00010011“ when cnt=13 else“00010100“ when cnt=14 else“00010101“ when cnt=15 else“00010110“ when cnt=16 else“00010111“ when cnt=17 else“00011000“ when cnt=
10、18 else“00011001“ when cnt=19 else“00100000“ when cnt=20 else“00100001“ when cnt=21 else“00100010“ when cnt=22 else“00100011“ when cnt=23 else“00100100“ when cnt=24 else “00100101“ when cnt=25 else“00100110“ when cnt=26 else“00100111“ when cnt=27 else“00101000“ when cnt=28 else“00101001“ when cnt=29
11、 else“00110000“ when cnt=30 else“00110001“ when cnt=31 else“00110010“ when cnt=32 else“00110011“ when cnt=33 else“00110100“ when cnt=34 else“00110101“ when cnt=35 else“00110110“ when cnt=36 else“00110111“ when cnt=37 else“00111000“ when cnt=38 else“00111001“ when cnt=39 else“11111111“;end Behavioral;2.2.3 控制电路仿真程序及仿真结果控制电路 A:tb1 : PROCESSBEGINEN=0;wait for 10 ns;EN=1;wait;END PROCESS;tb2 : PROCESSBEGINCLK1=0;wait for 10 ns;