简易交通灯控制器设计实验六报告格式_第1页
简易交通灯控制器设计实验六报告格式_第2页
简易交通灯控制器设计实验六报告格式_第3页
简易交通灯控制器设计实验六报告格式_第4页
简易交通灯控制器设计实验六报告格式_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、浙江万里学院实验报告成绩: 教师: 胡俊杰 课程名称: 可编程逻辑器件应用 实验名称: 实验六 简易交通灯控制器设计 专业班 姓名: 学号: 实验日期一、实验目的:掌握有限状态机的描述,掌握Verilog语言的多个过程语句(always)的应用,练习复杂时序电路设计。二、实验内容:简易交通信号控制器设计1)设计目标:1、在交通灯系统中,路口需要红、黄、绿三盏灯,并且每个路口都有倒数的计时器。2、假设绿灯每次维持的时间是30s,黄灯为6s,红灯36s,绿灯亮时最后3秒以0.5s亮灭的频率闪烁。3、A方向绿灯或黄灯亮时,B方向红灯亮;B方向绿灯或黄灯亮时,A方向红灯亮。2)提高要求:(可以完成其中

2、一项或两项)1、A向和B向的绿灯、黄灯亮的时间可以通过端口预置成不同时间,红灯亮的时间由模块内计算得到。2、计数器用2位十进制倒计时,并且经显示译码用数码管显示。3、红灯状态开始时,最初2秒不显示。三、设计过程1)交通灯工作过程时序分析本次设计是针对十字路口,进行南北和东西直行情况下交通灯控制。设定东西方向为主干道方向,根据交通灯的亮的规则,在初始状态下四个方向的都为红灯亮启,进入正常工作状态后,当主干道上绿灯亮时,支干道上红灯亮,持续35S后,主干道和支干道上的黄灯都亮启,持续5S后,主干道上红灯亮启,支干道上绿灯亮启持续25S,之后主干道和支干道上的黄灯都亮启5s,一个循环完成。循环往复的

3、直行这个过程。其过程如下图所示:图1.交通灯点亮时间控制说明2)工作状态划分以及状态转换根据上章设计原理,交通灯控制的关键是各个状态之间的转换和进行适当的时间延时,根据状态机的设计规范,本次设计了三个状态之间的循环转化,其真值表及状态转化图如下所示: 图2.交通灯控制状态转化说明:该状态图为交通灯在正常情况下的状态转化图,进入控制后,状态00时主干道绿灯及支干道红灯亮起,进入状态01后两路黄灯亮起,状态11时主干道红灯及支干道绿灯亮起。进入10状态两路黄灯亮起。结束一个循环,从00状态重新开始循环。为实现控制与显示的功能,需要设计交通灯点亮顺序控制程序,倒数计时程序,七段数码管显示程序,数码管

4、显示扫描程序,其系统结构图如下所示:图3.交通灯控制系统结构图其中rst为复位信号,clk为时钟信号,hold为特殊情况控制信号,输入hold时两个方向红灯无条件亮起。3)每个状态对应红黄绿等的工作分析 根据整体设计要求,编写各个功能部分Verilog HDL程序,设置各输入输出变量说明如下clk: 为计数时钟;qclk:为扫描显示时钟;en: 使能信号,为1 的话,则控制器开始工作;rst: 复位信号,为1的话,控制及技术回到初始状态;hoid:特殊情况控制信号,为1的话,则两个方向无条件显示为红灯;light1: 控制主干道方向四盏灯的亮灭;其中,light10light2,分别控制主干道

5、方向的绿灯、黄灯和红灯;light2: 控制支干道方向四盏灯的亮灭;其中,light20 light22,分别控制支干道方向的绿灯、黄灯和红灯;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,rst

6、1;output st1,st2;output7:0 num1,num2;output6:0counter;output2:0 light1,light2;reg tim1,tim2,st1,st2;reg1:0state1,state2,ste;reg2:0light1,light2;reg3:0num;reg6:0counter;reg7:0 num1,num2;reg7:0 red1,red2,green1,green2,yellow1,yellow2;4)整个设计的模块划分以及每个模块的功能说明 定义了两个输入,三个输出。两个输入分别是时钟信号和紧急情况信号。输出信号分别是南北,东西,

