web-dev-qa-db-ja.com

VHDLでstd_logic_vectorを「スライス」する方法

私は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に割り当てることが必要です。個々のビットを割り当てずに、このようなベクトルをどのように正確に「スライス」しますか

17
Earlz

それらを直接割り当てることができます。

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