library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; entity fixup is port ( DIN: in STD_LOGIC_VECTOR(15 downto 0); -- Data inputs S: in UNSIGNED(3 downto 0); -- Shift amount, 0-15 FEN: in STD_LOGIC; -- Fixup enable FDAT: in STD_LOGIC; -- Fixup data DOUT: out STD_LOGIC_VECTOR(15 downto 0) -- Data bus output ); end fixup; architecture fixup_arch of fixup is begin process(DIN, S, FEN, FDAT) begin for i in 0 to 15 loop if (i < CONV_INTEGER(S)) and (FEN = '1') then DOUT(i) <= FDAT; else DOUT(i) <= DIN(i); end if; end loop; end process; end fixup_arch;