对于 VHDL-87/93/2002,您可以使用resize
numeric_std 包中的函数。
library ieee;
use ieee.numeric_std.all;
...
constant FOO : std_logic_vector(2 downto 0) := "010";
signal dataIn : std_logic_vector(15 downto 0) := std_logic_vector(resize(unsigned(FOO), 16));
请注意,该resize
函数仅针对类型signed
和unsigned
.
如果您希望将短位字符串放入 MSB,您可能需要使用该'reverse_order
属性。
通常你会发现定义一个封装更复杂初始化的专用函数更容易。
constant FOO : std_logic_vector(2 downto 0) := "010";
function init_dataIn (bar : std_logic_vector; len : integer) return std_logic_vector is
begin
return bar & (len - bar'length - 1 downto 0 => '0');
end function init_dataIn;
signal dataIn : std_logic_vector(15 downto 0) := init_dataIn(FOO, 16);