步行街道自助式交通灯控制器讲诉.docx

上传人:b****8 文档编号:29010219 上传时间:2023-07-20 格式:DOCX 页数:19 大小:192.79KB
下载 相关 举报
步行街道自助式交通灯控制器讲诉.docx_第1页
第1页 / 共19页
步行街道自助式交通灯控制器讲诉.docx_第2页
第2页 / 共19页
步行街道自助式交通灯控制器讲诉.docx_第3页
第3页 / 共19页
步行街道自助式交通灯控制器讲诉.docx_第4页
第4页 / 共19页
步行街道自助式交通灯控制器讲诉.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

步行街道自助式交通灯控制器讲诉.docx

《步行街道自助式交通灯控制器讲诉.docx》由会员分享,可在线阅读,更多相关《步行街道自助式交通灯控制器讲诉.docx(19页珍藏版)》请在冰豆网上搜索。

步行街道自助式交通灯控制器讲诉.docx

步行街道自助式交通灯控制器讲诉

目 录

1、设计内容与要求2

1.1设计内容2

1.2设计要求2

2、总体框图3

2.1设计方案3

2.1.1方案一3

2.1.2方案二4

2.1.3最佳方案选择5

2.2总体框图5

3、选择器件6

4、功能模块7

4.1去抖模块7

4.1.1VHDL源程序(DITHER.VHD)7

4.1.2生成的模块8

4.1.3仿真图8

4.2分频器模块8

4.2.1VHDL源程序(DIV.VHD)8

4.2.2生成的模块10

4.2.3仿真图10

4.3设置计数器模块10

4.3.1VHDL源程序(COUNT.VHD)10

4.3.2生成的模块13

4.3.3仿真图14

4.4交通灯控制模块14

4.4.1VHDL源程序(LIGHT.VHD)14

4.4.2生成的模块18

4.4.3仿真图18

5、总体设计原理图19

5.1整体组装设计原理图19

5.2整体仿真图20

5.3管脚分布20

参考文献21

步行街道自助式交通灯控制器

1、设计内容与要求

1.1设计内容

设计一个步行街道上受行人控制的交通灯控制器,它要实现的功能如下:

在没有行人要通过街道时,主干道保持通行。

若有行人要通过街道,按下按键,发出请求,数秒后,主干道禁行,行人可以通过。

用VHDL语言编辑程序,在QuartusII软件进行综合,生成相应的模块,然后连接各个模块,再综合、适配,下载到芯片,做最后的测试,看能否实现其功能,能否达到设计目标。

1.2设计要求

1.正常情况下保持主干道的畅通。

2.当步行街道上的行人要穿过主干道时,通过设置的按钮来发出请求。

3.当有人按下此按钮时,主干道变为黄灯,设置计数器计时时间为X秒。

4.X秒过后,主干道变为红灯,计数器继续计时(计时时间为Y秒),在Y秒内若有人再次按按钮,计数器不重新计时。

5.步行街道绿灯闪烁时间为Y1秒,(Y—Y1)秒后主干道变为绿灯,车辆通行,且要保证车辆通行一定时间(Z秒)。

在此时间内,行人按按钮无效。

Z秒过后,若有人再按下按钮,又出现3中的状态。

6.计时器的计时时间长短X、Y、Z可以任意设定。

 

2、总体框图

2.1设计方案

2.1.1方案一

根据系统设计要求,系统设计采用自顶向下的设计方法。

系统的整体组装设计原理图由分频模块、去抖模块、设置计数模块和交通灯控制模块四部分组成。

(1)去抖模块

去抖模块的作用在于消除按键的抖动。

因为当输入信号在高低电平之间转换时,在转换的瞬间会产生毛刺,使信号波形不稳定,从而使系统不能正常工作,因此加入去抖模块。

(2)分频模块

分频模块的作用在于实现从高频到低频的转换,使输入到电路的频率能满足电路的需要而又不会烧毁电路中的器件。

(3)设置计数模块

设置计数模块的设置并存储主干道方向和步行街道方向的时间长短。

主干道方向需要设置的时间包括主干道黄灯信号时间、红灯信号时间和主干道车辆允许通行的最短时间,步行街道方向需要设置的时间为步行街道绿灯的闪烁时间。

