通过Verilog实现交通灯设计实验报告
交通灯实验报告
基于FPGA 实现的交通灯控制器一、实验室名称通信实验室(实训楼二楼)二、实训内容本实验为Verilog HDL 的程序设计仿真,通过实验掌握状态机,时序CLK 的控制模块,及时序同步的控制方式。
实验要求:1.LED 灯显示交通灯状态。
2.7段数码管显示当前状态剩余时间。
状态要求:1.主干道绿灯亮35s 支道绿灯亮25s 。
2.当主干道绿灯亮时,支道亮红灯。
3.由绿灯转红灯时,黄灯亮5s 。
3.时钟为1KHz 。
能实现倒计时显示。
4.由初始状态开始计数,对应状态指示。
三、实验原理3.1设计思路和原理本次设计是针对十字路口,进行南北和东西直行情况下交通灯控制。
设定东西方向为主干道方向,根据交通灯的亮的规则,在初始状态下四个方向的都为红灯亮启,进入正常工作状态后,当主干道上绿灯亮时,支干道上红灯亮,持续35S 后,主干道和支干道上的黄灯都亮启,持续5S 后,主干道上红灯亮启,支干道上绿灯亮启持续25S ,之后主干道和支干道上的黄灯都亮启5s ,一个循环完成。
循环往复的直行这个过程。
其过程如下图所示:状态主干道支干道秒数(S )1绿灯红灯35 2黄灯红灯 5 3红灯绿灯25 4红灯黄灯 5状态1:主干道绿灯亮支干道红灯亮35秒状态3:主干道红灯亮支干道绿灯亮25秒状态4:主干道红灯亮支干道黄灯亮5秒状态2:主干道黄灯亮支干道红灯亮5秒3.2实现方法本次采用文本编辑法,即利用Verilog HDL语言描述交通控制器,通过状态机计数法,实现设计所要求的交通灯控制及时间显示。
设计中用两组红黄绿LED 模拟两个方向上的交通灯,用两个7段数码管显示主干道上的交通灯剩余时间,控制时钟由试验箱上频率信号提供。
3.3整体设计交通灯控制的关键是各个状态之间的转换和进行适当的时间延时,根据状态机的设计规范,本次设计了三个状态之间的循环转化,说明:该状态图为交通灯在正常情况下的状态转化图,进入控制后,状态00时主干道绿灯及支干道红灯亮起,进入状态01后两路黄灯亮起,状态11时主干道红灯及支干道绿灯亮起。
2016最新用verilog语言编写交通灯程序报告
交通灯一、实验目的写一个交通灯,要求:①有东西南北四个方向,两组交通灯轮流交替变换,其中,红灯时间为30个时间单位,绿灯时间为25个时间单位,黄灯时间为5个时间单位。
最后用modelsim软件进行仿真。
②要求设计是一个可综合设计。
二、实验原理根据实验要求的逻辑功能描述,可以分析得出原理图如下:控制器即可以设计为一个有限状态机的形式:根据实验要求画出控制器的状态转移图如下:三、代码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),Verilog——交通灯 .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),Verilog——交通灯.en(en),.ew(ew),.sn(sn),.out(out));always#5 clk=~clk;initialen<=1;initialbeginclk<=1;en<=0;rst<=0;#5 rst<=1;endendmodule四、仿真波形。
《FPGA设计与应用》交通灯实验一
《FPGA设计与应用》交通灯实验
一、实验目的和要求
实验目的:
1. 综合运用 Verilog HDL 语言进行时序设计。
实验要求:
1. 两个方向各种灯亮的时间能够进行设置和修改
二、实验内容和原理
1. 编写时间控制程序,利用交通灯实验子板,实现东西,南北向的交通灯计数并亮灯的程序;
2.子板实现所有显示方面的功能,包括十进制倒数计数和红绿黄三色灯的轮流点亮。
三、主要仪器设备
电脑、VIVADO软件
四、操作方法与实验步骤
1.为了在八段数码管上正确显示十进制数据,设计一个函数,程序即上述实验五中的数码管封装模块。
2、将实验板上电,下载程序到 FPGA 芯片中。
3、观察实验结果。
五、实验数据记录和处理
综合:
程序:
六、实验结果与分析
实验仿真结果:
实物操作:
七、讨论和心得
通过这次实验,我加深了用Verilog语言来进行时序设计方法的理解,能够编写简单的时间控制程序,让我verilog语法的运用更加熟练,在实验中还用到了之前学到的模块调用,加深了我对之前知识的理解。
通过本次实验,我不仅学到了关于Verilog的知识,同时也让我感觉到了思考的重要性。
通过Verilog实现交通灯设计实验报告
电子科技大学实验报告一、实验室名称:虚拟仪器实验室二、实验项目名称:交通灯设计实验三、实验学时:4学时四、实验原理假设交通灯处于南北和东西两条大街的“十”字路口,如图1所示。
用FPGA 开发板的LED 灯来模拟红、黄、绿3种颜色信号,并按一定顺序、时延来点亮LED ,如图2所示。
图3给出了交通灯的状态转移图。
设计使用频率为1Hz 的时钟来驱动电路(注1:仿真时采用1MHz 的时钟来驱动电路),则停留1个时钟可得到1S 的延时,类似停留3个时钟可得到3S 的延时,停留15个时钟可得到15S 的延时(注2:开发板工作时钟为50MHz )。
北南西东图1. 六个彩色LED 可以表示一组交通信号灯南北 东西 红 黄 绿 红 黄 绿 S0 1 0 0 0 0 1 S1 1 0 0 0 1 0 S2 1 0 0 1 0 0 S3 0 0 1 1 0 0S4 0 1 0 1 0 0S5 1 0 0 1 0 0图3. 交通灯的状态转移图顶层模块时钟分频模块状态机跳转模块图4. 交通灯的原理框图五、实验目的本实验是有限状态机的典型综合实验,掌握如何使用状态转移图来定义Mealy状态机和Moore状态机,熟悉利用HDL代码输入方式进行电路的设计和仿真的流程,掌握Verilog语言的基本语法。
并通过一个交通灯的设计掌握利用EDA软件(Xilinx ISE 13.2)进行HDL代码输入方式的电子线路设计与仿真的详细流程。
六、实验内容在Xilinx ISE 13.2上完成交通灯设计,输入设计文件,生成二进制码流文件下载到FPGA开发板上进行验证。
七、实验器材(设备、元器件)1、计算机(安装Xilinx ISE 13.2软件平台);2、BASYS2 FPGA开发板一套(带USB-MIniUSB下载线)八、实验步骤(1)新建工程,设置器件属性:在Xilinx ISE 13.2平台中,新建一个工程(注意命名规范),输入工程名称以及工程所在的目录,设置芯片的具体型号(Spartan 3E XC3S100E)、封装类型(CP132)以及编码使用的语言(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语言编写交通灯程序
交通灯一、实验目的写一个交通灯,要求:①有东西南北四个方向,两组交通灯轮流交替变换,其中,红灯时间为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课程设计—交通灯
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实验报告流水灯数码管秒表交通灯
流水灯实验目的:在basys2开发板上实现LED灯的花样流水的显示,如隔位显示,依次向左移位显示,依次向右移位显示,两边同时靠中间显示。
实验仪器:FPGA开发板一块,计算机一台。
实验原理:当一个正向的电流通过LED时,LED就会发光。
当阳极的电压高于阴极的电压时,LED就会有电流通过。
当在LED上增添一个典型值为1.5V—2.0V之间的电压时,LED就会有电流通过并发光。
实验内容:顶层模块:输入信号:clk_50MHz(主时钟信号),rst(重置信号),输出信号:[7:0] led(LED灯控制信号)。
module led_top(clkin,rst,led_out);input clkin, rst;output [7:0] led_out;wire clk_1hz;divider_1hz d0(clkin, rst, clk_1hz);led l0(clk_1hz, rst, led_out);endmodule分频模块:module divider_1hz(clkin,rst,clkout);input clkin,rst;output reg clkout;reg [24:0] cnt;always@(posedge clkin, posedge rst)beginif(rst) begincnt<=0;clkout<=0; endelse if(cnt==24999999) begincnt<=0;clkout=!clkout; endelse cnt<=cnt+1;endendmodule亮灯信号模块:module led(clkin,rst,led_out);input clkin,rst;output [7:0] led_out;reg [2:0] state;always@(posedge clkin, posedge rst)if(rst) state<=0;else state<=state+1;always@(state)case(state)3'b000:ledout<=8'b0000_0001;3'b001:ledout<=8'b0000_0010;3'b010:ledout<=8'b0000_0100;3'b011:ledout<=8'b0000_1000;3'b100:ledout<=8'b0001_0000;3'b101:ledout<=8'b0010_0000;3'b110:ledout<=8'b0100_0000;3'b111:ledout<=8'b1000_0000;endcaseendmodule实验中存在的问题:1 芯片选择问题automotive spartan3EXA3S100E XA3S250E CPG132spartan3EXC3S100E XC3S250E CP1322 时序逻辑部分,阻塞赋值和非阻塞赋值混用always@(posedge clk)begina=b+c;d<=e+f;end3 UCF文件格式错误NET “CLK” LOC = “B8”;NET “a” LOC = “N11”;NET “b” LOC = “G13”;NET “c[0]”LOC =“K11;数码管实验目的:设计一个数码管动态扫描程序,实现在四位数码管上动态循环显示“1”、“2”“3”“4”;实验仪器:FPGA开发板一块,计算机一台。
交通灯实验报告
基于FPGA实现的交通灯控制器一、实验室名称通信实验室(实训楼二楼)二、实训内容本实验为Verilog HDL的程序设计仿真,通过实验掌握状态机,时序CLK的控制模块,及时序同步的控制方式。
实验要求:1.LED灯显示交通灯状态。
2.7段数码管显示当前状态剩余时间。
状态要求:1.主干道绿灯亮35s支道绿灯亮25s。
2.当主干道绿灯亮时,支道亮红灯。
3.由绿灯转红灯时,黄灯亮5s。
3.时钟为1KHz。
能实现倒计时显示。
4.由初始状态开始计数,对应状态指示。
三、实验原理3.1设计思路和原理本次设计是针对十字路口,进行南北和东西直行情况下交通灯控制。
设定东西方向为主干道方向,根据交通灯的亮的规则,在初始状态下四个方向的都为红灯亮启,进入正常工作状态后,当主干道上绿灯亮时,支干道上红灯亮,持续35S后,主干道和支干道上的黄灯都亮启,持续5S后,主干道上红灯亮启,支干道上绿灯亮启持续25S,之后主干道和支干道上的黄灯都亮启5s,一个循环完成。
循环往复的直行这个过程。
其过程如下图所示:3.2实现方法本次采用文本编辑法,即利用Verilog HDL 语言描述交通控制器,通过状态状态 主干道 支干道 秒数(S )1 绿灯 红灯 352黄灯红灯5 3 红灯 绿灯 25 4红灯黄灯5状态1: 主干道绿灯亮 支干道红灯亮35秒状态3: 主干道红灯亮 支干道绿灯亮25秒状态4:主干道红灯亮 支干道黄灯亮5秒状态2: 主干道黄灯亮 支干道红灯亮5秒机计数法,实现设计所要求的交通灯控制及时间显示。
设计中用两组红黄绿LED 模拟两个方向上的交通灯,用两个7段数码管显示主干道上的交通灯剩余时间,控制时钟由试验箱上频率信号提供。
3.3整体设计交通灯控制的关键是各个状态之间的转换和进行适当的时间延时,根据状态机的设计规范,本次设计了三个状态之间的循环转化,说明:该状态图为交通灯在正常情况下的状态转化图,进入控制后,状态00时主干道绿灯及支干道红灯亮起,进入状态01后两路黄灯亮起,状态11时主干道红灯及支干道绿灯亮起。
verilog交通灯设计与实现
西北工业大学《FPGA技术实验》实验报告五(交通灯控制系统)学院:软件与微电子学院学号:姓名:专业:微电子学实验时间: 2011.11.23 实验地点:毅字楼335 指导教师:***西北工业大学2011年11月时候,给使能端enable 赋值0;由于用的BCD码,高四位和低四位就分别是我们要在译码模块的要用数码管显示的十位和个位。
译码模块:此模块主要有两个作用,控制黄灯闪烁以及对倒计时时间进行译码输出。
首先是控制黄灯闪烁。
由于控制模块只是控制三个灯的亮与不亮,在此模块中首先是相当于产生一个分频时钟y_flicker(周期1s),然后是控制黄灯的闪烁,控制模块light_select只是控制了三个灯亮与不亮(三位二进制,高电平有效),最后显示灯的亮或者闪还用三位二进制表示(colour),控制时直接把light_select 的最高位和最低位直接赋给colour的最高位和最低位(分别控制绿灯和红灯的亮),中间位当分频时钟y_flicker为高且输入light_select为高时,输出colour 才为高(黄灯亮),别的情况colour中间位都为低(黄灯灭),至此可以完美实现黄灯的闪烁了(1s内亮0.5s灭0.5s),也就可以实现要求的各个灯的亮或者闪烁。
然后就是七段译码的过程。
采用了3—8译码器的设计原理,将倒计时时间译码,输出到LED晶体管,显示最终倒计时时间。
LED中二极管对应的顺序编号如图1所示,并且是低电平有效。
写出所有数字对应的字型码,就可以知道数字的控制电平。
由于只有两位数字,考虑到成本以及复杂性,可不用扫描,直接用两个译码器就可以了。
图1 七段数码管显示字段的示意图2.总体设计框图及详细说明程序总体设计框图如图2所示。
图2 程序总体设计框图下面将对所做的系统框图进行详尽说明:首先,输入的50MHz的系统时钟和全局控制端reset ,输出为个位数字的七段译码,十位数字七段译码以及各个灯最后状态。
verilog语言-设计一个交通灯信号控制电路
文案大全
实用文档
直接用两个七段译码显示倒计时数。 Rst 信号是清零用的,为“ 1”时,三个信号灯及循环变量 k 复位置“ 0”。
流程图
开始 输入 50MHz
clk1:1Hz 循环变量 k
计数 70≤ k≤
yel=~yel
60 ≤ k ≤ 69
0≤ k≤
图四
red=1 显示输出
blu=1
3.时序说明:
blu,yel,red
全局时钟信号, 50MHz 全局复位端,高电平有效
倒计时个位上数字 倒计时十位上数字
各个灯状态
框图说明 :
状态机的输入,只有时钟信号 clk 和复位信号 reset.输出为数码管十位和个位的二进制
显示状态以及三个灯的颜色显示 ( blu,yel,red, 分别是绿黄红灯, “ 1”表示灯亮,“ 0”表示灭)。
顶层及控制模块: 此模块做例化, 和控制, 是本程序的主体,对底层的分频模块和译码显示模块进行例化,并 且做控制设计。控制设计如下:
采用同步时序逻辑。包括一个循环计数器,三个比较器, 控制。
always
通过分频后的 CLK1 新号( 1Hz),进行对一个循环变量“ k”的周期为 130 的循环,进 而控制三个灯的控制;具体循环为: clk1 每进行一次跳变, k 值减 1;当 K=0 时,重新复值
实用文档
西北工业大学
《FPGA 》 实验报告
学 院: 学 号: 姓 名: 专 业: 实验时间: 实验地点: 指导教师:
软件与微电子学院 2011303596 杨清山 微电子学 2013/11/11 毅字楼 335 韩兵
西北工业大学
2013 年 11 月
文案大全
实用文档
用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的交通信号灯电路设计
基于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语言_设计一个交通灯信号控制电路
分频模块:
输入 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
通过Verilog实现交通灯设计实验报告
电子科技大学实验报告一、实验室名称:虚拟仪器实验室二、实验项目名称:交通灯设计实验三、实验学时:4学时四、实验原理假设交通灯处于南北和东西两条大街的“十”字路口,如图1所示。
用FPGA开发板的LED灯来模拟红、黄、绿3种颜色信号,并按一定顺序、时延来点亮LED,如图2所示。
图3给出了交通灯的状态转移图。
设计使用频率为1Hz的时钟来驱动电路(注1:仿真时采用1MHz的时钟来驱动电路),则停留1个时钟可得到1S的延时,类似停留3个时钟可得到3S的延时,停留15个时钟可得到15S 的延时(注2:开发板工作时钟为50MHz)。
北西东南图1. 六个彩色LED可以表示一组交通信号灯状态机的状态南北大街东西大街开发板延时(单位:s)仿真延时(单位:us)S0 红绿15 15S1 红黄 3 3S2 红红 3 3S3 绿红15 15S4 黄红 3 3S5 红红 3 3图2. 交通灯状态南北东西红黄绿红黄绿S0 1 0 0 0 0 1S1 1 0 0 0 1 0S2 1 0 0 1 0 0S3 0 0 1 1 0 0S4 0 1 0 1 0 0S5 1 0 0 1 0 0图3. 交通灯的状态转移图顶层模块时钟分频模块状态机跳转模块图4. 交通灯的原理框图五、实验目的本实验是有限状态机的典型综合实验,掌握如何使用状态转移图来定义Mealy状态机和Moore状态机,熟悉利用HDL代码输入方式进行电路的设计和仿真的流程,掌握Verilog语言的基本语法。
并通过一个交通灯的设计掌握利用EDA软件(Xilinx ISE )进行HDL代码输入方式的电子线路设计与仿真的详细流程。
六、实验内容在Xilinx ISE 上完成交通灯设计,输入设计文件,生成二进制码流文件下载到FPGA开发板上进行验证。
七、实验器材(设备、元器件)1、计算机(安装Xilinx ISE 软件平台);2、BASYS2 FPGA开发板一套(带USB-MIniUSB下载线)八、实验步骤(1)新建工程,设置器件属性:在Xilinx ISE 平台中,新建一个工程(注意命名规范),输入工程名称以及工程所在的目录,设置芯片的具体型号(Spartan 3E XC3S100E)、封装类型(CP132)以及编码使用的语言(Verilog)。
交通灯设计-verilog.
. . .. . .基于Verilog语言交通灯设计报告院系:工学院自动化系年级:14级班级:10班:周博学号:14032291这学期我学习了EDA技术及其创新实践这门课程,通过自己学习的容和自己查找的一些资料用Verilog语言编写交通灯的程序,并且完成了仿真。
Verilog HDL是工业和学术界的硬件设计者所使用的两种主要的HDL之一,另一种是VHDL。
现在它们都已成为IEEE标准。
两者各有特点,但Verilog HDL拥有更悠久的历史、更广泛的设计群体,资源也远比VHDL丰富,且非常容易学习掌握。
一、设计背景和意义交通灯控制系统主要是实现城市十字交叉路口红绿灯的控制。
在现代化的大城市中,十字交叉路口越来越多,在每个交叉路口都需要使用红绿灯进行交通指挥和管理,红、黄、绿灯的转换要有一个准确的时间间隔和转换顺序,这就需要有一个安全、自动的系统对红、黄、绿灯的转换进行管理,本系统就是基于此目的而开发的。
二、设计任务(1)设计一个交通红绿灯。
要求分主干道和支干道,每条道上安装红(主:red1,支:red2)绿(主:green1,支:green2)黄(主:yellow1,支:yellow2)三种颜色灯,由四种状态自动循环构成;(2)在交通灯处在不同的状态时,设计一个计时器以倒计时方式显示计时,主干道上绿灯亮30S,支干道上绿灯亮20S。
每个干道上,在绿灯转为红灯时,要求黄灯先亮5S。
在完成基本要求的基础上,可进一步增加功能、提高性能,如绿灯亮的时间可调。
三、设计方案1.工作原理:城市十字交叉路口红绿灯控制系统主要负责控制主干道走向和从干道走向的红绿灯的状态和转换顺序,关键是各个状态之间的转换和进行适当的时间延时,正是基于以上考虑,采用如下设计:S0:当主干道走向的绿灯亮时,从干道走向的红灯亮,并保持30sS1:当主干道走向的黄灯亮时,从干道走向的黄灯亮,并保持5sS2:当主干道走向的红灯亮时,从干道走向的绿灯亮,并保持20sS3:当主干道走向的黄灯亮时,从干道走向的黄灯亮,并保持5s在S3结束后又回到(1)状态,并周期重复进行。
交通灯设计实验报告-V1
交通灯设计实验报告-V1
(文章正文)
交通灯设计实验报告
一、实验目的
本实验旨在设计一个基于Verilog HDL硬件描述语言的交通灯控制电路,达到实现交通灯红绿灯切换的效果。
二、实验原理
本实验采用有限状态机(FSM)的设计方法,通过对红灯、绿灯和黄灯状态的转换来实现交通灯控制。
具体实现方法如下:
1. 初始化——初始状态下,所有灯均处于关闭状态。
2. 请求信号检测——检测到请求信号,进入下一状态。
3. 交通灯红灯状态——此状态下,绿灯关闭,黄灯关闭,红灯亮起。
4. 交通灯黄灯状态——此状态下,绿灯关闭,红灯关闭,黄灯亮起。
5. 交通灯绿灯状态——此状态下,红灯关闭,黄灯关闭,绿灯亮起。
6. 检测状态——状态周期循环完毕,回到初始化状态。
三、实验步骤
根据实验原理,设计并编写Verilog HDL代码,实现上述状态转换。
四、实验结果
在编译、综合和仿真的过程中,均未出现任何报错。
经过实验测试,交通灯控制电路能够按照要求实现红绿灯的切换。
五、实验总结
本实验通过有限状态机的设计方法,实现了一个基于Verilog HDL的交通灯控制电路。
同时,通过对代码的编写和仿真测试,进一步提高了对该硬件描述语言的理解和掌握。
我们还可通过使用FPGA实现该电路的物理实现,从而掌握硬件编程的基本技能和实际应用。
在今后的学习和研究中,我们可将这种硬件实现运用到图像处理、音频合成、逻辑控制等各个领域中,探究硬件与软件的融合之路,为未来的科技发展奠定坚实的基础。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子科技大学实验报告一、实验室名称:虚拟仪器实验室二、实验项目名称:交通灯设计实验三、实验学时:4学时四、实验原理假设交通灯处于南北和东西两条大街的“十”字路口,如图1所示。
用FPGA 开发板的LED 灯来模拟红、黄、绿3种颜色信号,并按一定顺序、时延来点亮LED ,如图2所示。
图3给出了交通灯的状态转移图。
设计使用频率为1Hz 的时钟来驱动电路(注1:仿真时采用1MHz 的时钟来驱动电路),则停留1个时钟可得到1S 的延时,类似停留3个时钟可得到3S 的延时,停留15个时钟可得到15S 的延时(注2:开发板工作时钟为50MHz )。
北南西东图1. 六个彩色LED 可以表示一组交通信号灯图2. 交通灯状态南北 东西红 黄 绿 红 黄 绿 S0 1 0 0 0 0 1 S1 1 0 0 0 1 0 S2 1 0 0 1 0 0 S3 0 0 1 1 0 0 S4 0 1 0 1 0 0 S5 1 0 0 1 0 0图3. 交通灯的状态转移图顶层模块时钟分频模块状态机跳转模块图4. 交通灯的原理框图五、实验目的本实验是有限状态机的典型综合实验,掌握如何使用状态转移图来定义Mealy状态机和Moore状态机,熟悉利用HDL代码输入方式进行电路的设计和仿真的流程,掌握Verilog语言的基本语法。
并通过一个交通灯的设计掌握利用EDA软件(Xilinx ISE 13.2)进行HDL代码输入方式的电子线路设计与仿真的详细流程。
六、实验内容在Xilinx ISE 13.2上完成交通灯设计,输入设计文件,生成二进制码流文件下载到FPGA开发板上进行验证。
七、实验器材(设备、元器件)1、计算机(安装Xilinx ISE 13.2软件平台);2、BASYS2 FPGA开发板一套(带USB-MIniUSB下载线)八、实验步骤(1)新建工程,设置器件属性:在Xilinx ISE 13.2平台中,新建一个工程(注意命名规范),输入工程名称以及工程所在的目录,设置芯片的具体型号(Spartan 3E XC3S100E)、封装类型(CP132)以及编码使用的语言(Verilog)。
(详见实验指导书)(2)Verilog源码文件创建与编辑:选中器件名字,点击鼠标右键,选中New Source…,选择Verilog Module以及输入文件名称(详见实验指导书)(3)语法检查,对设计文件进行综合:代码编写完成后,在ISE的主界面的处理子窗口的synthesis的工具检查代码语法(Check Syntax),同时在此窗口可以查看RTL原理图(View RTL schematic)、查看技术原理图(View Technology Schematic)以及产生综合后仿真模型(GeneratePost-Synthesis Simulation Model)。
(4)对设计进行行为仿真:1)产生测试文件模板;2)完成测试脚本创建与编辑;3)调出仿真窗口对设计进行仿真;4)通过波形查看仿真结果。
(详见实验指导书)(5)添加实现约束文件。
(详见实验指导书)(6)UCF文件导入。
(详见实验指导书)(7)FPGA在线下载配置:1)连接开发板并给开发板供电;2)边界扫描,初始化链;3)下载比特流文件;4)对FPGA进行编程;5)生成PROM文件;6)将生成的PROM文件烧到PROM芯片中。
(详见实验指导书)(8)关闭配置界面,不保存任何信息。
(一定不要保存任何信息)(9)关闭电源重新上电,程序从PROM自动引导到FPGA芯片中。
(10)给开发板断电,清理器件,实验结束。
九、实验数据及结果分析9.1状态机转移代码module traffic(input clk,input rst,output reg[5:0] lights);reg[2:0] state;reg[3:0] count;parameter S0=3'b000,S1=3'b001,S2=3'b010,S3=3'b011,S4=3'b100,S5=3'b101;always@(posedge clk or posedge rst)beginif(rst)beginstate<=S0;count<=0;endelse begincase(state)S0:if(count<15)beginstate<=S0;count<=count+1;endelse beginstate<=S1;count<=0;endS1:if(count<3)beginstate<=S1;count<=count+1;endelse beginstate<=S2;count<=0;endS2:if(count<3)beginstate<=S2;count<=count+1;endelse beginstate<=S3;count<=0;endS3:if(count<15)beginstate<=S3;count<=count+1;endelse beginstate<=S4;count<=0;endS4:if(count<3)beginstate<=S4;count<=count+1;endelse beginstate<=S5;count<=0;endS5:if(count<3)beginstate<=S5;count<=count+1;endelse beginstate<=S0;count<=0;enddefault state<=S0;endcaseendendalways@(*)begincase(state)S0:lights=6'b100_001;S1:lights=6'b100_010;S2:lights=6'b100_100;S3:lights=6'b001_100;S4:lights=6'b010_100;S5:lights=6'b100_100;default lights=6'b100_001;endcaseendEndmodule9.2 时钟分频代码module clk_div(input clk,input rst,output reg clk_1hz );parameter CNT_WIDTH=5;reg[CNT_WIDTH-1:0] cnt;always@(posedge clk or posedge rst) beginif(rst)begincnt<=0;endelse begincnt<=cnt+1;endendalways@(posedge clk or posedge rst)if(rst)clk_1hz<=0;else if(cnt==25)beginclk_1hz<=~clk_1hz;cnt<=0;endEndmodule9.3 顶层代码module top(input mclk,input wire[3:3] btn,output wire[7:2] Led );wire clk_1hz;wire rst;assign rst=btn[3];clk_div clk_div_inst(.clk(mclk),.rst(rst),.clk_1hz(clk_1hz));traffic traffic_inst(.clk(clk_1hz),.rst(rst),.lights(Led));endmodule9.4 测试代码module text;// Inputsreg mclk;reg [3:3] btn;// Outputswire [7:2] Led;// Instantiate the Unit Under Test (UUT)top uut (.mclk(mclk),.btn(btn),.Led(Led));initial begin// Initialize Inputsmclk = 0;btn = 1;// Wait 100 ns for global reset to finish#100;btn = 0;// Add stimulus hereendparameter PERIOD =20;always begin#(PERIOD/2) mclk =0;#(PERIOD/2) mclk =1;endEndmodule9.5 仿真波形代码(对波形进行相关的文字说明,所截取的波形要覆盖所有状态转移)由图中可以看出,lights显示100001(S0),经过15us后变为100010(S1),接着3us变为100100(S2),再3us变为001100(S3),然后15us变为010100(S4),之后3us变为100100(S5),状态正确。
由图可以看出,clk_1hz周期为1000ns,满足1M hz的要求十、实验结论通过实验,实现了用Xilinx ISE 13.2实现了一个交通灯的电子线路设计与仿真,更加熟练掌握Verilog语言的基本语法。
十一、实验中遇到的问题及相应的解决办法(1)lights状态不发生变化答:在test文件中,令btn初值为1报告评分:指导教师签字:建筑11。