如何在vhdl中延迟几个周期的信号

时间:2011-10-27 15:14:41

标签: delay 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 个答案:

答案 0 :(得分:3)

创建一个适当类型信号的一维数组(让我们称之为a_store),其数组长度与周期数相关。这可能意味着您必须为数组创建一个新类型,除非您已经可以使用矢量类型:例如。 std_logic_vectorinteger_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;