(4)交通灯控制模块

交通灯控制模块采用状态机来实现,用于存储交通灯的五种状态。

五种状态的具体说明如下状态表所示。

表1状态表

状态

主干道信号灯

步行街信号灯

主干道

步行街道

R(红)

G(绿)

Y(黄)

R(红)

G(绿)

ST0

0

1

0

1

0

通行

禁行

ST1

0

0

1

1

0

车停靠

禁行

ST2

1

0

0

0

1

禁行

通行

ST3

1

0

0

0

禁行

通行(绿灯闪烁)

ST4

0

1

0

1

0

通行(Z秒内)

禁行

2.1.2方案二

依照设计要求,系统采用自底向上的设计方法。

系统整体由交通灯控制模块、计数模块和分频模块三部分组成。

(1)交通灯控制模块

交通灯控制模块主要实现设计要求的五种状态之间的转换,所以采用状态机来设计。

五种状态如表1所示。

(2)计数模块

计数模块模块主要作用控制五种状态之间的转换时间,根据设计要求,设置步行街和主干道两个方向的交通灯时间。

主干道方向需要设置的时间包括主干道黄灯信号时间、红灯信号时间和主干道车辆允许通行的最短时间,步行街道方向需要设置的时间为步行街道绿灯的闪烁时间。

(3)分频模块

由于较大的频率可能使各个状态之间的转换过快,无法更好的观察,所以采用分频模块,把高频率分成低频率,更好实现设计。

2.1.3最佳方案选择

方案一采用自顶向下设计方法,整个设计是从系统顶层开始的,结合模拟手段,可以从一开始就掌握所实现系统的性能状况,结合应用领域的具体要求,在此时就调整设计方案,进行性能优化或折衷取舍。

随着设计层次向下进行,系统性能参数将得到进一步的细化与确认,并随时可以根据需要加以调整,从而保证了设计结果的正确性,缩短了设计周期。

方案二采用自底向上的设计方法,设计从系统的底层开始,不过设计好后不易修改,而且还不易设计。

所以,我们采用方案一。

2.2总体框图

图1整体设计框图

3、选择器件

1.装有QuartusII软件的微型计算机。

计算机的硬件尽可能高,至少可以实现QuartusII软件的使用。

2.硬件实现的芯片为PFGA/CPLD,芯片管脚的数量要保证足够设计的程序所要使用的数量,并且使其所有管脚都有可分配的管脚,可以实现QuartusII上综合、适配的程序下载后可以顺利实现。

3.五个LED灯,用来显示交通灯,即:

行人方向红灯、行人方向绿灯和车辆方向红灯、车辆方向绿灯、车辆方向黄灯五个方向的亮灭。

4、功能模块

4.1去抖模块

这个模块的主要作用是消除按键在敲击时产生的抖动。

当UPIN为低电平,DOWNIN为高电平时,表示按键按下,KEYOUT有高电平输出;当UPIN为高电平,DOWNIN为低电平时,表示按键弹起,KEYOUT有低电平输出。

4.1.1VHDL源程序(DITHER.VHD)

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

ENTITYDITHERIS

PORT(

UPIN:

INSTD_LOGIC;

DOWNIN:

INSTD_LOGIC;

KEYOUT:

OUTSTD_LOGIC

);

ENDDITHER;

ARCHITECTUREBEHAVEOFDITHERIS

SIGNALOUT1:

STD_LOGIC;

SIGNALOUT2:

STD_LOGIC;

BEGIN

OUT1<=NOT(OUT2ANDUPIN);

OUT2<=NOT(OUT1ANDDOWNIN);

KEYOUT<=OUT1;

ENDBEHAVE;

4.1.2生成的模块

图2DITHER模块

4.1.3仿真图

图3去抖模块仿真图

仿真分析:

输入UPIN、DOWNIN都为低电平时,输出KEYOUT为高电平;输入UPIN为高电平、DOWNIN为低电平时,输出KEYOUT为低电平;输入UPIN为低电平、DOWNIN为高电平时,输出KEYOUT为高电平;输入UPIN、DOWNIN都为高电平时,输出KEYOUT为低电平。

