Forum
Suche Schaltung zur Zeitverzögerung von Clocksignalen (Schaltungstechnik)
» Doch der clock besteht immer aus 16er Paketen die alle paarhundert µs gepulsed werden.
OK, das Du ein Design mit mehreren Clocks hast, war aus der Fragestellung nicht ersichtlich.
Ist die Frequenz der hier dargestellten Clock identisch mit der Hauptclock?
Es muss ja wenigstens eine weitere Clock geben, die den µC versorgt. Oder kriegt der auch nur periodisch mal einen kurzen Burst von Clock Impulsen?
» da bin ich mir nicht ganz sicher, der Hintergrund ist der das ich aus eine 15bit Wort ein 16Bit Wort machen will. Bei dem 15Bit Wort ist das erste Bit allerdings immer "1" ==> siehe neuer Anhang
Einen neuen Anhang sehe ich nicht. Da ist wohl was schief gelaufen.
Was Du meinst, ist aber aus Deinem Timing-Diagramm im ersten Beitrag ersichtlich.
Allerdings fürchte ich, Du hast nicht ganz verstanden, was ich bezüglich der Multiplikation mit 2 gesagt habe.
Du hast einen Sender, der einen 15 Bit Wert senden möchte. Die Bits nummerieren wir mal von B0 bis B14, wobei B14 das höchstwertigste Bit ist und zuerst gesendet wird.
Der Empfänger erwartet 16 Bit (B0 bis B15) und da die Werte seriell empfangen werden, wird er sie höchstwahrscheinlich intern in ein Schieberegister laden.
Wenn Du jetzt einfach den gesamten Clock-Burst um eine Taktperiode nach hinten verschiebst, tritt folgendes Problem auf:
Der Sender legt den Wert B14 auf die Leitung. Jetzt tritt die erste Clockflanke auf und der Empfänger übernimmt den Wert und schreibt ihn in sein Schieberegister.
Der Sender legt B13 auf die Leitung und mit der nächsten Clockflanke wird B13 beim Empfänger in die niederwertigste Stelle des Schieberegisters geladen. Der vorherige Wert (B14) wird folglich eine Stelle weiter geschoben und steht somit an der zweitniedrigsten Stelle.
Dieses Spiel geht jetzt für die restlichen Bits so weiter.
Zum Schluss schreibt der Empfänger das Bit B0 in sein Schieberegister. Der zuerst gesendete Wert B14 liegt jetzt an der zweithöchsten Position im Schieberegister. Die höchstwertigste Stelle ist entweder mit 0 initialisiert oder undefiniert, je nachdem wie der Empfänger gebaut ist. Bis zum jetzigen Zeitpunkt sind 15 Takte vergangen, das heißt, es folgt noch eine weitere Clockflanke. Aus dem von Dir geposteten Timing-Diagramm ist ersichtlich, dass der Sender, nachdem er alle 15 Bits übermittelt hat, eine Zeit lang eine 0 auf die Leitung legt. Jetzt kommt die 16. Clockflanke und der Empfänger (der ja 16 Werte erwartet) schiebt alle Werte im Schieberegister eine Position weiter und schreibt die 0 an die unterste Stelle.
Im Schieberegister lieget jetzt also die folgenden Werte: (niederwertigstes Bit steht rechts)
B14, B13, ..., B1, B0, 0
Das entspricht dem ursprünglichen Wert multipliziert mit dem Faktor 2.
Du siehst also, ein Verschieben des Clock-Bursts um eine Clockperiode hilft Dir nicht.
Da das nachfolgende System 16 Bit erwartet, wirst Du wohl nicht drum herumkommen, auch 16 Bit zu verschicken, es sei denn der Baustein bietet auch Möglichkeiten, nur 15 Bit zu empfangen und damit weiterzuarbeiten. Von was für einem Empfänger sprechen wir denn eigentlich? Irgendein fertiger IC oder vielleicht ein µC?
Eine Möglichkeit: Ein 16 Bit breites Schieberegister, mit dem Du einen Ring baust. Der erste Wert wird mit 0 initialisiert, alle anderen mit 1. Dann die Datenleitung und den ersten Wert des Schiebregisters mit einen AND-Gatter verbinden. Damit ist sichergestellt, dass in der Zeit vor der Übermittlung des ersten Bits (B14) das Signal auf 0 liegt.
Es geht auch nur mit einem Flipflop, aber dann müsste es vor jeder Übermittlung einer solchen 16 Bit Zahl erneut initialisiert werden, während das Schieberegister nur einmal mit dem normalen Reset der Schaltung initialisiert werden muss.
Ist leider recht aufwendig, aber ohne die beteiligten Systeme und weiteren Signale zu kennen, ist es sehr schwer, irgendwelche Tipps zu geben.
» Ich will jetzt versuchen ein solches Delay IC zu verwenden?
»
» http://de.farnell.com/maxim/ds1000z-500/delay-line-5-tap-500ns-soic8/dp/117365?_requestid=520977
»
» Was hälst du von der Methode?
Sagen wir es mal so: Ein Delay-IC ist auf jeden Fall besser als irgendeine RC-Kombination. Beim Delay-IC hast Du eine relativ eng tolerierte und wohldefinierte Verzögerung. Fast noch wichtiger ist aber, dass Du weiterhin saubere Clockflanken hast. RC-Glieder werden im Gegensatz dazu stets zu einer runden / abgeflachten Flanke führen.
Wenn dann noch Störungen in die Leitung einkoppeln, kann das dazu führen, dass das nachfolgende Gatter auf einer Clockflanke mehrere Flanken erkennt. Deswegen setzt man bei flachen Flanken Schmitt-Trigger ein, um wieder auf saubere Pegel zu kommen.
Das eigentliche, von mir oben geschilderte Problem bleibt aber auch bei dieser Vorgehensweise bestehen.
Zum Erfolg führen wird daher wohl trotzdem nicht.
Gruß
Torsten
Gesamter Thread:
