我对以下关于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
:时的正确行为应该是什么
len(3) <= temp(0);
会发生吗- 或者,是否会出现流量过大的情况?这意味着
len(3)
将始终保持在0
提前谢谢。
在模拟中,超出范围的索引值将生成错误。
在硬件中,超出范围的索引值会导致未定义的操作,因此可能会发生任何更新或不进行更新。