请教:用两个按键来控制流水灯的左右移动问题

2019-07-16 00:25发布

module led1(clk,rst,led,c1,c2);
input clk;
input rst;
input c1,c2;
output [7:0]led;

reg [7:0]led;
reg [24:0]count;
reg flag1,flag2;
wire count_clk;
assign count_clk=(count==25'd24999999)?1:0;
always@(negedge clk)
begin
        if(!rst)
                count<=0;
        else if(count<25'd24999999)
                count<=count+1'd1;
        else count<=0;
end
always@(c2 or c1)
begin
                flag1<=~c1;
                flag2<=~c2;
end
always@(negedge clk)
begin
        if(!rst)
                led<=8'b1111_1110;
        else if(count_clk)
        begin
        if(flag1)
                led<={led[6:0],led[7]};
        else if(flag2)
                led<={led[0],led[7:1]};
        else led<=8'b1111_1110;
        end
end
endmodule
以上是我写的代码,但是板上的现象是我必须要一直按着按键才可以使其左移或右移,我分析原因是当我松手的时候,按键上升沿触发,这样又会使flag为零,这样流水灯就不动了,所以我想请教下各位高手如何修改程序是我只要按一下就可以改变流水灯流向,谢谢大家!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
yuying2015
1楼-- · 2019-07-16 01:11
你的程序输入信号一变化状态就取反了,根据读取按键值的实际情况设置移动方向就好了
wshyadd
2楼-- · 2019-07-16 05:58
 精彩回答 2  元偷偷看……
wshyadd
3楼-- · 2019-07-16 11:19
yuying2015 发表于 2014-10-25 23:00
你的程序输入信号一变化状态就取反了,根据读取按键值的实际情况设置移动方向就好了 ...

问题已解决,这么简单。。。我二了,谢谢
SYM_Fone
4楼-- · 2019-07-16 14:50
wshyadd 发表于 2014-10-26 10:42
问题已解决,这么简单。。。我二了,谢谢

您好,我是学习fpga的新手,想请教下您出现的问题是怎么解决的,谢谢

一周热门 更多>