Rechnen in VHDL

Gast #3656352
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
Moderator (Firma: Titel) Persönliche Seite #3656369
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

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