как задержать сигнал на несколько циклов в vhdl - PullRequest
2 голосов
/ 27 октября 2011

Как задержать сигнал на заданное количество циклов в 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 Ответ

3 голосов
/ 27 октября 2011

Создайте 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;
...