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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4026|回复: 12

[求助] 这样也算是锁存器吗?

[复制链接]
发表于 2013-5-17 17:21:19 | 显示全部楼层 |阅读模式

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

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

x
代码如下:(其中counter是5位的,从0到26循环计数;A0是一位的;




  1.         always @(posedge clk or negedge rst)
  2.                 if(!rst)
  3.                         A0=0;
  4.                 else if(counter==0)
  5.                         A0=~A0;


复制代码


生成的RTL图如下:
捕获.JPG

可见,图片右上方的触发器中有一个使能端,即生成了锁存器;

如果把代码改为:




  1.         always @(posedge clk or negedge rst)
  2. if(!rst)
  3. A0=0;
  4. else if(counter==0)
  5. A0=A0+1;


复制代码


那么RTL图如下:
捕获.JPG

可见上图中不存在使能端,即没有锁存器生成;
可以这样理解吗?
锁存器的标准与危害到底是什么?
发表于 2013-5-17 20:33:35 | 显示全部楼层
不是锁存器
发表于 2013-5-17 22:34:29 | 显示全部楼层
回复 1# guozheng
RTL图所示的不是锁存器,
只是你这样的写法确实有可能产生锁存器,
一般如果有if,那么最后最好加上else,养成这样的习惯。
我一般理解为时序逻辑一般不会产生锁存器,
组合逻辑会产生锁存器,出现未考虑全面的条件时,就会产生。
比如,if或者case,没有写全所有的可能情况,
就会产生锁存器,所以最好加上else或者default。
发表于 2013-5-18 08:03:37 | 显示全部楼层
两个都不算锁存器.
你的if语句里面还有个隐含条件,如果counter!=0 ,那么应该是什么输出?保留原值?要保留原值那就必须有一个en信号了
发表于 2013-5-18 13:28:41 | 显示全部楼层
因为你有always@(posedge clk),带了时钟端口的,不会生成锁存器
发表于 2013-5-18 13:32:11 | 显示全部楼层
这样写容易产生锁存器
发表于 2013-5-18 16:22:13 | 显示全部楼层
时序逻辑不会出现latch,只有组合逻辑里面才有可能。
latch有可能会造成仿真结果和实际上板结果不一致。
发表于 2013-5-20 15:43:14 | 显示全部楼层
带使能端,不代表会得到latch,做下去试试就好了
另外,先把“=”改成“<=”
发表于 2013-5-21 09:34:11 | 显示全部楼层
哪只眼看到锁存器了?
那是带有使能端的DFF罢了
发表于 2013-5-21 12:20:39 | 显示全部楼层
latch是活在组合逻辑的世界中的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-23 16:34 , Processed in 0.026175 second(s), 10 queries , Gzip On, Redis On.

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