跨时钟域传输数据——单bit和多bit信号(总结)
文章目录
- 前言
- 一、慢时钟域到快时钟域
- 1、单bit信号
- 2、多bit信号
- 二、快时钟域到慢时钟域
- 1、单bit信号
- 2、多bit信号
- 三、多bit信号跨时钟域传输
- 1、多个信号合并
- 2、多周期路径 Multi-cycle Path/MCP
- 3、使用格雷码
- 4、使用异步FIFO
- 5、使用DMUX电路结构
- 6、握手信号传输
- 四、简答题
- 1、跨时钟域传输的三种方法
前言
2023.4.6 小雨
电平/边沿检测/脉冲同步器
FIFO
一、慢时钟域到快时钟域
快时钟域会多次采样,目标时钟频率必须是源时钟频率的1.5倍及以上,才能满足 “三时钟沿” 要求。如果目标时钟频率只是快一点,还是用握手机制。
1、单bit信号
- 边沿检测同步器(详细介绍笔记)
- 分频再同步(频率相差很大)

2、多bit信号
延迟采样法:引入使能信号,先缓存使能信号(三级缓存,前两级缓存,后一级上升沿检测),等输入使能信号有效时再缓存数据
module delay_sample(input clk1,input clk2,inout rst_n,input [31:0] din,input din_en,output dout_en,output [31:0] dout
);reg [2:0] din_en_r;//缓存使能信号always@(posedge clk2 or negedge rst_n)begin //注意这里是clk2if(!rst_n)din_en_r <= 0;elsedin_en_r <= {din_en_r[1:0], din_en};endwire din_en_pos = din_en_r[1] & !din_en_r[2];reg [31:0] dout_r;reg dout_r;//输入数据缓存always@(posedge clk2 or negedge rst_n)begin if(!rst_n)dout_r <= 0;else if(din_en_pos)dout_r <= din;end//输出使能信号always@(posedge clk2 or negedge rst_n)begin if(!rst_n)dout_en_r <= 0;elsedout_en_r <= din_en_pos;end assign dout = dout_r;assign dout_en = dout_en_r;
endmodule
二、快时钟域到慢时钟域
慢时钟域可能采样不到信号
三时钟沿要求:快时钟域信号宽度必须大于慢时钟域周期的1.5倍以上,也就是持续3个时钟沿以上(包括上升沿和下降沿)
1、单bit信号
- 脉冲同步器/结绳法
2、多bit信号
- 握手机制
三、多bit信号跨时钟域传输
1、多个信号合并
把多个信号合并为1bit信号再跨时钟域传输

2、多周期路径 Multi-cycle Path/MCP
不同步多位数据,只同步一位控制信号
3、使用格雷码
- 如果多bit信号是简单递增或者递减,可以转化为
格雷码,再打两拍到目标时钟域,再解码 - 如果多bit信号没有规律,可以转化为
独热码,再打两拍到目标时钟域,再解码,适合于从慢到快
4、使用异步FIFO
详细介绍:同步FIFO、异步FIFO详细介绍、verilog代码实现、FIFO最小深度计算、简答题
5、使用DMUX电路结构
适用:带有数据标志位的多bit信号跨时钟域传输(和延迟采样法差不多),适合于慢时钟域到快时钟域传播。
如果是快时钟域到慢时钟域,就把红色框内的两级同步器换成脉冲同步器。
adata_valid_rr再打一拍是为了和bdata的数据同步输出。

