asynchronen reset automatisieren

Gast #3264242
Lesenswert?

Ich habe eine externe PLL, die meinen FPGA speist, welche beim Start 
nicht immer zuverlässig anläuft, weshalb der Takt nicht sehr stabil ist 
und die PLL im FPGA nicht sauber anschwingt.

Daher soll die PLL resettet werden. Tue ich das mit einem Knopf im 
Testdesign per Hand, klappt das bestens. Dies möchte ich nun 
automatisieren.

Wie kann ich - ohne einen Takt - im FPGA einen Reset erzeugen, der etwa 
150ms nach Start der Schaltung den asynch rst der PLL bedient?

Ich kann an der Schaltung/Layout nichts mehr ändern, der FPGA muss das 
selber tun.

Bisher habe ich probiert, einen Zähler mit dem Inputtakt zu treiben, bin 
mir aber über das Routing unsicher:

Die Schaltung sieht so aus:


CLK_PIN -> IBUFG -> PLL_IN   PLL_OUT -> BUFG -> FPGA-TAKT
                 -> ZÄHLER   ZÄHLER_ENDE -> ASYNCH_PLL_RESET

Vom IBUFG geht es also einmal in die PLL und parallel in den Zähler. 
Dabei packt er das Timing nicht.

Wenn ich vom IBUFG  auf einen BUFG gehe, um den Zähler zu bedienen, 
kommt das bekannte "dedicated route" Problem.
Gast #3264646
Lesenswert?

Karl schrieb:
> Wie kann ich - ohne einen Takt - im FPGA einen Reset erzeugen, der etwa
> 150ms nach Start der Schaltung den asynch rst der PLL bedient?

Karl schrieb:
> Bisher habe ich probiert, einen Zähler mit dem Inputtakt zu treiben, bin
> mir aber über das Routing unsicher:

Hast du nun einen Takt am FPGA oder nicht? Irgendwie erscheint mir das 
widersprüchlich, was du schreibst.
Gast #3264758
Lesenswert?

Wenn man einen FPGA-internen Reset verwenden würde, dann würde ich das 
so machen:

Das Locked-Signal der PLL ist das Enable-Signal eines Zählers (der mit 
dem
PLL-Takt läuft). Wenn dieser Zähler einen bestimmten Zählstand erreicht 
hat, wird der FPGA-interne Reset losgelassen.

Ach ja, erwähnte ich, dass man einen FPGA-internen Reset verwenden 
müsste?
Gast #3265248
Lesenswert?

Nochmal zu Verdeutlichung: Es geht um die Erzeugung eines ASYNCHRONEN 
Resets für die interne PLL des FPGA, damit ich garantieren kann, dass 
die sich fängt, wenn draussen der Takt stabil ist. Wenn diese PLL dann 
läuft nutze ich wie gehabt, deren locked um die Schaltung loszulassen.

Interner Oszillator ist gut, möchte ich aber vermeiden.

Habe auf die Schnelle ein Bild gemalt:

Frage1: Brauche ich den bufg vor dem Zähler? (Der Zähler läuft nur gegen 
den Anschlag und erzeugt einen einzigen Puls)

Frage2: Ich bekomme ein Timingproblem vom asynch Reset zu dem PLL 
Ausgang für den System-Talt und auch dem RAM-TAKT, das mir nicht ganz 
klar ist. Wie kann ich ein TIG ansetzen, das diese Pfade ignoriert 
werden?

Welche Namen nimmt man da?
Angehängte Dateien:
Gast #3265552
Lesenswert?

allo schrieb:
> Dann nimm doch zur Überwachungslogik einfach den PLL-Eingangstakt

so mache ich das auch: Den Eingangstakt in ein Schieberegister packen, 
um damit nach PON die PLL fuer soundsoviele Takte im Reset zu halten. 
Dann das Locked-Signal der PLL (zur Sicherheit auch noch mal durch ein 
SR, hier aber mit der PLL-clk) als globalen synchronen Reset verwenden.
Hatte noch nie ein Problem damit...
Gast #3265736
Lesenswert?

Uwe schrieb:
>> Der Zähler läuft nur gegen den Anschlag und erzeugt einen einzigen Puls
> Du weißt doch gar nicht wie schnell die externe PLL gerade ist. Wenn sie
> nicht gelockt ist könnte sie doch 200MHz oder 20MHz haben. Da ist der
> Ringoszillator ja berechenbarer.
Es reicht, wenn ich ungefähr weiss, wie oft der maximal taktet und ich 
ein Minimum von 150ms (SPEC!) einstellen kann. Wenn es dann 300ms sind 
ist es mir auch Wurscht.

allo schrieb:
> Dann nimm doch zur Überwachungslogik einfach den PLL-Eingangstakt.
An den komme ich nicht ran und der wäre auch noch schlechter.

Das Grundproblem ist, dass der Takt manchmal abgeschaltet wird und dann 
nach Einschalten die PLL etwas spinnt und Zeit braucht.

So wie die Schaltung jetzt ist, arbeitet sie ja auch , nur die Synthese 
will nicht formell korrekt timen. Daher nochmal meine beiden Fragen:


Wie muss ich das TIG setzen und brauche ich den Buffer?

Wenn ich den Buffer vor dem Counter setzte kommt die Meldung mit dem 
"dedicated route" Problem und ohne Buffer finded die Synthese ein timing 
Problem zwischen dem Eingangstakt und dem RAM-Takt. Ich nehme an, dass 
er den Pfad vom Counterreset getrieben durch den Eingangstakt OSCCLK und 
den PLL-Ausgang verfolgt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren