基于FPGA的交通灯课程设计报告综述.docx

上传人:b****2 文档编号:1747237 上传时间:2023-05-01 格式:DOCX 页数:27 大小:349.07KB
下载 相关 举报
基于FPGA的交通灯课程设计报告综述.docx_第1页
第1页 / 共27页
基于FPGA的交通灯课程设计报告综述.docx_第2页
第2页 / 共27页
基于FPGA的交通灯课程设计报告综述.docx_第3页
第3页 / 共27页
基于FPGA的交通灯课程设计报告综述.docx_第4页
第4页 / 共27页
基于FPGA的交通灯课程设计报告综述.docx_第5页
第5页 / 共27页
基于FPGA的交通灯课程设计报告综述.docx_第6页
第6页 / 共27页
基于FPGA的交通灯课程设计报告综述.docx_第7页
第7页 / 共27页
基于FPGA的交通灯课程设计报告综述.docx_第8页
第8页 / 共27页
基于FPGA的交通灯课程设计报告综述.docx_第9页
第9页 / 共27页
基于FPGA的交通灯课程设计报告综述.docx_第10页
第10页 / 共27页
基于FPGA的交通灯课程设计报告综述.docx_第11页
第11页 / 共27页
基于FPGA的交通灯课程设计报告综述.docx_第12页
第12页 / 共27页
基于FPGA的交通灯课程设计报告综述.docx_第13页
第13页 / 共27页
基于FPGA的交通灯课程设计报告综述.docx_第14页
第14页 / 共27页
基于FPGA的交通灯课程设计报告综述.docx_第15页
第15页 / 共27页
基于FPGA的交通灯课程设计报告综述.docx_第16页
第16页 / 共27页
基于FPGA的交通灯课程设计报告综述.docx_第17页
第17页 / 共27页
基于FPGA的交通灯课程设计报告综述.docx_第18页
第18页 / 共27页
基于FPGA的交通灯课程设计报告综述.docx_第19页
第19页 / 共27页
基于FPGA的交通灯课程设计报告综述.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于FPGA的交通灯课程设计报告综述.docx

《基于FPGA的交通灯课程设计报告综述.docx》由会员分享,可在线阅读,更多相关《基于FPGA的交通灯课程设计报告综述.docx(27页珍藏版)》请在冰点文库上搜索。

基于FPGA的交通灯课程设计报告综述.docx

基于FPGA的交通灯课程设计报告综述

 

《EDA技术》课程实验报告

 

课程名称:

EDA技术及应用

报告题目:

交通灯控制器设计

学部:

信息科学与工程

姓名:

陈外流

学号:

104328318117050

班级:

电信1002

同组者:

周际远

指导教师:

曹铁军

 

信息科学与工程学院

2012-2013学年第二学期

课程设计任务书

报告题目

交通灯控制器的设计

完成时间

6.19

学生姓名

陈外流

专业班级

电信1002班

指导教师

曹铁军

职称

教授

总体设计要求和技术要点

1.任务及要求

(1)设计一个交通信号灯控制器,由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。

(2)红、绿、黄发光二极管作信号灯,用传感器或逻辑开关作检测车辆是否到来的信号。

(3)主干道处于常允许通行的状态,支干道有车来时才允许通行。

主干道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯。

(4)主、支干道均有车时,两者交替允许通行,主干道每次放行45秒,支干道每次放行25秒,设立45秒、25秒计时、显示电路。

(5)在每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡,使行驶中的车辆有时间停到禁行线外,设立5秒计时、显示电路。

(6)按《湖南涉外经济学院课程设计管理办法》要求提交课程设计报告。

工作内容及时间进度安排

第17周:

周1---周2:

立题、论证方案设计

周3---周5:

程序设计与调试

第18周:

周1---周3:

硬件调试与测试、撰写课程设计报告

周4---周5:

验收答辩

课程设计成果

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

2.课程设计总结报告

摘要

本实验为自主选题设计实验,实验选择具有倒计时显示功能的红黄绿三色交通设计,实验中采用VHDL作为设计功能描述语言,选用Altera公司的EP1K30144-PINTQFP最为主控芯片,实验报告中简要介绍了FPGA器件,并给出了设计原理图,详细的介绍了交通灯的设计流程,实验报告中还附有实验代码实验结果照片图。

