2013-01-07 42 views
6

的我已經有了一個寄存器聲明爲這樣:算術移位作爲一個邏輯移位,無論簽署變量

logic signed [15:0][2:0][15:0] registers; 

當我把一個2的補數到陣列和算術移位數,邏輯移位代替:

registers[0][0] = 16'b1000000000000000; 
registers[0][0] = registers[0][0]>>>2; 

顯然,如果數字沒有簽名,系統將邏輯移位而不是算術移位。然而,正如你可以清楚看到的那樣,'登記'是絕對簽署的。

有沒有人知道我可能會在這裏失蹤?

謝謝!

回答

10

使用Verilog,一旦你選擇了零件,結果是unsigned。使用零件選擇上的$signed系統任務對其進行簽名。

​​
+0

不可思議的。謝謝! – user1567095