DEA课程设计交通灯.docx

上传人:b****3 文档编号:27449431 上传时间:2023-07-01 格式:DOCX 页数:19 大小:2.13MB
下载 相关 举报
DEA课程设计交通灯.docx_第1页
第1页 / 共19页
DEA课程设计交通灯.docx_第2页
第2页 / 共19页
DEA课程设计交通灯.docx_第3页
第3页 / 共19页
DEA课程设计交通灯.docx_第4页
第4页 / 共19页
DEA课程设计交通灯.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

DEA课程设计交通灯.docx

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

DEA课程设计交通灯.docx

DEA课程设计交通灯

EDA技术课程设计

 

课题:

交通灯控制器

 

系别:

电气与电子工程系

专业:

电子信息工程

姓名:

学号:

指导教师:

河南城建学院

2012年6月20日

成绩评定·

一、指导教师评语(根据学生设计报告质量、答辩情况及其平时表现综合评定)。

二、课程设计评分

 

成绩:

 

2012年6月日

目录

一、设计目的1

二、设计要求1

三、总体设计方案要求1

1、设计的总体原理1

2、设计内容2

四、EDA设计与仿真2

1、分频模块2

2、交通灯控制及计时模块5

3、数码管译码扫描显示模块10

4、系统设计13

五、硬件实现11

1、硬件实现步骤11

2、硬件仿真结果12

六、设计总结14

七、参考文献15

八、设计生成的电路总图16

一、设计目的

1、了解交通灯的亮灭规律。

2、了解交通灯控制器的工作原理。

3、熟悉VHDL语言编程,了解实际设计中的优化方案。

二、设计要求

1、每条道路设一组信号灯,每组信号灯由红黄绿3个灯组成,绿灯表示允许通行红灯表示禁止通行,黄灯表示该车道上已过停车线的车辆继续通行,未过停车线的车辆停止通行。

2、每条道路上每次通行的时间为25s。

3、每次变换通行车道之前,要求黄灯先亮5s,才能变换通行车道。

4、黄灯亮时,要求每秒钟闪烁一次。

三、总体设计方案要求

1.设计的总体原理

 

段码输出

位码输出

1khz信号

50Mhz信号分频2hz信号数码显

1hz信号示模块

七段译码

数码管位选

交通灯控制六个led灯输出

图3-1.总体设计框图

①分频模块:

把实验板上的50MHZ的频率分成1HZ信号(用于倒计时计数的时钟信号)、1kHZ信号(用于数码管扫描显示的片选时钟信号)和2HZ(用于黄灯的闪烁);

②交通灯控制以及倒计时(五个状态的控制)模块;

③数码管译码扫描显示模块;

2.设计内容

交通灯控制设计共包括三个模块即分频模块交通灯控制以及倒计时(五个状态的控制)模块;数码管译码扫描显示,根据交通灯控制的原理图设计每个模块的源程序生成原理图根据原理图连接硬件。

四、EDA设计及仿真(各个模块设计程序、原理框图及仿真波形图)

1.分频模块

libraryieee;--对开发板上的50MHZ信号进行分频得到1khz位选信号--2hz黄灯闪烁信号和1hz计时信号

useieee.std_logic_1164.all;

entitydiv_freqis

port(freq_in:

instd_logic;

flag_1khz,flag_2hz,flag_1hz:

bufferstd_logic);

endentity;

architectureoneofdiv_freqis

signalcomplete_1khz:

integerrange0to50000;

signalcomplete_2hz:

integerrange0to499;

signalcomplete_1hz:

integerrange0to1000;

begin

process(freq_in)--此进程得到的是1khz的位选信号

begin

