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

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜全文
查看: 2214|回复: 5

[原创] 问一个困惑很久的问题

[复制链接]
发表于 2019-8-3 14:06:45 | 显示全部楼层 |阅读模式

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

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

×
//
always@(posedge  clk  or negedge rst_n)
begin
   if(!rst_n)
      cnt<=0;
   else
     begin
         if(cnt<=9)      
            cnt<=cnt+1'b1;
         else
            cnt<=0;
   end
end
//(1)
wire flag;
assign flag==(cnt==5)?1'b1:1'b0;
或者
//(2)
reg flag;
always@(posedge  clk  or negedge rst_n)
begin
   if(!rst_n)
      flag<=0;
   else
     begin
        if(cnt==5)
           flag<=1;
        else
           flag<=0;
      end
end
///////
显然,flag的产生除了(2)里面会有一个延时之外,每次cnt==5的时候flag都会顺利产生。
现在的疑问是,wire 型flag信号和reg型flag信号是一摸一样的宽度的么?
显然reg型flag,每一个脉冲,用同一个时钟去检测肯定是可以一次不漏地检测到的。
那么wire型呢?
如果每次脉冲是和第(1)种一样宽,那么就可以一次不漏地检测到。
       这是不是说明wire连线的延时是可以忽略不计的?
如wire型flag比reg型flag信号更窄,那么用同一个clk去检测wire型flag是不是有可能会漏掉一些脉冲或者错误检测?

网上的说法是组合逻辑最好寄存器输出,那么这种assign赋值语句的输出也需要寄存器输出才能保证不出错吗?






 楼主| 发表于 2019-8-6 15:36:37 | 显示全部楼层


   
snq31418 发表于 2019-8-5 19:33
1. wire 型flag信号和reg型flag信号是一摸一样的宽度的么?

假设周期是2ns。


厉害,你讲得很清楚了。
总之就是时序的问题,从触发器的建立保持时间谈起,讲到了问题的本质。
感谢。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-6 15:38:08 | 显示全部楼层


   
snq31418 发表于 2019-8-5 19:33
1. wire 型flag信号和reg型flag信号是一摸一样的宽度的么?

假设周期是2ns。


嗯,清楚明白,学到了新东西。感谢。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2025-10-16 17:08 , Processed in 0.019463 second(s), 4 queries , Gzip On, Redis On.

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