module mux_synchronizer(input aclk, input bclk,input data_valid,input rst_n,input [7:0] data,output reg [7:0] data_b,output reg bdata_valid
);reg data_valid_r, data_valid_rr, data_valid_a;reg [7:0] data_a;always@(posedge aclk or negedge rst_n)beginif(!rst_n)begindata_valid_a <= 0;data_a <= 0;endelse begindata_valid_a <= data_valid;data_a <= data;endendalways@(posedge bclk or negedge rst_n)beginif(!rst_n)begindata_valid_r <= 0;data_valid_rr <= 0;endelse begindata_valid_r <= data_valid;data_valid_rr <= data_valid_r ;endendalways@(posedge bclk or negedge rst_n)beginif(!rst_n)begindata_valid_b <= 0;endelse begindata_valid_b <= data_valid_rr;endendalways@(posedge bclk or negedge rst_n)beginif(!rst_n)begindata_b<= 0;endelse begindata_b <= (data_valid_rr) ? data_a : data_b;endend
endmodule
6、握手信号传输
四、简答题
1、跨时钟域传输的三种方法
打两拍、异步FIFO、握手信号
相关文章:
跨时钟域传输数据——单bit和多bit信号(总结)
文章目录前言一、慢时钟域到快时钟域1、单bit信号2、多bit信号二、快时钟域到慢时钟域1、单bit信号2、多bit信号三、多bit信号跨时钟域传输1、多个信号合并2、多周期路径 Multi-cycle Path/MCP3、使用格雷码4、使用异步FIFO5、使用DMUX电路结构6、握手信号传输四、简答题1、跨时…...
高并发下如何保证接口幂等
文章目录 1. insert前先select2. 加悲观锁3. 加乐观锁4. 加唯一索引5. 建防重表6. 根据状态机7. 加分布式锁8. 获取token接口幂等性问题,对于开发人员来说,是一个跟语言无关的公共问题。本文分享了一些解决这类问题非常实用的办法,绝大部分内容我在项目中实践过的,给有需要…...
Retrofit源码分析小结
Retrofit源码分析&小结 简介 Retrofit是对Okhttp网络请求的二次封装,通过注解动态代理的方式,简化了Okhttp的使用,使得通过简单的配置就可以像调用接口一样去请求网络接口;除此之外Retrofit还支持RxJava和kotlin的协程 基本…...
【从零开始学习 UVM】11.4、UVM Register Layer —— UVM Register Model 实战项目(RAL实战,交通灯为例)
文章目录 DesignInterfaceRegister Model ExampleRegister EnvironmentAPB Agent ExampleTestbench EnvironmentSequencesTest在之前的几篇文章中,我们已经了解了寄存器模型是什么以及如何使用它来访问给定设计中的寄存器。现在让我们看一个完整的例子,展示如何为给定设计编写…...
session和token的登录机制
做登录的时候遇到了token ,web和smtp的登录情况,这里 记录一下我所学习的两种登录方式,一种是token ,一种是session session 登录机制 当用户请求登录接口进行登录服务端 获得登录的信息,从而在数据库中查到相应的用…...
大厂研发成本大曝光,研发占大头
近日,腾讯发布《2022 年腾讯研发大数据报告》,披露了 2022 年腾讯在研发投入、研发效能、开源协同等方面的重要数据。 《报告》显示,2022 年腾讯内部研发人员占比达到 74%,这意味着,平均每四个腾讯员工中,…...
python爬虫第一节基础概念
爬虫是一种自动化抓取互联网上数据的技术。在网络信息爆炸的今天,爬虫技术已经成为数据获取和信息分析的重要手段。本文将详细介绍爬虫的基础知识和操作,帮助初学者快速入门。 一、爬虫的基本原理 爬虫的基本原理是通过网络请求获取网页源代码…...
web学习---Vue---笔记(1)
该笔记是记录尚硅谷的Vue学习视频的笔记,视频地址为:学习视频地址 初始Vue Vue组件化的特点 组件化声明式编码虚拟DOMDiff算法,尽量复用DOM节点 H5的组件,是把某一个模块封装,里面写HTML\CSS\JS等,算是一…...
【前端面试题——微信小程序】
目录1.请谈谈wxml与标准的html的异同?2.请谈谈WXSS和CSS的异同?3.请谈谈微信小程序主要目录和文件的作用?4.请谈谈小程序的双向绑定和vue的异同?5.简单描述下微信小程序的相关文件类型?6.微信小程序有哪些传值(传递数据…...
gpt模型训练-gpt3模型详解
训练一个GPT模型需要大量的数据集和计算资源。在这里,我提供一些较为通用的训练步骤以供参考: 获取数据集 首先需要收集一些数据集,数据集建议获取大型的常用文本数据集。常见的例如维基百科、各种在线文章、小说、论文等,数据集…...
vue尚品汇商城项目-day04【27.分页器静态组件(难点)】
文章目录27.分页器静态组件(难点)本人其他相关文章链接27.分页器静态组件(难点) 难点: 考虑点1:为啥需要分页呢? 答案:按需加载 考虑点2:分页器展示,需要哪…...
使用SeaFile搭建私有云盘并公网访问【cpolar内网穿透】
文章目录1. 前言2. SeaFile云盘设置2.1 Owncould的安装环境设置2.2 SeaFile下载安装2.3 SeaFile的配置3. cpolar内网穿透3.1 Cpolar下载安装3.2 Cpolar的注册3.3 Cpolar云端设置3.4 Cpolar本地设置4. 公网访问测试5. 结语1. 前言 现在我们身边的只能设备越来越多,各…...
蓝桥杯第26天(Python)考前挣扎
题型: 1.思维题/杂题:数学公式,分析题意,找规律 2.BFS/DFS:广搜(递归实现),深搜(deque实现) 3.简单数论:模,素数(只需要…...
WuThreat身份安全云-TVD每日漏洞情报-2023-04-04
漏洞名称:RSA NetWitness Platform 内存损坏漏洞 漏洞级别:中危 漏洞编号:CVE-2022-47529,CNNVD-202303-2419 相关涉及:RSA NetWitness Platform 12.2之前版本 漏洞状态:POC 参考链接:https://tvd.wuthreat.com/#/listDetail?TVD_IDTVD-2023-07193 漏洞名称:EyouCms <1.5.…...
【C++】Step by Step的格式化代码风格是这样的吗?
文章目录前言一、依赖二、配置总结前言 本节从0开始讲解如何格式化自己的代码风格,使用vscode插件来完成,本节的所有配置都会在星球同步哦~ 一、依赖 本次使用的是clang-format插件,具体安装比较简单: mac系统: br…...
aspnet030高校学生团体管理系统sqlserver
net030高校学生团体管理系统 . 1.用户基本信息管理模块:录入、修改、删除、查询、统计、打印等功能 2.学生成绩管理模块:录入、修改、删除、查询、统计、打印等功能 3.学生团体信息管理模块:录入、修改、删除、查询、统计、打印等功能 4.教…...
学习HM微博项目第10天
步骤:发微博12-表情键盘06-点击表情 -> 发微博13-表情键盘07-插入表情和封装textView -> 发微博14-表情键盘08-长按表情 -> 发微博15-表情键盘09-最近表情 -> 发微博16-表情键盘10-最近表情完善 发微博12-表情键盘06-点击表情 APP的演示动画ÿ…...
0204强连通性-有向图-数据结构和算法(Java)
文章目录1 概述2 强连通分量2.1 定义2.2 Kosaraju算法2.2.1 算法实现2.2.2算法测试2.2.3 算法理解3 强连通性结语1 概述 定义。如果2个顶点是相互可达的,则称它们为强连通的。如果一幅有向图中的任意两个顶点都是强连通的,则称这幅有向图也是强连通的。 …...
ElasticSearch集群
5.2 IK分词器简介 IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始,IKAnalyzer已经推出 了3个大版本。最初,它是以开源项目Lucene为应用主体的,结合词典分词和文法分析算法的中文分…...
音视频基础概念(6)——视频基础
网上冲浪时,我们会接触到网络流媒体和本地视频文件。常见的视频文件格式有MP4、MKV、AVI等。在流媒体网站上看见视频常用的协议有HTTP、RTSP、RTMP、HLS等。视频技术较为复杂,包括视频封装、视频编解码、视频播放和视频转码等内容。1 视频基础概念当下市…...
从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
wpf在image控件上快速显示内存图像
wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...
libfmt: 现代C++的格式化工具库介绍与酷炫功能
libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全:…...
十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...
上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式
简介 在我的 QT/C 开发工作中,合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式:工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...
