zoukankan      html  css  js  c++  java
  • 同步/异步相关

    https://www.cnblogs.com/lyc-seu/p/12441366.html

    一、同步电路和异步电路的优缺点

    同步电路:

    优点:

    (1)EDA友好,EDA工具可以保证电路系统的时序收敛,有效避免了电路设计中的竞争冒险现象

    (2)由于触发器只有在时钟边缘才改变值,很大限度地减少了整个电路受毛刺和噪声影响的可能

    缺点:

    (1)由于时钟网络连线长度和负载不同等原因,存在时钟偏斜(clock skew)问题,影响电路时序;

    (2)为了解决时钟偏斜问题,时钟树综合需要插入大量延迟单元,使得电路面积和功耗大大增加;

    (3)同步电路还受到时钟抖动(clock jitter)的影响。

    异步电路:

    优点:

    (1)具有低功耗的特性,同步电路在同一全局时钟下工作,时钟工作频率必须满足最大负荷的要求,造成功耗浪费。异步电路则由数据驱动,仅在需要处理数据时才消耗能量,具有低功耗的潜力。随着如今电路规模指数级增长,维持全局时钟的高速翻转的功耗占系统功耗的比例越来越大。

    (2)模块化特性突出,异步电路因为使用握手信号进行模块间的通信,模块互连后的功能不会受到各个模块内部延时的影响。

    (3)不存在时钟偏斜问题。

    (4)好的电磁兼容性,异步电路没有类似同步电路在特定时刻上的瞬时大电流,仅仅产生在一些时间分布的小电流峰值,辐射功率也小。

    (5)有潜在的高性能特性,同步电路工作需要考虑电路的最坏情况延迟,而异步电路的性能则由电路的平均延迟决定,理论上比同步电路可以达到更高的速度。

    缺点:

    (1)设计复杂,缺乏EDA工具的支持。

    二、同步单比特信号的几种方法

    1、电平同步器

      

      对于上面的双锁存器法,如果a_clk的频率比b_clk的频率高,将可能出现因为dat变化太快,而使b_clk无法采样的问题。即在信号从快时钟域向慢时钟域过渡的时候,如果信号变化太快,慢时钟将可能无法对该信号进行正确的采样,所以在使用双锁存器法的时候,应该使原始信号保持足够长的时间,以便另一个时钟域的锁存器可以正确地对其进行采样。

     2、边沿同步器

      如果我们需要用跳变沿而不是电平又该怎样处理呢,在电平同步器之后再加一级触发器,用第二级触发器的输出和第三级触发器的输出来进行操作。这种结构叫做边沿同步器。

          always @ (posedge Clk)       
          begin
                inputs_reg1 <= inputs;
                inputs_reg2 <= inputs_reg1;
                inputs_reg3 <= inputs_reg2;
                if (inputs_reg2 == 1'b1 && inputs_reg3 == 1'b0)
                begin
                     ...
                end
                ...
          end

          以上两种同步器在慢时钟域信号同步入快时钟域时工作的很好,但是反过来的话,可能就工作不正常了。举一个很简单的例子,如果被同步的信号脉冲只有一个快时钟周期宽,且位于慢时钟的两个相邻跳变沿之间,那么是采不到的。这时就需要采用脉冲同步器。这种同步器也是由3个触发器组成,同时需要对发送信号做一些处理。

    3、脉冲同步器

      https://blog.csdn.net/lovingduo/article/details/77723219

      脉冲同步器的输入信号是一个单时钟宽度脉冲,它触发原时钟域中的一个翻转电路(下图)。每当翻转电路接收到一个脉冲时,它就会在高、低电平间进行转换,然后通过电平同步器到达异或门的一个输入端,而另一个信号经一个时钟周期的延迟进入异或门的另一端,翻转电路每转换一次状态,这个同步器的输出端就产生一个单时钟宽度的脉冲.

      脉冲同步器的基本功能是从某个时钟域取出一个单时钟宽度脉冲,然后在新的时钟域中建立另一个单时钟宽度的脉冲。脉冲同步器也有一个限制,即输入脉冲之间的最小间隔必须等于两个同步器时钟周期。如果输入脉冲相互过近,则新时钟域中的输出脉冲也紧密相邻,结果是输出脉冲宽度比一个时钟周期宽。当输入脉冲时钟周期大于两个同步器时钟周期时,这个问题更加严重。这种情况下,如果输入脉冲相邻太近,则同步器就不能检测到每个脉冲。

      

    4、双握手法:https://www.cnblogs.com/wt-seu/p/12929973.html

     三、同步多比特信号的几种方法

    1、异步FIFO

    2、握手协议,如双握手法(Req、Ack):https://www.cnblogs.com/wt-seu/p/13418878.html

    3、DMUX

    对于多bit的data信号,还可以使用使能技术,也就是通过一个使能信号来判断data信号是否已经稳定,当使能信号有效的时候说明data处于稳定状态,在这种情况下终点寄存器才对信号进行采样,可以保证没有setup/hold违例。而使能信号一般使用double FF的方法来进行同步。下面是DMUX的同步示意图:

  • 相关阅读:
    WebBrowser无法显示招商银行password输入控件的问题
    对流式计算模型的理解
    Dev BarManager使用方法
    创业的需求分析——创业杂记【1】
    使用Apktools反编译apk应用
    【JUnit4.10源码分析】3.4 Description与測试树
    基于KWIC 的keyword匹配算法(管道+过滤器模式下实现)
    纯CSS滑动效果
    PhotoSwipe简介
    包加载失败的解决办法
  • 原文地址:https://www.cnblogs.com/wt-seu/p/12489174.html
Copyright © 2011-2022 走看看