Hallo Leute steht schon alles im Betreff, ich suche solch eine Schaltung bzw. IC. Und wie heißt die Funktion eigentlich, 3-fach XOR? oder 1_aus_3?
Ingo schrieb: > W wie Wurst schrieb: >> 3-fach XOR Auf den ersten Blick: Ein 3-fach XOR gibt es nicht. Bei einem EXOR ist der Ausgang 1, wenn alle Eingänge verschieden sind. Da es nur zwei Bitzustände gibt, geht das auch nur mit zwei Eingängen. Interessante Diskussion, ob es ein N-fach XOR für N > 2 überhaupt geben kann, findet man hier: Beitrag "XOR-Gate mit 8 Eingängen" Denn es gibt noch eine andere Definition: Der Ausgang ist dann 1, wenn die Anzahl der 1en ungerade ist. Also eine Art Paritätsprüfung. Viel Spaß beim Lesen ;-) P.S. Da weder Definition 1 noch 2 auf die Problemstellung in diesem Thread hier passen, würde ich es eben nicht "3-fach XOR" nennen. Wikipedia sagt dazu in: http://de.wikipedia.org/wiki/XOR-Gatter "Die Funktion eines XOR-Gatters mit mehr als zwei Eingängen ergibt sich, indem man zunächst zwei der Eingänge XOR-verknüpft, dann deren Ergebnis mit dem nächsten Eingang XOR-verknüpft, solange bis alle Eingänge berücksichtigt sind." Wenn ich das mache, kann ich sofort ein Gegenbeispiel nennen, welches nicht der Forderung des TOs genügt. Daher ist die Formulierung "3-fach-XOR" einfach falsch.
:
Bearbeitet durch Moderator
"... wenn genau 1 Eingang aktiv ist" Eine schwammige Formulierung. Bedeutet aktiv ein high oder ein low?
Stephan schrieb: > am besten mal eine Logiktabelle posten Die ist ja leicht gemacht: A B C Ergebnis 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 0 0 1 1 0 1 0 1 1 0 0 1 1 1 0 Unter der Voraussetzung, dass die Aussage des TOs "Ausgang aktiv" mit 1 gleichzusetzen ist. Ich kenne für diese Logikoperation keinen Namen. Man kann jedenfalls folgende Aussage machen, wenn man die Aufgabenstellung auf N Eingänge verallgemeinert: Die Anzahl der Möglichkeiten steigt mit 2^N, die Anzahl der Ergebnisse = 1 ist aber nur gleich N.
:
Bearbeitet durch Moderator
Hi >Ich kenne für diese Logikoperation keinen Namen. Hier Beitrag "Re: XOR-Gate mit 8 Eingängen" gibt es doch schon einen Link zu einem fast passenden Bauelement. Noch zwei Gatter und das ganze passt. MfG Spess
Frank M. schrieb: > Stephan schrieb: >> am besten mal eine Logiktabelle posten > > Die ist ja leicht gemacht: das weiß ich, ich wollte nur Missverständnisse verhindern. Ein ODER würde auch bei genau einem Eingang ansprechen. Erfüllt dann aber eben nicht die von Dir vermutete Funktion. weil es auf den /die anderen Eingang/ Eingänge auch reagiert. Zumal nicht klar ist ob H oder L aktiv.
der gesuchte ic heisst atiny13 und ist noch mit wenigen zeilen code zu füttern. dafür kannst du die pinbelegnung aber auch auch weitgehend nach bedarf selbst zuordnen.
spess53 schrieb: >>Ich kenne für diese Logikoperation keinen Namen. > Hier > > Beitrag "Re: XOR-Gate mit 8 Eingängen" > > gibt es doch schon einen Link zu einem fast passenden Bauelement. Noch > zwei Gatter und das ganze passt. Ja, Schaltung war mir klar. Ich bezog mich hier nur auf die zweite Frage des TOs, nämlich nach einer Bezeichnung für diese Logikoperation.
Mit einem 3 zu 8 Decoder und einer nachfolgenden Oderschaltung (Dioden ?) müsste sich das doch machen lassen egal ob High- oder Low-Aktiv. High aktiv: -> 1 oder 2 oder 4 Low aktiv: -> 3 oder 5 oder 6
Clevere Idee und mit einem Mäuseklavier + Pullups an den X-Eingängen wäre die Logikfunktion sogar "programmierbar". ;)
:
Bearbeitet durch User
Hi Nimm einen 74xx138 und 2 Oder (1/2 74xx32). Mit Dioden geht's auch. Gruß oldmax
...igendeinen µC schnappen Code ohne spezielle syntax: int hallo; void funktionfuerdich(){ hallo=0; if (eingang1==1){ hallo=hallo+1; } if (eingang2==1){ hallo=hallo+1; } if (eingang3==1){ hallo=hallo+1; } if (hallo==1){ ausgang=1; } else{ ausgang=0; } }//Ende der Funktion
Stephan schrieb: > Ein ODER würde auch bei genau einem Eingang ansprechen. Nein, ein ODER spricht nicht bei GENAU einem Eingang an. Ein ODER spricht bei einem, bei zwei und auch bei drei gesetzten Eingängen an (wenn wie hier drei Eingänge vorhanden sind). GENAU ein Eingang heißt auch wirklich nur bei einem.
Hallo Leute, der Vollständigkeit halber noch die "klassische" Lösung, nach der Wahrheitstabelle von Frank M. A B C Ergebnis 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 0 0 1 1 0 1 0 1 1 0 0 1 1 1 0 Ergebnis X = (C & /B & /A) ODER (/C & B & /A) ODER (/C & /B & A) Kürzen mit KV noch nicht inbegriffen. Also zwei Logikbausteine, ein 3fach AND mit je 3 Eingängen und ein OR mit 3 Eingängen. Die Lösung von Peter Dannegger ist aber wesentlich kreativer und gefällt mir besser. Gruß. Tom
Habe die Inverter vergessen, es braucht auch noch drei Inverter, also drei Bausteine :)
TomA schrieb: > Habe die Inverter vergessen, es braucht auch noch drei Inverter, also > drei Bausteine :) und was soll sowas, wenns mit nem dip8 tiny geht??? komisches analogiker volk hier.
genervter schrieb: > und was soll sowas, wenns mit nem dip8 tiny geht??? Woher weisst Du, dass Du mit einem "dip8 tiny" die Anforderungen des TOs überhaupt einhalten kannst? Logikgatter sind im allgemeinen wesentlich schneller als ein µC. Soll das Ergebnis innerhalb von einigen ns bereitstehen, sieht Dein ATTiny ganz schön alt aus. Peters Lösung ist einfach genial.
Fuer Karnaugh Freaks - Logic Minimizer Bis zu 4 Variablen gratis - laeuft unter Win8.1 http://download.cnet.com/Logic-Minimizer/3000-2053_4-10873921.html
genervter schrieb: > hat auch weniger beine als 74xxx genervter schrieb: > und was soll sowas, wenns mit nem dip8 tiny geht??? komisches analogiker > volk hier. Der SN74LVC1G386 auf den jemand in dem anderen Thread hingewiesen hat, hätte sogar nur 6 Pins ;-)
:
Bearbeitet durch User
Volker SchK schrieb: > Der SN74LVC1G386 auf den jemand in dem anderen Thread hingewiesen hat, > hätte sogar nur 6 Pins ;-) touché
Und für Gatter brauche man kein Programmiergerät und keine Programmierkenntnisse.
Hallo Frank, Frank M. schrieb: > A B C Ergebnis > 0 0 0 0 > 0 0 1 1 > 0 1 0 1 > 0 1 1 0 > 1 0 0 1 > 1 0 1 0 > 1 1 0 0 > 1 1 1 0 > > Ich kenne für diese Logikoperation keinen Namen. Ich möchte "Rübennase" vorschlagen, hilfsweise "Klausdieter". SCNR, Karl
TomA schrieb: > Und für Gatter brauche man kein Programmiergerät und keine > Programmierkenntnisse. dafür muss man sie aber aussuchen und idr. erst besorgen. tiny hat man da, programmiert ihn fix, und kann machen. wenns schnell gehen muss eben.
Volker SchK schrieb: > Der SN74LVC1G386 auf den jemand in dem anderen Thread hingewiesen hat, > hätte sogar nur 6 Pins ;-) dafür tut er nicht das, was gewünscht ist. > A B C Ergebnis > 0 0 0 0 > 0 0 1 1 > 0 1 0 1 > 0 1 1 0 > 1 0 0 1 > 1 0 1 0 > 1 1 0 0 > 1 1 1 1 <-
genervter schrieb: > tiny hat man da, programmiert ihn fix, und kann machen. Frag doch mal den TO, ob er Tinys da hat und sie auch programmieren kann. Wenn du das kannst, heißt das nicht, daß alle anderen das auch können. Dazu kommt dann noch die Tatsache, daß du mit Software nicht mal in die Größenordnungen kommst (bezüglich der Gatterlaufzeiten) wie in einem reinen Digital-IC.
Roland L. schrieb: > Volker SchK schrieb: >> Der SN74LVC1G386 auf den jemand in dem anderen Thread hingewiesen hat, >> hätte sogar nur 6 Pins ;-) > > dafür tut er nicht das, was gewünscht ist. Aaaarrrgggghhh Dreimal hin geschaut und doch nicht gesehen ...
:
Bearbeitet durch User
TomA schrieb: > Und für Gatter brauche man kein Programmiergerät und keine > Programmierkenntnisse. nicht mal einen Prommer oder eine IDE, Software
TomA schrieb: > Ergebnis X = (C & /B & /A) ODER (/C & B & /A) ODER (/C & /B & A) > > Kürzen mit KV noch nicht inbegriffen. Macht nix, der Ausdruck läßt sich eh nicht weiter kürzen.
R. Max schrieb: > TomA schrieb: > >> Ergebnis X = (C & /B & /A) ODER (/C & B & /A) ODER (/C & /B & A) >> >> Kürzen mit KV noch nicht inbegriffen. > > Macht nix, der Ausdruck läßt sich eh nicht weiter kürzen. Das ist richtig und TomA's Loesung bestaetigt auch das Ergebnis des Programs "LogicMinimizer"
Für etwas komplexere Logik (16 Eingänge) 8 Ausgänge kann man Epromms missbrauchen wenn man die Logiktabelle reinbrennt. Namaste
W wie Wurst schrieb: > Und wie heißt die Funktion eigentlich, 3-fach XOR? oder 1_aus_3? Vielleicht Σ=1 ? LG, Sebastian
TomA schrieb: > A B C Ergebnis > 0 0 0 0 > 0 0 1 1 > 0 1 0 1 > 0 1 1 0 > 1 0 0 1 > 1 0 1 0 > 1 1 0 0 > 1 1 1 0 > > Ergebnis X = (C & /B & /A) ODER (/C & B & /A) ODER (/C & /B & A) Warum so kompliziert? A, B, C sind ja Bits. Gehen wir davon aus sie sind im selben Eingangsbyte e
1 | bool y = ( e & (e-1) ) != 0 |
oder in meinen Augen leserlicher und von allen mir bekannten Compilern gleichbedeutend:
1 | bool y = e & (e-1) |
für reines C darf das bool natürlich auch ein char oder int oder sonstwas sein...
Leo B. schrieb: > Warum so kompliziert? > A, B, C sind ja Bits. Gehen wir davon aus sie sind im selben > Eingangsbyte e >
1 | > bool y = ( e & (e-1) ) != 0 |
2 | >
|
> oder in meinen Augen leserlicher und von allen mir bekannten Compilern > gleichbedeutend: >
1 | > bool y = e & (e-1) |
2 | >
|
Äh. Nö?
1 | #include <stdbool.h> |
2 | #include <stdint.h> |
3 | #include <stdio.h> |
4 | |
5 | int main() |
6 | {
|
7 | bool output; |
8 | uint8_t input; |
9 | |
10 | // Bit combinations from 0000 0000 to 0000 0111
|
11 | for (input = 0; input < 8; input++) |
12 | {
|
13 | output = input & (input-1); |
14 | printf("Resulting output for input = %d: %d\n", input, output); |
15 | }
|
16 | |
17 | return 0; |
18 | }
|
ergibt:
1 | Resulting output for input = 0: 0 |
2 | Resulting output for input = 1: 0 |
3 | Resulting output for input = 2: 0 |
4 | Resulting output for input = 3: 1 |
5 | Resulting output for input = 4: 0 |
6 | Resulting output for input = 5: 1 |
7 | Resulting output for input = 6: 1 |
8 | Resulting output for input = 7: 1 |
:
Bearbeitet durch User
Ähm... ja. Tipfehler und dann gleich weiter gekürzt... Und die '0' Übersehen... Korrigiert:
1 | bool out = in && !(in & (in-1)); |
Test:
1 | #include <stdbool.h> |
2 | #include <stdint.h> |
3 | #include <stdio.h> |
4 | |
5 | char* c2bStr( uint8_t val ) |
6 | {
|
7 | static char buf[9] = "00000000"; |
8 | int i = 8; |
9 | for( ; i>=0 ; val>>=1) |
10 | buf[--i] = '0'+(val&1); |
11 | return buf; |
12 | }
|
13 | |
14 | int main() |
15 | {
|
16 | bool out; |
17 | |
18 | for( uint8_t in = 0; in <= 33; in++) |
19 | {
|
20 | out = in && !(in & (in-1)); |
21 | printf( "%s => %d\n", c2bStr( in ), out ); |
22 | }
|
23 | |
24 | return 0; |
25 | }
|
Ergebnis:
1 | 00000000 => 0 |
2 | 00000001 => 1 |
3 | 00000010 => 1 |
4 | 00000011 => 0 |
5 | 00000100 => 1 |
6 | 00000101 => 0 |
7 | 00000110 => 0 |
8 | 00000111 => 0 |
9 | 00001000 => 1 |
10 | 00001001 => 0 |
11 | 00001010 => 0 |
12 | 00001011 => 0 |
13 | 00001100 => 0 |
14 | 00001101 => 0 |
15 | 00001110 => 0 |
16 | 00001111 => 0 |
17 | 00010000 => 1 |
18 | 00010001 => 0 |
19 | 00010010 => 0 |
20 | 00010011 => 0 |
21 | 00010100 => 0 |
22 | 00010101 => 0 |
23 | 00010110 => 0 |
24 | 00010111 => 0 |
25 | 00011000 => 0 |
26 | 00011001 => 0 |
27 | 00011010 => 0 |
28 | 00011011 => 0 |
29 | 00011100 => 0 |
30 | 00011101 => 0 |
31 | 00011110 => 0 |
32 | 00011111 => 0 |
33 | 00100000 => 1 |
34 | 00100001 => 0 |
:
Bearbeitet durch User
Toxic schrieb: > http://download.cnet.com/Logic-Minimizer/3000-2053_4-10873921.html Warum der Umweg über einen mysteriösen Download-Center. Für den Logic-Minimizer gibt es eine eigene Web-Site http://www.logicminimizer.com/
gcc:
1 | bool out = __builtin_popcount(in)==1; |
LG, Sebastian
Sebastian Wangnick schrieb: > gcc: >
1 | > bool out = __builtin_popcount(in)==1; |
2 | >
|
Built-in population count... wieder was gelernt.
W wie Wurst schrieb: > steht schon alles im Betreff, ich suche solch eine Schaltung bzw. IC. Es gäbe noch die analoge Lösung, wenn die Ausgangsspannung der Quellen definiert sind, z.B. 0V/5V aus einem HC-MOS IC.
1 | +5V +5V +5V |
2 | | | | |
3 | 20k | 1k |
4 | | | | |
5 | +--|+\ | |
6 | | | >--+-- out |
7 | a --10k--+----(--|-/ | |
8 | | 10k LM393| |
9 | b --10k--+----(--|+\ | |
10 | | | | >--+ |
11 | b --10k--+ +--|-/ |
12 | | | |
13 | 10k | |
14 | | | |
15 | GND GND |
Irgendwie weiss ich aber nie, wie bei open collector Komparatoren internierendeer und nicht-invertierender Eingang aufzufassen sind, ist + positiver als - geht der Ausgang nach + oder wird er aktiv, d.h. durchgeschaltet...
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.