zoukankan      html  css  js  c++  java
  • 异步复位,同步释放

          在系统复位时,如果clk的上升沿与rst_n的下降沿同时到达,系统会先响应复位信号。但是clk上升沿与rst_n 上升沿同时到达使,就可能会出现短暂的竞争冒险问题。

    解决方法:

    1、  异步复位设计:优点:节省资源,设计简单,方便FPGA识别复位信号。

                              缺点:在复位释放时容易出现竞争冒险,容易受到毛刺的干扰。

    2、  同步复位设计:优点:降低亚稳态概率,100%的同步电路,大大有利于时序分析,综合出来的fmax一般比较高。滤除高于时钟频率的毛                                     刺。  

                              缺点:复位信号有效长必须大于时钟周期。浪费资源(DFF都只有异步复位端,没有同步复位端)。

    3、  异步复位的同步化设计:先用D触发器打一拍然后提供给剩下的时序电路使用。

               异步复位:针对D触发器它是异步的。

               同步释放:同步时钟的时候才有效,同步化复位电路。

      异步复位,同步释放 的具体方法:

          1,  无PLL,可以先延时一段时间后送出一个延时完成标志信号。

         

    reg   rst_n1,rst_n2;
     always @(posedge clk)   //同步化
      begin
         if(!rst_n)
           begin
               rst_n1 <= 0;
                 rst_n2 <= 0;
               end
            else 
             begin
               rst_n1 <= 1;
                 rst_n2 <= rst_n;         
              end
         end
         
         reg           delay_done; // 延时完成标志
         wire          rst_n_n;
         assign  rst_n_n = rst_n2&delay_done; 
    View Code

         2、有PLL的情况下,借助PLL时钟完成所存信号的锁存端。  

           

    reg   rst_n1,rst_n2;
         always @(posedge clk)   //同步化
            begin
             if(!rst_n)
                 begin
                     rst_n1 <= 0;
                     rst_n2 <= 0;
                     end
                else 
                 begin
                     rst_n1 <= 1;
                     rst_n2 <= rst_n;         
                    end
             end
        
         wire        locked; //PLL完成所存信号
         wire          rst_n_n;
         assign  rst_n_n = rst_n2&locked; 
    View Code

        PS:推荐另一篇文章:

              对于异步复位、同步释放的理解:http://group.chinaaet.com/334/84221

              

  • 相关阅读:
    第二阶段站立会议03
    第二阶段站立会议02
    第二阶段站立会议01
    第十一周进度条
    小强大扫荡
    测试计划
    用户体验
    各组意见
    第一阶段绩效评估
    站立会议10
  • 原文地址:https://www.cnblogs.com/fhyfhy/p/4433953.html
Copyright © 2011-2022 走看看