4

是否可以在verilog中参数化位域?本质上,我想使用参数或替代方法来定义位范围。我能想到的唯一方法是使用如下所示的定义,但似乎应该有更好的方法。

`define BITFIELD_SELECT 31:28
foo = bar[BITFIELD_SELECT]
4

2 回答 2

6

参数比定义更好(更安全),因为命名空间对项目来说不是全局的。您应该能够使用两个参数来执行此操作。

parameter BITFIELD_HIGH = 31;
parameter BITFIELD_LOW = 28;

assign foo = bar[BITFIELD_HIGH:BITFIELD_LOW];

或者

parameter BITFIELD_HIGH = 31;
localparam BITFIELD_LOW = BITFIELD_HIGH-3;

assign foo = bar[BITFIELD_HIGH:BITFIELD_LOW];
于 2011-06-23T20:49:58.717 回答
0

如果您使用宏(定义)在调用宏时包含“`”

`define BITFIELD_SELECT 31:28
foo = bar[`BITFIELD_SELECT]; // `BITFIELD_SELECT
于 2020-11-01T22:25:26.500 回答