交通灯实验报告.docx

上传人:b****5 文档编号:2786420 上传时间:2022-11-15 格式:DOCX 页数:21 大小:202.30KB
下载 相关 举报
交通灯实验报告.docx_第1页
第1页 / 共21页
交通灯实验报告.docx_第2页
第2页 / 共21页
交通灯实验报告.docx_第3页
第3页 / 共21页
交通灯实验报告.docx_第4页
第4页 / 共21页
交通灯实验报告.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

交通灯实验报告.docx

《交通灯实验报告.docx》由会员分享,可在线阅读,更多相关《交通灯实验报告.docx(21页珍藏版)》请在冰豆网上搜索。

交通灯实验报告.docx

交通灯实验报告

 

数字电路综合实验报告

 

交通灯控制器

 

院系:

电信工程学院通信工程系

班级:

0111105班

姓名:

***

学号:

******号(1号)

一、设计任务要求

交通灯控制器:

用于十字路口的交通灯控制器。

实验要求:

1.东西方向各有一组红,黄,绿灯用于指挥交通,红,黄,绿的持续时间分别为25s,5s,20s。

2.当有紧急情况(如消防车)时,两个方向均为红灯亮,计时停止,当特殊情况结束后,控制器恢复原来状态,正常工作。

3.组数码管,以倒计时方式显示两个方向允许通行或禁止通行的时间。

二、设计思路及总体结构框图

设计思路:

1.硬件:

由设计任务要求可知,总体输入电路有:

(1)在开始计时之前的等待状态,复位键reset接低电位,接通电源后,首先要将它接高电位,表示计时开始。

(2)当按一下(on_off)键,表示紧急情况发生,两个方向均为红灯亮,计时停止,当再次按下(on_off)键时,控制器恢复原来状态,正常工作。

输出电路:

(1)由于东西和南北方向都要显示时间,因此需要4个数码管,这样在设计中就需要四条输出线choose4,用来选通指定一个LED七段显示数码管。

(2)显示器的每一位都采用LED七段显示数码管进行显示,每一个LED七段显示数码管都要有七条输出线控制,一共使用4个七段数码管,故输出电路使用四个七位输出信号:

showtime1,showtime2,showtime3,showtime4。

(3)东西和南北方向都有交通灯亮的情况,故输出电路中要有两个状态控制信号state1,state2分别控制东西和南北的灯,每个方向上有4个灯(增加了左、右转弯显示控制功能),所以state1,state2的类型应该是4位数组型的。

外部电路图如下:

clk4/

stas

reset

on_off4/

7/

7/

7/

7/

 

4/

2.软件:

(1)在VHDL设计描述中,采用自顶向下的设计思路,该思路,首先要描述顶层的接口,上面的描述已经规定了交通灯控制的输入输出信号:

输入信号:

复位开关信号reset;

紧急情况控制信号on_off;

外部时钟信号clk。

输出信号:

LED七段显示数码管的选通信号choose4(3downto0);

LED七段显示数码管的输出信号showtime1(6downto0),showntime2(6downto0),showtime3(6downto0),showtome4(6downto0);

交通灯状态控制信号state1(3downto0),state2(3downto0)。

(2)在自顶向下的VHDL设计描述中,通常把整个设计的系统划分为几个模块,然后采用结构描述方式对整个系统进行描述。

根据实验设计的结构功能,来确定使用哪些模块以及这些模块之间的关系。

由于紧急情况控制信号是采用按键的输入方式,其产生时刻和持续时间的长短是随机不定的,且存在因开关簧片反弹引起的电平抖动现象,因此必须在每个开关后面安排一个消抖和同步化电路模块,以保证系统能捕捉到输入脉冲,故需要有防抖动的模块。

由于外部时钟信号clk的频率为1MHz,而实际需要的内部计时时钟频率为1Hz,提供给消抖同步电路的频率为50Hz(满足按键)和提供给产生选通信号电路的时钟频率为200Hz(满足视觉暂留效应)。

当正常计时开始后,需要进行定时计数操作,由于东西和南北两个方向上的时间显示器是由两个LED七段显示数码管组成的,因此需要产生两个2位的计时信息:

2个十位信号,2个个位信号,这个定时计数操作可以由一个定时计数器来完成,又因为交通灯的状态变化是在计时为0的情况下才能进行的,因此需要一个计时电路来产生使能信号,因此定时计数的功能就是用来产生2个2位计时信息和使能信号。

另外还需要将时间显示出来,为了节省资源,我采用了循环点亮LED七段显示数码管的方法来显示计时输出。

通过信号choose4(3downto0)来对4个LED七段显示数码管进行选择。

由于不能使用7448自动译码集成电路,故在LED七段显示数码管显示时间时,要把计时结果转换为七段码输出到相应的LED七段显示数码管上,因此还需要一个转换电路。

