[an error occurred while processing this directive]
|
Вот опять возник старый глюк.
Смысл такой: на регистр (Dinbuf) подаётся входной сигнал (Din). Но регистр принимает значение входа немедленно, не дожидаясь клока.
Я лечу это тем что объявляю ещё один вспомогательный сигнал (Din_z) и входной сигнал сначала напрямую присваиваю вспомогательному, а потом вспомогательный подаю на регистр. Задержка появляется. ("Вспомогательные" присвоения в примере закомментированы).
Приведённый пример ессно работает. Я не могу показать весь проект, он очччнь большой. Пример так, для иллюстрации. Первый раз этот глюк мне попался в Алд еке (наверно пятая версия) года два назад. Теперь вот в любимом Модел симе. Пробовал на версиях 5.6 и 5.8, одинаково.
В текущем проекте вот нарвался уже в пятый раз. Глюк однажды появляется, но не исчезает. Надоело.
Объявленные но не нагружаемые сигналы отсутствуют. По колесу бил. Жену целовал.
Идеи насчёт костра и бубна принимаю. Ну? Кто? ПАмагите.
entity gluk is
port(
Reset : in std_logic;
Clk : in std_logic;
Din : in std_logic_vector(15 downto 0);
);
end entity gluk;
architecture gluk_arch of gluk is
signal Dinbuf : std_logic_vector(15 downto 0);
--signal Din_z : std_logic_vector(15 downto 0);
begin
--Din_z <= Din;
process(Reset, Clk)
begin
if (Reset = '1') then
Dinbuf <= x"0000";
elsif rising_edge(Clk) then
Dinbuf <= Din;
--Dinbuf <= Din_z;
end if;
end process;
end architecture gluk_arch;
Посмотрел бы сюда сисадмин, и подумал бы : "Надо что нибудь сделать для ребят чтобы в новом форуме они могли красиво форматировать".
E-mail: info@telesys.ru