www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Signale am gegenseitigen Überschreiben hindern


Autor: J.D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
ich habe hier einige seriell angeordnete FPGAs, auf denen jeweils die 
gleichen Bitfiles geladen sind. Wenn die DLL auf einem dieser FPGAs 
locked, soll dies an einen weiteren FPGA weitergegeben werden. Das 
Problem ist, dass dieser weitere FPGA nur einen IN-Port für alle 
locked-Signale hat. Wie ist es möglich, dass sich die Locked-Status 
nicht gegenseitig überschreiben?
Einzige Möglichkeit, die FPGAs zu unterscheiden ist eine in der 
Umgebungshardware festgelegte ID.

So habe ich es ohne Erfolg versucht:
LOCKED <= s_locked when board_id = "11" else 'Z';

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>  dass dieser weitere FPGA nur einen IN-Port für alle locked-Signale hat.
Wenn alle FPGAs hintereinander kommen, dann braucht doch ein jedes nur 1 
Eingang vom vorigen und 1 Ausgang zum nächsten.

> ich habe hier einige seriell angeordnete FPGAs, auf denen jeweils die
> gleichen Bitfiles geladen sind. Wenn die DLL auf einem dieser FPGAs
> locked, soll dies an einen weiteren FPGA weitergegeben werden. Das
> Problem ist, dass dieser weitere FPGA nur einen IN-Port für alle
> locked-Signale hat.
Könntest du das bitte in einer Skizze darstellen?

Autor: Georg A. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> LOCKED <= s_locked when board_id = "11" else 'Z';

Hm, die Beschreibung des Problems ist arg schwammig. Aber erstens willst 
du doch sicher wissen, ob alle FPGAs an der Leitung einen Lock haben.

Dann sollte es eher so laufen (wired and).

locked_out <= 'Z' when s_locked='1' else '0';

Und zweitens brauchst du an dem Eingangspin noch einen Pullup, sonst 
wabbert das zu sehr rum, wenn alle gelocked sind.

Autor: J.D. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Habe hier eine kleine Skizze die den Aufbau vielleicht verdeutlicht..

Autor: Georg A. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jo, "meine" Zeile sollte da gehen. Solange noch ein FPGA keinen Lock 
hat, zieht es das gemeinsame Signal auf 0. Ansonsten wirkt der Pullup.

Autor: J.D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke!
Gibt es denn die Möglichkeit, einen PULLUP-Input zu instantiieren? Habe 
bislang nur eine Variante für Outputs gefunden..

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
J.D. schrieb:
> Gibt es denn die Möglichkeit, einen PULLUP-Input zu instantiieren?
Ein Work-Around:
mach einen PullUp-Inout-Port und schreibe auf den ein 'Z':
  port ( pullupeingang : inout std_logic; ...
  :
  pullupeingang <= 'Z';  -- Inout wird nur als Eingang verwendet
  :
  eingang <= pullupeingang;
Und dann im UCF auf diesen Port einen Pullup konfigurieren...

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.