verilog语言设计一个交通灯信号控制电路

合集下载

交通信号灯控制器的verilog实现

交通信号灯控制器的verilog实现

H a r b i n I n s t i t u t e o f T e c h n o l o g yV e r i l o g实验报告(2)实验内容:交通信号灯控制器班级:姓名:学号:哈尔滨工业大学2015年6月一、功能描述本设计利用Verilog HDL 语言,对一个十字路口的交通信号灯进行控制,可控制4个路口的红、黄、绿、左转四盏信号灯,让其按特定的规律进行变化。

并通过ModelSim软件对系统进行了仿真。

仿真结果表明系统可自动实现十字路口红绿灯及左转弯信号灯的控制。

实现设计目标如下:(1)设计一个十字路口的交通灯控制电路,每条路配有红、黄、绿、左转四盏交通信号灯。

通过控制器对四个路口的四组交通灯的状态实现自动循环控制;(2)实现两主干道车辆交替运行,每次通行直行时间为30 秒;左转时间为10秒,右转不受信号灯控制。

(3)黄灯作为绿灯转为左转灯,左转灯转为红灯的过渡信号灯,过渡时间为5s。

(4)系统设有总复位开关,可在任意时间对系统进行复位。

二、设计方案1.设计思路我们对图1所示的十字路口进行设计,路口A和路口C的车辆同时行驶,路口B和路口D的车辆同时行驶,所以虽然要控制4组信号灯,但其实它们可以俩俩合并,这样大大简化了设计。

由于我们采用自动控制方式,两个方向的灯按照顺序依次交替循环显示,每种灯亮的时间结合实际生活合理设定。

系统设有复位开关,可在任意时间内对系统进行复位。

图1 十字路口示意图由以上分析可知,该系统可视为一个状态机,而且共有8种状态,如表1所示。

表1 交通灯状态示意表由上表我们还可以得到状态转换图,如图2所示:图2 状态转移示意图该状态机共有两个输入信号rstn和clk,rstn为复位信号,当该信号为低电平时,状态机处于S0,且状态不发生改变。

当rstn为高电平时,这8个状态依次按时间顺序发生变化,每个状态保持多长时间由clk信号控制。

三、关键代码1.我们通过宏定义来设置每个状态保持的时间,这样既增强了代码的可读性,又方便以后的更改。

基于verilog的交通灯设计(状态机)

基于verilog的交通灯设计(状态机)

实验课题:基于verilog的交通灯设计(状态机)一、Verilog程序(主程序+激励)1)主程序/*顶层模块*/module traffic_light(clk,rst,out);input clk,rst;output [5:0]out;wire [4:0] x;delay D(.clk(clk),.rst(rst),.cnt(x));state S(.in(x),.rst(rst),.clk(clk),.out(out));endmodule/*延时模块*/module delay(clk,rst,cnt);input clk,rst;output[4:0]cnt;reg[4:0]cnt;always@(posedge clk)beginif(!rst)cnt<=0;else if(cnt<29)cnt<=cnt+1;else cnt<=0;endendmodule/*状态机模块*/module state(clk,in,rst,out);input clk,rst;input[4:0]in;output [5:0]out;reg [5:0]out;reg[3:0]state;parameter r1_g2or1_2_y=6'b100010,r1_y2og1_r2=6'b001100,g1_r2oy1_r2=6'b010100, y1_r2or1_g2=6'b100001,A='b0001,B='b0010,C='b0100,D='b1000;always@(posedge clk)beginif(!rst)beginstate<=A;out<= y1_r2or1_g2;endelsebegincase(state)A: beginif(in<25)state<=A;elsebeginstate<=B;out<=r1_g2or1_2_y;endendB: beginif(in>24)state<=B;elsebeginstate<=C;out<=r1_y2og1_r2;endendC: beginif(in<25)state<=C;elsebeginstate<=D;out<=g1_r2oy1_r2;endendD: beginif(in>24)state<=D;elsebeginstate<=A;out<=y1_r2or1_g2;endendendcaseendendendmodule2)激励module test;reg clk,rst;wire [5:0]out;traffic_light test(clk,rst,out);initialbeginclk='b1;forever #5 clk=~clk;endinitialbeginrst='b0;#10 rst='b1;#500 rst='b0;#10 rst='b1;endendmodule二、实验波形图截图三、波形分析输出out[5:0]分别对应:out[5]:主干道红灯out[4]:主干道黄灯out[3]:主干道绿灯out[2]:支干道红灯out[1]:支干道黄灯out[0]:支干道绿灯初始状态为:主干道红灯亮,支干道绿灯亮。

用verilog语言编写交通灯程序

用verilog语言编写交通灯程序

交通灯一、实验目的写一个交通灯,要求:①有东西南北四个方向,两组交通灯轮流交替变换,其中,红灯时间为30个时间单位,绿灯时间为25个时间单位,黄灯时间为5个时间单位。

最后用modelsim软件进行仿真。

②要求设计是一个可综合设计。

