这两个模块似乎是可以互换的.他们的行为有何不同?
module Add_half (sum, c_out, a, b);
input a, b;
output reg c_out;
output reg sum;
always@(a, b)
begin
sum = a ^ b;
c_out = a & b;
end
endmodule
module Add_half (sum, c_out, a, b);
input a, b;
output c_out, sum;
assign sum = a ^ b;
assign c_out = a & b;
endmodule
Run Code Online (Sandbox Code Playgroud)
事件调度存在细微差别,这可能导致在时间0处的不同行为.
当a或b在时间零处被初始化为某个非X值时,始终块可能不会将其视为变化,因此可能不会被触发.因此,输出可能与输入不一致.
相反,连续分配的输出将始终与其输入一致.
| 归档时间: |
|
| 查看次数: |
76 次 |
| 最近记录: |