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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 7296|回复: 31

大家帮忙看看这小段Verilog代码,多谢!

[复制链接]
发表于 2009-10-15 13:56:33 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 psd0208 于 2009-10-15 14:18 编辑

always @ (negedge nReset or posedge CLK)
if(!nReset)
begin
     a<=0;
     b<=0;
     c<=0;
end
else
begin
     a<=a;
     b<=b;
     c<=c;
    if(d)    a<=a+1'b1;
    if(e)
    begin
      a<=0;
      c<=0;
      if(d || a)                       c<=1;
      if(a>b)                         b<=a;
      if(d && a+1'b1)>b)       b<=a+1'b1;
    end
end

我觉得有点问题:如果d和e同时都成立的话,那么a到底是执行加1还是置0呢?

但是这段代码编译确实没有问题的,可以正常使用。非常的疑惑啊。望高手指点。
 楼主| 发表于 2009-10-15 14:07:54 | 显示全部楼层
自己顶一个哦 不然沉了
发表于 2009-10-15 14:08:41 | 显示全部楼层
这代码写的。。。。。
你说的编译没问题 不代表功能正确
你仿一下就知道了 到处都是错
 楼主| 发表于 2009-10-15 14:16:02 | 显示全部楼层
楼上何处此言 能否说的详细点 这是已经实现的项目里抽出来的一小段 我看不明白

其他没什么问题的 我就是有“如果d和e同时都成立的话,那么a到底是执行加1还是置0呢?”的疑惑
 楼主| 发表于 2009-10-15 14:19:38 | 显示全部楼层
发表于 2009-10-15 14:20:02 | 显示全部楼层
如果你这个是已经实现的项目 只能说明有其他的逻辑保证了这部分功能的实现
比如其他逻辑保障了d和e不会同时有效 所以就不会出现你说的冲突问题
单看这段code 怎么会没有问题。。。
 楼主| 发表于 2009-10-15 14:27:13 | 显示全部楼层


如果你这个是已经实现的项目 只能说明有其他的逻辑保证了这部分功能的实现
比如其他逻辑保障了d和e不会同时有效 所以就不会出现你说的冲突问题
单看这段code 怎么会没有问题。。。
chit_wps 发表于 2009-10-15 14:20


看代码可以看到的是d和e是可能同时有效的:

if(e)
    begin

      if(d || a)                       c<=1;
发表于 2009-10-15 14:55:04 | 显示全部楼层
把整个项目里面的一小段抽出来 不好说啊 1# psd0208
发表于 2009-10-15 14:57:56 | 显示全部楼层
自己可以去仿真
这样会覆盖
多个IF都满足时后面执行的结果会覆盖前面的结果。
 楼主| 发表于 2009-10-15 14:59:06 | 显示全部楼层
貌似明白了:
begin end里面的语句是从上到下顺序执行的,所以在d和e同时有效的情况下,先执行了a+1,然后又因为满足条件而执行了a=0,这样的话最后的结果还是a=0。

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

本版积分规则

关闭

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

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

GMT+8, 2024-11-17 08:44 , Processed in 0.027029 second(s), 8 queries , Gzip On, Redis On.

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