⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exp2.txt

📁 交通灯状态机的实现
💻 TXT
字号:
timescale 1ns / 1ps

module trafficLight2(reset,clk, snCar, ewCar,snRed, snYellow, snGreen,ewRed, ewYellow, ewGreen);
 input reset,clk,snCar,ewCar;
 output snRed, snYellow, snGreen,ewRed, ewYellow, ewGreen;
 reg[2:0] state;
 reg  snRed,snYellow,snGreen,ewRed, ewYellow, ewGreen;
 reg[7:0] count;

 //设定count的初始值
 initial begin
             count = 8'b0;
	 end	 

 //设定状态值
 parameter 
           idle    ='d0,
           ewgreen ='d1, 
	   ewwait  ='d2,
	   ewyellow='d3,
	   sngreen ='d4,
	   snwait  ='d5,
	   snyellow='d6;

//未付state初始值
 always @(posedge clk)
   if(reset)
      begin
       state<=idle;
      end
   else				  	
    case(state)	
        idle:
              if(ewcar==1)
                  begin
                       state<=ewgreen;
                  end
              else
                       state<=sngreen;

        ewgreen: begin
	  	 ewGreen <= 1;
		 snRed   <= 1;
		 snYellow<= 0;
		 snGreen <= 0;
		 ewRed   <= 0;
		 ewYellow<= 0;
      
	  	    if(count <8'b11000100)
		      begin
			count <= count+1;
			if (count==8'b11000100)
			  begin
			    state <= ewwait;
			    count <= 0;
			  end
		       end
                 end


	 ewwait: begin
		    if (!snCar) 
			begin
	  		  ewGreen <= 1;
			  snRed   <= 1;
			  snYellow<= 0;
			  snGreen <= 0;
			  ewRed   <= 0;
			  ewYellow<= 0;
			 end 
		     else state <= ewyellow ;
	         end

	 ewyellow: begin 
	 		ewYellow <= 1;
			snRed    <= 1;
			snYellow <= 0;
			snGreen  <= 0;
			ewRed    <= 0;
			ewGreen  <= 0;
			   if(count <8'b00000100)
				begin
				  count <= count+1;
				     if (count==8'b00000100)
				        begin 
					  state <= sngreen;
					  count <= 0;
					end
				end
		      end

	 sngreen: begin
	  		 snGreen <= 1;
			 ewRed   <= 1;
 		       	 snRed   <= 0;
	         	 snYellow<= 0;
		         ewYellow<= 0;
			 ewGreen <= 0;
	  	   
                   if(count <8'b11000100)
		     begin
	         		count <= count+1;
		 	if (count==8'b11000100)
			   begin 
				state <= snwait;
				count <= 0;
		           end
		      end
		   end

	 snwait:begin
		      if (!ewCar) 
			begin
			   snGreen <= 1;
			   ewRed   <= 1;
			   snRed   <= 0;
			   snYellow<= 0;
			   ewYellow<= 0;
			   ewGreen <= 0;
			end 
		       else state <= snyellow ;
		end

	 snyellow: begin 
	 		snYellow <= 1;
			ewRed <= 1;
			snRed<=0;
			snGreen<=0;
			ewYellow<=0;
			ewGreen<=0;
			    if(count <8'b00000100)
		               begin
				   count <= count+1;
			             if (count==8'b00000100)
				    begin
			      	      state <= ewgreen;
				      count <= 0;
			   	    end
				end
		    end
	
        default: state <= ewyellow;
	
        endcase		  	

endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -