verilog设计-cdc:多比特信号跨时钟域(DMUX)

一、前言

多比特一般为数据,其在跨时钟域传输的过程中有多种处理方式,比如DMUX,异步FIFO,双口RAM,握手处理。本文介绍通过DMUX的方式传输多比特信号。

二、DMUX同步跨时钟域数据

dmux表示数据分配器,该方法适合带数据有效标志信号的多bit数据做跨时钟域传输。其典型结构如下:

慢时钟域到快时钟域

快时钟域到慢时钟域只要将红框中换成单bit快时钟域到慢时钟域处理单元即可。

DMUX遵循的原则就是,数据不同步只对控制信号同步,这点其实和异步fifo里的思路一样,只不多异步fifo中的控制信号是多比特的格雷码,而这个场景下的控制信号是data_valid。继续观察结构可以发现,DMUX是将单bit控制信号同步之后将其最为mux的选择信号。因此使用这个结构需要满足一些要求:

1.数据和使能信号在源时钟域为同步到来的信号;

2.在目的时钟域对数据完成采样前,数据信号不能跳变;

如果不满足以上的要求,那么就可能造成数据漏同步、错同步等问题。

三、DMUX Verilog代码

3.1 慢时钟域数据到快时钟域

module mult_bit_slow_to_fast_dmux #(parameter DATAWIDTH = 8)(input                       rst_n,        input                       clk_slow,input  [DATAWIDTH-1:0]      data_slow,input                       data_valid_slow,input                       clk_fast,output reg [DATAWIDTH-1:0]  data_fast,output reg                  data_valid_fast);//signal valid slow to fast cdcreg data_valid_slow_reg;always@(posedge clk_slow or negedge rst_n)beginif(!rst_n)data_valid_slow_reg <= 1'b0;elsedata_valid_slow_reg <= data_valid_slow;  endreg data_valid_slow2fast_reg0,data_valid_slow2fast_reg1;always@(posedge clk_fast or negedge rst_n)beginif(!rst_n)begindata_valid_slow2fast_reg0 <= 1'b0;data_valid_slow2fast_reg0 <= 1'b0;endelsebegindata_valid_slow2fast_reg0 <= data_valid_slow_reg ;  data_valid_slow2fast_reg1 <= data_valid_slow2fast_reg0 ;endendalways@(posedge clk_fast or negedge rst_n)beginif(!rst_n)data_valid_fast <= 1'b0;elsedata_valid_fast <= data_valid_slow2fast_reg1 ;end//data slow to fast cdcreg  [DATAWIDTH-1:0]      data_slow_reg,always@(posedge clk_slow or negedge rst_n)beginif(!rst_n)data_slow_reg <=  0;elsedata_slow_reg <= data_slow ;endalways@(posedge clk_fast or negedge rst_n)beginif(!rst_n)data_fast<=  0;else if(data_valid_slow2fast_reg1 == 1'b1)data_fast <= data_slow_reg ;endendmodule

3.2 快时钟域数据到慢时钟域

module mult_bit_fast_to_slow_dmux #(parameter DATAWIDTH = 8)(input                       rst_n,        input                       clk_fast,input  [DATAWIDTH-1:0]      data_fast,input                       data_valid_fast,input                        clk_slow,output  reg [DATAWIDTH-1:0]  data_slow,output  reg                  data_valid_slow);//signal valid fast to slow cdcreg data_valid_fast_reg;always@(posedge clk_fast or negedge rst_n)beginif(!rst_n)data_valid_fast_reg <= 1'b0;else if(data_valid_fast  == 1'b1)data_valid_fast_reg <= ~data_valid_fast_reg ;  endreg data_valid_fast2slow_reg0,data_valid_fast2slow_reg1;always@(posedge clk_slow or negedge rst_n)beginif(!rst_n)begindata_valid_fast2slow_reg0 <= 1'b0;data_valid_fast2slow_reg1 <= 1'b0;endelsebegindata_valid_fast2slow_reg0<= data_valid_fast_reg ;  data_valid_fast2slow_reg1<= data_valid_fast2slow_reg0;endendreg data_valid_fast2slow_reg2always@(posedge clk_slow or negedge rst_n)beginif(!rst_n)data_valid_fast2slow_reg2 <= 1'b0;elsedata_valid_fast2slow_reg2 <= data_valid_fast2slow_reg1;endassign data_valid_slow_ready = data_valid_fast2slow_reg1 ^ data_valid_fast2slow_reg2 ;always@(posedge clk_slow or negedge rst_n)beginif(!rst_n)data_valid_slow<=  0;else data_valid_slow<= data_valid_slow_ready ;end//data fast to slow cdcreg  [DATAWIDTH-1:0]      data_fast_reg,always@(posedge clk_fast or negedge rst_n)beginif(!rst_n)data_fast_reg<=  0;elsedata_fast_reg<= data_fast;endalways@(posedge clk_slow or negedge rst_n)beginif(!rst_n)data_slow <=  0;else if(data_valid_slow_ready == 1'b1)data_slow <= data_fast_reg ;endendmodule

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2905416.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【Pt】马灯贴图绘制过程 02-制作锈迹

