有没有办法在std_logic_vector中使用变量(信号)而不是使用常量,例如:
dout((8*index + 7) downto 8*index) <= "00000001";
在此示例中,信号为index
提前谢谢
答案 0 :(得分:0)
假设信号或变量index
是整数类型,那应该可以正常工作。如果index是std_logic_vector类型的信号或变量,则需要将其转换为整数。
请参阅以下简单示例(刚刚在我的模拟器中快速编译):
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
library work;
entity thingy is
port(clk : in std_logic;
I : in std_logic_vector(3 downto 0);
O : out std_logic_vector(15 downto 0);
P : in std_logic_vector(1 downto 0));
end entity thingy;
architecture behav of thingy is
begin
process (clk)
begin
if (clk = '1' and clk'event) then
O(to_integer(unsigned(P))*4 + 3 downto to_integer(unsigned(P))*4) <= I;
end if;
end process;
end architecture behav; --thingy
请注意,此示例依赖于使用numeric_std而不是概要包。
布莱恩·德拉蒙德(Brian Drummond)指出它可能不会合成,但如果没有合成,那么你应该提交错误报告。