交通灯.docx

上传人:b****4 文档编号:24654345 上传时间:2023-05-29 格式:DOCX 页数:12 大小:493.69KB
下载 相关 举报
交通灯.docx_第1页
第1页 / 共12页
交通灯.docx_第2页
第2页 / 共12页
交通灯.docx_第3页
第3页 / 共12页
交通灯.docx_第4页
第4页 / 共12页
交通灯.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

交通灯.docx

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

交通灯.docx

交通灯

 

大规模专用集成电路实验课程设计

 

 

序言

VHDL全名Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,诞生于1982年,是一种用于电路设计的高级语言。

VHDL翻译成中文就是超高速集成电路硬件描述语言,主要是应用在数字电路的设计中。

目前,它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中。

VHDL主要用于描述数字系统的结构,行为,功能和接口。

VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。

在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。

这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。

交通信号灯是我们在日常交通中非常常见。

它和我们的生活息息相关,对维持交通的正常秩序,保持道路畅通起到了非常重要的作用。

如果没有交通灯,交通道路将会混乱无序。

仅靠交警的维持,非常的耗费人力。

这对于快节奏的现代化社会来说,是非常不方便的。

应用VHDL以及FPGA,可以设计实用的交通等系统。

来解决这个问题。

一方案简介

设计出一套实用的交通灯系统,能够在十字路口控制东西和南北方向的通断。

四个方向每个方向有一套红灯,黄灯和绿灯。

其中,东西方向,为一组,统一控制。

南北方向为一组,统一控制。

每个方向有一个倒计时显示,时间统一控制。

二VHDL程序设计

程序采用状态机的设计思想,将交通灯的信号变化情况设计为S0,S1,S2,S3,S4五个状态,其中S0,S1,S2,S3为有效状态,S4为异常状态。

状态列表

状态

东西方向

南北方向

红灯

黄灯

绿灯

红灯

黄灯

绿灯

S0

0

0

1

1

0

0

S1

0

1

0

1

0

0

S2

1

0

0

0

0

1

S3

1

0

0

0

1

0

S4

1

0

0

1

0

0

注:

其中“1”表示有效,“0”表示无效

程序流程如下:

初始状态设为:

S0状态,东西方向绿灯亮,南北方向红灯亮。

开始计时,直到计时结束。

状态跳转到S1状态,东西方向黄灯亮,南北方向红灯亮。

开始计时,直到计时结束。

状态跳转到S2状态,东西方向红灯亮,南北方向绿灯亮。

开始计时,直到计时结束。

状态跳转到S3状态,东西方向红灯亮,南北方向黄灯亮。

开始计时,直到计时结束。

状态跳转到S0状态,东西方向绿灯亮,南北方向红灯亮。

如此往复循环。

当出现异常情况时,状态跳转到S4状态,即东西和南北方向均为红灯亮。

此时,如果要使系统恢复正常,只需要使reset信号有效,这样,系统就恢复到初始状态S0。

在倒计时的时候,系统会同时输出显示倒计时。

系统的状态转换图如下:

 

1)端口和信号

entitylightis

generic(green_cnt:

integer:

=60;-----绿灯倒计时

yellow_cnt:

integer:

=5);-----黄灯倒计时

port(clk,reset:

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

ew_green:

outstd_logic;-----东西方向绿灯

ew_yellow:

outstd_logic;-----东西方向黄灯

ew_red:

outstd_logic;-----东西方向红灯

sn_green:

outstd_logic;-----南北方向绿灯

sn_yellow:

outstd_logic;-----南北方向黄灯

sn_red:

outstd_logic);-----南北方向红灯

endlight;

2)信号定义

architectureexoflightis

typestatesis(s0,s1,s2,s3,s4);-----状态定义

signalstate:

states:

=s0;

signalcnt:

integerrange1togreen_cnt;-----定义计数信号

signalenable_cnt:

std_logic:

='0';-----定义计数使能

begin

3)计数模块

ifreset='1'then

state<=s0;

elsifclk'eventandclk='1'then

ifenable_cnt='1'then

cnt<=cnt+1;

endif;

当reset无效,enable有效时,开始计数,每一个时钟周期,计数值加1

4)状态转换

u1:

process(clk,reset)

begin

ifreset='1'then

state<=s0;-----初始状态设为S0

elsifclk'eventandclk='1'then

ifenable_cnt='1'then

cnt<=cnt+1;

endif;

casestateis

whens0=>------状态S0时,当计数结束,状态跳转为S1

if(cnt=green_cnt)then

cnt<=1;cnt_led<=yellow_cnt;state<=s1;

endif;

whens1=>------状态S1时,当计数结束,状态跳转为S2

if(cnt=yellow_cnt)then

cnt<=1;cnt_led<=green_cnt;state<=s2;

endif;

whens2=>------状态S2时,当计数结束,状态跳转为S3

if(cnt=green_cnt)then

cnt<=1;cnt_led<=yellow_cnt;state<=s3;

endif;

whens3=>------状态S3时,当计数结束,状态跳转为S0

if(cnt=yellow_cnt)then

cnt<=1;cnt_led<=green_cnt;state<=s0;

endif;

whenothers=>-----其他情况下,状态跳转为S4

cnt<=1;state<=s4;

endcase;

endif;

endprocessu1;

5)各状态下信号灯状态

u2:

process(state)

begin

casestateis

whens0=>-----S0状态时东西绿灯亮,南北红灯亮

ew_green<='1';ew_yellow<='0';ew_red<='0';

sn_green<='0';sn_yellow<='0';sn_red<='1';

enable_cnt<='1';

if(cnt=green_cnt)then

enable_cnt<='0';

endif;

whens1=>-----S1状态时东西黄灯亮,南北红灯亮

ew_green<='0';ew_yellow<='1';ew_red<='0';

sn_green<='0';sn_yellow<='0';sn_red<='1';

enable_cnt<='1';

if(cnt=yellow_cnt)then

enable_cnt<='0';

endif;

whens2=>-----S2状态时东西红灯亮,南北绿灯亮

ew_green<='0';ew_yellow<='0';ew_red<='1';

sn_green<='1';sn_yellow<='0';sn_red<='0';

enable_cnt<='1';

if(cnt=green_cnt)then

enable_cnt<='0';

endif;

whens3=>-----S3状态时东西红灯亮,南北黄灯亮

ew_green<='0';ew_yellow<='0';ew_red<='1';

sn_green<='0';sn_yellow<='1';sn_red<='0';

enable_cnt<='1';

if(cnt=yellow_cnt)then

enable_cnt<='0';

endif;

whens4=>-----S4状态时东西红灯亮,南北红灯亮

ew_green<='0';ew_yellow<='0';ew_red<='1';

sn_green<='0';sn_yellow<='0';sn_red<='1';

enable_cnt<='1';

endcase;

endprocessu2;

三时序仿真结果

图3.1

图3.2

图3.3

由上面三幅图的时序仿真结果可以看到程序实现了设计要求,信号状态由S0,S1,S2,S3,S4周期性的循环。

四硬件测试

硬件测试用到了北京锐视的redcycloneII红色飓风二代开发板。

开发板使用的是Altera的Cyclone系列EP1C6Q240C8N。

由于此开发板只有四个二极管,不够东西南北两组信号灯所需六个二极管。

因此,测试时,每组用两个二极管,每次测试两个二极管分别对应每组的不同信号灯。

结果显示程序实现了设计要求

.图4.1,4.2,4.3是测试时所拍摄图片。

由于光线原因。

效果不是很好。

开发板中的二极管位于两个按键开关旁边。

光线为红色。

图4.1

图4.2

 

图4.3

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

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

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

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