0

我需要定义依赖于其他一些输入的参数值。我尝试了以下方法,但它不起作用。还有其他替代方法吗?

 module (...)
...
input sel ;
..
case (sel)
0: parameter data1 =5;
1: parameter data1 =5;
endcase
...

谢谢

4

1 回答 1

3

参数是常量,因此不能在运行时更改,并且不适用于动态结构。

如果您需要根据输入设置值,这些值在执行期间会发生变化,您只需要定义正确宽度的线或寄存器。

或者,对于常量,您可以在向下传递值的地方使用分层参数,但它们必须全部基于参数或常量。

module top();
  localparam DATA_WIDTH = 32;

  middle #(
    .DATA_WIDTH( DATA_WIDTH )
  ) middle_0();

endmodule

module middle #(
  parameter DATA_WIDTH = -1

  //DO NOT MODIFY
  parameter DATA_OUT_WIDTH = DATA_WIDTH + 10;
)(
  output [DATA_OUT_WIDTH-1:0] data_tx
);
endmodule

对于您的情况:

module (...)
...
input sel ;
..
  reg [3:0] data1;
  always @*
    case (sel)
      0: data1 =5;
      1: data1 =5;
    endcase
  end

endmodule
于 2013-02-26T12:08:14.360 回答