EDA课程设计报告书交通灯_第1页
EDA课程设计报告书交通灯_第2页
EDA课程设计报告书交通灯_第3页
EDA课程设计报告书交通灯_第4页
EDA课程设计报告书交通灯_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

EDA 应用实训课程设计说明书目录1 绪论 .02 方案论证 .12.1 程序设计的任务要求 .12.2 方案选择 .13 单元模块 .53.1 程序中使用的信号介绍: .53.2 子模块功能介绍: .54 整体电路 .115 仿真及实物图 .125.2 实物图 .136 心得 .16参考文献 .16附录 .17源程序 .17EDA 应用实训课程设计说明书11.绪论EDA 课程教会了我们如何运用电脑辅助我们进行数字电路的设计。还教会了我们用于对 FPGA 进行编程的 VHDL 语言。我十分喜欢 FPGA 的编程,也觉得这次课程设计是一次实践的好机会。由于在之前我已经写过一些 FPGA 的程序,所以在拿到这个题目时我的思路还是比较清晰的。2.方案论证2.1 程序设计的任务要求2.1.1 初始条件:设计一个交通灯控制器,有一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、黄、绿三色箭头信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。2.1.2 要求完成的主要任务: 2.1.2.1 主干道和支干道构成的十字路口上有车辆交替运行,主干道每次直行通行时间为 30s,左转通行时间为 25s,支干道每次直行通行时间为20s,左转通行时间为 15s。2.1.2.2 每次绿灯变红灯时,黄灯先亮 5s,才能变换运行车道。上述时间设置可修改。2.1.2.3 十字路口有数码管显示灯亮时间,要求灯亮时间以秒为单位进行减计数。EDA 应用实训课程设计说明书22.2 方案选择2.2.1 方案一只使用一个计时器完成所有计时工作,通过计数到不同的数值时发出不同的脉冲信号告诉系统相应的计时值已到。该方案的优势在于占用资源少,只用使用一个计时器就可完成 5 种不同的计时。但不管是在哪一个状态都会调用该计时器,一旦该计时器出错,整个系统都会受影响,不利于系统的维护和模块化编程的思想。2.2.2 方案二使用 5 个计时器进行计时。在某个状态时,系统会调用相应的计时器开始计时,并且只检测相应计时器的计时完成脉冲信号。该方案的缺点在于占用FPGA 资源多,但由于 FPGA 上资源足够,这个缺陷不影响系统工作。但它的优势是很明显的,它采用模块化编程设计,单个计时器的复杂度远远小于方案一中的计时器,并且 5 个计时器完全类似,只要完成一个计时器的设计就能轻易完成整个计时模块的设计。因此,我选择方案二进行设计。2.2.3 设计思路整个程序设计可以分为 4 个部分,灯的显示部分、数码管的显示部分、计时部分和按键对倒计数时间的调整部分。灯的显示部分可用状态机实现。由于交通灯的显示状况是有限的几个状态,于是可以用状态机让灯在固定的几个状态中顺次切换。对于这个题目,我将灯的显示分了 8 个状态:首先,所有交通灯有 12 个:主干道直行的红黄绿灯,主干道左转的红黄绿灯,次干道直行的红黄绿灯,次干道左转的红黄绿灯。主干道直行绿灯亮、主干道左转红灯亮、次干道直行和左转红灯亮;EDA 应用实训课程设计说明书3主干道直行黄灯亮、主干道左转红灯亮、次干道直行和左转红灯亮;主干道直行红灯亮、主干道左转绿灯亮、次干道直行和左转红灯亮;主干道直行红灯亮、主干道左转黄灯亮、次干道直行和左转红灯亮;主干道直行红灯亮、主干道左转红灯亮、次干道直行绿灯亮,次干道左转红灯亮;主干道直行红灯亮、主干道左转红灯亮、次干道直行黄灯亮,次干道左转红灯亮;主干道直行红灯亮、主干道左转红灯亮、次干道直行红灯亮,次干道左转绿灯亮;主干道直行红灯亮、主干道左转红灯亮、次干道直行绿灯亮,次干道左转黄灯亮;于是我定义了一个信号 STATE 用于存储状态机的状态:TYPE STATE_TYPE IS(A,B,C,D,E,F,G,H);SIGNAL STATE:STATE_TYPE:=A;-状态初始化为 A数码管的显示部分。设置了 5 个计时器,分别是 30s 计时器、25s 计时器、20s 计时器、15s 计时器和 5s 计时器。每个计时器都有一个使能 EN 信号,每个状态下只允许一个 EN 有效,当检测的计时器的 EN 信号有效时,就会将它的计数数值送到数码管显示。定义了一个常量数组:LED。代码如下:constant LED:data:=(“11000000“,“11111001“,“10100100“,“10110000“,“10011001“,“10010010“,“10000010“,“11111000“,“10000000“,“10010000“);-储存 09 的数码管显示字符将 2 位十进制数转化为 2 个 8 位二进制数显示的代码为:hh:=current_30s/10;ll:=current_30s rem 10;LED2set_LEDset_LEDset_LEDset_LEDset_LED=A;end case;END IF;3.单元模块3.1 程序中使用的信号介绍:signal time_1s,time_ms:std_logic;EDA 应用实训课程设计说明书6signal sin_30s,sin_25s,sin_20s,sin_5s,sin_15s :std_logic;-定义 30s,25s,15s,5s 计时模块的信号线,计满相应秒数后输出,高有效signal en_30s,en_25s,en_20s,en_5s,en_15s :std_logic;-定义30s,25s,15s,5s 计时模块的使能端,高有效signal set_30s,set_25s,set_20s,set_5s,set_15s :integer range 0 to 100;-设定计时初始值signal current_30s,current_25s,current_20s,current_5s,current_15s:integer range 0 to 99;3.2 子模块功能介绍:3.2.1 分频器将学习板上 50MHZ 的晶振信号分频为 1HZ 和 0.2HZ,tex 为测试信号,频率为 1HZ 用于观测分频器是否工作正常。如下图所示:图 3-2-1 分频器3.2.2 交通信号灯控制模块根据 STATE 的状态来点亮各个交通灯。当 pause 或 stop 信号为高时,灯的显示状态保持。如下图所示:EDA 应用实训课程设计说明书7图 3-2-2 交通信号灯控制模块3.2.3 STATE 信号以及计时器使能信号控制器根据 STATE 的现态和 sin_30s、sin_25s、sin_20s、sin_15s、sin_5s 信号的状态可以决定 STATE 信号的状态切换和 5 个计时器的使能。当 stop 信号为1的时候,sin_30s 被置1 ,sin_25s、sin_20s、sin_15s 和 sin_5s 被置0 。STATE 信号被置 A。如下图所示:EDA 应用实训课程设计说明书8图 3-2-3 STATE 信号以及计时器使能信号控制器3.2.4 计时值设置模块当 stop 置 1 时启用计时值设置模块,当 change 按下时会在 5 个计时器之间转换,按 plus 或 minus 时会将相应的计时器设置值加一或减一。如下图所示:图 3-2-4 计时值设置模块EDA 应用实训课程设计说明书93.2.5 数码管倒计时显示模块当 stop 为 0 时为正常显示模式,实时显示当前被使能的计时器的值。当stop 值为 1 时为指示模式,显示当前调整计时值设置模块调整的计时器编号。如 30S 计时器的编号为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论