我想使用std_logic_vector作为数组的索引,例如:
Data: in std_logic_vector(7 downto 0);
signal counter : std_logic_vector(3 downto 0);
output <= Data(counter);
Run Code Online (Sandbox Code Playgroud)
由于vhdl语法检查告诉我应该使用和数据作为索引的整数,我想问一下是否可以使用std_logic_vector作为索引.
如果没有,如果我使用这样的计数器:
signal counter : integer range 0 to 7 := 7;
Run Code Online (Sandbox Code Playgroud)
合成器将创建一个8位计数器(因为7是最大值)或者它将创建一个32位计数器?我问这个问题因为如果我将值8分配给计数器vhdl语法检查不告诉我这是一个错误.
要使用std_logic_vector,您必须转换它:
Data: in std_logic_vector(7 downto 0);
signal counter : std_logic_vector(3 downto 0);
output <= Data(to_integer(unsigned(counter)));
Run Code Online (Sandbox Code Playgroud)
关于你的第二个问题,这将是一个3位计数器:
signal counter : integer range 0 to 7 := 7;
Run Code Online (Sandbox Code Playgroud)
物理上,整数和std_logic_vector没有区别.合成后,它将产生完全相同的硬件.使用代码中最有意义的数据类型.
归档时间: |
|
查看次数: |
13297 次 |
最近记录: |