我有一个std_logic_vectors数组,我想在其中实现一个延迟链。我这样写了,它工作正常:
--Signal Declaration
type MyArrayType is array(0 to 3) of std_logic_vector(31 downto 0);
signal s_aslv_DelayChain : MyArrayType;
--Concurrent Statement, Load input chain
s_aslv_DelayChain(0) <= ip_slv_Input;
--Delay line Process
DelayProc : process(ip_sl_Clk)
begin
if(rising_edge(ip_sl_Clk)) then
s_aslv_DelayChain(1) <= s_aslv_DelayChain(0);
s_aslv_DelayChain(2) <= s_aslv_DelayChain(1);
s_aslv_DelayChain(3) <= s_aslv_DelayChain(2);
end if; --rising_edge(ip_sl_Clk)
end process DelayProc;
这会产生我期望的结果:
但是,如果我将进程更改为使用循环变量:
--Delay line Process
DelayProc : process(ip_sl_Clk)
begin
if(rising_edge(ip_sl_Clk)) then
for n in 1 to 3 loop
s_aslv_DelayChain(n) <= s_aslv_DelayChain(n-1);
end loop;
end if; --rising_edge(ip_sl_Clk)
end process DelayProc;
它没有用,我得到了一堆U:
2种编码风格是否应该描述相同的行为?