EDA课程设计——交通灯
- 格式:doc
- 大小:3.19 MB
- 文档页数:14
第 - 1 - 页 共 9 页 交通信号灯控制电路设计 一、概述 城市道路交叉口是城市道路网络的基本节点,也是网络交通流的瓶颈。目前,大部分无控制交叉口都存在高峰小时车流混乱、车速缓慢、延误情况严重、事故多发、通行能力和服务水平低下等问题。特别是随着城市车流量的快速增长,城市无控制道路交叉口的交通压力越来越大。因此,做好基于EDA技术平台的交叉口信号控制设计是缓解交通阻塞、提高城市道路交叉口车辆通行效率的有效方法。交通信号控制的目的是为城市道路交叉口(或交通网络)提供安全可靠和有效的交通流,通常最为常用的原则是车辆在交叉口的通过量最大或车辆在交叉口的延误最小。 交通信号灯控制电路是显示主干道和支干道交替放行时间并用试验箱左上角的彩灯来代替信号灯的一种实际电路。设计一个基于FPGA的红绿灯交通信号控制器。假设某个十字路口是由一条主干道和一条次干道汇合而成,在每个方向设置红绿黄三种信号灯,红灯亮禁止通行,绿灯亮允许通行。黄灯亮允许行驶中车辆有时间停靠到禁止线以外。 本课程的基本原理是在合适的时钟信号的控制下,使主干道与支道的红黄绿灯循环显示,用VHDL语言编辑文本程序,按设计要求连接好线以后,进行波形仿真,仿真结果正确后下载程序并对试验箱进行调试,使其最终的显示结果符合设计要求。
二、方案设计与论证 在硬件时钟电路的基础上,采用分频器,输出一个1S的时钟信号,在时钟信号的控制下,实现主干道和支干道红绿灯交替显示。 红绿灯交通灯控制器层次设计: EDA技术的基本设计方法有电路级设计方法和系统级设计方法。电路级设计方法已经不能适应新的形势,本系统采用的是系统级层次设计方法,对整个系统进行方案设计和功能划分,系统的关键电路用一片FPGA芯片实现,首先用VHDL语言编写各个功能模块程序,最后通过综合器和适配器生成最终的目标器件,然后用顶层原理图将各功能模块连接起来。下面给出各模块的VHDL设计过程和仿真结果。 1、 系统时序发生电路clk_gen的VHDL设计 在红绿灯交通信号控制系统中,大多数的情况是通过自动控制的方式指挥交通的。因此,为了避免意外事件的发生,电路必须给一个稳定的时钟(clock)才能让系统正常运作。
红黄绿红黄绿
主干道
支干道 第 - 2 - 页 共 9 页
但为了配合高峰时段,防止交通拥挤,有时也必须使用手动控制,即让交警能够顺利地指挥交通。Clk_gen电路最主要的功能就是产生一些额外的输出信号,并将其用做后续几个电路的使能(enable)控制与同步信号处理。 该电路的核心部分就是分频电路,通过对外接信号发生器提供1kHz的时钟信号进行1000分频,得到一个周期为1秒的输出使能信号ena_lhz(占空比1:1000)和flash_lhz(占空比1:1);4分频后得到红绿灯信号译码电路所需的频率为250Hz的显示使能信号ena_scan。
architecture one of fenpingqi is signal counter:integer range 0 to 4999999; Begin process (CLR,CLK) Begin if(CLK='1' and CLK'event) then if CLR='1' then counter<=0; elsif counter =4999999 then counter<=0; q<=not q; else counter<=counter+1; end if; end if; end process; end one;
2、 开关控制部分的ASM图 i、j、k、分别代表开关状态;1表示开关闭合,为高电平;0表示开关断开为低电平。当开关处于不同的状态时,分别给变量G不同的值,用来实现控制通行时间。
X<=i&j&k
X=001
X=010 X=100
G=29 G=39 G=49 y
y
y G=0 第 - 2 - 页 共 9 页
x<=i&j&k; cnt:process (clk) variable s:integer range 0 to 49; variable g:integer range 0 to 49; variable nclr,en:bit; Begin if x<="001"then g:=29; elsif x<="010"then g:=39; elsif x<="100"then g:=49; else g:=0; end if;
3、 信号灯转换控制部分的ASM图 Rm、Ym、Gm分别表示主干道红、黄、绿;Rf、Yf、Gf分别表示支道红、黄、绿; S表示灯亮的时间;nclr是计时器的清零端,低电平有清零;en是计时器的使能端,高电平使能。
if (clk'event and clk='1') then if nclr='0' then s:=0; elsif en='0' then s:=s; else s:=s+1; end if; case state is when a=>rm<='0';ym<='0';gm<='1'; rf<='1';yf<='0';gf<='0'; if s=g then state <=b;nclr:='0';en:='0'; Else state<=a;nclr:='1';en:='1'; end if;
Gm<=’1’ Rf<=’1’
S=G S=S+1 nclr=‘1’ en=‘1’
Ym<=’1’ Rf<=’1’
S=3 Rm<=’1’ Gf<=’1’
S=G
S=3 Rm<=’1’ Yf<=’1’
y
y y
y S=S+1 nclr=‘1’ en=‘1’
nclr=‘0’ en=‘0’
nclr=‘0’ en=‘0’ 第 - 2 - 页 共 9 页
3、状态装换 (1)开始设置为支路为绿灯、主路为红灯,持续时间为30秒; (2)30秒后,支路由绿灯变为黄灯,主路红灯不变,持续时间为4秒; (3)4秒后,支路由黄灯变为红灯,主路由红灯变为绿灯,持续时间30秒; (4)30秒后,支路红灯不变,主路由绿灯变为黄灯,持续时间为4秒; (5)4秒后,支路由红灯变为绿灯,主路由黄灯变为绿灯,持续时间为30秒; 随时间,主、支系统依次循环,可以自动切换,红绿灯时间间隔可以手动设置,以适应不同需求。
case state is when a=>rm<='0';ym<='0';gm<='1'; rf<='1';yf<='0';gf<='0'; if s=g then state <=b;nclr:='0';en:='0'; Else state<=a;nclr:='1';en:='1'; end if; when b=>rm<='0';ym<='1';gm<='0'; rf<='1';yf<='0';gf<='0'; if s=3 then state <=c;nclr:='0';en:='0'; Else state<=b;nclr:='1';en:='1'; end if; when c=>rm<='1';ym<='0';gm<='0'; rf<='0';yf<='0';gf<='1'; if s=g then state <=d;nclr:='0';en:='0'; Else state<=c;nclr:='1';en:='1'; end if; when d=>rm<='1';ym<='0';gm<='0'; rf<='0';yf<='1';gf<='0'; if s=3 then state <=a;nclr:='0';en:='0'; Else state<=d;nclr:='1';en:='1'; end if; end case;
四、总原理图 1、电路连接图 第 - 2 - 页 共 9 页
2、分频器模块
3、交通灯控制器模块
4、波形仿真 第 - 2 - 页 共 9 页
仿真图一 仿真图二 5、硬件仿真: 为了能对所设计的红绿灯交通灯控制器电路进行硬件测试,应将其输入输出信号锁定在开发系统的目标芯片引脚上,并重新编译,然后对目标芯片进行编程下载,完成红绿灯交通灯控制器的最终开发,其硬件测试示意图如图6-62。不失一般性,本设计选用的EDA开发平台为GW48电路模式为No.5,选择目标器件为Cylone系列EP1C3T144C8芯片。 锁定引脚时将CLK接至clock2(接受1kHz的时钟频率);部自复位信号同键3(PIO8)相连;手动、自动切换钮(1:自动、0手动)接键4(PIO9);:红绿灯状态切换键(每按一次就切换一个状态)接键5(PIO13); R1接发光二级管D8(PIO23)用于指示南北路口红灯;G1接发光二级管D7(PIO22)用于指示南北路口绿灯;Y1接发光二级管D6(PIO21)用于指示南北路口黄灯;R0接发光二级管D5(PIO20)用于指示东西路口红灯;G0接发光二级管D4(PIO19)用于指示东西路口绿灯;Y0接发光二级管D3(PIO18)用于指示东西路口红灯;NEXT_S 接发光二级管D1(PIO16)用于转态指示。 引脚锁定完成后,重新对该工程进行编译,综合适配后将配置数据下载入GW48实验平台的FPGA中(有关CLK等引脚在FPGA芯片EP1C6Q240C8引脚中的序号,请参见EDA书后的附录的附表)。 选模式5,情况一(红绿灯间隔30秒,黄绿间隔5秒),设定最右边三个灯(从右到左)为支路灯:红灯、绿灯、黄灯;紧接着为主路:红灯、绿灯、黄灯(6号灯已坏顺延到7号灯); 仿真图片如下:
图一:支路绿灯,主路红灯