www.mikrocontroller.net

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


Autor: Andre.T (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jochen Pernsteiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: john-eric (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andre.T (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Andre.T (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jochen Pernsteiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.