4.2分频器模块

这个模块的主要主要是转换频率,把高频率转换成低频率。

分频后的频率更能适应电路的要求,使电路可以更好的运行。

4.2.1VHDL源程序(DIV.VHD)

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYDIVIS

PORT

CLK_IN:

INSTD_LOGIC;

DIV_OUT:

OUTSTD_LOGIC

);

ENDDIV;

ARCHITECTUREaOFDIVIS

SIGNALFRE_N:

INTEGERRANGE0TO10;

SIGNALCLK_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;

4.2.2生成的模块

图4DIV模块

4.2.3仿真图

图5分频器模块仿真图

仿真分析:

输入CLK_IN信号经过十二个周期后,输出DIV_OUT第一个上升沿来临,实现了分频的作用。

4.3设置计数器模块

这个模块的主要作用是设置并存储主干道方向和步行街道方向的时间长短。

此模块预置了有效信号,通过加计数和减计数加大和减小预知的信号,从而实现对行人通行时间、行人方向信号灯闪烁时间和车辆通行时间的控制。

4.3.1VHDL源程序(COUNT.VHD)

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

ENTITYCOUNTIS

PORT(

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:

OUTINTEGERRANGE31DOWNTO0;

GHUMAN_CLKT:

OUTINTEGERRANGE31DOWNTO0;

GVEHICLE_TIME:

OUTINTEGERRANGE31DOWNTO0

);

ENDCOUNT;

ARCHITECTUREBEHAVEOFCOUNTIS

SIGNALHUMAN_TIME:

INTEGERRANGE31DOWNTO0;

SIGNALVEHICLE_TIME:

INTEGERRANGE31DOWNTO0;

SIGNALSSTATE:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALSCLK:

STD_LOGIC;

SIGNALDSCLK:

STD_LOGIC;

BEGIN

SSTATE<="0000"WHENPRE_SET='0'ELSE

HUMAN_SET&CLEAR&CLKADD&CLKSUB;

SCLK<=CLKADDORCLKSUBORCLEAR;

PROCESS(CLK)

BEGIN

