Forum: FPGA, VHDL & Co. Syntaxfrage: Signale zusammensetzen und teilen


von Queck S. (Firma: Uni) (kiigass)


Lesenswert?

Hi Leutz

ich habe hier zwei Funktionen die wie folgt aussehen:
1
library IEEE;
2
use IEEE.STD_LOGIC_1164.all;
3
use IEEE.NUMERIC_STD.ALL;
4
5
package test_fkt is
6
  function test(a,b:signed) return signed;
7
  function test(a,b,c,d:signed) return signed;
8
end test_fkt;
9
10
package body test_fkt is
11
  function test(a,b:signed) return signed is
12
  begin
13
    --macht irgendwas
14
  end test;
15
16
  function test(a,b,c,d:signed) return signed is
17
  begin
18
    return test(test(w,x), test(y,z));
19
  end test;
20
end test_fkt;

Dabei ruft die zweite die erste auf um die Aufgabe zu erfüllen. Die 
Parameter w,x,y und z sollen dabei wie folgt aussehen: "001"+a=w; 
"010"+b=x; usw. Wobei das Plus hier nicht als arithmetische Addition, 
sondern als Verbindungssymbol gedacht ist (also quasi eine 
Stringaddition). Genau das ist mein erstes Problem: Wie löse ich das?

Zum zweiten Punkt: Ich möchte eigentlich nicht die komplette Rückgabe 
von "test" returnen, sondern nur die ersten 4 Bit. Wie macht man das?

thx for help

greez Kiigass

Edit: Wo kann ich den Beitrag löschen? Hat sich erledigt das Problem.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Queck Silber schrieb:
> sondern als Verbindungssymbol gedacht ist (also quasi eine
> Stringaddition). Genau das ist mein erstes Problem: Wie löse ich das?
Stichwort "Concatenation" mit dem "&" Operator..

Queck Silber schrieb:
> Zum zweiten Punkt: Ich möchte eigentlich nicht die komplette Rückgabe
> von "test" returnen, sondern nur die ersten 4 Bit. Wie macht man das?
So etwa:
return test(3 downto 0);

Aber dann würde ich auch den Rückgabewert constrainen:
  function test(a,b,c,d:signed) return signed (3 downto 0) is ...
Denn dann kann die Synthese sofort erkennen, wenn die Breite nicht 
passt.


BTW: dir ist schon klar, dass eine Funktion in VHDL komplett ganz was 
anderes ist, als eine Funktion in C oder Basic oder so...

von Queck S. (Firma: Uni) (kiigass)


Lesenswert?

Lothar Miller schrieb:
> Queck Silber schrieb:
>> sondern als Verbindungssymbol gedacht ist (also quasi eine
>> Stringaddition). Genau das ist mein erstes Problem: Wie löse ich das?
> Stichwort "Concatenation" mit dem "&" Operator..

Facepalm Danke...

> BTW: dir ist schon klar, dass eine Funktion in VHDL komplett ganz was
> anderes ist, als eine Funktion in C oder Basic oder so...

Ja natürlich, aber durch diese Art der Codierung erspare ich mir eine 
Menge Arbeit. Das Synthesetool fasst das ja eh zusammen.

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
Noch kein Account? Hier anmelden.