EDA课程设计-交通信号灯

  • 格式:doc
  • 大小:268.00 KB
  • 文档页数:17

文档可能无法思考全面,请浏览后下载!

1 / 17

EDA技术课程设计报告

交通灯控制器

一、设计功能:

实现高速公路与乡间小路的交叉路口红绿灯的控制

二、具体功能要求:

1、只有在小路上发现汽车时,高速公路上的交通灯才可能变成红灯。

2、当汽车行驶在小路上时,小路的交通灯保持为绿灯,但不能超过给定的延迟时间。

(注:这段时间定义为20秒时间)

3、高速公路灯转为绿灯后,即使小路上有汽车出现,而高速公路上并无汽车,也将在给定时间内保持高速公路绿灯。

(注:这段时间定义为60秒时间) 文档可能无法思考全面,请浏览后下载!

2 / 17

4、原理框图如下:

文档可能无法思考全面,请浏览后下载!

3 / 17

5、交通信号灯的4种状态如下表:

A B C D

高速交通灯 绿(60秒) 黄(5秒) 红(20秒) 红(5秒)

小道交通灯 红 红 绿 黄

三、参考设计方案:

文档可能无法思考全面,请浏览后下载!

4 / 17

时间显示数据输出

红黄绿灯信号输出

图2 交通信号灯控制器的原理框图

采用VHDL语言输入的方式实现交通信号灯控制器

CLK

时间显示数据输出

信号灯输出

图3 交通信号灯控制器程序原理框图

该程序由7个进程组成,进程P1和P2将CLK信号分频后产生1秒信号,进程P3、P4、P5构成两个带有预置数功能的十进制计数器,其中P4产生允许十位计数器计数的控制信号。进程P6实现状态转换和产生状态转换的控制信号,进程P7产生次态信号和信号灯输出信号,以及每一个状态的时间值。

计数器驱动脉冲如图所示: 状态发生器(两位二进制计数器) 定时时间到检测电路

预置数产生电路

计时器

1秒时钟脉冲信号发生器 红黄绿灯输出

控制电路(RYG)

秒脉冲信号发生器(进程P1和P2) 计数器

(进程P3、P4和P5) 状态寄存器

(进程P6)

次态发生器

信号灯输出信号

(进程P7) 文档可能无法思考全面,请浏览后下载!

5 / 17

四、编写相应源程序:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED. ALL;

ENTITY CONTRALZ IS

PORT(CLK:IN STD_LOGIC;

RA,GA,YA:OUT STD_LOGIC;

TIMEAH,TIMEAL:OUT STD_LOGIC_VECTOR(3

DOWNTO 0));

END CONTRALZ;

ARCHITECTURE BHV OF CONTRALZ IS 文档可能无法思考全面,请浏览后下载!

6 / 17 TYPE RG IS (GREEN,RED,YELLOW2);

BEGIN

PROCESS(CLK)

VARIABLE A:STD_LOGIC;

VARIABLE TH,TL:STD_LOGIC_VECTOR(3 DOWNTO 0);

VARIABLE STATE:RG;

BEGIN

IF CLK'EVENT AND CLK='1'

THEN CASE STATE IS

WHEN GREEN=>IF A='0'

THEN TH:="0101";

TL:="1001";

A:='1';

GA<='1';

RA<='0';

YA<='0';

ELSE IF

NOT(TH="0000"AND TL="0001")

THEN IF TL="0000"

THEN TL:="1001";

TH:=TH-1;

ELSE TL:=TL-1; 文档可能无法思考全面,请浏览后下载!

7 / 17 END IF;

ELSE

TH:="0000";

TL:="0000";

A:='0';

STATE:=RED;

END IF;

END IF;

WHEN RED=>IF A='0'

THEN TH:="0001";

TL:="1001";

A:='1';

RA<='1';

YA<='0';

GA<='0';

ELSE IF

NOT(TH="0000"AND TL="0001")

THEN IF TL="0000"

THEN TL:="1001";

TH:=TH-1;

ELSE

TL:=TL-1; 文档可能无法思考全面,请浏览后下载!

8 / 17 END IF;

ELSE TH:="0000";

TL:="0000";

A:='0';

RA<='0';

GA<='0';

STATE:=YELLOW2;

END IF;

END IF;

WHEN YELLOW2=>IF A='0'

THEN TH:="0000";

TL:="0101";

A:='1';

YA<='1';

GA<='0';

RA<='0';

ELSE IF NOT(TH="0000"AND TL="0001")

THEN IF TL="0000"

THEN TL:="0101";

TH:=TH-1;

ELSE TL:=TL-1;

END IF; 文档可能无法思考全面,请浏览后下载!

9 / 17 ELSE TH:="0000";

TL:="0000";

GA<='0';

RA<='0';

YA<='0';

A:='0';

STATE:=RED;

END IF;

END IF;

END CASE;

END IF; TIMEAH<=TH;

TIMEAL<=TL;

END PROCESS;

END BHV;

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY CONTRALX IS 文档可能无法思考全面,请浏览后下载!

10 / 17 PORT(CLK:IN STD_LOGIC;

RB,GB,YB,CHU:OUT STD_LOGIC;

TIMEAH,TIMEAL:OUT STD_LOGIC_VECTOR(3

DOWNTO 0));

END CONTRALX;

ARCHITECTURE BHV OF CONTRALX IS

TYPE RGY IS(RED,YELLOW1,GREEN,YELLOW2);

BEGIN PROCESS(CLK)

VARIABLE A:STD_LOGIC;

VARIABLE TH,TL:STD_LOGIC_VECTOR(3 DOWNTO 0);

VARIABLE STATE:RGY;

BEGIN IF CLK'EVENT AND CLK='1'

THEN CASE STATE IS

WHEN YELLOW1=>IF A='0'

THEN TH:="0000";

TL:="0100";

A:='1';

YB<='1';

GB<='0';

RB<='0';

CHU<='1';

ELSE IF NOT(TH="0000"AND TL="0001") 文档可能无法思考全面,请浏览后下载!

11 / 17 THEN IF TL="0000"

THEN TL:="1001";

TH:=TH-1;

ELSE TL:=TL-1;

END IF;

ELSE TH:="0000";

TL:="0000";

A:='0';

STATE:=GREEN;

END IF;

END IF;

WHEN GREEN=>IF A='0'

THEN TH:="0001";

TL:="1001";

A:='1';

GB<='1';

RB<='0';

YB<='0';

CHU<='1';

ELSE IF NOT(TH="0000"AND TL="0001")

THEN IF TL="0000"

THEN TL:="1001";