EDA交通灯课程设计论文Word下载.docx

上传人:b****2 文档编号:4539251 上传时间:2023-05-03 格式:DOCX 页数:12 大小:201.53KB
下载 相关 举报
EDA交通灯课程设计论文Word下载.docx_第1页
第1页 / 共12页
EDA交通灯课程设计论文Word下载.docx_第2页
第2页 / 共12页
EDA交通灯课程设计论文Word下载.docx_第3页
第3页 / 共12页
EDA交通灯课程设计论文Word下载.docx_第4页
第4页 / 共12页
EDA交通灯课程设计论文Word下载.docx_第5页
第5页 / 共12页
EDA交通灯课程设计论文Word下载.docx_第6页
第6页 / 共12页
EDA交通灯课程设计论文Word下载.docx_第7页
第7页 / 共12页
EDA交通灯课程设计论文Word下载.docx_第8页
第8页 / 共12页
EDA交通灯课程设计论文Word下载.docx_第9页
第9页 / 共12页
EDA交通灯课程设计论文Word下载.docx_第10页
第10页 / 共12页
EDA交通灯课程设计论文Word下载.docx_第11页
第11页 / 共12页
EDA交通灯课程设计论文Word下载.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

EDA交通灯课程设计论文Word下载.docx

《EDA交通灯课程设计论文Word下载.docx》由会员分享,可在线阅读,更多相关《EDA交通灯课程设计论文Word下载.docx(12页珍藏版)》请在冰点文库上搜索。

EDA交通灯课程设计论文Word下载.docx

主支干道交替允许通行,主干道每次放行40S,亮5S红灯让行驶中的车辆有时间停到禁行线外,左拐放行15秒,亮5S红灯;

支干道放行30S,亮5S黄灯,左拐放行15秒,亮5S红灯……。

各计时电路为倒计时显示。

二、设计原理及思想

根据设计要求和系统所具有的功能,并参考相关的文献资料,经行方案设计,可以画出如下图所示的交通信号灯控制器的系统框图。

图1、具有四种信号灯的交通灯控制器系统框图

由交通灯控制器系统框图(图1)可知,该系统由4个子模块组成。

其中包括:

(1)定时模块;

(2)主控电路模块;

(3)译码驱动电路模块;

(4)扫描显示模块。

以上四个电路可以分为两大模块,即:

主控电路及计时(定时)模块和扫描显示译码模块。

三、单元模块设计与仿真

1、主控电路及计时(定时)模块

控制模块根据外部输入信号和计时模块产生的输出信号,产生系统的状态机,控制其他部分协调工作。

计时模块用来设定主干道和支干道计时器的初值,并为扫描显示译码模块提供倒计时时间。

控制及计时模块采用状态机进行设计,可以定义出8种状态,分别为S0:

主干道绿灯,支干道红灯且禁止通行;

S1:

主干道黄灯亮,支干道红灯禁止通行;

S2:

左拐灯亮,允许左行,支干道红灯,禁止通行;

S3:

主干道黄灯,停车;

支干道红灯,禁止通行;

S4:

主干道红灯,支干道绿灯。

S5:

主干道红灯,支干道黄灯S6:

主干道红灯,支干道左拐灯亮,允许左拐S7:

主干道红灯,支干道黄灯。

其仿真波形如下:

图2、主控电路及计时(定时)模块仿真图

2、扫描显示译码模块

扫描显示译码模块可以根据控制信号,驱动交通信号灯以及倒计时数码管的显示,其中数码管的显示采用动态扫描显示。

本模块采用数码显示管来完成。

数码显示管是计数器等电路的最好选择。

数码管可以用TTL或者CMOS集成电路直接驱动完成。

仿真波形如下:

图3、扫描显示译码模块仿真图

3、顶层文件的编写

将以上各个单元模块仿真成功后,再进行顶层文件的编写。

根据以上设计思路,可以得到如下的顶层文件原理图

图4、具有四种信号灯的交通灯控制器的顶层原理图

系统输入信号:

clk:

1kHz的时钟信号;

en:

系统使能信号

系统输出信号:

lampa1:

主干道红灯信号

lampa2:

主干道黄灯信号

lampa3:

主干道绿灯信号

lampa4:

主干道左拐信号

lampb1:

lampb2:

lampb3:

lampb4:

acounth,acountl:

主干道计时输出

bcounth,bcountl:

支干道计时输出

图5、具有四种信号灯的交通灯控制器的顶层文件仿真图

(1)

图6、具有四种信号灯的交通灯控制器的顶层文件仿真图

(2)

四、结果及分析

通过仿真可以看到:

当主干道绿灯,支干道红灯时,主干道倒计时高位置数0100,低位置数0101;

支干道高位置数0101,低位置数0000;

