Средство запоминания, когда использовать => и когда использовать <=, означает думать следующим образом. </p>
"<=" в качестве назначения для сигнала в качестве цели (для переменной это ": ="). </strong>
Примеры:
y <= a + b + c; --y is a signal
v := a + b +c; --v is a variable
"=>" как отображение .
Пример для явного сопоставления компонента (рекомендуемый стиль IMHO):
my_instance : my_component
port map(
port1 => my_signal1
);
Пример для явного отображения функции (полезно, когда параметры не тривиальны):
my_signal <= my_function(parameter1 => something1, parameter2 => something2);
Пример явного отображения массива
type array_type is array(0 to 1) of std_logic_vector(7 downto 0);
constant my_array : array_type := (0 => x"AB", 1 => x"CD");
Пример явного сопоставления записи
type record_type is record
a : natural;
b : std_logic_vector(2 downto 0);
end record;
constant my_record: record_type := (a => 0, b => "101");
Преимущество заключается в том, что этот стиль позволяет выполнять сопоставление в порядке вашего выбора (не обязательно в порядке определения компонента / функции ...). Более того, в конкретном случае массива только с одним элементом это требуется.
Наконец, с помощью "=>" ключевое слово others позволяет отобразить все оставшиеся элементы, которые еще не были сопоставлены.
Пример назначения массива:
type array_type is array(0 to 5) of std_logic_vector(7 downto 0);
constant my_array : array_type := (0 => x"AB", 1 => x"CD", others => (others => '0'));