verilog设计-CDC:单bit脉冲快时钟域到慢时钟域

news/2024/4/27 13:25:54

一、前言

当单bit信号由快时钟域传递给慢时钟域时,快时钟域的异步信号最小可为快时钟信号的一个时钟周期脉冲,快时钟域的单时钟周期脉冲长度小于慢时钟域的时钟周期,很有可能该脉冲信号在慢时钟域的两个时钟上升沿之间,导致该脉冲没有被慢时钟域采集到,从而导致信号数据丢失。

因此与单bit信号从慢时钟域到快时钟域直接打两拍不同,单bit信号从快时钟域到慢时钟域还需要特殊的处理。

二、脉冲同步器

脉冲同步器的原理为将快时钟域的脉冲拓展为电平信号,使得该电平的宽度大于慢时钟域的时钟周期,从而可以使用两级同步器进行同步,然后在同步后的时钟域进行脉冲恢复,从而完成将信号(尤其是脉冲信号)从快时钟域传递到慢时钟域。

脉冲同步器的电路结构如上图所示。

在快时钟域,待同步信号低电平,寄存器Q端输出保持不变,待同步信号高电平时,寄存器的输出取反。在慢时钟域,首先进行两级寄存器同步,接着通过双边沿检测电路将脉冲信号恢复出来。

该电路具有如下特点:

1.该电路只能传递脉冲信号(也还能传递一直是0的信号,只不过工程意义不大),对于输入信号一直是1,或是只有0到1阶跃信号,只有1到0的变化的信号均无法正确传输;

2.该电路将输入端的脉冲传输给慢时钟域,无论输入端的脉冲有多宽,都只能在慢时钟域恢复成一个时钟周期宽度的脉冲;

3.输入信号的脉冲之间间隔要大于1倍的慢时钟周期,否则连着的两个脉冲问题会在慢时钟域合并为一个脉宽为2个慢时钟周期的脉冲,导致丢失一个脉冲。

三、脉冲同步器代码

`timescale 1ns/1nsmodule pulse_detect(input         clk_fast  , input         clk_slow  ,   input         rst_n    ,input        data_in    ,output         dataout
);//第一部分,脉冲电平转换reg data_in_r;always@(posedge clk_fast or negedge rst_n)beginif(~rst_n) data_in_r <= 1'b0;else if(data_in)data_in_r <= ~data_in_r;elsedata_in_r <= data_in_r;end//第二部分,两级同步reg data_in_rt0,data_in_rt1;always@(posedge clk_slow or negedge rst_n)beginif(~rst_n) begindata_in_rt0 <= 1'b0;data_in_rt1 <= 1'b0;endelse begindata_in_rt0 <= data_in_r;data_in_rt1 <= data_in_rt0;endend//第三部分,电平转换脉冲(边沿检测)reg data_in_m;always@(posedge clk_slow or negedge rst_n)beginif(~rst_n)data_in_m <= 1'b0;elsedata_in_m <= data_in_rt1;endassign dataout = data_in_m ^ data_in_rt1;endmodule

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

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

相关文章

Unity 布局元素Layout Element

Layout Element是一种用于控制UI元素在布局组件&#xff08;如Horizontal Layout Group、Vertical Layout Group、Grid Layout Group、Content Size Fitter和Aspect Ratio Fitter&#xff09;中的大小和位置的组件。Layout Element组件可以附加到UI元素上&#xff0c;以便在布局…

如何在Linux系统使用Docker本地部署Halo网站并实现无公网IP远程访问

最近&#xff0c;我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念&#xff0c;而且内容风趣幽默。我觉得它对大家可能会有所帮助&#xff0c;所以我在此分享。点击这里跳转到网站。 文章目录 1. Docker部署Halo1.1 检查Docker版本如果未安装Docker可…

机器学习-可解释性机器学习:支持向量机与fastshap的可视化模型解析

一、引言 支持向量机(Support Vector Machine, SVM)作为一种经典的监督学习方法&#xff0c;在分类和回归问题中表现出色。其优点之一是生成的模型具有较好的泛化能力和可解释性&#xff0c;能够清晰地展示特征对于分类的重要性。 fastshap是一种用于快速计算SHAP值&#xff08…

如何用联合(共用体)union验证系统大小端

一&#xff1a;思路 由联合体的特点&#xff0c;可知上图&#xff0c;char c 和 int i 共用四个字节&#xff0c;假设是小端&#xff0c;则由左到右是低地址到高地址&#xff0c;四个字节的内容如图所示01 00 00 00 代码展示&#xff1a; 如果第一个字节是1&#xff0c;则证明…

启动性能优化

一、应用启动慢的原因 1.在主线程执行了太多耗时的操作&#xff0c;比如加载数据&#xff0c;或者初始化三方库等等&#xff0c;导致在Application的oncreate或者Activity的oncreate方法中耗时太久 2.布局嵌套太深&#xff0c;或者一些不会立即使用的布局也在一开始一起加载到…

无需插件就能实现异构数据库的互联互通?(powershell妙用)

前两天在DBA群里有大佬分享了利用Oracle Database Gateway&#xff08;透明网关&#xff09;实现sqlserver和oracle 的数据交互&#xff0c;这里让我想到前些年写的一些powershell脚本用来做sqlserver和oracle的数据交互&#xff0c;powershell是windows自带的一个脚本工具&…