Я пытаюсь сделать 8-битный последовательный множитель на Quartus II. Я сделал все симуляции всех блоков, но один показывает ошибку в симуляции VWF. Блок sum_reg
выполняет бесконечный сдвиг за очень короткий промежуток времени.
В «темно-синей» части симуляции сигнала, на o_DOUT, это когда сдвиг становится бесконечным, пока старший бит не переходит в младший бит. На изображении ниже показано, что происходит в темно-синей части симуляции:
Кто-то знает, что случилось?
Под кодом:
Суммарный регистр (где симуляция идет не так):
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;
entity sum_register is
port (
i_DIN : in UNSIGNED(8 DOWNTO 0);
i_LOAD : in STD_LOGIC;
i_CLEAR : in STD_LOGIC;
i_SHIFT : in STD_LOGIC;
o_DOUT : buffer UNSIGNED(15 downto 0)
);
end sum_register;
architecture arch_1 of sum_register is
begin
process(i_CLEAR,i_LOAD,i_SHIFT, i_DIN)
begin
IF (i_CLEAR = '1') THEN
o_DOUT <= "0000000000000000";
ELSIF (i_LOAD = '1') THEN
o_DOUT(15 downto 7) <= i_DIN;
ELSIF (i_SHIFT = '1') THEN
o_DOUT <= o_DOUT SRL 1;
END IF;
end process;
end arch_1;