简易交通灯控制器设计实验六格式详解.doc

简易交通灯控制器设计实验六格式详解.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

123****6648 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档