Code:
function XorVectorBits(Bits: std_logic_vector, Index: integer) return std_logic;
variable
Result: std_logic;
begin
Result := Bits(Index);
if Index < Bits'High then
Result := Result xor XorVetorBits(Bits, Index +1);
end if;
return Result;
end function;
function XorVextorBits(Bits: std_logic_vector) return std_logic;
variable
Result: std_logic;
Index: Intger;
begin
Result := '0';
for Index in Bits'Range loop
Result := Result xor Bits(Index);
end loop;
return Result;
end function;
Oben sieht man zwei Funktionen in VHDL, erstere ist rekusiv die zweite nutzt eine Schleife. Beide beschreiben ein Verhalten einer späteren Hardware.
Das Signal Bits stellt man sich zb. wie ein Datenbus vor der aus zb. 16 Datenleitungen besteht. Die Boolsche Funktion lautet in Worten: Verknüpfe alle Datenleitungen in Bits per XOR und gebe das Resultat, ein Bit, zurück.
Beides wird bei der Synthese in Hardware exakt identische Resultate erzeugen. Nämlich ein XOR Gatter mit Bits'Range Inputs und einem Output.
Ok, es dürfte klar sein das das ein sehr enfaches Beispiel ist und hier der Vorteil in der formalen Schreibweise einer Rekursion noch nicht zum tragen kommt.
Gruß Hagen