2015-07-17 16 views

ответ

1

Хотя Филлип преувеличивает эффективность среднего 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 были переменными, объявленными в процессе, это значение было бы доступно сразу, и ожидание было бы не нужно.

Последний запрос ожидания без задержки не позволяет процессу выполнять несколько раз.