EDA设计大作业

发布 2022-09-02 20:57:28 阅读 5668

班级:1302041

学号:130***

姓名:陈串串。

交通控制器。

一、选题目的。

了解vhd语言,并且学会使用该语言编写程序,在quartus ii 8.0**实现,在数电实验板上实际操作,锻炼动手能力,交通控制器的选题十分贴近生活,能够将理论和实际相结合。

二、设计目标。

交通控制器。

设计一个十字路**通控制系统,其东西,南北两个方向除了有红、黄、绿灯指示是否允许通行外,还设有时钟,以倒计时方式显示每一路允许通行的时间,绿灯,黄灯,红灯的持续时间分别是和45秒。当东西或南北两路中任一道上出现特殊情况,例如有消防车,警车要去执行任务,此时交通控制系统应可由交警手动控制立即进入特殊运行状态,即两条道上的所有车辆皆停止通行,红灯全亮,时钟停止计时,且其数字在闪烁。当特殊运行状态结束后,管理系统恢复原来的状态,继续正常运行。

三、实现方案。

流程图如下:

本系统主要由分频器、计数器、控制器等电路组成。分频器将晶振送来的1000hz信号变为1hz时钟信号;计数器实现总共90秒的计数,90秒也是交通灯控制器的一个大循环;控制其控制系统的状态转移和红黄绿灯信号的输出;倒计时显示红黄绿灯闪亮的时间。整个系统的时序受控制器控制,它是系统的核心。

控制器的整个工作过程用状态机进行描述,5种状态描述如下:

s0:a方向绿灯亮,b方向红灯亮,此状态持续40秒时间;

s1:a方向黄灯亮,b方向红灯亮,此状态持续5秒的时间;

s2:a方向红灯亮,b方向绿灯亮,此状态持续40秒时间;

s3:a方向红灯亮,b方向黄灯亮,此状态持续5秒时间;

s4:紧急制动状态,a方向红灯亮,b方向绿灯亮,当紧急制动信号有效时,进入这种状态。

交通控制器系统的状态转移图:

四、设计过程。

顶层原理图,共分为dev模块、co模块、m4模块。

原理:通过devide模块将1000hz的clk分频为1hz,通过control模块分别控制两个方向的红绿黄灯的亮暗,并将红绿黄灯(即ared,agreen,ayellow和bred,bgreen,byellow)作为m45模块的输入端来选择5s,40s,45s这三个时段的显示。

1) devide模块。

作用:1000hz分频器。

2) control模块。

作用:clk为时钟输入信号,hold为紧急制动信号,ared,agreen,ayellow分别为红、绿、黄灯。控制系统的时序和状态转移。

3) m45模块。

作用:倒计时计数器。

顶层原理图。

五、遇到问题及解决办法。

遇到问题:1.数码管的显示出现乱码;

2.两个路口的计数器要实现不同的显示。

3.紧急制动状态下,数码管要来回显示当前数字和零,即实现闪烁。

4.数码管显示的数字与红绿黄灯的状态不同步。

解决方法:模块(仅去低四位,即d、e、f、g四个输出端口有效,a、b、c三个输出端口不发生作用)接入数码管显示时钟。

2.通过control模块分别控制两个方向的红绿黄灯的亮暗,并将红绿黄灯(即ared,agreen,ayellow和bred,bgreen,byellow)作为m45模块的输入端来选择5s,40s,45s这三个时段的显示。

实现结果:**结果:(clk频率为1000hz)

六、编程调试。

1) d模块。

library ieee;

use use

entity devide is

port(clk :in std_logic;

clk_out :out std_logic

end devide;

architecture arc_devide of devide is

signal count:std_logic_vector(9 downto 0);

beginprocess

beginwait until clk'event and clk='1';

if(count<999) then

count<=count+1;

clk_out<='0';

elsecount<=(others=>'0');

clk_out<='1';

end if;

end process;

end architecture arc_devide;

2) control模块。

控制器control的逻辑符号如下图所示。其中clk为时钟输入信号;hold为紧急制动信号;a[2..0]分别为东西分方向驱动红灯、绿灯、黄灯的输出信号;b[2..

0]分别为南北方向驱动红灯、绿灯、黄灯指示的输出信号。

控制器的vhdl描述文件如下:

library ieee;

use use

entity control is

port(clk,hold :in std_logic;

a,b:out std_logic_vector(2 downto 0)

end control;

architecture beh**ior of control is

type state_type is (s0,s1,s2,s3,s4);

signal current_state,next_state :state_type;

signal counter :std_logic_vector(6 downto 0);

beginsynch :process

beginwait until clk' event and clk='1';

if hold='0' then

counter<=counter;

elseif counter<89 then

counter<=counter+1;

elsecounter<=(others=>'0');

end if;

end if;

end process;

process

beginwait until clk' event and clk='1';

current_state<=next_state;

end process;

state_trans : process(current_state)

begincase current_state is

when s0 =>

if hold='0' then

next_state<=s4;

elseif counter<39 then

next_state<=s0;

elsenext_state<=s1;

end if;

end if;

when s1 =>

if hold='0' then

next_state<=s4;

elseif counter<44 then

next_state<=s1;

elsenext_state<=s2;

end if;

end if;

when s2 =>

if hold='0' then

next_state<=s4;

elseif counter<84 then

next_state<=s2;

elsenext_state<=s3;

end if;

end if;

when s3 =>

if hold='0' then

next_state<=s4;

elseif counter<89 then

next_state<=s3;

elsenext_state<=s0;

end if;

end if;

when s4 =>

if hold='0' then

next_state<=s4;

elseif counter<39 then

next_state<=s0;

elsif counter<44 then

next_state<=s1;

EDA大作业

eda技术课程大作业。设计题目 4线 16线译码器设计。学生姓名。学号。专业班级 09电子信息1班 2012年5月26日。4线 8线译码器设计。1.设计背景与设计方案。1.1设计背景。译码器是组合逻辑电路的一个重要器件,它是一种将一种编码转换为另一种编码的逻辑电路,在编码时,每一种二进制 都赋予了特...

EDA大作业

eda技术课程大作业。设计题目 双二选一多路选择器。学生姓名 王行智。学号 201002050002 专业班级 电气自动化技术一班。2012 年 5 月 26日。1.设计背景 在很多时候,要完成一项工作,需要进行两次判断和选择,对于机器和人都是如此,这就需要两个选择器,双2选1多路选择器就应运而生了...

EDA大作业

一 设计方案。1 设计一个汽车尾灯控制器,利用eda软件 max plusii 进行编译及 设计输入可采用vhdl硬件描述语言输入法和原理图输入法,通过 查看设计的可行性,因条件有限,只能进行简单的 实验。2 设计要求。1 汽车尾部左右两侧各有多盏指示灯。2 汽车正常行驶时指示灯都不亮。3 汽车右转...