zoukankan      html  css  js  c++  java
  • 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要接全局时钟!!!!!!!!!否则后果自负!”
    总结:暂时还没有遇到,但是这是个很好的建议,以后 可以注意去做

  • 相关阅读:
    java cocurrent并发包
    阻塞队列只有一个线程在同一时刻对其进行或者读或者写
    在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度。
    深入理解生产者消费者
    java并发编程阻塞队列
    高并发
    ClassLoader Java中类加载出现在哪个阶段,编译期和运行期? 类加载和类装载是一样的吗
    JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
    Java并发编程-Executor框架(转)
    Java主线程等待所有子线程执行完毕再执行解决办法(转)
  • 原文地址:https://www.cnblogs.com/fhyfhy/p/4562062.html
Copyright © 2011-2022 走看看