交通灯状态控制也需要一个电路,当有使能信号及无紧急情况下,交通灯状态不发生变化,有紧急情况时,两个方向上均为红灯亮,紧急情况消除后,回到原来状态,无使能信号时,交通灯状态不变。

通过上面的分析,不难得知可以把交通灯控制系统划分为6个模块:

键输入模块,时钟分频模块,计时模块,选通模块,显示模块,控制模块。

各个模块之间的连接关系如下:

resetshowtime

on_off

 

reset0on_off0

clk1

timel,times

clk2clk0choose4

 

三、总体结构框图

 

No

yes

 

Yes

No

No

Yes

No

YesYes

No

No

Yes

 

Yes

No

No

Yes

Yes

No

Yes

四、分块电路设计.

(1)键输入模块(keyin)

输入信号:

紧急情况on_off;用来消除抖动的时钟信号clk1,由时钟分频模块提供。

输出信号:

去抖后的提示信号on_off0。

(2)时钟分频模块(clk_div)

输入信号:

外部时钟信号clk;

输出信号:

消除抖动的时钟信号clk1;计时内部时钟信号clk2;产生选通信号的时钟信号clk0。

(3)计时模块(time):

输入信号:

定时计时时钟clk2,由时钟分频模块提供;去抖动后的提示信号on_off0;复位信号reset;状态提示信号state(1downto0);

输出信号:

东西方向的十位信号eq1(3downto0);东西方向的个位信号eq0(3downto0);南北方向的十位信号sq1(3downto0);南北方向的个位信号sq0(3downto0);使能信号timel,times。

(4)选通模块(choose):

输入信号:

选通时钟信号clk0,由时钟分频模块提供。

输出信号:

选通信号choose4(3downto0)。

(5)显示模块(display):

输入信号:

计时的十位或个位信号;

输出信号:

控制LED七段显示数码管的七位数组型信号。

(6)控制模块(keep):

输入信号:

复位信号reset;去抖后的紧急情况提示信号on_off0;定时计时时钟信号clk2;使能信号timel,times;

输出信号:

东西方向交通灯状态控制信号state1(3downto0);南北方向交通灯状态控制信号state2(3downto0);交通灯状态提示信号state(1downto0)。

五、总体电路图(图形法).

六、仿真波形

状态变化仿真图:

以下显示选通信号的仿真波形

七、源程序

主模块:

----------trafficmodule---------

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_arith.all;

useieee.std_logic_unsigned.all;

entitytracficis

port(reset:

instd_logic;-----------------------复位信号

clk:

instd_logic;-----------------------外部时钟信号

showtime1,showtime2,showtime3,showtime4:

outstd_logic_vector(6downto0);--------------------------控制LED七段显示数码管的七位数组型信号

choose4:

outstd_logic_vector(3downto0);--------选通信号

on_off:

instd_logic;------------------------紧急情况控制信号

state1,state2:

outstd_logic_vector(3downto0));---交通灯状态控制信号

endtracfic;

architecturesystemoftracficis-----------------元件例化调用

componentkeyin---------------------------------去抖动模块

port(a,b:

instd_logic;

c:

outstd_logic);

endcomponent;

componenttime-----------------------------------计时模块

port(a,b,k:

instd_logic;

c:

instd_logic_vector(1downto0);

d,e,f,g:

outstd_logic_vector(3downto0);

j,h:

outstd_logic);

endcomponent;

componentchoose--------------------------------选通模块

port(a:

instd_logic;

b:

outstd_logic_vector(3downto0));

endcomponent;

componentdisplay-------------------------------显示模块

port(a:

instd_logic_vector(3downto0);

b:

outstd_logic_vector(6downto0));

endcomponent;

componentclk_div--------------------------------时钟分频模块

port(a:

instd_logic;

b,c,d:

outstd_logic);

endcomponent;

componentkeep-----------------------------------状态控制模块

port(a,b,c,g,j:

instd_logic;

d,e:

outstd_logic_vector(3downto0);

f:

outstd_logic_vector(1downto0));

endcomponent;

signalon_off0:

std_logic;紧急情况经去抖后的输出信号;

signalstate:

std_logic_vector(1downto0);控制计数器的状态提示信号;

signalclk0,clk1,clk2:

std_logic;时钟分频后的输出信号;

signaleq0,sq0:

std_logic_vector(3downto0);南北和东西计数器的个位输出;

signaleq1,sq1:

std_logic_vector(3downto0);南北和东西计数器的十位输出;

signaltimel,times:

std_logic;计数器对控制器的反馈信号;

begin用信号把各个模块连起来;

u1:

keyinportmap(clk1,on_off,on_off0);

u3:

timeportmap(clk2,on_off0,reset,state,eq0

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1