实验五 交通灯实验Word文件下载.docx

上传人:b****3 文档编号:18471925 上传时间:2022-12-17 格式:DOCX 页数:21 大小:223.33KB
下载 相关 举报
实验五 交通灯实验Word文件下载.docx_第1页
第1页 / 共21页
实验五 交通灯实验Word文件下载.docx_第2页
第2页 / 共21页
实验五 交通灯实验Word文件下载.docx_第3页
第3页 / 共21页
实验五 交通灯实验Word文件下载.docx_第4页
第4页 / 共21页
实验五 交通灯实验Word文件下载.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

实验五 交通灯实验Word文件下载.docx

《实验五 交通灯实验Word文件下载.docx》由会员分享,可在线阅读,更多相关《实验五 交通灯实验Word文件下载.docx(21页珍藏版)》请在冰豆网上搜索。

实验五 交通灯实验Word文件下载.docx

若SM=0、SB=1,此时主干道由绿变黄再变红,而从干道待主干道变红时即变绿;

若SM=1、SB=1,此时数码管进行45s倒计时后,转入主黄从红的状态,计时5s后转入主红从绿的状态,计时25s后,在转入主红从黄的状态,最后计时5s后又从新回到主绿从黄的状态。

若在状态进行转换的时候SM、SB的状态发生了变化,即按上述SM、SB如何变化进行状态转换。

 

3、状态转移图如下(仅当SM=1时)

SB=0C<

5

SB=1C>

45s

MGBRMYBR

SB=1

5秒后5秒后

C<

SB=1C<

25

MRBYMRBG

四、

试验程序

实验总框图

--1000分频程序

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYcou1IS

GENERIC(N:

INTEGER:

=4);

--定义一个generic

PORT(CLK:

INSTD_LOGIC;

CLK1:

OUTSTD_LOGIC);

ENDcou1;

ARCHITECTUREbehavOFcou1IS

SIGNALCNT:

STD_LOGIC_VECTOR(9DOWNTO0);

BEGIN

PROCESS(CLK)

IFCLK'

EVENTANDCLK='

1'

THEN--产生一个占空比为50%的方波

IFCNT>

=N/2-1THENCLK1<

='

;

CNT<

=CNT+1;

IFCNT=N-1THENCLK1<

0'

="

0000000000"

ENDIF;

ELSECLK1<

ENDPROCESS;

ENDARCHITECTUREbehav;

--状态控制程序

--JTDKZ.VHD

ENTITYJTDKZIS

