それほど頻繁に使うわけではないけれでも便利なもの。
たとえば次のように書くと(dataは複数ビットのバス)。
assign all_on = &data; // AND assign bit_on = |data; // OR assign parity = ^data; // XOR
all_onはdataの全てのビットが1の場合のみ1。
bit_onはdataのいずれかのビットが1でれば1。全てのビットが0の場合のみ0。
parityはdata中に奇数個の1がある場合は1。偶数個の1があある場合は0となる。
つまりそれぞれこんな感じ
all_on = data[0]; for (i=1; i < DATA_WIDTH; i=i+1) all_on = all_on & data[i]; bit_on = data[0]; for (i=1; i < DATA_WIDTH; i=i+1) bit_on = bit_on | data[i]; parity = data[0]; for (i=1; i < DATA_WIDTH; i=i+1) parity = parity ^ data[i];
ビット幅を気にする必要がないので楽ですよね。
0 件のコメント:
コメントを投稿