Abstract

Thisexperimentdesignedforindependentchoiceexperiment,experimentchoicewhichhasthefunctionofthecountdowndisplayredyellowgreentrafficdesign,descriptionlanguage(VHDLasdesignfunctionisappliedintheexperiments,themostmaincontrolchipselectMAXIIEPM240T100C5Alteracompany,experimentreport,thispaperbrieflyintroducestheMAXIIdeviceseries,andgivesthedesigndiagram,detailedintroducesthetrafficlightsofthedesignprocess,theexperimentreportwiththecoderesultsphotograph.

 

目录

一、概述.............................................................1

1.1课程设计背景..................................................1

1.2课程设计题目..................................................1

1.3课题功能补充.................................................1

二、系统设计与论证..................................................2

2.1系统设计思路..................................................2

2.2系统框架设计..................................................3

2.3输入输出设计..................................................4

2.4模块设计过程..................................................4

2.4.1状态转换模块............................................4

2.4.2数码管显示模块..........................................5

2.5模块描述......................................................5

2.5.1主控制模块..............................................5

2.5.245s时间倒计时模块......................................6

2.5.325s时间倒计时模块......................................6

2.5.45s时间倒计时模块.......................................7

2.5.5数据选择模块............................................7

2.6整体电路图................................................8

3、系统仿真..........................................................9

四、心得体会..........................................................9

五、附录.............................................................10

5.1主控制模块源程序..............................................10

5.245s模块源程序................................................12

5.325s模块源程序...............................................13

5.45s模块源程序................................................14

5.5数据选择模块源程序............................................16

六、参考文献..........................................................16

七、老师评语及成绩....................................................17

 

1、概述

1.1课程设计背景

经过两个学期的电子线路设计测试实验,我们从基础的模电、数电典型电路的设计和实现做起,从PSpice和MAXⅡ的设计与仿真,到面包板搭建电路的实践与测试,在不断的学习和积累中,了解了电子技术设计的基本过程和基础知识。

在本学期,我们迎来了电子技术课程设计,这是一次将理论付诸实践的宝贵机会,是提升我们运用电子技术设计手段实现实际问题的能力的良好机遇。

在选题阶段,我踌躇满志的和另一个同学选择了SD卡音乐播放器这个选做题,但是由于没有足够地去深入了解相关的技术问题,致使在开题时没有通过曾老师的验收,只能十分遗憾的选择了基础题,改做交通灯控制器了。

虽然有些遗憾,因为当初觉得自己有能力完成那样一个选做题,但是这也给了我一个深刻的教训,在机遇和挑战面前,再有信心也要做好充足的准备来证明你的实力。

另一方面给我的启示就是,尽管一个相同的题目前人做了很多工作,给我们提供了一个很好的平台,但是如果我们只是去读懂和使用它们,仅限在这样一个层次是远远不够了,要学会从前人的研究成果中寻找新的突破点,利用自己已掌握的知识或者所具备的能力,在原有的基础上实现更加丰富的功能,这才应该是我们做课程设计的最终目的。

仅仅看懂别人的设计思路和代码并不是能力的体现,而真正锻炼我们能力的是在充分掌握前人设计手段的基础上,融会贯通地使原有的设计更加结合实际,更加完善。

1.2课程设计题目

设计一个十字路口交通信号灯的控制电路。

要求红、绿灯按照一定的要求亮和灭,并在亮灯期间进行倒计时,且将运行时间用数码管显示出来。

要求主干道每次通行时间为45秒,支干道每次通行时间为25秒。

每次变换运行车道前绿灯闪烁,持续时间为5秒。

即车道要由45转换为25时,主干道在通行时间只剩下5秒钟时,绿灯闪烁显示,支干道仍为红灯。

可以对主、支方向上的交通灯运行时间进行重新设置。

1.3课题功能补充

在原有题目功能要求的基础上,我对交通灯控制器的功能在设计方面进行了补

充,主要体现在:

(1)增加主、支干道左转红绿信号灯;

(2)增加主、支干道左转运行时间倒计时,并用数码管显示;

(3)增加LED同步显示当前运行状态功能,即用LED显示信号灯状态;

功能增加了,可以说任务量也增加了不少。

就最为关键的时间设置和显示方面,由于增加了两个左转方向的运行时间,虽然只是增加了两个状态,但是同时显示四个方向的等待和通行的倒计时,确实在开始设计时,我有些茫然,觉得无从下手。

我花了很长时间在网上查阅实际中的交通灯到底是如何计时和运行的,也到学校周围的路口实地调查过几种十字路口交通灯的设置,慢慢的从实际设置需求中理清头绪,具体的设计思路将在后面的部分详细说明。

二、系统设计

2.1系统设计思路

前面讲到,基于状态机的方法可以轻松实现交通灯的控制,而状态转换利用Verilog中的case和循环语句很容易实现。

我将四种状态的转换顺序设置为:

主直→主左→次直→次左→主直→……(依次循环),每个状态在设置时间的基础上由倒计时进行状态的变换。

以上都是比较容易实现的,也是很多经典的例子上有讲解过的,下面我着重说明下如何实现四个方向同时进行等待和通行的倒计时。

用四组数码管来显示主、次干道直行和左转倒计时,首先需要了解这四组数码管显示的规律,也就是显示计数的规律。

在网上查阅资料的时候,通过观看一段视频,我茅塞顿开。

这个视频展示的是基于51单片机实现的交通灯控制器的实物功能演示,它也是利用了四组数码管分别显示四个方向的倒计时。

通过反复观看我发现,其实在四个方向中,一个是通行倒计时,另外三个是等待倒计时,而等待倒计时又是它之前状态通行时间之和,在显示的效果上就是总会有两组倒计时数值是相同的,即相邻状态的那两个是相同的,一个是正在通行,一个是等待上一状态通行的结束。

这之后的两个状态显示的倒计时是累加上之前未通行状态的设置时间和正在通行状态的剩余时间之和。

如图所示:

图1状态转换图

图2倒计时显示方式(以主干道正在通行为例)

2.2系统框架设计

通过以上分析,可以较为清晰地看出在系统设计状态转换和一些实现方式的设计思路,下面说明系统的框架整体设计思路。

整体框架思路为:

首先将教学实验箱提供的50MHZ时钟信号分频,转换为可利用的1HzCP信号,同时为了实现绿灯在1s内闪烁一次,再转换出一个2Hz的CP信号提供给需要闪烁的绿灯。

然后是设置时间的功能模块,通过开关可以分别设置四个方向的运行时间,并将设置的时间传送到状态转换模块中。

在状态转换功能模块中,通过前面传送来的设定通行时间进行倒计时和转换状态,并输出当前方向通行剩余时间和四向使能EN信号。

在时间显示功能模块中,接收到前面的设置时间、剩余时间、使能信号,运用前面说明的现实方式的逻辑,计算出等待时间,在该向通行时显示剩余时间,在该向等待时显示等待时间,最终将时间信号输出到数码管显示模块;另外,由于数码管数量的限制,只能一次性显示8个(即四组),那么究竟是显示倒计时还是显示设置时间就需要一个开关信号来区分,于是设置一个输入信号来判别是否进入设置模式,并且只能在设置模式下设置时间。

LED信号灯显示功能模块则将状态转换模块输出的EN使能信号和2Hz的CP信号以及当前剩余时间作为输入,根据状态点亮相应的LED信号灯。

LED显示功能模块的原理和LED信号灯显示模块类似,也是根据同步状态EN使能信号,通过刷新字符的方式,改变和显示当前通行状态。

最后,数码管显示功能模块是结合DE2教学开发板数码管的编码规则将BCD码转换为七段码,在译码后显示出来。

图3系统框图

上图所示的系统框图只是大致说明系统的框架和流程,没有具体到每个模块的输入和输出,在前面的文字描述中有所说明,更加详细的设计说明将在后面模块功能说明的详细介绍。

2.3输入输出设计

根据功能需要,输入设计采用两个按键,模拟主干道、支干道有车过来。

时钟信号输入为1MHz的时钟频率振荡器。

输入设计采用4个数码管用于显示倒计时,8个LED灯作为交通信号。

2.4模块设计过程

2.4.1状态转换模块

该模块是控制器的核心部分,但是原理其实很简单,只是输入输出量很多,获取的信息多,处理后输出的信息也多。

前文已说明了状态转换的思想是该控制器实现的主要思路,那么如何处理好这么多输入输出的关系就成为了重点需要解决的问题了。

输入部分的关键是四向设定通行时间的传入,这可以从时间设置模块的输出获取。

这四个设定时间传入的时间需要选择好,即选择恰当的时机读取新的设置通行时间,因为设置时间的操作可能发生在任何运行时间,如果不能选择很好的时机来读入新的设置通行时间,可能造成逻辑上的混乱,致使状态不能按照正常的顺序进行转移,也给实际的交通信号控制造成了一定的影响。

在这里,我选取了在每个状态运行结束的同时来读取新的设置通行时间,这样在任意状态时刻设置时间,将会在下一个状态到来时切换到新的通行时间上去运行,一方面不会使设置的效果延时太长,另一方面也不会出现如果恰巧在该方向上设置时间,那么该方向可能一直显示通行而不能正常转换状态的逻辑错误。

输出部分的关键是四个方向的EN使能信号和通行倒计时时间。

根据所在的状态,可以对四个方向的EN使能信号进行赋值输出,用于控制信号灯显示和LED同步状态显示等。

通行时间倒计时是为了数码管能够显示出通行剩余时间和等待通行时间,这个显示的方式在前文也有描述,这里不再赘述。

通行剩余时间就是状态转换过程所依据的倒计时时间,在状态转换中需要根据各向通行时间在每个通行状态进行减计数倒计时,当计数到01时切换状态,而这个倒计时的时间正好是该方向通行的剩余时间,输出后经过显示方式的逻辑处理,就可以变成其它禁止方向的等待通行时间了。

2.4.2数码管显示模块

该功能模块同样建立在DE2底层函数调用基础上,实现4个数码管的时间显示。

根据DE2教学开发板上数码管的七段编码规则,将输入时间的8位BCD码转换为七段码显示出来,我根据实际需要修改了底层函数,使得调用更加方便和集成化。

根据数码管七段的位置进行编码,每个段位的管子仍然是共阳极的,所以高电平实现熄灭管子,低电平实现点亮管子。

小数点在物理上没有连接,所以无法使用。

图4七段数码管的原理图和每段的标识位置

该功能在实现上,只要有输入就会有相应的输出,所以原理上比较简单,只要编码正确不会出现问题,所以不再赘述。

2.5模块描述

2.5.1主控制模块

说明:

下面每个模块的源程序都在附录中

图5主控制模块原理图

inputCLK//时钟,复位信号输入

inputSM、SB//SM为主干道模拟检测开关,SB为支干道模拟检测开关

outputMR、MY、MG//主干道的红、黄、绿led灯显示引脚

outputBR、BY、BG//支干道红、黄、绿led灯显示引脚

模块源程序:

2.5.245s时间倒计时模块

图645s时间倒计时原理图

inputen45//45s模块使能信号

inputsb//支干道使能信号

inputclk//模块时钟源

outputdout45m[7..0]//主干道倒计时时间输出

outputdount45b[7..0]//支干道倒计时时间输出

2.5.325s时间倒计时模块

图725s时间倒计时

inputen25//25s模块使能信号

inputsb//支干道使能信号

inputsm//主干道使能信号

inputclk//模块时钟源

outputdout25m[7..0]//主干道倒计时时间输出

outputdount25b[7..0]//支干道倒计时时间输出

2.5.45s时间倒计时模块

图85s时间倒计时原理图

inputen05b//支干道使能信号

inputen05m//主干道使能信号

inputclk//模块时钟源

outputdout5[7..0]//倒计时时间输出

2.5.5数据选择模块

图9数据选择器原理图

inputen45//45s模块使能端,高电平有效

inputen25//25s模块使能端,高电平有效

inputen05m//主干道5s模块使能端,高电平有效

inputen05b//支干道5s模块使能端,高电平有效

inputain45m[7..0]//主干道45s时间输出端

inputain25m[7..0]//主干道25s时间输出端

inputain25b[7..0]//支干道25s时间输出端

inputain05[7..0]//5s时间输出端

2.6整体电路图

将上面设计的各功能模块依据逻辑思路,结合输入输出设计搭建成如下图所示的整体电路图。

图10系统总原理图

三、系统仿真

先设置系统结束时间为10us(默认为1us,加长时间为了得到更多的周期),设置时钟clk的值为时钟且周期为10ps

图11时序仿真整个周期图

图12放大后的时序仿真图

3.2试验箱硬件仿真结果

图13试验箱硬件仿真图

四、心得体会

做事不能眼高手低。

就像我们在选择选做题的时候,虽然可以找到现成的代码,感觉应该不会太难,但是仅仅靠感觉是做不成事的,只有耐心细致地去深入研究,进行充分论证,才能得出准确可靠的结果。

尽管有现成的代码,但最终能不能为我所用还要靠认真的研读,充分体会编程的思想,这样别人的代码才能转化为自己的。

要有工程的进度安排。

对于时间的规划其实是我们最欠缺的,记得在软件开发的课程中学到过利用甘特图来划定开发进度,但是实际中我们却完全没有按照它来实现。

每次课程设计,大部分同学都是最后一段时间拼命赶,在验收的前几天还在通宵写代码。

以前我也是这样,不过这次有所改善了,因为我大致规划了设计、实现和调试的时间,使得其他同学还在写程序进行仿真的时候,我已经开始了逐步的下载测试和修改完善工作,这为我在功能方面的完善提供了宝贵的时间。

要善于借鉴别人的想法。

很多时候自己独立思考可以充分锻炼能力,但是汲取他人之所长会对自己的工作产生事倍功半的效果。

但是借鉴要有限度,要讲究方式方法。

很多同学容易走两个极端,一种是埋头编程,中途遇到很多困难其实前人也都遇到并且很好地解决了,但是他们还要继续重复地探寻解决途径;另一种是照单全收,完全不明白作者的用意和初衷,只知道看结果对就拿来用,没弄明白其所以然,显然是荒废了学习的机会。

五、附录

5.1主控制模块源程序

libraryieee;

useieee.std_logic_1164.all;

entityjtdkzis

port(clk,sm,sb:

instd_logic;

mr,my,mg,br,by,bg:

outstd_logic);

endentityjtdkz;

architectureartofjtdkzis

typestate_typeis(a,b,c,d);

signalstate:

state_type;

begin

cnt:

process(clk)is

variables:

integerrange0to45;

variableclr,en:

bit;

begin

if(clk'eventandclk='1')then

ifclr='0'thens:

=0;

elsifen='0'thens:

=s;

elses:

=s+1;

endif;

casestateis

whena=>mr<='0';my<='0';mg<='1';

br<='1';by<='0';bg<='0';

if(sbandsm)='1'then

ifs=45then

state<=b;clr:

='0';en:

='0';

else

state<=a;clr:

='1';en:

='1';

endif;

elsif(sband(notsm))='1'then

state<=b;clr:

='0';en:

='0';

else

state<=a;clr:

='1';en:

='1';

endif;

whenb=>mr<='0';my<='1';mg<='0';

br<='1';by<='0';bg<='0';

ifs=5then

state<=c;clr:

='0';en:

='0';

else

state<=b;clr:

='1';en:

='1';

endif;

whenc=>mr<='1';my<='0';mg<='0';

br<='0';by<='0';bg<='1';

if(smandsb)='1'then

ifs=25then

state<=d;clr:

='0';en:

='0';

else

state<=c;clr:

='1';en:

='1';

endif;

elsifsb='0'then

state<=d;clr:

='0';en:

='0';

else

state<=c;clr:

='1';en:

='1';

endif;

whend=>mr<='1';my<='0';mg<='0';

br<='0';by<='1';bg<='0';

ifs=5then

state<=a;clr:

='0';en:

='0';

else

state<=d;clr:

='1';en:

='1';

endif;

endcase;

endif;

endprocesscnt;

endarchitectureart;

5.245s模块源程序

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.a

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

当前位置:首页 > 总结汇报 > 学习总结

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

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