交通灯控制电路的设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
注:0表示灯灭,1表示灯亮。
3、扩展功能
能够用倒计时计数及显示模块,实现有效状态下交通灯的持续亮的时间,且
用数码管显示,方便行人。
二、总体方案设计
方案:用时间控制交通灯的状态转换
1、原理
本方案的主要思想是用时间控制交通灯状态的转换,时间变化是有规律的。
先南北直行红灯亮,而后黄灯亮3秒,再直行绿灯亮27秒,黄灯亮3秒;然后南北转弯绿灯亮,黄灯亮,南北交通灯都亮红灯;东西交通灯以同样规律变化。
(1)每次绿灯变红灯时,要求黄灯先亮3秒,黄灯亮时,绿灯灭。
(2)要求在绿灯亮(通行时间内)和红灯亮(禁止通行时间内)时均有倒计时显示。
所以基本符合现实功能,能够指挥车辆在十字路口完成左转和不同路口的直行。
2、基本功能、扩展功能分析
考虑交通灯的功能,一个十字路口至少需8组交通灯:东西南北各两组,一组指挥转弯,一组指挥直行。
而设计的关键是控制交通灯的亮灭。
考虑南北、东西方向灯的亮灭规律相同,故可以考虑用四组交通灯来模拟实际的八组交通灯:东西两组灯,南北两组灯,分别用来指示转弯和直行。
可用计数器控制时间,在不同的时间显示不同的灯。
根据设计分析,可以采用如下方案实现交通灯显示:通过计数来计时,不同的时间输出不同的使能信号,使各方向的不同交通灯显示不同的颜色。
夜间车少需交通灯,则红灯、绿灯灭,黄灯闪烁使司机明白前方为十字路口,小心行驶。
倒计时显示需设计不同的倒计时计数器,显示不同方向交通灯的显示时间,通过数码管显示时间,使行人方便。
3、总体方案
(1)结构图
(2)主要模块
交通灯设计主要分以下几个模块:时钟分频模块,交通灯亮灭控制模块,交通灯显示模块,倒计时计数模块,倒计时显示模块。
①时钟分频模块可以将10MHz的信号,用一个二进制计数器,对其进行分频,从而得到适合的频率。
选一个合适的作为时间计数器的扫描信号,另外再选一个作为数码管选通电路的触发信号。
本方案是用一个24位的计数器,倒计时计数的周期比较慢,而数码管比较快所以可以将分得的23位和10位分别给两者作为扫描信号。
②交通灯亮灭控制模块,是通过时间的变化来传输的。
条件达到时即进行状态转换。
用一个120的计数器,当时间递减到达93、90、63、60、33、30、3时发生相应的交通灯亮灭的转变。
而时间为0时,重新置为120。
③交通灯显示模块,利用LP2900装置的LED灯,将LED__COM端共阴点即P49=’1’,就可以启动。
由交通灯控制模块来控制交通灯的亮灭变换。
(3)状态转换
状态转换中,任一状态的EN=1的前提,若EN=0均复位为S8状态。
且每个状态下的时间没有到达时,都保持原有状态。
通过这样的分析很容易得出交通灯之间的亮灭转换和时间的变化。
若发生紧急情况就将交通灯的使能端置0,是所有的交通灯都工作在黄灯状态,保证道路的安全。
(4)所需要的外围电路
实验所需部件及功能
管脚号基本功能本实验中具备功能
P56
开关,按下时输出高电平;
没按下时输出为低电平开关按下时:交通灯停止工作,黄灯闪烁;弹起时,交通灯正常工作
P49
发光二极管使能端,
高电平有效
P47
石英晶振输出端,产生10MHz周期
信号做分频器的输入端,用来产生待测信号、开关门信号,即时基、时标
信号
P2、3、4、5、9、10、12、13、14、
15、16、138 12只发光二极管,
高电平发亮
模拟交通灯,不同时刻不同的灯亮
P30、31、32 数码管扫描管脚,三管脚为不同的数时,选择不同的数码管,实现动
态显示
三、各模块的设计
(1)顶层模块的设计
10MHz作为脉冲信号,需要分频,NS、NSL、EW、EWL分别为南北、东西方向的直行和左转灯;GA为7段LED数码管所对应的段;P49为LED__COM端共阴点;P32选择数码管的扫描管脚。
(2)分频模块
10Mhzshi FPGA芯片内部提供的脉冲振荡源,通过24位的计数器可以分得所需的频率。
可以将FREQ10赋给数码管选通显示模块的扫描信号,将FREQ23赋给倒计时交通灯显示模块的扫描信号。
(3)倒计时计数模块
EN=0,赋初值TIME=120;EN=1,TIME=TIME-1;且当TIME=0时,将TIME重新赋初值120。
构成的就是一个8位M120的递减计数器。
(4)交通灯显示模块
TIME的条件达到时,NS、NSL、EW、EWL灯发生相应的变化。
(5)74LS138数码管选通模块
(6)数码管显示模块
四、具体实现及结果
1、实验目的
利用FPGA实现交通灯基本复习了这一学期所学习及实验的VHDL语言和各种技巧。
如:分频器、计数器、译码器(74LS138译码器、7段LED数码管显示器)等知识。
对实体、端口、结构体、进程、元件例化语句等也是很好的复习,同时锻炼了自己的逻辑思维能力,分析能力和c语言的基本知识。
2、实验环境
本实验的逻辑设计平台是LP2900装置,它是力浦电子有限公司在1999年推出的新产品。
能为逻辑设计提供设计、仿真及验证环境。
LP2900是以Xilinx XCS10TQ144芯片为核心设计出来多功能逻辑电路设计实验平台。
分为CPLD芯片板、电源、PC并口下载接口电路与I/O组件实验板等四部分。
有10000门。
而我本次实验所用资源为:四组红黄绿LED、四个共阴极七段显示器、一个数据开关、一个脉冲电路。
即为下图所示。
4、实验结果及分析
(1)软件仿真结果
这与在LP2900装置上仿真所用的信号是不相等的,为了方便看到结果,我将分频后得到的低两位分别作为交通灯状态转换倒计时扫描信号和数码管选通扫描信号。
即CP<=FREQ(0),CP1<=FREQ(1)。
(2)结果分析
上图所示显示初始状态以及其它八个状态之间的转化和时间关系。
虽然图是有所剪切,倒计时不是很完整,但可以通过灯的变化很明显的找出对应的时间。
南北方向的时间变化为:27—>3—>27—>3—>57—>3—>27……;
东西方向的时间变化为:57—>3—>27—>3—>27—>3—>57……;
整个时间的计数:从120开始递减到0后又重新赋值;
南北直行方向的灯的状态为:黄—>绿—>黄—>红—>黄—>绿……;
南北左转方向的灯的状态为:黄—>红—>黄—>绿—>黄—>红……;
东西直行方向的灯的状态为:黄—>红—>黄—>绿—>黄—>红……;
南北左转方向的灯的状态为:黄—>红—>黄—>绿—>黄—>红……。
(3)状态转换图
五、结论
1、能实现的功能
交通灯的状态转换和倒计时时间的显示,基本能实现东西、南北直行和转弯灯的显示功能。
2、不足之处
(1)我所用的是一个大的计数器来实现交通灯的控制电路的设计,若能使用双进程状态机描述会使程序更加简练,而且状态之间的转化关系更加明朗。
(2)另外,在现实中晚上没有行人,可以不用交通灯控制,只需要黄灯亮着提醒人们前方有路口即可。
那就需要一个始终显示模块,指定的时间内回到初始状态也就是我用的EN=0是的状态。
只是人为控制,若有24小时的计时会使交通灯的控制智能化。
(3)有些城市的交通灯中也有右转灯,这个程序中有很多地方仍然需要改进。
附录:程序清单
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;
entity traffic is
port (
clk: in STD_LOGIC;
en: in STD_LOGIC;
p49: out STD_LOGIC;
nnsl: out STD_LOGIC_VECTOR (2 downto 0);
eewl: out STD_LOGIC_VECTOR (2 downto 0);
nns: out STD_LOGIC_VECTOR (2 downto 0);
eew: out STD_LOGIC_VECTOR (2 downto 0);
ga: out STD_LOGIC_VECTOR (6 downto 0);
p32: out STD_LOGIC_VECTOR (2 downto 0)
);
end traffic;
architecture traffic_arch of traffic is。