|  | 
 
| module lcd_button2( clk,
 rst,
 led_d1,
 led_d2,
 led_d3,
 sw1,
 sw2,
 sw3
 );//按键按下,数码管依次显示0-9
 input clk;
 input rst;
 input sw1,sw2,sw3;
 output led_d1,led_d2, led_d3;
 
 
 reg [2:0] key_rst;
 always @(posedge clk or negedge rst)
 if(!rst)
 key_rst <= 3'b111;
 else
 key_rst <= {sw3,sw2,sw1};
 
 reg[2:0] key_rst_r;
 always @(posedge clk or negedge rst)
 if(!rst)
 key_rst_r <= 3'b111;
 else
 key_rst_r <= key_rst;
 wire[3:0] key_an = key_rst_r & (~key_rst);
 
 reg[19:0] cnt;
 
 always @(posedge clk or negedge rst)
 if(!rst)
 cnt <= 0;
 else if(key_an) cnt <= 0;
 else cnt <= cnt+1'b1;
 
 reg [2:0] low_sw;
 always @(posedge clk or negedge rst)
 if(!rst)
 low_sw <= 3'b111;
 else if(cnt==20'hfffff)
 low_sw <= {sw3,sw2,sw1};
 
 reg[2:0] low_sw_r;
 
 always @(posedge clk or negedge rst)
 if(!rst)
 low_sw_r <= 3'b111;
 else
 low_sw_r <= low_sw;
 
 wire [2:0]  led_ctr =low_sw_r[2:0]&(~low_sw[2:0]);
 
 reg d1;
 reg d2;
 reg d3;
 always @(posedge clk or negedge rst)
 if(!rst) begin
 d1 <= 1'b0;
 d2 <= 1'b0;
 d3 <= 1'b0;
 
 end
 
 else begin
 if(led_ctr[0]) d1<=~d1;
 if(led_ctr[1]) d2<=~d2;
 if(led_ctr[2]) d3<=~d3;
 end
 assign led_d3=d3?1'b1:1'b0;
 assign led_d2=d2?1'b1:1'b0;
 assign led_d1=d1?1'b1:1'b0;
 
 endmodule
 | 
 |