Forum: FPGA, VHDL & Co. Synchronisation bei dependent clocks


von foobar (Gast)


Lesenswert?

Hallo,

ich habe einen CPLD, der seinen Takt (48MHz) von einem ARM Prozessor 
bekommt. Nun will ich den ARM als SPI-Master mit dem CPLD als SPI-Slave 
kommunizieren lassen. Meine Vermutung ist jetzt, dass ich am CPLD die 
Signale nicht einsynchronisieren muss, da sie ja aus der gleichen 
Taktdomäne stammen. Stimmt das, oder muss ich doch synchronisieren?

Viele Grüße

von Schlumpf (Gast)


Lesenswert?

Wenn der gesamte CPLD mit dem SPI-Takt läuft (also nicht nur das 
Schieben, sondern auch alles andere, dann musst du nicht 
synchronisieren, da dann alles in einer Domäne ist.

von foobar (Gast)


Lesenswert?

Viele Dank für deine Antwort.

Ich dachte das wäre eine Domäne. Vielleicht habe ich zu wenig Infos 
gegeben. Am Mikroprozessor hängt ein 12MHz Quarz der eine PLL füttert. 
Aus der PLL kommen 48 MHz Systemtakt raus, die den ARM-Core takten, alle 
Peripherals und ausserdem auf einem dedizierten CLKOUT-Pin ausgegeben 
werden. Der CLKOUT-Pin ist die Taktquelle für den CPLD. Wenn jetzt das 
SPI Peripheral den 48MHz-Takt integral herunter teilt (was auch wirklich 
passiert), dann ändert sich das SPI Taktsignal doch synchron mit dem 
48MHz Takt und liegt damit in einer Domäne. Oder gibt es da noch ein 
paar Delays, die diese Annahme kaputt machen? Oder sind meine Annahmen 
aus anderen Gründen falsch?

Viele Grüße.

von Lattice User (Gast)


Lesenswert?

foobar schrieb:
> Viele Dank für deine Antwort.
>
> Ich dachte das wäre eine Domäne. Vielleicht habe ich zu wenig Infos
> gegeben. Am Mikroprozessor hängt ein 12MHz Quarz der eine PLL füttert.
> Aus der PLL kommen 48 MHz Systemtakt raus, die den ARM-Core takten, alle
> Peripherals und ausserdem auf einem dedizierten CLKOUT-Pin ausgegeben
> werden. Der CLKOUT-Pin ist die Taktquelle für den CPLD. Wenn jetzt das
> SPI Peripheral den 48MHz-Takt integral herunter teilt (was auch wirklich
> passiert), dann ändert sich das SPI Taktsignal doch synchron mit dem
> 48MHz Takt und liegt damit in einer Domäne. Oder gibt es da noch ein
> paar Delays, die diese Annahme kaputt machen? Oder sind meine Annahmen
> aus anderen Gründen falsch?
>

SPI Taktsignal und CLKOUT sind zwar phasenstarr, aber nur wenn im 
Datenblatt des µC Setup und Holdzeiten für SPI Taktsignal bezogen auf 
CLKOUT angegeben sind kannst du auf das Einsynchronisieren verzichten.

von foobar (Gast)


Lesenswert?

Ach. Danke für die Erklärung. Ich weiß jetzt wo es hing: Ich dachte mir 
ich Schiebe den SPI-Takt in ein 2-Bit Schieberegister um eine 
Flankenerkennung zu machen und brauche nichts zu synchronisieren. Aber 
durch das 2-Bit SR, ist ja SCLK dann implizit synchronisiert. Alle 
anderen Signale brauche ich dann ja wirklich nicht mehr zu 
synchronisieren, da sie sich (praktisch) nicht mehr asynchron ändern 
(wenn clk ausreichen größer als SCLK ist).

Ich habe es jetzt aber anders gelöst: SCLK wurde auf einen (weiteren) 
Takteingang gelegt und treibt synchron das Schieben. Um die Daten von 
der CLK-Domäne in die SCLK-Domäne zu bekommen, benötige ich nun ein oder 
zwei extra SCLK-Takte (also Bits in meinem SPI-Datenwort) aber das ist 
akzeptabel. Ich fand es erst nicht so schön, aber bei ∑∆-ADCs ist es ja 
auch oft so, dass man einige Dummy-Bits takten muss, um die Wandlung zu 
anzustossen.

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.