Forum: FPGA, VHDL & Co. Rechnen in VHDL


von Peter Voltmeter (Gast)


Lesenswert?

Guten Morgen,
eine kurze Frage, bei folgender Programmzeile
1
signal cnt         : unsigned(31 downto 0) := ((unsigned(velo)/unsigned(stepsize))*4096)/50000000;

bekomme ich diese Fehlermeldung:

Error (10346): VHDL error at numeric_std.vhd(1400): formal port or 
parameter "L" must have actual or default value
Error (10658): VHDL Operator error at DDS1.vhd(46): failed to evaluate 
call to operator ""*""
Error (10658): VHDL Operator error at DDS1.vhd(46): failed to evaluate 
call to operator ""/""

velo und stepsize sind vom Typ std_logic_vector und beides Inputports. 
Sie werden zur Laufzeit von außen veränderbar sein.
Ich dachte es wäre möglich, unsigned mit integer direkt zu 
multiplizieren etc...

MfG

Peter

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


Lesenswert?

Peter Voltmeter schrieb:
> velo und stepsize sind vom Typ std_logic_vector und beides Inputports.
> Sie werden zur Laufzeit von außen veränderbar sein.
Das ist das Problem. Nicht die Rechnung an sich (wobei die dann auch 
noch zum Problem werden wird)...

> Sie werden zur Laufzeit von außen veränderbar sein.
Woher soll denn der Synthesizer zum Synthesezeitpunkt wissen, was da 
irgendwann später (z.B. in einem halben Jahr) an einem Input-Port 
hereinkommt?

> Sie werden zur Laufzeit von außen veränderbar sein.
Mal zur Definition:
Synthesezeitpunkt = Generierung des Bitstroms aus der VHDL Beschreibung
Laufzeit = Betrieb der synthetisierten Beschreibung auf dem FPGA

: Bearbeitet durch Moderator
von Bronco (Gast)


Lesenswert?

Vielleicht sollte man noch dazu sagen, dass Du diese Berechnung nur 
einmalig bei der Initalisierung von "cnt" ausführen würdest.
Ist das in Deinem Sinne?

von Uwe (Gast)


Lesenswert?

Dann bau die Zeile doch mal aus Gattern nach (alsd Zeichnung), also auch 
die Beiden Divider. Ich glaube nicht das du das willst.

von Uwe (Gast)


Lesenswert?

Für die Zeile brauchst du ca 5000 LUTs

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


Lesenswert?

Uwe schrieb:
> Für die Zeile brauchst du ca 5000 LUTs
Und viel Zeit...

von R. Udi (Gast)


Lesenswert?

"Peter Voltmeter" = "Peter Bierbach"?

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.