[an error occurred while processing this directive]
|
procedure PROPAGATE(signal S: inout std_logic_vector (0 to 10)) is
begin
for I in 1 to 10 loop
S(I) <= not S(I-1);
end loop;
end;
signal S: std_logic_vector (0 to 10);
begin
S(0) <= '0';
PROPAGATE(S);
Ожидается, что процедура вычислит значения старшего бита на основе младшего. Бит 0 распространица по всему вектору. Не тут то было. Синтезатор ругается, но схему понимает правильно. Беда в симуляторе, ничего не соображает. По-моему я всё сделал "в духе" VHDL. Можно сигнал раздвоить на вход и выход, и вызывать
PROPAGATE(S, S);
но для симулятора разницы никакой. Младшие биты сигнала по прежнему управляют старшими, у каждого бита по одному драйверу. Где ошибка? Спасибо.
E-mail: info@telesys.ru