7、以及led灯信号。具体实现方式是先给紧急情况下定义个状态,然后通过计数器来实现各个状态的改变。5)分模块程序设计和调试 module djs(clk_1hz,d0,d1,state,start); input clk_1hz,start; output1:0state; output3:0 d1,d0;parameter s1=2'b00,s2=2'b01,s3=2'b10,s4=2'b11; parameter t_lda1=3,t_lda0=0,t_hda1=0,t_hda0=6,t_ldb1=4,t_ldb0=5,t_hdb1=0,t_hdb0=5;reg

8、 1:0 state;reg 3:0 d1,d0;reg 3:0 s_d1,s_d0; always (posedge clk_1hz ) begin if(!start) begin d0<=t_lda0;d1<=t_lda1; state<=0; end else if(d0=0&d1=0) begin d0=s_d0; d1=s_d1; state=state+1; end else if(d0=0) begind0<=9;d1=d1-1;endelsed0=d0-1; endalways (state)case (state)s1:begin s_d1&

9、lt;=t_hda1;s_d0<=t_hda0; ends2:begin s_d1<=t_ldb1;s_d0<=t_ldb0; ends3:begin s_d1<=t_hdb1;s_d0<=t_hdb0; ends4:begin s_d1<=t_lda1;s_d0<=t_lda0; endendcaseendmodulemodule fenpin(clkout,clkin,snum);input clkin;input 25:0 snum;output clkout;integer s;wire 24:0 smax; assign smax=(snum

10、>>1)-1; reg clkout;always (posedge clkin)beginif(s=smax)begin s<=0;clkout<=!clkout;endelse s<=s+1;endendmodulemodule xianshiqi(hex,d,e);input e;input 3:0 d;output 6:0 hex;reg 6:0 hex;always (d or e)begin if (!e)hex<=7'b1111111; else case(d)4'b0000: hex<=7'b1000000;4&

11、#39;b0001: hex<=7'b1111001; 4'b0010: hex<=7'b0100100; 4'b0011: hex<=7'b0110000; 4'b0100: hex<=7'b0011001; 4'b0101: hex<=7'b0010010; 4'b0110: hex<=7'b0000010; 4'b0111: hex<=7'b1111000; 4'b1000: hex<=7'b0000000; 4'

12、b1001: hex<=7'b0010000; default: hex<=7'b1111111; endcaseendendmodulemodule zhuangtai(leda,ledb,state,d0,d1,clk_1hz);input 3:0 d1,d0;input 1:0 state;input clk_1hz;output 2:0leda,ledb; parameter s1=2'b00,s2=2'b01,s3=2'b10,s4=2'b11; reg2:0leda,ledb; always (state ) case(s

13、tate) s1:begin ledb=3'b001; leda1:0=2'b00;if (d1=0&d0<4)leda2=clk_1hz;elseleda2=1'b1; end s2: begin leda=3'b010; ledb=3'b001; end s3: begin leda=3'b001; ledb1:0=1'b00;if (d1=0&d0<4)ledb2=clk_1hz;elseledb2=1'b1; end s4: begin leda=3'b001; ledb=3'b

14、010; end endcaseendmodulemodule zong(leda,ledb,state,hex1,hex0,d1,d0,start,clkout,clkin);input clkin,start;output 2:0leda,ledb; output 6:0 hex1,hex0;output 1:0 state;output 3:0 d1,d0;output clkout;parameter n_fenpin=20000000;wire 3:0 d1,d0;wire 1:0 state;wire 2:0 leda,ledb;wire 6:0 hex1,hex0;/assign

15、 clk_1hz=clkin;assign clkout=clk_1hz;wire clk_1hz;fenpin u1(.clkout(clk_1hz),.clkin(clkin),.snum(n_fenpin);djs u2(.d1(d1),.d0(d0),.state(state),.clk_1hz(clk_1hz),.start(start);zhuangtai u3(.leda(leda),.ledb(ledb),.state(state),.d1(d1),.d0(d0),.clk_1hz(clk_1hz);xianshiqi u41(.hex(hex1),.d(d1),.e(1'b1);xianshiqi u42(.hex(hex0)

温馨提示

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

评论

0/150

提交评论