VHDL交通灯课程设计报告书_第1页
VHDL交通灯课程设计报告书_第2页
VHDL交通灯课程设计报告书_第3页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、沈阳理工大学课程设计专用纸目录1. 引言1系统的设计要求2系统分析22.1系统构成22. 2.2系统实现过程3具体模块设计43.1消抖模块43.2交通灯模块43.3交通灯时长设置模块43. 3.8整体结构电路图5程序设计54.1消抖模块源代码54.2交通灯时长设置模块64.3交通灯模块94.4顶层文件源代码12运行结果与分析15结束语16参考文献17引言不同的城市存在着不同的城市问题,但其中有一个共同的问题就是城市交通。在交义路口如何解决混合交通流中的相互影响,就是解决问题的关键所在!随着我国经济的稳步发展,人民生活水平的日渐提高,越来越多的汽车进入寻常白姓的家庭,再加上政府大力地发展公交、出

2、租车行业,道路上的车辆越来越多,使得城市的交通成为了一个主要的问题。严重的拥堵现象,逐渐恶化的城市环境,都给广大市民带来了许多困扰。要解决这些问题不仅要求道路越来越宽阔,而且更需要有新的交通管理模式出台。实现路口交通灯系统的控制方法很多,可以用标准逻辑器件、可编程序控制器PLG单片机等方案来实现。但是这些控制方法的功能修改及调试都需要硬件电路的支持,在一定程度上增加了功能修改及系统调试的困难。交通系统未来的发展趋势就是要提高通行能力,加强环境保护,开展智能化运输和环保专项技术的研究,并且要做到以人为本,重点开展交通安全技术的研究,在这个过程中要确定经济合理的目标,促进新材料的广泛应用和开发。E

3、DA技术是用于电子产品设计中比较先进的技术,可以代替设计者完成电子系统设计中的大部分工作,而且可以直接从程序中修改错误及系统功能而不需要硬件电路的支持,既缩短了研发周期,乂大大节约了成本,受到了电子工程师的宵睐。1. 系统的设计要求为了满足步行街的要求,此交通灯须具备以下功能:1.正常情况下保证主下道的畅通。2.当步行街道上的行人要穿过主干道时,通过设置的按钮来发出请求。3.4.当有人按下此按钮时,主干道变为黄灯,设置计数器时间为X秒。X秒过后,主干道变为红灯,计数器继续计时(计时时间为Y秒),在Y秒5.若有人再次按按钮,计数器不重新计时。步行街绿灯闪烁时间为Y1秒,(Y-Y1)秒后主干道变为

4、绿灯,车辆通行。且咬保证车辆通行一定时间(Z秒)。在此时间,行人按按钮无效。Z秒过后,若有人再按下按钮,乂出现(3)中的状态。计数器的计时时间长短XYZW以任意设定。系统分析2.1系统构成行人按下红灯按钮设置马路红灯后按键的无效时间步行街自助式交通灯控制器控制器分为3个模块:消抖模块,交通灯模块,交通灯时长设置模块。2.2系统实现过程最初状态是人行道红灯,马路绿灯。当有行人按下按钮时,马路的红灯变为黄灯,持续一个时钟周期的时间。然后马路的黄灯变为绿灯,此时人行道的红灯也变为绿灯,然后持续HUMAN_TIME时钟的周期的时间。然后人行灯的绿灯变为闪烁的绿灯,持续2个时钟的周期的时间,然后人行道的

