Возможно ли выполнять математические операции в аргументе при вызове функции?Математические операции в аргументе функции
Например:
answer = to_integer(dividend/divisor);
Возможно ли выполнять математические операции в аргументе при вызове функции?Математические операции в аргументе функции
Например:
answer = to_integer(dividend/divisor);
Хотя Филлип преувеличивает эффективность среднего VHDL кодера, это не трудная вещь, чтобы попробовать.
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity foo is
end entity;
architecture fum of foo is
signal dividend: unsigned (7 downto 0) := ("11111111"); -- 255
signal divisor: unsigned (7 downto 0) := ("00001111"); -- 15
signal answer: integer;
begin
process
begin
answer <= to_integer(dividend/divisor);
wait for 0 ns;
report "answer = " & integer'image(answer);
wait;
end process;
end architecture;
Результат:
foo.vhdl: 17: 9: @ 0ns: (Докладная записка): ответ = 17
wait for 0 ns;
позволяет answer
считать значение операция (это сигнал, а присваивания не возникают, когда какой-либо процесс выполняется или еще не приостановлен). За 0 нс произойдет задержка дельта-цикла.
Если answer
были переменными, объявленными в процессе, это значение было бы доступно сразу, и ожидание было бы не нужно.
Последний запрос ожидания без задержки не позволяет процессу выполнять несколько раз.
Это займет 2 секунды, чтобы узнать об этом на вашем тренажере. Пожалуйста, сделай так. – Philippe