lusolzyy 发表于 2013-8-2 19:24:05

新手求助

大家好,码了一个按键的模块,想实现双按键对应输出十种不同数值,按一次加/减一次,但却按住却一直在加/减,一直查不出原因,求指教
以下为我的源程序
module KEY_CTRL(key,ctrl_out);
        input key;
        output ctrl_out;
       
        reg ctrl_r;
        reg key_r;
       
        assign ctrl_out = ctrl_r;
        always@(key)
        begin
                        key_r = key;
                        if(key_r == 2'b01)
                        begin
                                if(ctrl_r < 4'b1001)
                                        ctrl_r <= ctrl_r + 1'b1;
                                else
                                        ctrl_r <= 4'b0;
                        end
                        else if(key_r == 2'b10)
                        begin
                                if(ctrl_r > 4'b0000)
                                        ctrl_r <= ctrl_r - 1'b1;
                                else
                                        ctrl_r <=4'b1001;
                        end
        end
endmodule

仿真图如下

lusolzyy 发表于 2013-8-2 19:24:44

初学FPGA不久,虚心求教

lusolzyy 发表于 2013-8-2 20:31:37

然后我又做了如下实验:
module test(input a,output b);
reg b_1=0;

always@(a)
begin
        b_1 =~ b_1;
end
assign b = b_1;
endmodule

lusolzyy 发表于 2013-8-2 20:32:36

仿真结果如下

lusolzyy 发表于 2013-8-2 20:33:39

注意到虽然a没有变化,但always内部的程序是每系统时钟上升沿执行一次的,这又是为什么呢?求解释

冰心花语 发表于 2013-8-2 20:39:34

我也不清楚,帮你添添人气吧{:lol:}

lusolzyy 发表于 2013-8-2 20:44:23

冰心花语 发表于 2013-8-2 20:39 static/image/common/back.gif
我也不清楚,帮你添添人气吧

各位大师求解释,调了一下午了

wzavr 发表于 2013-8-2 21:45:04

搞个好标题吧,让别人容易看,也容易帮助你

lusolzyy 发表于 2013-8-3 14:42:55

自己再顶一下吧
页: [1]
查看完整版本: 新手求助