EDA交通信号灯控制电路设计Word文档下载推荐.docx

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

EDA交通信号灯控制电路设计Word文档下载推荐.docx

《EDA交通信号灯控制电路设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《EDA交通信号灯控制电路设计Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。

EDA交通信号灯控制电路设计Word文档下载推荐.docx

二、设计结构…………………………………………………………………………5

1、clk时钟秒脉冲发生电路或分频器………………………………………6

2、六十进制计数器……………………………………………………………6

3、次态发生器………………………………………………………………6

4、状态寄存器及等待时间输出……………………………………………6

5、时间显示电路………………………………………………………………6

6、时钟扫描电路………………………………………………………………6

三、原理图……………………………………………………………………………6

四、程序………………………………………………………………………………7

五、心得体会……………………………………………………………………10

课程设计任务书

课题名称

交通信号灯的控制电路设计

完成时间

12/11/29

指导教师

陈刚

职称

教授

学生姓名

班级

B10231

总体设计要求和技术要点

设计一个交通信号灯控制电路。

要求:

1、主干道和支干道交替放行,主干道每次放行30秒,支干道每次放行20秒;

2、每次绿灯变红灯时,黄灯先亮5秒钟,此时原红灯不变;

3、用十进制数字(递增计数)显示放行和等待时间。

技术要点:

1、主(支)干道红灯时间等于支(主)干道红绿黄灯时间之和;

2、用时钟数据扫描通过视觉暂留来数码管显示等待时间;

3、状态寄存器和状态寄存器的结合灵活运用;

4、计数时间值要译成七段译码值。

工作内容及时间进度安排

工作内容:

在软件上编辑、编译程序,并仿真到达实验要求。

进度安排;

周一到周四编写程序,并要求程序能通过编译仿真;

周四下午在实验板上下载调试程序;

周五周六验收。

课程设计成果

1.与设计内容对应的软件程序

2.课程设计报告书

3.成果使用说明书

4.设计工作量要求

交通信号控制器的VHDL的设计

一、设计任务

模拟十字路口交通信号灯的工作过程,利用实验板上的两组红、黄、绿LED作为交通信号灯,用数码管显示等待时间。

设计一个交通信号灯控制器。

能达到的要求:

(1)交通灯从绿变红时,有5秒黄灯亮的间隔时间;

(2)交通灯红变绿是直接进行的,没有间隔时间;

(3)主干道上的绿灯时间为30秒,支干道的绿灯时间为20秒;

(4)在任意时间,显示等待时间。

支干道

主干道

图1路口交通管理示意图

S0

S1

S2

S3

主干道交通灯

绿(30秒)

黄(5秒)

红(20秒)

红(5秒)

支干道交通灯

绿

表1交通信号灯的4种状态

二、设计结构

学习EDA开发软件和Quartus

的使用方法,熟悉可编程逻辑器件的使用。

通过制作来了解交通灯控制系统,交通灯控制系统主要是实现城市十字交叉路口红绿灯的控制。

设计说明

(1)第一模块:

clk时钟秒脉冲发生电路

在红绿灯交通信号系统中,大多数情况是通过自动控制的方式指挥交通的。

因此为了避免意外事件的发生,电路必须给一个稳定的时钟(clock)才能让系统正常运作。

模块说明:

系统输入信号:

Clk:

由外接信号发生器提供153的时钟信号;

系统输出信号:

CLK:

产生每秒一个脉冲的信号;

(2)第二模块:

计数秒数选择电路

计数电路最主要的功能就是记数负责显示倒数的计数值,对下一个模块提供状态转换信号。

系统输入:

CLK:

接收由clk电路的提供的1hz的时钟脉冲信号;

tm:

产生显示电路状态转换信号

tl:

倒计数值秒数个位变化控制信号

th:

倒计数值秒数十位变化控制信号

(3)第三模块:

红绿灯状态转换电路

本电路负责红绿灯的转换。

模块说明:

系统输入信号:

tm:

接收计数秒数选择电路状态转换信号;

da_out:

负责红绿灯的状态显示。

(4)第四模块:

时间显示电路

本电路负责红绿灯的计数时间的显示。

倒计数值秒数个位变化控制信号;

倒计数值秒数十位变化控制信号;

led7s1:

负责红绿灯的显示秒数个位。

led7s2:

负责红绿灯的显示秒数十位。

三、原理图

四、实验程序

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitytrafficis

port(clk_in:

instd_logic;

selout:

outstd_logic_vector(6downto0);

-------定义数码管的七段显示

sel:

outstd_logic_vector(1downto0);

------数码管个位十位选择段

outstd_logic_vector(5downto0));

------定义主次干道的红绿灯(主红黄绿支红黄绿)

endtraffic;

architectureoneoftrafficis

typedmis(s0,s1,s2,s3);

--------自定义状态四种

signalcurrent_state,next_state:

dm;

----当前状态与次态均在四种状态之间变化

signalclk:

std_logic;

------一秒时钟信号

signalcount:

std_logic_vector(1downto0);

-----个十位选择端(sel)

signalled7s1:

std_logic_vector(6downto0);

----十位数码管控制端

signalled7s2:

----个位数码管控制端

signaltime0:

std_logic_vector(6downto0);

-----递增计数

signaltm:

----剩余时间倒计时

signaltl:

-----个位数码管显示情况控制

signalth:

std_logic_vector(1downto0);

-----十位数码管显示情况控制

begin

sel<

=count;

fen:

process(clk_in)

variablecnt:

std_logic_vector(16downto0);

ifclk_in'

eventandclk_in='

1'

then-------产生153hz分频,上升沿有效产生clk

ifcnt="

10011000100101101"

then

cnt:

="

00000000000000000"

;

clk<

='

elsecnt:

=cnt+1;

clk<

='

0'

endif;

endprocessfen;

a:

process(clk_in,count)----------不断扫描出现count的00和01的选择

begin

eventandclk_in='

ifcount="

01"

then

count<

00"

elsecount<

=count+1;

casecountis

when"

=>

selout<

=led7s2;

=led7s1;

whenothers=>

null;

endcase;

endprocessa;

process(clk)

begin

ifclk'

eventandclk='

then------60秒的循环设计

iftime0="

0111100"

then

time0<

0000001"

elsetime0<

=time0+1;

endprocess;

reg:

process(clk,current_state)------定义当前状态与次态的关系

begin-----产生上升沿时次态把自己的状态赋予当前状态

ifclk='

andclk'

eventthen

current_state<

=next_state;

endprocessreg;

com:

process(current_state,time0)

casecurrent_stateis

whens0=>

da_out<

001100"

tm<

=30-time0;

-----主绿和支红状态,当计时到29

iftime0=29thennext_state<

=s1;

----秒时将s1状态赋给次态,此时

elsenext_state<

=s0;

----当前状态还是s0,等到下一个

---上升沿后次态将s1赋给当前状

whens1=>

010100"

=35-time0;

---态

iftime0=34thennext_state<

=s2;

whens2=>

100001"

=55-time0;

iftime0=54thennext_state<

=s3;

whens3=>

100010"

=60-time0;

iftime0=59thennext_state<

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

当前位置:首页 > 法律文书 > 调解书

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

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