zoukankan      html  css  js  c++  java
  • 复位小节-1

    1、总的来说,同步复位的优点大概有3条:
      a、有利于仿真器的仿真。
      b、可以使所设计的系统成为100%的同步时序电路,这便大大有利于时序分析,而且综合出来的fmax一般较高。
      c、因为他只有在时钟有效电平到来时才有效,所以可以滤除高于时钟频率的毛刺。

    他的缺点也有不少,主要有以下几条:
      a、复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位任务。同时还要考虑,诸如:clk skew,组合逻辑路径延时,复位延时等因素。
      b、由于大多数的逻辑器件的目标库内的DFF都只有异步复位端口,所以,倘若采用同步复位的话,综合器就会在寄存器的数据输入端口插入组合逻辑,这样就会耗费较多的逻辑资源。

    2、对于异步复位来说,他的优点也有三条,都是相对应的
          a、大多数目标器件库的dff都有异步复位端口,因此采用异步复位可以节省资源。
      b、设计相对简单。
      c、异步复位信号识别方便,而且可以很方便的使用FPGA的全局复位端口GSR。
    缺点:
           a、在复位信号释放(release)的时候容易出现问题。具体就是说:倘若复位释放时恰恰在时钟有效沿附近,就很容易使寄存器输出出现亚稳态,从而导致亚稳态。
           b、复位信号容易受到毛刺的影响。

      推荐的复位方式“异步复位,同步释放”。这就结合了双方面的优点,很好的克服了异步复位的缺点(因为异步复位的问题主要出现在复位信号释放的时候,具体原因可见上文)。
    其 实做起来也并不难,我推荐一种我经常使用的方式吧:那就是在异步复位键后加上一个所谓的“reset synchronizer”,这样就可以使异步复位信号同步化,然后,再用经过处理的复位信号去作用系统,就可以保证比较稳定了。reset sychronizer的Verilog代码如下:

    module Reset_Synchronizer (output reg rst_n,
    input clk, asyncrst_n);
    
    reg rff1;
    
    always @ (posedge clk , negedge asyncrst_n) begin
        if (!asyncrst_n) {rst_n,rff1} <= 2'b0;
        else {rst_n,rff1} <= {rff1,1'b1};
    end
    
    endmodule

    家可以看到,这就是一个dff,异步复位信号直接接在它的异步复位端口上(低电平有效),然后数据输入端rff1一直为高电平‘1’。倘若异步复位信号 有效的话,触发器就会复位,输出为低,从而复位后继系统。但是,又由于这属于时钟沿触发,当复位信号释放时,触发器的输出要延迟一个时钟周期才能恢复成 ‘1’,因此使得复位信号的释放与时钟沿同步化。

    通吃上的

  • 相关阅读:
    PHP 计算程序运行的时间
    PHP 简易版生成随机码
    PHP读取FLASH 文件信息
    MongoDB基本使用
    PHP实现QQ达人信息抓取
    bjtuOJ 1188 素数筛选
    bjtuOJ 1139 Longest Common Subsequence
    BJTU1113扫雷问题
    C#线程池的使用详解
    C#域名解析的简单制作
  • 原文地址:https://www.cnblogs.com/zhoususheng/p/3434233.html
Copyright © 2011-2022 走看看