如何在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;
答案 0 :(得分:3)
创建一个适当类型信号的一维数组(让我们称之为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;