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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 5363|回复: 11

[求助] verilog 对同一端口用多个assign会不会冲突呀?

[复制链接]
发表于 2013-10-30 14:57:10 | 显示全部楼层 |阅读模式

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

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

x
assign PORT =  (DSP_EN1&& !nRD && nWR) ? AD1 : 16'bz;

assign PORT =  (DSP_EN2 && !nRD && nWR) ? AD2: 16'bz;

assign PORT =  (DSP_EN3 && !nRD && nWR) ? AD3: 16'bz;

assign PORT =  (DSP_EN4 && !nRD && nWR) ? AD4 : 16'bz;

assign PORT =  (DSP_EN5 && !nRD && nWR) ? AD5 : 16'bz;


DSP_EN1、2、3、4、5  是前面程序的结果,只有一个为1,同时对port赋值的话,会不会一会为高阻一会有值呀,这个程序能正常运行的
发表于 2013-10-30 15:22:27 | 显示全部楼层
这种情况下可以,程序能正常运行,当然硬件得保证DSP_EN1&& !nRD && nWR等条件同一时间只有一个会active,

要是如下面情况就会报错,
assign port = a;
assign port = b;
发表于 2013-10-30 16:39:05 | 显示全部楼层
看你的条件,不要在同时有两个赋值assign执行就行了
 楼主| 发表于 2013-10-30 17:34:29 | 显示全部楼层
回复 2# eaglelsb


当然硬件得保证DSP_EN1&& !nRD && nWR等条件同一时间只有一个会active,你说的active是啥意思呀,
DSP_EN1&& !nRD && nWR只能为0或1,如果为0则PORT=高阻,如果为1则等于一个数,assign是并行执行的,那port到底是为一个数还是高阻呢。
发表于 2013-10-31 08:28:37 | 显示全部楼层
为什么要这样写呢,目的是什么?我猜LZ想做成这种电路吧:assign port = ? :(?:(?:(?:)))
发表于 2013-10-31 09:46:00 | 显示全部楼层
写成楼上的这种形式比较好吧。
发表于 2013-10-31 10:14:12 | 显示全部楼层
回复 4# nb533

嗯,是这个意思,只有某一个端口的使能为1时才有值进来,否则为z,通常你会在开通的那段时间内把值传入,把该处理的事情处理完,然后再关闭也不用CARE了。就像你进自动门一样,一到门前门就开了,你进去后就再关了。
发表于 2013-10-31 14:48:32 | 显示全部楼层
同意五楼的看法!不过楼主那种编写方式也是可以的,可以对同一个变量进行多个连续赋值,但是绝对不能进行多个过程赋值(产生竞争)!
发表于 2013-11-1 13:31:00 | 显示全部楼层
如果有两个或两个以上条件同时为真就会冲突的。
发表于 2013-11-1 15:02:49 | 显示全部楼层
LS已经说得差不多了。我建议不要用这种写法,不是每次都能保证条件互斥的,到出问题的时候这种写法很不好检查错误
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2025-7-19 11:57 , Processed in 0.027509 second(s), 9 queries , Gzip On, MemCached On.

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