我有四个std_logic_vectors(15个下降到0),并且想将它们堆叠到std_logic_vector(63 downt 0),所以我发现一种方法可以做到这一点,但它是正确的方法还是有一种更优化和正确的方法?

signal slv16_1,slv16_2,slv16_3,slv16_4 : std_logic_vector(15 downto 0);
signal slv64 : std_logic_vector(63 downto 0);

slv64(15 downto 0) <= slv16_1;
slv64(31 downto 16) <= slv16_2;
slv64(47 downto 32) <= slv16_3;
slv64(63 downto 48) <= slv16_4;

最佳答案

一种简单的方法是使用串联运算符&。它可以实现与上面相同的操作,但是所需的代码更少。

slv64 <= slv16_4 & slv16_3 & slv16_2 & slv16_1;

关于VHDL 多个 std_logic_vector 到一个大的 std_logic_vector,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33130066/

10-12 16:29