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


von J.D. (Gast)


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:
1
LOCKED <= s_locked when board_id = "11" else 'Z';

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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?

von Georg A. (Gast)


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.

von J.D. (Gast)


Angehängte Dateien:

Lesenswert?

Habe hier eine kleine Skizze die den Aufbau vielleicht verdeutlicht..

von Georg A. (Gast)


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.

von J.D. (Gast)


Lesenswert?

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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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':
1
  port ( pullupeingang : inout std_logic; ...
2
  :
3
  pullupeingang <= 'Z';  -- Inout wird nur als Eingang verwendet
4
  :
5
  eingang <= pullupeingang;
Und dann im UCF auf diesen Port einen Pullup konfigurieren...

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.