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
Es gibt doch das Attribut length für Vektoren. Dann musst du nur noch eine Schleife über alle Bits machen und sie addieren.
warum so kompliziert ? 2 vektoren reingeben, die länge des ausgabevektors auf die des größen+1 und dann simpel addieren per "+"
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.