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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 8854|回复: 28

[求助] 上升沿的捕获电路(代码)

[复制链接]
发表于 2010-9-17 14:36:47 | 显示全部楼层 |阅读模式

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

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

x
一个简单的上升沿检测代码:
reg RS_r1,RS_r2;
always @ (posedge CLKIN or posedge RESET)
    if(RESET)
        RS_r1 <= 1'b0;
    else
        RS_r1 <= RS;
always @ (posedge CLKIN or posedge RESET)
    if(RESET)
        RS_r2 <= 1'b0;
    else
        RS_r2 <= RS_r1;
        
wire pos_RS = RS_r1 & ~RS_r2;

然后我们使用pos_RS来在其他模块里做判断使用,

但这种方法实际检测到的上升沿会比实际上升沿延迟2个时钟

那用下面的方法不就可以直接检测上升沿了吗?


always @ (posedge RS or posedge RESET)//直接检测RS上升沿

这两种方法有什么具体区别吗?
发表于 2010-9-17 14:43:26 | 显示全部楼层
本帖最后由 down_load 于 2010-9-17 14:44 编辑

方式1可以消除亚稳态
 楼主| 发表于 2010-9-17 14:45:52 | 显示全部楼层
可是有些时候,第一种方法会有一定延时,影响到数据传输,可否用第二种方法呢?
发表于 2010-9-17 16:54:15 | 显示全部楼层
用方法1 --〉同步设计
  方法2 --〉异步设计(RS 需要设置为clock)
一般用方法1 在延迟上处理,应该没有问题
发表于 2010-9-17 21:33:46 | 显示全部楼层
第二种方法如果RS上有毛刺,会有误判断
发表于 2010-9-17 21:41:39 | 显示全部楼层
全同步电路,不能随便使用posedge和negedge
发表于 2010-9-18 10:39:33 | 显示全部楼层
发表于 2010-9-18 20:35:24 | 显示全部楼层
那要看具体的设计需求了。
第一种设计,是同步设计方法,不知道你说的延迟两个clock是怎么回事,因为检测到该信号的上升沿脉冲,即pos_RS信号,是在RS_r1这个信号0->1变化之后的一个clock边沿处,如果以clock的边沿来看,并没有延迟;
第二种设计实际上一般是不允许的,除非把这个pos_RS当作时钟。实际的设计中,如果当作时钟的话,需要使用DCM(Xilinx的FPGA)或者指定的时钟逻辑电路(ASIC)中。如果当作普通的控制信号或者数据信号,不允许这样的设计,综合也过不去。
 楼主| 发表于 2010-9-19 07:50:26 | 显示全部楼层
没有延时吗?
发表于 2010-9-19 09:47:01 | 显示全部楼层
o 受教了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-26 23:15 , Processed in 0.025066 second(s), 6 queries , Gzip On, Redis On.

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