Как задержать сигнал на несколько циклов в vhdl

Как задержать сигнал на заданное количество циклов в VHDL? Количество циклов дано как общее.

Любые другие варианты вместо

process(CLK) is
begin
  if rising_edge(CLK) then
    a_q <= a;
    a_q_q <= a_q;
    a_q_q_q <= a_q_q;
    -- etc
  end if;
end process;

?

1 ответ

Решение

Создать 1-й массив (назовем его a_store) соответствующего типа сигнала с длиной массива, связанной с количеством циклов. Это может означать, что вам нужно создать новый тип для массива, если нет уже векторного типа, который вы можете использовать: например. std_logic_vector или же integer_vector (последний стандарт только в VHDL-2008).

Затем перетасуйте массив по каждому тику:

if rising_edge(clk) then
  a_store <= a_store(store'high-1 downto 0) & a;
  a_out <= a_store(a_store'high);
end if;
Другие вопросы по тегам