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

📄 新建 文本文档.txt

📁 交通灯状态机的实现
💻 TXT
字号:
module trafficLight(clk_system,reset,snCar, ewCar,						  			snRed, snYellow, snGreen,						  			ewRed, ewYellow, ewGreen);		input	clk_system;		input	reset;		input	snCar;		input	ewCar;		output	snRed, snYellow, snGreen;		output	ewRed, ewYellow, ewGreen;				reg	snRed, snYellow, snGreen;		reg	ewRed, ewYellow, ewGreen;		reg[3:0]	state;		reg[7:0]	counter;		reg	enable;	  				initial			begin					snRed <= 0;					snYellow <= 0;					snGreen <= 0;					ewRed <= 0;					ewYellow <= 0;					ewGreen <= 0;										state <= 4'b0001;										counter = 0;					enable = 0;								end									always@(posedge clk_system)			if(reset)				begin					snRed <= 0;					snYellow <= 0;					snGreen <= 0;					ewRed <= 0;					ewYellow <= 0;					ewGreen <= 0;										state <= 4'b0001;										          counter <= 0;          enable <= 0;													end						else				case({snCar,ewCar})					2'b01 :                   begin                    ewGreen <= 1;                    ewYellow <= 0;                    ewRed <= 0;                                                    snGreen <= 0;                    snYellow <= 0;                    snRed <= 1;                                                           	state <= 4'b0001;															          counter <= 0;					          enable <= 0;					          									                  end														2'b10 :                   begin                    ewGreen <= 0;                    ewYellow <= 0;                    ewRed <= 1;                                                    snGreen <= 1;                    snYellow <= 0;                    snRed <= 0;                                       	state <= 4'b0001;															          counter <= 0;					          enable <= 0;					          	                                        									end				            2'b00 : 				          begin				            state <= 4'b0001;															          counter <= 0;					          enable <= 0;					        end								2'b11 :							begin    		        	    		        	case(state)    		          4'b0001:begin                                                      if(counter >=50 )                                begin                                state <= 4'b0010;                                counter <= 0;                                enable <= 0;                              end                                                            else  if(enable == 0)      		                    begin    		                        ewGreen   <= 1;                                ewYellow  <= 0;                                ewRed     <= 0;                                                                    snGreen   <= 0;                                snYellow  <= 0;                                snRed     <= 1;                                                                                                                  enable  <= 1;                                                              counter <= counter + 1;                               end                                                       else  counter <= counter + 1;                                                          end                                                                    		          4'b0010:begin                                                      if(counter >=20 )                                begin                                state   <= 4'b0100;                                counter <= 0;                                enable  <= 0;                              end                                                            else  if(enable == 0)      		                    begin    		                        ewGreen   <= 0;                                ewYellow  <= 1;                                ewRed     <= 0;                                                                    snGreen   <= 0;                                snYellow  <= 0;                                snRed     <= 1;                                                                                                                  enable  <= 1;                                                              counter <= counter + 1;                               end                                                       else  counter <= counter + 1;                                                          end                                                                    		          4'b0100:begin                                                      if(counter >=50 )                                begin                                state   <= 4'b1000;                                counter <= 0;                                enable  <= 0;                              end                                                            else  if(enable == 0)      		                    begin    		                        ewGreen   <= 0;                                ewYellow  <= 0;                                ewRed     <= 1;                                                                    snGreen   <= 1;                                snYellow  <= 0;                                snRed     <= 0;                                                                                                                  enable  <= 1;                                                              counter <= counter + 1;                               end                                                       else  counter <= counter + 1;                                                          end                                                                        		          4'b1000:begin                                                      if(counter >=20 )                                begin                                state   <= 4'b0001;                                counter <= 0;                                enable  <= 0;                              end                                                            else  if(enable == 0)      		                    begin    		                        ewGreen   <= 0;                                ewYellow  <= 0;                                ewRed     <= 1;                                                                    snGreen   <= 0;                                snYellow  <= 1;                                snRed     <= 0;                                                                                                                  enable  <= 1;                                                              counter <= counter + 1;                               end                                                       else  counter <= counter + 1;                                                          end                                                                                                                            		        endcase						            				end								endcase    								endmodule

⌨️ 快捷键说明

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