21

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

4

1 に答える 1

34

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

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);
于 2012-04-29T22:05:56.540 に答える