web-dev-qa-db-fra.com

Comment "découper" un std_logic_vector en VHDL?

Je suis en train de développer une petite chose en VHDL et je suis assez nouveau dans ce domaine. J'ai du mal à comprendre comment couper un plus grand std_logic_vector en un plus petit.

Par exemple, j'ai 3 signaux:

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

Fondamentalement, ce que je veux, c'est affecter les bits 15 à 8 à secondpart et les bits 7 à 0 à firstpart. Comment pourrais-je "découper" un vecteur comme celui-ci sans affecter de bits individuels

17
Earlz

Vous pouvez directement les affecter:

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

... ou si firstpart et secondpart sont simplement des manières alternatives de se référer à une partie du signal allparts, vous pouvez utiliser un alias:

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