VHDL Register in procedure

OP (Firma: www.dossmatik.de) #4845887
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.
(Firma: Ingenieurbuero Gardiner) #4845906
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.
OP (Firma: www.dossmatik.de) #4845910
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.
Gast #4847668
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

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