VHDL: AND, &, +

Was ist der Unterschied dieser Zeichen?

&: vektor zusammensetzen

s_midi <= s_tone_on & s_note_value & s_velocity;

– geht nur für std_logic;
.

AND: logisch zusammenzählen
Das AND folgt der Logik des Gatters AND:
Nur zwei ‚1‘ geben eine ‚1‘, alles andere gibt eine ‚0‘;

s_result = s_enable and s_bit_input;

– geht nur für std_logic;
– ist üblich für Signal-Logik und Takt-Logik

if (strobe_i = '1' and clk_intern = '0') then
.      // do

.
+: normal zählen

– geht nur für unsigned, integer, natural

signal index:  integer range 0 to 15  := 0;
signal offset: integer range 0 to 255 := 100;

index  <=  to_integer(s_midi(7 downto 4));
new_index = index + 4;

addr <= index + offset;

– ist bei Zählern üblich

next_cnt <= cnt + 1;

..