eda交通灯课程设计.doc
文本预览下载声明
EDA 交通灯课程设计
姓名:马晨
学号: 20111601310056
专业: 11 级电子信息工程
学院:信息科学技术学院
1.系统功能设计要求
1.只有在小路上发现汽车时,高速公路上的交通灯才可能变为红灯。
2.当汽车行驶在小路上时、小路的交通灯保持为绿灯,但不能超过给定的延
迟时间 .
〔注;这段时间定义为 20S 时间 )。
3.高速公路灯转为绿灯后,即使小路上有汽车出现 ,而高速公路上并无汽车,
也将在给定的时间内保持高速公路绿灯
(注:这段时间定义为 60S) 。
高速公路通车
小路有车
N
Y
T60S
N
Y
5S黄灯
小路通车
小路有车
N
5S黄灯
Y
N
Y
T20S
2.设计原理
2.1 交通灯控制器的状态转换
根据论文题目要求,将红绿灯的状态转换列成如下表
工作状态
小路
大路
A(60s)
红灯亮
绿灯亮
B (5s)
红灯亮
黄灯亮
C(20)
绿灯亮
红灯亮
D(5)
黄灯亮
红灯亮
上表为交通灯控制器的状态转换表
3.电路符号
clk 为系统时钟信号输入端, sm 为传感器信号输入通行信号输入端, mr 为主道红灯信号输出端, my 为主道黄灯信号输出端, mg 为主道绿灯信号输出端, br 为小路红灯信号输出端, by 为小路黄灯信号输出端, bg 为小路绿灯信号输出端。
4.设计方式
采用文本编辑法,既采用 vhdl 语言描述交通控制器,代码如下:
library ieee;
use ieee.std_logic_1164.all;
entity jiaotong is
port(clk,sm,sb:in std_logic;
mr,my,mg,br,by,bg:out std_logic);
end jiaotong;
architecture art of jiaotong is
type state_type is(a,b,c,d);
signal state:state_type;
begin
cnt:process(clk) is
variable s: integer range 0 to 60;
variable clr,en:bit;
begin
if(clkevent and clk=1) then
if clr=0 then
s:=0;
elsif en=0 then
s:=s;
else
s:=s+1;
end if;
case state is
when a=mr=0;my=0;mg=1;
br=1;by=0;bg=0;
if(sb and sm)=1 then
if s=60 then
clr:=0;state=b;en:=0;
else
clr:=1;state=a;en:=1;
end if;
elsif(sb and not(sm))=1 then
clr:=0;state=b;en:=0;
else
state=a;clr:=1;en:=1;
end if;
when b=mr=0;my=1;mg=0;
br=1M,;by=0;bg=0;
if s=5 then
state=c;clr:=0;en:=0;
else
state=b;clr:=1;en:=1;
end if;
when c=mr=1;my=0;mg=0;
br=0;by=0;bg=1;
if (sm and sb)=1 then
if s=20 then
state=d;clr:=0;en:=0;
else
state=c;clr:=1;en:=1;
end if;
elsif sb=0 then
state=d;clr:=0;en:=0;
else
state=c;clr:=1;en:=1;
end if;
when d=mr=1;my=0;mg=0;
br=0;by=1;bg=0;
if s=5 then
state=a;clr:=0;en:=0;
else
state=d;clr:=1;en:=1;
end if;
end case;
end if;
end process cnt;
end architecture art;
5.软件仿真
6.结论
通过时序逻辑图可以看出,控制器能完成预期的实验效果,通过
对 sm 和 sb 的控制可以看出,预计效果较好。
7.收获及感想
短短一个星期的 EDA 课程设计很块就结束了,虽然在之前的学习过程中还存在着没有弄懂的问题, 但是通过这次设计, 进一步加深了对 EDA 的了解,让我对它有了更加浓厚的兴趣。
在拿到题目后, 首先进行了单元模块的设计, 将每一个单元模块设计完成后再经行仿真,在波形仿真的过程中,同样遇到了困难,有的时候,由于 END TIME 的时间修改的太大,会出现仿真时间过长的问题,这个时候应该要把 END TIME 的时间
显示全部