版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于的交通灯设计(完整资料)(可以直接使用,可编辑优秀版资料,欢迎下载)
基于的交通灯设计(完整资料)(可以直接使用,可编辑优秀版资料,欢迎下载)《微型计算机原理与应用》课程设计报告班级学生姓名联系电话学号完成日期2013。12.30指导老师目录一、概述1。题目2.需求分析3.设计要求二、设计过程1。设计过程简单分析2.硬件原理3.8255芯片资料三、程序设计1.流程图2.程序代码四、总结附录概述1、题目:基于8086的交通灯设计2、需求分析:随着电子技术的发展,计算机在现代科学技术的发展中起着越来越重要的作用.多媒体技术、网络技术、智能信息处理技术、自适用控制技术、数据挖掘与处理技术等都离不开计算机.本课程设计是基于微机原理与接口技术的简单应用。运用所学的微机原理和接口技术知识完成交通灯系统.通过硬件与软件的结合,用我们刚刚学过的汇编语言编写程序模拟分析了现代城市交通控制与管理问题的现状,结合交通的实际情况阐述了交通灯控制系统的工作原理,给出了一种简单实用的交通灯控制系统的硬件、软件电路设计方案。该系统适用于单主干道的十字路口。现假定其主干道为东西方向,次干道为南北方向。3、设计要求这次课程设计的题目是交通灯控制器的设计与实现,主要是模拟十字路口的红绿灯,如图1-1所示。交通灯控制器的设计与实现主要是通过编写汇编语言程序利用8255A的A口灯的亮与灭进行控制。首先,要了解的是8255A是如何工作的,包括它的A口、B口、C口和控制端口是如何写数据的,还包括芯片的初始化等。由于只有16个发光二极管,所以还得弄清楚是每个发光二极管所代表的灯的颜色及方向.最后要在实验室通过一个软件进行调试,调试通过后即可看到设计的结果。要求:图1-1十字路口交通灯设计过程1、设计过程简单分析红,黄,绿灯可分别接在8255的A口上,灯的亮灭可直接由8255输出0,1控制。延时及闪烁由软件编程实现。2、硬件原理设计电路如下:由上述电路容易知道红,黄,绿灯分别接在8255的A口上,端口A地址为8000H,可以通过控制8255端口A输出的高低电平来控制灯的亮灭,灯的闪烁和延时可直接通过软件的延时程序解决,这样可以大大简化电路的设计.3、主要芯片资料8255介绍8255的内部结构8255A是一个40引脚的双列直插式集成电路芯片按功能可把8255A分为三个逻辑电路部分,即:口电路、总线接口电路和控制逻辑电路.(1)口电路8255A共有三个8位口,其中A口和B口是单纯的数据口,供数据I/O使用。而C口则既可以作数据口,又可以作控制口使用,用于实现A口和B口的控制功能。数据传送中A口所需的控制信号由C口高位部分(PC7~PC4)提供,因此把A口和C口高位部分合在一起称之为A组;同样理由把B口和C口低位部分(PC3~PC0)合在一起称之为B组.(2)总线接口电路总线接口电路用于实现8255A和单片微机的信号连接.其中包括:(a)数据总线缓冲器数据总线缓冲器为8位双向三态缓冲器,可直接和80C51的数据线相连,与I/O操作有关的数据、控制字和状态信息都是通过该缓冲器进行传送.(b)读/写控制逻辑与读写有关的控制信号有CS—片选信号(低电平有效)RD—读信号(低电平有效)WR—写信号(低电平有效)A0、A1—端口选择信号.8255A共有四个可寻址的端口(即A口、B口、C口和控制寄存器),用二位地址编码即可实现选择。参见下表。RESET-复位信号(高电平有效).复位之后,控制寄存器清除,各端口被置为输入方式。读写控制逻辑用于实现8255A的硬件管理:芯片的选择,口的寻址以及规定各端口和单片微机之间的数据传送方向。(c)控制逻辑电路控制逻辑电路包括A组控制和B组控制,合在一起构成8位控制寄存器。用于存放各口的工作方式控制字8255A工作方式及数据I/O操作(1)8255A的工作方式8255A共有三种工作方式,即方式0、方式1、方式2.(a)方式0基本输入/输出方式方式0下,可供使用的是两个8位口(A口和B口)及两个4位口(C口高4位部分和低4位部分)。四个口可以是输入和输出的任何组合。方式0适用于无条件数据传送,也可以把C口的某一位作为状态位,实现查询方式的数据传送.(b)方式1选通输入/输出方式A口和B口分别用于数据的输入/输出.而C口则作为数据传送的联络信号。具体定义见表7–2.可见A口和B口的联络信号都是三个,如果A或B只有一个口按方式1使用,则剩下的另外13位口线仍然可按方式0使用。如果两个口都按方式1使用,则还剩下2位口线,这两位口线仍然可以进行位状态的输入输出。方式1适用于查询或中断方式的数据输入/输出.(c)方式2双向数据传送方式只有A口才能选择这种工作方式,这时A口既能输入数据又能输出数据。在这种方式下需使用C口的五位线作控制线,信号定义如表7–2所示.方式2适用于查询或中断方式的双向数据传送。如果把A口置于方式2下,则B口只能工作于方式0.(2)数据输入操作用于输入操作的联络信号有:STB(StroBe)-选通脉冲,输入,低电平有效.当外设送来STB信号时,输入数据装入8255A的锁存器。IBF(InputBufferFull)—输入缓冲器满信号,输出,高电平有效。IBF信号有效,表明数据已装入锁存器,因此它是一个状态信号.INTR(INTerruptRequest)—中断请求信号,高电平有效,当IBF数据输入过程:当外设准备好数据输入后,发出信号,输入的数据送入缓冲器。然后IBF信号有效.如使用查询方式,则IBF即作为状态信号供查询使用;如使用中断方式,当信号由低变高时,产生INTR信号,向单片微机发出中断。单片微机在响应中断后执行中断服务程序时读入数据,并使INTR信号变低,同时也使IBF信号同时变低。以通知外设准备下一次数据输入。(3)数据输出操作用于数据输出操作的联络信号有:ACK(ACKnowledge)-外设响应信号输入,低电平有效。当外设取走输出数据,并处理完毕后向单片微机发回的响应信号为高,信号由低变高(后沿)时,中断请求信号有效。向单片微机发出中断请求。OBF(OutputBufferFull)——输出缓冲器满信号,输出,低电平有效。当单片微机把输出数据写入8255A锁存器后,该信号有效,并送去启动外设以接收数据.INTR—中断请求信号,输出,高电平有效。数据输出过程:外设接收并处理完一组数据后,发回ACK信号.该信号使OBF变高,表明输出缓冲器已空.如使用查询方式,则OBF可作为状态信号供查询使用;如使用中断方式,则当ACK信号结束时,INTR有效,向单片微机发出中断请求。在中断服务过程中,把下一个输出数据写入8255A的输出缓冲器。写入后OBF有效,表明输出数据已到,并以此信号启动外设工作,取走并处理8255A中的输出数据。表7–28255AC口联络信号定义程序设计1、流程图循环用延时程序延时用延时程序延时延时东西红灯亮,南北黄灯亮,其他灯灭东西红灯亮,南北绿灯闪烁,其他灯灭东西红灯亮,南北绿灯亮,其他循环用延时程序延时用延时程序延时延时东西红灯亮,南北黄灯亮,其他灯灭东西红灯亮,南北绿灯闪烁,其他灯灭东西红灯亮,南北绿灯亮,其他灯灭延时东西黄灯亮,南北红灯亮,其他灭东西绿灯闪烁,南北红灯亮,其他灭东西绿灯亮,南北红灯亮,其他灭初始化82552、程序代码。MODELSMALL.8086.stack。code.startupmovdx,8006hmovax,80houtdx,axmovdx,8000hmovax,0ffhoutdx,ax;8255初始化s1:movax,0behoutdx,axcalldelay5movcx,6lp:movax,0bfhoutdx,axcalldelay05movax,0behoutdx,axcalldelay05looplpmovax,0bdhoutdx,axcalldelay3movax,0ebhoutdx,axcalldelay5movcx,6lp1:movax,0fbhoutdx,axcalldelay05movax,0ebhoutdx,axcalldelay05looplp1movax,0dbhoutdx,axcalldelay3jmps1delay5procnearpushcxmovbx,250dy1:movcx,5882dy2:loopdy2decbxjnzdy1popcxretdelay5endpdelay05procnearpushcxmovbx,25dy3:movcx,5882dy4:loopdy4decbxjnzdy3popcxretdelay05endpdelay3procnearpushcxmovbx,150dy5:movcx,5882dy6:loopdy6decbxjnzdy5popcxretdelay3endp.dataEND总结本次课程设计是要设计一个交通灯系统,主要功能如上已有细述。在本次对交通灯的设计过程中以此来加深对微机接口技术的理解,提高了自己的动手能力。首先着手对硬件电路的设计,本次课程设计主要采用了8255A接口电路。由于对各个芯片不熟悉,通过课本了解到了它们的引脚及功能、工作方式、内部结构和控制字。然后就是对程序的设计,想要设计出一个实用的控制系统需要了解程序流程,先画出了流程图,然后对代码进行编写,在编写过程中遇到了很多问题。对芯片的不了解也导致编程的很多的问题,要么灯都不显示,要么灯显示不全,再要么红灯绿灯时间分配不合理。最后经过一段时间的研究,查阅了很多资料并和同学讨论后终于一一解决.最后,再说两句,由于自己太晚才开始做这个课程设计,导致很多功能没有实现好,例如想通过8253来对交通灯进行定时计数,用七段显示数码管显示倒计时,但是最后都由于时间紧而选择软件实现延时闪烁。不管怎样,经过这次课程设计,我获益颇多。将微机原理这门课程中的理论与实践相结合起来,对芯片的功能也有了进一步认识理解.附录电路原理图:元件清单:8086芯片1个8255芯片1个74ls373锁存器2个74ls138译码器1个Led灯12个参考文献:《8086实验指导书》王荣辉,张晓华编著《微型计算机原理及应用》郑学坚,朱定华编著数字系统课程设计基于FPGA的交通控制灯设计姓名:学号:班级:摘要随着社会的发展,城市规模的不断扩大,城市交通成为制约城市发展的一大因素。人口和汽车日益增长,市区交通也日益拥挤,人们的安全问题当然也日益重要。因此,红绿交通信号灯成为交管部门管理交通的重要工具之一。有了交通灯,人们的安全出行也有了很大的保障。自从交通灯诞生以来,其内部的电路控制系统就不断的被改进,设计方法也开始多种多样,从而使交通灯显得更加智能化.尤其是近几年来,随着电子与计算机技术的飞速发展,电子电路分析和设计方法有了很大的改进,电子设计自动化也已经成为现代电子系统中不可或缺的工具和手段,这些都为交通灯控制系统的设计提供了一定的技术基础。本课程设计运用erilogHDL语言描述交通控制器,通过状态机计数法,实现设计所要求的交通灯控制及时间显示,并最后进行了软件实现,达到了系统要求的功能。设计原理1.1设计要求设计一个交通控制器,用LED显示灯表示交通状态,并以7段数码显示器显示当前状态剩余秒数主干道绿灯亮时,支干道红灯亮;反之亦然,二者交替允许通行,主干道每次放行35s,支干道每次放行25s.每次由绿灯变为红灯的过程中,亮光的黄灯作为过渡,黄灯的时间为5s.能进行特殊状态显示,特殊状态时东西、南北路口均显示红灯状态。用LED灯显示倒计时,并且能实现总体清零功能,计数器由初始状态开始计数,对应状态的显示灯亮。能实现特殊状态的功能显示,1.2设计思路和原理本次设计是针对十字路口,进行南北和东西直行情况下交通灯控制。设定东西方向为主干道方向,根据交通灯的亮的规则,在初始状态下四个方向的都为红灯亮启,进入正常工作状态后,当主干道上绿灯亮时,支干道上红灯亮,持续35S后,主干道和支干道上的黄灯都亮启,持续5S后,主干道上红灯亮启,支干道上绿灯亮启持续25S,之后主干道和支干道上的黄灯都亮启5s,一个循环完成.循环往复的直行这个过程.其过程如下图所示:图1。交通灯点亮时间控制说明1.3实现方法本次采用文本编辑法,即利用VerilogHDL语言描述交通控制器,通过状态机计数法,实现设计所要求的交通灯控制及时间显示。设计中用两组红黄绿LED模拟两个方向上的交通灯,用4个7段数码管分别显示两个方向上的交通灯剩余时间,控制时钟由试验箱上频率信号提供。VerilogHDL程序设计2.1整体设计根据上章设计原理,交通灯控制的关键是各个状态之间的转换和进行适当的时间延时,根据状态机的设计规范,本次设计了三个状态之间的循环转化,其真值表及状态转化图如下所示:图2.交通灯控制状态转化说明:该状态图为交通灯在正常情况下的状态转化图,进入控制后,状态00时主干道绿灯及支干道红灯亮起,进入状态01后两路黄灯亮起,状态11时主干道红灯及支干道绿灯亮起。进入10状态两路黄灯亮起.结束一个循环,从00状态重新开始循环.为实现控制与显示的功能,需要设计交通灯点亮顺序控制程序,倒数计时程序,七段数码管显示程序,数码管显示扫描程序,其系统结构图如下所示:图3.交通灯控制系统结构图其中rst为复位信号,clk为时钟信号,hold为特殊情况控制信号,输入hold时两个方向红灯无条件亮起.2.2具体设计根据整体设计要求,编写各个功能部分VerilogHDL程序,设置各输入输出变量说明如下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:数码管扫描信号.输入输出及中间变量设置如下:moduletraffic(en,clk,qclk,rst,rst1,hold,num1,num2,light1,light2,counter,st1,st2);inputen,clk,qclk,rst,hold,rst1;outputst1,st2;output[7:0]num1,num2;output[6:0]counter;output[2:0]light1,light2;regtim1,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;二极管点亮控制该部分程序的作用是根据计数器的计数值控制发光二极管的亮、灭,以及输出倒计时数值给七段数码管的译码电路。此外,当检测到特殊情况(hold=‘1’)发生时,无条件点亮红灯的二极管,当检测到复位信号,两个方向计数与控制回复到00状态。因为主、支干道两个方向二极管点亮的顺序与延迟时间不同,顾编写两个独立的部分来控制,具体程序如下:1)主干道方向always@(posedgeclk)beginif(rst)//复位与特殊情况控制beginlight1<=3'b001;num1<=green1;endelseif(hold)beginlight1〈=3'b100;num1<=green1;endelseif(en)begin//使能有效开始控制计数if(!tim1)//begin//主干道交通灯点亮控制tim1〈=1;case(state1)2'b00:beginnum1<=green1;light1〈=3'b001;state1<=2’b01;end2’b01:beginnum1<=yellow1;light1<=3'b010;state1<=2’b11;end2'b11:beginnum1〈=red1;light1〈=3'b100;state1〈=2'b10;end2'b10:beginnum1<=yellow1;light1<=3'b010;state1<=2'b00;enddefault:light1〈=3'b100;endcaseend2)支干道方向always@(posedgeclk)beginif(rst)//复位与特殊情况控制beginlight2<=3'b100;num2<=red2;endelseif(hold)beginlight2〈=3'b100;num2<=red2;endelseif(en)beginif(!tim2)begintim2〈=1;case(state1)2'b00:beginnum2<=red2;light2<=3’b100;state2〈=2’b01;end2'b01:beginnum2〈=yellow1;light2〈=3’b010;state2<=2'b11;end2’b11:beginnum2〈=green2;light2〈=3'b001;state2<=2'b10;end2'b10:beginnum2<=yellow2;light2<=3'b010;state2〈=2'b00;enddefault:light2<=3'b100;endcaseend倒数计时该部分程序完成二极管发光时延的计数,并将计数结果送到数码管显示电路,每切换到一个状态,计数器的初值都被重置,以实现不同颜色二极管不同的时延要求。本次设计直接用逻辑运算完成2位十进制数的计数,未采用分位器的设计。因为主、支干道上计数器的结构完全相同,顾只列出一路的程序,其具体程序如下所示:always@(posedgeclk)beginelsebegin//倒数计时if(num1>0)if(num1[3:0]==0)beginnum1[3:0]<=4’b1001;num1[7:4]<=num1[7:4]-1;endelsenum1[3:0]<=num1[3:0]—1;if(num1==1)tim1〈=0;endendelsebeginlight1〈=3'b010;num1=2'b00;tim1〈=0;endend数码管的译码及扫描显示该段程序主要完成4个7段数码管的译码显示及扫描,使系统能正常显示主、支干道两个方向上的剩余时间。译码的时钟频率要低,为Hz级。扫描的时钟频率要高,最低不得小于人眼分辨频率50Hz,具体程序如下所示:always@(posedgeqclk)begin//数码管扫描if(rst1)beginst1=0;st2=0;endelsebegincase({st2,st1})2'b00:beginnum<=num1[3:0];{st2,st1}<=2'b01;end2'b01:beginnum<=num1[7:4];{st2,st1}〈=2'b10;end2'b10:beginnum<=num2[3:0];{st2,st1}〈=2'b11;end2'b11:beginnum<=num2[7:4];{st2,st1}<=2'b00;endendcaseendendalways@(posedgeqclk)begin//数码管译码显示case(num)4'b0000:counter<=7'b0111111;//04'b0001:counter<=7'b0000110;//14’b0010:counter〈=7’b1011011;//24'b0011:counter〈=7'b1001111;//34'b0100:counter〈=7’b1100110;//44’b0101:counter<=7'b1101101;//54'b0110:counter〈=7'b1111101;//64'b0111:counter〈=7'b0000111;//74’b1000:counter〈=7’b1111111;//84'b1001:counter<=7'b1101111;//9default:counter<=7'b0111111;//0endcaseendendmodule总体程序见程序清单所示仿真与硬件调试3.1波形仿真在QuartursⅡ软件下创建工程,新建编辑设计文件,将程序输入,整体编译后,新建波形仿真文件。设置仿真时间,时钟周期,输入输出端口,进行波形仿真.具体仿真波形图及说明如下所示:仿真截止时间:100us;时钟:clk1us,qclk0.1us1.正常工作时波形仿真图图4.正常工作时波形仿真图图形说明波形仿真主要完成了控制与计数以及数码管显示的波形图.en为低电品时,计数器置初值,高电平时开始正常控制与计数。控制发光二极管首次输出为“light1=001,light2=100”,表示主干道路绿灯亮,支杆道路红灯亮,计数器num1和num2从“00110101”开始递减计数,计数至“00000000”时,进入下一个状态,控制输出量为light=010,light2=010,表示主、支干道黄灯均亮起,计数器num1和num2从“00000101”开始计数递减,计数至"00000000”时进入下一个状态,light=100,light2=001,表示主干道路红灯亮,支杆道路绿灯亮。Counter根据num1,num2变化随时钟上升沿输出译码后的数据。由于屏幕显示大小有限,未仿真出一个完整周期。2.特殊情况仿真波形图5.特殊情况仿真波形图形说明当hold输入高电平时,在时钟上升沿的控制下,light1与light2被强制置位为"100”,表示两路红灯均亮起3.复位情况仿真波形图6.复位情况仿真波形图形说明当rst输入高电平时,在时钟上升沿控制下,计数与控制都回到00状态,即light1=001,light2=100,计数器num1和num2从“00110101”开始递减计数。3.2硬件调试完成时序仿真确认无误后,进行实验箱管脚设置,注意设置完成后一定要再进行一次全局仿真,使程序真正对应于硬件输出输出。具体连接说明如下所示输入变量:rst、clk、qclk、hold、en其中en,hold,rst接”0-1”拨码开关,以稳定的输出可变化的电平。计数时钟clk接实验箱上1Hz时钟,扫描显示时钟qclk接125Khz时钟。输出变量:light1[2:0]、light2[2:0]、counter[6:0]、st1、st2其中light1[0]、light2[0]分别接绿色的发光二极管;light1[1]、light2[1]分别接黄色的发光二极管;light1[2]、light2[2]分别接红色的发光二极管.counter[0]~counter[6],分别接七段数码管的a~f,st1、st2分别接试验箱上”4-16”译码器的低两位。完成接线后将程序烧写到芯片上,开始功能调试。分辨改变使能信号,复位信号以及特殊情况信号,观察数码管以及发光二级管情况。程序清单moduletraffic(en,clk,qclk,rst,rst1,hold,num1,num2,light1,light2,counter,st1,st2);inputen,clk,qclk,rst,hold,rst1;outputst1,st2;output[7:0]num1,num2;output[6:0]counter;output[2:0]light1,light2;regtim1,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;always@(en)if(!en)begin//设置计数初值green1〈=8’b00110101;red1<=8'b00100101;yellow1<=8'b00000101;green2<=8'b00100101;red2<=8'b00110101;yellow2〈=8'b00000101;endalways@(posedgeclk)beginif(rst)//复位与特殊情况控制beginlight1<=3'b001;num1〈=green1;endelseif(hold)beginlight1<=3'b100;num1〈=green1;endelseif(en)begin//使能有效开始控制计数if(!tim1)//开始控制begin//主干道交通灯点亮控制tim1<=1;case(state1)2’b00:beginnum1<=green1;light1<=3'b001;state1<=2'b01;end2’b01:beginnum1<=yellow1;light1<=3'b010;state1〈=2'b11;end2'b11:beginnum1<=red1;light1<=3'b100;state1〈=2'b10;end2'b10:beginnum1〈=yellow1;light1<=3'b010;state1〈=2'b00;enddefault:light1<=3’b100;endcaseendelsebegin//倒数计时if(num1〉0)if(num1[3:0]==0)beginnum1[3:0]<=4'b1001;num1[7:4]<=num1[7:4]-1;endelsenum1[3:0]〈=num1[3:0]-1;if(num1==1)tim1<=0;endendelsebeginlight1<=3'b010;num1=2'b00;tim1<=0;endendalways@(posedgeclk)beginif(rst)//复位与特殊情况控制beginlight2<=3’b100;num2<=red2;endelseif(hold)beginlight2〈=3’b100;num2<=red2;endelseif(en)beginif(!tim2)begintim2<=1;case(state1)2'b00:beginnum2<=red2;light2<=3'b100;state2<=2’b01;end2'b01:beginnum2<=yellow1;light2〈=3'b010;state2<=2'b11;end2'b11:beginnum2〈=green2;light2<=3'b001;state2〈=2'b10;end2'b10:beginnum2<=yellow2;light2〈=3’b010;state2<=2’b00;enddefault:light2<=3'b100;endcaseendelsebegin//倒数计时if(num2>0)if(num2[3:0]==0)beginnum2[3:0]<=4'b1001;num2[7:4]<=num2[7:4]-1;endelsenum2[3:0]<=num2[3:0]—1;if(num2==1)tim2〈=0;endendelsebegintim2〈=0;state2<=2’b00;light2<=3’b010;endendalways@(posedgeqclk)begin//数码管扫描if(rst1)beginst1=0;st2=0;endelsebegincase({st2,st1})2’b00:beginnum<=num1[3:0];{st2,st1}<=2'b01;end2’b01:beginnum<=num1[7:4];{st2,st1}<=2'b10;end2'b10:beginnum〈=num2[3:0];{st2,st1}〈=2'b11;end2'b11:beginnum〈=num2[7:4];{st2,st1}〈=2’b00;endendcaseendendalways@(posedgeqclk)begin//数码管译码显示case(num)4’b0000:counter<=7'b0111111;//04'b0001:counter〈=7'b0000110;//14'b0010:counter〈=7'b1011011;//24’b0011:counter<=7’b1001111;//34'b0100:counter<=7’b1100110;//44’b0101:counter〈=7'b1101101;//54’b0110:counter〈=7'b1111101;//64’b0111:counter<=7’b0000111;//74'b1000:counter〈=7'b1111111;//84’b1001:counter〈=7’b1101111;//9default:counter〈=7’b0111111;//0endcaseendendmodule总结在设计中采用VerilogHDL语言设计交通灯控制系统,借助其功能强大的语言结构,简明的代码描述复杂控制逻辑设计,与工艺无关特性,在提高工作效率的同时达到求解目的,并可以通过VerilogHDL语言的综合工具进行相应硬件电路生成,具有传统逻辑设计方法所无法比拟的优越性。在设计过程中,觉得最难的部分是波形仿真部分,虽然程序编译通过但仿真出不了正确的波形,不是计数器无法正常计数,就是控制输出无法进入到下一个状态,每次出现问题就必须返回重新修改程序.实践证明,在编写一个较复杂的程序时,一开始一定要画流程图,弄清楚各个功能及实现它们的逻辑算法,做到心中有数后在开始下笔写编写程序。在编写的时候要尤其要注意语言的规范,如本次设计中编写的Verilog在Quartus8。1中可以正常生成时序图,而在低版本的软件中却无法生成,原因就是语言使用不规范,在解决这个问题时我总结了一些经验,首先程序要逻辑清晰,简洁明了,避免不必要的嵌套与条用,其次要适当地给程序加上注解文字,提高可读性,以方便之后的程序出错时进行查找,最后充分利用仿真软件提供的各项编译工具与报错消息,按图索骥,有方向的完成程序调试。完成仿真后进行,进行试验箱上的硬件调试,该步骤主要是要求细心,按照引脚清单,逐一完成连线,本次设计用到两个时钟输入,注意一定要选择合适频率的时钟,以便达到期望的效果。注意观察实物的现象,看是否满足设计要求,不满足时检查是硬件问题还是程序问题,如果是程序问题,在修改完之后必须要重新编译,重新烧入.不断排查错误,直至达到满意的效果。通过这次课程设计,熟悉了简单EDA设计的整个流程,加深了对VerilogHDL硬件描述语言的理解,提高了动手能力,并且锻炼了自己的耐心,收获颇丰,我会把在本次课程设计中学到的东西应用到今后的工作学习中。参考资料[1]夏宇闻.复杂数字电路与系统的VerilogHDL设计技术[M]。北京:北京航空航天大学出版社,1998[2]郭梯云.移动通信[M].西安:西安电子科技大学出版社,1995[3][法]MichelMouly,MarieBernadettePautet1GSM数字移动通信系统[M].骆健霞,顾龙信,徐云霄译。北京:电子工业出版社,1996[4]张毅刚,乔立岩.虚拟仪器软件开发环境LabWindowsöCVI610编程指南[M]。北京:机械工业出版社,2002[5]刘国权.GSM手机的测试[J]。中国无线电管理,2003[6]俞定玖,刘湘慧。GSM数字蜂窝移动交换系统测试[J]。电信科学,2000[7]张明。VerilogHDL实用教程[M].成都:电子科技大学出版社,1999[8]HydeDC.BucknellHandbookonVerilogHDL1ComputerScienceDepartment,BucknellUniversityLewisburg,1995[9]康华光.电子技术基础(数字部分)[M].北京:高等教育出版社,1988虚拟仪器课程设计——基于LabVIEW的交通灯设计专业:姓名:学号:一、课题研究背景和意义近年来,在快速城市化进程和经济发展的影响下,机动车辆已成为普遍的代步工具,交通负荷越来越重,交通问题成为困扰许多大城市发展的通病,已成为日趋严峻的国际性问题.其中,十字路口则是造成交通堵塞的主要"瓶颈”.交通信号灯成为了维护交通秩序的必备工具。交通信号灯的使用有效减小了交通拥堵维护交通顺畅.
此次课设的题目的是设计交通信号灯。在设计的过程中了解了交通灯的显示规则,增强了加强交通安全的意识,其次运用已学知识设计信号灯便于更好的掌握labview软件的使用,培养综合应用所学知识来指导实践的能力。二、程序设计思路通过采用基于虚拟仪器的交通灯系统设计,自动控制十字路口四组红、黄、绿交通灯和四组人行道暗、绿状态的转变,指挥着行人和车辆的安全运行,实现十字路口的自动指挥和改善交通管理.绿灯亮时,允许车辆和行人通行。红灯亮时,禁止车辆和行人通行,为交通安全提供保障。同时会有时间的显示。程序采用条件结构,做五个分支,分别对应五种运行模式:正常运行:在正常运行模式中,再用时钟信号做选择条件做四个分支,实现交通信号的循环变换,控制逻辑顺序如下:(1)南北红和东西绿(30秒);(2)南北红和东西黄(05秒);(3)南北绿和东西红(30秒);(4)南北绿和东西黄(05秒);东西禁行:东西方向亮红灯禁止通行,南北方向亮绿灯允许通行.南北禁行:东西方向亮绿灯允许通行,南北方向亮红灯禁止通行。两向禁行:东西南北方向全亮红灯禁止通行。检修:把信号灯全部熄灭.在各运行模式中,每个条件结构里的程序基本相同:用需要点亮的灯与布尔真常量连接,不需要点亮的与布尔假常量连接,而两方向灯的时间显示器则用一定的值减去输入的时间量,以实现倒计时的功能。2.1前面板的设计本设计中前面板需要用20盏灯、4个时间显示器、1个菜单下拉列表、1个停止按键即可。其中十字路口的12盏灯,红、黄、各4盏,绿灯12盏,在控件选板中选择指示灯,将它放在前面板合适的位置,单击鼠标右键,更改指示灯的属性,改变指示灯的大小和颜色,做出一个合适的指示灯.道理指示灯三个分为一组,每组都包含红黄绿三种颜色的灯,再用框将每组灯框起来,做成一个交通灯。在每组交通灯合适的位置放置一个数值显示控件作为交通灯的计时器,同样的方法另做人行道的8盏绿灯灯.并在前面板合适的位置放置一个控制窗口,用于选择交通灯的运行模式及控制其开始与停止,然后设置窗口大小。这样交通灯系统的前面板就做好了.交通灯前面板设计如下面图1所示。图1交通灯前面板示意图图1交通灯前面板示意图2.2单位时间信号的产生时钟信号用毫秒计时器产生。毫秒计时器计时十毫秒,10毫秒记反馈节点加一,要产生一个一秒为单位的时间信号,所以还得用计数值除以100,取商得到以秒为单位的时间信号。图2单位时间信号2.3时间信号的分段将所得的时间信号除以每个循环所用的时间70s,取其余数,得到的余数x的范围为0〈=x<70。当运行模式选择为正常运行时,执行条件结构里为序号0的程序。当0<=x<30时,条件成立,执行程序框图中第一个条件结构里面的程序,东西通行。当30〈=x〈35时,条件成立,执行框图中第二个条件结构里的程序,东西亮黄灯.当35〈=x<65时,条件成立执行框图中第三个条件结构里的程序,南北通行。当65<=x<70时,条件满足,执行框图中第四个条件结构里的程序,南北亮黄灯.时间分段的程序框图如下图所示.图3条件为真的各时间分段程序这里用到了判定范围并强制转换控件,应用这个控件可以判定输入的数是否在上限和下限之间.它的图标和作用如下图4所示。如果输出信号在范围之内,“?"接口会有一个信号,该信号恰可以输入到条件结构中作为该分支选择器信号.图4图4规定范围并强制转换控件2。4程序中所用的结构2.4.1循环结构LabVIEW中的循环结构主要通过while和for循环实现.这两种循环结构、语句、功能基本相同,但使用上会有些不同。for循环须先进行循环次数的确定,循环一定次数后自动不进行循环;而while循环则不用确定循环次数,只需要确定退出循环的条件.本次课程设计中不能预先确定循环的次数,所以就用到了while循环。while循环是LabVIEW最基本的结构之一,和C语言中的while循环和do…while循环相类似。While循环可以从程序框图中的【结构】子选板中创建,while循环包括两个端口:1、条件端口2、重复端口,如下图5所示。本次课程设计中用停止按钮连接条件端口,当按下按钮时循环停止。重复端口i为当前循环的次数重复端口i为当前循环的次数重复端口图5whlie循环结构条件端口条件端口输入的是布尔变量,它用于判断循环在什么条件下停止执行。当每次循环结束时,便会检测输入端接收到的布尔值并判断是否继续执行循环。右击端口,选择【真(T)时停止】或【真(T)时继续】,可以切换其使用状态。2.4.2条件结构条件结构也是LabVIEW最基本的结构之一,类似于基于文本编程语言的switch语句或者if…then…else语句。条件结构可以从【结构】子选板中创建,条件结构包含选择端口和选择标签控制端口,如下图6所示.图6条件结构在条件结构中,选择端口相当于switch语句中的“表达式”,框图表示符相当于“表达式n"。编程过程中,将外部控制条件连接到选择端口上,程序运行的时候其端口会判断送来的控制条件,指引选择结构去执行相应框架里的内容。在本程序中的控制条件为运行模式序号及从规定范围并强制转换的“范围内?”端口输出的判断值。选择端口的外部控制条件的数据有整型、字符串型、布尔型和枚举型。其接线可任意放在框图左边的某一位置。如果其数据为布尔型,那么这个结构包含真和假两个分支,这是该软件所默认的选择框架类型。若为其它类型则可以随意使用分支的个数。要注意的是,在使用条件结构的时候,控制条件的数据类型要和选择标签中的类型一样,如果不一致的话,LabVIEW显示出现错误,与此同时选择器中的字体的颜色也会变为红色.本次课程设计中,当各组条件为真时,将执行其框图的程序。每个条件结构里的程序基本相同。用需要点亮的灯与布尔真常量连接,不需要点亮的与布尔假常量连接,而两方向灯的时间显示器则用一定的值减去输入的时间量,以实现倒计时的功能,各结构里的程序略有不同。三、各种运行模式的程序正常运行模式的程序程序用时钟信号做选择条件做四个分支,从左到右依次执行四个条件结构,实现交通信号的循环变换,正常运行模式的程序如下:各段时间信号程序:第一阶段:余数在0~30s之间,条件结构1条件满足,十字路口南北红灯和东西绿灯点亮,人行道南北方方绿灯亮.东西灯时间显示为离绿灯熄灭的时间(从30s到1s),北灯时间显示为离红灯熄灭的时间(从35s到6s)。程序框图如图所示第二阶段:余数在30~35间,条件结构2件满足,十字路口南北红灯和东西黄灯点亮,人行道南北方绿灯亮。东灯时间显示为离黄灯熄灭的时间(从5s到1s),北灯时间继续显示为离红灯熄灭的时间(从5s到1s)。程序框图如右所示第三阶段:余数在35~65s时,条件结构4的条件满足,十字路口南北绿灯和东西红灯点亮,人行道东西方绿灯亮。东西灯时间显示为离红灯熄灭的时间(从35s到6s),南北灯时间显示为离绿灯熄灭的时间(从30s到1s)。程序框图如右所示第四阶段:余数在65~70s之间,条件结构4条件满足,十字路口南北黄灯和东西红灯点亮,人行道东西方绿灯亮.东灯时间显示为离红灯熄灭的时间(从5s到1s),北灯时间显示为离黄灯熄灭的时间(从5s到1s)。程序框图如右所示东西禁行模式的程序用东西红灯及南北绿灯与布尔真常量连接,人行道南北方向绿灯与布尔真常量连接,其余灯的与布尔假常量连接,而两方向灯的时间显示器则输入零值。东西禁行模式的程序:南北禁行模式的程序用东西绿灯及南北红灯与布尔真常量连接,人行道东西方向绿灯与布尔真常量连接,其余灯的与布尔假常量连接,而两方向灯的时间显示器则输入零值南北禁行模式的程序:两向禁行模式的程序用东西南北的红灯与布尔真常量连接,人行道东西南北方向绿灯与布尔真常量连接,其余灯的与布尔假常量连接,而两方向灯的时间显示器则输入零值。两向禁行模式的程序:检修模式的程序全部的灯与布尔假常量连接,而两方向灯的时间显示器则输入零值。检修模式的程序:四、交通灯设计调试结果本次所设计的交通灯有五种运行模式:正常运行、东西禁行、南北禁行、两向禁行、检修。调试结果如下所示:正常运行:东西禁行:南北禁行:两向禁行:检修:数字系统课程设计基于FPGA的交通控制灯设计姓名:学号:班级:摘要随着社会的发展,城市规模的不断扩大,城市交通成为制约城市发展的一大因素.人口和汽车日益增长,市区交通也日益拥挤,人们的安全问题当然也日益重要。因此,红绿交通信号灯成为交管部门管理交通的重要工具之一。有了交通灯,人们的安全出行也有了很大的保障.自从交通灯诞生以来,其内部的电路控制系统就不断的被改进,设计方法也开始多种多样,从而使交通灯显得更加智能化。尤其是近几年来,随着电子与计算机技术的飞速发展,电子电路分析和设计方法有了很大的改进,电子设计自动化也已经成为现代电子系统中不可或缺的工具和手段,这些都为交通灯控制系统的设计提供了一定的技术基础。本课程设计运用erilogHDL语言描述交通控制器,通过状态机计数法,实现设计所要求的交通灯控制及时间显示,并最后进行了软件实现,达到了系统要求的功能。设计原理1。1设计要求设计一个交通控制器,用LED显示灯表示交通状态,并以7段数码显示器显示当前状态剩余秒数主干道绿灯亮时,支干道红灯亮;反之亦然,二者交替允许通行,主干道每次放行35s,支干道每次放行25s。每次由绿灯变为红灯的过程中,亮光的黄灯作为过渡,黄灯的时间为5s.能进行特殊状态显示,特殊状态时东西、南北路口均显示红灯状态。用LED灯显示倒计时,并且能实现总体清零功能,计数器由初始状态开始计数,对应状态的显示灯亮.能实现特殊状态的功能显示,1.2设计思路和原理本次设计是针对十字路口,进行南北和东西直行情况下交通灯控制。设定东西方向为主干道方向,根据交通灯的亮的规则,在初始状态下四个方向的都为红灯亮启,进入正常工作状态后,当主干道上绿灯亮时,支干道上红灯亮,持续35S后,主干道和支干道上的黄灯都亮启,持续5S后,主干道上红灯亮启,支干道上绿灯亮启持续25S,之后主干道和支干道上的黄灯都亮启5s,一个循环完成。循环往复的直行这个过程.其过程如下图所示:图1.交通灯点亮时间控制说明1。3实现方法本次采用文本编辑法,即利用VerilogHDL语言描述交通控制器,通过状态机计数法,实现设计所要求的交通灯控制及时间显示。设计中用两组红黄绿LED模拟两个方向上的交通灯,用4个7段数码管分别显示两个方向上的交通灯剩余时间,控制时钟由试验箱上频率信号提供。VerilogHDL程序设计2。1整体设计根据上章设计原理,交通灯控制的关键是各个状态之间的转换和进行适当的时间延时,根据状态机的设计规范,本次设计了三个状态之间的循环转化,其真值表及状态转化图如下所示:图2.交通灯控制状态转化说明:该状态图为交通灯在正常情况下的状态转化图,进入控制后,状态00时主干道绿灯及支干道红灯亮起,进入状态01后两路黄灯亮起,状态11时主干道红灯及支干道绿灯亮起。进入10状态两路黄灯亮起。结束一个循环,从00状态重新开始循环.为实现控制与显示的功能,需要设计交通灯点亮顺序控制程序,倒数计时程序,七段数码管显示程序,数码管显示扫描程序,其系统结构图如下所示:图3.交通灯控制系统结构图其中rst为复位信号,clk为时钟信号,hold为特殊情况控制信号,输入hold时两个方向红灯无条件亮起。2.2具体设计根据整体设计要求,编写各个功能部分VerilogHDL程序,设置各输入输出变量说明如下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:数码管扫描信号。输入输出及中间变量设置如下:moduletraffic(en,clk,qclk,rst,rst1,hold,num1,num2,light1,light2,counter,st1,st2);inputen,clk,qclk,rst,hold,rst1;outputst1,st2;output[7:0]num1,num2;output[6:0]counter;output[2:0]light1,light2;regtim1,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;二极管点亮控制该部分程序的作用是根据计数器的计数值控制发光二极管的亮、灭,以及输出倒计时数值给七段数码管的译码电路。此外,当检测到特殊情况(hold=‘1’)发生时,无条件点亮红灯的二极管,当检测到复位信号,两个方向计数与控制回复到00状态。因为主、支干道两个方向二极管点亮的顺序与延迟时间不同,顾编写两个独立的部分来控制,具体程序如下:1)主干道方向always@(posedgeclk)beginif(rst)//复位与特殊情况控制beginlight1〈=3’b001;num1〈=green1;endelseif(hold)beginlight1<=3'b100;num1<=green1;endelseif(en)begin//使能有效开始控制计数if(!tim1)//begin//主干道交通灯点亮控制tim1〈=1;case(state1)2'b00:beginnum1<=green1;light1〈=3’b001;state1<=2’b01;end2'b01:beginnum1〈=yellow1;light1<=3'b010;state1〈=2’b11;end2'b11:beginnum1〈=red1;light1〈=3'b100;state1<=2'b10;end2’b10:beginnum1<=yellow1;light1〈=3'b010;state1〈=2'b00;enddefault:light1<=3’b100;endcaseend2)支干道方向always@(posedgeclk)beginif(rst)//复位与特殊情况控制beginlight2〈=3'b100;num2<=red2;endelseif(hold)beginlight2<=3'b100;num2<=red2;endelseif(en)beginif(!tim2)begintim2〈=1;case(state1)2'b00:beginnum2〈=red2;light2〈=3’b100;state2〈=2'b01;end2’b01:beginnum2<=yellow1;light2〈=3'b010;state2〈=2’b11;end2'b11:beginnum2〈=green2;light2<=3'b001;state2〈=2'b10;end2'b10:beginnum2<=yellow2;light2〈=3'b010;state2〈=2’b00;enddefault:light2<=3'b100;endcaseend倒数计时该部分程序完成二极管发光时延的计数,并将计数结果送到数码管显示电路,每切换到一个状态,计数器的初值都被重置,以实现不同颜色二极管不同的时延要求。本次设计直接用逻辑运算完成2位十进制数的计数,未采用分位器的设计。因为主、支干道上计数器的结构完全相同,顾只列出一路的程序,其具体程序如下所示:always@(posedgeclk)beginelsebegin//倒数计时if(num1>0)if(num1[3:0]==0)beginnum1[3:0]<=4'b1001;num1[7:4]<=num1[7:4]-1;endelsenum1[3:0]<=num1[3:0]-1;if(num1==1)tim1<=0;endendelsebeginlight1<=3’b010;num1=2'b00;tim1〈=0;endend数码管的译码及扫描显示该段程序主要完成4个7段数码管的译码显示及扫描,使系统能正常显示主、支干道两个方向上的剩余时间。译码的时钟频率要低,为Hz级。扫描的时钟频率要高,最低不得小于人眼分辨频率50Hz,具体程序如下所示:always@(posedgeqclk)begin//数码管扫描if(rst1)beginst1=0;st2=0;endelsebegincase({st2,st1})2'b00:beginnum<=num1[3:0];{st2,st1}〈=2'b01;end2'b01:beginnum<=num1[7:4];{st2,st1}<=2'b10;end2’b10:beginnum<=num2[3:0];{st2,st1}〈=2’b11;end2'b11:beginnum<=num2[7:4];{st2,st1}〈=2'b00;endendcaseendendalways@(posedgeqclk)begin//数码管译码显示case(num)4'b0000:counter〈=7’b0111111;//04'b0001:counter〈=7'b0000110;//14'b0010:counter<=7’b1011011;//24’b0011:counter<=7'b1001111;//34'b0100:counter〈=7’b1100110;//44'b0101:counter〈=7'b1101101;//54’b0110:counter<=7'b1111101;//64’b0111:counter<=7'b0000111;//74'b1000:counter<=7'b1111111;//84'b1001:counter<=7’b1101111;//9default:counter〈=7'b0111111;//0endcaseendendmodule总体程序见程序清单所示仿真与硬件调试3.1波形仿真在QuartursⅡ软件下创建工程,新建编辑设计文件,将程序输入,整体编译后,新建波形仿真文件。设置仿真时间,时钟周期,输入输出端口,进行波形仿真。具体仿真波形图及说明如下所示:仿真截止时间:100us;时钟:clk1us,qclk0.1us1.正常工作时波形仿真图图4.正常工作时波形仿真图图形说明波形仿真主要完成了控制与计数以及数码管显示的波形图.en为低电品时,计数器置初值,高电平时开始正常控制与计数。控制发光二极管首次输出为“light1=001,light2=100",表示主干道路绿灯亮,支杆道路红灯亮,计数器num1和num2从“00110101"开始递减计数,计数至“00000000"时,进入下一个状态,控制输出量为light=010,light2=010,表示主、支干道黄灯均亮起,计数器num1和num2从“00000101"开始计数递减,计数至”00000000"时进入下一个状态,light=100,light2=001,表示主干道路红灯亮,支杆道路绿灯亮.Counter根据num1,num2变化随时钟上升沿输出译码后的数据.由于屏幕显示大小有限,未仿真出一个完整周期.2.特殊情况仿真波形图5.特殊情况仿真波形图形说明当hold输入高电平时,在时钟上升沿的控制下,light1与light2被强制置位为”100”,表示两路红灯均亮起3.复位情况仿真波形图6.复位情况仿真波形图形说明当rst输入高电平时,在时钟上升沿控制下,计数与控制都回到00状态,即light1=001,light2=100,计数器num1和num2从“00110101”开始递减计数。3。2硬件调试完成时序仿真确认无误后,进行实验箱管脚设置,注意设置完成后一定要再进行一次全局仿真,使程序真正对应于硬件输出输出。具体连接说明如下所示输入变量:rst、clk、qclk、hold、en其中en,hold,rst接”0-1”拨码开关,以稳定的输出可变化的电平。计数时钟clk接实验箱上1Hz时钟,扫描显示时钟qclk接125Khz时钟。输出变量:light1[2:0]、light2[2:0]、counter[6:0]、st1、st2其中light1[0]、light2[0]分别接绿色的发光二极管;light1[1]、light2[1]分别接黄色的发光二极管;light1[2]、light2[2]分别接红色的发光二极管.counter[0]~counter[6],分别接七段数码管的a~f,st1、st2分别接试验箱上”4-16”译码器的低两位。完成接线后将程序烧写到芯片上,开始功能调试.分辨改变使能信号,复位信号以及特殊情况信号,观察数码管以及发光二级管情况。程序清单moduletraffic(en,clk,qclk,rst,rst1,hold,num1,num2,light1,light2,counter,st1,st2);inputen,clk,qclk,rst,hold,rst1;outputst1,st2;output[7:0]num1,num2;output[6:0]counter;output[2:0]light1,light2;regtim1,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;always@(en)if(!en)begin//设置计数初值green1〈=8'b00110101;red1<=8’b00100101;yellow1〈=8’b00000101;green2〈=8’b00100101;red2〈=8'b00110101;yellow2<=8'b00000101;endalways@(posedgeclk)beginif(rst)//复位与特殊情况控制beginlight1〈=3’b001;num1<=green1;endelseif(hold)beginlight1<=3'b100;num1〈=green1;endelseif(en)begin//使能有效开始控制计数if(!tim1)//开始控制begin//主干道交通灯点亮控制tim1<=1;case(state1)2'b00:beginnum1〈=green1;light1<=3’b001;state1〈=2'b01;end2'b01:beginnum1〈=yellow1;light1〈=3’b010;state1〈=2'b11;end2'b11:beginnum1<=red1;light1<=3’b100;state1〈=2’b10;end2'b10:beginnum1<=yellow1;light1〈=3’b010;state1<=2'b00;enddefault:light1〈=3’b100;endcaseendelsebegin//倒数计时if(num1>0)if(num1[3:0]==0)beginnum1[3:0]<=4'b1001;num1[7:4]<=num1[7:4]—1;endelsenum1[3:0]〈=num1[3:0]-1;if(num1==1)tim1<=0;endendelsebeginlight1〈=3'b010;num1=2'b00;tim1<=0;endendalways@(posedgeclk)beginif(rst)//复位与特殊情况控制beginlight2〈
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《大学生联谊晚会》课件
- 药物筛选与开发-洞察分析
- 细节处理在自动驾驶中的应用-洞察分析
- 虚拟现实地理信息平台构建-洞察分析
- 《服务器管理技术》课件
- 无人驾驶技术在特殊用途车辆中的应用-洞察分析
- 月球岩石地球化学研究-洞察分析
- 元宇宙社交互动模式-洞察分析
- 替卡西林药效学研究-洞察分析
- 异常检测的深度学习模型优化-洞察分析
- 微机原理与应用智慧树知到期末考试答案章节答案2024年山东大学
- 面神经炎课件完整版
- 常用吊具索具报废标准2018
- 中国合唱歌曲精选100首
- 古希腊历史简介
- 不动产登记中心-档案部门-档案工作-汇报-数字化81页PPT课件
- (高清正版)JJF(浙)1181-2021建筑门窗保温性能检测装置校准规范
- 卫生间厨房间常见质量问题及防治措施
- 旅游高峰及节假日期间、灾情等特殊时期保洁的具体保证措施
- 幼儿园生成课程与预成课程
- 时间序列分析论文
评论
0/150
提交评论