當前位置:編程學習大全網 - 編程軟體 - 八路彩燈控制器的設計大神們幫幫忙

八路彩燈控制器的設計大神們幫幫忙

妳試試這個行不行: module LED(L_out,clk,resetn,contr); input clk,resetn; input [1:0]contr; output[7:0] L_out; reg[7:0] L_reg; wire clk_gen; reg [2:0] count; reg clk1,clk2,clk3; reg [4:0] state,nextstate; parameter[4:0] idle =5'b00001, stateA=5'b00010, stateB=5'b00100, stateC=5'b01000, stateD=5'b10000; assign L_out=L_reg; always@(posedge clk or negedge resetn) if (resetn==0) begin count<=3'b0;clk1<=0;clk2<=0;clk3<=0; end else if(count==3'b111) count<=0; else count<=count+1; always@(count) begin if (count==3'b001||count==3'b011||count==3'b101||count==3'b111) clk1=~clk1; if (count==3'b011||count==3'b111) clk2=~clk2; if (count==3'b111) clk3=~clk3; end /****** always@(contr) case (contr) case(contr) 2'b00: clk_gen=clk; 2'b01: clk_gen=clk1; 2'b10: clk_gen=clk2; 2'b11: clk_gen=clk3; endcase *******/ assign clk_gen=(contr==0)?clk:(contr==1)?clk1:(contr==2)?clk2:(contr==3)?clk3:1'bx; always@(negedge clk or negedge resetn) if (resetn==1'b0) begin state<=idle; nextstate<=0;L_reg<=8'b1111_1110;end else state<=nextstate; always@(posedge clk_gen) case (state) idle : begin L_reg<=8'b0111_1111;nextstate<=stateA; end stateA: begin if(L_reg!=8'b1111_1110) L_reg<={1'b1,L_reg[7:1]}; else L_reg<=8'b1111_1111; end stateB: begin if(L_reg!=8'b0000_0001) L_reg<={1'b0,L_reg[7:1]}; else L_reg<=8'b0000_0000; end stateC: begin if(L_reg!=8'b1111_1110) L_reg<={1'b1,L_reg[7:1]}; else L_reg<=8'b1000_0000; end stateD: begin if(L_reg!=8'b0000_0001) L_reg<={1'b0,L_reg[7:1]}; else L_reg<=8'b0111_1111; end endcase always @( L_reg)begin case (L_reg) 8'b1111_1110: if(state==stateA) nextstate=stateB; else if(state==stateC) nextstate=stateD; 8'b0000_0001: if(state==stateB) nextstate=stateC; else if(state==stateD) nextstate=stateA; default : nextstate=state; endcase end endmodule

  • 上一篇:C++編程:寫壹個表示時間的結構體,有年月日時秒的成員,可以使用short類型 (在主程序輸入輸出)
  • 下一篇:網上學習和思考不值得孩子選擇。老師會幫孩子回答課後問題嗎?
  • copyright 2024編程學習大全網