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