假设我有一个 8 位标志寄存器:
reg [7:0] flags;
虽然在我的代码中我可以将它的一部分称为flags[0]
,flags[3]
等flags[7:4]
,但我更希望能够按照flags.Z
, flags.C
, flags.STATE
.
目前,我发现这很接近:
`define Z [0]
`define N [1]
`define C [2]
`define V [3]
`define STATE [7:4]
reg [7:0] flags;
这意味着我可以分配和评估flags`Z
,flags`C
和flags`STATE
.
然而,用单字母定义污染全局命名空间似乎是个坏主意,特别是因为notflags`N
编译器会接受。这仍然可以接受吗?
有没有更简单的方法来做到这一点?我知道 SystemVerilog 有结构,但我仅限于 verilog 2001。