5、闪烁的绿灯变为红灯,此时马路的红灯也变为绿灯。然后在VEHICLE_TIM衣时钟周期人行道为红灯,马路为绿灯状态保持不变且行人按键无效。状态如下:状态主干道信号灯步行街信号灯主干道步行街道R红Gt录Y黄R红G绿S001010通行禁行S100110车停靠禁行S210001禁行通行S31000禁行通行(绿灯闪烁S401010通行禁行具体模块设计3.1消抖模块消抖模块DITHER图2所示,使用硬件消抖原理。3.2交通灯模块交通灯模块LIGHT如图3所示,根据输入GHUMAN_TIME,GHUMAN_CLKTGVEHICLE_TIME值,进行减计数,然后根据值判断状态机的状态。3.3交通灯时长设置模块

6、交通灯时长设置模块COUNTER图4所示,根据设置按键人按键设置人行道绿灯时长和按键屏蔽时长。图2DITHER模块图3LIGHT模块图4COUNTER!块3.8整体结构电路图图5整体结构电路图程序设计4.1消抖模块源代码LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;ENTITYDITHERISPORT(UPIN:INSTD_LOGIC;DOWNIN:INSTD_LOGIC;KEYOUT:OUTSTD_LOGIC);ENDDITHER;ARCHIT

7、ECTUREBEHAVEOFDITHERISSIGNALOUT1:STD_LOGIC;SIGNALOUT2:STD_LOGIC;OUT1<=NOT(OUT2ANDUPIN);OUT2<=NOT(OUT1ANDDOWNIN);KEYOUT<=OUT1;ENDBEHAVE;4.2交通灯时长设置模块LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;ENTITYCOUNTISPORT(CLK:INSTD_LOGIC;CLEAR:INSTD_

8、LOGIC;CLKADD:INSTD_LOGIC;CLKSUB:INSTD_LOGIC;PRE_SET:INSTD_LOGIC;HUMAN_SET:INSTD_LOGIC;RST:INSTD_LOGIC;GHUMAN_TIME:OUTINTEGERRANGE31DOWNTO0;GHUMAN_CLKT:OUTINTEGERRANGE31DOWNTO0;GVEHICLE_TIME:OUTINTEGERRANGE31DOWNTO0);ENDCOUNT;ARCHITECTUREBEHAVEOFCOUNTISSIGNALHUMAN_TIME:INTEGERRANGE31DOWNTO0;SIGNALVEH

9、ICLE_TIME:INTEGERRANGE31DOWNTO0;SIGNALSSTATE:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALSCLK:STD_LOGIC;SSTATE<="0000”WHENPRESET='0'ELSEHUMAN_SET&CLEAR&CLKADD&CLKSUB;SCLK<=CLKADDORCLKSUBORCLEAR;PROCESS(CLK)BEGINIF(CLK'EVENTANDCLK='1')THENDSCLK<=SCLK;ENDIF;ENDPROCES

10、S;PROCESS(RST,CLEAR,DSCLK)BEGINIF(RST='1')THENVEHICLE_TIME<=8;ELSIF(DSCLK'EVENTANDDSCLK='1')THENCASESSTATEISWHEN"0100"=>VEHICLE_TIME<=0;WHEN"0101"=>VEHICLE_TIME<=0;WHEN"0110"=>VEHICLE_TIME<=0;WHEN"0111"=>VEHICLE_TIME

11、<=0;WHEN"0001"=>VEHICLE_TIME<=VEHICLE_TIME-1;WHEN"0010"=>VEHICLE_TIME<=VEHICLE_TIME+1;WHENOTHERS=>VEHICLE_TIME<=VEHICLE_TIME;ENDCASE;ENDIF;ENDPROCESS;PROCESS(CLEAR,DSCLK)IF(RST='1')THENHUMAN_TIME<=4;ELSIF(DSCLK'EVENTANDDSCLK='1')THENCAS

12、ESSTATEISWHEN"1100"=>HUMAN_TIME<=0;WHEN"1101"=>HUMAN_TIME<=0;WHEN"1110"=>HUMAN_TIME<=0;WHEN"1111"=>HUMAN_TIME<=0;WHEN"1001"=>HUMAN_TIME<=HUMAN_TIME-1;WHEN"1010"=>HUMAN_TIME<=HUMAN_TIME+1;WHENOTHERS=>HU

13、MAN_TIME<=HUMAN_TIME;ENDCASE;ENDIF;ENDPROCESS;PROCESS(PRE_SET,RST)BEGINIF(RST='1')THENGHUMAN_TIME<=5;GHUMAN_CLKT<=7;GVEHICLE_TIME<=15;ELSIF(PRE_SET'EVENTANDPRE_SET='0')THENGHUMAN_TIME<=HUMAN_TIME+1;GHUMAN_CLKT<=HUMAN_TIME+3;GVEHICLE_TIME<=HUMAN_TIME+VEHICLE_T

14、IME+3;ENDIF;ENDPROCESS;ENDBEHAVE;4.3交通灯模块LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;ENTITYLIGHTISPORT(SRED:OUTSTD_LOGIC;ERED:OUTSTD_LOGIC;SGREEN:OUTSTD_LOGIC;EYELLOW:OUTSTD_LOGIC;EGREEN:OUTSTD_LOGIC;GT_SET:INSTD_LOGIC;GHUMAN_TIME:ININTEGERRANGE3

15、1DOWNTO0;GHUMAN_CLKT:ININTEGERRANGE31DOWNTO0;GVEHICLE_TIME:ININTEGERRANGE31DOWNTO0;REQUEST:INSTD_LOGIC;CLK:INSTD_LOGIC;RST:INSTD_LOGIC);ENDLIGHT;ARCHITECTUREBEHAVEOFLIGHTISTYPEIN_STATESIS(ST0,ST1,ST2,ST3,ST4);SIGNALCURRENT_STATE:IN_STATES;SIGNALNEXT_STATE:IN_STATES;SIGNALSTART:STD_LOGIC;SIGNALSIG:IN

16、TEGERRANGE31DOWNTO0;BEGINPROCESS(CURRENT_STATE,RST)IF(RST='1'ORCURRENT_STATE=ST0)THENSTART<='0'ELSESTART<='1'ENDIF;ENDPROCESS;A:PROCESS(START,CLK,RST)BEGINIF(RST='1')THENSIG<=0;ELSIF(CLK'EVENTANDCLK='1')THENIF(START='1')THENIF(SIG=GVEHICLE

17、_TIME)THENSIG<=0;ELSESIG<=SIG+1;ENDIF;ELSESIG<=0;ENDIF;ENDIF;ENDPROCESSA;PROCESS(RST,CLK)BEGINIF(RST='1')THENCURRENT_STATE<=ST0;ELSIF(CLK'EVENTANDCLK='1')THENCURRENT_STATE<=NEXT_STATE;ENDIF;ENDPROCESS;PROCESS(CLK,CURRENT_STATE,REQUEST)BEGINCASECURRENT_STATEISWHENST

18、0=>ERED<='0'EGREEN<='T;EYELLOW<='0'SRED<='T;SGREEN<='0'IF(REQUEST='1'ANDGT_SET='0')THENNEXT_STATE<=ST1;ELSENEXT_STATE<=ST0;ENDIF;WHENST1=>ERED<='0'EGREEN<='0'EYELLOW<='1'SRED<='1'SG

19、REEN<='0'IF(SIG=1)THENNEXT_STATE<=ST2;ELSENEXT_STATE<=ST1;ENDIF;WHENST2=>ERED<=T;EGREEN<='0'EYELLOW<='0'SRED<='0'SGREEN<='T;IF(SIG=GHUMAN_TIME)THENNEXT_STATE<=ST3;ELSENEXT_STATE<=ST2;ENDIF;WHENST3=>ERED<='1'EGREEN<

20、='0'EYELLOW<='0'SRED<='0'SGREEN<=NOTCLK;IF(SIG=GHUMAN_CLKT)THENNEXT_STATE<=ST4;ELSENEXT_STATE<=ST3;ENDIF;WHENST4=>ERED<='0'EGREEN<=T;EYELLOW<='0'SRED<='1'SGREEN<='0'IF(SIG=GHUMAN_CLKT)THENNEXT_STATE<=ST0;ELSE

21、NEXT_STATE<=ST4;ENDIF;WHENOTHERS=>ERED<='0'EGREEN<='1'EYELLOW<='0'SRED<='1'SGREEN<='0'NEXT_STATE<=ST3;ENDCASE;ENDPROCESS;ENDBEHAVE;4.4顶层文件源代码Libraryieee;Useieee.std_logic_1164.all;Useieee.std_logic_unsigned.all;EntityTrafficLightisPort(

22、clk:instd_logic;clear:instd_logic;rclear:instd_logic;clkADD:instd_logic;rclkADD:instd_logic;clkSUB:instd_logic;rclkSUB:instd_logic;pre_set:instd_logic;human_set:instd_logic;rst:instd_logic;request:instd_logic;rrequest:instd_logic;clk_ls:instd_logic;sred,sgreen:outstd_logic;ered,eyellow,egreen:outstd

23、_logic);End;ArchitecturebehaveofTrafficLightisComponentDITHERisPORT(UPIN:INSTD_LOGIC;DOWNIN:INSTD_LOGIC;KEYOUT:OUTSTD_LOGIC);Endcomponent;ComponentCOUNTisPORT(CLK:INSTD_LOGIC;CLEAR:INSTD_LOGIC;CLKADD:INSTD_LOGIC;CLKSUB:INSTD_LOGIC;PRE_SET:INSTD_LOGIC;HUMAN_SET:INSTD_LOGIC;RST:INSTD_LOGIC;GHUMAN_TIME

24、:OUTINTEGERRANGE31DOWNTO0;GHUMAN_CLKT:OUTINTEGERRANGE31DOWNTO0;GVEHICLE_TIME:OUTINTEGERRANGE31DOWNTO0);Endcomponent;ComponentLIGHTisPORT(SRED:OUTSTD_LOGIC;ERED:OUTSTD_LOGIC;SGREEN:OUTSTD_LOGIC;EYELLOW:OUTSTD_LOGIC;EGREEN:OUTSTD_LOGIC;GT_SET:INSTD_LOGIC;GHUMAN_TIME:ININTEGERRANGE31DOWNTO0;GHUMAN_CLKT

25、:ININTEGERRANGE31DOWNTO0;GVEHICLE_TIME:ININTEGERRANGE31DOWNTO0;REQUEST:INSTD_LOGIC;CLK:INSTD_LOGIC;RST:INSTD_LOGIC);Endcomponent;SignalTEMP_GHUMAN_TIME:INTEGERRANGE31DOWNTO0;SignalTEMP_GHUMAN_CLKT:INTEGERRANGE31DOWNTO0;SignalTEMP_GVEHICLE_TIME:INTEGERRANGE31DOWNTO0;SignalTEMP_CLEAR,TEMP_CLKADD,TEMP_

26、CLKSUB,TEMP_REQUEST:std_logic;BeginU1:DITHERportmap(clear,rclear,TEMP_CLEAR);U2:DITHERportmap(clkADD,rclkADD,TEMP_CLKADD);U3:DITHERportmap(clkSUB,rclkSUB,TEMP_CLKSUB);U4:DITHERportmap(request,rrequest,TEMP_REQUEST);U5:COUNTportmap(CLK,TEMP_CLEAR,TEMP_CLKADD,TEMP_CLKSUB,PRE_SET,HUMAN_SET,RST,TEMP_GHU

27、MAN_TIME,TEMP_GHUMAN_CLKT,TEMP_GVEHICLE_TIME);U6:LIGHTportmap(SRED,ERED,SGREEN,EYELLOW,EGREEN,PRE_SET,TEMP_GHUMAN_TIME,TEMP_GHUMAN_CLKT,TEMP_GVEHICLE_TIME,TEMP_REQUEST,CLK_LS,RST);Endbehave;运行结果与分析(i)消抖模块仿真波形图:图6消抖模块仿真波形图按键弹起为高电平,按下为低电平。当按键按下时,UPIN变为低电DOWNIN变为高电平,并产生抖动。输出的KEYOUlt号消除抖动。(2)交通灯模块仿真波形图:图7交通灯模块仿真波形图给CLK一个时钟信号,在某一时刻开始赋给RS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论