[CPLD] 按键按下与弹起的测试

[复制链接]
1587|6
 楼主| nfnf 发表于 2015-10-28 15:27 | 显示全部楼层 |阅读模式
我在网上买了块EPM1270T144C5N的CPLD板,其中有个按键测试程序,我想把它改一下实现按键的按下与弹起的测试,可是就是报错,不能通过,请各位指教。下面是代码。
module joystick(
                                        clk,
                                        reset,
                                        key_up,
                                        key_down,
                                        key_left,
                                        key_right,
                                        key_upr,
                                        key_downr,
                                        key_leftr,
                                        key_rightr,
                                        led
               );
input clk,reset;
input key_up,key_down,key_left,key_right,key_upr,key_downr,key_leftr,key_rightr;
output[3:0] led;

reg[3:0] led_reg;
reg[10:0] Count1;
reg  Count;
reg up_down;
always@(posedge clk or negedge reset)
if(!reset)
Count1<=11'd0;
else if(Count1==11'd1999)
Count=~Count;
else
Count1<=Count1+1'b1;

assign led=led_reg;
always@(posedge Count or negedge reset)
if(!reset)
begin
led_reg<=4'b1111;
up_down<=1'b1;//up
end
/*
else if(!key_up)
led_reg<=4'b1110;
else if(!key_down)
led_reg<=4'b0111;
else if(!key_left)
led_reg<=4'b1101;
else if(!key_right)
led_reg<=4'b1011;
else if(!key_upr)
led_reg<=4'b1100;
else if(!key_downr)
led_reg<=4'b0011;
else if(!key_leftr)
led_reg<=4'b1001;
*/
else if(!key_rightr)
//led_reg<=4'b1010;
up_down<=1'b0;//down
else
led_reg<=led_reg;

//assign led=led_reg;
always@(posedge Count or negedge reset)
if(key_rightr)
begin
if(up_down==0)
        begin
        led_reg<=led_reg+1'b1;
        up_down<=1'b1;
        end
end




endmodule
xxyyzz123 发表于 2015-10-28 16:59 | 显示全部楼层
要做防抖动滤波
 楼主| nfnf 发表于 2015-10-29 08:37 | 显示全部楼层
能说的明白点吗?
 楼主| nfnf 发表于 2015-10-30 08:54 | 显示全部楼层
怎么没人回答呢?人气太少?
titanyehua 发表于 2015-10-30 11:42 | 显示全部楼层
一般按键要进行防抖动设计,将按下去瞬间不稳定的状态滤掉,不然容易出现问题
feihufuture 发表于 2015-10-30 16:15 | 显示全部楼层
titanyehua 发表于 2015-10-30 11:42
一般按键要进行防抖动设计,将按下去瞬间不稳定的状态滤掉,不然容易出现问题 ...

reaperzero 发表于 2015-10-30 21:55 | 显示全部楼层
本帖最后由 reaperzero 于 2015-10-30 22:09 编辑

这,没注释,,,所以功能上能不能实现没了解
编译了下,出错的地方说你LED_REG有多个赋值,就是说寄存器不要同时在多个always里赋值



您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部