EDA交通灯信号控制器设计.docx

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

EDA交通灯信号控制器设计.docx

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

EDA交通灯信号控制器设计.docx

EDA交通灯信号控制器设计

课程设计说明书

题目交通灯信号控制器的设计

 

交通灯的信号控制器的设计说明书

一、设计内容及其要求:

试设计一个交通信号等控制器,用于主干道及支道公路的交叉路口,要求是优先保证主干道的畅通。

因此,平时处于“主干道绿灯,支道红灯”状态,只有在支道有车辆要穿行主干道时,才将交通等切向“主干道红灯,支道绿灯”,一旦支道无车辆通过路口,交通灯又回到“主干道绿灯,支道红灯”的状态。

此外,主干道和支道每次通行的时间不得短于30秒,而在两个状态交换过程出现的“主黄,支红”和“主红,支黄”状态,持续时间都为4秒。

主干道和支道的红、黄、绿灯驱动信号接LED,时间都需通过数码管显示。

系统提供50MHZ频率的时钟源。

完成该系统的硬件和软件的设计,并制作出实物装置,调试好后并能实际运用(指导教师提供制作所需的器件),最后就课程设计本身提交一篇课程设计说明书。

二、设计主要内容:

2.1设计的总体方案

根据设计要求和系统所具有功能,并参考相关的文献资料设计画出如下所示的十字路口交通灯控制器系统框图,及为设计的总体方案,框图如下图2.1所示:

图2.1系统的框图

 

2.2交通灯思路分析

因为有主干道和支道,所以可以定义为5种状态,分别是1:

主道绿灯,支道红灯且没有车辆行驶;2:

主道绿灯,支道红灯或者支道有车辆驶入;3:

主道红灯,支道绿灯;4:

主道红灯,支道黄灯;5:

主道黄灯,支道红灯。

并设置主道红灯亮34秒,支道绿灯亮30秒,黄灯亮4秒的设计要求。

如下图:

图2.2三种灯的循环顺序

 

三、设计程序

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

Entityredgreenis

Port

clock_in:

instd_logic;

hold_state:

instd_logic;

reset_state:

instd_logic;

hold_state1:

instd_logic;

reset_state1:

instd_logic;

led_red,led_green,led_yellow,led_red1,led_green1,led_yellow1:

outstd_logic;

select_display:

outstd_logic_vector(0to6);

led_selout:

outstd_logic_vector(0to3)

);

end;

Architectureredgreen1ofredgreenis

constantloop_hz:

integer:

=20000000;

--constantloop_hz:

integer:

=2;

constantloop_hz1:

integer:

=500;

signalcount_time:

integerrange0toloop_hz;

signalcount_time1:

integerrange0toloop_hz1;

signalclock_buffer:

std_logic;

signalclock_buffer1:

std_logic;

signalclock_out:

std_logic;

signalclock_out1:

std_logic;

signalcount_num:

integerrange0to68;

signalcount_num1:

integerrange0to68;

signaldisplay_num:

integerrange0to68;

signaldisplay_num1:

integerrange0to68;

signaldisplay_shi:

integerrange0to9;

signaldisplay_ge:

integerrange0to9;

signaldisplay_shi1:

integerrange0to9;

signaldisplay_ge1:

integerrange0to9;

signalb:

integerrange0to9;

signala:

std_logic_vector(1downto0);

constantloop_time:

integer:

=68;

constantred_time:

integer:

=34;

constantgreen_time:

integer:

=30;

constantyellow_time:

integer:

=4;

begin

process(clock_in)--分频进程

begin

ifclock_in'eventandclock_in='1'then

ifcount_time=loop_hzthen

count_time<=0;

clock_buffer<=notclock_buffer;

else

count_time<=count_time+1;

endif;

endif;

clock_out<=clock_buffer;

endprocess;

process(clock_in)--分频进程

begin

ifclock_in'eventandclock_in='1'then

ifcount_time1=loop_hz1then

count_time1<=0;a<=a+1;

