Используя первый фрагмент кода, я получаю эту ошибку из-за того, что куча моих сигналов не приводит к выводам. Я почти уверен, что это потому, что в первом фрагменте кода первый оператор if никогда не достигается. Почему это так? Во втором фрагменте я изменил код, и все мои проблемы были исправлены. Я сделал изменение как интуитивный импульс, я понятия не имею, почему это все исправило. Может ли кто-нибудь объяснить, как синтезатор генерирует схему?
Первый фрагмент:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity DataReg is
generic(N: integer := 8);
port(DIN: in std_logic_vector(N - 1 downto 0);
DOUT: out std_logic_vector(N - 1 downto 0);
CLK: in std_logic;
ENABLE: in std_logic;
RESET: in std_logic);
end DataReg;
architecture Behavioral of DataReg is
begin
process(CLK, ENABLE)
begin
if rising_edge(CLK) and ENABLE = '1' then
DOUT <= DIN;
end if;
if rising_edge(CLK) and RESET = '1' then
DOUT <= (others => '0');
end if;
end process;
end Behavioral;
Второй фрагмент: (исправленный код)
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity DataReg is
generic(N: integer := 8);
port(DIN: in std_logic_vector(N - 1 downto 0);
DOUT: out std_logic_vector(N - 1 downto 0);
CLK: in std_logic;
ENABLE: in std_logic
RESET: in std_logic);
end DataReg;
architecture Behavioral of DataReg is
begin
process(CLK, ENABLE)
begin
if rising_edge(CLK) then
if ENABLE = '1' then
DOUT <= DIN;
elsif RESET = '1' then
DOUT <= (others => '0');
end if;
end if;
end process;
end Behavioral;
RESET
зафиксировано как'1'
где-то еще в коде? (ИлиENABLE
в'0'
..) - person JHBonarius   schedule 10.05.2018