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

    同步复位与异步复位——异步复位同步释放

    [转自]anghtctc的博客——天蓝色的彼岸

    一、同步复位与异步复位特点:

      同步复位就是指复位信号只有在时钟上升沿到来时,才能有效。否则,无法完成对系统的复位工作。

      异步复位是指无论时钟沿是否到来,只要复位信号有效,就对系统进行复位。    

    二、异步复位和同步复位的优缺点:

      1、同步复位的优点大概有3条:

      a、有利于仿真器的仿真。

      b、可以使所设计的系统成为100%的同步时序电路,这便大大有利于时序分析,而且综合出来的fmax一般较高。

      c、因为他只有在时钟有效电平到来时才有效,所以可以滤除高于时钟频率的毛刺。

       同步复位的缺点:

      a、复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位任务。同时还要考虑,诸如:组合逻辑路径延时,复位延时等因素。

      b、由于大多数的逻辑器件的目标库内的DFF都只有异步复位端口,所以,倘若采用同步复位的话,综合器就会在寄存器的数据输入端口插入组合逻辑,这样就会耗费较多的逻辑资源。

      2、异步复位的优点也有三条:

      a、大多数目标器件库的dff都有异步复位端口,因此采用异步复位可以节省资源。

      b、设计相对简单。   c、异步复位信号识别方便,而且可以很方便的使用FPGA的全局复位端口GSR。

      异步复位的缺点:

      a、在复位信号释放(release)的时候容易出现问题。具体就是说:倘若复位释放时恰恰在时钟有效沿附近,就很容易使寄存器输出出现亚稳态,从而导致亚稳态。

      b、复位信号容易受到毛刺的影响。

      所以,一般都推荐使用异步复位同步释放的方式,而且复位信号低电平有效。这样就可以两全其美了。下面是Verilog代码:

    module Rst_Circuit( Rst_n,
    Clk, D, Q );
    input Rst_n;
    input Clk; input D;
    output Q;
    reg Rst_Reg_n;
    reg Q;
    always @(posedge Clk) begin //将异步复位信号先用Clk同步一下 Rst_Reg_n <= Rst_n; end
    //如果没有加"or negedge Rst_Reg_n",将变成同步复位 always @(posedge Clk or negedge Rst_Reg_n) begin if (~Rst_Reg_n) begin Q <= 1'd0; end else begin Q <= D; end end
    endmodule

    另,参考特权同学的文章异步复位、同步释放
  • 相关阅读:
    函数节流
    ios12兼容性问题,调用原生接口,判断系统为ios12
    谷歌浏览器跨域
    超过两行...,只有两行或少于两行无...且没有查看更多文字 关键思路:超过两行...用ellipsis,但是为了判断文字是否多余两行,所以要获取节点的高度,如果大于两行则文字出现,否则没有更多文字
    Object.assign 浅拷贝还是深拷贝
    用instanceof判断数组类型
    322.零钱兑换(动态规划和贪心)
    面试题59
    tcp四次挥手
    tcp连接的三次握手
  • 原文地址:https://www.cnblogs.com/farbeyond/p/5204532.html
Copyright © 2011-2022 走看看