Operator überladen

Gast #1510787
Lesenswert?

Hallo,
ich habe von meinem Prof. folgende Aufgabenstellung bekommen:

"Erstellen Sie eine Funktion für die Addition zweier
std_ulogic_vector‐Zahlen, mit unbestimmter Vektorlänge."

Wie man den Operator überläd ist ja kein Problem. Ich verstehe nur nicht 
wie ich das mit der unbestimmten Vektorlänge hinbekommen soll. Ich wär 
für eure Hilfe sehr dankbar.

Gruß Crouch
Gast #1512539
Lesenswert?

mal simpel :
1
process (in1,in2)
2
  
3
  function add(in1,in2 : std_ulogic_vector ) return std_ulogic_vector  is
4
    variable result1 : std_ulogic_vector(in1'length-1 downto 0);
5
    variable result2 : std_ulogic_vector(in2'length-1 downto 0);
6
  begin
7

8
    if in1'length>in2'length then
9
      result1 := std_ulogic_vector(unsigned(in1)+unsigned(in2));
10
      return result1;
11
    else
12
      result2 := std_ulogic_vector(unsigned(in1)+unsigned(in2));
13
      return result2;
14
    end if;
15
  end add;


den Fall des überlaufs hab ich jetzt nicht bedacht, aber ansonsten 
funktioniert das und ist synthesefähig.

Es wird halt je nach Situation zur Snythesezeit ein Addierer in bezug 
auf den größeren Summanden erzeugt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren