2016-03-02 74 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