IF(CLK'EVENTANDCLK='1')THEN

DSCLK<=SCLK;

ENDIF;

ENDPROCESS;

PROCESS(RST,CLEAR,DSCLK)

BEGIN

IF(RST='1')THEN

VEHICLE_TIME<=8;

ELSIF(DSCLK'EVENTANDDSCLK='1')THEN

CASESSTATEIS

WHEN"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)

BEGIN

IF(RST='1')THEN

HUMAN_TIME<=4;

ELSIF(DSCLK'EVENTANDDSCLK='1')THEN

CASESSTATEIS

WHEN"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)

BEGIN

IF(RST='1')THEN

GHUMAN_TIME<=5;

GHUMAN_CLKT<=7;

GVEHICLE_TIME<=15;

ELSIF(PRE_SET'EVENTANDPRE_SET='0')THEN

GHUMAN_TIME<=HUMAN_TIME+1;

GHUMAN_CLKT<=HUMAN_TIME+3;

GVEHICLE_TIME<=HUMAN_TIME+VEHICLE_TIME+3;

ENDIF;

ENDPROCESS;

ENDBEHAVE;

4.3.2生成的模块

图6COUNT模块

4.3.3仿真图

图7计数器模块仿真图

仿真分析:

当PRE_SET下降沿时,GHUMAN_TIME、GHUMAN_CLKT、GVEHICLE_TIME三个数组输出信号发生跳转,三者关系符合GVEHICLE_TIME<=HUMAN_TIME+VEHICLE_TIME+3。

可以看出,满足计数器的预定功能。

4.4交通灯控制模块

这个模块的主要作用是交通灯五种状态的实现。

此模块采用状态机来实现交通灯的五种状态,设置了行人方向和车辆方向的五个交通灯,即行人方向红灯、行人方向绿灯和车辆方向红灯、车辆方向绿灯、车辆方向黄灯。

并设置了请求信号输入,作为行人要通过主干道的按钮。

4.4.1VHDL源程序(LIGHT.VHD)

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

ENTITYLIGHTIS

PORT(

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;

ARCHITECTUREBEHAVEOFLIGHTIS

TYPEIN_STATESIS(ST0,ST1,ST2,ST3,ST4);

SIGNALCURRENT_STATE:

IN_STATES;

SIGNALNEXT_STATE:

IN_STATES;

SIGNALSTART:

STD_LOGIC;

SIGNALSIG:

INTEGERRANGE31DOWNTO0;

BEGIN

PROCESS(CURRENT_STATE,RST)

BEGIN

IF(RST='1'ORCURRENT_STATE=ST0)THEN

START<='0';

ELSESTART<='1';

ENDIF;

ENDPROCESS;

A:

PROCESS(START,CLK)

BEGIN

IF(RST='1')THEN

SIG<=0;

ELSIF(CLK'EVENTANDCLK='1')THEN

IF(START='1')THEN

IF(SIG=GVEHICLE_TIME)THEN

SIG<=0;

ELSESIG<=SIG+1;

ENDIF;

ELSESIG<=0;

ENDIF;

ENDIF;

ENDPROCESSA;

PROCESS(RST,CLK)

BEGIN

IF(RST='1')THEN

CURRENT_STATE<=ST0;

ELSIF(CLK'EVENTANDCLK='1')THEN

CURRENT_STATE<=NEXT_STATE;

ENDIF;

ENDPROCESS;

PROCESS(CLK,CURRENT_STATE)

BEGIN

CASECURRENT_STATEIS

WHENST0=>ERED<='0';EGREEN<='1';EYELLOW<='0';SRED<='1';SGREEN<='0';

IF(REQUEST='1'ANDGT_SET='0')THEN

NEXT_STATE<=ST1;

ELSENEXT_STATE<=ST0;

ENDIF;

WHENST1=>ERED<='0';EGREEN<='0';EYELLOW<='1';SRED<='1';SGREEN<='0';

IF(SIG=1)THEN

NEXT_STATE<=ST2;

ELSENEXT_STATE<=ST1;

ENDIF;

WHENST2=>ERED<='1';EGREEN<='0';EYELLOW<='0';SRED<='0';SGREEN<='1';

IF(SIG=GHUMAN_TIME)THEN

NEXT_STATE<=ST3;

ELSENEXT_STATE<=ST2;

ENDIF;

WHENST3=>ERED<='1';EGREEN<='0';EYELLOW<='0';SRED<='0';SGREEN<=NOTCLK;

IF(SIG=GHUMAN_CLKT)THEN

NEXT_STATE<=ST4;

ELSENEXT_STATE<=ST3;

ENDIF;

WHENST4=>ERED<='0';EGREEN<='1';EYELLOW<='0';SRED<='1';SGREEN<='0';

IF(SIG=GVEHICLE_TIME)THEN

NEXT_STATE<=ST0;

ELSENEXT_STATE<=ST4;

ENDIF;

WHENOTHERS=>ERED<='0';EGREEN<='1';EYELLOW<='0';

SRED<='1';SGREEN<='0';NEXT_STATE<=ST3;

ENDCASE;

ENDPROCESS;

ENDBEHAVE;

4.4.2生成的模块

图8LIGHT模块

4.4.3仿真图

图9交通灯控制模块的仿真图

仿真分析:

从图上可以看出五个交通灯的变化情况,符合源程序赋予的各个状态的变化。

5、总体设计原理图

5.1整体组装设计原理图

图10整体组装设计原理图

5.2整体仿真图

图11系统整体仿真图

仿真分析:

当RST为高电平时,五种灯(行人方向红灯、行人方向绿灯和车辆方向红灯、车辆方向绿灯、车辆方向黄灯)按照五种状态依次变换,每种状态之间的变换时间与计数模块的一致。

5.3管脚分布

图12系统整体管脚分布

参考文献

1.曹昕燕,周凤臣,聂春燕。

EDA技术实验和课程设计。

北京:

清华大学出版社,2006。

2.潘松,黄继业。

EDA技术实用教程(第三版)。

北京:

科学出版社,2006。

3.谭会生。

EDA技术综合应用实例和分析。

西安:

西安电子科技大学出版社,2004。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 育儿知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1