您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于VHDL交通信号灯控制器
《PLD与现代传感技术应用》课程论文基于VHDL的交通信号灯的设计学院:电信学院专业:控制工程姓名:王晋学号:102430111356基于VHDL的交通信号灯的设计王晋(辽宁科技大学电信学院,电信2010)摘要:交通灯控制系统在城市交通监管中起着极其重要的作用。应用VHDL语言,在Altera公司的QuartusII软件环境下,通过模块化编程完成了灯亮时间可调的交通灯控制系统设计,并进行了逻辑综合、仿真,系统的软件仿真测试结果满足了设计要求,达到了预期的效果。由于设计采EDA技术,不但大大缩短了开发研制周期,提高了设计效率,而且使系统具有设计灵活,实现简单,性能稳定的特点。关键词:交通灯控制;FPGA;VHDL;仿真0引言交通灯是城市交通监管系统的重要组成部分,对于保证机动车辆的安全运行,维持城市道路的顺畅起到了重要作用。目前很多城市交叉路口的交通灯实行的是定时控制,灯亮的时间是预先设定好的,在时间和空间方面的应变性能较差,一定程度上造成了交通资源的浪费,加重了道路交通压力。本文在EDA技术的基础上,利用FPGA的相关知识设计了交通灯控制系统,可以根据实际情况对灯亮时间进行自由调整,整个设计系统通过QuartusII软件进行了模拟仿真,并可以下载到FPGA器件中进行硬件的调试,验证其设计的交通信号灯控制电路预定的功能。1VHDL的特点随着电子技术的发展,数字系统的设计正朝高速度、大容量、小体积的方向发展,传统的自底而上的设计方法已难以适应形势。EDA(ElectronicDesignAutomation)技术的应运而生,使传统的电子系统设计发生了根本的变革。EDA技术就是依赖功能强大的计算机,在EDA工具软件平台上,对以硬件描述语言VHDL(VeryHiehSpeedIntegratedCircuitHardwareDescriptionLanguage)为系统逻辑描述手段自顶而下地逐层完成相应的描述、综合、优化、仿真与验证,直至生成器件。VHDL语言是目前应用于数字系统仿真最为实用的语言之一。VHDL语言最早由美国国防部提出。用VHDL语言进行数字逻辑电路和数字系统的设计,是电子电路设计方法上的一次革命性变革。与传统设计方法相比,VHDL描述电路行为的算法有很多优点:(1)设计层次较高、用于较复杂的计算时,能尽早发现存在的问题,缩短设计周期;(2)独立实现,修改方便,系统硬件描述能力强;(3)可读性好,有利于交流,适合于文档保存;(4)VHDL语言标准、规范、移植性强;(5)VHDL类型众多而且支持用户自定义类型,支持自顶而下的设计方法和多种电路的设计。2交通灯设计说明启动交通灯首先将开关rest由低电平状态置为高电平状态(复位信号,低电平时有效),则系统就会进入稳定的工作状态。分load0和load1两路交通灯。初始状态为load0绿灯亮,load1红灯亮。30秒后,load0和load1均变黄,持续5秒后,load0为红灯亮,load1为绿亮。30秒后,load0和load1均变黄,持续5秒,如此交替循环。3交通灯设计思路框图图1交通灯设计框图Rest信号由低电平置为高电平交,交通灯进入启动状态load0绿灯亮load1红灯亮Load0、load1均黄灯亮load0红灯亮load1绿灯亮load0、load1均黄灯亮持续30秒持续5秒持续5秒持续30秒4软件流程图及程序根据交通灯信号控制的要求,可把它分解为定时器和控制器两部分。CLK:时钟脉冲;rest:复位信号,低电平有效。r0:road0红灯;y0:road0黄灯;g0:road0绿灯。r1:road1红灯;y1:road1黄灯;g1:road1绿灯。(如图1所示)。主控制电路设计程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;useieee.std_logic_arith.all;ENTITYfzISPORT(clk:INSTD_LOGIC;rest:instd_logic;r0,y0,g0,r1,y1,g1:outstd_logic);ENDENTITYfz;ARCHITECTUREbehavioralOFfzISconstantyellow_time:integer:=5;constantgreen_time:integer:=30;constantred_time:integer:=30;signalp,f:integerrange0to3;signalclk_500:std_logic;BEGINtemp1:process(clk)variablecnt1:integerrange0to2;variablecnt2:integerrange0to3;BEGINifclk'eventandclk='1'thenifcnt1=2thencnt1:=0;ifcnt2=3thencnt2:=0;clk_500=notclk_500;elsecnt2:=cnt2+1;endif;elsecnt1:=cnt1+1;endif;endif;endprocesstemp1;--当clk周期为10ns时,分频后200*250*2,周期为1stemp2:process(clk_500)variableload0,load1:integer;beginifrest='0'thenf=0;load0:=green_time;load1:=red_time;r0='0';y0='0';g0='1';r1='1';y1='0';g1='0';elsifclk_500'eventandclk_500='1'thencasefiswhen0=ifload0=0thenload0:=yellow_time;f=1;elseload0:=load0-1;--0路绿灯时间,循环等待r0='0';y0='0';g0='1';--0路绿灯r1='1';y1='0';g1='0';--1路红灯endif;when1=ifload0=0thenload0:=green_time;f=2;elseload0:=load0-1;--黄灯时间r0='0';y0='1';g0='0';--0路黄灯r1='0';y1='1';g1='0';--1路黄灯endif;when2=ifload0=0thenload0:=yellow_time;f=3;elseload0:=load0-1;--绿灯时间r0='1';y0='0';g0='0';--0路红灯r1='0';y1='0';g1='1';--1路绿灯endif;when3=ifload0=0thenload0:=green_time;f=0;elseload0:=load0-1;--黄灯时间r0='0';y0='1';g0='0';--0路黄灯r1='0';y1='1';g1='0';--1路黄灯endif;whenothers=r0='1';y0='0';g0='0';r1='1';y1='0';g1='0';endcase;endif;endprocesstemp2;endbehavioral;开始判断是否rest=1load0绿灯亮load1红灯亮是否到30秒load0、load1黄灯亮是否到5秒load0红灯亮load1绿灯亮是否到30秒否是否是否load0,load1黄灯亮是否到5秒否是是是否load0绿灯亮load1红灯亮开始计时图2软件流程图5程序仿真图图3功能仿真图说明:图3为交通灯由启动到稳定的时序仿真图。为了显示明显,时钟选择clk(分频clk_500未使用)触发信号。交通灯程序首先Rest由低电平置高低电平。初始状态为r0=0,y0=0,g0=1,r1=1,y1=0,g1=0即,load0绿灯亮,load1红灯亮。在0.3ns处rest=1,load0:=load0-1,开始自减,进入状态f=0,30s后load0=0时,进入状态f=1,r0=0,y0=1,g0=0;r1=0,y1=1,g1=0即load0黄灯亮load1黄灯亮。循环5s后进入状态f=2,r0=1,y0=0,g0=0;r1=0,y1=0,g1=1,即load0红灯亮,load1绿灯亮。循环30s后进入状态f=3,r0=0,y0=1,g0=0;r1=0,y1=1,g1=0即load0黄灯亮load1黄灯亮。循环5s后,进入状态f=0。依此方式,循环反复运行,完成交通灯控制功能。6结语VHDL语言可用简洁明确的代码描述来进行复杂逻辑的设计,使用灵活方便,易于设计结果的交流,保存和重用。EDA技术彻底改变了数字系统的设计方法和实现手段,借助于硬件描述语言的国际标准VHDL和强大的EDA工具,随着VHDL语言使用范围的日益扩大,必将给硬件设计领域带来巨大的改革。参考文献[1]侯伯亨.VHDL硬件描述语言与数字逻辑电路设计[M].西安:西安电子科技大学出版社,1999.[2]邢建平,曾繁泰.VHDL程序设计教程.3版.北京:清华大学出版社,2005.[3]Xilinxlnc.TheProgrammableLogicDataBook[Z].Xilinclnc,USA:1998.
本文标题:基于VHDL交通信号灯控制器
链接地址:https://www.777doc.com/doc-2572715 .html