2014-01-23 51 views
2

**在verilog中表示什麼?Verilog **表示法

我提供了一個測試平臺

localparam NUM_INPUT_BITS  = 1; 
localparam NUM_OUTPUT_BITS  = NUM_INPUT_BITS + 1; 
localparam MAX_OUTPUT_BIT  = NUM_OUTPUT_BITS - 1; 
localparam NUM_TEST_BITS  = (NUM_INPUT_BITS * 2) + 1; 
localparam MAX_TEST_BIT   = NUM_TEST_BITS - 1; 
localparam NUM_TEST_CASES  = 2 ** NUM_TEST_BITS; 
localparam MAX_TEST_VALUE  = NUM_TEST_CASES - 1; 
localparam TEST_A_BITTEST_A_BIT = 0; 
localparam TEST_B_BIT   = NUM_INPUT_BITS; 
localparam TEST_CARRY_IN_BIT = MAX_TEST_BIT; 
localparam TEST_SUM_BIT   = 0; 
localparam TEST_CARRY_OUT_BIT = MAX_OUTPUT_BIT; 
localparam TEST_DELAY   = 10; 

下面的邏輯,我想不出什麼NUM_TEST_CASES值將評估爲。最終答案應該是8,所以我假設**意味着y ** x = y^x,但我想確認一下。

+0

IEEE Std 1800-2012是一個免費的PDF,並且'**'的搜索很快找到了「11.4.3算術運算符」部分。 – toolic

+0

鏈接到IEEE Std 1800-2012:http://standards.ieee.org/getieee/1800/download/1800-2012.pdf – Greg

+3

^被用於XOR運算符。 –

回答

13

雙星號是在Verilog 2001中引入的「強大」運算符。它是一個算術運算符,它將左手側操作數用於右側操作數的冪。換句話說,X ** YX提升至Y的冪。所以在你的情況下,2 ** NUM_TEST_BITS意味着2的權力爲NUM_TEST_BITS

+1

如果我使用verilog 1993,運營商是什麼? –

0

經常2 ** N-1被用於指示所有N個位爲1。例如2 ** 4 - 1 = 15意味着4'b1111

2

**是功率操作(提升到的功率)。

+1

重新調整已經在另一個答案中已經說過的內容沒什麼意義,特別是如果答案已經存在了一段時間。 –