将8位向量放入16位向量

时间:2016-10-13 09:36:45

标签: vhdl

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

我目前有这个:

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

哪种方法很完美,但我希望能够选择放置数据的地方(可能是动态的)。

我试过了:

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');

发生同样的错误。

有人有任何建议如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

您可以执行以下任务:

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

如果我理解正确,它将完成相同的工作,但它只能在一个过程中工作。在此过程之外,您将遇到多个驱动程序错误。