www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Operator überladen


Autor: Crouch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: SeriousSam (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt doch das Attribut length für Vektoren. Dann musst du nur noch 
eine Schleife über alle Bits machen und sie addieren.

Autor: Iulius (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
warum so kompliziert ?

2 vektoren reingeben, die länge des ausgabevektors auf die des größen+1 
und dann simpel addieren per "+"

Autor: freak (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kannste das ma quellcode mäßig darstellen?

Autor: Iulius (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mal simpel :

process (in1,in2)
  
  function add(in1,in2 : std_ulogic_vector ) return std_ulogic_vector  is
    variable result1 : std_ulogic_vector(in1'length-1 downto 0);
    variable result2 : std_ulogic_vector(in2'length-1 downto 0);
  begin

    if in1'length>in2'length then
      result1 := std_ulogic_vector(unsigned(in1)+unsigned(in2));
      return result1;
    else
      result2 := std_ulogic_vector(unsigned(in1)+unsigned(in2));
      return result2;
    end if;
  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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.