EDA交通灯控制电路设计.docx

上传人:b****1 文档编号:1668046 上传时间:2022-10-23 格式:DOCX 页数:8 大小:24.29KB
下载 相关 举报
EDA交通灯控制电路设计.docx_第1页
第1页 / 共8页
EDA交通灯控制电路设计.docx_第2页
第2页 / 共8页
EDA交通灯控制电路设计.docx_第3页
第3页 / 共8页
EDA交通灯控制电路设计.docx_第4页
第4页 / 共8页
EDA交通灯控制电路设计.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

EDA交通灯控制电路设计.docx

《EDA交通灯控制电路设计.docx》由会员分享,可在线阅读,更多相关《EDA交通灯控制电路设计.docx(8页珍藏版)》请在冰豆网上搜索。

EDA交通灯控制电路设计.docx

EDA交通灯控制电路设计

 

设计课题二:

交通灯控制电路设计

一、问题描述:

交通灯的显示有很多方式,如十字路口、丁字路口等,而对于同一个路口又有很多不同的显示要求,比如十字路口,车辆如果只要东西和南北方向通行就很简单,而如果车子可以左右转弯的通行就比较复杂,本实验仅针对最简单的南北和东西直行的情况。

二、功能要求:

要完成本实验,首先必须了解交通路灯的燃灭规律。

依人们的交通常规,“红灯停,绿灯行,黄灯提醒”。

其交通灯的燃灭规律为:

初始态是两个路口的红灯全亮,之后,东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯灭,黄灯开始闪烁。

闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁。

闪烁若干次后,再切换到东西路口方向,重复上述过程。

系统要求实现对2组交通灯控制信号的模拟输出,其控制规律为如上所述,同时要完成等待时间模拟的输出,即红绿灯的持续时间倒数输出。

系统时钟输入为一个1KHz的系统时钟。

 

 

一、交通灯控制电路设计的主要功能

交通灯控制电路设计遵循“红灯停,绿灯行,黄灯提醒”原则。

其初始态是两个路口的红灯全亮,之后,东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯灭,黄灯开始闪烁。

闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁。

闪烁若干次后,再切换到东西路口方向,重复上述过程。

系统要求实现对2组交通灯控制信号的模拟输出,其控制规律为如上所述,同时要完成等待时间模拟的输出,即红绿灯的持续时间倒数输出。

系统时钟输入为一个1KHz的系统时钟。

本实验中主要应用了状态机以及减法器的设计原理。

在状态连续变化的数字系统设计中,采用状态机的设计思想有利于提高设计效率,增加程序的可读性,减少错误的发生几率。

同时,状态机的设计方法也是数字系统中一种最常用的设计方法。

 

二、课题的功能模块的划分

三、主要功能的实现

1.1倒计时模块

倒计时模块采用减法计数器设计,等到时钟的上升沿来到时,对计数器进行计数。

其中减法计数器的代码如下:

process(lock,clk)

begin

iflock='1'then

cnt<=init;

elseifclk'eventandclk='1'then

cnt<=cnt-1;

ifcnt=0then

ov<='1';

endif;

endif;

time<=cnt;

endif;

endprocess;

 

1.2交通灯控制转换模块

在设计交通灯控制电路转换模块时,采用状态机来实行这个功能模块,其中状态机共有五个状态,如:

两个路口的红灯全亮;东西路口的绿灯亮,而南北路口的红灯亮;在延时后,东西路口绿灯灭,黄灯开始闪烁;在闪烁若干次后,东西路口的红灯亮,同时南北路口的绿灯亮;在延时后,南北路口的绿灯灭,黄灯开始闪烁;在闪烁若干次后,在切换到东西路口方向。

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitytrafic_lightis

port(clk,rst:

instd_logic;----时钟信号,复位信号

time:

outintegerrange0to59;-----时间信号

r1,r2,y1,y2,g1,g2:

outstd_logic);

endtrafic_light;

architecturert1oftrafic_lightis

typestateis(r1r2,r1g2,r1y2,r2g1,r2y1);

signaln_state,c_state:

state;

signalcnt,init:

integerrange0to49;

signallock,ov:

std_logic;

begin

state_reg:

process(clk,rst)

begin

ifrst='1'thenc_state<=r1r2;

elsifclk'eventandclk='1'then

c_state<=n_state;

endif;

endprocess;

state_com:

process(c_state,ov)---交通灯控制转换

begin

casec_stateis

whenr1g2=>r1<='1';g2<='1';y1<='0';

r2<='0';g2<='0';y2<='0';

init<=9;lock<='1';n_state<=r1g12;

whenr1g12=>r1<='1';g2<='1';y1<='0';

r2<='0';g2<='0';y2<='0';

init<=0;lock<='0';

