调用函数时是否可以在参数内执行数学运算?
例如:
answer = to_integer(dividend/divisor);
答案 0 :(得分:1)
虽然Phillipe夸大了普通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 :(报告说明):answer = 17
wait for 0 ns;
允许answer
假设操作的值(它是一个信号,并且当任何进程正在执行或尚未暂停时,不会发生分配)。 0 ns将导致增量循环延迟。
如果answer
是在流程中声明的变量,它的值将立即可用,并且不需要等待。
没有延迟的最后一个等待语句会阻止进程重复执行。