clock_buffer1<=notclock_buffer1;

else

count_time1<=count_time1+1;

endif;

endif;

clock_out1<=clock_buffer1;

endprocess;

process(reset_state,clock_out,count_num)

begin

ifreset_state='1'then

count_num<=0;

elsifclock_out'eventandclock_out='1'then

ifhold_state='1'then

count_num<=count_num;

elsifcount_num=loop_time-1then

count_num<=0;

else

count_num<=count_num+1;

endif;

endif;

endprocess;

process(reset_state1,clock_out,count_num1)

begin

ifreset_state='1'then

count_num1<=0;

elsifclock_out'eventandclock_out='1'then

ifhold_state1='1'then

count_num1<=count_num1;

elsifcount_num1=loop_time-1then

count_num1<=0;

else

count_num1<=count_num1+1;

endif;

endif;

endprocess;

process(clock_out,count_num,a)--交通灯显示

begin

ifclock_out'eventandclock_out='0'then

ifhold_state='1'then

led_red<='1';

led_green<='0';

led_yellow<='0';

elsifcount_num<=33then

display_num<=red_time-count_num;

led_red<='1';

led_green<='0';

led_yellow<='0';

elsifcount_num<=63then

display_num<=green_time+red_time-count_num;

led_red<='0';

led_green<='1';

led_yellow<='0';

elsifcount_num<=67then

display_num<=loop_time-count_num;

led_red<='0';

led_green<='0';

led_yellow<='1';

endif;

endif;

endprocess;

process(clock_out,count_num1)--交通灯显示

begin

ifclock_out'eventandclock_out='0'then

ifhold_state1='1'then

led_red1<='1';

led_green1<='0';

led_yellow1<='0';

elsifcount_num1<=29then

display_num1<=green_time-count_num1;

led_red1<='0';

led_green1<='1';

led_yellow1<='0';

elsifcount_num1<=33then

display_num1<=yellow_time+green_time-count_num1;

led_red1<='0';

led_green1<='0';

led_yellow1<='1';

elsifcount_num1<=67then

display_num1<=loop_time-count_num1;

led_red1<='1';

led_green1<='0';

led_yellow1<='0';

endif;

endif;

endprocess;

process(display_num)--分位进程

begin

ifdisplay_num<10then

display_shi<=0;

display_ge<=display_num;

display_shi1<=0;

display_ge1<=display_num;

elsifdisplay_num<20then

display_shi<=1;

display_shi1<=1;

display_ge<=display_num-10;

display_ge1<=display_num-10;

elsifdisplay_num<30then

display_shi<=2;

display_shi1<=2;

display_ge<=display_num-20;

display_ge1<=display_num-20;

elsifdisplay_num<40then

display_shi<=3;

display_shi1<=3;

display_ge<=display_num-30;

display_ge1<=display_num-30;

endif;

endprocess;

process(b)--数码管显示

begin

casebis

when0=>select_display<="0000001";

when1=>select_display<="1001111";

when2=>select_display<="0010010";

when3=>select_display<="0000110";

when4=>select_display<="1001100";

when5=>select_display<="0100100";

when6=>select_display<="0100000";

when7=>select_display<="0001111";

when8=>select_display<="0000000";

when9=>select_display<="0000100";

whenothers=>select_display<=null;

endcase;

endprocess;

process(a)

begin

caseais

when"00"=>led_selout<="0001";b<=display_shi;

when"01"=>led_selout<="0010";b<=display_ge;

when"10"=>led_selout<="0100";b<=display_shi1;

when"11"=>led_selout<="1000";b<=display_ge1;

whenothers=>null;

endcase;

endprocess;

end;

四.波形仿真及其编程下载

4.1仿真波形

4.2波形分析

由上述波形可知,刚开始,主道亮红灯,支道亮绿灯;当支道绿灯倒计34秒后,支道黄灯亮,主道红灯亮;而支道黄灯倒计时4秒后,支道红灯亮,主道绿灯亮;当主道绿灯倒计时30秒后,主道黄灯亮,支道红灯亮;当主道黄灯倒计时4秒后,主道红灯亮,支道绿灯亮。

