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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 13441|回复: 36

[讨论] always实现组合逻辑.常用吗?

[复制链接]
发表于 2012-5-29 15:18:42 | 显示全部楼层 |阅读模式

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

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

x




  1. reg a;
  2. always(*)
  3.   begin
  4.     a = b&c;
  5.   end


复制代码


上面是简单例子,老板说业界推荐使用always来实现组合逻辑。
我下来怎么也想不出原因... 为什么要推荐使用always?
是因为很多时候不小心把wire型变量和reg型弄混了吗? 所以干脆就全部reg,在always里实现组合功能了?
发表于 2012-5-29 15:45:47 | 显示全部楼层
1. 可以寫得抽象, 不用去用人腦做邏輯化減.
2. 使用always@(*) 可以避免 sensitive list不齊全導致的Latch問題.
3. reg不是實體DFF/Register.
发表于 2012-5-29 17:04:59 | 显示全部楼层
要么assign 要么always,也没有其他结构了
发表于 2012-5-29 21:23:17 | 显示全部楼层
assign和always各有所长,没有哪个更主流。
发表于 2012-5-29 21:51:10 | 显示全部楼层
某些情况下always写的组合逻辑可读性更强吧,而assign更加简洁,但某些情况下可读性差。
发表于 2012-5-30 00:54:19 | 显示全部楼层
分情况,也看个人写code 风格。
发表于 2012-5-30 16:40:18 | 显示全部楼层
关键看用于什么,比如用于传输延迟建模 可能表述为 always *, a<=#5 b&c, 而连续性赋值的内部延迟可以抑制毛刺。 assign #5 a=b&c; always用于组合逻辑要考虑仿真的时序延迟。
发表于 2012-5-30 18:57:04 | 显示全部楼层
使用always多了,自己会把该组合逻辑的实现方式想的比较明白,但是assign这种方式有点简单,容易犯错。纯粹个人经验!
发表于 2012-5-30 20:09:58 | 显示全部楼层
always 写起来更加像是软件的代码,如果有软件的背景,写起来会比较像
发表于 2012-5-30 23:20:30 | 显示全部楼层
在你这个例子中,always和assign没有任何区别。在一般的例子中,always常用if-else和case,而assign中只能用“? :”,这会导致不定态相关的一些差别。

比如,always@(*) if(A) B=1; else B=0; 这条语句中,如A为不定态,B的结果为0,即导致不定态终止。
而assign B=A?1:0; 这条语句中,如A为不定态,B的结果也为不定态,即使不定态传播。

相关事项非常复杂,但结论是只用“? :”的结果是相当完美的。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-4-28 18:45 , Processed in 0.031801 second(s), 8 queries , Gzip On, Redis On.

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