基于FPGA的交通灯控制系统设计.doc
基于FPGA的交通灯控制系统设计
专业:08电子信息工程
姓名:扈晓锋、李小波
学号02029
指导老师:龙翔
日期:2010/12/18
一、交通控制灯设计实现目标:
信号控制器勇于主干道与支道公路的交叉路口,要求是优先保证主干道的畅通。因此平时处于“主干道绿灯,支干道红灯”状态,只有在支道有车辆要穿行主干道时,才将交通灯切向“主干道红灯,支干道绿灯”,一旦支道无车辆通过路口,交通灯又回到“主干道绿灯,支干道红灯”的状态。此外,主干道每次通行的时间不得短于60s和支道每次通行的时间不得短于20s,而在两个状态交换过程出现的“主黄,支红”和“主红,支黄”状态,持续时间都为5s。其流程图如下:
:
图1:交通灯流程图
二、设计思想:
超高速硬件描述语言VHDL,是对数字系统进行抽象的行为与功能描述到具体的内部线路结构描述,利用EDA工具可以在电子设计的各个阶段、各个层系进行计算机模拟验证,保证设计过程的正确性。本交通控制灯设计,利用基于VHDL的EDA设计工具,采用大规模可编程逻辑器件FPGA,通过设计芯片来实现系统功能根据交通灯信号控制要求,可把它分解为定时器和控制器两部分,其原理方框图下所示:
控制器
定时器
SM
5SMR
60SMY
CLKCLRMG
BR
ENBY
MG
SB
图2:交通灯控制原理方框图
三、设计过程:
交通灯控制器的控制过程分为四个阶段,分别是高速绿乡间红、高速黄乡间红、高速红乡间绿、高速红乡间黄,并分别用S0、S1、S2、S3表示。交通灯控制系统的工作流程见要求中的流程图。设系统的初始状态为高速绿灯,乡间小路红灯。
交通灯系统工作主要有三个时间间隔,表示高速路绿灯亮的时间间隔60s,表示小路绿灯亮的时间间隔20s,高速路与小路黄灯亮的时间间隔5s。设定一个变量S为秒定时器,当它分别产生三个时间间隔后,向控制器发出“时间已到”信号,控制器根据该信号以及小路上是否有车判断是否转换状态。如果肯定,则控制器发出状态转换信号,计数器清零,准备重新计数。
表1??交通灯循环状态表
状态名状态信息时间长度
S0主干道绿灯,小路红灯60s
S1主干道黄灯,小路红灯5s
S2主干道红灯,小路绿灯20s
S3主干道红灯,小路黄灯5s
3.1交通灯控制器流程图:
1
1
0
1
1
0
0
1
0
0
0
0
1
1
1
Gm=’1’
Rf=’1’
Sens_m=’1’
sens_f=’1’
S=59
nclr:=’1’
en:=’1’
Sens_m=’0’
sens_f=’1’
Rm=’1’
yf=’1’
S=4
nclr:=’1’
en:=’1’
nclr:=’0’
en:=’0’
nclr:=’0’
en:=’0’
Ym=’1’
rf=’1’
S=4
nclr:=’1’
en:=’1’
Rm=’1’
gf=’1’
Sens_m=’1’
sens_f=’1’
Sens_m=’0’
sens_f=’1’
nclr:=’1’
en:=’1’
nclr:=’0’
en:=’0’
S=19
图3:交通灯流程图
3.2交通灯VHDL源程序:
librar