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

📄 jiaotongdeng.v

📁 交通灯程序
💻 V
字号:
//date:2007/7/1  traffic lamp on the crossing/* singal definition as follows:clk: ??????en?????lampa???A??4????????lamp0?lamp3?????A???????????????lampb???B??4????????lamp0?lamp3?????A???????????????acount???A?????????????8??????2????bcount???B?????????????8??????2????  */module traffic(clk,en,lampa,lampb,acount,bcount);    output[7:0] acount,bcount;    output[3:0] lampa,lampb;    input clk,en;    reg[7:0]numa,numb;    reg tempa,tempb;    reg[2:0]counta,countb;    reg[7:0]ared,ayellow,agreen,aleft,bred,byellow,bgreen,bleft;    reg[3:0]lampa,lampb;            always @(en)      if (!en)        begin            ared        <=8'b01010101;  //55s            ayellow     <=8'b00000101;  //5s            agreen      <=8'b01000000;  //40s            aleft       <=8'b00010101;  //15s            bred        <=8'b01100101;  //65s            byellow     <=8'b00000101;  //5s            bleft       <=8'b00010101;  //15s            bgreen      <=8'b00110000;  //30s        end        assign  acount=numa;    assign  bcount=numb;            always @(posedge clk)       begin           if(en)              begin                if(!tempa)                   begin                      tempa<=1;                                            case(counta) //??????                          0: begin                                numa<=agreen;                               lampa<=2;                               counta<=1;                             end                          1: begin                                numa<=ayellow;                               lampa<=4;                               counta<=2;                             end                          2: begin                                numa<=aleft;                               lampa<=1;                               counta<=3;                             end                         3:  begin                                numa<=ayellow;                               lampa<=4;                               counta<=4;                             end                         4:  begin                                numa<=ared;                               lampa<=8;                               counta<=0;                             end                         default: lampa<=8;                     endcase                  end                  else begin                      if(numa>1)                        if(numa[3:0])                          begin                              numa[3:0]<=4'b1001;                              numa[7:4]<=numa[7:4]-1;                          end                        else numa[3:0]<=numa[3:0]-1;                        if(numa==2)                            tempa<=0;                       end                end          else            begin             lampa<=0;             tempa<=0;            end    end                        always@(posedge clk)      begin         if(en)           begin               if(!tempa)                 begin                     tempb<=1;                     case(countb)                         0: begin                             numb<=bred;                             lampb<=8;                             countb<=1;                            end                         1: begin                             numb<=bgreen;                             lampb<=2;                             countb<=2;                            end                         2: begin                             numb<=byellow;                             lampb<=4;                             countb<=3;                            end                         3: begin                             numb<=bleft;                             lampb<=1;                             countb<=4;                            end                         4: begin                             numb<=byellow;                             lampb<=4;                             countb<=0;                            end                            default: lampb<=8;                     endcase                  end                 else                  begin               //???                      if(numb>1)                        if(!numb[3:0])                          begin                              numb[3:0]<=9;                              numb[7:4]<=1;                          end                        else                         numb[3:0]<=numb[3:0]-1;                         if(numb==2)  tempb<=0;                  end            end        else           begin               lampb<=4'b1000;               tempb<=0;               countb<=0;           end    end   endmodule                                           

⌨️ 快捷键说明

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