PORT(CLK,SM,SB:

--MR:

主干道红灯MY:

主黄MG:

主绿

MR,MY,MG,BR,BY,BG:

--BR:

从干道红灯BY:

从黄BG:

从绿

--以上信号为1时点亮相应的灯

ENDENTITYJTDKZ;

--SM=1主干道有车SM=0主干道无车

ARCHITECTUREARTOFJTDKZIS--SB=1从干道有车SB=0从干道无车

TYPESTATE_TYPEIS(A,B,C,D);

SIGNALSTATE:

STATE_TYPE;

BEGIN

CNT:

PROCESS(CLK)IS

VARIABLES:

INTEGERRANGE0TO45;

VARIABLECLR,EN:

BIT;

BEGIN

IF(CLK'

EVENTANDCLK='

)THEN

IFCLR='

THEn

S:

=0;

ELSIFEN='

THEN

=S;

ELSE

=S+1;

CASESTATEIS

WHENA=>

MR<

MY<

MG<

--状态一:

主绿从红

BR<

BY<

BG<

IF(SBANDSM)='

THEN--主从干道都有车时进行45s倒

IFS=45THEN--计时,计完后转入状态二

STATE<

=B;

CLR:

EN:

ELSE

=A;

ELSIF(SBAND(NOTSM))='

THEN--主干道无车,从干道有车转到状态二

WHENB=>

--状态二:

主黄从红

IFS=5THEN--5s倒计时,计完转入状态三

=C;

CLR:

WHENC=>

--状态三:

主红从绿

IF(SMANDSB)='

THEN--主从干道都有车,25s倒计时后转入

IFS=25THEN--状态四

=D;

ELSIFSB='

THEN--若从干道此时无车,直接转入状态四

WHEND=>

--状态四:

主红从黄

IFS=5THEN--5s倒计时后转入状态一

ENDCASE;

ENDPROCESSCNT;

ENDARCHITECTUREART;

--45s延时

--CNT45S.VHD

ENTITYCNT45SIS

PORT(SB,CLK,EN45:

DOUT45M,DOUT45B:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDENTITYCNT45S;

ARCHITECTUREARTOFCNT45SIS

SIGNALCNT6B:

STD_LOGIC_VECTOR(5DOWNTO0);

PROCESS(SB,CLK,EN45)IS

IFSB='

THENCNT6B<

=CNT6B-CNT6B-1;

--若从干道无车,不计时

ELSIF(CLK'

EVENTANDCLK='

IFEN45='

=CNT6B+1;

ELSIFEN45='

--若主干道不是绿灯不计时

----将顺序计数转化为倒序45sBCD码计数

PROCESS(CNT6B)IS----DOUT45M从45到0;

DOUT45B从50到5,然后从5直接变到0,

BEGIN----因为在状态二的时候有5S黄灯时间需要在从干道上显示,从干道

CASECNT6BIS--上的人累计等待时间50s

WHEN"

000000"

=>

DOUT45M<

01000101"

DOUT45B<

01010000"

WHEN"

000001"

01000100"

01001001"

000010"

01000011"

01001000"

000011"

01000010"

01000111"

000100"

01000001"

01000110"

000101"

01000000"

000110"

00111001"

000111"

00111000"

001000"

00110111"

001001"

00110110"

001010"

00110101"

DOUT45B<

001011"

00110100"

01101001"

001100"

00110011"

001101"

00110010"

001110"

00110001"

001111"

00110000"

010000"

00101001"

010001"

00101000"

010010"

00100111"

010011"

00100110"

010100"

00100101"

010101"

00100100"

010110"

00100011"

010111"

00100010"

011000"

00100001"

011001"

00100000"

011010"

00011001"

011011"

00011000"

011100"

00010111"

011101"

00010110"

011110"

00010101"

011111"

00010100"

100000"

00010011"

100001"

00010010"

100010"

00010001"

100011"

00010000"

100100"

00001001"

100101"

00001000"

100110"

00000111"

100111"

00000110"

101000"

00000101"

101001"

00000100"

101010"

00000011"

101011"

00000010"

101100"

00000001"

WHENOTHERS=>

00000000"

--25s延时(与45s延时编程思想一样,这里不做说明了)

--CNT25S.VHD

ENTITYCNT25SIS

PORT(SB,SM,CLK,EN25:

DOUT25M,DOUT25B:

ENDENTITYCNT25S;

ARCHITECTUREARTOFCNT25SIS

SIGNALCNT5B:

STD_LOGIC_VECTOR(4DOWNTO0);

PROCESS(SB,SM,CLK,EN25)IS

ORSM='

CNT5B<

=CNT5B-CNT5B-1;

ELSIF(CLK'

IFEN25='

=CNT5B+1;

ELSIFEN25='

THEN

PROCESS(CNT5B)IS

CASECNT5BIS

00000"

DOUT25B<

DOUT25M<

00001"

00010"

00011"

00100"

00101"

00110"

00111"

01000"

01001"

01010"

01011"

01100"

01101"

01110"

01111"

10000"

10001"

10010"

10011"

10100"

10101"

10110"

10111"

11000"

--5s延时(与45s类似)

--CNT05S.VHD

ENTITYCNT05SIS

PORT(CLK,EN05M,EN05B:

DOUT5:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDENTITYCNT05S;

ARCHITECTUREARTOFCNT05SIS

SIGNALCNT3B:

STD_LOGIC_VECTOR(2DOWNTO0);

PROCESS(CLK,EN05M,EN05B)IS

IFEN05M='

OREN05B='

THEN

CNT3B<

=CNT3B+1;

000"

PROCESS(CNT3B)IS

CASECNT3BIS

DOUT5<

001"

010"

011"

100"

--DOUT5<

--数码管显示控制程序

--XSKZ.VHD

USEIEEE.STD_LOGIC_11

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

当前位置:首页 > 解决方案 > 学习计划

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

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