Guten morgen!
Ich habe folgendes vor:
Ich habe einen digitalen Ausgang einer Messkarte. Über diesen Ausgang
möchte ich gerne ein 4 bit Wort ausgeben, meinetwegen -High Low Low
High-.
Nun brauche ich eine Schaltung, die mir dieses serielle Signal einliest
und mit einer vorgegebenen Reihenfolge vergleicht. Wenn das Ergebniss
gleich ist, dann soll am Ende High rauskommen, ansonsten Low.
Habe da an eine Schieberegister gedacht mit einem einfachen 4 Bit
Vergleicher. Nun habe ich gehört dass es sowas auch als einzelnes
Bauteil geben soll. Hat das schonmal jemand gehört?
Hat jemand andere Ideen wie das zu lösen ist?
Wenn ich die Lösung mit dem Schieberegister und dem 4 Bit Vergleicher
nutzen muss, wie verhält sich dann der Vergleicher wenn ich mein
Schieberegister resette? und wie bekomme ich den Takt hin? Der
Vergleicher soll ja nicht an aus an aus gehen, sondern kontinuierlich an
bleiben, und nur falls ein Datenzug ausbleibt abschalten.
Bin für alle Tipps dankbar.
Liebe Grüße
Hilby
Hilby schrieb:> Ich habe einen digitalen Ausgang einer Messkarte.> die mir dieses serielle Signal
Ist es denn überhaupt seriell?
> Nun habe ich gehört dass es sowas auch als einzelnes> Bauteil geben soll. Hat das schonmal jemand gehört?
ATtiny13 zum Beispiel, ohne verstanden zu haben, was Du genau möchtest.
Hey, zunächst einmal Danke für die Rückmeldung.
Hier eine Skizze, dann wird es vielleicht etwas klarer was ich meine.
Einen µController (ATtiny13) wollte ich dafür eigentlich nicht
verwenden. Hatte da mehr an Cmos/TTL gedacht.
Gruß Hilby
Hilby schrieb:> Hier eine Skizze, dann wird es vielleicht etwas klarer was ich meine.
Nein, wird es nicht.
Wo bleibt Dein oben erwähnter Takt?
Wo das Signal, dass das 1. Bit kennzeichnet?
Wo das Resetsignal und wozu soll es gut sein?
Ohne Takt Ausgang bzw. Eingang ? Ohne Synchronisierung ( Wenn ohne
Taktleitung dann zumindest Startbit ! ) ???
Ansonsten nimm dir zuliebe ein kleines CPLD, dann kannst du ohn e zu
löten oder Bauteile zu tauschen die Schaltung ändern.
Hilby schrieb:> Ich habe einen digitalen Ausgang einer Messkarte. Über diesen Ausgang> möchte ich gerne ein 4 bit Wort ausgeben, meinetwegen -High Low Low> High-.>> Nun brauche ich eine Schaltung, die mir dieses serielle Signal einliest> und mit einer vorgegebenen Reihenfolge vergleicht.
Wenn diese "vorgegebene Reihenfolge" immer gleich ist, kannst Du
den Parallelausgang des Schieberegisters einfach dekodieren,
über Gatterausgänge oder notfalls mit Dioden. Dann brauchst Du
keinen zusätzlichen Vergleicher.
Gruss
Harald
> kannst Du den Parallelausgang des Schieberegisters einfach dekodieren
Naja, dann würde aber auch verglichen werden wenn er erst beim 2. Takt
bzw. beim 5. Takt oder dem 7. Takt ist. Also es würden auch die
zwischenzustände dekodiert werden.
Aber meine Glaskugel ...
m.n. schrieb:> Wo bleibt Dein oben erwähnter Takt?> Wo das Signal, dass das 1. Bit kennzeichnet?> Wo das Resetsignal und wozu soll es gut sein?
Ich hatte ja oben geschrieben dass ich mir über die realisierung des
Taktes nicht sicher bin. Muss der Takt von der Messkarte ausgehen, oder
geht auch ein externer Takt mit einem Quartz, wenn ja, dann die Frage
wie?
Uwe schrieb:> Ansonsten nimm dir zuliebe ein kleines CPLD, dann kannst du ohn e zu> löten oder Bauteile zu tauschen die Schaltung ändern.
Das muss ich mir mal anschauen.
Harald Wilhelms schrieb:> Wenn diese "vorgegebene Reihenfolge" immer gleich ist, kannst Du> den Parallelausgang des Schieberegisters einfach dekodieren,> über Gatterausgänge oder notfalls mit Dioden. Dann brauchst Du> keinen zusätzlichen Vergleicher.
Sowas in der Art hatte ich mir vorgestellt. Dafür bräuchte ich nur noch
Hinweise wie ich das umsetzen kann.
Grüße Hilby
Uwe schrieb:> Naja, dann würde aber auch verglichen werden wenn er erst beim 2. Takt> bzw. beim 5. Takt oder dem 7. Takt ist. Also es würden auch die> zwischenzustände dekodiert werden.> Aber meine Glaskugel ...
Wie ich oben schon geschrieben hatte soll das nicht passieren:
Hilby schrieb:> Der Vergleicher soll ja nicht an aus an aus gehen,> sondern kontinuierlich an bleiben, und nur falls ein> Datenzug ausbleibt abschalten.
Uwe schrieb:>> kannst Du den Parallelausgang des Schieberegisters einfach dekodieren> Naja, dann würde aber auch verglichen werden wenn er erst beim 2. Takt> bzw. beim 5. Takt oder dem 7. Takt ist. Also es würden auch die> zwischenzustände dekodiert werden.> Aber meine Glaskugel ...
Das der Parallelwert am Schieberegister stabil anliegt, habe ich
jetzt einmal vorausgesetzt und habe mich nur um den zweiten Teil
gekümmert. Natürlich braucht man ein passenes Clocksignal um das
serielle Signal zuerst einmal in das Schieberegister reinzuschieben.
Aber dafür muss Hilby weitere Info liefern.
Gruss
Harald
Hilby schrieb:> und wie bekomme ich den Takt hin?Uwe schrieb:> Naja, dann würde aber auch verglichen werden wenn er erst beim 2. Takt> bzw. beim 5. Takt oder dem 7. Takt ist. Also es würden auch die> zwischenzustände dekodiert werden.> Aber meine Glaskugel ...
Einfach ist halt nicht immer wirklich einfach :)
Für Deine so simpel erscheinende Serielle_Datenübertragung brauchst Du 3
Deiner, wahrscheinlich nicht so üppig vorhandenen, Digital-Ausgänge :(
Mit I2C könnte man so was hinbekommen. Da bin ich aber nicht wirklich
Dein Ansprechpartner.
Teo Derix schrieb:> Für Deine so simpel erscheinende Serielle_Datenübertragung brauchst Du 3> Deiner, wahrscheinlich nicht so üppig vorhandenen, Digital-Ausgänge :(
Genau da liegt das Problem. Ich möchte so wenig digitale Ausgänge
verwenden wie möglich, daher auch die Frage nach dem externen Takt.
Digitale Eingänge habe ich noch an der Messkarte.
Also im Prinzip soll das ganze so funktionieren, dass ich vier Bits
übertrage, die mit einem vorgegebenen parallel anliegendem bit Wort
vergleiche und dann den Ausgang auf high oder low setze, nach 4 weiteren
bits das gleiche von vorne. Das ich für das Schieberegister einen Takt
brauche ist mir schon klar.
Falls ich bei der Problemschilderung nicht ganz exakt bin, dann bitte
ich das zu entschuldigen, ich bin da noch nicht so erfahren mit.
Gubt den Deine Karte keine Clock aus? Wenn nur das serielle Signal zur
Verfügung steht, ohne irgendeinen Clock und ohne Sync wirds schwierig.
Woher soll denn die Elektronik wissen, wanns los geht und wann ein Bit
kommt?? Wenns ne Art UART Signal ist, müsste es ja ein Start und Stopbit
ö.ä. geben!
Einen Clock habe ich nicht, ein Taktsignal müsste ich dann über einen
der Digitalen Ausgänge ausgeben. Es handelt sich hier im Übrigen um eine
NI USB-6210, programmierbar mit Dasylab.
Wie gesagt, Du hast 2 Möglichkeiten:
1. ein Start und Stopbyte mit fixer Frequenz (wie UART) --> µC o.ä.
nötig
2. ein Clock synchron zu den Daten (z.B. Erst Datenbit anlegen, dann
Clock high). Das geht mit einem Schieberegister.
Allerdings 4 Bit Schiebe-Register kenne ich nicht, nur 8 Bit. Aber das
könnte man ja mit 2x4 Bit lösen. Es gibt Schieberegister, die noch einen
"Latch" Eingang haben. Das heißt, nach dem reinshieben der Daten, muß
noch ein kurzer Impuls gegeben werden, damit die Daten an den Ausgängen
gültig werden. Hat den Vorteil, man "sieht" das Schieben nicht!
Die 4 Ausgänge dann per Logikgatter mit deinen Vorgaben vergleichen...
fertig!
Besipiel:
Die Ausgänge z.B. mit 4 XNOR'S Vergleichen. 1 XNOR 1 = 1; 0 XNOR 1 = 0;
1 XNOR 0 = 0; 0 XNOR 0 = 1; --> Wenn gleich, kommt 1 raus.
Die 4 XOR Ausgänge dann verunden.
Wenn ALLE gleich, kommt 1 raus!
Oder mit Dioden und PullUps bzw. PullDowns, wenn man Logikgatter sparen
will.
Sepp schrieb:> 1. ein Start und Stopbyte mit fixer Frequenz (wie UART) --> µC o.ä.> nötig> 2. ein Clock synchron zu den Daten (z.B. Erst Datenbit anlegen, dann> Clock high). Das geht mit einem Schieberegister.
Für was bitte brauche ich ein Start/Stop-Bit wenn ich eine Clock-Leitung
habe?
Also entweder eine "vollwertige" unidirektionale serielle oder 3
Digitalausgänge.
Wo bei mir halt dabei nur I2C als einfachste Lösung einfällt. Wenn das
unidirektional überhaupt geht? Wo ich aber keinen Grund wüsste warum
nicht aber wie gesagt mit I2C kenne ich mich nicht wirklich aus.
I2C ist ein ganz anderes Protokoll. Du brauchst schon mal Open Collektor
Ausgänge. Dann ist das Protokoll auch noch recht aufwändig mit Start und
Stop Bedingungen, Adressen, usw.
Ist Möglich, aber glaube ich für diese Anwendung zu aufwändig.
Sepp schrieb:> Ist Möglich, aber glaube ich für diese Anwendung zu aufwändig.
Das denke ich auch.
Drei Ausgänge ist mir aber eigentlich zu viel, denn dann könnte ich ja
fast schon vier Ausgänge nehmen und würde mir das ganze Prozedere mit
dem Clock sparen.
Was wäre denn wenn ich einen gemeinsamen Takt für die Messkarte und das
Register nehme? Dann brächte ich maximal 2 Ausgänge, Serielle Daten und
latch?
Sepp schrieb:> Möglichkeit 1 ist ohne Clockleitung! Nr.2 dann mit.
Ah, ok.
Zu 2. müsste er aber noch'n Zähler da zu klöppeln.
Dann halt doch nur 2 Ausgänge :)
Hilby schrieb:> Einen µController (ATtiny13) wollte ich dafür eigentlich nicht> verwenden. Hatte da mehr an Cmos/TTL gedacht.
Warum einfach, wenn es auch komplizert geht.
mfg.
Thomas Eckmann schrieb:> Warum einfach, wenn es auch komplizert geht.
Das hat schon einen Grund:
Mit einem µC bin ich auf Programmierung angewiesen, das ganze soll aber
Hardwaremäßig umgesetzt werden, da hier auch Schutzfunktionen realisiert
werden sollen.
Hi
>Mit einem µC bin ich auf Programmierung angewiesen, das ganze soll aber>Hardwaremäßig umgesetzt werden, da hier auch Schutzfunktionen realisiert>werden sollen.
Nun, das kann ich nicht wirklich verstehen. Etwas sicheres wie ein
Programm gibt es eigentlich nicht, denn da kannst du dir alle möglichen
"Probleme" und Fehlverhalten der Hardware einfallen lassen und diese
entsprechend bearbeiten. Ein Programm schreibt sich selten selbst um und
so sollte, da die Hardware auf ein Minimum begrenzt wird, lediglich der
"Defekt" eines Bauteiles deine Kreise stören. Anders, wenn es wirklich
eine so sicherheitsrelevante Anwendung ist, dann wirst du sowieso
mehrkanalig arbeiten müssen. Da bist du mit deiner Hardware sehr schnell
unsicher. Auch IC's lassen sich schon mal dazu herab, das ein oder
andere Elektron davon laufen zu lassen.
Gruß oldmax