步行街道自助式交通灯控制器_第1页
步行街道自助式交通灯控制器_第2页
步行街道自助式交通灯控制器_第3页
步行街道自助式交通灯控制器_第4页
步行街道自助式交通灯控制器_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

目录1、设计内容与要求21.1设计内容21.2设计要求22、总体框图3设计方案32.1.1方案一32.1.2方案二42.1.3最正确方案选择5总体框图53、选择器件64、功能模块74.1去抖模块74.1.1VHDL源程序〔〕74.1.2生成的模块84.1.3仿真图84.2分频器模块84.2.1VHDL源程序〔DIV.VHD〕84.2.2生成的模块104.2.3仿真图104.3设置计数器模块104.3.1VHDL源程序(COUNT.VHD)104.3.2生成的模块134.3.3仿真图144.4交通灯控制模块144.4.1VHDL源程序〔〕14生成的模块18仿真图185、总体设计原理图195.1整体组装设计原理图195.2整体仿真图205.3管脚分布20参考文献21步行街道自助式交通灯控制器1、设计内容与要求1.1设计内容设计一个步行街道上受行人控制的交通灯控制器,它要实现的功能如下:在没有行人要通过街道时,主干道保持通行。假设有行人要通过街道,按下按键,发出请求,数秒后,主干道禁行,行人可以通过。用VHDL语言编辑程序,在QuartusII软件进行综合,生成相应的模块,然后连接各个模块,再综合、适配,下载到芯片,做最后的测试,看能否实现其功能,能否到达设计目标。1.2设计要求正常情况下保持主干道的畅通。当步行街道上的行人要穿过主干道时,通过设置的按钮来发出请求。当有人按下此按钮时,主干道变为黄灯,设置计数器计时时间为X秒。X秒过后,主干道变为红灯,计数器继续计时〔计时时间为Y秒〕,在Y秒内假设有人再次按按钮,计数器不重新计时。步行街道绿灯闪烁时间为Y1秒,〔Y—Y1〕秒后主干道变为绿灯,车辆通行,且要保证车辆通行一定时间〔Z秒〕。在此时间内,行人按按钮无效。Z秒过后,假设有人再按下按钮,又出现3中的状态。计时器的计时时间长短X、Y、Z可以任意设定。2、总体框图方案一根据系统设计要求,系统设计采用自顶向下的设计方法。系统的整体组装设计原理图由分频模块、去抖模块、设置计数模块和交通灯控制模块四局部组成。(1)去抖模块去抖模块的作用在于消除按键的抖动。因为当输入信号在上下电平之间转换时,在转换的瞬间会产生毛刺,使信号波形不稳定,从而使系统不能正常工作,因此参加去抖模块。(2)分频模块分频模块的作用在于实现从高频到低频的转换,使输入到电路的频率能满足电路的需要而又不会烧毁电路中的器件。(3)设置计数模块设置计数模块的设置并存储主干道方向和步行街道方向的时间长短。主干道方向需要设置的时间包括主干道黄灯信号时间、红灯信号时间和主干道车辆允许通行的最短时间,步行街道方向需要设置的时间为步行街道绿灯的闪烁时间。(4)交通灯控制模块交通灯控制模块采用状态机来实现,用于存储交通灯的五种状态。五种状态的具体说明如下状态表所示。表1状态表状态主干道信号灯步行街信号灯主干道步行街道R〔红〕G〔绿〕Y〔黄〕R〔红〕G〔绿〕ST001010通行禁行ST100110车停靠禁行ST210001禁行通行ST31000禁行通行〔绿灯闪烁〕ST401010通行〔Z秒内〕禁行方案二依照设计要求,系统采用自底向上的设计方法。系统整体由交通灯控制模块、计数模块和分频模块三局部组成。〔1〕交通灯控制模块交通灯控制模块主要实现设计要求的五种状态之间的转换,所以采用状态机来设计。五种状态如表1所示。〔2〕计数模块计数模块模块主要作用控制五种状态之间的转换时间,根据设计要求,设置步行街和主干道两个方向的交通灯时间。主干道方向需要设置的时间包括主干道黄灯信号时间、红灯信号时间和主干道车辆允许通行的最短时间,步行街道方向需要设置的时间为步行街道绿灯的闪烁时间。〔3〕分频模块由于较大的频率可能使各个状态之间的转换过快,无法更好的观察,所以采用分频模块,把高频率分成低频率,更好实现设计。最正确方案选择方案一采用自顶向下设计方法,整个设计是从系统顶层开始的,结合模拟手段,可以从一开始就掌握所实现系统的性能状况,结合应用领域的具体要求,在此时就调整设计方案,进行性能优化或折衷取舍。随着设计层次向下进行,系统性能参数将得到进一步的细化与确认,并随时可以根据需要加以调整,从而保证了设计结果的正确性,缩短了设计周期。方案二采用自底向上的设计方法,设计从系统的底层开始,不过设计好后不易修改,而且还不易设计。所以,我们采用方案一。图1整体设计框图3、选择器件装有QuartusII软件的微型计算机。计算机的硬件尽可能高,至少可以实现QuartusII软件的使用。硬件实现的芯片为PFGA/CPLD,芯片管脚的数量要保证足够设计的程序所要使用的数量,并且使其所有管脚都有可分配的管脚,可以实现QuartusII上综合、适配的程序下载后可以顺利实现。五个LED灯,用来显示交通灯,即:行人方向红灯、行人方向绿灯和车辆方向红灯、车辆方向绿灯、车辆方向黄灯五个方向的亮灭。4、功能模块4.1去抖模块这个模块的主要作用是消除按键在敲击时产生的抖动。当UPIN为低电平,DOWNIN为高电平时,表示按键按下,KEYOUT有高电平输出;当UPIN为高电平,DOWNIN为低电平时,表示按键弹起,KEYOUT有低电平输出。VHDL源程序〔DITHER.VHD〕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;ARCHITECTUREBEHAVEOFDITHERISSIGNALOUT1:STD_LOGIC;SIGNALOUT2:STD_LOGIC;BEGINOUT1<=NOT(OUT2ANDUPIN);OUT2<=NOT(OUT1ANDDOWNIN);KEYOUT<=OUT1;ENDBEHAVE;生成的模块图2DITHER模块仿真图图3去抖模块仿真图仿真分析:输入UPIN、DOWNIN都为低电平时,输出KEYOUT为高电平;输入UPIN为高电平、DOWNIN为低电平时,输出KEYOUT为低电平;输入UPIN为低电平、DOWNIN为高电平时,输出KEYOUT为高电平;输入UPIN、DOWNIN都为高电平时,输出KEYOUT为低电平。4.2分频器模块这个模块的主要主要是转换频率,把高频率转换成低频率。分频后的频率更能适应电路的要求,使电路可以更好的运行。VHDL源程序〔DIV.VHD〕LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYDIVIS PORT ( CLK_IN:INSTD_LOGIC; DIV_OUT:OUTSTD_LOGIC );ENDDIV;ARCHITECTUREaOFDIVISSIGNALFRE_N:INTEGERSIGNALCLK_TMP:STD_LOGIC; BEGIN DIV_OUT<=CLK_TMP; PROCESS(CLK_IN) BEGIN IFFALLING_EDGE(CLK_IN)THEN IFFRE_N<=9THEN FRE_N<=0; CLK_TMP<=NOTCLK_TMP; ELSE FRE_N<=FRE_N+1; ENDIF; ENDif; ENDPROCESS;ENDa;生成的模块图4DIV模块仿真图图5分频器模块仿真图仿真分析:输入CLK_IN信号经过十二个周期后,输出DIV_OUT第一个上升沿来临,实现了分频的作用。4.3设置计数器模块这个模块的主要作用是设置并存储主干道方向和步行街道方向的时间长短。此模块预置了有效信号,通过加计数和减计数加大和减小预知的信号,从而实现对行人通行时间、行人方向信号灯闪烁时间和车辆通行时间的控制。VHDL源程序(COUNT.VHD)LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;ENTITYCOUNTISPORT(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:OUTGHUMAN_CLKT:OUTGVEHICLE_TIME:OUT);ENDCOUNT;ARCHITECTUREBEHAVEOFCOUNTISSIGNALHUMAN_TIME:INTEGERSIGNALVEHICLE_TIME:INTEGERSIGNALSSTATE:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALSCLK:STD_LOGIC;SIGNALDSCLK:STD_LOGIC;BEGINSSTATE<="0000"WHENPRE_SET='0'ELSEHUMAN_SET&CLEAR&CLKADD&CLKSUB;SCLK<=CLKADDORCLKSUBORCLEAR;PROCESS(CLK)BEGINIF(CLK'EVENTANDCLK='1')THENDSCLK<=SCLK;ENDIF;ENDPROCESS;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<=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)BEGINIF(RST='1')THENHUMAN_TIME<=4;ELSIF(DSCLK'EVENTANDDSCLK='1')THENCASESSTATEISWHEN"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=>HUMAN_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_TIME+3;ENDIF;ENDPROCESS;ENDBEHAVE;生成的模块图6COUNT模块仿真图图7计数器模块仿真图仿真分析:当PRE_SET下降沿时,GHUMAN_TIME、GHUMAN_CLKT、GVEHICLE_TIME三个数组输出信号发生跳转,三者关系符合GVEHICLE_TIME<=HUMAN_TIME+VEHICLE_TIME+3。可以看出,满足计数器的预定功能。4.4交通灯控制模块这个模块的主要作用是交通灯五种状态的实现。此模块采用状态机来实现交通灯的五种状态,设置了行人方向和车辆方向的五个交通灯,即行人方向红灯、行人方向绿灯和车辆方向红灯、车辆方向绿灯、车辆方向黄灯。并设置了请求信号输入,作为行人要通过主干道的按钮。VHDL源程序〔LIGHT.VHD〕LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;ENTITYLIGHTISPORT(SRED:OUTSTD_LOGIC;SGREEN:OUTSTD_LOGIC;ERED:OUTSTD_LOGIC;EGREEN:OUTSTD_LOGIC;EYELLOW:OUTSTD_LOGIC;GT_SET:INSTD_LOGIC;GHUMAN_TIME:ININTEGERRANGE31DOWNTO0;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:INTEGERBEGINPROCESS(CURRENT_STATE,RST)BEGINIF(RST='1'ORCURRENT_STATE=ST0)THENSTART<='0';ELSESTART<='1';ENDIF;ENDPROCESS;A:PROCESS(START,CLK)BEGINIF(RST='1')THENSIG<=0;ELSIF(CLK'EVENTANDCLK='1')THENIF(START='1')THENIF(SIG=GVEHICLE_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)BEGINCASECURRENT_STATEISWHENST0=>ERED<='0';EGREEN<='1';EYELLOW<='0';SRED<='1';SGREEN<='0';IF(REQUEST='1'ANDGT_SET='0')THENNEXT_STATE<=ST1;ELSENEXT_STATE<=ST0;ENDIF;WHENST1=>ERED<='0';EGREEN<='0';EYELLOW<='1';SRED<='1';SGREEN<='0';IF(SIG=1)THENNEXT_STATE<=ST2;ELSENEXT_STATE<=ST1;ENDIF;WHENST2=>ERED<='1';EGREEN<='0';EYELLOW<='0';SRED<='0';SGREEN<='1';IF(SIG=GHUMAN_TIME)THENNEXT_STATE<=ST3;

温馨提示

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

评论

0/150

提交评论