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

📄 十字交通灯.txt

📁 十字交通灯的程序
💻 TXT
字号:
 module top(clk,rst,R1,Y1,G1,R2,Y2,G2,led,sel);
       input clk,rst;
       output R1,Y1,G1,R2,Y2,G2;
       output [6:0] led;
       output [3:0]sel;
       reg R1,Y1,G1,R2,Y2,G2;
       reg [25:0]c;
       reg [25:0]c1;
       reg [6:0] led;
       reg [3:0] led1;
       reg [3:0] led2;
       reg [3:0] led3;
       reg [3:0] led4;
       reg [3:0] sel;
       reg [3:0] din;
       reg [4:0] fin;
       reg [1:0]state;
       parameter S0=0,S1=1,S2=2,S3=3;
       always@(posedge clk)
       begin
            if(!rst)begin
                     R1<=0;Y1<=0;G1<=0;R2<=0;Y2<=0;G2<=0;
                     led1<=3;led2<=0;led3<=2;led4<=5;
                     c<=0;fin<=0;
				 state<=S0;
                    end
            else case(state)
            S0:begin
                    R1<=0;Y1<=1;G1<=1;R2<=1;Y2<=1;G2<=0;
                    if(fin==25)begin
                                    state<=S1;
                                    fin<=0;
                                    led1<=0;
                                    led2<=5;
                                    led3<=0;
                                    led4<=5;
                                end
                    else if(c<5000_0000)c<=c+1;
                    else begin
                              c<=0;
                              fin<=fin+1;
                              if(led2==0)begin
                                              led1<=led1-1;
                                              led2<=9;
                                              led4<=led4-1;
                                         end
                             else if(led4==0)begin
                                              led2<=led2-1;
                                              led3<=led3-1;
                                              led4<=9;
                                             end
                             else begin
                                       led2<=led2-1;
                                       led4<=led4-1;
                                  end
                end
			 end
           S1:begin
                   R1<=0;Y1<=1;G1<=1;R2<=1;G2<=1;		                  
                   if(fin==5)begin
                             state<=S2;
                             fin<=0;
                             led1<=2;
                             led2<=5;
                             led3<=3;
                             led4<=0;
                            end
                  else if(c<5000_0000)c<=c+1;
                  else begin
			             fin<=fin+1; 
                            c<=0;
                            Y2<=~Y2;
                            led2<=led2-1;
                            led4<=led4-1;
                       end
             end 
        S2:begin
                    R1<=1;Y1<=1;G1<=0;R2<=0;Y2<=1;G2<=1;
                    if(fin==25)begin
                                    state<=S3;
                                    fin<=0;
                                    led1<=0;
                                    led2<=5;
                                    led3<=0;
                                    led4<=5;
                                end
                    else if(c<5000_0000)c<=c+1;
                    else begin
                              c<=0;
                              fin<=fin+1;
                              if(led2==0)begin
                                              led1<=led1-1;
                                              led2<=9;
                                              led4<=led4-1;
                                         end
                             else if(led4==0)begin
                                              led2<=led2-1;
                                              led3<=led3-1;
                                              led4<=9;
                                             end
                             else begin
                                       led2<=led2-1;
                                       led4<=led4-1;
                                  end
                end
			 end
           S3:begin
                   R1<=1;G1<=1;R2<=0;Y2<=1;G2<=1;
                   if(fin==5)begin
                             state<=S0;
                             fin<=0;
                             led1<=3;
                             led2<=0;
                             led3<=2;
                             led4<=5;
                            end
                  else if(c<5000_0000)c<=c+1;
                  else begin
			             fin<=fin+1; 
                            c<=0;
                            Y1<=~Y1;
                            led2<=led2-1;
                            led4<=led4-1;
                       end
             end 
                              
       endcase
	  end
      always @(posedge clk) 
      begin 
           if(!rst) 
               begin
                    led<=7'b0111111;
                    sel[3:0]<=4'b1110;
                    c1<=0;
                    din<=0;	 
               end 
           else  if(c1<10_0000)c1<=c1+1;
           else begin
    	          c1<=0;
	          sel[0]<=sel[3];
	          sel[3:1]<=sel[2:0];      
                  case(sel)
		       4'b1110: din<=led4;
		       4'b1101: din<=led3;
		       4'b1011: din<=led2;
                 4'b0111: din<=led1;
     	          endcase	 
           
           case(din) 
           0:led<=7'b011_1111;
           1:led<=7'b000_0110;
           2:led<=7'b101_1011;
           3:led<=7'b100_1111;
           4:led<=7'b110_0110;
           5:led<=7'b110_1101;
           6:led<=7'b111_1101;
           7:led<=7'b000_0111;
           8:led<=7'b111_1111;
           9:led<=7'b110_1111;
           default:led<=7'b011_1111;
          endcase 		    
          end
		
		 
       end 
  endmodule
              

⌨️ 快捷键说明

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