将 8 位向量放入 16 位向量

Placing an 8 bit vector into a 16 bit vector

这可能是一个愚蠢的问题,但我想在将其移出之前将 8 位向量插入到 16 位向量中。

我目前有这个:

data        <= "000" & DATA_IN & "00000";

效果很好,但我希望能够 select 使用泛型放置数据的地方(或者将来可能动态地)。

我试过了:

data        <= ((15 - (start_from_output-1)) DOWNTO (15 - (start_from_output-1) - (channels_in_use-1)) => DATA_IN , OTHERS => '0');

但这给出了错误:

ERROR:HDLCompiler:1728 - "E:/Projects/VHDL/PHASED_ARRAY_0-4/switch.vhd" Line 69: Type error near data_in ; current type std_logic_vector; expected type std_ulogic 

如果我简化为

data        <= (7 DOWNTO 0 => DATA_IN, others => '0');

出现同样的错误。

有人对如何解决这个问题有什么建议吗?

你可以做这样的作业:

data <= (OTHERS => '0');
data((15 - (val-1)) DOWNTO (15 - (val-1) - (val2-1)) <= data_in;

如果我对你的理解是正确的,它会做同样的工作,但它只会在进程内工作。在进程之外你会得到多个驱动程序错误。