文章目录

  • 1. 单bit信号跨时钟域传输
    • 1.1 电平同步器
    • 1.2 边沿检测器
    • 1.3 脉冲同步器
    • 1.4 电平延展-快到慢
  • 2. 多bit信号跨时钟域传输
    • 2.1. 握手
    • 2.2. 异步FIFO
    • 2.3 使用异步双口RAM
    • 2.4 DMUX
  • 3. 相关题目
    • 3.1 设计一个脉冲检测器
    • 3.2 介绍一下各种同步设计的优缺点
    • 3.3相关选择题

1. 单bit信号跨时钟域传输

按照信号用途将单bit跨时钟同步器分为:电平同步器,边沿检测器和脉冲同步器。
小结:

  1. 单bit信号传输我们要考虑它的实际用途,比如是串行数据信号,那么我们就需要知道比特率才能采样,如果是控制信号,我们需要是通过电平还是时钟沿进行控制。
  2. 单bit快到慢传输,快时钟需要时钟拓展;慢到快则直接打两拍的效果是电平同步

1.1 电平同步器

所谓电平同步器,顾名思义是将有用的电平信号同步至另一时钟域,电平信号需要在原时钟域保持至少两个时钟周期。其同步方法是将信号经过两个D触发器,即打两拍

1.2 边沿检测器

边沿检测器的原理是在电平同步器的输出加一个触发器(第一级可能存在亚稳态,利用二三级触发器结果判断信号是上升沿还是下降沿)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HyxsBLF7-1618539128392)(https://upload-images.jianshu.io/upload_images/9246563-fb1305938ad82022.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

1.3 脉冲同步器

脉冲同步器的作用是检测原时钟域的脉冲并在新时钟域上产生一个新的脉冲

以上是较为简单的脉冲同步器,此脉冲同步器对于某些情况下是不可靠的,若要可靠的完成脉冲的同步,可以引入握手机制。具体的握手机制如下:
若源时钟域脉冲来临,且同步器处于空闲状态,则向同步器发出同步请求;
同步请求信号到达目的时钟域,目的时钟域产生应该信号表示同步完成;
源时钟域检测到应答信号后清楚请求信号;
目标时钟域检测到源时钟域请求信号清除后清除应答信号;
同步器回到空闲状态,进行下一个脉冲的同步;

1.4 电平延展-快到慢

CLR高电平有效

module Sync_Pulse(input           clka,input           clkb,input           rst_n,input           pulse_ina,output          pulse_outb,output          signal_outb
);
//-------------------------------------------------------
reg             signal_a;
reg             signal_b;
reg             signal_b_r;
reg             signal_b_rr;
reg             signal_a_r;
reg             signal_a_rr;
//-------------------------------------------------------
//在clka下,生成展宽信号signal_a
always @(posedge clka or negedge rst_n)beginif(rst_n == 1'b0)beginsignal_a <= 1'b0;endelse if(pulse_ina == 1'b1)beginsignal_a <= 1'b1;endelse if(signal_a_rr == 1'b1)signal_a <= 1'b0;else signal_a <= signal_a;
end
//-------------------------------------------------------
//在clkb下同步signal_a
always @(posedge clkb or negedge rst_n)beginif(rst_n == 1'b0)beginsignal_b <= 1'b0;endelse beginsignal_b <= signal_a;end
end
//-------------------------------------------------------
//在clkb下生成脉冲信号和输出信号
always @(posedge clkb or negedge rst_n)beginif(rst_n == 1'b0)beginsignal_b_r <= 'b0;signal_b_rr <= 'b0;endelse beginsignal_b_rr <= signal_b_r;signal_b_r <= signal_b;end
end
assign    pulse_outb = ~signal_b_rr & signal_b_r;
assign    signal_outb = signal_b_rr;
//-------------------------------------------------------
//在clka下采集signal_b_rr,生成signal_a_rr用于反馈拉低signal_a
always @(posedge clka or negedge rst_n)beginif(rst_n == 1'b0)beginsignal_a_r <= 'b0;signal_a_rr <= 'b0;endelse beginsignal_a_rr <= signal_a_r;signal_a_r <= signal_b_rr;end
end
endmodule


两种电路图的功能一致。在参考链接2中也有一个设计,但是设计复杂,优点是每个触发器采取的是时钟触发。
参考链接:
https://blog.csdn.net/qq_21842097/article/details/88657046
https://blog.csdn.net/Reborn_Lee/article/details/96714098
https://www.cnblogs.com/iclearner/p/6579754.html

2. 多bit信号跨时钟域传输

2.1. 握手

2.2. 异步FIFO

2.3 使用异步双口RAM

2.4 DMUX

由图可见,DMUX有一个MUX和一个触发器构成,在数据输入使能有效的时候采样端口信号,数据输入使能无效的时候数据保持。在VCS综合中会综合成为低功耗设计,增加一个门控电路。

小结:DMUX的原理类似于脉冲检测器

3. 相关题目

3.1 设计一个脉冲检测器


根据这个时序图,d_req是根据d_in产生的,根据d_ack截止的。d_req从s到d,再从d_到s变为ack。

3.2 介绍一下各种同步设计的优缺点

  1. 双触发器同步法:它的根本目的是为了减少亚稳态的发生,它有很多局限性,比如快时钟向慢时钟传递有可能采样不到
  2. 双触发器+反馈回路:它的目的就是时钟展宽,然后在进行同步,它的缺点是如果源时钟数据变化太快,展宽后会被覆盖
  3. 握手法:其实单bit握手的电路就是法2,因此它的缺点一样是数据不能变化太快
  4. 异步FIFO:它都适用,目前没发现缺点。

3.3相关选择题

  1. 异步时钟数据采样方法错误的是()D
    A 单bit高频时钟脉冲展宽后给低频时钟进行采样
    B 握手信号后再采样
    C 使用FIFO隔离进行多bit采样
    D 高频时钟直接采样低频时钟的多bit数据
  2. 以下不能对多bit的数据总线的时钟异步处理的是()C
    A. DMUX synchronizer
    B. Gray_code
    C. 寄存器同步
    D. AFIFO
  3. 高频时钟域的总线数据(每时钟周期都变化)传递给低频时钟域时,哪种同步方式正确()B
    A. 使用握手信号进行同步
    B. 使用异步FIFO
    C. 使用同步FIFO
    D. 使用打两拍进行同步
    解析:握手的使用缺陷是数据不能变化太快,每次握手需要等待一定的时钟周期
  4. 对于双触发器异步处理电路说法正确的是 BCD
    A. 对任何单bit信号都可以用此电路
    B. 各个寄存器之间不能有组合逻辑
    C. 需要考虑两个时钟的频率和信号的宽度
    D. 无法绝对避免亚稳态
  5. 下面哪种异步处理的方法完全正确()C
    A. 在对数据总线进行异步处理前转化为格雷码,然后打拍处理,同步后,再转化成源码
    B. 在模块A,有两个控制信号通过正确的同步方法把两个信号进行同步到B时钟域,然后再在B时钟域对两个信号进行逻辑运算
    C. 实现异步FIFO时,在地址穿越时钟域前转化为Gray-Code
    D. 单bit信号在跨越时钟域前不需要寄存器输出
    解析:数据总线是乱变的,而地址总线是递增的,而gray码在相邻状态机之间的跳变只有一位发生了变化
  6. 下列跨时钟域设计存在的问题是()B
    A. FIFO设计地址跨时钟域,可以通过格雷码转换+打2拍的方式
    B. 希望得到C=A&B,AB在clkx域,c在clky域,则单独用clky打A和B2拍产生Adly2, Bdly2,然后在进行组合逻辑
    C. 单bit跨时钟域,在目的时钟域打3拍后使用,打拍过程中不带组合逻辑
    D. 一组数据总线跨时钟域,如果数据有足够的持续不便时间,可以通过握手机制实现
  7. 150M时钟域的多bit信号A[63:0]需要同步到50MHz时钟域,可能使用的同步方式有()ABD
    A. DMUX
    B. 双向握手
    C. 打拍
    D. 异步FIFO
  8. 假设一个3bit计数器(计数范围为0-6)工作在38M时钟域下,要把此计数器的值传递到100M的时钟域,以下方式不正确的是()C
    A. 锁存+握手
    B. 使用DMUX电路
    C. 使用格雷码
    D. 使用异步FIFO
    解析:虽然格雷码可以裁剪,但它的要求是状态数必须是偶数,0-6有7个状态是不满足条件的。
    以下关于跨时钟域信号处理描述不正确的是()
    A. 并不是所有的跨时钟域信号都需要做异步处理
    B. 当单比特脉冲信号需要跨时钟域进行同步时,只需在目标时钟将此信号同步两拍即可
    C. 对与跨时钟阈的数据传输,通常可以采用异步FIFO的方法
    D. 对于跨时钟域的多比特信号传输,可以采用握手信号来处理

IC常用知识6-信号跨时钟同步相关推荐

  1. 亚稳态及信号跨时钟域处理

    文章目录 一.亚稳态简介 二.亚稳态窗口 三.平均无故障时间(MTBF) 四.亚稳态产生场景 五.解决亚稳态的技术 5.1 单比特信号跨时钟域 5.1.1 多级同步器 5.1.2 另一种多级同步器 5 ...

  2. 亚稳态与信号跨时钟域介绍

    亚稳态,是由于寄存器的输入信号没有满足建立时间和保持时间,导致寄存器的输出处于一种不确定的状态. 处理跨时钟域的数据有单bit和多bit之分,而打两拍的方式常见于处理单bit数据的跨时钟域问题. 简单 ...

  3. 单根信号跨时钟域——两级D触发器消除亚稳态

    meta_harden 这个模块是在Xilinx的例程工程Wave Generator中看到的,来看一下有什么用. 描述 在源文件注释中有描述到,这是一个基础的亚稳态固化方法:通过两级的时钟同步,将异 ...

  4. 跨时钟域问题(二)(单bit信号跨时钟域 1. 电平同步器 2. 边沿同步器 3. 脉冲检测器)

  5. 同步电路与跨时钟域电路设计1——单bit信号的跨时钟域传输(同步器)

    同步电路与全局异步电路 同步电路 同步电路的定义 即电路中的所有受时钟控制的单元(如触发器Flip Flop.寄存器Register),全部由一个统一的全局时钟控制. 例子: 两个触发器都受同一个时钟 ...

  6. FPGA笔记2——跨时钟域同步信号方法

    亚稳态 触发器是FPGA设计中最常用的基本器件.触发器工作过程中存在数据的建立(setup)和保持(hold)时间.对于使用上升沿触发的触发器来说,建立时间就是在时钟上升沿到来之前,触发器数据端数据保 ...

  7. FPGA跨时钟域异步时钟设计的几种同步策略

    1 引言 基于FPGA的数字系统设计中大都推荐采用同步时序的设计,也就是单时钟系统.但是实际的工程中,纯粹单时钟系统设计的情况很少,特别是设计模块与外围芯片的通信中,跨时钟域的情况经常不可避免.如果对 ...

  8. 跨时钟域(CDC)设计方法之多bit信号篇(一)

    写在前面 本博客所有CDC相关的内容:跨时钟域(CDC)设计汇总 1.跨时钟域处理方法的分类 信号的跨时钟域传输可能会引入亚稳态问题,那么就需要想办法对其进行处理,从而降低亚稳态发生的概率(即提高MT ...

  9. 跨时钟域方法(同步器、异步FIFO、边沿检测器、脉冲同步器、同步FIFO)

    目录 1.跨时钟域方法的原因 2.跨时钟处理的两种思路 3.跨时钟域分类--单比特信号跨时钟 3.1.1慢时钟---快时钟.(满足三边沿准则,有效事件可以被安全采样) 3.1.2慢时钟---快时钟.( ...

最新文章

  1. 进程调度(第三章 处理调度与死锁)
  2. apache工作模式
  3. Web前端开发笔记——第三章 CSS语言 第五节 盒子模型
  4. py文件转exe时包含paramiko模块出错解决方法
  5. map容器的使用 逆序遍历map容器当中的数据
  6. 组件通信之pubsub
  7. EasyExcel简单使用
  8. GitHub学习一-本地电脑与GitHub绑定
  9. 使用DataSync迁移数据到Gaussdb T
  10. 云存储网关 > 常见问题 > 文件网关 > 文件网关的缓存有什么作用
  11. 支持Visual Studio 2008和.NET 3.5的企业类库4.0
  12. usmssosetup 单点登录被禁用_单点登录系统,如果cookie被禁用了怎么办
  13. Java Jna调用Dll动态库函数读写IC卡
  14. nginx 加上ssl配置
  15. DDOS攻击已然渗透互联网和物联网
  16. 互联网数据分析岗实习感受
  17. FlinkX数据同步
  18. 跳过基于AMD平台安装ESXI 6.7,并部署win10和黑群辉虚拟机的坑
  19. 迷宫问题的求解(广度和深度优先搜索)
  20. 【计算机网络】实验报告一:验证性实验

热门文章

  1. 滴答顺风车怎么抢90%以上的订单_网约车司机都是什么人?想加入网约车不妨看看过来人怎么说...
  2. 【单片机毕业设计】【mcuclub-307】超市收银机 | 超市收银系统 | 超市结账系统 | 商品扫码
  3. 智慧城市大数据平台信息化建设及行业智慧应用综合解决方案
  4. 瑞芯微 TB-RK3399Pro -- AI平台解决方案介绍
  5. 论零成本一个人操作互联网创业项目的可行性
  6. 学习互联网思维必读的十本书
  7. 保研中科大软件工程(还有南开offer,厦大offer,山大offer,软件所offer,南大替补补到offer,东南替补补到offer,浙大替补)
  8. 关于TJJTDS出生的故事:
  9. SAPGUI 收藏夹 乱码?何解?茅塞顿开
  10. 【bat批处理】手把手教你批量打开软件、文件、网页等