EDA课程设计交通灯图文.docx
《EDA课程设计交通灯图文.docx》由会员分享,可在线阅读,更多相关《EDA课程设计交通灯图文.docx(8页珍藏版)》请在冰豆网上搜索。
EDA课程设计交通灯图文
EDA课程设计-交通灯-图文
交通信号灯控制电路设计
一、概述
城市道路交叉口是城市道路网络的基本节点,也是网络交通流的瓶颈。
目前,大部
分无控制交叉口都存在高峰小时车流混乱、车速缓慢、延误情况严重、事故多发、通行能力和服务水平低下等问题。
特别是随着城市车流量的快速增长,城市无控制道路交叉口的交通压力越来越大。
因此,做好基于EDA技术平台的交叉口信号控制设计是缓解交通阻塞、提高城市道路交叉口车辆通行效率的有效方法。
交通信号控制的目的是为城市道路交叉口(或交通网络)提供安全可靠和有效的交通流,通常最为常用的原则是车辆在交叉口的通过量最大或车辆在交叉口的延误最小。
交通信号灯控制电路是显示主干道和支干道交替放行时间并用试验箱左上角的彩灯来红黄绿支红代替信号灯的一种实际电路。
设计一个基于FPGA的红绿灯交通信号控制器。
假设某个十干黄绿道字路口是由一条主干道和一条次干道汇合而成,在每个方向设置红绿黄三种信号灯,红灯亮禁止通行,绿灯亮允许通行。
黄灯亮允许行驶中车辆有时间停靠到禁止线以外。
第-1-页共18页
二、方案设计与论证
在硬件时钟电路的基础上,采用分频器,输出一个1S的时钟信号,在时钟信号的控制下,实现主干道和支干道红绿灯交替显示。
红绿灯交通灯控制器层次设计:
EDA技术的基本设计方法有电路级设计方法和系统级设计方法。
电路级设计方法已经不能适应新的形势,本系统采用的是系统级层次设计方法,对整个系统进行方案设计和功能划分,系统的关键电路用一片FPGA芯片实现,首先用VHDL语言编写各个功能模块程序,最后通过综合器和适配器生成最终的目标器件,然后用顶层原理图将各功能模块连接起来。
下面给出各模块的VHDL设计过程和仿真结果。
1、系统时序发生电路clk_gen的VHDL设计
在红绿灯交通信号控制系统中,大多数的情况是通过自动控制的方式指挥交通的。
因此,为了避免意外事件的发生,电路必须给一个稳定的时钟(clock)才能让系统正常运作。
但为了配合高峰时段,防止交通拥挤,有时也必须使用手动控制,即让交警能够顺利地指挥交通。
Clk_gen电路最主要的功能就是产生一些额外的输出信号,并将其用做后续几个电路的使能(enable)控制与同步信号处理。
该电路的核心部分就是分频电路,通过对外接信号发生器提供1kHz的时钟信号进行1000分频,得到一个周期为1秒的输出使能信号ena_lhz(占空比1:
1000)和flah_lhz
....
(占空比1:
1);4分频后得到红绿灯信号译码电路所需的频率为250Hz的显示使能信号ena_can。
architectureoneoffenpingqii
ignalcounter:
integerrange0to4999999;Begin
proce(CLR,CLK)Begin
if(CLK='1'andCLK'event)thenifCLR='1'thencounter<=0;
elifcounter=4999999thencounter<=0;q<=notq;ele
counter<=counter+1;endif;
endif;endproce;endone;
2、开关控制部分的ASM图
i、j、k、分别代表开关状态;1表示开关闭合,为高电平;0表示开关断开为低电平。
当开关处于不同的状态时,分别给变量G不同的值,用来实现控制通行时间。
某<=i&j&k某=001yG=29某=010yG=39某=100yG=49G=0
....
某<=i&j&k;
cnt:
proce(clk)
variable:
integerrange0to49;variableg:
integerrange0to49;variablenclr,en:
bit;Begin
if某<=\elif某<=\elif某<=\eleg:
=0;endif;
3、信号灯转换控制部分的ASM图
Rm、Ym、Gm分别表示主干道红、黄、绿;Rf、Yf、Gf分别表示支道红、黄、绿;S表示灯亮的时间;nclr是计时器的清零端,低电平有清零;en是计时器的使能端,高电平使能。
Gm<=’1’Rf<=’1’S=S+1nclr=‘1’en=‘1’yS=3S=GyYm<=’1’Rf<=’1’nclr=‘0’en=‘0’Rm<=’1’Yf<=’1’ynclr=‘0’en=‘0’yS=GS=S+1nclr=‘1’en=‘1’S=3
Rm<=’1’Gf<=’1’
if(clk'eventandclk='1')then
....
ifnclr='0'then:
=0;elifen='0'then:
=;
ele:
=+1;endif;
caetatei
whena=>rm<='0';ym<='0';gm<='1';rf<='1';yf<='0';gf<='0';if=gthen
tate<=b;nclr:
='0';en:
='0';Ele
tate<=a;nclr:
='1';en:
='1';endif;
3、状态装换
(1)开始设置为支路为绿灯、主路为红灯,持续时间为30秒;
(2)30秒后,支路由绿灯变为黄灯,主路红灯不变,持续时间为4秒;(3)4秒后,支路由黄灯变为红灯,主路由红灯变为绿灯,持续时间30秒;(4)30秒后,支路红灯不变,主路由绿灯变为黄灯,持续时间为4秒;(5)4秒后,支路由红灯变为绿灯,主路由黄灯变为绿灯,持续时间为30秒;
随时间,主、支系统依次循环,可以自动切换,红绿灯时间间隔可以手动设置,以适应不同需求。
caetatei
whena=>rm<='0';ym<='0';gm<='1';rf<='1';yf<='0';gf<='0';if=gthen
tate<=b;nclr:
='0';en:
='0';Ele
tate<=a;nclr:
='1';en:
='1';endif;
whenb=>rm<='0';ym<='1';gm<='0';rf<='1';yf<='0';gf<='0';if=3then
tate<=c;nclr:
='0';en:
='0';Ele
tate<=b;nclr:
='1';en:
='1';endif;
whenc=>rm<='1';ym<='0';gm<='0';rf<='0';yf<='0';gf<='1';if=gthen
tate<=d;nclr:
='0';en:
='0';Ele
....
tate<=c;nclr:
='1';en:
='1';endif;
whend=>rm<='1';ym<='0';gm<='0';rf<='0';yf<='1';gf<='0';if=3then
tate<=a;nclr:
='0';en:
='0';Ele
tate<=d;nclr:
='1';en:
='1';endif;endcae;
四、总原理图
1、电路连接图
2、分频器模块
3、交通灯控制器模块
....
4、波形仿真
仿真图一
仿真图二
5、硬件仿真:
....
(PIO21)用于指示南北路口黄灯;R0接发光二级管D5(PIO20)用于指示东西路口红灯;G0接发光二级管D4(PIO19)用于指示东西路口绿灯;Y0接发光二级管D3(PIO18)用于指示东西路口红灯;NE某T_S接发光二级管D1(PIO16)用于转态指示。
选模式5,情况一(红绿灯间隔30秒,黄绿间隔5秒),设定最右边三个灯(从右到左)为支路灯:
红灯、绿灯、黄灯;紧接着为主路:
红灯、绿灯、黄灯(6号灯已坏顺延到7号灯);
仿真图片如下:
图一:
支路绿灯,主路红灯
....
图二:
支路黄灯,主路红灯
图三:
支路红灯,主路绿灯
图四:
支路红灯,主路黄灯
....
图五:
支路绿灯,主路红灯五、实验目的
1.熟练掌握VHDL语言和MA某+PLUSII软件的使用;2.理解状态机的工作原理和设计方法;
3.掌握利用EDA工具进行自顶向下的电子系统设计方法
六、实验步骤
1.将实验系统上RS232接口与计算机串行口相连。
七、结果分析
本次课程设计基本上满足了任务的设计要求,可以通过开关手动设置主干道和支道每次通行的时间分别为为30、40、50,从而控制通行时间长短的转换;各个状态之间的转化及各个状态的通行时间也可以满足“主干道和支干道自动循环。
主干道和支道每次通
....
行的时间为30,而在两个状态交换过程出现的\主黄,支红\和\主红,支黄\状态,持续时间都为4”的设计要求。
但是设计也存在一定的缺陷,设计只能完成当开关i,j,k只有一个为高电平时使交通灯正常工作,,其他状态时定义G=0,这时交通灯不能正常工作。
例如当某=I&J&K=’101’,时,其波形仿真各个状态时间通行时间长短会出现差错,如下图
然而,这种状况在实际生活中是不允许出现的。
其解决方法是:
在各个when语句后增加一条if判断语句,判断如果g等于0,则保持原状态,如果g不等于0,则执行原来方案中的状态转换语句。
八、硬件要求
主芯片EPF10K10LC84-4;6个LED灯(红、黄、绿各两个);四个开关。
九、心得体会
....
通过本学期的这次的课程设计与几次实验,我学会了VHDL语言的一些基本用法,应用了原来不会或者不熟练的句型,如proce进程,也学会了一些基本功能的实现方法,如分频,状态控制等。
虽然这次实验遇到的问题不少,但是在老师以及同学的帮助下,我都顺利地解决了,并为将来的实践积累了宝贵的经验和教训。
通过经常和老师、同学交流,以便及时发现自己在实验中的纰漏和不足,促进进步。
这次课程设计虽然结束了,也留下了很多遗憾,因为由于时间的紧缺和许多课业的繁忙,并没有做到最好,但是,最起码我们没有放弃,它是我们的骄傲!
相信以后我们会以更加积极地态度对待我们的学习、对待我们的生活。
实验的顺利完成,与老师的热心指导是分不开的,最后十分感谢胡辉老师的认真负责的工作,让我受益匪浅!
十、参考文献
《EDA技术与实验》机械工业出版社李国洪、胡辉、沈明山《EDA技术实验与课程设计》清华大学出版社曹新燕、周凤臣、聂春燕《EDA技术综合应用实例与分析》西安电子科技大学出版社谭会生、翟遂春
附件
1、顶层设计代码
libraryieee;
....
ueieee.td_logic_1164.all;ueieee.td_logic_arith.all;
ueieee.td_logic_unigned.all;ENTITYJiaoTongDengi
port(clr,clk,i,j,k:
intd_logic;
rm,ym,gm,rf,yf,gf:
outtd_logic;recount:
outtd_logic;NE某T_S:
outtd_logic);endentityJiaoTongDeng;
port(clk,i,j,k:
intd_logic;
ignalQ,ignalrecount_1,ignalne某t_tate_1:
td_logic;begin
u1:
fenpingqiportmap(CLR=>clr,CLK=>clk,q=>Q);u2:
kongzhiport
map(i=>i,j=>j,k=>k,clk=>Q,rm=>rm,ym=>ym,gm=>gm1,rf=>rf,yf=>yf,gf=>gf);
u3:
count_down
portmap(RE,CLK,ena_1Hz_1,recount_1,load,S,ne某t_tate_1);NE某T_S<=ne某t_tate_1;
endarchitectureJTD;
....
分频器代码libraryieee;
ueieee.td_logic_1164.all;ueieee.td_logic_arith.all;
ueieee.td_logic_unigned.all;entityfenpingqii
port(CLR,CLK: