如何在VHDL中“切片”std_logic_vector?

时间:2012-04-29 20:48:12

标签: syntax vhdl

我正在用VHDL开发一个小东西,我对它很新。我无法弄清楚如何将更大的std_logic_vector切割成更小的std_logic_vector。

例如我有3个信号:

signal allparts: std_logic_vector(15 downto 0);
signal firstpart: std_logic_vector(7 downto 0);
signal secondpart: std_logic_vector(7 downto 0);

基本上,我想要的是将第15位至第8位分配给secondpart,将第7位至第7位分配给firstpart。如何在不分配单个位的情况下“切片”这样的矢量

1 个答案:

答案 0 :(得分:24)

您可以直接指定它们:

firstpart <= allparts(15 downto 8);
secondpart <= allparts(7 downto 0);

...或者如果firstpart和secondpart只是引用allparts信号的一部分的替代方法,你可能想要使用别名:

alias firstpart is allparts(15 downto 8);
alias secondpart is allparts(7 downto 0);