- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
浙江万里学院实验报告
课程名称: 可编程逻辑器件应用
实验名称: 实验六 简易交通灯控制器设计
专业班 姓名: 学号: 实验日期一、实验目的:
掌握有限状态机的描述,掌握Verilog语言的多个过程语句(always)的应用,练习复杂时序电路设计。
二、实验内容:
简易交通信号控制器设计
1)设计目标:
1、在交通灯系统中,路口需要红、黄、绿三盏灯,并且每个路口都有倒数的计时器。
2、假设绿灯每次维持的时间是30s,黄灯为6s,红灯36s,绿灯亮时最后3秒以0.5s亮灭的频率闪烁。
3、A方向绿灯或黄灯亮时,B方向红灯亮;B方向绿灯或黄灯亮时,A方向红灯亮。
2)提高要求:(可以完成其中一项或两项)
1、A向和B向的绿灯、黄灯亮的时间可以通过端口预置成不同时间,红灯亮的时间由模块内计算得到。
2、计数器用2位十进制倒计时,并且经显示译码用数码管显示。
3、红灯状态开始时,最初2秒不显示。
三、设计过程
1)交通灯工作过程时序分析
本次设计是针对十字路口,进行南北和东西直行情况下交通灯控制。设定东西方向为主干道方向,根据交通灯的亮的规则,在初始状态下四个方向的都为红灯亮启,进入正常工作状态后,当主干道上绿灯亮时,支干道上红灯亮,持续35S后,主干道和支干道上的黄灯都亮启,持续5S后,主干道上红灯亮启,支干道上绿灯亮启持续25S,之后主干道和支干道上的黄灯都亮启5s,一个循环完成。循环往复的直行这个过程。其过程如下图所示:
图1.交通灯点亮时间控制说明
2)工作状态划分以及状态转换
根据上章设计原理,交通灯控制的关键是各个状态之间的转换和进行适当的时间延时,根据状态机的设计规范,本次设计了三个状态之间的循环转化,其真值表及状态转化图如下所示:
图2.交通灯控制状态转化
说明:该状态图为交通灯在正常情况下的状态转化图,进入控制后,状态00时主干道绿灯及支干道红灯亮起,进入状态01后两路黄灯亮起,状态11时主干道红灯及支干道绿灯亮起。进入10状态两路黄灯亮起。结束一个循环,从00状态重新开始循环。
为实现控制与显示的功能,需要设计交通灯点亮顺序控制程序,倒数计时程序,七段数码管显示程序,数码管显示扫描程序,其系统结构图如下所示:
图3.交通灯控制系统结构图
其中rst为复位信号,clk为时钟信号,hold为特殊情况控制信号,输入hold时两个方向红灯无条件亮起。
3)每个状态对应红黄绿等的工作分析
根据整体设计要求,编写各个功能部分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:数码管扫描信号 。
输入输出及中间变量设置如下:
module traffic(en,clk,qclk,rst,rst1,hold,num1,num2,light1,light2,counter,st1,st2);
input en,clk,qclk,rst,hold,rst1;
output st1,st2;
output[7:0] num1,num2;
output[6:0]counter;
output[2:0] light1,light2;
reg tim1,tim2,st1,st2;
reg[1:0]state1,state2,ste;
reg[2:0]light1,light2;
reg[3:0]num;
reg[6:0]counter;
reg[7:0] num1,num2;
reg[7:0] red1,red2,green1,green2,yellow1,yellow2;
4)整个设计的模块划分以及每个模块的功能说明
定义了两个输入,三个输出。两个输入分别是时钟信号和紧急情况信号。输出信号分别是南北,东西,以及led灯信号。具体实现方式是先给紧急情况下定义个状态,然后通过计数器来实现各个状态的改变。module djs(clk_1hz,d0,d1,state,start);
文档评论(0)