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