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