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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1782|回复: 3

[求助] verilog HDL中的@

[复制链接]
发表于 2015-9-17 10:36:26 | 显示全部楼层 |阅读模式

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

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

x
各位大侠,请问在verilog中,一个always语句,在@后面的信号处于一个不确定状态(X),将会怎么执行?
发表于 2015-9-17 14:05:22 | 显示全部楼层
always后面跟的是信号的跳变沿,比如always @(posedge a)

如果此时a是从逻辑“0”跳变为不定态“x”,仿真器一般认为是上升沿;
同理,如果此时a是从逻辑“1”跳变为不定态“x”,仿真器一般认为是下降沿。
 楼主| 发表于 2015-9-18 21:35:48 | 显示全部楼层
回复 2# wdzic_fbb    谢谢啦!是这样的,有关的一道题:               事件A分别在10,20,30发生,而B一直保持X状态,问在30时Count的值是多少。
               reg[7:0]Count;
               initial
                      Count=0;
               always
                        begin
                        @(A) Count=Count+1;
                        @(B) Count=Count+1;
                        end;
   答案说是Count=1,因为A第一次发生时,Count的值由0变1,然后事件控制@(B)阻挡了进程。 那么这个解释是不是就是说因为B处于不定状态,所以会阻断进程呢?
发表于 2015-9-21 17:16:18 | 显示全部楼层
回复 3# yangfei1991


    你确定你这段代码编译通过了?不报错?

    @(a)和@(b),这个语法就错了啊,
    如果你希望在a,b跳变沿发生变化时,执行动作,你要么写@(posedge a),要么@(negedge a)
    如果你的意图是希望在a,b发生电平变化时,执行动作,你就该写
    always @(a or b)    或者    always @(*)
    begin                                 begin   
            xxxx                                  xxxx
    end                                   end

    再回答你的问题,其实这边不管你b是逻辑“1”、逻辑“0”还是不定态“x”,在沿触发电路中只要检测不到他的上升/下降沿,在电平触发电路中,只要检测不到他的信号变化,都不会执行@(xxx)后面的动作。所以你这边,在b不变的情况下(1,0,x都一样),怎么写,代码都只会执行到a那一句,即count=1
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-23 20:51 , Processed in 0.019311 second(s), 8 queries , Gzip On, Redis On.

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