|
![](static/image/common/ico_lz.png)
楼主 |
发表于 2010-4-2 17:31:55
|
显示全部楼层
module button_led(clk,led_switch,led1,led2,led3,led4
);
input clk,led_switch;
output led1,led2,led3,led4;
reg led1,led2,led3,led4;
reg[1:0] led_num;
reg[19:0] count;
/*********************进行按键消抖处理*********************/
parameter cout = 539999;
reg current_state;
reg last_state;
always @ (posedge clk)
begin
if(count==cout)//满20ms就记录开关状态
begin
count <= 0;
current_state <= led_switch;
end
else
count <= count + 1;
end
always @ (posedge clk)
last_state <= current_state;
always @ (posedge clk)
begin
if(last_state==0 && current_state ==1 )//按下是1,没按下是0
led_num <= led_num+1;
end
always @ (led_num)
begin
if(led_num==2'd0)
begin
led1 = 1;
led2 = 0;
led3 = 0;
led4 = 0;
end
else if(led_num==2'd1)
begin
led1 = 0;
led2 = 1;
led3 = 0;
led4 = 0;
end
else if(led_num==2'd2)
begin
led1 = 0;
led2 = 0;
led3 = 1;
led4 = 0;
end
else if(led_num==2'd3)
begin
led1 = 0;
led2 = 0;
led3 = 0;
led4 = 1;
end
end
endmodule
为什么我加入消抖之后就不用再.UCF中加入那句话呢NET "led_switch" CLOCK_DEDICATED_ROUTE = FALSE; |
|