目录 一、边缘磨损效果 二、刮痕效果 三、边缘磨损与刮痕的混合 四、锈迹效果 本篇效果&#xff1a; 一、边缘磨损效果 将智能材质“Iron Forge Old” 拖入图层 打开“Iron Forge Old” 文件夹&#xff0c;选中“Sharpen”&#xff08;锐化&#xff09;&#xff0c;增大“…

SCI论文改写、防查重神器QuillBot如何付费高级版本?

写论文时候的修改软件QuillBot&#xff0c;正常的文献里的句子帖进去&#xff0c;直接给各种倒装和各种同义词替换至少10次&#xff0c;保证查不出来是别人的句子。 QuillBot是一个帮助改写内容的转述工具。 Quillbot让你的内容重组变得简单。 转述是指你用不同的词来表达&a…

联发科成功在天玑 9300 芯片部署大模型;小米SU7车载“小爱大模型”语音交互技术

&#x1f989; AI新闻 &#x1f680; 联发科成功在天玑 9300 芯片部署大模型 摘要&#xff1a;联发科宣布&#xff0c;在天玑 9300 等旗舰芯片上首次实现大模型&#xff08;通义千问&#xff09;的深度适配&#xff0c;能够在离线状态下运行多轮 AI 对话。此外&#xff0c;阿…

TQ-DDL contention事件导致数据库hang死

数据库一天内多次hang住&#xff0c;最后只能重启恢复&#xff0c;操作系统及数据库版本&#xff1a;Windows Oracle 12.2.0.1检查hang住时间段alert日志&#xff0c;发现数据库多次重启日志&#xff0c;基本上是hang住然后手工重启。检查ash记录&#xff0c;发现重启前有很多“…

BOM系统:贯穿制造全程的管理利器

在制造行业中&#xff0c;BOM系统的应用已经成为提高生产效率、降低成本和确保产品质量的关键因素。BOM系统作为产品结构和物料清单的管理工具&#xff0c;为制造企业提供了全面的控制和协同能力。 1.产品设计与开发&#xff1a;在产品设计阶段&#xff0c;BOM系统为工程师提供…

C++进阶--位图和布隆过滤器

位图和布隆过滤器是两种常用的数据结构&#xff0c;它们在计算机科学领域有着广泛的应用。本文将介绍这两种数据结构的基本原理和应用场景。 位图 前提 位图的概念 位图&#xff08;Bitmap&#xff09;是一种用于表示集合的数据结构&#xff0c;它将每个元素映射为一个位&…

Java八股文(JVM)

Java八股文のJVM JVM JVM 什么是Java虚拟机&#xff08;JVM&#xff09;&#xff1f; Java虚拟机是一个运行Java字节码的虚拟机。 它负责将Java程序翻译成机器代码并执行。 JVM的主要组成部分是什么&#xff1f; JVM包括以下组件&#xff1a; ● 类加载器&#xff08;ClassLoa…

MySQL 数据库的日志管理、备份与恢复

一. 数据库备份 1.数据备份的重要性 备份的主要目的是灾难恢复。 在生产环境中&#xff0c;数据的安全性至关重要。 任何数据的丢失都可能产生严重的后果。 造成数据丢失的原因&#xff1a; 程序错误人为,操作错误,运算错误,磁盘故障灾难&#xff08;如火灾、地震&#xff0…

【漏洞分析】浅析android手游lua脚本的加密与解密(二)

反编译本人用到的是luajit-decomp,这里需要注意,luajit-decomp默认的lua版本为5.1,luajit版本为2.0.2,我们需要下载对应lua和luajit的版本,编译后替换luajit-decomp下的lua51.dll、luajit.exe、jit文件夹。反编译时需要注意的文件和文件夹: 这里需要下载版本为2.1.0-bet…

