Я пытаюсь использовать функцию генерации, чтобы использовать несколько триггеров в качестве регистра. У меня есть битовый вектор сигнала, который я хотел бы, чтобы каждый бит был входом D в его эквивалентный триггер, но после компиляции я получаю предупреждение о том, что выход Q не имеет драйвера.
Здесь я определяю поведение триггера
entity flipflop is
port(
D,CLK,RST: in BIT;
Q: out BIT
);
end entity;
architecture behavioral of flipflop is
begin
P1: process(RST,CLK)
begin
if(RST='1')then
Q <= '0';
elsif(CLK='1' and CLK'EVENT) then
Q <= D;
end if;
end process;
end behavioral;
Затем я генерирую 32 триггера и пытаюсь установить каждый бит суммы сигналов bit_vector на каждый из D-входов триггеров.
SIGNAL Q,D: BIT_VECTOR (31 DOWNTO 0);
SIGNAL SUM: BIT_VECTOR (31 DOWNTO 0);
BEGIN
register_maker : for i in 0 to 31 generate
BEGIN
flipflop_inst : ENTITY work.flipflop port map
(Q => Q(i),
CLK => CLK,
RST => RST,
D => D(i)
);
end generate register_maker;
process (D,SUM)
begin
for i in 0 to 31 loop
D(i) <= SUM(i);
end loop;
end process;
Я не уверен, где я ошибаюсь, но выходы триггеров не меняются.
Спасибо
if(CLK='1' and CLK'EVENT)
используйтеif(rising_edge(CLK))
. - person scary_jeff   schedule 15.03.2017flipflop
, а затем другой дизайн? И что это другой дизайн, который вы пытались смоделировать? - person Renaud Pacalet   schedule 15.03.2017