「9.1.4 Shift Operators / 非公式訳 -」でシフト演算子について見た。算術シフトだけ試してみる。
結局、x sla n
はx sra -n
と同じ、x sla -n
はx sra n
と同じということか。
entity sute_vhdl is port( outp_sla: out bit_vector(7 downto 0); outp_sra: out bit_vector(7 downto 0) ); end entity; architecture rtl of sute_vhdl is begin process(all) constant x: bit_vector(7 downto 0) := "10110001"; begin -- 左に+1ビットだけ算術シフト。 -- 右側に空いた1ビットには元の右端ビットがコピーされる。 outp_sla <= x sla 1; -- 0110_0011 -- 右に-1ビットだけ算術シフト(要するに左に+1ビットだけ算術シフト)。 -- 右側に空いた1ビットには元の右端ビットがコピーされる。 outp_sra <= x sra -1; -- 0110_0011 /* -- 左に-1ビットだけ算術シフト(要するに右に+1ビットだけ算術シフト)。 -- 左側に空いた1ビットには元の左端ビットがコピーされる。 outp_sla <= x sla -1; -- 右に+1ビットだけ算術シフト。 -- 左側に空いた1ビットには元の左端ビットがコピーされる。 outp_sra <= x sra 1; */ end process; end architecture;