if(freq_in'eventandfreq_in='1')then

complete_1khz<=complete_1khz+1;

if(complete_1khz=50000)then

complete_1khz<=0;

elsif(complete_1khz<25000)then

flag_1khz<='0';

else

flag_1khz<='1';

endif;

endif;

endprocess;

process(flag_1khz)--此进程是得到2hz信号

begin

if(flag_1khz'eventandflag_1khz='1')then

complete_2hz<=complete_2hz+1;

if(complete_2hz=500)then

complete_2hz<=0;

flag_2hz<='0';

else

flag_2hz<='1';

endif;

endif;

endprocess;

process(flag_1khz)--此进程是得到1hz信号

begin

if(flag_1khz'eventandflag_1khz='1')then

complete_1hz<=complete_1hz+1;

if(complete_1hz=1000)then

complete_1hz<=0;

flag_1hz<='0';

else

flag_1hz<='1';

endif;

endif;

endprocess;

endarchitectureone;

图4-1分频器模块原理框图

图4-2分频器的时序仿真波形图

2.交通灯控制及计时模块

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitystate5is

port(clk1hz,clk2hz:

instd_logic;--1hz倒计时时钟信号

one1,ten1,one2,ten2:

outintegerrange0to10;--倒计时数

ra,ga,ya,rb,gb,yb:

outstd_logic);--主支干道红黄绿灯

end;

architecturetwoofstate5is

typestatesis(st0,st1,st2,st3,st4);--定义五个状态

signalr1,g1,y1,r2,g2,y2:

std_logic;

signala,y11,y22:

std_logic;

begin

process(clk1hz)-------5states

variablest:

states;

variableeoc:

std_logic;--倒计时结束标志位

variableh1,l1,h2,l2:

integerrange0to10;

begin

ifclk1hz'eventandclk1hz='1'then

casestis

whenst0=>

st:

=st1;

h1:

=4;l1:

=4;

h2:

=4;l2:

=9;

whenst1=>-----主干道绿灯亮45秒

ifeoc='0'then

h1:

=4;l1:

=4;

h2:

=4;l2:

=9;

eoc:

='1';

g1<='1';r1<='0';y1<='0';g2<='0';r2<='1';y2<='0';

else

ifh1=0andl1=1then

st:

=st2;eoc:

='0';h1:

=0;l1:

=0;h2:

=0;l2:

=5;

elsifl1=0then

l1:

=9;h1:

=h1-1;l2:

=l2-1;

elsifl2=0then

l2:

=9;h2:

=h2-1;l1:

=l1-1;

elsel1:

=l1-1;l2:

=l2-1;

endif;

endif;

whenst2=>-----主干道黄灯亮5秒

ifeoc='0'then

h1:

=0;l1:

=4;

h2:

=0;l2:

=4;

eoc:

='1';----------------------------------------------

g1<='0';r1<='0';y1<='1';g2<='0';r2<='1';y2<='0';------------------------------

else

ifl1=1then

st:

=st3;eoc:

='0';h1:

=0;l1:

=0;h2:

=0;l2:

=0;

elsel1:

=l1-1;l2:

=l2-1;

endif;

endif;

whenst3=>-----支干道绿灯亮25秒

ifeoc='0'then

h1:

=2;l1:

=9;

h2:

=2;l2:

=4;

eoc:

='1';

g1<='0';r1<='1';y1<='0';g2<='1';r2<='0';y2<='0';

else

ifh2=0andl2=1then

st:

=st4;eoc:

='0';h2:

=0;l2:

=0;h1:

=0;l1:

=5;

elsifl2=0then

l2:

=9;h2:

=h2-1;l1:

=l1-1;

elsifl1=0then

l1:

=9;h1:

=h1-1;l2:

=l2-1;

elsel2:

=l2-1;l1:

=l1-1;

endif;

endif;

whenst4=>------支干道黄灯亮5秒

ifeoc='0'then

h1:

=0;l1:

=4;

h2:

=0;l2:

=4;

eoc:

='1';

g1<='0';r1<='1';y1<='0';g2<='0';r2<='0';y2<='1';

else

ifl2=1then

st:

=st1;eoc:

='0';h1:

=0;l1:

=0;h2:

=0;l2:

=0;

elsel1:

=l1-1;l2:

=l2-1;

endif;

endif;

endcase;

endif;

ra<=r1;ga<=g1;ya<=y11;rb<=r2;gb<=g2;yb<=y22;--------------------

one1<=l1;ten1<=h1;one2<=l2;ten2<=h2;

endprocess;

process(clk2hz)

begin

ifclk2hz'eventandclk2hz='1'then

a<=nota;

if(y1='1')theny11<=a;elsey11<='0';endif;

if(y2='1')theny22<=a;elsey22<='0';endif;

endif;

endprocess;

end;

图4-3交通灯控制及计时模块原理框图

图4-4波形仿真图

3.数码管译码扫描显示模块

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitydisplayis

port(clk_1khz:

instd_logic;--扫描时钟信号

one1,ten1,one2,ten2:

inintegerrange0to10;

scan:

outstd_logic_vector(3downto0);--片选输出信号

seg_7:

outstd_logic_vector(7downto0));--七段译码输出

endentitydisplay;

architecturethreeofdisplayis

signaldata:

integerrange0to10;

signalseg77:

std_logic_vector(7downto0);

signalcnt:

std_logic_vector(1downto0);

begin

process(data)-------七段译码

begin

casedatais

when0=>seg77<="00000011";

when1=>seg77<="10011111";

when2=>seg77<="00100101";

when3=>seg77<="00001101";

when4=>seg77<="10011001";

when5=>seg77<="01001001";

when6=>seg77<="01000001";

when7=>seg77<="00011111";

when8=>seg77<="00000001";

when9=>seg77<="00001001";

when10=>seg77<="11111111";

whenothers=>null;

endcase;

endprocess;

seg_7<=seg77;

process(clk_1khz,one1,ten1,one2,ten2)----------数码管动态扫描计数

begin

ifclk_1khz'eventandclk_1khz='1'then--00到11循环计数器

ifcnt="11"thencnt<="00";

elsecnt<=cnt+1;

endif;

endif;

endprocess;

process(cnt,one1,ten1,one2,ten2)----数码管动态扫描显示

begin

casecntis

when"00"=>data<=one1;scan<="0111";

when"01"=>data<=ten1;scan<="1011";

when"10"=>data<=one2;scan<="1101";

when"11"=>data<=ten2;scan<="1110";

whenothers=>null;

endcase;

endprocess;

endthree;

图4-5数码管译码扫描模块原理框图

4.系统设计

将上述3个程序作为底层文件,存放在同一个文件夹中,然后按下面的图将这几个文件连接起来,并生成顶层文件。

如下:

总图

图4-6总体原理框图

五、硬件实现

1、硬件实现步骤

实验步骤:

⑴打开QuartusⅡ9.0软件,建立工程,工程的名字和主程序的名字相同;

⑵打开新建选择VHDLFile,然后把程序输入进去;

⑶保存文件点击软件页面上方的编译按键进行编译;

⑷编译成功后,进行软件仿真,点击File选择VectorWaveformFile,然后点击鼠标右键选insetnodeorbus键,把脚码输入进去,再进行脚码设定;

⑸然后保存,点击Assigment中的settings选择时序仿真,进行程序的时序仿真;

⑹时序仿真成功后,点击上方AssigmentEditor键进行脚码锁定;脚码锁定中我们用了模式五。

图5-1脚码锁定图

2.硬件仿真结果

在这次设计中刚开始由于种种原因我们的硬件仿真结果没能够正常的显示出来,经多次的努力我们修改了程序后,最终仿真结果显示是正确的。

下面我照了一些我们仿真的硬件结果,如下图所示:

gayaragbybrb

图5-1硬件仿真结果图示一

gayaragbybrb

图5-2硬件仿真结果图示二

gayaragbybrb

图5-3硬件仿真结果图示三

gayaragbybrb

图5-4硬件仿真结果图示四

六、设计总结

在这次设计过程中,我们在设计中遇到了很多问题,但是在老师的指导下对VHDL这门课程加深了认识,其中在程序设计方面的问题在我们查阅资料后得到了解决,在程序软件的实现过程中所遇到的问题最后也得到了圆满的解答,但是在程序最后的硬件仿真过程中遇到的问题还是没能够得到解决,这也是这次课程设计中的遗憾之处。

交通灯的设计并不困难,这次设计给我最大的收获就是做什么事都不要急,要一步一步的做好前提工作,我开始看到这个课题的时候就动手去写程序,只是凭着自己脑子里想一点就写一点,但是经过几次反复的修改还是没有成功,看不到效果,所以后来干脆就放下来先把每一步每一个模块都弄清楚再动手去写,可以在本子上把各个模块的端口以及连接都画好,再去写,这样能做到事半工倍的效果,而且在设计的时候不懂得地方可以参考别人写的程序,毕竟,不管做什么课程设计都是为了让自己弄懂、学好,只要将别人的程序设计转为自己的知识就ok了,在次基础上加上自己的一些想法,学会变通,或许还有些知识没学好,比如状态机这部分,但是通过别人的程序能让自己学到更多的知识,而且能巩固知识,所以我觉得要想把程序写好平常一定要多写多练多参考,这就是我这次设计的收获。

但是结果不理想,这次设计的硬件仿真结果不理想。

这次课程设计我得到了一点感想,在生活中我们自己的力量是极其薄弱的,无论我们做什么事情都要懂得团结,时常只有我们大家团结一致才能攻克难关。

 

七、参考文献

⑴XX文库.基于VHDL的交通灯的实现;

⑵杭州康芯电子有限公司.EDA技术实验讲义;

⑶VHDL电路设计实用教程刘洪喜陆颖编著.清华大学出版社;

 

八、设计生成的电路图

附表:

电路总图

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

当前位置:首页 > 考试认证 > IT认证

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

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