AJAX-项目优化(目录、基地址、token、请求拦截器)

目录管理 基地址存储 在utils/request.js配置axios请求基地址 作用&#xff1a;提取公共前缀地址&#xff0c;配置后axios请求时都会baseURLurl 填写API的公共前缀后&#xff0c;将js文件导入到html文件中 <script src"../../utils/request.js"></script&…

【IntelliJ IDEA】运行测试报错解决方案(附图)

IntelliJ IDEA 版本 2023.3.4 (Ultimate Edition) 测试报错信息 命令行过长。 通过 JAR 清单或通过类路径文件缩短命令行&#xff0c;然后重新运行 解决方案 修改运行配置&#xff0c;里面如果没有缩短命令行&#xff0c;需要再修改选项里面勾选缩短命令行让其显示&#x…

【HTTP完全注解】一些神奇的URL

URL HTTP 请求的内容被称为"资源"&#xff0c;‘资源’这一概念非常宽泛&#xff0c;它可以是一份文档&#xff0c;一张图片&#xff0c;或所有其他你能够想到的格式。每个资源的名称和位置由一个 URL&#xff08;统一资源定位符&#xff0c;它是 URI 的一种&#x…

GT收发器第一篇_总体结构介绍

文章目录 前言GT收发器介绍 前言 之前写过一篇简单介绍GT的文章https://blog.csdn.net/m0_56222647/article/details/136730026&#xff0c;可以先通过这篇文章对整体进行简单了解一下。 GT收发器介绍 参考xilinx手册ug476 对于7系列的FPGA&#xff0c;共有3个系列&#xf…

SQL Server 数据库常见提权总结

前面总结了linux和Windows的提权方式以及Mysql提权&#xff0c;这篇文章讲讲SQL Server数据库的提权。 目录 基础知识 权限判定 系统数据库 存储过程 常见系统存储过程 常见扩展存储过程 xp_cmdshell扩展存储过程提权 xp_dirtree写入文件提权 sp_oacreate提权 xp_re…

那些激励你深入研究技术的语录

遇到耗时高的问题&#xff0c;90%能用重启解决&#xff0c;但是不找到原因&#xff0c;问题一定会再次出现。 代码里的Bug就像房间里的老鼠&#xff0c;你不找到它&#xff0c;它就会一直捣乱。 代码的质量决定了程序的稳定性&#xff0c;而程序的稳定性则决定了业务的成败。 不…

面试题:Redis

一、为什么要用Redis&#xff1f; 1、内存数据库&#xff0c;快&#xff0c;很快....... 2、工作单线程worker&#xff0c;串行化、原子操作. &#xff08;IO线程是多线程&#xff09;- 避免上下文切换 3、IO模型&#xff08;epoll&#xff09;, 支撑高并发. 4、kv模型&…

风电机组的CMS(Condition Monitoring System,状态监测系统)收集的振动信号中包含的噪声主要来源

风电机组的CMS&#xff08;Condition Monitoring System&#xff0c;状态监测系统&#xff09;收集的振动信号中包含的噪声主要来源于风电机组在运行过程中的各种机械部件和环境因素。具体来说&#xff0c;这些噪声主要包括&#xff1a; 机械噪声及结构噪声&#xff1a; 齿轮箱…

华为防火墙配置指引超详细(包含安全配置部分)以USG6320为例

华为防火墙USG6320 华为防火墙USG6320是一款高性能、高可靠的下一代防火墙,适用于中小型企业、分支机构等场景。该防火墙支持多种安全功能,可以有效抵御网络攻击,保护网络安全。 目录 华为防火墙USG6320 1. 初始配置 2. 安全策略配置 3. 防火墙功能配置 4. 高可用性配…

Linux shell编程学习笔记42:md5sum

0 前言 前几天在国产电脑上遇到一个问题&#xff0c;先后接到两个文件&#xff0c;如何判断这两个文件内容是否相同&#xff1f; 如果是在Windows系统&#xff0c;可以用fc命令&#xff0c;或者用我自己写的FileInfo&#xff0c;提取两个文件有MD5、SHA1、CRC32值进行比较来判…

搭建文件服务器,按组别授权,并且可查看操作日志。

搭建一个文件服务器并实现按组别授权以及操作日志查看&#xff0c;可以使用开源的解决方案如Samba&#xff08;在Linux环境下&#xff09;或Windows Server中的DFS&#xff08;分布式文件系统&#xff09;结合Active Directory进行权限管理。以下是一个基于Samba和Linux环境的基…