VHDL разница между => и <= - PullRequest
5 голосов
/ 03 ноября 2011

Я постоянно забываю, и трудно найти ответ в учебнике или в Интернете.

Ответы [ 4 ]

6 голосов
/ 03 ноября 2011

Ну, <= - это присвоение. </p>

signal <= A or B;

=> - это синтаксис, используемый для операторов регистра, например так: (Украденный из http://www.cs.umbc.edu/portal/help/VHDL/sequential.html)

case  my_val  is
  when 1 =>  // This is kind of like how the : operator is used for switch in many languages
    a:=b;
  when 3 =>
    c:=d;
    do_it;
  when others =>
    null; // do nothing
end case;

end case;

=> также может бытьиспользуется в присвоениях массивов

myVector <= (1=>'1', OTHERS=>'0');  -- assigns ('0','1','0','0') to "myVector"

Источник: http://www.eda.org/comp.lang.vhdl/html3/gloss_example.html

1 голос
/ 01 марта 2016

Средство запоминания, когда использовать => и когда использовать <=, означает думать следующим образом. </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'));
1 голос
/ 11 февраля 2016

Оператор <= известен как оператор присвоения сигнала, чтобы выделить его истинное назначение.Оператор присваивания сигналов определяет связь между сигналами.Другими словами, сигнал на левой стороне оператора назначения сигнала зависит от сигналов на правой стороне оператора.(Источник: Digital_Mclogic_Design Брайана Мили, раздел: Оператор присвоения сигнала: «<=», стр. 339) Я не смог найти ничего конкретного в операторе =>.

1 голос
/ 03 ноября 2011

<= представляет оператор присваивания, в то время как => используется в операторе case, например:

case sel is
  when "01"   => line <= "1";
  when others => line <= "0";
end case

устанавливает line в «1», если sel равно «01»и «0» в противном случае.

=> также используется в структурном коде в картах портов.

...