Hallo, Ich möchte ein Signal um ca 1us "verlängern" um damit ein Gate zu steuern. Als externe Schaltung ist das ein simples OR Gatter mit R und C. Bitte siehe Bild. Wie kann ich dies in einem CPDL ohne externe R/C Komponenten realisieren? Mein Gedanke war einen Zähler zu nutzen und diesen über ein FF zu starten und zu stoppen. Jedoch ist das Taktsignal natürlich nicht synchron zum Eingangssignal und daher ist die resultierende Verzögerug unbestimmt. Ich bin ganz frisch in VHDL & Co. daher die vielleicht etwas doofe Frage. Beste Grüße Karsten
Karsten K. schrieb: > Wie kann ich dies in einem CPDL ohne externe R/C Komponenten > realisieren? Es ist ein CPLD, und richtig: du brauchst dafür einen Zähler. Welchen Takt hast du an deinem CPLD? Welches CPLD hast du? > Jedoch ist das Taktsignal natürlich nicht synchron zum Eingangssignal > und daher ist die resultierende Verzögerug unbestimmt. Dagegen hilft "Einsynchronisieren". Ohne geht es nicht. Aber es dürfte ein Flipflop dafür ausreichen...
@ Karsten K. (karsten42) >Ich möchte ein Signal um ca 1us "verlängern" um damit ein Gate zu >steuern. Als externe Schaltung ist das ein simples OR Gatter mit R und >C. Bitte siehe Bild. >Wie kann ich dies in einem CPDL ohne externe R/C Komponenten >realisieren? Nur mit einem Zähler, weil die Gatterlaufzeiten viel zu klein sind. >Mein Gedanke war einen Zähler zu nutzen und diesen über ein FF zu >starten und zu stoppen. Jedoch ist das Taktsignal natürlich nicht >synchron zum Eingangssignal und daher ist die resultierende Verzögerug >unbestimmt. Sicher. >Ich bin ganz frisch in VHDL & Co. daher die vielleicht etwas doofe >Frage. Dein Problem ist wahrscheinlich ohne so eine Sauerei lösbar. Beschreibe es grundlegend und dir kann geholfen werden. Siehe Netiquette.
Hallo Lothar, Hallo Falk Entschuldigung, ich wollte nicht gleich alles überladen. Mein Ansatz ist ja, das ganze zu verstehen und auch möglichst selber zu entwickeln. O.K. Für ein CAN projekt benötige ich einen CAN-HUB. Dafür hat Herr OSchmidt eine tolle einfache Gatterschaltung entwickelt. Mir ist der Aufwand an Einzelgatter aber zu groß und so entstand die Idee die Schaltung in ein CPLD zu integrieren. Als blutiger Anfänger in VHDL/CPLD habe ich mir einfach mal den XC 9572 ausgesucht da dieser als PLCC und 5V einfach im Hobbybereich zu handhaben ist. Der CAN-Bus läuft mit 250KBaud, somit ist ein Bit 4uS lang, 1TQ ist 250nS. Als Takt steht mir 16Mhz zur Verfügung. Die Schaltung besteht im wesentlichen aus zwei Gates die über die Verzögerungsglieder verreigelt gesteuert werden. Im MCP2551 wird das TXD Signal an RXD weitergeleitet. Sind beise synchron, sperrt das "untere" Gate. Wird ein dominates Siganl empfangen, so wird das "obere" Gate gesprerrt und das Dominate Signal gelangt über das wired OR an den CAN-Controller. Die wired OR Schaltung lässt sich durch ein NOR mit n Eingängen nachbilden. Die input/output buffer duch die NOR gatter zum MCP2515 ( wird durch ein SJA1000 ersetzt ) können wegfallen. Beste Grüße Karsten
> somit ist ein Bit 4uS lang > resultierende Verzögerug unbestimmt. > Als Takt steht mir 16Mhz zur Verfügung. 16MHz=62,5ns 1µs/62,5ns=16 Was passiert wenn du dich um einen Takt verzählst ? Was passiert wenn bei der RC kombination das C 10% Toleranz hat ? Ist zwar eigentlich nicht sauber geht in diesem fall aber trotzdem.
Moin Uwe, Die 1us ist die Zeitkonstante mit den angegebenen 10K und 100p. Theoretisch liegt bei TTL der L Pegel erst bei 3 Tau an; also nach ca 3uS. Die Schaltung funktioniert damit aber sehr stabiel. Die absolute Verzögerung ist ersteinmal nicht so wichtig sondern vielmehr die Implementierung in ein CPLD. Verzählen ist nicht der richtige Ausdruck denke ist. Du meinst vieleicht was passiert, wenn der Takt nicht synchron zur Flanke des Eingangssignals liegt. Das ist eben ein Problem weswegen ich hier die Experten um Rat bitte :-) Gruß Karsten
@ Karsten K. (karsten42) >O.K. Für ein CAN projekt benötige ich einen CAN-HUB. Dafür hat Herr >OSchmidt eine tolle einfache Gatterschaltung entwickelt. Naja, einer der üblichen Trickschaltungen. Nicht schön, geht aber. >250KBaud, somit ist ein Bit 4uS lang, 1TQ ist 250nS. Als Takt steht mir >16Mhz zur Verfügung. Na immerhin! >gesprerrt und das Dominate Signal gelangt über das wired OR an den >CAN-Controller. >Die wired OR Schaltung lässt sich durch ein NOR mit n Eingängen >nachbilden. Dann lass den Unsinn mit den RC-Gliedern und mach es über Zähler/State machines im CPLD, das ist halbwegs solide. Der Jitter durch die Überabtastung von 16 MHz ist hier unproblematisch, jeder UART/CAN-Tranceiver arbeitet genau so. Bei 250kBaud sind das gerade mal 1/64 der Bitzeit bzw. 1/4 TQ. Solider wäre wahrscheinlich ein gescheiter CAN-MUX. Damit hab ich mich aber noch nicht beschäftigt. Was spricht gegen eine gesteuerte Umschaltung der vier CAN-Ports auf den CAN-Tranceiver? Oder soll der HUB transparent wirken? MFG Falk
Hallo Falk, Humm, übliche Trickschaltung: Hatte ich aber noch nirgends anders veröffentlicht gesehen. O.K. Dann scheine ich mit dem ganz oben gezeigten Ansatz der CPDL Implementierung zumindest schon mal nicht ganz falsch zu liegen. Das wird dann eine spannende Herausforderung werden. Gesteuertes Umschalten würde wohl gehen wenn die Nodes Nachrichten lange genug senden wenn gerade ein anderer Bus aktiviert ist. Mir scheint der Aufwand aber letztlich größer zu sein. by the way: Da du ja DER CAN-Spezialist bist: Die Frage nach automatischen Abschluss des Busses. Kennst du da eine realisierbare Lösung? Hintergrund ist, dass an den vier CAN-Bus ( plural Busse ? ) Geräte angeschlossen werden die intern fest mit 120 Ohm abgeschlossen sind. Ist nur eines angeschlossen, müsste der HUB einen weiteren 120 Ohm Widerstand hinzufügen. Wenn jemand drei und mehr anschließt kommt aus der Box eine Pistole heraus und schießt! Danke für die Hilfe. Karsten
@ Karsten K. (karsten42) >by the way: Da du ja DER CAN-Spezialist bist: Wie bitte? Wie kommt du denn darauf? Ich habe nur eine ungesunde Portion 1/7tel Wissen! >Die Frage nach automatischen Abschluss des Busses. Kennst du da eine >realisierbare Lösung? Keine Ahung. >Hintergrund ist, dass an den vier CAN-Bus ( plural Busse ? ) Geräte >angeschlossen werden die intern fest mit 120 Ohm abgeschlossen sind. Ist >nur eines angeschlossen, müsste der HUB einen weiteren 120 Ohm >Widerstand hinzufügen. Wenn jemand drei und mehr anschließt kommt aus >der Box eine Pistole heraus und schießt! Man könnte einen definierten Strom an CAN-H und CAN-L einspeisen und die Spannung messen. Dann weiß man, wwelche Terminierung auf dem Bus angeschlossen ist. Bei SEHR langen Busleitungen könnte aber der Kabelwiderstand das Ergebnis stark beeinflußen. Ist nur so ne schnelle Idee.
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.