[SystemVerilog] bit の逆順並び替え、endian 変換

SystemVerilog では streaming operators という演算子が使え、bit の並びを逆順にしたり 指定した bit 単位で並び順を変えるのに使えます(回路記述に使えます)。


a[7:0] = {<< {8'b1100_0101}}; // a = 8'b1010_0011 bit 逆順
b[31:0]= {<< 8 {32'hDEAD_BEEF}}; // b= 32'hEFBE_ADDE 8bit 単位で並び替え (endian 変換)
view raw

gistfile1.sv

hosted with ❤ by GitHub

{<<8{value}}{<<byte{value}} のように定数または型が指定できます。<< が stream operator で <<>> があります。>> の場合、順番は変わらないのであまり使いどころがないかも。

いろいろな例は、IEEE Std 1800™-2012 の 11.4.14.2 Re-ordering of the generic stream にあります。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク