Forum: FPGA, VHDL & Co. Globale Variablen in VHDL


von Andre.T (Gast)


Lesenswert?

Gibt es eine Möglichkeit aus einem Prozess heraus eine Variable in einem
anderen Prozess zu modifizieren? (Xilinx EDE)

Beim Versuch eine shared variable zu verwenden kommt bei mir der
Fehler: "SHARED variables are not supported for synthesis."

Ich möchte einen Frequenzzähler bauen. In einem Prozess der jede
Sekunde duchlaufen wird soll der Counterwert aus einem anderen Prozess
ausgewertet und zurückgesetzt werden.

Verwende ich in einem Prozess zwei *'event für den Sekundentakt und
für den zu zählenden Impuls bekomme ich ein Bad Synchroneous Design.

von Jochen Pernsteiner (Gast)


Lesenswert?

> In einem Prozess der jede
>Sekunde duchlaufen wird soll der Counterwert aus einem anderen
Prozess
>ausgewertet und zurückgesetzt werden.

Nimm halt ein Signal.

von john-eric (Gast)


Lesenswert?

du schau mal hier da hat einer das was du willst schon fertig
programmiert in einen 9572 in vhdl.
code gibt es da auch.
ist bis 200mhz wie da steht.
http://www.dl1dsn.de/projects/counter/counter.htm
mfg

von Andre.T (Gast)


Angehängte Dateien:

Lesenswert?

Hab ich gemacht. In der Simulation funtzt das nicht.
Hab den Code mal angehängt.

Unter anderem kommt die Meldung:
Analyzing Entity <indexer3> (Architecture <behavioral>).
INFO:Xst:1304 - Contents of register <count_inp> in unit <indexer3>
never changes during circuit operation. The register is replaced by
logic.
Entity <indexer3> analyzed. Unit <indexer3> generated.

von Andre.T (Gast)


Lesenswert?

Danke für die Tips!
Setze zufällig einen 9572 ein :-)

In dem Beispiel wird nur währens des '1' Signals eines
heruntergeteilten Basistaktes gemessen. Ich hätte aber gerne sofort den
Counterwert der letzten Sekunde. (Wenige Signale mit stark schwankender
Pulspause).
Gruß
Andre

von Jochen Pernsteiner (Gast)


Lesenswert?

Du kannst froh sein, dass Dein Code überhaupt synthetisiert wird.

Du weist "count_inp" innerhalb zweier Prozesse Werte zu. Das ist
eigentlich nicht erlaubt.
Im letzten Prozesse setzt Du "count_inp" getaktet auf "00000000".
Das passiert genau einmal während der Laufzeit (wenn clk_scaler(19)
'1' wird).

Der Synthesizer hat sich offenbar gedacht, dass er dann "count_inp"
auch gleich permanent auf "00000000" setzen kann.

Wenn Du die Optimierung für "count_inp" abschaltest, dann geht's gar
nicht mehr zu synthetisieren ("Multi-Source"-Fehler).

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.