Forum: HF, Funk und Felder Verzögerung von 30ns erzeugen für Clock


von Holger (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen

Habe hier ein Board mit insgesamt 6x TLC5955 Chips.
Nun habe ich bei der Ansteuerung festgestellt, dass mir hier wohl das 
Propagation Delay einen Strich durch die Rechnung macht.

Gemäss dem Datenblatt habe ich die Chips in einer Daisy Chain 
geschaltet. Doch pro Chip ergibt sich typ 20ns Prop. Delay. Daher kommt 
die Clockflanke bei jedem Chip etwas früher als noch zuvor und daher 
clockt der Chip zunehmend falsche Daten ein.

Wie würdet ihr das Problem hier lösen?

RC-Glied plus schmitttrigger in den CLK vor jedem IC?

Danke und Gruss

von atzem (Gast)


Lesenswert?

Moin,

ich würde erstmal, wenn dem so wäre, die kurzen Laufzeiten mit 
Standartlogiggattern (CMOS 4000er Reihe oder ä.) erschlagen ...
Die haben ja typ. Gatterdurchlaufzeiten im ns-Bereich...

RC-Glieder plus SchmTrigger wäre schon zu viel.

von Elektrofurz (Gast)


Lesenswert?

Zwei NAND Gatter, oder zwei Inverter, oder zwei Schmitt-Trigger (ohne 
RC-Glied) aus der CD40xx Reihe, hintereinander geschaltet.

von Ludwig V. (Gast)


Lesenswert?

Die Verzögerung bezieht sich doch auf sout vs. sclk.
Und da sclk an allen Chips gleichzeitig kommt, ist kein
Aufaddieren der Zeiten zu erwarten.
Grüße Ludwig

von Holger (Gast)


Lesenswert?

Ludwig V. schrieb:
> Die Verzögerung bezieht sich doch auf sout vs. sclk.
> Und da sclk an allen Chips gleichzeitig kommt, ist kein
> Aufaddieren der Zeiten zu erwarten.
> Grüße Ludwig

Stimmt, aufadieren nicht. Aber eine erstmalige Verzögerung um 20 bzw. 
30ns.
Die kann ich auch messen.

von Jo mei (Gast)


Lesenswert?

Holger schrieb:
> Aber eine erstmalige Verzögerung um 20 bzw. 30ns.

Wie hoch ist denn dein geplanter SPI Takt? Ich vermute
mal die Verzögerung ist völlig irrelevant gegenüber
deinem (gemässigten) Takt.

So schnell kann keiner Lichter anschauen .... falls du
in einen Geschwindigkeitsrausch verfallen solltest ....

von Holger (Gast)


Lesenswert?

Jo mei schrieb:
> Holger schrieb:
>> Aber eine erstmalige Verzögerung um 20 bzw. 30ns.
>
> Wie hoch ist denn dein geplanter SPI Takt? Ich vermute
> mal die Verzögerung ist völlig irrelevant gegenüber
> deinem (gemässigten) Takt.
>
> So schnell kann keiner Lichter anschauen .... falls du
> in einen Geschwindigkeitsrausch verfallen solltest ....

Der SPI Takt ist bei ca. 4MHz.
Das Problem ist, dass der zweite Chip falsche Daten einliest. Denn 
dieser sieht die Taktflanke, bevor das Bit aus dem vorigen Chip gekommen 
ist.
Denn das Bit aus dem vorigen Chip hat eine Verzögerung von 30ns. Der 
ShiftClock jedoch nicht.

von Bene (Gast)


Lesenswert?

Das klingt für mich eher nach falschem SPI Mode. 4 Mhz sind 250 ns 
Periodendauer, da fallen die 30 ns nicht wirklich ins Gewicht. Stell 
doch mal CPHA um.

von Jo mei (Gast)


Lesenswert?

Bene schrieb:
> da fallen die 30 ns nicht wirklich ins Gewicht.

So isses. Man hat üblicherweise bei SPI etwa die halbe
Clockperiode Zeit um Daten zu setten ("Set Up Time").
Steigende vs fallende Flanke ....

von Holger (Gast)


Lesenswert?

Danke für den Tipp mit dem SPI-Mode.

Leider ändert sich nichts.

Habe aktuell alle Chips parallel geschaltet.
D.h. alle D-Ins miteinander verbunden und die Douts unterbrochen.
SPI-CLK bei allen gleich.

Ergebnis: einige leuchten, einige nicht, so wie bisher schon die ganze 
zeit.
Sehr merkwürdig.

von Holger (Gast)


Lesenswert?

Ich nutze diesen Code:

https://github.com/zfphil/TLC5955

jedoch mit einem Arduino Leonardo (Atmega32u4)

von Holger (Gast)


Lesenswert?

Interessant ist noch, dass wenn ich das board mehrmals ein und aus 
stecke (speisung nicht die SPI-Signale) plötlich alle miteinander so 
leuchten, wie sie sollen. Als ob gewisse chips in einem art reset hängen 
würden. obschon dies laut DB gar nicht möglich ist, da es keinen 
entsprechenden Zustand gibt.

von Jo mei (Gast)


Lesenswert?

Holger schrieb:
> Ergebnis: einige leuchten, einige nicht, so wie bisher schon die ganze
> zeit.

Dann ist dein Aufbau bzw. deine Schaltung scheisse.

Schon mal an vernünftige Stromversorgungs-Pufferung gedacht?
Es gibt noch vieeeele andere Fehlermöglichkeiten.

Am Ende des Tages (des Threads) kommt meist heraus dass der
Ansatz die Schaltung aufzubauen total daneben ist.

von W.S. (Gast)


Lesenswert?

Holger schrieb:
> Habe hier ein Board mit insgesamt 6x TLC5955 Chips...

Wenn jeder Chip etwa 20 ns an Verzögerung hat, dann mußt du eben mit 
deiner Taktfrequenz heruntergehen, so daß 5*20ns, also 100ns kein 
Problem mehr darstellen. Würde also per Milchmädchenrechnung maximal 5 
MHz Takt ergeben (je 100ns H bzw. L)

Aber das mit der Verzögerung glaube ich dir nicht. Schließlich dürfte 
mMn zwischen SIN und SOUT ein dickes Schieberegister liegen, so daß das, 
was du an SOUT siehst, eben NICHT das verzögerte Eingangssignal ist, 
sondern der Inhalt des allerletzten Flipflops des Schieberegisters. Und 
der sollte dann mit der Flanke von SCLK in den nächsten Chip übernommen 
werden, bevor er sich nach 20 ns ändert.

Kann es sein, daß ganz einfach deine Schaltung die Daten, die an SIN 
kommen sollen, auf die verkehrte Flanke von SCLK herausgeben?

W.S.

von Jo mei (Gast)


Lesenswert?

W.S. schrieb:
> Schließlich dürfte
> mMn zwischen SIN und SOUT ein dickes Schieberegister liegen

Seeeehr richtig. Aber da man ja schon mal keine Ahnung hat
macht man halt mal irgendwas, wird schon was dabei rauskommen.

von Route_66 H. (route_66)


Lesenswert?

Welcher SPI-Mode ist für den TLC5955 der richtige (CPOL=?, CPHA=?)
Ich würde einfach alle 4 Möglichkeiten durchprobieren.


// Define baud rate
  SPISettings mSettings(spi_baud_rate, MSBFIRST, SPI_MODE0);

von Jo mei (Gast)


Lesenswert?

Route_66 H. schrieb:
> Ich würde einfach alle 4 Möglichkeiten durchprobieren.

Wenn der Aufbau scheisse ist hilft keiner der vier Modi.

von Wolfgang (Gast)


Lesenswert?

Holger schrieb:
> Leider ändert sich nichts.

Wenn es auf 30ns Taktflankenlage an kommt, werden deine Daten bei der 
falschen Taktflanke übernommen oder du hast einen grundlegenden Fehler 
in deiner Logik. Zeichne dir deine Signalverläufe mal auf und markierte 
die bei dem jeweiligen SPI-Mode für die Datenübernahme relevante Flanke.

von Wolfgang (Gast)


Lesenswert?

Route_66 H. schrieb:
> Ich würde einfach alle 4 Möglichkeiten durchprobieren.

Es soll sogar Datenblätter geben, in denen die Zeitdiagramme für die 
Datenübernahme abgebildet sind ...

Mit einem Auto probierst du doch auch nicht, ob man vor einer Wand 
besser die Bremse oder das Gaspedal drücken sollte.

von P. S. (namnyef)


Lesenswert?

Unter der Annahme, dass das prinzipielle Design (Logik) korrekt ist:

Ich würde auch auf einen falsch konfigurierten Sample-Zeitpunkt tippen. 
Oder auf schlechte Signalqualität (Reflexionen, Cross-talk, ...).

Hast du dir die gesampelten Daten mal angesehen? Wenn die nicht konstant 
um X Bits zu den "Solldaten" verschoben sind (bzw. das beobachtete 
Verhalten nicht mit um X Bits verschobenen Daten erklärbar ist), wird es 
wohl eher in die Richtung Signalqualität gehen.

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

Holger schrieb:
> Nun habe ich bei der Ansteuerung festgestellt, dass mir hier wohl das
> Propagation Delay einen Strich durch die Rechnung macht.

Wie soll es?

SOUT ändert sich beim TLC5955 erst typisch 20ns (t_D0) nach der 
steigenden Flanke von SCLK, d.h. wenn SCLK hoch geht, ist das Signal 
noch 20ns stabil. Für die Datenübernahme sind 2ns gefordert (t_H0). 
Falls deine Clock-Leitung zum zweiten Chip nicht gerade ein paar Meter 
lang ist, sollte das immer passen. Mit 30ns Clockverzögerung erzeugst du 
gerade das Problem, dass die Daten an SOUT nicht mehr stabil sind.

Deine Rechnung ist wohl falsch.

von Pandur S. (jetztnicht)


Lesenswert?

Der Clock/Latch sollte ja auch erst kommen, wenn die Daten stabil sind. 
Bedeutet der kann ganz am Schluss kommen wenn ueberall die korrekten 
anliegen.

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

Joggel E. schrieb:
> Der Clock/Latch sollte ja auch erst kommen, wenn die Daten stabil sind.
> Bedeutet der kann ganz am Schluss kommen wenn ueberall die korrekten
> anliegen.

Dann guck mal ins Datenblatt des TLC5955 (Fig. 20 und Tab. in 6.6).
SOUT wird kurz nach dem Clock instabil. Sonst würde das mit der 
Daisy-Chain nicht funktionieren.

Vor dem Clock ist nach dem Clock.

von A.S. (Gast)


Lesenswert?

Hast Du ein oszi? Dann Abfolge mit Datenblatt-diagramm abgleichen. 
Achtung: manche Zeiten sind 0.

Zudem wären Doppelimpulse ein möglicher Fehler.

Wenn es parallel nicht klappt, mach dir keine Gedanken um irgendwelchen 
vodoo.

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.