Chisel/Verilogの右シフトについて
先日、ChiselでRISCVを作っている時に、算術右シフト(負の値のときに上位bitは1詰め)と 論理シフト(なんであれ0詰め)があることがわかりました。 少し戸惑ったので、備忘のために記載します。
Chiselの右シフト
- Builtin Operators · freechipsproject/chisel3 Wiki · GitHub
- 算術右シフト: (UInt Val) >>
- 論理右シフト: (SInt val) >>
Verilogの右シフト
- Difference between >> and >>> in verilog? - Electrical Engineering Stack Exchange
- 算術右シフト: >>>
- 論理右シフト: >>
VerilogのWireはデフォルトではUnsignedだと思うので、演算子を変えないといけなかったのかもしれませんが、明示的でわかりやすいですね。
Chiselは同じ拡張子でエレガントだなと思いました。クラスって感じがします。