概述
之间的行为差异我刚刚发现,当涉及function时,总是@(*)无法按预期工作。always_comb和always @(*)
请参阅下面的简单示例代码。
module test;
reg a, b, c;
function reg my_func();
if (b==0) begin
$display("DEBUG 0 @%0t", $time);
return a;
end
else if (b==1) begin
$display("DEBUG 1 @%0t", $time);
return ~a;
end
else begin
$display("DEBUG 2 @%0t", $time);
return 0;
end
endfunction
always @(*) begin
//always_comb begin
c = my_func();
end
initial begin
a = 0; #10;
a = 1; #10;
a=0;
end
endmodule
尝试在模拟always @(*)和always_comb之间切换。如果我使用always @(*),则不会显示任何内容。但是,如果使用always_comb,它会显示预期的结果如下:
DEBUG 2 @0
DEBUG 2 @0
DEBUG 2 @10
DEBUG 2 @20
上面的代码只是简单的组合逻辑。 为什么always @(*)和always_comb显示不同的结果?这只是模拟问题吗?进一步的实验我注意到它可能与在always块内使用function有关。
2015-09-25
AldoT
+0
IEEE Std 1800-2012,第9.2.2.2节组合逻辑always_comb过程 –
最后
以上就是柔弱仙人掌为你收集整理的comb函数在C语言中,always_comb和always @(*)的全部内容,希望文章能够帮你解决comb函数在C语言中,always_comb和always @(*)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复