精华内容
下载资源
问答
  • EDA交通灯verilog代码

    2018-07-07 17:50:22
    EDA课程实验交通灯代码,里面有实现的代码,以及操作步骤文档和仿真的文件,可以直接连接实验箱验证设计
  • 交通灯Verilog代码

    2012-12-26 16:32:12
    交通灯Verilog代码 FPGA CPLD
  • 交通灯 verilog

    2013-07-12 11:10:14
    交通灯控制系统 verilog代码完全正确!可试试
  • 交通灯verilog

    2013-07-12 11:06:07
    交通灯控制 verilog代码!非常好!代码经过试验完全正确
  • 基于spartan-3E的交通灯控制系统verilog代码
  • 代码需要用到EL-SOPC4000试验箱上交通灯模块中的发光二极管,即红、黄、绿各三个。依人们的交通常规,“红灯停,绿灯行,黄灯提醒”。其交通灯的亮灭规律为:初始态是两个路口的红灯全亮,之后东西路口的绿灯亮,...
  • verilog实现的交通灯,用状态机实现,七段数码管显示,包含详细讲解,注释,testbench,波形图以及实验报告!内部只写了单方向的交通灯,可以根据自己需要进行修改。
  • 自己写的一个Verilog 交通灯,在DE1上跑过,完全没问题
  • 代码采用verilogHDL开发,实现的十字路口交通灯控制系统。
  • verilog hdl 交通灯代码

    2014-03-27 15:21:57
    主要是一个关于红绿灯的一个简单地verilog hdl 代码
  • 交通灯设计 verilog

    2013-07-25 11:03:52
    verilog编写的交通灯
  • verilog交通灯

    2013-12-03 20:44:10
    verilog交通灯代码基础性 源代码 可根据自身需要进行改进
  • 模拟交通灯实验 程序实现的是模拟十字路口的交通灯自动控制系统。开始南北走向通行,即南北绿灯亮、东 西红灯亮;然后转到南北黄灯亮、东西红灯亮以及南北红灯亮、东西黄灯亮的延时状态;最 后进入东西走向通行,即...
  • verilog交通灯设计

    2013-07-06 00:17:16
    本实验为自主选题设计实验,实验选择具有倒计时显示功能的红黄绿三色交通设计,实验中采用verilog HDL 作为设计功能...并给出了设计电路图,详细的介绍了交通灯的设计流程,实验报告中还附有实验代码实验结果照片图。
  • 交通灯Verilog实现

    2011-10-18 13:29:04
    在ISE开发环境下用Verilog实现交通灯的功能,且用三段式状态机编写,包含所有工程文件。
  • Verilog HDL交通灯设计

    2010-11-29 21:00:06
    这是大学期间我上VerilogHDL的交通灯设计实验报告,报告中除了包括正确测试后的程序代码,我 还加入了非常详细的注释。为了让读者更好理解交通灯程序代码和编写代码的思路,我还特意精心绘制了交通灯程序模块间的...
  • 交通灯状态机verilog

    千次阅读 2020-05-15 15:20:59
    交通灯状态机设计-verilog

    该文章为汇总文章Verilog学习代码总结的状态机——交通灯部分。

    该状态机为mealy型时序电路。
    采用三段式设计方式。

    题目

    设计一个交通灯控制器。一个十字交叉路口,东西方向为主干道(HighWay),南北方向为副干道(CountryWay) 。副干道车辆很少,因此在交叉路口处有车辆探测器(Sensor) ,可以判断副干道是否有车。如果没有车,则主干道始终绿灯(Green) ;如果副干道有车,则在主干道通行40秒后,主干道红灯(Red),而副干道绿灯,通行时间为20秒。这时无论副干道有无车,副干道都要红灯,而主干道绿灯。从绿灯到红灯的转换中间有4秒黄灯(Yellow) 。

    要求:

    1.画出有限状态机,标明状态转换条件;

    2.写出程序代码,标注说明和解释;

    3.写出验证程序,对设计进行全面的验证。


    状态转换图

    在这里插入图片描述

    源代码

    该程序源代码分为2子模块(计数器模块+交通灯模块)+顶模块

    计数器模块

    module counter(out,clk,enable,rst);
    output[6:0]  out;
    input clk, rst,enable;
    reg[6:0] out;
        
    always @ (posedge rst or posedge clk) begin
      if (rst) begin
        out <= 8'b0;
        end else if (enable) begin
        out <= (out + 1)%69;
      end
    end
    
    endmodule
    

    交通灯模块

    module light(highWay,countryWay,counter_enable,clk,rst,senor,count);
    input clk,rst,senor;
    input [6:0] count;
    output counter_enable;
    output [1:0] highWay,countryWay;
    reg counter_enable;
    reg [1:0] highWay,countryWay;
    //标志计数状态
    wire [6:0] count;
    
    //主干状态,副干状态与之对应
    reg [1:0] cur_state,next_state;
    //灯输出结果常量
    parameter GREEN = 2'b00,
              YELLOW = 2'b01,
              RED = 2'b11;
    //状态常量
    parameter PASS = 2'b00,
              WAIT1 = 2'b01,
              WAIT2 = 2'b10,
              STOP = 2'b11;          
    
    //根据下一状态或重置改变现在状态
    always @(posedge rst or posedge clk) begin
      if(rst) begin
        cur_state <= PASS;
        next_state <= PASS;
        counter_enable <= 0;
      end else begin
        cur_state <= next_state;
      end
    end
    
    //不同状态不同输出
    always @(cur_state) begin
      case (cur_state)
        PASS:begin
          highWay = GREEN;
          countryWay = RED;
        end 
        WAIT1:begin
          highWay = YELLOW;
          countryWay = YELLOW;
        end
        WAIT2:begin
          highWay = YELLOW;
          countryWay = YELLOW;
        end
        STOP:begin
          highWay = RED;
          countryWay = GREEN;
        end
        default: begin
          highWay = GREEN;
          countryWay = RED;
        end 
      endcase
    end
    
    //根据输入改变下一预设状态
    always @(senor or count) begin
      next_state = PASS;
      case (cur_state)
        PASS:begin
          if (senor) begin
            if (count==40) begin
              next_state = WAIT1;
            end
            counter_enable = 1;
          end else begin
            counter_enable = 0;
          end
        end
        WAIT1:begin
          next_state = (count==44)?STOP:WAIT1;
        end
        WAIT2:begin
          next_state = (count==68)?PASS:WAIT2;
        end
        STOP:begin
          next_state = (count==64)?WAIT2:STOP;
        end
      endcase
    end
    
    endmodule
    

    顶层模块

    module top(highWay,countryWay,clk,rst,senor);
    input clk,rst,senor;
    output [1:0] highWay,countryWay;
    wire counter_enable;
    wire [6:0] count;
    
    light i1(.highWay(highWay),.countryWay(countryWay),
      .counter_enable(counter_enable),
      .clk(clk),.rst(rst),
      .senor(senor),.count(count));
    
    counter c1(.out(count),.clk(clk),
      .enable(counter_enable),.rst(rst));
    
    endmodule 
    

    注意:当前代码中,默认了主干副干状态相互对应,red(主)-green(副),yellow(主)-yellow(副),green(主)-red(副)。

    但实际上不是这样。

    很多交通灯设计时,只有在red->green时需要穿插一个黄灯,正如题干最后一句。所以我这样的设计实际上是不符合题干要求的。

    如果你想做一个更符合实际的,那么你需要再增加两个变量:cur_state2next_state2来保存副干状态。同时将状态机中的WAIT1状态删去,使得PASS直接指向STOP

    测试代码

    `timescale 1ns/1ns
    module tb_light;
    reg clk,rst,senor;
    wire [1:0] highWay,countryWay;
    parameter INTERVAL = 10;
    
    //初始化各值
    initial begin
        clk = 1'b0;
        rst = 1'b0;
        senor = 1'b0;
    end
    
    //设定时钟周期
    initial 
      forever #(INTERVAL/2) clk = ~clk;
    
    //重置模块
    initial begin
      #INTERVAL rst = 1;
      #INTERVAL rst = 0;
    end
    
    initial begin
      //测试副干有车情况
      #(5*INTERVAL) senor = 1'b1;
      //测试副干无车情况
      #(60*INTERVAL) senor = 1'b0;
      #(100*INTERVAL) $finish;
    end
    
    //实例化模块
    top t1(highWay,countryWay,clk,rst,senor);
    
    endmodule 
    
    

    注意:交通灯模块中是用senor来判断是否在计时状态的。如果测试代码中,使senor=0时是在主干PASS的状态(senor=0意味着副干车没了,在主干PASS的状态下,副干原本的车突然没了?路口调头怕是来不及吧……所以本身算是一个伪命题——当然这排除了设备出故障情况),注意到交通灯模块并没有对计数器模块进行清零,所以下一次使senor=1时,主干通行时间可能会小于40S。

    模拟仿真

    在这里插入图片描述

    展开全文
  • 基于verilog交通灯,带有测试激励。
  • fpga-verilog交通灯.zip

    2020-04-06 17:19:32
    本资源为用Verilog编写的交通灯代码,欢迎下载。本人采用的是Quarters,下载即可用,可编程逻辑器件类课程需要的有缘人可自行下载
  • Verilog交通灯控制模块

    千次阅读 2019-08-06 22:57:36
    Verilog编写行为模块模拟交通灯的控制时序。 【注】该代码不可综合成电路网表。 代码实现: /*---------------------------------------------- Filename: trafic_lights.v Function: 模拟交通灯的控制时序;...

    简介:
    用Verilog编写行为模块模拟交通灯的控制时序。【注】该代码不可综合成电路网表。
    代码实现:

    /*----------------------------------------------
    Filename: trafic_lights.v
    Function: 模拟交通灯的控制时序;[本程序不可综合]
    Author: Zhang Kaizhou
    Date: 2019-8-6 22:20:08
    -----------------------------------------------*/
    `timescale 1ns/1ns
    `define clock_period 100
    module trafic_lights(red, amber, green);
    	//端口定义
    	output red, amber, green;
    	reg clock, red, amber, green;
    	parameter on = 1, off = 0, red_tics = 350, 
    			  amber_tics = 30, green_tics = 200;
    	
    	//初始化
    	initial
    	begin
    		clock = 0; red = off; amber = off; green = off;
    	end
    	
    	//控制时序
    	always
    	begin
    		red = on;
    		light(red, red_tics);
    		amber = on;
    		light(amber, amber_tics);
    		green = on;
    		light(green, green_tics);
    	end
    	
    	//灯亮持续时间的任务
    	task light;
    		//端口定义
    		output color;
    		input [31 : 0] tics;
    		
    		//控制时序
    		begin
    			repeat(tics) @(posedge clock);
    			color = off;
    		end
    	endtask
    	
    	//产生时钟信号
    	always	#`clock_period clock = ~clock;
    endmodule	
    
    /*----------------------------------------------
    Filename: trafic_lights_tb.v
    Function: 测试程序
    Author: Zhang Kaizhou
    Date: 2019-8-6 22:21:02
    -----------------------------------------------*/
    `timescale 1ns/1ns
    module trafic_lights_tb;
    	wire red, amber, green;
    	
    	trafic_lights m0(.red(red), .amber(amber), .green(green));
    endmodule
    

    仿真结果:
    在这里插入图片描述
    以上仿真波形与代码所写控制时序逻辑一致,说明交通灯时序控制模块功能正常。

    展开全文
  • verilog实现交通灯

    2010-04-11 10:00:43
    这是用verilog实现交通灯的常规功能
  • Verilog 交通灯控制器

    千次阅读 多人点赞 2019-11-20 15:05:06
    设计一个交通灯控制器,在数码管上以红、黄、绿三种颜色显示当前状态的剩余时间。持续时间分别为:红灯30s,黄灯5s,绿灯30s。初始为红灯,依次变为绿灯、黄灯、红灯循环显示。输入时钟为1k Hz。 系统设计: 分析...

    简介:
    设计一个交通灯控制器,在数码管上以红、黄、绿三种颜色显示当前状态的剩余时间。持续时间分别为:红灯30s,黄灯5s,绿灯30s。初始为红灯,依次变为绿灯、黄灯、红灯循环显示。输入时钟为1k Hz。
    系统设计:
    分析需求,可将交通控制器系统划分为generate_1s、controller、counter、splitter和decoder5_7共五个模块实现。
    交通灯控制器顶层框图如下:
    在这里插入图片描述
    controller状态转移图如下:
    在这里插入图片描述
    Verilog完整代码实现如下:

    /*-------------------------------------------------
    Filename: traffic_light_controller.v
    Function: 交通灯控制器顶层模块(用于综合成实际电路)
    Author: Zhang Kaizhou
    Date: 2019-11-17 14:28:50
    -------------------------------------------------*/
    `include "generate_1s.v"
    `include "counter.v"
    `include "controller.v"
    `include "splitter.v"
    `include "decoder5_7.v"
    module traffic_light_controller(sys_clk, reset, data_high, data_low, state);
    	//输入输出端口定义
    	input sys_clk, reset;
    	output [1 : 0] state;
    	output [6 : 0] data_high, data_low;
    	
    	//内部寄存器及连线定义
    	wire count_clk;
    	wire [6 : 0] data;
    	wire [3 : 0] data_shi, data_ge;
    	
    	//逻辑实现
    	generate_1s		generate_1s_m0(.sys_clk(sys_clk), .reset(reset), .y(count_clk));
    	counter			counter_m0(.count_clk(count_clk), .reset(reset), .data(data));
    	controller		controller_m0(.clk(count_clk), .reset(reset), .din(data), .state(state));
    	splitter		splitter_m0(.data(data), .data_shi(data_shi), .data_ge(data_ge));
    	decoder5_7		decoder5_7_m0(.reset(reset), .data_shi(data_shi), .data_ge(data_ge), .data_high(data_high), .data_low(data_low));
    endmodule
    
    /*--------------------------------------
    Filename: generate_1s.v
    Function: 将1kHz系统时钟分频产生1Hz时钟
    Author: Zhang Kaizhou
    Date: 2019-11-17 14:28:56
    --------------------------------------*/
    module generate_1s(sys_clk, reset, y);
    	//定义输入输出端口
    	input sys_clk, reset;
    	output y;
    	
    	//内部寄存器定义
    	reg y;
    	reg [9 : 0] cnt;
    	
    	//逻辑实现
    	always@(posedge sys_clk or negedge reset)
    	begin
    		if(!reset)
    		begin
    			y <= 1'b0;
    			cnt <= 10'd0;
    		end
    		else
    		begin
    			if(cnt == 10'd999)
    			begin
    			y <= 1'b1;
    			cnt <= 10'd0;
    			end
    			else
    			begin
    				y <= 1'b0;
    				cnt <= cnt + 1;
    			end
    		end
    	end
    endmodule
    
    /*---------------------------------------------
    Filename: counter.v
    Function: 7位循环减计数器(用于倒计时和状态转移)
    Author: Zhang Kaizhou
    Date: 2019-11-17 14:29:01
    ---------------------------------------------*/
    module counter(count_clk, reset, data);
    	//输入输出端口定义
    	input count_clk, reset;
    	output [6 : 0] data; //64~35, 34~5, 4~0循环减计数
    	
    	//内部寄存器定义
    	reg [6 : 0] data;
    	
    	//逻辑实现
    	always@(posedge count_clk or negedge reset)
    	begin
    		if(!reset) data <= 7'd64; //异步复位
    		else if(data == 7'd0) data <= 7'd64;
    		else data <= data - 7'd1;
    	end
    endmodule	
    
    /*-------------------------------------------------
    Filename: controller.v
    Function: 整个电路的控制模块(用FSM实现)
    Author: Zhang Kaizhou
    Date: 2019-11-17 14:29:06
    -------------------------------------------------*/
    module controller(clk, reset, din, state);
    	//定义输入输出端口
    	input clk, reset;
    	input [6 : 0] din;
    	output [1 : 0] state;
    	
    	//内部寄存器定义
    	reg [1 : 0] state, current_state, next_state;
    	
    	//状态编码
    	parameter red = 2'b00, green = 2'b01, yellow = 2'b10;
    	
    	//时序逻辑实现状态转移
    	always@(posedge clk or negedge reset)
    	begin
    		if(!reset) current_state <= red;
    		else current_state <= next_state;
    	end
    	
    	//组合逻辑实现转移条件判断
    	always@(current_state or din)
    	begin
    		case(current_state)
    			red: next_state = (din == 7'd35) ? green : red;
    			green: next_state = (din == 7'd5) ? yellow : green;
    			yellow: next_state = (din == 7'd0) ? red : yellow;
    		endcase
    	end
    	
    	//组合逻辑实现输出
    	always@(current_state)
    	begin
    		case(current_state)
    			red: state = 2'b00;
    			green: state = 2'b01;
    			yellow: state = 2'b10;
    		endcase
    	end
    endmodule
    
    /*------------------------------------------------------------
    Filename: splitter.v
    Function: 将输入的7位二进制数转换成2个4位的BCD码(分离十位和个位)
    Author: Zhang Kaizhou
    Date: 2019-11-17 14:29:10
    ------------------------------------------------------------*/
    module splitter(data, data_shi, data_ge);
    	//输入输出端口定义
    	input [6 : 0] data;
    	output [3 : 0] data_shi;
    	output [3 : 0] data_ge;
    	
    	//内部寄存器定义
    	reg [3 : 0] data_shi, data_ge;
    	reg [6 : 0] data_display;
    	
    	//显示数据转换
    	always@(data)
    	begin
    		if(data >= 7'd35) data_display = data - 7'd35;
    		else if(data >= 7'd5) data_display = data - 7'd5;
    		else data_display = data;
    	end
    	
    	//用左移加3法将7位二进制数转换为两个4位的BCD码
    	integer i;
    	always@(data)
    	begin
    		data_shi = 4'd0;
    		data_ge = 4'd0;
    		
    		for(i = 6; i >= 0; i = i - 1)
    		begin
    			if(data_ge >= 4'd5) data_ge = data_ge + 4'd3;
    			if(data_shi >= 4'd5) data_shi = data_shi + 4'd3;
    		
    			data_shi = data_shi << 1;
    			data_shi[0] = data_ge[3];
    			data_ge = data_ge << 1;
    			data_ge[0] = data_display[i];
    		end
    	end
    endmodule
    
    /*------------------------------------------------
    Filename: decoder5_7.v
    Function: 将4位BCD码数据转换为7段数码管的显示数据
    Author: Zhang Kaizhou
    Date: 2019-11-17 14:29:16
    ------------------------------------------------*/
    module decoder5_7(reset, data_shi, data_ge, data_high, data_low);
    	//输入输出端口定义
    	input reset;
    	input [3 : 0] data_shi, data_ge;
    	output [6 : 0] data_high, data_low;
    	
    	//内部寄存器定义
    	reg [6 : 0] data_high, data_low;
    	
    	//译码个位数
    	always@(reset or data_ge)
    	begin
    		if(!reset)
    		begin
    			data_high <= 7'b0000110; //7'h06
    			data_low <= 7'b0000001; //7'h01
    		end
    		else
    		begin
    			case(data_ge)
    				4'd0: data_low <= 7'b0000001; //7'h01
    				4'd1: data_low <= 7'b1001111; //7'h4f
    				4'd2: data_low <= 7'b0010010; //7'h12
    				4'd3: data_low <= 7'b0000110; //7'h06
    				4'd4: data_low <= 7'b1001100; //7'h4c
    				4'd5: data_low <= 7'b0101100; //7'h2c
    				4'd6: data_low <= 7'b0100000; //7'h20
    				4'd7: data_low <= 7'b0001111; //7'h0f
    				4'd8: data_low <= 7'b0000000; //7'h00
    				4'd9: data_low <= 7'b0000100; //7'h04
    				default: data_low <= 7'b0110000; //7'h48
    			endcase
    		end
    	end
    	
    	//译码十位数
    	always@(reset or data_shi)
    	begin
    		if(!reset)
    		begin
    			data_high <= 7'b0000110; //7'h06
    			data_low <= 7'b0000001; //7'h01
    		end
    		else
    		begin
    			case(data_shi)
    				4'd0: data_high <= 7'b0000001; //7'h01
    				4'd1: data_high <= 7'b1001111; //7'h4f
    				4'd2: data_high <= 7'b0010010; //7'h12
    				4'd3: data_high <= 7'b0000110; //7'h06
    				default: data_high <= 7'b0110000; //7'h48
    			endcase
    		end
    	end
    endmodule
    
    /*---------------------------------------------------------
    Filename: top_t.v
    Function: 交通灯控制器整个系统的顶层测试文件(用于仿真测试)
    Author: Zhang Kaizhou
    Date: 2019-11-17 14:29:23
    ---------------------------------------------------------*/
    `timescale 1ms/100us
    `define sys_clk_half_period 0.5 //系统时钟频率为1kHz,其半周期为0.5ms
    `include "generate_1s.v"
    `include "counter.v"
    `include "controller.v"
    `include "splitter.v"
    `include "decoder5_7.v"
    module top_t(data_high, data_low, state);
    	//输入输出端口定义
    	output [1 : 0] state;
    	output [6 : 0] data_high, data_low;
    	
    	//内部寄存器及连线定义
    	reg sys_clk, reset;
    	wire count_clk;
    	wire [6 : 0] data;
    	wire [3 : 0] data_shi, data_ge;
    	
    	//产生测试信号
    	initial
    	begin
    		sys_clk = 0;
    		#5 reset = 1;
    		#5 reset = 0;
    		#9.5 reset = 1;
    		#120000 $stop; //仿真120s停止
    	end
    	
    	//产生1kHz的系统时钟sys_clk
    	always #`sys_clk_half_period sys_clk = ~sys_clk;
    	
    	//结构描述
    	generate_1s		generate_1s_m0(.sys_clk(sys_clk), .reset(reset), .y(count_clk));
    	counter			counter_m0(.count_clk(count_clk), .reset(reset), .data(data));
    	controller		controller_m0(.clk(count_clk), .reset(reset), .din(data), .state(state));
    	splitter		splitter_m0(.data(data), .data_shi(data_shi), .data_ge(data_ge));
    	decoder5_7		decoder5_7_m0(.reset(reset), .data_shi(data_shi), .data_ge(data_ge), .data_high(data_high), .data_low(data_low));
    endmodule
    

    ModelSim10.4仿真结果:
    在这里插入图片描述
    总结:
    由上面的仿真结果可知,本次设计的交通灯控制电路实现了,在输入1kHz时钟的驱动下,在数码管上以红、黄、绿(状态编码分别为2’d0、2’d1、2’d2)三种颜色显示当前状态的剩余时间。持续时间分别为:红灯30s,黄灯5s,绿灯30s。初始为红灯,依次变为绿灯、黄灯、红灯循环显示。相应的数码管驱动数据也正确。完成了设计预期。

    展开全文
  • 基于Verilog的实用双向六车道交通灯
  • 简易交通灯控制器Verilog

    千次阅读 2020-07-23 10:24:50
    设计一个简单的交通灯控制器,他有5个状态,每个状态都具有可独立编程确定的时间参数(parameter),假设时钟频率为50Hz(如果仿真时间太长可以做适当的比例修改)。 路口交通灯示意图 设计代码 `timescale 1ns / ...

    设计一个简单的交通灯控制器,他有5个状态,每个状态都具有可独立编程确定的时间参数(parameter),假设时钟频率为50Hz(如果仿真时间太长可以做适当的比例修改)。

    路口交通灯示意图
    路口交通灯示意图

    在这里插入图片描述

    设计代码

    `timescale 1ns / 1ps
    module Test1530(clk,reset,red1,yellow1,green1,red2,yellow2,green2);
    input clk;
    input reset;
    output red1,yellow1,green1;
    reg red1,yellow1,green1;
    output red2,yellow2,green2;
    reg red2,yellow2,green2;
    reg [11:0] count;
    parameter Y1Y2=0,R1Y2=1,G1R2=2,Y1R2=3,R1G2=4;
    parameter timeR1Y2=250,timeG1R2,2500,timeY1R2=250,timeR1G2=2250;
    reg [2:0] state;
    /
    always @(posedge clk)
       if(reset)
          begin
             count<=0;
             state<=Y1Y2;
             red1<=0;yellow1<=1;green1<=0;
             red2<=0;yellow2<=1;green2<=0;
          end
       else      
          case(state)   
             Y1Y2:begin
                     state<=R1Y2;
                     count<=1;
                  end
             R1Y2:begin
                     if(count= =timeR1Y2)
                        begin
                           state<=G1R2;
                           red1=0;yellow1<=0;green1<=1;
                           red2=1;yellow2<=0;green2<=0;
                           count<=1;
                        end
                     else
                        begin
                           state<=R1Y2;
                           red1=1;yellow1<=0;green1<=0;
                           red2=0;yellow2<=1;green2<=0;
                           count<=count+1;
                        end
                  end
             G1R2:begin
                     if(count= =timeG1R2)
                        begin
                           state<=Y1R2;
                           red1=0;yellow1<=1;green1<=0;
                           red2=1;yellow2<=0;green2<=0;
                           count<=1;
                        end
                     else
                        begin
                           state<=G1R2;
                           red1=0;yellow1<=0;green1<=1;
                           red2=1;yellow2<=0;green2<=0;
                           count<=count+1;
                        end
                  end
             Y1R2:begin
                     if(count= =timeY1R2)
                        begin
                           state<=R1G2;
                           red1=1;yellow1<=0;green1<=0;
                           red2=0;yellow2<=0;green2<=1;
                           count<=1;
                        end
                     else
                        begin 
                           state<=Y1R2;
                           red1=0;yellow1<=1;green1<=0;
                           red2=1;yellow2<=0;green2<=0;
                           count<=count+1;
                        end
                  end
             R1G2:begin
                     if(count= =timeR1G2)
                        begin
                           state<=R1Y2;
                           red1=1;yellow1<=0;green1<=0;
                           red2=1;yellow2<=0;green2<=0;
                           count<=1;
                        end
                     else
                        begin
                           state<=R1G2;
                           red1=1;yellow1<=0;green1<=0;
                           red2=0;yellow2<=0;green2<=1;
                           count<=count+1;
                        end
                  end
             default:state<=Y1Y2;
             endcase
    endmodule
    

    测试代码

    `timescale 1ns / 1ps
    module Test1620;
    reg clk;
    reg reset;
    wire red1,yellow1,green1,red2,yellow2,green2;
    always begin
       #10 clk=1;
       #10 clk=0;
    end 
    
    initial begin
       clk=0;
       reset=1;
       #10000;
       reset=0;
    end
    
    Test1530 x1(.clk(clk),
                .reset(reset),
                .red1(red1),
                .yellow1(yellow1),
                .green1(green1),
                .red2(red2),
                .yellow2(yellow2),
                .green2(green2));
    endmodule
    

    仿真波形

    在这里插入图片描述

    展开全文
  • 这个是十字路口的交通灯代码可以适当改写为T字形的代码代码完全能在板子上运行和仿真模拟。是本人多次改写最后上交大大作业。
  • 用于FPGA的Verilog语言交通灯 内涵引脚图
  • 这是一份基于Verilog交通灯设计工程文件,已经在QUARTUS II 8.0 (32-BIT)上测试通过,而关于十字路口交通灯控制系统的工作原理的资料建议自行到网上找一找。
  • verilog编写实现交通灯的控制 实现红绿灯转换 并且用数码管进行计数 对于刚刚入门的人是个很好的选择 因为代码比较简单
  • 各类门简单逻辑电路verilog实现.较大的功能电路,交通灯verilog实现,电子表的verilog实现,流水灯verilog实现
  • FPGA交通灯课程设计,基于Verilog程序语言。包含课程任务书、源代码程序、对应PPT、实验结果的视频讲解。可查看相应的文章详解:https://zhiqianghe.blog.csdn.net/article/details/107022548。

空空如也

空空如也

1 2 3 4 5 ... 18
收藏数 343
精华内容 137
关键字:

交通灯verilog代码