2016-03-02 116 views
1

我知道这可能是微不足道的,但这是我第一次使用它,所以我想得到一个明确的答案。你可以比较一个int在verilog中的总线吗?

我在测试台中有下面的代码,所以它不需要合成。这个比较是否按预期工作?

logic [4:0] bus; 

task mytask; 
    input int i; 
    begin 
     if(i == bus) 
      $write("Match"); 
    end 
endtask 
+2

你试过了吗?见http://www.edaplayground.com/x/Vc3 – dwikle

回答

1

正如dwikle指出的那样,答案是肯定的。但是,本着教导一个人钓鱼的精神,你可能想知道为什么......

在System-Verilog中,有2个状态类型和4个状态类型。 2状态只能取值0和1; 4状态类型可以取值0,1,X和Z. logic是4状态类型; bit是一个2状态类型。

可以使 “公共汽车” 出来之一:

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状态类型进行比较。如果四态类型的任何位是X或Z,则比较结果将为1'bX。

http://www.edaplayground.com/x/Rdu