CDC之Synchronizers

1  Scenarios

  There are two scenarios that are possible when passing signals across CDC boundaries:

  1st scenario: sometimes it is not necessary to sample every value, but it is important that the sampled values are accurate.

  One example is the set of gray code counters used in a standard asynchronous FIFO design. In a properly designed asynchronous FIFO model, synchronized gray code counters do not need to capture every legal value from the opposite clock domain, but it is critical that sampled values be accurate to recognize when full and empty conditions have occurred.

  2nd scenario: a CDC signal must be properly recognized or recognized and acknowledged before a change is permitted on the CDC signal.

   In both of these scenarios, the CDC signals will require some form of synchronization into the receiving clock domain.

2  Receiving clock domain

  1)  Two flip-flop synchronizer

     For most synchronization applications, the two flip-flop synchronizer is sufficient to remove all likely metastability.

      

  2)  Three flip-flop synchronizer

        For some very high speed designs, a third flop is added to increase the MTBF to a satisfactory duration of time.

    

3  Sending clock domain

   Registering signals in the sending clock domain should generally be rquired.

    

4  Three edge

  Recognizing that sampling slower signals into faster clock domains causes fewer potential problems than sampling faster signals into slower clock domains, a designer might take advantage of this fact by using simple two flip-flop synchronizers to pass single CDC signals between clock domains.

  When passing one CDC signal between clock domains through a two-flip-flop synchronizer, the CDC signal must be wider than 1-1/2 times the cycle width of the receiving domain clock period. (Input values must be stable for three destination clock edges)

  For exceptionally long source and destination clock frequencies, this requirement could probably be safely relaxed to 1-1/4 times the cycle time of the receiving clock domain or less, but the "three edge" guideline is the safest initial design condition, and is easier to prove through the use of SystemVerilog assertions than to dynamically measure a fractional width of a CDC signal during simulation.

时间: 2024-11-10 01:18:43

CDC之Synchronizers的相关文章

CDC之fast->slow (1)

Recognizing that sampling slower signals into faster clock domains causes fewer potential problems than sampling faster signals into slower clock domains, a designer might take advantage of this fact by using simple two flip-flop synchronizers to pas

MFC中的DC CDC HDC由来由去理解

MFC中的DC CDC HDC由来由去理解 在此非常感谢博客主的究竟钻研,非常详细的参考资料:http://blog.csdn.net/yam_killer/article/details/7661449

Data Flow ->> CDC Control Task, CDC Source, CDC Splitter

CDC Control Task可以从控制CDC数据同步,比如初始化加载.LSN范围的管理.它可以代替另一种做法,就是通过调用一批CDC函数来完成同样的事情.从SSIS的角度来完成,事情编程简单,和另外两个空间配合起来(CDC Source,和CDC Splitter),仅需配置一些控件参数便可以完成整个数据抽取过程. CDC Source从启用了CDC的数据表中查询数据 CDC Splitter和Conditional Split组件功能相似.它生成三个数据流分支:Inserts, Updat

VC/MFC的HDC,CDC,CWindowDC,CClientDC,CPaintDC详解:

首先说一下什么是DC(设备描述表) 解:Windows应用程序通过为指定设备(屏幕,打印机等)创建一个设备描述表(Device Context, DC)在DC表示的逻辑意义的“画布”上进行图形的绘制.DC是一种包含设备信息的数据结构,它包含了物理设备所需的各种状态信息.Win32程序在绘制 图形之前需要获取DC的句柄HDC,并在不继续使用时释放掉. 在c++ 编程中常会见到HDC,CDC,CClientDC,CPaintDC,CWindowDC这样的类 HDC是DC的句柄,API中的一个类似指针

在进行USB CDC类开发时,无法发送64整数倍的数据

1 前言 本文将基于STM32F4DISCOVERY板,介绍如何使用USB的CDC类进行开发,以及在开发过程中碰到发送64整数倍数据时会失败的问题分析及解决方案. 2 硬件介绍 在创建工程之前,我们首先即将使用的硬件进行必要的介绍. 如上图所示,USB电路使用PA11,PA12,全速USB OTG,当然,这里只做device,英雌只需要看上图的下面部分. 如上图,本例中将使用到1个用户按键,PA0,按下时为1电平. 另外,晶振使用的是外部HSE 8M晶振. 3 创建CubeMx工程 打开Cube

hdc cdc

CWindowDC dc(this); HDC hdc=dc.GetSafeHdc(); using namespace Gdiplus; Graphics graphics(hdc); graphics.SetSmoothingMode(SmoothingModeHighQuality); Pen newPen(Color(0,200,255),5); graphics.DrawLine(&newPen, 50, N1, x2, y2); ps:析构函数中什么也没有. RE: GetDC/Ge

Oracle Data Integrator 12c----简单CDC(Simple CDC)

Simple CDC最简单的一种 CDC.在这里,每一张 CDC 的表的变化都是独立捕获的,不需要考虑多张存在主外键引用关系的表之间的数据一致性. 1 环境准备 源表:ODI_SRC.DEPT 目标表:ODI_TAG.DEPT 配置拓扑结构见ODI Studio拓扑结构的创建与配置(Oracle) 模型反向工程见:Oracle Data Integrator 12c-模型(Model)和 数据存储(DataStore) 2导入并配置JKM 首先在项目中导入 JKM JKM Oracle Simp

Locked ownable synchronizers(转)

public class DeadLock { public static void main(final String[] args) throws Exception { final Object lock1 = new Object(); final Object lock2 = new Object(); Thread.currentThread().setName("main-thread"); final Thread r = new Thread("anothe

CDC与HDC的区别以及相互转换

CDC是MFC的DC的一个类 HDC是DC的句柄,API中的一个类似指针的数据类型. MFC类的前缀都是C开头的 H开头的大多数是句柄 这是为了助记,是编程读\写代码的好的习惯. CDC中所有MFC的DC的基类.常用的CClientDC dc(this);就是CDC的子类(或称派生类). CDC等设备上下分类,都含有一个类的成员变量:m_nHdc;即HDC类型的句柄. 记住下面的一句话,会有助于你的理解. MFC的类,是在用window API语句开发出来的有一定功能的小程序.(也可称为类).使