【发布时间】:2015-04-18 13:53:31
【问题描述】:
我想使用 std_logic_vector 作为数组的索引,例如:
Data: in std_logic_vector(7 downto 0);
signal counter : std_logic_vector(3 downto 0);
output <= Data(counter);
由于 VHDL 语法检查告诉我应该使用带有 Data 的整数作为索引,所以我想问一下是否可以使用 std_logic_vector 作为索引。
如果不是,如果我使用这样的计数器:
signal counter : integer range 0 to 7 := 7;
合成器会创建一个 8 位计数器(因为 7 是最大值)还是会创建一个 32 位计数器?我问这个问题是因为如果我将值 8 分配给计数器 vhdl 语法检查并不会告诉我这是一个错误。
【问题讨论】:
-
合成器不强制执行 VHDL 标准(不像 ModelSim 这样的好模拟器)。根据 VHDL 标准,将 8 分配给
range 0 to 7是非法的。合成器可能会接受它(并且可能分配 0),但你真的不应该依赖它。