班级: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 汽车右转...