在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 229|回复: 2

[求助] 边沿检测算法为什么不考虑CDC问题?

[复制链接]
发表于 前天 13:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
请教大佬们一个疑惑,这个经典的边沿检测算法,为什么不考虑同步呢,异步过来的data信号,显然第1拍会打不准吧?





  1. module edge_detect(
  2.     input clk,
  3.     input rst_n,
  4.     input data,

  5.     output pos_edge,
  6.     output neg_edge
  7. );

  8. reg data_d0,data_d1;
  9. always@(posedge clk or negedge rst_n)
  10.     if(~rst_n)begin
  11.         data_d0 <= 'h0;
  12.         data_d1 <= 'h0;
  13.     end
  14.     else begin
  15.         data_d0 <= data;
  16.         data_d1 <= data_d0;
  17.     end

  18. assign pos_edge = data_d0 && ~data_d1;
  19. assign neg_edge = ~data_d0 && data_d1;

  20. endmodule


复制代码


发表于 前天 14:03 | 显示全部楼层
应该还是要考虑的吧,如果输入的data是异步信号,那么第一级触发器会出现亚稳态,用可能产生亚稳态的信号进行组合逻辑边沿检测是不稳妥的吧。
稳妥起见我是先两级同步然后再把同步的信号进行边沿检测,一共用了四级d触发器。但是这样检测到的边沿,会比原data的边沿慢几拍。我是这样处理IIC SDA SCL信号的,因为100K、400K对于我时钟域来说慢的很,所以边沿检测晚一点点也无伤大雅。不知道大佬们对此怎么看。学习一下
发表于 前天 15:16 | 显示全部楼层
这里的data默认应该是同步之后的信号。如果没有同步,就在模块外面用两级寄存器做完同步再送进来
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

X

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-5-31 05:07 , Processed in 0.018331 second(s), 7 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表