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?
> 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"
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.
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?
> ... 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.