SPI (Slave) und einsynchronisieren

Gast #3067676
Lesenswert?

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
Gast #3067963
Lesenswert?

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.
Gast #3073388
Lesenswert?

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?
Gast #3073738
Lesenswert?

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?

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