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 に制限されています。