各时间段每个交通灯的状态都符合,所有,仿真波形正确。

4.3编程下载

因为有主干道和支干道,所以我选择了两个重置键和保持键,而六个信号灯分别为主道的红绿黄和支道的红绿黄,锁好引脚后,两个方向上的数码管显示时间完全吻合,按两个干道上的重置键时,会恢复原状态,继续计时,当按下两个干道的保持键时,时间保持不变,结果证实调试成功。

四、引脚分配

引脚分配如表——1所示:

表——1

引脚名称

引脚编号

连接网络

引脚名称

引脚编号

连接网络

clock_in

PIN_J3

select_display[0]

PIN_L3

E_7SEG-A

hold_state

PIN_M3

FPGA_M1

select_display[1]

PIN_L4

E_7SEG-B

reset_state

PIN_M4

FPGA_M2

select_display[2]

PIN_H3

E_7SEG-C

hold_state1

PIN_N1

FPGA_M3

select_display[3]

PIN_H4

E_7SEG-D

reset_state1

PIN_N2

FPGA_M4

select_display[4]

PIN_H1

E_7SEG-E

led_green

PIN_U11

LED2

select_display[5]

PIN_L2

E_7SEG-F

led_green1

PIN_R12

LED5

select_display[6]

PIN_K4

E_7SEG-G

led_red

PIN_R10

LED1

led_selout[0]

PIN_G4

E_7SEG-A1

led_red1

PIN_R11

LED4

led_selout[1]

PIN_G3

E_7SEG-A2

led_yellow

PIN_N15

LED3

led_selout[2]

PIN_E2

E_7SEG-A3

led_yellow1

PIN_U12

LED6

led_selout[3]

PIN_F2

E_7SEG-A4

五、心得及体会

通过这次课程设计,我们可以更好的熟悉和理解QuartusⅡ集成环境下EDA技术,它是用VHDL对数字系统进行抽象的行为及功能描述到具体的内部线路结构,从而可以在电子设计的各个阶段、各个层次进行计算机模拟验证,保证设计过程的正确性,我这次做的课题是交通灯信号控制器的设计。

这次课程设计对于我是个很大的挑战,并且遇到了很多困难,这是因为在做课程设计之前,只做了一些比较简单的电路图设计,没有做过比较复杂的设计,所以有很多的语法和整体结构的设计没有掌握和理解,所以在编写程序时我大量参考了在图书馆借阅的资料,还借助了网络的帮助,我基本上掌握了VHDL语言的基本语法。

在这几天课程设计的时间里,实验室的氛围对我影响很大,大家一起努力,这也是我们完成课程设计的动力。

这次课程设计也多亏了我这一组的同学及老师的帮助,在老师的提点下,我理清了思路,交通灯原来有五种状态,沿着这条思路,把程序编出来,所以我明白了独立思考及不懂就问的重要性。

还有一点是我们做任何事情都无法缺少的,那就是细心认真,此次设计我就深深体会到了,由于编程时没有做到足够的细心,调试时总出现问题,但需要好长时间才能找出问题的所在,这也让我真正明白了科学的严谨性,它不允许出半点差错,否则后果会比较麻烦。

这次课程设计让我看到了自身的不足,不够严谨细心,并且太急躁,我会努力克服的。

这次课程设计必定成为我人生旅途上一个非常美好的回忆!

参考文献:

《EDA技术及VHDL》第3版潘松,黄继业:

华大学出版社

《EDA教程》孟庆辉,刘辉,程继航,石静苑:

防工业出版社,2008

《电子技术EDA实践教程》杨晓慧等著编:

国防工业出版社,2005

《EDA技术可编程器件的应用》包明编著:

北京航空航天大学出版社,2007

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

当前位置:首页 > 高等教育 > 艺术

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

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