当主干道黄灯,支干道红灯时,主干道黄灯倒计时置数0101;

支干道继续刚才的减计数;

当主干道红灯,支干道绿灯时,主干道倒计时高位置数0011,低位置数0000;

支干道高位置数0010,低位置数0101;

当主干道红灯,支干道黄灯时,支干道黄灯倒计时置数0101;

主干道继续刚才的减计数。

在S4状态结束后,自动跳回到S0状态,继续判断支干道是否有车行驶,若有车行驶,则跳转到S1状态,给高、低位置数,继续进行减计时。

系统根据COUNT的变化自动在各状态下跳变,当count为45时,跳变到S2状态;

当count为50时,跳变到S3状态;

当count为75时,跳变到S4状态;

当count为80时,若支干道没有车跳变到S0状态,有车则跳变到S1状态。

五、调试过程中遇到的问题及解决方法

设计过程中参考课本后面的附带的设计程序,发现了书中的一些小瑕疵,在老师的帮助下,加以修改,最终完成了主控电路模块的仿真。

错误:

修改后:

六、收获与体会

本设计采用了VHDL硬件描述语言文本输入方式,在确立总体预期实现功能的前提下,分层次进行设计。

实现了具有四种信号灯的交通灯控制器,以及时间的倒计时显示,指挥行人和车辆安全通行。

程序中所用到的数据均可以根据实际情况进行设置,修改灵活方便。

通过此次设计,我对于VHDL硬件描述语言有了更深入地了解,也在原来所学的理论基础上得到了进一步地应用。

但由于经验上的不足,有些地方还需要做进一步地改善。

七、附件:

程序清单

1.主控电路及计时(定时)模块

LIBRARYieee;

USEieee.std_logic_1164.all;

USEieee.std_logic_unsigned.all;

ENTITYtrafficIS

PORT

clk,en:

INSTD_LOGIC;

lampa1,lampa2,lampa3,lampa4,lampb1,lampb2,lampb3,lampb4:

OUTSTD_LOGIC;

acounth,acount1,bcounth,bcount1:

OUTSTD_LOGIC_VECTOR(3DOWNTO0)

);

ENDtraffic;

ARCHITECTUREoneOFtrafficIS

signaltempa,tempb:

std_logic;

signalcounta,countb:

std_logic_vector(2downto0);

signalnuma,numb,ared,ayellow,agreen,aleft,bred,byellow,bgreen,bleft:

std_logic_vector(7downto0);

BEGIN

com1:

process(en)

begin

if(en='

0'

)then

ared<

="

01010101"

;

ayellow<

00000101"

agreen<

01000000"

aleft<

00010101"

bred<

01100101"

byellow<

bgreen<

00110000"

bleft<

endif;

endprocesscom1;

acounth<

=numa(7DOWNTO4);

acount1<

=numa(3downto0);

bcounth<

=numa(7downto4);

bcount1<

=numb(3downto0);

com2:

process(clk,en,tempa,numa)

1'

if(tempa='

tempa<

='

casecountais

when"

000"

=>

numa<

=agreen;

lampa1<

lampa2<

lampa3<

lampa4<

counta<

001"

=ayellow;

010"

=aleft;

011"

100"

=ared;

whenothers=>

endcase;

elsif(numa>

1)then

if(numa(3downto0)="

0000"

numa(3downto0)<

1001"

numa(7downto4)<

=numa(7downto4)-1;

else

=numa(3downto0)-1;

if(numa="

00000010"

)thentempa<

endif;

lampa1<

tempa<

endprocesscom2;

com3:

process(clk,en,tempb,numb)

if(tempb='

tempb<

casecountbis

numb<

=bgreen;

lampb1<

lampb2<

lampb3<

lampb4<

countb<

=byellow;

=bleft;

=bred;

elsif(numb>

if(numb(3downto0)="

numb(3downto0)<

numb(7downto4)<

=numb(7downto4)-1;

=numb(3downto0)-1;

if(numb="

)thentempb<

lampb1<

tempb<

endprocesscom3;

ENDone;

2.扫描显示译码模块

libraryieee;

useieee.std_logic_1164.all;

entityledis

port(DD:

instd_logic_vector(3downto0);

a,b,c,d,e,f,g:

outstd_logic);

endled;

architectureoneofledis

process(DD)

variablett:

std_logic_vector(6downto0);

caseDDis

when"

tt:

0000001"

0001"

1001111"

0010"

0010010"

0011"

0000110"

0100"

1001100"

0101"

0100100"

0110"

0100000"

0111"

0001111"

1000"

0000000"

0001100"

null;

a<

=tt(6);

b<

=tt(5);

c<

=tt(4);

d<

=tt(3);

e<

=tt

(2);

f<

=tt

(1);

g<

=tt(0);

endprocess;

endone;

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

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

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2