VHDLの算術シフト

9.1.4 Shift Operators / 非公式訳 -」でシフト演算子について見た。算術シフトだけ試してみる。

結局、x sla nx sra -nと同じ、x sla -nx 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;

f:id:ti-nspire:20210813132219j:plain:w500