FPGA-SPI-Slave funktioniert nicht richtig

Mehr Info:

  • Mikrocontroller anderer Takt 50 MHz denke ich ..

  • Die SPI-Taktfrequenz beträgt 16 MHz

  • SPI-VHDL-Kerntakt bei 100 MHz

  • Ich habe einen Dauertest gemacht und einige Register geschrieben und gelesen. Keine Fehler mit spi

das Problem :

  • Wenn ich versuche, das VHDL-SPI in den Rest meiner VHDL-Anwendung (auch 100 MHz) zu integrieren, wird die Schaltung etwas "instabil".

einige Symptome:

  • Manchmal gibt es in einigen Registern Bits, die ich nicht von spi geschrieben habe, wodurch die VHDL-Anwendung unerwartet reagiert.

  • Beim Hinzufügen von Signaltap-Sonden ändert sich das Verhalten des vhdl ein wenig.

Fragen:

Muss ich Timequest für den SPI CORE verwenden, um den SPI-Eingangspins Zeitbeschränkungen hinzuzufügen? Habe ich Metastabilität?

Antworten (2)

Ihre Annahme, dass Sie ein Metastabilitätsproblem haben, scheint richtig zu sein. Ich habe nur eine Übersicht über den Spi-Slave-Code gemacht und hier, was ich gefunden habe:

  • Die Spi-Uhr wird unverändert verwendet, dh sie benötigt einen Taktpuffer.
  • Die Daten, die Sie vom Spi-Kern lesen, werden nicht auf den 100-MHz-Takt neu synchronisiert, sie befinden sich in der Spi-Clk-Domäne.
  • Das Datengültigkeitssignal wird auf den 100-MHz-Takt resynchronisiert.

Wenn Sie die Daten kontinuierlich lesen, haben Sie Metastabilität, da sie nicht synchronisiert sind. Der Designer des Kerns erwartet wahrscheinlich, dass Sie gültige Daten verwenden, um dies zu verhindern. Ich persönlich denke, dass es ein schlechtes Design ist und würde zu seichtes FIFO verwenden, um die Tat sauber auszuführen.

Außerdem würde ich es vorziehen, das zu tun, was Brian vorschlägt, und einfach die Spi-Clk/Daten auf einen schnelleren Takt (diese 100 MHz) synchronisieren und die Kernlogik mit diesem Takt ausführen. 16 MHz bis 100 MHz verzerren die Taktflanke für Ihre Ausgangslogik (nach der Neusynchronisierung), aber es sollte in Ordnung sein.

Was Einschränkungen betrifft, so sind 16 MHz sehr, sehr langsam ... Sie brauchen keine Einschränkungen, Ihr CPOL / CPHA muss jedoch natürlich übereinstimmen.

ohhh das erklärt einiges!!! Meine Anwendung funktioniert nur, wenn ich eine Signal-Tap-Sonde am Spi-Datenausgang hinzufüge ... das liegt daran, dass das Signal dann mit dem 100-MHz-Takt resynchronisiert wird ... das war sehr hilfreich, vielen Dank

Metastabilität? Sehr unwahrscheinlich.

Unsynchronisierte Eingänge? Sehr wahrscheinlich und sie können die von Ihnen beschriebenen Symptome verursachen.

Takten Sie also jeden SPI-Eingang von Ihrer schnellen Uhr und leiten Sie die getakteten Versionen an den SPI-Kern weiter. (Es sei denn, Sie sind sich bereits sicher, dass es sie bereits neu taktet).