Ich habe mal eine kleine Frage zu Shift Registern: Ich moechte mehrere Shift Register aneinander schalten, sodass ich halt 128 bit oder sogar 512 bit nutzen kann. Das duerfte ja theoretisch kein Thema sein. Sind halt dann einfach echt viele Shift Register. Nun wollte ich aber mal wissen, wie sich das dann mit der Strecke der Verbindungen verhaelt. Der storageClock und shiftClock kommt ja nur von einem Device und wird an alle Shift Register uebertragen. Ich denke jetzt nicht, dass das auf einer Strecke von 2 Metern schon so relevant ist, wollte aber mal fragen, wie man so etwas loest, wenn man laenger Strecken zuruecklegen muss.
512 Bit wären 64 Schieberegister. 64 Clock-Eingänge kann ein einzelner IO Pin nicht treiben. Du brauchst also in jedem Fall Clock Treiber. Je nach CLK Frequenz würde ich nicht mehr als 4 bis max. 8 Inputs zusammenschalten. 2m sind schon nicht wenig. Du musst berücksichtigen, dass die Leitung eine Induktivität und Kapazität hat. Was immer "laengere" Strecke heisst, das Problem wird entsprechend größer. Auch ESD und EMV ist dabei ein Thema.
Philipp B. schrieb: > Der storageClock und shiftClock kommt ja nur von einem Device und wird > an alle Shift Register uebertragen. Ich denke jetzt nicht, dass das auf > einer Strecke von 2 Metern schon so relevant ist, wollte aber mal > fragen, wie man so etwas loest, wenn man laenger Strecken zuruecklegen > muss. Ja, das ist sehr relevant. Bei solchen Strecken ist eine getrennte Taktführung unumgänglich, ebenso wie eine Serienterminierung an der Quelle. Es wird dir für eine sichere Funktion nichts anderes übrigbleiben, als genau so viele Takte zu übertragen, wie du weit voneinander entfernte Bausteine hast. Dabei sollten die Taktleitungen geometrisch den selben Weg nehmen wie die Datenleitungen. Was gehen könnte: der ankommende Takt an einem Schieberegister wird durch einen Buffer wieder weitergereicht an die nächste Kette. Dann muss man aber darauf achten, dass der Buffer sehr kurze Durchlaufzeiten hat oder die Datenleitung muss einige 10cm länger sein als die Taktleitung. Joe F. schrieb: > Je nach CLK Frequenz würde ich nicht mehr als 4 bis max. 8 Inputs > zusammenschalten. Wenn jede der 4 (oder 8) Eingänge 2m Abstand voneinander haben, geht das einfach nicht!
Ich kann doch erst ein gültiges Datenwort anlegen und DANACH die Taktflanke? Wo seh ich denn hier das Problem nicht? Ich muss doch nicht zwingend die Daten EXAKT zur steigenden Flanke bereitstellen (oder zur fallenden, wei sich grad nicht) Ich kann das 90Grad zueinander verschieben? StromTuner
Vier Pferdefüße fallen mir dazu ein: 1. Treiber bei so vielen Teilnehmern. 2. Immer alle Stati wiederholen (z.B. 512 Bit) auch wenn sich nur ein Bit geändert hat. 3. Entsprechend (?!?) langsam. 4. Geschwindigkeit entsprechend der Leitungslänge. Aber prinzipiell kein Problem. Wegen der Verzögerung (512 Bit) sollte Schieberegister mit Latch verwendet werden. Die Übernahme braucht allerdings auch einen Treiber.
Axel R. schrieb: > Ich muss doch nicht zwingend die Daten EXAKT zur steigenden Flanke > bereitstellen Nein, Du solltest das sogar nicht tun; die Daten müssen eine gewisse Minimalzeit vor der Flanke stabil sein. Im Idealfall kann diese Zeit nahezu Null sein, in der Realität aber ist sie es nicht. Im Datenblatt wird sie als "setup time" spezifiziert. Beim 74LS166* beträgt diese Zeit mindestens 20 nsec. Insofern ist Deine 90°-Phasenverschiebungsidee sehr sinnvoll. *) http://pdf.datasheetcatalog.com/datasheet/on_semiconductor/SN74LS166-D.PDF Seite 5, Tabelle "AC Setup Requirements", Wert "Data Setup Time"
Rufus Τ. F. schrieb: > Insofern ist Deine 90°-Phasenverschiebungsidee sehr sinnvoll. Man kann auch gleich 180° nehmen, dann ändern sich die Daten mit der "inaktiven" (nicht speichernden) Taktflanke. Beim SPI kann man sich mit der falschen ClockPhase sauber ins Knie schießen...
:
Bearbeitet durch Moderator
Lothar M. schrieb: > Beim SPI kann man sich mit der falschen ClockPhase sauber ins Knie > schießen... Wie wahr! hatten wir erst vor kurzem: Den 3 8bit Schieberegistern war die Clockflanke egal, die waren schnell genug. Als dann aber ein µ-Controller in die Kette kam fehlte plötzlich das erste Bit. (Der Controller war dummerweise auch noch der letzte in der Reihe und somit der Erste vorm Empfänger, wie es halt immer ist) Aber wenigstens haben wir so noch einen Fehler in der SPI Routine des FPGA gefunden.
Die maximale Clk-Frequenz ergibt sich dann dann aus den Laufzeiten aller Clockbuffer plus Signallaufzeit in den Leitungen... Bei 180Grad noch durch / 2 Und, mit SchiebeRegistern mit Latch wird das ganze auch nicht synchroner... da Du für die Latches ja auch wieder Treiber verwenden musst, die genauso wie die CLK-Treiber verzögern. Falls Du die Latches und damit die Ausgänge wirklich synchron Ansteuern willst, musst Du von der Mitte her einen schönen Treiberbaum aufbauen, mit Symetrischen Leitungslängen, mit am Ende aller Äste gleicher Laufzeiten... Ist ja Hobby :-)
HildeK schrieb: > Was gehen könnte: der ankommende Takt an einem Schieberegister wird > durch einen Buffer wieder weitergereicht an die nächste Kette. Dann muss > man aber darauf achten, dass der Buffer sehr kurze Durchlaufzeiten hat > oder die Datenleitung muss einige 10cm länger sein als die Taktleitung. An so einen Buffer, vielleicht kleiner Mikrocontroller, habe ich auch schon gedacht. Der faengt den Ausgang ab, sammelt die 8 oder 16 bit und leitet sie dann weiter. Muss man halt ordentlich synchronisieren.
Mit einem uC als Buffer kannst du die SPI-CLK zwar erhöhen, Es wird aber am Ende auch nicht schneller, als wenn du nur Clk Treiber nimmst. Aber, es wird teurer.
X. X. schrieb: > Mit einem uC als Buffer kannst du die SPI-CLK zwar erhöhen, > Es wird aber am Ende auch nicht schneller, als wenn du nur Clk Treiber > nimmst. > > Aber, es wird teurer. Super schnell muss es ja nicht sein. Ich habe jetzt ein paar 8 bit Shift Register bestellt. (https://assets.nexperia.com/documents/data-sheet/74HC_HCT595.pdf) Mit denen wuerde ich das jetzt umsetzen. Der kann in 100 Mhz shiften. Muesste dann natuerlich auch einen Prozessor nehmen, der mit mindestens 100 Mhz arbeitet. Am Ende wuensche ich mir eine Bildfrequenz von 100Hz oder 200Hz an. Bei 300 Zeilen muesste ich also in 30Khz oder 60Khz shiften. Was macht denn ein Buffer genau? Kann man das irgendwo schoen nachlesen. Du musst wissen, dass ich im Verhaeltnis zu euch ja noch ein blutiger Anfaenger bin (Eigentlich Software-Developer) ;) Habe die Haelfte auch nicht ganz so begriffen. Muss ich mir nachher noch in Ruhe durchlesen. Edit: Hab das PWM total vergessen. Ich muss ja PWM umsetzten, damit ich auch tatsaechlich jede Farbe darstellen kann.
:
Bearbeitet durch User
Philipp B. schrieb: > Bei 300 Zeilen muesste ich also in 30Khz oder 60Khz > shiften. Und wie viele Spalten? Auch 300? Womöglich 3D, also auch noch 300 Etagen? Achso, und dann noch PWM... Überlege mal, wie lange eine LED dann an ist, und wie lange sie aus ist, und ob man sie dann noch leuchten sieht.
:
Bearbeitet durch User
Joe F. schrieb: > Philipp B. schrieb: >> Bei 300 Zeilen muesste ich also in 30Khz oder 60Khz >> shiften. > > Und wie viele Spalten? > Auch 300? 500 > > Womöglich 3D, also auch noch 300 Etagen? > Nein, nur 2D. > Achso, und dann noch PWM... > > Überlege mal, wie lange eine LED dann an ist, und wie lange sie aus ist, > und ob man sie dann noch leuchten sieht. Stimmt. Muss dann wohl doch etwas schneller sein. Ab welcher Frequenz funktioniert PWM bei einer LED denn? 300 Hz?
:
Bearbeitet durch User
Philipp B. schrieb: > An so einen Buffer, vielleicht kleiner Mikrocontroller, habe ich auch > schon gedacht. Der faengt den Ausgang ab, sammelt die 8 oder 16 bit und > leitet sie dann weiter. Muss man halt ordentlich synchronisieren. Ja, geht sicher auch. Das Hauptproblem bei dir sind die langen Leitungen und die darauf entstehenden Reflexionen. Die sind beim Takt sehr kritisch Was man aber tun könnte mit zwei zusätzlichen Buffern pro Stufe:
1 | .--o--. |\ ___ .--o--. |\ ___ |
2 | Data o---------|D S Q|---| >--|___|-....---------|D S Q|---| >--|___|-o |
3 | | | |/ 33R | | |/ 33R |
4 | .---|> | .---|> | |
5 | | | R Q| | | R Q| |
6 | | '--o--' | '--o--' |
7 | | | |
8 | |\ | ___ |\ | ___ |
9 | Clk -| >--o---|___|----------.......---| >--o---|___|-----------o |
10 | |/ 33R |/ 33R |
11 | (created by AACircuit v1.28.6 beta 04/19/05 www.tech-chat.de) |
Der Buffer in der Datenleitung dient nur dazu, die zusätzliche Laufzeit der Clockbuffer auszugleichen; die aktive Taktflanke muss vor dem Datenwechsel am Register sein! Ev. gehen auch invertierende Buffer nur in der Taktleitung, allerdings wird das bei jedem Schieberegister zu einer halben Periode Verzögerung führen. Wenn das akzeptabel ist, dann kann man die Buffer in den Datenleitungen weglassen. Die Widerstände würde ich bei den Längen auf jeden Fall verwenden, ggf. muss der Wert noch an die vorhandene Leitungunsimpedanz angepasst werden. Da könnten auch 50R ... 100R gut sein.
Das Problem ist, dass mit deinem Multiplexing über 300 Zeilen eine LED ja max. 1/300 der Zeit an sein kann. Das ist viel zu wenig. Und wenn du jetzt noch PWM machen möchtest (sagen wir mal nur 16 Helligkeitsstufen), reduziert sich die Zeit nochmal um den Faktor 16 bei der "dunkelsten" Stufe. Ich würde dir empfehlen erstmal klein anzufangen (8x8 Matrix), um ein bischen Erfahrung zu sammeln, ohne gleich größere Mengen Geld zu verbrennen.
Nachtrag: die oben gezeichneten FF sollen für je eine Schieberegisterstufe stehen. FFs gibt's in der AACircuit Lib, ein Shiftregister hab ich keines gesehen.
Clock-Leitung von der gegenüberliegenden Seite (als die Datenleitung) einspeisen. Das verlängert die Setup und Hold Zeit ein bisschen. Bei SPI am Mikrocontroller kannst du zwar über die Phase einstellen dass die Daten an der "passiven" Flanke übernommen werden, aber zum Beispiel beim 74XX595 werden die Daten an der Flanke angelegt an der sie auch übernommen werden.
Joe F. schrieb: > Das Problem ist, dass mit deinem Multiplexing über 300 Zeilen eine LED > ja max. 1/300 der Zeit an sein kann. > Das ist viel zu wenig. Das ist tatsaechlich etwas zu wenig. Ich habe mir ein Board mit dem Allwinner H5 bestellt. Der kann sich wohl auf 1 Ghz takten. Sagen wir ich koennte mit 800 Mhz Multiplexen. Dann waere das wohl kein Thema mehr. Die Frage ist nur, welcher Multiplexer mit der Geschwindigkeit arbeiten kann. > Und wenn du jetzt noch PWM machen möchtest (sagen wir mal nur 16 > Helligkeitsstufen), reduziert sich die Zeit nochmal um den Faktor 16 bei > der "dunkelsten" Stufe. Im Idealfall sollten es sogar 255 sein. Aber ja, sagen wir mal 16. > > Ich würde dir empfehlen erstmal klein anzufangen (8x8 Matrix), um ein > bischen Erfahrung zu sammeln, ohne gleich größere Mengen Geld zu > verbrennen. Ja klar, fange sowieso erst einmal mit einer kleineren Matrix an. Die Sachen, also LEDs sind aber schon in groesseren Mengen bestellt. Kosten sowieso nicht die Welt. Fuer mich ist das kein Verlust mal 60 Euro zu verlieren, wenn ich dadurch was lerne ;) Edit: Wenn ich so drueber nachdenke, werde ich wohl nicht drum herum kommen, mehrere Mikrocontroller zu nutzen. Alleine schon wegen der Pins und dem Multiplexing.
:
Bearbeitet durch User
Philipp B. schrieb: > Alleine schon wegen der Pins > und dem Multiplexing. ...und weil deine aktuelle Zahl von 800 MHz die sonst so üblichen Clock-Frequenzen etwa um den Faktor 100 übersteigt. Aber das wirst du dann bei dem kleineren Projekt lernen. Höhere CLK Frequenz bedeutet übrigens nicht, dass die einzelne LED ein günstigeres ein/aus Verhältnis hat.
:
Bearbeitet durch User
Schieberegister sind zwar schon lustig zum spielen, aber für eine LED-Anzeige ist das doch heutzutage viel zu kompliziert und Fehleranfällig. Für SPI würde ich fertige RGB-LED's mit eingebauter Signalaufbereitung und PWM nehmen wie z.B. die APA102C. Man kann auch fertige Stips mit denen kaufen, dann spart man sich sogar noch viel Mühe und Zeit beim Aufbau.
Natürlich... takte 2m Leitung mit 100MHz... Jetzt wird's aber albern. Ich bin raus.
X. X. schrieb: > Natürlich... takte 2m Leitung mit 100MHz... > Jetzt wird's aber albern. > Wieso albern? Schade, dass du mich nicht ernst nimmst. Ich bin kein Elektroingenieur, daher fehlt es mir an manchen Stellen an Wissen. Deshalb frage ich ja nach. Wieseo ist das denn albern eine 2 Meter leitung mit 100 Mhz zu takten? Weil das Rauschen so gross ist und die 100 Mhz gar nicht am Ende ankommen? Wie waere es dann mit LVDS?
:
Bearbeitet durch User
Philipp B. schrieb: > Wieseo ist das denn albern eine 2 Meter leitung mit 100 Mhz zu takten? Eine 2m lange Leitung an einem 100Mhz Signal nennt man Antenne. Und ein 100MHz Rechteck hat im Handumdrehen Frequenzen his 1GHz in sich...
Wenn das der Fall ist, dann fange klein an. Wie bereits geschrieben. Ach, wie lange ist eigentlich Deine UKW Antenne ?
Philipp B. schrieb: > Wie waere es dann mit LVDS? Anfänger verhält sich zu 100MHz LVDS wie Dreirad zu Formel 1 Wie wäre es denn, wenn du dir einfach mal genau ansiehst, wie Andere dieses Problem gelöst haben?
Lothar M. schrieb: > Philipp B. schrieb: >> Wie waere es dann mit LVDS? > Anfänger verhält sich zu 100MHz LVDS > wie Dreirad zu Formel 1 > > Wie wäre es denn, wenn du dir einfach mal genau ansiehst, wie Andere > dieses Problem gelöst haben? Finde dazu nichts. Die nehmen einfach die LEDs aus den Strips, die man aneinander Reihen kann. Da hoert es nach 512 aber auch auf.
Dem will ich mich anschließen. Selbst wenn Du das System auf 100 GHz taktest, wird jede LED stets nur 1/300 der Zeit leuchten können mit dieser Konstruktion. Das wird nicht funktionieren. Bei einer derart großen Konstruktion wirst Du um ordentliche Komponenten wohl nicht herum kommen. Mit ein paar Schieberegistern ist das nicht getan.
Philipp B. schrieb: > Da hoert es nach 512 aber auch auf. Aus gutem Grund ;-) Nein, es ist leicht einen Anfänger auf den Arm zu nehmen, aber bitte nimm' dir für dein erstes Elektronikprojekt nicht zu viel vor. 100 MHz über Kabel, LVDS, das sind alles Sachen, die Profis anfassen, nachdem sie >5 Jahre Berufserfahrung haben, und das nötige und sehr umfangreiche Fachwissen haben über Strom, Spannung, Kapazitäten, Induktivitäten, Wellenwiderstand, Abstrahlung, Dämpfung etc. Es ist komplett sinnlos große Mengen LEDs zu bestellen (womöglich noch einen haufen Dicke Kabel und Netzteile), wenn man noch keine kleine Testschaltung aufgebaut hat, die funktioniert. Dann kann man diese Testschaltung um lange Kabel erweitern. Dann kann man mit der Clockrate rumspielen und seine Erfahrungen machen. Dann kann man sich überlegen, ob das große Projekt überhaupt irgend eine Aussicht auf Erfolg hat. Und auf dem Weg dahin stellt man fest, dass man auch ein ordentliches Oszilloskop und möglichst auch einen Logicanalyzer braucht.
:
Bearbeitet durch User
Philipp B. schrieb: > Da hoert es nach 512 aber auch auf. Das ist ja auch der Trick an der Sache... Dann muß man nämlich nur noch "ganz einfach" viele solcher 512er Cluster parallel mit Daten versorgen.
Philipp B. schrieb: > Finde dazu nichts. Reicht dir eine LED-Installation mit insgesamt 350000 LEDs? https://www.youtube.com/watch?v=9Qlmywxjau0 Oder eine Installation die direkt Farb-LCDs nimmt, statt einzelne LEDs zu steuern: https://www.youtube.com/watch?v=dPzeEw3zVwQ&list=PL0KZLmPyL6Ak1bArDuLo77yhx95yMsjHL&index=8
:
Bearbeitet durch User
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.