ifov='1'thenn_state<=r1y2;

elsen_state<=r1g21;

endif;

whenr1y2=>r1<='1';y2<='1';g1<='0';

r2<='0';y1<='0';g2<='0';

init<=49;lock<='1';n_state<=r1y21;

whenr1y21=>r1<='1';y2<='1';g1<='0';

r2<='0';y1<='0';g2<='0';

init<=0;lock<='0';

ifov='1'thenn_state<=r2g1;

elsen_state<=r1y21;

endif;

whenr2g1=>r2<='1';g1<='1';y1<='0';

r1<='0';g2<='0';y2<='0';

init<=9;lock<='1';n_state<=r2g11;

whenr2g11=>r2<='1';g1<='1';y1<='0';

r1<='0';g2<='0';y2<='0';

init<=0;lock<='0';

ifov='1'thenn_state<=r2y1;

elsen_state<=r2g11;

endif;

whenr2y1=>r2<='1';y1<='1';g1<='0';

r1<='0';y2<='0';g2<='0';

init<=49;lock<='1';n_state<=r2y11;

whenr2y11=>r2<='1';y1<='1';g1<='0';

r1<='0';y2<='0';g2<='0';

init<=0;lock<='0';

ifov='1'thenn_state<=r1g2;

elsen_state<=r2y11;

endif;

whenothers=>n_state<=r1r2;

endcase;

endprocess;

 

四、系统调试与仿真

初始态是两个路口的红灯全亮,之后,东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯灭,黄灯开始闪烁。

闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁。

闪烁若干次后,再切换到东西路口方向,重复上述过程。

五、总结与体会

通过这次EDA课程设计,我不仅熟悉了QuartusⅡ软件的使用方法,而且学习了VHDL基本逻辑电路和状态机电路的综合设计应用。

理论结合实际,很好地实现了学以致用。

除此之外,还加强了我思考和解决问题的能力.现在设计已经做好了,自己感觉还是比较好的,虽然花了很多的时间,但学到了很多东西.做课程设计的时候,自己把整个书本都看了几遍,还在网上查阅了很多的有关交通灯控制电路设计的资料,大大增强了自己对知识的理解,很多以前不是很懂的问题现在都已经一一得以解决了。

EDA设计我感觉程序调试、试验软件、硬件熟悉最重要。

在编完各模块程序之后,编译查错最初有三十几个错误,有输入错误、语法错误。

一遍一遍的变异查错,直到没有错误。

必须注意工程名和实体名一致,不然一般会出错。

在没有错误之后可以进行波型仿真。

若与理想的不同,再查看程序,有无原理上的编辑错误或没有查出的输入错误。

这次课程设计之后,使我明白了,做任何事情都要认真仔细,不然的话,你会花更多的时间才会做好.课程设计有利于提高我们的动手能力,能把我们所学的书本知识运用到实际生活中去.同时也丰富了我们的业余生活,提高我们对知识的理解能力。

六、附件

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitytrafic_lightis

port(clk,rst:

instd_logic;----时钟信号,复位信号

time:

outintegerrange0to59;-----时间信号

r1,r2,y1,y2,g1,g2:

outstd_logic);---交通灯控制信号

endtrafic_light;

architecturert1oftrafic_lightis

typestateis(r1r2,r1g2,r1y2,r2g1,r2y1);

signaln_state,c_state:

state;

signalcnt,init:

integerrange0to49;

signallock,ov:

std_logic;

begin

state_reg:

process(clk,rst)

begin

ifrst='1'thenc_state<=r1r2;

elsifclk'eventandclk='1'then

c_state<=n_state;

endif;

endprocess;

state_com:

process(c_state,ov)--交通灯控制转换

begin

casec_stateis

whenr1g2=>r1<='1';g2<='1';y1<='0';

r2<='0';g2<='0';y2<='0';

init<=9;lock<='1';n_state<=r1g12;

whenr1g12=>r1<='1';g2<='1';y1<='0';

r2<='0';g2<='0';y2<='0';

init<=0;lock<='0';

ifov='1'thenn_state<=r1y2;

elsen_state<=r1g21;

endif;

whenr1y2=>r1<='1';y2<='1';g1<='0';

r2<='0';y1<='0';g2<='0';

init<=49;lock<='1';n_state<=r1y21;

whenr1y21=>r1<='1';y2<='1';g1<='0';

r2<='0';y1<='0';g2<='0';

init<=0;lock<='0';

Ifov='1'thenn_state<=r2g1;

elsen_state<=r1y21;

endif;

whenr2g1=>r2<='1';g1<='1';y1<='0';

r1<='0';g2<='0';y2<='0';

init<=9;lock<='1';n_state<=r2g11;

when

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

当前位置:首页 > 经管营销 > 公共行政管理

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

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