VHDL中的索引溢出std_logic_vector

时间:2016-05-13 05:06:52

标签: vhdl

我对跟踪len

索引溢出的VHDL代码表示怀疑
library ieee;
    use ieee.std_logic_1164.all;    
    use ieee.numeric_std.all;  
    package mypack is  
       subtype small_int is integer range 0 to 3;    
    end mypack;

library ieee;
    use ieee.std_logic_1164.all;    
    use ieee.numeric_std.all;    
    use work.mypack.all;   
entity top is    
   port(
        CLK        : in std_logic;    
        rst        : in std_logic;
        myPtr      : in small_int; 
        temp       : in unsigned(1 downto 0); 
        myout     : out std_logic_vector(3 downto 0));    
end entity;    

architecture rtl of top is
   signal len : std_logic_vector(3 downto 0)  := (others=>'0');         
   constant si : small_int := 1;
begin
    myout    <= len;
    process(clk,rst) begin
       if (RST='1') then
          len <= "0000";
       elsif rising_edge(CLK) then 
          len(myPtr - si) <= temp(0);         
       end if; 
    end process;    
end architecture;

myPtr = 0时的正确行为:

  1. len(3) <= temp(0);会发生吗?
  2. 或者,流量情况会有指数吗?这意味着,len(3)将始终保持在0
  3. 提前致谢。

1 个答案:

答案 0 :(得分:0)

在模拟中,超出范围的索引值将产生错误。

在硬件中,超出范围的索引值会导致未定义的操作,因此可能会发生任何更新或不进行更新。

相关问题