• RST_n的问题


     有一个灰常郁闷的问题。。。

    module CLK_Generater(
                        input        CLOCK_100,
                        input        RST_n,
                        input        Key,
                        output    reg    [3:0]    CLK_DivChoose,

                        );
    reg     [19:0]    count;            //Delay_10ms
    reg             CLK_100Hz;         //100HZ(10ms)时钟信
    reg     [2:0]    state;          //状态标志

    reg        [16:0]    cnt;
    reg        [17:0]    Div_cnt;

    always @(posedge CLOCK_100 or negedge RST_n)
    begin
        if(!RST_n)
            begin
            CLK_100Hz<=0;
            count<=0;
            end
        else
            begin
            if(count<20'd1000000)
                begin
                count<=count+1'b1;
                CLK_100Hz<=CLK_100Hz;
                end
            else
                begin
                count<=0;
                CLK_100Hz<=~CLK_100Hz;
                end   
            end
    end

    always@(posedge CLK_100Hz or negedge RST_n)
    begin
        if(!RST_n)
            CLK_DivChoose <= 4'h0;
        else
            begin
            case(state)                //按键,不按下去的时候是VCC高,按下去的时候是GND低
            0:
                begin
                if(!Key)            //检测键盘是否被按下(Delay_5ms)
                    state <= 1;
                else
                    state <= 0;        //未按下,循环检测
                end
            1:
                begin
                if(!Key)            //检测键盘是否真的被按下,还是抖动(消抖动(Delay_5ms))
                    state <= 2;        //检测到不是抖动,进行下一步操作
                else
                    state <= 0;        //是抖动,回去继续检测按键
                end
            2:
                begin           
                CLK_DivChoose <= CLK_DivChoose+1'b1;
                state <= 3;            //只进行加1操作,不连加           
                end
            3:
                begin
                if(Key)                //松手(VCC)检测,有可能是抖动
                    state <= 4;
                else                //检测到还是(GND)低电平,未松手
                    state <= 3;
                end
            4:
                begin
                if(Key)                //松手(VCC)检测,有可能是抖动
                    state <= 0;
                else
                    state <= 4;        //检测到还是(GND)低电平,未松手
                end
            endcase
            end
    end

    endmodule

    CLK_DivChoose 同时接到4个LED上面,RST_n是复位,Key是加,效果就是按RST_n全暗,按Key LED加1

    但是郁闷的是不行,最后发现RST_n我接到了普通IO口上面,他NND竟然就是不行,但是我要是接到CLK2上面去了,系统灰常稳定,灰常稳定

    铭记:“RST_n要接全局时钟!!!!!!!!!否则后果自负!”
    总结:暂时还没有遇到,但是这是个很好的建议,以后 可以注意去做

  • 相关阅读:
    洛谷 P1032 字串变换
    map && multimap
    【转载】Pycharm调试高效,还是pdb调试高效? (在服务端)
    弱国无外交 弱国一定无外交吗
    [转发]Linux性能测试工具之Lmbench特性、安装及使用
    fedora21 桌面用户自动登录lightdm.conf -20190520 方法
    获取显卡硬件信息lspci -vnn | grep VGA -A 12
    mate桌面用户 root 自动登录lightdm.conf -20190520 方法【fedora 21】mate
    在线文本差异对比
    【科目三】机考 教练不出话 态度要好
  • 原文地址:https://www.cnblogs.com/fhyfhy/p/4562062.html
Copyright © 2020-2023  润新知