Forum: Mikrocontroller und Digitale Elektronik 3 Eingänge - Ausgang "1" wenn genau 1 Eingang aktiv ist


von W wie Wurst (Gast)


Lesenswert?

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?

von Ingo (Gast)


Lesenswert?

W wie Wurst schrieb:
> 3-fach XOR

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

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
von Moppel (Gast)


Lesenswert?

"... wenn genau 1 Eingang aktiv ist"

Eine schwammige Formulierung. Bedeutet aktiv ein high oder ein low?

von Stephan (Gast)


Lesenswert?

am besten mal eine Logiktabelle posten

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

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
von spess53 (Gast)


Lesenswert?

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

von Stephan (Gast)


Lesenswert?

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.

von genervter (Gast)


Lesenswert?

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.

von genervter (Gast)


Lesenswert?

genervter schrieb:
> der gesuchte ic heisst atiny13

verzeih, er heisst attiny13

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

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.

von Volker S. (vloki)


Lesenswert?

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

von Peter D. (peda)


Angehängte Dateien:

Lesenswert?

Ein IC.

von R. M. (rmax)


Lesenswert?

Clevere Idee und mit einem Mäuseklavier + Pullups an den X-Eingängen 
wäre die Logikfunktion sogar "programmierbar". ;)

: Bearbeitet durch User
von Paul B. (paul_baumann)


Lesenswert?

Peter Dannegger schrieb:
> Ein IC.

Einwandfrei! Prima Idee.

MfG Paul

von oldmax (Gast)


Angehängte Dateien:

Lesenswert?

Hi
Nimm einen 74xx138 und 2 Oder (1/2 74xx32). Mit Dioden geht's auch.
Gruß oldmax

von Jörg Zydek (Gast)


Lesenswert?

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

von genervter (Gast)


Lesenswert?

hat auch weniger beine als 74xxx

von npn (Gast)


Lesenswert?

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.

von TomA (Gast)


Lesenswert?

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

von TomA (Gast)


Lesenswert?

Habe die Inverter vergessen, es braucht auch noch drei Inverter, also 
drei Bausteine :)

von genervter (Gast)


Lesenswert?

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.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

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.

von Toxic (Gast)


Angehängte Dateien:

Lesenswert?

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

von Volker S. (vloki)


Lesenswert?

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
von genervter (Gast)


Lesenswert?

Volker SchK schrieb:
> Der SN74LVC1G386 auf den jemand in dem anderen Thread hingewiesen hat,
> hätte sogar nur 6 Pins ;-)

touché

von TomA (Gast)


Lesenswert?

Und für Gatter brauche man kein Programmiergerät und keine 
Programmierkenntnisse.

von Karl Käfer (Gast)


Lesenswert?

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

von genervter (Gast)


Lesenswert?

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.

von Roland L. (Gast)


Lesenswert?

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

von npn (Gast)


Lesenswert?

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.

von Volker S. (vloki)


Lesenswert?

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
von Joachim B. (jar)


Lesenswert?

TomA schrieb:
> Und für Gatter brauche man kein Programmiergerät und keine
> Programmierkenntnisse.

nicht mal einen Prommer oder eine IDE, Software

von R. M. (rmax)


Lesenswert?

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.

von Toxic (Gast)


Lesenswert?

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"

von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Lesenswert?

Für etwas komplexere Logik (16 Eingänge) 8 Ausgänge kann man Epromms 
missbrauchen wenn man die Logiktabelle reinbrennt.

Namaste

von Sebastian W. (wangnick)


Lesenswert?

W wie Wurst schrieb:
> Und wie heißt die Funktion eigentlich, 3-fach XOR? oder 1_aus_3?

Vielleicht Σ=1 ?

LG, Sebastian

von vendsy (Gast)


Lesenswert?


von Leo B. (luigi)


Lesenswert?

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

von Mark B. (markbrandis)


Lesenswert?

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
von Leo B. (luigi)


Lesenswert?

Ä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
von Wolfgang (Gast)


Lesenswert?

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/

von Sebastian W. (wangnick)


Lesenswert?

gcc:
1
bool out = __builtin_popcount(in)==1;

LG, Sebastian

von Mark B. (markbrandis)


Lesenswert?

Sebastian Wangnick schrieb:
> gcc:
>
1
> bool out = __builtin_popcount(in)==1;
2
>

Built-in population count... wieder was gelernt.

von MaWin (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.