二、实验原理根据实验要求的逻辑功能描述,可以分析得出原理图如下:控制器即可以设计为一个有限状态机的形式:E-W方向S-N方向状态R Y G R Y G100100IDLE100001S1100010S2001100S3010100S4根据实验要求画出控制器的状态转移图如下:三、代码1、源代码(1)控制器模块module traffic_lights(clk,rst,count,ew,sn);input clk,rst;input[5:0] count;output[2:0] ew,sn;reg[2:0] ew,sn;reg[3:0] state;parameter Idle=3'b000,s1=3'b001,s2=3'b010,s3=3'b011,s4=3'b100; always @(posedge clk)if(!rst)beginstate<=Idle;endelsecasex(state)Idle: if(rst)beginstate<=s1;ends1: if(count=='d25)beginstate<=s2;ends2: if(count=='d30)beginstate<=s3;ends3: if(count=='d55)beginstate<=s4;ends4: if(count=='d60)beginstate<=s1;endendcasealways @(posedge clk)beginif(!rst)beginew<=3'b100;sn<=3'b100;endelsecasex(state)Idle: if(rst)beginew<=3'b100;sn<=3'b001;ends1: if(count=='d25)beginew<=3'b100;sn<=3'b010;ends2: if(count=='d30)beginew<=3'b001;sn<=3'b100;ends3: if(count=='d55)beginew<=3'b010;sn<=3'b100;ends4: if(count=='d60)beginew<=3'b100;sn<=3'b001;enddefault: state<=Idle;endcaseendendmodule(2)计数器模块module counter(en,clk,rst,out);output[5:0]out;input en,clk,rst;reg[5:0] out;always@(posedge clk or negedge rst)beginif(!rst)out<='d0;else if(!en&&out<'d60)out<=out+1;elseout<='d1;endendmodule(3)将控制器与计数器进行连接module traffic_lights_top(out,clk,rst,en,ew,sn); input clk,rst,en;output[2:0] ew,sn;output[5:0]out;wire[5:0] out;traffic_lights u1(.clk(clk),.rst(rst),.count(out),.ew(ew),.sn(sn));counter u2(.en(en),.clk(clk),.rst(rst),.out(out));endmodule2、激励`timescale 1ns/100ps module traffic_lights_tb;reg clk,rst,en;wire[2:0] ew,sn;wire[5:0]out;traffic_lights_top m(.clk(clk),.rst(rst),.en(en),.ew(ew),.sn(sn),.out(out));always#5 clk=~clk;initialen<=1;initialbeginclk<=1;en<=0;rst<=0;#5 rst<=1;endendmodule四、仿真波形(图一)(图二)五、波形说明波形图中,从上至下依次为:时钟信号clk、复位信号rst、计数器使能端en、东西方向上灯的状态ew、南北方向上灯的状态sn、计数器的输出out。

verilog课程设计—交通灯

verilog课程设计—交通灯

CPLD课程设计基于FPGA 的交通灯控制器的设计姓名:学号:专业:基于FPGA 的交通灯控制器的设计摘要:现代城市在日常运行控制中,越来越多的使用红绿灯对交通进行指挥和管理。

而一套完整的交通灯控制系统通常要实现自动控制和手动控制去实现其红绿灯的转换。

基于FPGA 设计的交通灯控制系统电路简单、可靠性好。

本设计利用Verilog HDL 语言、采用层次化混合输入方式,可控制4个路口的红、黄、绿、左转四盏信号灯,让其按特定的规律进行变化。

在QUARTUSⅡ下对系统进行了综合与仿真。

仿真结果说明系统可实现十字路口红绿灯及左转弯控制和倒计时显示,并能够自动控制交通灯转变。

关键词:FPGA ;交通灯自动控制;Verilog HDL;Quartus Ⅱ1.交通信号控制器设计要求与思路设计要求在交通灯系统中〔图1〕,路口1、2、3、4均需要红、黄、绿、左转四盏灯(用RYGL分别表示) ,并且每个路口都需要一个倒数的计时器,假设绿灯每次维持的时间是40 s ,黄灯为5 s ,左转灯10s,红灯60s,黄灯亮时以一定的频率闪动。

交通灯系统大多是自动控制来指挥交通的,但有时需要由交警手动控制红绿灯,所以要求设计的该交通信号系统需要具有该功能。

图1 交通灯系统示意图设计思路为了便于讨论,我们只讨论路口1〔用A表示〕和路口4〔用B表示〕。

此交通灯控制系统一共设计有5种工作模式。

分别为:方式1 :A 向绿灯长亮,B 向红灯亮。

方式2 :A 向左转灯长亮,B 向红灯亮。

方式3 :B 向绿灯长亮,A 向红灯亮。

方式4 :B 向左转灯长亮,A 向红灯亮。

方式5 :自开工作方式,两个方向的灯按照显示的顺序,交替循环显示。

系统设有总复位开关,可在任意时间内对系统进行复位。

利用M2M1M0对系统工作的状态进行控制〔见表1〕。

A路口和B路口均需要红黄绿加左转四盏灯。

所以输出显示可以用8个LED灯代替。

又因为最大显示时间为60s,故用两个数码管即可承当显示一个倒数计时器的任务。

基于某某Verilog交通灯仿真系统设计及仿真

基于某某Verilog交通灯仿真系统设计及仿真

鉴于 Verilog交通灯仿真系统设计与仿真姓名:班级: 1501011学号 :鉴于 Verilog交通灯的设计与实现一、选题意义1.1 背景介绍交通讯号灯是现代交通系统中必不行少的元素,用Verilog语言对交通讯号灯进行模拟,设计一个交通灯信号控制电路。

详细要求为:输入为50MHz的时钟和复位信号,输出为红、绿、黄三个信号〔高电平为亮〕。

复位信号〔高电平〕有效,红、绿、黄灯灭;接着进行以下循环:绿灯亮 1 分钟,黄灯闪耀10 秒,红灯亮 1 分钟。

在此根基上再加两个数码管,对倒计时的数显示。

1.2 研究价值经过交通灯的设计与仿真综合,领会复杂时序的实现方法,学会用框图表示程序的设计思想,掌握中小规模集成电路的系统综合设计方法。

二、系统设计设计思路概括:考虑一个红绿黄交通灯及倒计时显示器设计第一复位平置 1 ,全部的交通灯平低,即。

第一灯亮60s ,而后黄灯10s ;灯再接着亮 60s; 尔后灯亮 60s ,黄灯 10s ,灯亮 60s ⋯⋯以此循,直至复位平置 1 ,全部交通灯。

三、模块设计与仿真模〔 module lights〕:模例化,控制模和模行例化控制模:交通灯色和倒○1分〔 frequencies 〕:将 50MHZ的率分红我所需要的1HZ ;○2色化:状循及倒,状用 light_status, 假如状 light_status0 ,灯亮,〔 60s 〕灯亮的量 light_long ,而且把示灯亮的量 light_select 100〔高平表示亮〕,最后把状志位 light_status1 ,控制倒。

交通灯亮灭状况:light_out交通灯亮灭状况001红灯亮010黄灯亮100绿灯亮○3倒计时:灯亮或闪耀时间〔绿、黄、红分别为60s 、10s 、60s 〕用 BCD 码表示〔分别为60h 、10h 、60h 〕 ,倒计时的时候个位和十位分别是高四位和低四位,第一是低四位倒数,当倒数到0 时,从头赋值为 9,且高四位减 1 ,这样循环,直到这个数减到0 ,灯亮的时间到,接着进行下一个状态,在时间减到0的时候,给使能端enable赋值0;高四位和低四位分别显示十位和个位。

verilog课程设计-交通灯

verilog课程设计-交通灯

课程论文论文题目基于DE2的交通灯设计完成时间课程名称 Verilog语言设计任课老师专业年级1.交通信号控制器设计要求与思路1.1设计背景FPGA是一种用户根据各自需要而自行构造逻辑功能的数字集成电路,其种类很多,内部结构也不同,但共同的特点是体积小、使用方便。

本文介绍了用VerilogHDL语言设计交通灯控制器的方法,并在QuartusII系统对FPGA芯片进行编译下载,由于生成的是集成化的数字电路,没有传统设计中的接线问题,所以故障率低、可靠性高,而且体积非常小。

本文通过EDA设计,利用VerilogHDL语言模拟仿真交通灯控制电路。

1.2设计要求根据交通灯控制器要实现的功能,考虑用两个并行执行的always语句来分别控制A方向和B方向的3盏灯。

这两个always语句使用同一个时钟信号,以进行同步,也就是说,两个进程的敏感信号是同一个。

每个always语句控制一个方向的3种灯按如下顺序点亮,并往复循环:绿灯----黄灯----红灯,每种灯亮的时间采用一个减法计数器进行计数,计数器用同步预置数法设计,这样只需改变预置数据,就能改变计数器的模,因此每个方向只要一个计数器进行预置数就可以。

为便于显示灯亮的时间,计数器的输出均采用BCD码,显示由4个数码管来完成,A方向和B方向各用两个数码管。

设定A方向红灯、黄灯、绿灯亮的时间分别为:35s、5s、35s,B方向的红灯、黄灯、绿灯亮的时间分别为:35s、5s、35s。

假如要改变这些时间,只需要改变计数器的预置数即可。

1.3设计思路两个方向各种灯亮的时间能够进行设置和修改,此外,假设B方向是主干道,车流量大,因此B方向通行的时间应该比A方向长。

交通灯控制器的状态转换表见下表。

表中,1表示灯亮,0表示灯不亮。

A方向和B方向的红黄绿分别用R1、Y1、G1、R2、Y2、G2来表示。

交通灯控制器状态转换表从状态表中可以看出,每个方向3盏灯依次按如下顺序点亮,并不断循环:绿灯----黄灯----红灯,并且每个方向红灯亮的时间应该与另一个方向绿灯、黄灯亮的时间相等。

基于VerilogHDL的交通灯控制器设计

基于VerilogHDL的交通灯控制器设计

目录第一章设计原理 (1)1.1设计要求 (1)1.2设计思路和原理 (1)1.3实现方法 (1)第二章Verilog 程序设计 (2)2.1整体设计 (2)2.2 具体设计 (3)第三章仿真 (7)3.1 波形仿真 (7)第四章设计总结 (9)4.1 总结 (9)4.2参考资料 (9)程序清单 (10)交通灯控制器设计第一章 设计原理1.1设计要求设计一个交通控制器,用LED 显示灯表示交通状态,并以7段数码显示器显示当前状态剩余秒数 主干道绿灯亮时,支干道红灯亮;反之亦然,二者交替允许通行,主干道每次放行35s ,支干道每次放行25s 。

每次由绿灯变为红灯的过程中,亮光的黄灯作为过渡,黄灯的时间为5s 。

能进行特殊状态显示,特殊状态时东西、南北路口均显示红灯状态。

用LED 灯显示倒计时,并且能实现总体清零功能,计数器由初始状态开始计数,对应状态的显示灯亮。

1.2设计思路和原理本次设计是针对十字路口,进行南北和东西直行情况下交通灯控制。

设定东西方向为主干道方向,根据交通灯的亮的规则,在初始状态下四个方向的都为红灯亮启,进入正常工作状态后,当主干道上绿灯亮时,支干道上红灯亮,持续35S 后,主干道和支干道上的黄灯都亮启,持续5S 后,主干道上红灯亮启,支干道上绿灯亮启持续25S ,之后主干道和支干道上的黄灯都亮启5s ,一个循环完成。

循环往复的直行这个过程。

其过程如下图所示:0s30s25s主干道方向支干道方向图1.交通灯点亮时间控制说明1.3实现方法本次采用文本编辑法,即利用Verilog 语言描述交通控制器,通过状态机计数法,实现设计所要求的交通灯控制及时间显示。

设计中用两组红黄绿LED 模拟两个方向上的交通灯,用4个7段数码管分别显示两个方向上的交通灯剩余时间,控制时钟由试验箱上频率信号提供。

第二章 Verilog 程序设计2.1整体设计根据上章设计原理,交通灯控制的关键是各个状态之间的转换和进行适当的时间延时,根据状态机的设计规范,本次设计了三个状态之间的循环转化,其真值表及状态转化图如下所示:状状状状状状状状状状状状00状状10状状11状状01状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状001100010010001010100010图2.交通灯控制状态转化说明:该状态图为交通灯在正常情况下的状态转化图,进入控制后,状态00时主干道绿灯及支干道红灯亮起,进入状态01后两路黄灯亮起,状态11时主干道红灯及支干道绿灯亮起。

毕业设计---基于Verilog的交通灯控制器的设计

毕业设计---基于Verilog的交通灯控制器的设计

课题:交通灯控制器的设计目录1. 设计内容与要求 (2)2. 交通灯控制系统的组成框图 (3)3. 交通灯控制电路的设计 (4)4. 交通灯控制电路设计的难点与解决方法 (5)5. 交通灯控制电路的Verilog语句 (6)5. 交通灯控制电路的程序和波形分析 (12)6. EPF10K10LC84-4芯片引脚分配图 (20)7. 实验小结 (21)一、 设计内容与要求① 设计一个十字路口交通信号灯的定时控制电路。

要求红、绿灯按一定的规律亮和灭,并在亮灯期间进行倒计时,并将运行时间用数码管显示出来。

②绿灯亮时,为该车道允许通行信号,红灯亮时,为该车道禁止通行信号。

要求主干道每次通行时间为99秒,支干道每次通行时间为30秒。

每次变换运行车道前绿灯闪烁,持续时间为5秒。

即车道要由主干道转换为支干道时,主干道在通行时间只剩下5秒钟时,绿灯闪烁显示,支干道仍为红灯,以便主干道上已过停车线的车继续通行,未过停车线的车停止通行。

同理,当车道由支干道转换为主干道时,支干道绿灯闪烁显示5秒钟,主干道仍为红灯。

③ 对红、绿灯的运行时间要能比较方便的进行重新设置。

④ 添加左转灯的控制,可自行到实际十字路口观看规律并实现。

对器件进行在系统编程和实验验证。

⑤用Verilog 语言对设计进行描述,设计一个测试方案,通过Muxplus 对设计进行仿真验证。

并能够下载到实验板上调试成功。

二、交通灯控制系统的组成框图交通信号灯控制原理图绿灯左拐灯红灯绿灯左拐灯红灯交通信号灯控制系统框图三、交通灯控制电路的设计交通灯控制器设计的重点是控制电路的设计,根据设计要求分析,控制电路的算法可用下图所示的ASM图描述。

各状态的详细说明如下:S0状态:主干道绿灯亮,支干道红灯亮,此时若主干道有车等待左拐,而且主干道绿灯已亮足规定的时间间隔Ts;在主干道绿灯亮了(Ts-5)s后,则开始闪亮,直至绿灯亮了Ts;控制器发出状态转换信号Tempm==0,输出从状态S0转换到S1。

基于VerilogHDL的通行时间可变的交通灯控制器

基于VerilogHDL的通行时间可变的交通灯控制器

通行时间可变的交通灯控制器设计module tr1(ng,clk,reset,resets,emergency,lighta,lightb,seg,select); input ng,clk,reset,emergency,resets;output[6:0]seg;//显示用的output[3:0] lighta,lightb;//a是主干道,b是支干道output [3:0] select;//选择那一个管子进行显示reg clk1,clk2;//clk1要5HZ clk2要几千HZreg [3:0] select;reg tim1,tim2;//这是看你的等有没有变过颜色的控制信号reg [1:0] cont;reg[2:0]state1,state2,ste;两个控制颜色变化状态的信号。

reg[3:0]lighta,lightb;//a是主干道,b是支干道reg[3:0]num;//译码器是根据这个东西来译码的reg [35:0] fout;reg[6:0]seg;//显示reg[7:0] numa,numb;reg[7:0] red1,red2,green1,green2,yellow1,yellow2,left1,left2; always @(ng )if(!ng)begin //设置计数初值green1 <=8'b00110000;//30Sred1 <=8'b01010001;//51Syellow1<=8'b00000011;//3Sleft1 <=8'b00010101; //15Sgreen2 <=8'b00110000;//30Sred2 <=8'b01010001;//51Syellow2<=8'b00000011;//3Sleft2 <=8'b00010101; //15Sendalways @ (posedge clk)beginif (fout==36'b111111111111111111111111111111111111)fout<=0;else begin fout<=fout+1;clk1=fout[23];5HZclk2=fout[13];几千HZendendalways @(posedge clk1 )beginif(reset) //复位与特殊情况控制这是主干道的复位beginlighta<=4'b1000;//lighta是主干道的交通灯,lightb是支干道的交通灯,1000是红灯,0100是直行绿灯,0010是黄灯,0001是左转绿灯numa<=red1; //主干道的数码管从红灯开始记state1<=0;//这时候灯变化的控制信号为0endelse if(emergency)//紧急情况beginlighta<=4'b1000;//主干道红了numa<=red1;//计时也从红灯记endelse if(ng)//这下开始正常工作了begin //使能有效开始控制计数if(!tim1) //你有没有变过颜色啊?没有?那开始变颜色吧。

Verilog语言实现设计交通灯控制器

Verilog语言实现设计交通灯控制器

Verilog语言实现设计交通灯控制器实验模块组成:(计数器+控制器)可以分开实现,最好一起实现避免接口对接时出错译码器实验要求:1.在十字路口两个方向各设一组红、绿、黄灯,显示顺序为:南北方向是绿、黄、红灯;东西方向是红、绿、黄灯。

2.要求红、绿、黄灯的持续时间分别为:10s、7s、3s,东西、南北方向各用一个数码管显示倒计时时间。

3.当任意方向出现特殊情况时,应优先放行,即使各方向均亮红灯,倒计时停止,且显示数字闪烁。

经过规定时间之后,恢复正常运行状态。

//计数器+控制器module ZTJ(clk,s,count1,count2,led);parameter s0=6’b010100,s1=6’b001100,s2=6'b100010,s3=6'b100001,s4=6'b100100;input clk,s;output[3:0]count1;output[3:0]count2;output[5:0]led;reg[3:0]count1;reg[3:0]count2;reg[5:0]led;reg[5:0]st;reg[5:0]jicun;reg[3:0]i;always @(posedge clk)if(s==0 &led==6’b000000)beginled<=s0;st<=s0;count1<=4'b0110;count2〈=4’b1001;endelse if(s==0 & led!=6’b000000)begincase(st)s0:if(count1!=4'b0000) begin led<=s0;count1〈=count1—1;count2<=count2-1;end else begin count1<=4'b0010;st<=s1;ends1:if(count1!=4'b0000)begin led〈=s1;count1〈=count1—1;count2<=count2-1;end else begin count1〈=4’b1001;count2<=4'b0110;st<=s2;ends2:if(count2!=4’b0000) begin led〈=s2;count1<=count1-1;count2〈=count2-1;end else begin count2〈=4’b0010;st〈=s3;ends3:if(count2!=4'b0000)begin led<=s3;count1〈=count1—1;count2〈=count2—1;end else begin count1<=4’b0110;count2〈=4’b1001;st<=s0;enddefault:led<=s4;endcaseendelsebeginjicun<=led;led〈=s4;count1<=count1;count2〈=count2;i<=i+1;if(i==4’b1001)led〈=jicun;endendmodule//译码器module DECL7S(A,LED7S);input [3:0]A;output [6:0]LED7S;reg [6:0]LED7S;always@(A)begincase(A)4’b0000:LED7S<=7'b0111111;4’b0001: LED7S<=7'b0000110;4'b0010: LED7S<=7'b1011011;4'b0011:LED7S〈=7'b1001111;4'b0100:LED7S<=7’b1100110;4’b0101:LED7S<=7’b1101101;4'b0110: LED7S<=7’b1111101;4'b0111:LED7S<=7'b0000111;4’b1000:LED7S<=7'b1111111;4’b1001: LED7S<=7'b1101111;4'b1010: LED7S<=7’b1110111;4’b1011:LED7S〈=7'b1111100;4’b1100: LED7S〈=7'b0111001;4'b1101:LED7S<=7’b1011110;4'b1110: LED7S<=7'b1111001;4’b1111:LED7S〈=7’b1110001;default:LED7S〈=7'b0111111;endcaseendendmodule。

用verilog语言编写交通灯程序

用verilog语言编写交通灯程序

交通灯一、实验目的写一个交通灯,要求:①有东西南北四个方向,两组交通灯轮流交替变换,其中,红灯时间为30个时间单位,绿灯时间为25个时间单位,黄灯时间为5个时间单位。

最后用modelsim软件进行仿真。

②要求设计是一个可综合设计。

二、实验原理根据实验要求的逻辑功能描述,可以分析得出原理图如下:控制器即可以设计为一个有限状态机的形式:E-W方向S-N方向状态R Y G R Y G1 0 0 1 0 0 IDLE1 0 0 0 0 1 S11 0 0 0 1 0 S20 0 1 1 0 0 S30 1 0 1 0 0 S4根据实验要求画出控制器的状态转移图如下:三、代码1、源代码(1)控制器模块module traffic_lights(clk,rst,count,ew,sn);input clk,rst;input[5:0] count;output[2:0] ew,sn;reg[2:0] ew,sn;reg[3:0] state;parameter Idle=3'b000,s1=3'b001,s2=3'b010,s3=3'b011,s4=3'b100; always (posedge clk)if(!rst)beginstate<=Idle;endelsecasex(state)Idle: if(rst)beginstate<=s1;ends1: if(count=='d25)beginstate<=s2;ends2: if(count=='d30)beginstate<=s3;ends3: if(count=='d55)beginstate<=s4;ends4: if(count=='d60)beginstate<=s1;endendcasealways (posedge clk)beginif(!rst)beginew<=3'b100;sn<=3'b100;endelsecasex(state)Idle: if(rst)beginew<=3'b100;sn<=3'b001;ends1: if(count=='d25)beginew<=3'b100;sn<=3'b010;ends2: if(count=='d30)beginew<=3'b001;sn<=3'b100;ends3: if(count=='d55)beginew<=3'b010;sn<=3'b100;ends4: if(count=='d60)beginew<=3'b100;sn<=3'b001;enddefault: state<=Idle;endcaseendendmodule(2)计数器模块module counter(en,clk,rst,out);output[5:0]out;input en,clk,rst;reg[5:0] out;always(posedge clk or negedge rst)beginif(!rst)out<='d0;else if(!en&&out<'d60)out<=out+1;elseout<='d1;endendmodule(3)将控制器与计数器进行连接module traffic_lights_top(out,clk,rst,en,ew,sn); input clk,rst,en;output[2:0] ew,sn;output[5:0]out;wire[5:0] out;traffic_lights u1(.clk(clk),.rst(rst),.count(out),.ew(ew),.sn(sn));counter u2(.en(en),.clk(clk),.rst(rst),.out(out));endmodule2、激励`timescale 1ns/100psmodule traffic_lights_tb;reg clk,rst,en;wire[2:0] ew,sn;wire[5:0]out;traffic_lights_top m(.clk(clk),.rst(rst),.en(en),.ew(ew),.sn(sn),.out(out));always#5 clk=~clk;initialen<=1;initialbeginclk<=1;en<=0;rst<=0;#5 rst<=1;endendmodule四、仿真波形(图一)(图二)五、波形说明波形图中,从上至下依次为:时钟信号clk、复位信号rst、计数器使能端en、东西方向上灯的状态ew、南北方向上灯的状态sn、计数器的输出out。

基于verlilog hdl的交通信号灯电路设计

基于verlilog hdl的交通信号灯电路设计

基于Verilog HDL的交通信号灯电路设计1. 引言交通信号灯是城市道路交通管理中不可或缺的一部分,它通过不同颜色的灯光来指示车辆和行人何时停止和通行。

本文将介绍基于Verilog HDL的交通信号灯电路设计。

2. 设计目标本次设计的目标是实现一个简单的交通信号灯电路,包括红、黄、绿三种状态。

具体要求如下:•红灯亮时,其他两个灯应熄灭。

•黄灯亮时,其他两个灯应熄灭。

•绿灯亮时,其他两个灯应熄灭。

•红、黄、绿三个状态按照固定时间间隔循环切换。

3. 电路设计3.1 总体结构本次设计采用有限状态机(FSM)来实现交通信号灯电路。

有限状态机是一种数学模型,可以描述系统在不同状态之间的转移和输出。

我们将使用Verilog HDL来描述并实现这个有限状态机。

3.2 状态定义根据设计目标,我们可以定义三种状态:红、黄、绿。

我们可以用二进制数来表示这三种状态,比如红色为00,黄色为01,绿色为10。

我们可以使用两个输出信号来表示当前状态:red和green。

3.3 状态转移根据设计目标,交通信号灯应该按照固定时间间隔循环切换状态。

我们可以使用一个计数器来实现这个功能。

当计数器的值达到一定阈值时,状态应该切换到下一个状态。

具体的状态转移如下:•当前状态为红色时(00),计数器的值递增。

–当计数器的值达到阈值时,切换到黄色状态(01),并重置计数器。

•当前状态为黄色时(01),计数器的值递增。

–当计数器的值达到阈值时,切换到绿色状态(10),并重置计数器。

•当前状态为绿色时(10),计数器的值递增。

–当计数器的值达到阈值时,切换到红色状态(00),并重置计数器。

3.4 Verilog HDL代码实现以下是基于Verilog HDL实现交通信号灯电路的代码:module traffic_light(input wire clk,output reg red,output reg yellow,output reg green);reg [1:0] state;reg [3:0] counter;parameter THRESHOLD = 4'b1010; // 阈值always @(posedge clk) begincase(state)2'b00: begin// 红灯状态if(counter == THRESHOLD) beginstate <= 2'b01; // 切换到黄灯状态counter <= 0;end else begincounter <= counter + 1;endend2'b01: begin// 黄灯状态if(counter == THRESHOLD) beginstate <= 2'b10; // 切换到绿灯状态counter <= 0;end else begincounter <= counter + 1;endend2'b10: begin// 绿灯状态if(counter == THRESHOLD) beginstate <= 2'b00; // 切换到红灯状态counter <= 0;end else begincounter <= counter + 1;endendendcaseendalways @(state) begincase(state)2'b00: begin// 红灯亮,其他两个灯熄灭red <= 1;yellow <= 0;green <= 0;end2'b01: begin// 黄灯亮,其他两个灯熄灭red <= 0;yellow <= 1;green <= 0;end2'b10: begin// 绿灯亮,其他两个灯熄灭red <= 0;yellow <= 0;green <= 1;endendcaseendendmodule4. 总结本文介绍了基于Verilog HDL的交通信号灯电路设计。

verilog语言_设计一个交通灯信号控制电路

verilog语言_设计一个交通灯信号控制电路

分频模块:
输入 50MHz 的信号,rst 为“1”时,计数器 j 置“0”,并在以后每经历一个系统时钟周期时加 1,知道 k=49999999 时,clk1=~clk1,同时 k=0.到此分频完成。 (在实际代码编写中,为了代码的精简,此模块已经集成入顶层及控制模块)
专业整理
word 格式文档
clk 50MHz
word 格式文档
//******************************************
//这是分频部分功能实现
//**************??**************************
always@(posedge clk or posedge rst)
begin
专业整理
word 格式文档
2.总体设计框图及说明:
blu
Clk
rst
50Hz
控制
循环变量 k
Clk1
yel
1Hz 129~0
red
专业整理
word 格式文档
图一
输入:clk rst
输出:ctrl_1s ctrl_10s
blu,yel,red
全局时钟信号,50MHz 全局复位端,高电平有效
倒计时个位上数字 倒计时十位上数字
此模块接受主模块输出的个位和十位的数值控制,并间接受(系统时钟)clk(50MHz) 和
(全局复位)rst,及分频时钟 clk1 的控制,均为上升沿触发,当 rst 为高电平时,电路复
位,重新开始工作。当 rst 为低电平时,电路正常。
5.仿真及综合结果
信号 clk blu,yel,red
k led10 led1 out1 out10 rst

基于FPGA和Verilog HDL的交通灯控制器设计(一)

基于FPGA和Verilog HDL的交通灯控制器设计(一)

中文摘要与关键词摘 要:V e r i l o g H D L作为一种规范的硬件描述语言,被广泛应用于电路的设计中。

他的设计描述可被不同的工具所支持,可用不同器件来实现。

利用V e r i l o g H D L语言自顶向下的设计方法设计交通灯控制系统,使其实现道路交通的正常运转,突出了其作为硬件描述语言的良好的可读性、可移植性和易理解等优点,并通过Q u a r t u s I I完成综合、仿真、进行管脚分配、绘出仿真波形及R T L 原理图。

此程序通过下载到F P G A芯片后,可应用于实际的交通灯控制系统中。

关键词:V e r i l o g H D L;硬件描述语言;状态;F P G A英文摘要与关键词A b s t r a c t:A s a c o m m o n l a n g u a g e f o r t h e d e s c r i p t i o n o f h a r d w a r e,V e r i l o g H D L i s w i d e l y a p p l i e d i n c i r c u i t d e s i g n i n g T h e d e s i g n d e s c r i p t i o nc a n b e s u p p o r t t ed b y d i f fe r e n t t o o l s a n d i m p l e m e n t e d b y d if f e r e n t d e v i c e sI n t h i s p a p e r,t h e p r o c e s s o f d e s i g n i n g t r a f f i c l i g h t c o n t r o l l e r s y s t e m b y t h e V e r i l o g H D L t o p d o w n d e s i g n m e t h o d i s p r e s e n t e d,w h i c h h a s m a d e t h er o a d t r a f f i c w o r k w e l l,t h e d e s i g n o f t h i s s y s t e m h a s s h o w n t h er e a d a b i l i t y,p o r t a b i l i t y a n d e a s i l y u n d e r s t a n d i n g o f V e r i l o g H D L a s a h a r dd e s c r i p t i o n l a n g u a g e C i r c u i t s y n t h e s i s、s i m u l a t i o n、t o p i n a l l o c a t i o n a n d R T L s i m u l a t i o n w a v e f o r m d r a w n s c h e m a t i c a r e p e r f o r m e d b y Q u a r t u s I I.T h ep r o g r a m c a n b e u s e d i n t h e t r u l y t r a f f i c l i g h t c o n t r o l l e r s y s t e m b yd o w n l o a d i n g t o t he F P G A c h i pK e y w o r d s:V e r i l o g H D L;h a r d w a r e d e s c r i p t i o n l a n g u a g e;s t a t e;F P G A第一章绪论近20年来,电子系统的设计方法都发生了深刻的变化。

基于verilog HDL数字系统设计--交通灯

基于verilog HDL数字系统设计--交通灯

交通灯控制器-------数字系统设计文档姓名:学号:一.课题简介:我在本课程中所选择的课题是用Verilog HDL 实现的交通灯控制器。

该交通灯控制器处在一个城乡结合处的十字路口,这个十字路口分为主干道和乡村公路,由于主干道的车流量远大于乡村公路的车流量,所以这个交通灯控制器不同于常见的交通灯控制器。

这个交通控制器的功能有如下几点:1.当乡村公路无车时,始终保持乡村公路红灯亮,主干道绿灯亮。

2.当乡村公路有车时,而主干道通车时间已经超过它的最短通车时间时,禁止主干道通行,让乡村公路通行。

主干道最短通车时间为25s 。

3.当乡村公路和主干道都有车时,按主干道通车25s,乡村公路通车16s交替进行。

4.不论主干道情况如何,乡村公路通车最长时间为16s。

5.在每次由绿灯亮变成红灯亮的转换过程中间,要亮5s时间的黄灯作为过渡。

6.用开关代替传感器作为检测车辆是否到来的信号。

用红、绿、黄三种颜色的发光二极管作交通灯。

要求显示时间,倒计时。

二.控制框图和设计流程图:1.这个交通灯控制器由三个主要部分组成---核心控制器以及、译码器、分频器。

2.流程图的内容同上面交通灯的功能,这里不再多做解释。

三.各部分组件的具体实现和分析:1.核心控制器实现基本功能:(1)它的输入端有4个输入信号—C、RST、ST、CLK。

C信号是一个检测信号,检测乡村公路是否有车,C=0示无车,这种情况下乡村公路一直亮红灯,主干道一直亮红灯,并且两个计数器都同步30秒重复计数,直到C=1即乡村公路有车是才跳变到其他情况。

RST信号是复位信号,当RST=0时,这个交通灯控制器才能正常工作。

当RST=1时,所有计数器都立刻赋初值,并且乡村公路和主干道都亮红灯,表示交通灯控制器出了故障,为防止意外发生,禁止通行。

ST信号表示使能信号,当ST=1时,交通灯控制器才能正常工作。

ST=0时,所有计数器都停止计数,并且乡村公路和主干道都亮红灯,表示交通灯控制器出了故障,为防止意外发生,禁止通行。

verilog语言 设计一个交通灯信号控制电路要点

verilog语言 设计一个交通灯信号控制电路要点

西北工业大学实验报告》FPGA《学院:软件与微电子学院2011303596 号:学名:姓杨清山专业:微电子学2013/11/11 实验时间:毅字楼335 实验地点:韩兵指导教师:西北工业大学2013 年11 月2.总体设计框图及说明:图一输入:clk 全局时钟信号,50MHzrst 全局复位端,高电平有效输出:ctrl_1s 倒计时个位上数字ctrl_10s 倒计时十位上数字blu,yel,red 各个灯状态框图说明:状态机的输入,只有时钟信号clk和复位信号reset.输出为数码管十位和个位的二进制显示状态以及三个灯的颜色显示(blu,yel,red,分别是绿黄红灯,“1”表示灯亮,“0”表示灭)。

输入clk的频率很大,需要通过计数器对其进行分频。

首先计数产生一个1Hz的输出,通过该输出再次循环计数,产生周期为130的计数变量,从而控制各个灯的亮灭。

而控制黄灯闪烁的分频,为方便起见,仍以1s为单位,每秒钟改变一次。

嵌套语句来控制三灯亮与灭,同时间接地进行倒计时的过程,输出个位和十位上的数,if用.输入端口:din_1s 显示器个位数据,由控制模块输入din_10s 显示器十位数据,由控制模块输入输出端口:led_data_1s 显示器个位数据的译码led_data_10s 显示器十位数据的译码时序说明:和clk(50MHz) (系统时钟)并间接受此模块接受主模块输出的个位和十位的数值控制,上图中blu,yel,red,三个信号反映的绿黄红交通灯的状态,其中包括绿灯亮60秒,黄灯以2HZ为周期闪烁,红灯亮60s,总周期为130s。

上图为循环控制变量的值随分频后信号从129到0的循环计数。

综合结果:顶层及控制,分频模块的综合RTL级电路如图:译码显示模块的综合如下:RTL级门级6.代码及注释此为顶层及控制模块代码:`include ./decode.vmodule bulb(clk,rst,red,blu,yel,led1,led10);input clk,rst;output blu,yel,red,led1,led10;reg red,yel,blu;wire [6:0] led1;wire [6:0] led10;reg[3:0] out10,out1;reg[5:0] j;reg[7:0] k; //j,kreg clk1;//initialbegink='d129;blu<=0;。

智能交通灯控制器的设计(verilog)

智能交通灯控制器的设计(verilog)

智能交通灯控制器的设计1、实验目的及要求实验目的:通过交通灯的设计与仿真综合,体会复杂时序的实现方法,学会用框图表示程序的设计思想,掌握中小规模集成电路的系统综合设计方法。

实验要求:设计一个交通灯信号控制电路。

具体要求为:输入为50MHz的时钟和复位信号,输出为红、绿、黄三个信号(高电平为亮)。

复位信号(高电平)有效,红、绿、黄灯灭;接着进行如下循环:绿灯亮1分钟,黄灯闪烁10秒,红灯亮1分钟。

在此基础上再加两个数码管,对倒计时的数显示。

2、实验设备(环境)及要求实验EDA工具为:Synplify Pro 9.6.2和ModelSim SE 6.2b。

3、实验内容与步骤3.1设计思路概述总体上分为三个大模块,即:顶层模块、控制模块、译码模块(包括显示模块)。

他们各自的作用分别如下:顶层模块:此模块只做例化,即对底层的控制模块和译码模块进行例化,而不做逻辑设计。

控制模块:此模块是本程序的主体,主要是控制各个灯颜色(此模块并不控制黄灯的闪烁)的转换,以及倒计时时间输出。

首先要对时钟进行分频。

由于系统时钟频率比较大,因此首先分频产生时钟,用于下面的电路的控制;然后是各种颜色之间的转换,在此在添加一个使能端enable ,当使能端enable为0的时候,就开始进行状态循环以及倒计时,然后enable就立即变为1;状态用light_status(分别为0、1、2)表示,开始的时候,如果状态light_status为0,表示此时显示的是绿灯,便把绿灯亮的时间(60s)给统计灯亮时间的变量light_long,并且把显示灯亮的变量light_select赋值100(高电平表示亮),最后把状态标志位light_status赋1,但是此时并不能转向下一个状态(黄),因为绿灯亮的时间还没有控制,接下来会转到倒计时处。

然后,我们这里用了BCD码表示倒计时时间。

灯亮或闪烁时间(绿、黄、红分别为60s、10s、60s)用BCD码表示(分别为60h、10h、60h),倒计时的时候个位和十位分别是BCD码的高四位和低四位,首先是低四位倒数,当倒数到0时,给它重新赋值为9,且高四位减1,如此循环,直到这个数减到0,此时表示某一个灯亮的时间到,接着进行下一个状态,为了能使进入下一个状态,必须在时间减到0的时候,给使能端enable 赋值0;由于用的BCD码,高四位和低四位就分别是我们要在译码模块的要用数码管显示的十位和个位。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

初始
K=K-1
K<0 使 K=129
图K二=K-1
绿灯状态
红灯状态
K≤59
K≤69 黄灯状态
K=K-1
4.模块设计框图、相关时序
本程序分为三个模块,顶层模块、控制模块、译码模块,各模块的设计框图以及相关 时序说明如下:
顶层及控制模块框图
分频
顶层
译码显示 块
控制
图三
输入:clk 全局时钟信号,50MHz rst 全局复位端,高电平有效 输出:led1 个位七段译码
控制模块的输出
out10
倒计时十位上的数字
控制模块的输出
rst
系统控制变量
高电平有效
上图中 blu,yel,red,三个信号反映的绿黄红交通灯的状态,其中包括绿灯亮 60 秒,黄灯以 2HZ 为
周期闪烁,红灯亮 60s,总周期为 130s。
上图为循环控制变量的值随分频后信号从 129 到 0 的循环计数。
六、教师评语
签名: 日期:
成绩
二、实验设备(环境)及要求
实验 EDA 工具为:预装了和的 PC 机。
三、实验内容与步骤
1.设计思路概述
总体上分为三个大模块,即:顶层模块、分频模块、控制模块、译码显示模块。作用如下: 顶层及控制模块: 此模块做例化,和控制,是本程序的主体,对底层的分频模块和译码显示模块进行例化,并且做 控制设计。控制设计如下: 采用同步时序逻辑。包括一个循环计数器,三个比较器,always 控制。 通过分频后的 CLK1 新号(1Hz),进行对一个循环变量“k”的周期为 130 的循环,进而控制 三个灯的控制;具体循环为:clk1 每进行一次跳变,k 值减 1;当 K=0 时,重新复值为 129。 通过比较器,每个灯的条件不同,当 129>=k>=70 时绿灯亮,69>=k>=60 黄灯闪烁,59>=k>=0 红灯 亮。 对于数码管输出,当 129>=k>=70 时,数码管个位输出=(k-70)%10,十位输出为(k-70-个位)/10; 当 69>=k>=60 数码管个位输出=(k-60)%10,十位输出为(k-60-个位)/10,当 59>=k>=0 时,数码管 个位输出=k%10 十位输出为(k-个位)/10。 分频模块: 分频模块用以把输入的 50MHz 的信号转换为 1Hz 信号,便于其后的交通灯控制及数码管输出。 译码模块: 考虑到数字显示需要两个七段译码器,且在数字系统中,数字的表示都是采用二进制,因为两个 管子分别输入,所以需要把循环变量 k 转换为有用的十位和各位输出。 为了方便,把循环变量 k 减去各状态的基数值后,用数学方法取十位和各位分别做输入。
led10 十位七段译码 时序说明:加上时钟信号之后,首先用 reset 清零,然后分频模块会分频产生分频时钟 clk1,根 据分频时钟的高与低,进而进行变量循环,然后会控制 3 个状态之间的跳转,译码显示模块会同 步通过数码管来显示倒计时数;灯控信号 blu,yel,red 同时输出对交通灯的控制。
值一致,经过简单数学计算,就可以把每个状态的 k 的值换算为数码管的个位十位。这样一来,
省去了为数码管单独设置的变量,化简了代码。
优点:代码简单易懂。中心代码仅 150 多行。 缺陷:由于未设定具体的状态机循环,只是运用变量 k 的循环控制,造成了综合时的线路繁杂以 及冗余,不能完美符合 Verilog 语言的关注硬件的特点。但是没有任何代码是完美的,这也正是 我通过此次编程学到的最大的经验。 待优化:中间黄灯的闪烁频率有点过慢,时间匆忙,未能优化,若把分频频率 clk1 改为,然后 循环变量 k 按照 clk1 每 2 个周期改变一次,即可实现黄灯每闪一次。
3:led_data_1s=7'b0100100;
4:led_data_1s=7'b1000101;
5:led_data_1s=7'b0010100; 6:led_data_1s=7'b0010000; 7:led_data_1s=7'b0101101; 8:led_data_1s=7'b0000000; 9:led_data_1s=7'b0000100; default:led_data_1s=7'b1111111; endcase end always@(din_10s) begin case(din_10s) 0:led_data_10s=7'b0001000; 1:led_data_10s=7'b1101101; 2:led_data_10s=7'b0100010; 3:led_data_10s=7'b0100100; 4:led_data_10s=7'b1000101; 5:led_data_10s=7'b0010100; 6:led_data_10s=7'b0010000; 7:led_data_10s=7'b0101101; 8:led_data_10s=7'b0000000; 9:led_data_10s=7'b0000100; default:led_data_10s=7'b1111111; endcase end endmodule 测试模块代码: `timescale1ns/1ns `include"" moduletop; regclk,rst; wirered,blu,yel,led1,led10; //regclk1,red,blu,yel; initial begin rst=1; clk=1; #500rst=0; #500rst=1; #500rst=0; end always#20clk=~clk; bulbbulb(clk,rst,red,blu,yel,led1,led10); Endmodule
综合结果:
顶层及控制,分频模块的综合 RTL 级电路如图:
译码显示模块的综合如下:
RTL 级门级
6.代码及注释
此为顶层及控制模块代码:
`include"./"
modulebulb(clk,rst,red,blu,yel,led1,led10);
inputclk,rst;
outputblu,yel,red,led1,led10;
输入 clk 的频率很大,需要通过计数器对其进行分频。首先计数产生一个 1Hz 的输出,通过该输
出再次循环计数,产生周期为 130 的计数变量,从而控制各个灯的亮灭。而控制黄灯闪烁的分频,
为方便起见,仍以 1s 为单位,每秒钟改变一次。
用 if 嵌套语句来控制三灯亮与灭,同时间接地进行倒计时的过程,输出个位和十位上的数,直
如绿灯时,129>=k>=70 时,数码管个位输出=(k-70)%10,十位输出为(k-70-个位)/10。 七段译码器的设计原理如图:
2.总体设计框图及说明:
blu
Clk50Hz
控制
循环r变st 量 k
Clk1
yel
129~0
1Hz
图一
red
输入:clk 全局时钟信号,50MHz
rst 全局复位端,高电平有效
接用两个七段译码显示倒计时数。
Rst 信号是清零用的,为“1”时,三个信号灯及循环变量 k 复位置“0”。
流程图
开始
输入 50MHz clk1:1Hz
yel=~yel
图四
循环变量 k 计 数
70≤k≤ 16209≤k ≤69
0≤k≤ 59
red=1
blu=1
3.时序说明:
显示输出
整段程序共有四个状态:初始状态、绿灯状态、黄灯状态、红灯状态。 如果有 rst 的“1”状态,则要进行清零,恢复到初始状态;这是在控制模块的计数器会清零,倒 计时不再进行,三个灯都是灭的状态, Rst 为“1”状态跳转为初始状态的,等待着清零结束,开始工作;此时七段译码也不会显示。 清零结束后,系统开始正常工作。首先是分频时钟开始工作,此时循环变量开始循环,绿灯亮 60s,译码器开始显示倒计时的输出,直到 k=70。当循环变量 k<=69 时,黄灯闪烁 10s,同时译 码倒计时,直到 k=60;当循环变量 k<=59 时,红灯亮,同时译码倒计时直到 k=0。至此一个周期 已经完成,沿此过程循环进行,直到 reset 信号的出现。
5.仿真及综合结果
表 1 仿真结果信号解释说明
信号
解释
备注
clk
系统时钟,50MHz
为了方便,这里取 2ns
blu,yel,red
最终三灯状态
分别绿红灯,
“1”为亮“0”为灭
k
循环计数变量
用以状态判断控制
led10
倒计时十位七段译码
数码管十位显示
led1
倒计时个位七段译码
数码管个位显示
out1
倒计时个位上的数字
输出:ctrl_1s 倒计时个位上数字
ctrl_10s 倒计时十位上数字
blu,yel,red 各个灯状态
框图说明:
状态机的输入,只有时钟信号 clk 和复位信号 reset.输出为数码管十位和个位的二进制显示状态
以及三个灯的颜色显示(blu,yel,red,分别是绿黄红灯,“1”表示灯亮,“0”表示灭)。
output[6:0]led_data_10s;
reg[6:0]led_data_1s;
reg[6:0]led_data_10s;
always@(din_1s)
begin
case(din_1s)
0:led_data_1s=7'b0001000;
1:led_data_1s=7'b1101101;
2:led_data_1s=7'b0100010;
相关文档
最新文档