А основной процесс работает по фронту?
Эта схема будет не правильно работать если сигнал ND будет выставлен чуть раньше заднего фронта.
По этому ND нельзя использовать. Нужен еще один регистер для ND. Тогда все работает коректно.
Код
signal DRY_int : std_logic_vector(1 downto 0);
signal DRY1: std_logic;
begin
P1: process (CLK, RSTl)
begin
if RSTl = '0' then
DOUT <= (others => '0');
elsif CLK'event and CLK = '1' then
if ND = '1' then
DOUT <= DIN;
DRY1 <= '1';
else
DRY1 <= '0';
end if;
end if;
end process P1;
P2 : process(RSTl, CLK)
begin
if RSTl = '0' then
DRY_int <= (others => '0'); --Async reset
elsif CLK'event and CLK = '0' then -- Clocked by falling edge of CLK
DRY_int <= DRY1 & DRY_int(1); --Two bit shift register
end if;
end process P2;
DRY <= DRY_int(1) and not DRY_int(0); -- Set output DRY
end a2b_arch;
Спасибо.
Это лучшее схема чем было у меня до этого. Спасибо еще раз.