Hallo zusammen, es heißt immer die externen Signale müssen zuerst über 1 bzw. 2 FFs einsynchronisiert werden. Wie sieht es aus beim SPI (Slave), muss alles mit einem "SysClock " einsynchronisert werden: => 1- Nur bei einer SysClock Flanke reagieren die SPI Prozesse? 2- ODER alle SPI Signale zuerst einsynchronisieren und zu internen Signale wandeln, diese werden dann in SPI Prozesse bearbteitet => Einsynchronisieren über 2FFs heißt in diesem Fall eine Verzögerung von 2 SysClcks!. Die meisten Spi Beispiele arbeiten aber direkt mit der Flanke des SPiClk ohne einsynchronisieren! Wie ist es am sichersten/besten? Vielen Dank
VHDL Anfänger schrieb im Beitrag #3067676: > Wie ist es am sichersten/besten? Das kann pauschal nicht beantwortet werden. Es kommt auf die Anforderungen an dein SPI an. Wenn du ein sehr schnelles SPI realisieren willst, und nur einen langsamen Systemtakt zur Verfügung hast, dann musst du die SPI-Register direkt mit SCK takten. Ebenso, wenn du eine geringe und vorallem konstanten Latency zwischen Schreibflanke und MISO haben willst. Aber ACHTUNG! Wenn du das so machst, dannn musst du ein wenig Hinrschmalz reinstecken, wie deine Daten "sicher" über die Domaingrenze zu deinem internen Systemtakt kommen. Außerdem wird so ein System extrem empfindlich gegen Störungen auf der SCK-Leitung, da diese ja direkt auf die internen Register des FPGA wirken und die sind ziemlich flott.. Also bei der Methode würde ich einen Schmitt-Trigger und ein C am SCK-Eingang des FPGA spendieren. Bei der anderen Methode reicht es, wenn du SCK synchronisierst. Da in der Natur des SPI liegt, dass zum Zeitpunkt der Leseflanke MOSI auf jeden Fall stabil anliegt. Bei dieser Methode drehen sich Vor- und Nachteile zur o.g. Methode einfach um.
Noch eine Frage: Wenn zusätzlich zu der SPI Übertragung noch andere Signale habe, wo auf der Flanke reagiert werden muss (z.B. ExecCmd,...), muss ich alles zum SysClock synchronisieren und Flankenerkennung für diese Signale einbauen, das diese signale nur einen Clock High sind und danch wieder Low?
VHDL Anfänger schrieb im Beitrag #3073388: > muss ich alles zum SysClock synchronisieren Ja. > und Flankenerkennung für diese Signale einbauen, das diese signale > nur einen Clock High sind und danch wieder Low? Das macht Sinn.
Macht es auch Sinn wenn ich die Flanken von 4 externen Signale in einem Process(SysClock) erkenne und in einem anderen Process(sysClock) mit den internen Signalen (Flankenerkennung) weiterarbeite? oder können da Konflikte auftreten weil die Flankenerkennung nur ein Takt lang ist?
Häh? > können da Konflikte auftreten weil die Flankenerkennung > nur ein Takt lang ist? Nicht, wenn dein System mit diesem Impuls dann auch was anfangen kann. Üblicherweise kann es das, weil die gesamte Hardware immer auf dem FPGA und immer aktiv ist...
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.