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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 8268|回复: 22

[讨论] always组合逻辑的问题

[复制链接]
发表于 2011-7-4 13:23:59 | 显示全部楼层 |阅读模式

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

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

x
always @(a or b or c or d or e or f or g or h or i or j or k or g or m)
begin
    if(!a)
        dout=1'b1;
    else if(b && !c)
              dout=din;
    else if(e && (b || f) || (g && (!h)))
              dout=1'b1;
    else if((b && i && j) || (f && k) || (g && m))
              dout = 1'b0;
    else
             dout=dout;
end

1、这样一个逻辑会不会违反coding style
2、最后一个dout=dout,dout需不需要写到敏感列表里去,不写的话会不会有生成锁存器的风险。或者有没有更优的写法。
发表于 2011-7-4 16:07:23 | 显示全部楼层
1. 会违反coding style。
2. 就是最后这个条件违反了coding style。要明确的是,是否有锁存器不是由敏感列表决定的,而是由你写的代码决定,这里的最后一句,无论你是否有敏感列表,都有锁存器。
3. 任何的组合逻辑没有保存当前值的功能,只有时序逻辑中的寄存器才可以做到。所以,如果你要dout=dout,那么就要用时序逻辑来做。
 楼主| 发表于 2011-7-4 16:16:33 | 显示全部楼层
谢谢楼上大侠的回答,很detail,many thanks!
若我需要在除去以上四个条件之外的条件下dout保持原值无法用组合逻辑实现了?
发表于 2011-7-4 16:39:33 | 显示全部楼层
使用 always @ ( * )

最后的dout=dout会综合成为latch,也是可以使用的
 楼主| 发表于 2011-7-4 16:42:43 | 显示全部楼层
设计要求if(b && !c),dout必须等于din,不能有任何区别,那该怎么做呀
发表于 2011-7-4 17:19:32 | 显示全部楼层
发表于 2011-7-4 23:05:58 | 显示全部楼层
肯定综合成LATCH了
发表于 2011-7-4 23:12:11 | 显示全部楼层
个人认为如果将dout设置成register类型,那会变成latch!好像没有2种情况可供选择的吧!
 楼主| 发表于 2011-7-5 09:23:42 | 显示全部楼层
这个必定是综合成latch,但是用latch不是容易出现亚稳态嘛,,我这里若要实现功能也必须冒着这个风险咯,,,我想知道这样能是可靠设计么
发表于 2011-7-5 09:43:44 | 显示全部楼层
always块尽量作为时序逻辑设计,纯组合逻辑是不锁存的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

X

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

GMT+8, 2025-6-19 16:53 , Processed in 0.027481 second(s), 9 queries , Gzip On, MemCached On.

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