交通信号灯控制器设计。
1、课程设计的要求及目的。
1、要求:用eda设计一个简单的交通灯控制器,具有如下功能:
(1)设计一个交通信号灯控制器,由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。
(2)用红、绿、黄发光二极管作信号灯,用传感器或逻辑开关作检测车辆是否到来的信号。
(3)主干道处于常允许通行的状态,支干道有车来时才允许通行。主干道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯。 主、支干道均有车时,两者交替允许通行,主干道每次放行45秒,支干道每次放行25秒,设立45秒、25秒计时、显示电路。
(4)在每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡,使行驶中的车辆有时间停到禁行线外,设立5秒计时、显示电路。
2、设计目的:
(1)掌握十字路**通灯控制的设计原理,并能够运用vhdl编程语言编写出一些简单的实验程序,进一步对所学的eda知识进行掌握与实际应用。
(2)学会在max+plusⅱ软件环境中**,熟悉软件的基本操作和运行环境,为以后就业打基础。
(3)锻炼自己获取信息的能力,以及能够独立自主的思考和解决问题的能力。
2、设计流程。
1、分析题目:
1)主、支干道用传感器检测车辆到来情况,实验电路用逻辑开关代替。
2)45秒、25秒、5秒定时信号可用顺计时,也可用倒计时,计时起始信号由主控电路给出,定时结束信号也输入到主控电路,由主控电路启、闭三色信号灯或启动另一计时电路。
3)主控电路是核心,这是一个时序电路,其输入信号为:车辆检测信号(a,b);45秒、25秒、5秒定时信号(c,d,e)。其状态转化图如下所示:
2、设计原理系统框图:
3、设计状态表:
系统有r1y0、r1g0、y1r0、g1r0四个状态;
s1和s0是主、支道的传感器,平时系统停留在g1r0(主干道通行)状态,一旦s0=0时,支道有车,状态由g1r0经y1r0(黄灯状态)转入r1g0(支干道通行)状态,且要保证g1r0的状态不得短于45s;一旦s0=1时,系统脱离r1g0状态。随即经r1y0(黄灯状态)进入g1r0状态,即使s0=0信号一直有效,r1g0状态也不得长于25秒钟。
3、设计原理图。
4、功能模块电路设计。
根据设计要求和系统所具有功能,并参考相关的文献资料经行方案设计。
1、led灯控制器电路设计。
由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄、左拐允许四盏信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外,左拐灯亮允许车辆向左拐弯。信号灯变换次序为:主支干道交替允许通行,主干道每次放行45s,亮5s黄灯让行驶中的车辆有时间停到禁行线外;支干道放行25s,亮5s黄灯,其中主支干道的红黄绿灯表示如r1、y1、g1、r0、y0、g0。
程序如下:library ieee;
use entity dengkongzhiqi is
port(clk,s1,s0:in std_logic;
r1,y1,g1,r0,y0,g0:out std_logic);
end entity dengkongzhiqi;
architecture one of dengkongzhiqi is
type state_type is(a,b,c,d);
signal state:state_type;
begin
cnt:process(clk)is
variable s:integer range 0 to 45;
variable clr,en:bit;
begin
if(clk'event 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=>r1<='0';y1<='0';g1<='1'; r0<='1';y0<='0';g0<='0';
if(s0 and s1)='1' then
if s=45 then
state<=b;clr:='0';en:='0';
else state<=a;clr:='1';en:='1';
end if;
elsif(s0 and (not s1))=1' then state<=b;clr:='0';en:='0';
else state<=a;clr:='1';en:='1';
end if;
when b=>r1<='0';y1<='1';g1<='0'; r0<='1';y0<='0';g0<='0';
if s=5 then state<=c;clr:='0';en:='0';
else state<=b;clr:='1';en:='1';
end if;
when c=>r1<='1';y1<='0';g1<='0'; r0<='0';y0<='0';g0<='1';
if(s1 and s0)='1' then
if s=25 then state<=d;clr:='0';en:='0';
else state<=c;clr:='1';en:='1';
end if;
elsif s0='0' then state<=d;clr:='0';en:='0';
else state<=c;clr:='1';en:='1';
end if;
when d=>r1<='1';y1<='0';g1<='0'; r0<='0';y0<='1';g0<='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 one;
**波形:clk输入时钟信号,s1、s0分别为主、支道传感器,g1、r1和y1分别为主干道绿灯、红灯和黄灯;g0、r0和y0分别为支道绿灯、红灯和黄灯。图中为支道绿灯亮,当绿灯亮时间到,黄灯亮起,后又转入红灯亮;而主干道则由红灯转入绿灯。
生成原理器件:
2、计数器的设计。
据题目要求,计数器需要三个,分别为45s、25s和5s计数器。
s计数器程序设计:
library ieee;
use use
entity cnt45s is
port(s0,clk,en45:in std_logic;
dout45m,dout45b:out std_logic_vector(7 downto 0));
end entity cnt45s;
architecture one of cnt45s is
signal cnt6b:std_logic_vector(5 downto 0);
beginprocess(s0,clk,en45) is
beginif s0='0' then cnt6b<=cnt6b-cnt6b-1;
elsif(clk'event and clk='1')then
if en45='1' then cnt6b<=cnt6b+1;
elsif en45='0' then cnt6b<=cnt6b-cnt6b-1;
end if;
end if;
end process;
process(cnt6b)is
begincase cnt6b is
when"000000"=>dout45m<="00101101";dout45b<="00110010";
when"000001"=>dout45m<="00101100";dout45b<="00110001";
when"000010"=>dout45m<="00101011";dout45b<="00110000";
when"000011"=>dout45m<="00101010";dout45b<="00101111";
when"000100"=>dout45m<="00101001";dout45b<="00101110";
when"000101"=>dout45m<="00101000";dout45b<="00101101";
when"000110"=>dout45m<="00100111";dout45b<="00101100";
when"000111"=>dout45m<="00100110";dout45b<="00101011";
when"001000"=>dout45m<="00100101";dout45b<="00101010";
when"001001"=>dout45m<="00100100";dout45b<="00101001";
when"001010"=>dout45m<="00100011";dout45b<="00101000";
when"001011"=>dout45m<="00100010";dout45b<="00100111";
when"001100"=>dout45m<="00100001";dout45b<="00100110";
when"001101"=>dout45m<="00100000";dout45b<="00100101";
when"001110"=>dout45m<="00011111";dout45b<="00100100";
when"001111"=>dout45m<="00011110";dout45b<="00100011";
when"010000"=>dout45m<="00011101";dout45b<="00100010";
when"010001"=>dout45m<="00011100";dout45b<="00100001";
when"010010"=>dout45m<="00011011";dout45b<="00100000";
when"010011"=>dout45m<="00011010";dout45b<="00011111";
EDA课程设计
题目一 数字钟设计 学号1 15 一 实验目的。学习并掌握数字钟的原理 设计方法。二 实验内容。计数始终由模60秒计数器 模60分计数器 模24小时计数器 报时模块 分 时设定模块及输出显示模块构成。可以采用同步计数器或异步计数器设计方法。三 实验要求。计时范围为0小时0分0秒至23小时59分59秒...
eda课程设计
哈尔滨工业大学 威海 信电学院电子信息工程。一 软硬件介绍。1软件部分介绍。1.1 quartus ii 是altera公司的综合性pld fpga开发软件,支持原理图 vhdl veriloghdl以及ahdl altera hardware description language 等多种设计输...
eda课程设计
目录。1 引言 2 1.1 课程设计的目的与任务 2 1.2 课程设计的内容 2 1.3课程设计仪器设备 2 1.4 课程设计的题目 2 1.5 方案的选择 2 2设计方案 3 2.1 设计原理 3 2.2各功能模块的原理及其源程序 3 2.2.1控制模块 3 2.2.2分频模块 4 2.2.3计时...