Verilog_HDL的交通灯控制器设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
交通信号灯控制器
课程设计报告
2015-2016学年第2学期
课程设计名称:电子综合设计EDA课程设计
院(系):电子信息学院
专业:电子信息工程班级:电子1313 姓名: xx 学号: 1310034303xx
综合实验时间: 2016/7/11-2016/7/15
指导教师:钟旭
提交时间: 2016/7/15
上海电机学院课程设计任务书
目录
第一章设计原理 (4)
1.1设计要求 (4)
1.2设计思路和原理 (4)
1.3实现方法 (4)
第二章Verilog HDL程序设计 (6)
2.1整体设计 (6)
2.2 具体设计 (7)
第三章仿真测试 (7)
3.1 波形仿真 (8)
第四章设计总结 (11)
第一章设计原理
1.1设计要求
设计一个交通控制器,用LED显示灯表示交通状态,并以7段数码显示器显示当前状态剩余秒数主干道绿灯亮时,支干道红灯亮;反之亦然,二者交替允许通行,主干道每次放行35s,支干道每次放行25s。每次由绿灯变为红灯的过程中,亮光的黄灯作为过渡,黄灯的时间为5s。能进行特殊状态显示,特殊状态时东西、南北路口均显示红灯状态。用LED灯显示倒计时,并且能实现总体清零功能,计数器由初始状态开始计数,对应状态的显示灯亮。能实现特殊状态的功能显示。[1]
1.2设计思路和原理
(1) 主、支干道用传感器检测车辆到来情况,实验电路用逻辑开关代替。
(2) 选择1HZ时钟脉冲作为系统时钟。
(3) 45s、25s、5s定时信号可用顺计时,也可用倒计时,计时起始信号由主控电路给出,每当计满所需时间,启、闭三色信号灯,并启动另一计时电路。
(4) 交通灯状态变化如表1及图1所示:
表1 交通灯状态图
检测到支状态2
状态1
状态0
Emergency
路无行人和车辆
图1 交通灯状态图
(5) 交通灯设计输入信号4个:CLK(时钟),EN(使能),EMERGENCY(紧急),BCHECK(检测) ;输出信号4个:LAMPA(主干道信号灯),LAMPB(支干道信号灯),ACOUNT(主干道计数器),BCOUNT(支干道计数器)。交通灯控制原理如图2所示。
图2 交通灯原理图
1.3实现方法
本次采用文本编辑法,即利用Verilog HDL 语言描述交通控制器,通过状态机计数法,实现设计所要求的交通灯控制及时间显示。设计中用两组红黄绿LED 模拟两个方向上的交通灯,用4个7段数码管分别显示两个方向上的交通灯剩余时间,控制时钟由试验箱上频率信号提供。[2]
第二章 Verilog HDL 程序设计
2.1整体设计
根据上章设计原理,交通灯控制的关键是各个状态之间的转换和进行适当的时间延时,根据状态机的设计规范,本次设计了三个状态之间的循环转化,其真值表及状态转化图如下所示:
状状状状状状状状状状状状00
状状10
状状11状状01状状状状状状状状状状状状状状状
状状状状状状状状状状
状状状状状状状状状状状状状状状001100010
010001010
100010
图2 交通灯控制状态转化
说明:该状态图为交通灯在正常情况下的状态转化图,进入控制后,状态00时主干道绿灯及支干道红灯亮起,进入状态01后两路黄灯亮起,状态11时主干道红灯及支干道绿灯亮起。进入10状态两路黄灯亮起。结束一个循环,从00状态重新开始循环。
为实现控制与显示的功能,需要设计交通灯点亮顺序控制程序,倒数计时程序,七段数码管显示程序,数码管显示扫描程序,其系统结构图如下所示:
图3 交通灯控制系统结构图
其中rst为复位信号,clk为时钟信号,hold为特殊情况控制信号,输入hold时两个方向红灯无条件亮起。
2.2 具体设计
根据整体设计要求,编写各个功能部分Verilog HDL程序,设置各输入输出变量说明如下
clk:为计数时钟;
qclk:为扫描显示时钟;
en:使能信号,为1 的话,则控制器开始工作;
rst:复位信号,为1的话,控制及技术回到初始状态;
hoid:特殊情况控制信号,为1的话,则两个方向无条件显示为红灯;
light1:控制主干道方向四盏灯的亮灭;其中,light1[0]~light[2],分别控制主干道方向的
绿灯、黄灯和红灯;
light2:控制支干道方向四盏灯的亮灭;其中,light2[0] ~ light2[2],分别控制支干道方向的
绿灯、黄灯和红灯;
num1:用于主干道方向灯的时间显示,8 位,可驱动两个数码管;
num2:用于支干道方向灯的时间显示,8 位,可驱动两个数码管;
counter:用于数码管的译码输出;
st1,st2:数码管扫描信号。
详细设计步骤:
(1) 确定4个输入信号与4个输出信号,具体见图2;
(2) 将50MHZ时钟分频为1MHZ;
(3) 设计红黄绿3中信号灯切换的时间及顺序;
(4) 设计支路检测状态下的信号灯切换;
(5) 设计紧急(EMERGENCY)状态下信号灯的切换;
(6) 程序使用3always块[1],详细代码如下:
总体程序见程序清单所示
第三章仿真测试
3.1 波形仿真
在仿真软件下创建工程,新建编辑设计文件,将程序输入,整体编译后,新建波形仿真文件。设置仿真时间,时钟周期,输入输出端口,进行波形仿真。具体仿真波形图及说明如下所示:
仿真截止时间:100us;
时钟:clk 1us,qclk 0.1us
3.1.1 正常工作时波形仿真图
图4没有紧急情况时主干道和支干道的信号灯的显示状态
图5没有紧急情况时主干道和支干道的信号灯的显示状态