我正在用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
。如何在不分配单个位的情况下“切片”这样的矢量
答案 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);