Forum: Mikrocontroller und Digitale Elektronik serieller 4-Bit vergleicher


von Hilby (Gast)


Lesenswert?

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

von m.n. (Gast)


Lesenswert?

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.

von Hilby (Gast)


Angehängte Dateien:

Lesenswert?

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

von m.n. (Gast)


Lesenswert?

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?

von Uwe (Gast)


Lesenswert?

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.

von Harald W. (wilhelms)


Lesenswert?

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

von Uwe (Gast)


Lesenswert?

> 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 ...

von Hilby (Gast)


Lesenswert?

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

von Hilby (Gast)


Lesenswert?

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.

von Harald W. (wilhelms)


Lesenswert?

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

von Teo D. (teoderix)


Lesenswert?

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.

von Hilby (Gast)


Lesenswert?

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.

von Sepp (Gast)


Lesenswert?

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!

von Hilby (Gast)


Lesenswert?

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.

von Sepp (Gast)


Lesenswert?

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!

von Sepp (Gast)


Lesenswert?


von Sepp (Gast)


Lesenswert?

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.

von Teo D. (teoderix)


Lesenswert?

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.

von Sepp (Gast)


Lesenswert?

Möglichkeit 1 ist ohne Clockleitung! Nr.2 dann mit.

von Sepp (Gast)


Lesenswert?

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.

von Hilby (Gast)


Lesenswert?

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?

von Teo D. (teoderix)


Lesenswert?

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 :)

von Walter (Gast)


Lesenswert?

typischer Fall von zu wenig Input,
produziert als Output nur Käse!

Kannst Du die Messkarte programmieren, Ein- Ausgänge definieren?

von Thomas E. (thomase)


Lesenswert?

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.

von Hilby (Gast)


Lesenswert?

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.

von oldmax (Gast)


Lesenswert?

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

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.