Verilog **表示法

时间:2014-01-23 14:54:14

标签: verilog system-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,但我想确认一下。

3 个答案:

答案 0 :(得分:14)

双星号是Verilog 2001中引入的“幂”运算符。它是一个算术运算符,它将左侧操作数转换为右侧操作数的幂。换句话说,X ** YX提升为Y的力量。因此,在您的情况下,2 ** NUM_TEST_BITS表示NUM_TEST_BITS的强大功能。

答案 1 :(得分:2)

**是动力操作(提高到动力)。

答案 2 :(得分:0)

Often 2 ** N-1 is used to indicate all N bits are 1. For example 2 ** 4 - 1 = 15 means 4'b1111.