Как "разрезать" std_logic_vector в VHDL?

Я развиваю небольшую вещь в VHDL и довольно новичок в этом. Мне трудно понять, как нарезать более крупный 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 по 0 на firstpart. Как именно я бы "разрезал" такой вектор, не назначая отдельные биты

Ответ 1

Вы можете напрямую назначить их:

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