Операторы сдвига (sla
, sra
, sll
и srl
) все определены для типа , независимо от экземпляра (signal
или variable
),Действительно, эти операторы могут использоваться везде, на которые ссылается тип, даже для constant
, record
и т. Д.
Например, скажем, у вас есть:
type my_record is record
a : std_logic_vector(7 downto 0);
b : std_logic_vector(3 downto 0):
end record my_record;
Ипара экземпляров, таких как:
architecture behav of foo is
signal x : my_record;
begin
process
variable y : my_record;
begin
y.a := y.a sll 1;
y.b := x.b srl 1;
end process;
end architecture behav;
Обратите внимание, что операторы могут использоваться в любом экземпляре этого типа.Это даже приемлемо для подпрограмм, таких как:
function myfunc(a : std_logic_vector) return std_logic_vector is
begin
return (a sll 5);
end function myfunc;