Forum: FPGA, VHDL & Co. Design per JTAG -> OK, Design vom Platform Flash -> kaputt?


von Andreas G. (andy1988)


Lesenswert?

Hallo,
Ich bastele grade fröhlig mit meinem Spartan 3AN Board rum. Da man, wenn 
man sein Design auf dem Platform Flash hat, wunderbar Reset drücken 
kann, um mehrere male hintereinander bequem und vor allem schnell 
Initialisierungssequenzen testen kann, ob sie immer zuverlässig 
funktionieren oder nur in 50% der Fälle, habe ich mein Design auch mal 
da draufgeschoben.

Das lustige ist jetzt, dass das Design per JTAG wunderbar funktioniert. 
Ich sehe 2 Zeilen Text auf meinem Character LCD.
Lasse ich das Teil vom Platform Flash aus konfigurieren, sehe ich nur 
die erste Zeile, es funktioniert also nicht.

Ich habe peinlich genau darauf geachtet, dass ich das mcs-File auch aus 
dem richtigen bit-File generiere. Impact verifiziert auch den Inhalt des 
Flashs und sagt mir alles sei in Ordnung.

Ich hab auch einfach mal den Reset-Button gehalten, dem Board Strom 
gegeben und dann nach einigen Sekunden den Button erst losgelassen, um 
mal "JTAG-ähnliche Bedingungen" zu testen. Selbes Resultat, Display 
zeigt nur die erste Zeile an. Diese allerdings richtig.

Was kann das sein? Hat das schon mal jemand gehabt?

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


Lesenswert?

> Was kann das sein?
Da würde ich an deiner Stelle mal die asynchronen Resets in synchrone 
umbauen...
Denn anerkannterweise muß jedes externe asynchrone Signal vor der 
Verwendung einsynchronisiert werden. Urigerweise (und wahrscheinlich, 
weil es so in fast jedem Buch steht) machen das gerade beim Reset (dem 
asynchronsten Signal schlechthin) die wenigsten.   :-o

> Hat das schon mal jemand gehabt?
Ja. Der kritische Zeitpunkt schlechthin ist das Verlassen des 
Resetzustands wie im Beitrag "Re: Reset für mehrere Komponenten" 
beschreiben.
Zum Thema Reset allgemein lies mal den 
Beitrag "Xilinx und die Resets"

von Andreas G. (andy1988)


Lesenswert?

Verstehe ich nicht ganz.
Ich fasse den Reset ja normalerweise gar nicht an. Wie kann er dann das 
Verhalten beinflussen? Zumal es ja per JTAG geht.

Worin genau liegen denn die Unterschiede zwischen der Konfiguration per 
JTAG und Platform Flash?
Beide Möglichkeiten müssten doch diesen Startup-Reset durchführen. Der 
hat ja erstmal nichts mit meinem selbstgebastelten Reset-Signal zu tun.

von Andreas G. (andy1988)


Lesenswert?

Jippieh! Es funktioniert. Danke.
Ich habe deine Tipps mal befolgt und das Reset-Signal mit einem deinem 
Debouncer von deiner Webseite entprellt und somit ja auch mit dem Takt 
synchronisiert, richtig?

Was ich nur nicht verstehe ist, wieso das jetzt funktioniert.
Klar, wenn ich die Flip Flops setze, muss ich ja abwarten, bis das 
Signal stabil am Eingang anliegt (Setup-Time) und dann abwarten, bis das 
Flip Flop das auch gerafft hat (Hold-Time), richtig? Diese Zeiten werde 
ich mit dem asynchronen Reset wohl verletzt haben. Somit waren die Flip 
Flops in einem undefinierten Zustand.

Aber warum hat es per JTAG funktioniert und nicht vom Platform Flash?

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


Lesenswert?

> ... und somit ja auch mit dem Takt synchronisiert, richtig?
Ja, richtig...

> Was ich nur nicht verstehe ist, wieso das jetzt funktioniert.
> Diese Zeiten werde ich mit dem asynchronen Reset wohl verletzt haben.
> Somit waren die Flip Flops in einem undefinierten Zustand.
Metastabilität war vermutlich nicht das Problem (die würde sehr sehr 
viel seltener auftreten: 
http://www.lothar-miller.de/s9y/archives/62-Testaufbau-Metastabilitaet.html), 
sondern eher, dass einige FFs noch einen aktiven Reset sehen, andere 
bereits einen inaktiven. Da kommt die beste Statemachine 
durcheinander... ;-)
Hier der passende Hintergrund: 
http://www.lothar-miller.de/s9y/archives/64-State-Machine-mit-asynchronem-Eingang.html

> Aber warum hat es per JTAG funktioniert und nicht vom Platform Flash?
Du hast dabei geringfügig andere interne Abläufe. Das scheint bei dir 
ausgereicht zu haben...

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.