集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1391|回复: 1

请教高手if(c)和if(b-a)为什么会不同?(其中c=b-a)

[复制链接]
lanpad 发表于 2011-8-9 23:28:18 | 显示全部楼层 |阅读模式
本帖最后由 lanpad 于 2011-8-9 23:31 编辑

……      
        reg [3:0] a, b;
        reg  flag;

        wire [3:0] c;

        assign c = b - a;

        always@(posedge rst or posedge clk)
                if(rst)
                        begin
                                a <= 0;
                                b <= 0;
                                flag <= 0;
                        end
                else
                        begin
                                if(b-a==8)/////////////////////////////////////////////////////////////////////////////
                                        flag <= 1;
                                else
                                        begin
                                                a <= a + 1;
                                                b <= b + 2;
                                        end
                        end

endmodule
关键在if(b-a==8)这一句
上面写法的仿真结果显示flag无法按照设计发生跳变。
如果写成if(b-a==4'b1000),则flag可以正常按设计跳变
或者另外指定一个变量 assign c=b-a ,再写成if(c==8),也可以

请问为什么会出现上述结果?b-a的数据类型变化了么?
liujilei311 发表于 2011-8-10 08:02:28 | 显示全部楼层
好帖,学习一下!!!!!!!!!!!!!!
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

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

QQ|小黑屋|手机版|Archiver|集成电路技术分享 ( 京ICP备20003123号-1 )

GMT+8, 2024-5-15 08:21 , Processed in 0.067557 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表