Как "нарезать" вектор логики std в 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);