ただいまコメントを受けつけておりません。
雑記 > codeのメモ > 【SystemVerilog】Bit select
あるbit幅の信号から、変数を使い特定のbit幅を選択したい場合の記述。
例えば256bit幅の信号から32bitを選択したいとき。
bit [255:0] b256 ;
bit [255:0] a32 ;
assign a32 = b256[i +:32] ; // 又は[32*(i+1)-1 -:32]
自分は知らなかっただけで、IEEE.1364-2005の5.2.1 Vector bit-select and part-select addressingに詳細があります。
よく以下の様に書いてしまい、コンパイルエラーになりますが、上記の書き方で回避できます。
assign a32 = b256[32*(i+1)-1:32*i];
上記を知らなくて、下のシフトを使っていました。
assign a32 = b256>>(32*n);
![]() |
ただいまコメントを受けつけておりません。