如何使 std_logic_vector 在 vhdl 中由 std_logic_vector 组成
how to make std_logic_vector consist of std_logic_vectorin vhdl
我有这样的信号:
sw : std_logic_vector(7 downto 0);
现在我想再做一个,将它作为高位,1 其余的:
std_logic_vector(31 downto 0) := (7 downto 0 => sw, others => '1');
但无法编译。有什么帮助吗?我不想一点点做。
我不完全确定这个较小的信号应该去哪里,但你可能想这样做:
signal sw: std_logic_vector(7 downto 0);
signal big: std_logic_vector(31 downto 0);
big <= sw & x"FFFFFF";
这会将 sw 向量分配给 big 向量的 8 个最高有效位,并将“1”分配给其余位。如果您想做其他事情,请写在评论中。
您要做的是在初始化期间将一个可变信号分配给另一个信号。你希望发生什么?
即在你定义一个信号的那一刻,你只能初始化它。如果你想给信号分配一些东西,你必须写一个声明。
- 定义 -> 初始化
- 声明 -> 赋值
所以这种情况下可以定义big
更大的范围,并在初始化时固定常量位
signal big : std_logic_vector(31 downto 0) => (others => '1');
当您想将 sw
分配给 big
的任何部分时,请在 begin
之后执行此操作。
big(31 downto 24) <= sw;
或
big(7 downto 0) <= sw;
等您初始化为“1”的位将被赋值覆盖。
我有这样的信号:
sw : std_logic_vector(7 downto 0);
现在我想再做一个,将它作为高位,1 其余的:
std_logic_vector(31 downto 0) := (7 downto 0 => sw, others => '1');
但无法编译。有什么帮助吗?我不想一点点做。
我不完全确定这个较小的信号应该去哪里,但你可能想这样做:
signal sw: std_logic_vector(7 downto 0);
signal big: std_logic_vector(31 downto 0);
big <= sw & x"FFFFFF";
这会将 sw 向量分配给 big 向量的 8 个最高有效位,并将“1”分配给其余位。如果您想做其他事情,请写在评论中。
您要做的是在初始化期间将一个可变信号分配给另一个信号。你希望发生什么?
即在你定义一个信号的那一刻,你只能初始化它。如果你想给信号分配一些东西,你必须写一个声明。
- 定义 -> 初始化
- 声明 -> 赋值
所以这种情况下可以定义big
更大的范围,并在初始化时固定常量位
signal big : std_logic_vector(31 downto 0) => (others => '1');
当您想将 sw
分配给 big
的任何部分时,请在 begin
之后执行此操作。
big(31 downto 24) <= sw;
或
big(7 downto 0) <= sw;
等您初始化为“1”的位将被赋值覆盖。