• SystemVerilog例子traffic light


    module traffic_light(
        output logic	green_light,
        				yellow_light,
        				red_light,
        input sensor,
        input [15:0] green_downcnt,
        input [15:0] yellow_downcnt,
        input clock,
        input resetN
        );
    parameter 	R_BIT = 0,
    			G_BIT = 1,
    			Y_BIT = 2;
    		
    enum logic [2:0] {RED	= 3'd001<<R_BIT,
    				 GREEN	= 3'b001<<G_BIT,
    				 YELLOW = 3'b001<<Y_BIT} State, Next;
    						
      @(posedge clock, negedge resetN)
    	if(!resetN) State <= RED;
    	else			State <= Next;
    	
    always_comb begin: set_next_state
    	Next = State;
    	unique case(1'b1)
    		State[R_BIT]:	if(sensor)				Next = GREEN;
    		State[G_BIT]:	if(green_downcnt == 0) 	Next = YELLOW;
    		State[Y_BIT]:	if(yellow_downcnt == 0)	Next = RED;
    	endcase
    end: set_next_state
    
    always_comb begin: set_output
    	{green_light, yellow_light, red_light} = 3'b000;
    	unique case(1'b1)
    		State[R_BIT]:	red_light		= 1'b1;

    		State[G_BIT]:	green_light		= 1'b1;
    		State[Y_BIT]:  	yellow_light	= 1'b1;
    	endcase
    end: set_output
    
    endmodule
    

      

  • 相关阅读:
    ORACLE函数<四>
    Oracle中的伪列<三>
    PL/SQL<八>函数
    invoice
    quite
    做人小结
    wsdl 学习笔记
    name, middle name, first name, last name
    小感叹
    qualified、quantity
  • 原文地址:https://www.cnblogs.com/Neddy/p/2545314.html
Copyright © 2020-2023  润新知