【问题标题】:Verilog ** NotationVerilog ** 表示法
【发布时间】:2014-01-23 14:54:13
【问题描述】:

在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,但我想确认一下。

【问题讨论】:

标签: verilog system-verilog


【解决方案1】:

双星号是 Verilog 2001 中引入的“幂”运算符。它是一种算术运算符,将左侧操作数乘以右侧操作数的幂。换句话说,X ** YX 提升到Y 的幂。因此,在您的情况下,2 ** NUM_TEST_BITS 表示 2 的 NUM_TEST_BITS 的幂。

【讨论】:

  • 如果我使用的是verilog 1993,运算符是什么?
【解决方案2】:

** 是幂运算(提升到的幂)。

【讨论】:

  • 重新散列另一个答案中已经说过的话几乎没有意义,特别是如果该答案已经存在了一段时间。
【解决方案3】:

通常2 ** N-1用于表示所有N位都是1。例如2 ** 4 - 1 = 15表示4'b1111

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-05
    相关资源
    最近更新 更多