Forum: FPGA, VHDL & Co. VHDL Register in procedure


von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

Ich habe einen Process, der ähnlich mit mehreren Signalen parallel 
abläuft. Dafür habe ich eine procedure geschrieben, um den Code zu 
vereinfachen. Leider kann innerhalb der Procedure kein Signal deklariert 
werden. Nur Variablen. Ich benötige aber einen gespeicherten internen 
Wert vom letzten Durchlauf. Wie kann ich so ein Register in einer 
Procedure erzeugen?

Wie machen es die ganzen DSP Algorithmen, die mehrere Kanäle parallel 
verarbeiten? Vielleicht keine Procedure, aber ich finde gerade keinen 
vernünfitigen Programierstil für mathemaitsche Matrizenrechnungen, um 
den Code wartbar zu schreiben.

von Charles G. (Firma: Ingenieurbuero Gardiner) (cfgardiner)


Lesenswert?

Ich denke, die standard Lösung wäre die 'interne' Signale auch 
ausserhalb des procedures zu definieren (z.B. in der Architecture 
declarative Teil) und als inout Signale in der procedure Parameterliste 
anzugeben. Oder auch, alle 'interne' Signale in einem gemeinsamen Record 
Typ zusammenzufassen.

Wenn du den Scope unbedingt einschränken willst, bleibt vermutlich nur 
die Lösung das Signal sowie dessen Verarbeitung in einem Generate Block 
zu definieren.

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

Charles G. schrieb:
> Ich denke, die standard Lösung wäre die 'interne' Signale auch
> ausserhalb des procedures zu definieren (z.B. in der Architecture
> declarative Teil) und als inout Signale in der procedure Parameterliste
> anzugeben. Oder auch, alle 'interne' Signale in einem gemeinsamen Record
> Typ zusammenzufassen.
>
> Wenn du den Scope unbedingt einschränken willst, bleibt vermutlich nur
> die Lösung das Signal sowie dessen Verarbeitung in einem Generate Block
> zu definieren.

In die Richtung habe ich auch schon gedacht.
inout und Buffer Signale sind nicht zulässig.

Ja in die Richtung loop generate könnte ich auch stricken.


Block das habe ich noch nie benutzt. Kann mich dunkel erinnern.

von daniel__m (Gast)


Lesenswert?

hi,

man kann eine Function/Procedure auch im Scope eines Prozesses 
deklarieren. Dann kann die Function/Procedure auf alle Signale des 
Processes zugreifen (ohne impure sein zu müssen) und müsste so auch 
Register/State/etc kennen.

grüße

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.