EDA课程设计

发布 2022-09-30 20:26:28 阅读 2148

交通信号灯控制器设计。

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计时...