您可以将 int 与 Verilog 中的总线进行比较吗?
can you compare an int to a bus in verilog?
我知道这可能是微不足道的,但这是我第无数次用谷歌搜索它,所以我想得到一个明确的答案。
我在测试台中有以下代码,因此它不需要是可综合的。这种比较会按预期工作吗?
logic [4:0] bus;
task mytask;
input int i;
begin
if(i == bus)
$write("Match");
end
endtask
正如 dwikle 所指出的,答案是肯定的。但本着授人以渔的精神,你可能想知道为什么...
在 System-Verilog 中有 2 态类型和 4 态类型。 2-states 只能取值 0 和 1; 4 态类型可以取值 0、1、X 和 Z。logic
是 4 态类型; bit
是 2 态类型。
您可以将 "buses" 设为:
logic [7:0] my_4_state_8_bit_bus;
bit [7:0] my_2_state_8_bit_bus;
这些也可以是有符号或无符号的:
logic signed [7:0] my_4_state_signed_8_bit_bus;
bit unsigned [7:0] my_2_state_unsigned_8_bit_bus;
类型 int
仅仅是一个预定义的、32 位、有符号、2 态总线:
int this_is_the_same;
bit signed [31:0] as_this;
您可以将 4 态类型分配给 2 态类型。如果将 4 态类型分配给 2 态类型,则 X 和 Z 将转换为 0。
您可以将 4 态类型与 2 态类型进行比较。如果 4 状态类型的任何位是 X 或 Z,则比较结果将为 1'bX。
我知道这可能是微不足道的,但这是我第无数次用谷歌搜索它,所以我想得到一个明确的答案。
我在测试台中有以下代码,因此它不需要是可综合的。这种比较会按预期工作吗?
logic [4:0] bus;
task mytask;
input int i;
begin
if(i == bus)
$write("Match");
end
endtask
正如 dwikle 所指出的,答案是肯定的。但本着授人以渔的精神,你可能想知道为什么...
在 System-Verilog 中有 2 态类型和 4 态类型。 2-states 只能取值 0 和 1; 4 态类型可以取值 0、1、X 和 Z。logic
是 4 态类型; bit
是 2 态类型。
您可以将 "buses" 设为:
logic [7:0] my_4_state_8_bit_bus;
bit [7:0] my_2_state_8_bit_bus;
这些也可以是有符号或无符号的:
logic signed [7:0] my_4_state_signed_8_bit_bus;
bit unsigned [7:0] my_2_state_unsigned_8_bit_bus;
类型 int
仅仅是一个预定义的、32 位、有符号、2 态总线:
int this_is_the_same;
bit signed [31:0] as_this;
您可以将 4 态类型分配给 2 态类型。如果将 4 态类型分配给 2 态类型,则 X 和 Z 将转换为 0。
您可以将 4 态类型与 2 态类型进行比较。如果 4 状态类型的任何位是 X 或 Z,则比较结果将为 1'bX。