Forum: Mikrocontroller und Digitale Elektronik Halbaddierer mit IC SN 74LS **, Problem


von Marvin G. (marvg)


Angehängte Dateien:

Lesenswert?

Hallo liebe Gemeinde,
ich habe mir im Rahmen eines Schulprojektes vorgenommen einen 4 Bit 
Addierer (Schaltplan im Anhang) aus TTL Logik zu bauen. Dazu habe ich 
mir bei Conrad die Bauteile
*IC SN 74LS 09 (AND)
*IC SN 74LS 32 (OR)
*IC SN 74LS 86 (XOR)
gekauft. Nun habe ich eine "Stufe" des Addierers auf einer Steckplatine 
aufgebaut (siehe Bild im Anhang) und folgende Probleme:
1)Mir wurde gesagt, dass diese Bauteile keinen Spannung als logische 
Eins betrachten und Spannung (hier >4,5V) als Null, ähnlich dem ATMEL32. 
Jedoch liefert die Schaltung an dem Draht "Ergebnis" die richtig 
Ergebnisse:
0+0=0
1+0=1
0+1=1
1+1=0
(angegeben als Spannung liegt an = 0 und Spannung > 4V =1)

2)Carry Out verhält sich merkwürdig: 1+0 gibt einen Übertrag, 0+0, 1+1 
und 0+1 jedoch nicht. (Zum Addieren schalte ich die Eingänge A und B 
gegen +5V, das Ergebnis messe ich mit einem Messgerät/LED, das am 
Ausgang des Logikgatters liegt und gegen Masse geschaltet ist.)

Nebenbei: Ich habe hier als Anfänger™ einfach mal alles 1:1 von 
Logikplan übertragen, bitte gebt Bescheid, wenn ihr irgendwelche 
fundamentale Fehler seht. :)

Mit freundlichen Grüßen,
Marvin

von max power (Gast)


Lesenswert?

>1)Mir wurde gesagt, dass diese Bauteile keinen Spannung als logische
>Eins betrachten und Spannung (hier >4,5V) als Null, ähnlich dem ATMEL32.
die bauteile gibt es als nicht invertiert und invertiert.
in deinem fall sollten das die nicht invertierten sein.

im jeweiligen datenblatt ist aber auf den ersten seiten eine zeichung 
(connection diagram) und eine logik tabelle (function table) zu finden 
woran man erkennen kann welches bauteil man nun hat.

atmel32 = atmega32?

>Nebenbei: Ich habe hier als Anfänger™ einfach mal alles 1:1 von
>Logikplan übertragen
lieber mal schritt für schritt machen...
als blödes beispiel:

schaust auf die wiki dort sind zwei schaltdiagramme für einen 
halbaddierer.
http://de.wikipedia.org/wiki/Halbaddierer

mit deinen bauteilen und dem datenblatt solltest du jetzt erfolgreich 
einen halbaddierer hinbekommen. sogar als zwei verschiedene varianten.

falls dir in der wiki die bauteile anders vorkommen als im datenblatt 
liegt das an den deutschen symbolen und im datenblatt ist das symbol 
englisch.
also kannst auf die englische wiki, dort sind die symbole auch gleich 
wie im datenblatt.
http://en.wikipedia.org/wiki/Half_adder

danach schaust dir an wie ein volladierer funktioniert usw.
http://de.wikipedia.org/wiki/Volladdierer

von Yalu X. (yalu) (Moderator)


Lesenswert?

Marvin Guel schrieb:
> 1)Mir wurde gesagt, dass diese Bauteile keinen Spannung als logische
> Eins betrachten und Spannung (hier >4,5V) als Null, ähnlich dem ATMEL32.

Entweder dir wurde etwas Falsches gesagt, oder du hast das Gesagte
falsch verstanden. Sowohl bei der 74er-Gattern als auch bei den
Atmel-Mikdrocontrollern¹ entspricht ein High-Pegel einer logischen 1.

> Jedoch liefert die Schaltung an dem Draht "Ergebnis" die richtig
> Ergebnisse:
> 0+0=0
> 1+0=1
> 0+1=1
> 1+1=0

Das sieht doch schon einmal gut aus.

> 2)Carry Out verhält sich merkwürdig: 1+0 gibt einen Übertrag, 0+0, 1+1
> und 0+1 jedoch nicht.

Das hängt mit den Eingängen "BUS In" und "BUS Out" zusammen, über deren
Sinn ich mir nicht ganz im Klaren bin. Ist "BUS In" high, wird einer der
beiden Eingänge invertiert. Ist "BUS Out" high, wird der Ausgang mit dem
Ergebnis invertiert.

Auf deinem Foto ist "BUS In" offen. Die 74LS-Bausteine interpretieren
einen offenen Eingang normalerweise als high. Ist "BUS Out" ebenfalls
offen (d.h. high) würde dies das richtige Ergebnis und das fehlerhafte
Carry erklären. Wenn du "BUS In" und "BUS Out" beide auf low (0V)
schaltest, sollte der Volladdierer funktionieren.


¹) Mit ATMEL32 meinst du doch einen ATmega32 oder einen AVR32?

von Yalu X. (yalu) (Moderator)


Angehängte Dateien:

Lesenswert?

Im Logikplan steckt übrigens noch ein Fehler: Eine der Leitungen ist ist
mit keinem, eine andere gleich mit zwei Signalquellen verbunden.

von Marvin G. (marvg)


Lesenswert?

> Auf deinem Foto ist "BUS In" offen. Die 74LS-Bausteine interpretieren
> einen offenen Eingang normalerweise als high. Ist "BUS Out" ebenfalls
> offen (d.h. high) würde dies das richtige Ergebnis und das fehlerhafte
> Carry erklären. Wenn du "BUS In" und "BUS Out" beide auf low (0V)
> schaltest, sollte der Volladdierer funktionieren.
Danke, das hat bei einer anderen Schaltung schon mal viel geholfen, 
diese verhält sich jetzt wie die fotografierte. Mir bleibt nur weiterhin 
das Problem mit Carry: Dies schaltet nur auf high, wenn der grüne Draht 
(genannt B) an Eingabe auf high liegt. Der gelbe Draht heiße A und das 
ganze sieht so aus:
A=0 B=0 → Carry low
A=1 B=0 → Carry low
A=0 B=1 → Carry high?
A=1 B=1 → Carry low
Für diese Messung habe ich den nicht benutzten Draht gegen 0V geschaltet 
und nicht offen gelassen. Was ist hier noch falsch?

> ¹) Mit ATMEL32 meinst du doch einen ATmega32 oder einen AVR32?
Ja.

Generell schon mal ein Dankeschön an die helfenden :)

von Yalu X. (yalu) (Moderator)


Lesenswert?

Du kannst die Signale schrittweise mit dem Multimeter verfolgen. Wenn du
die beiden Eingangssignale (A und B) auf high und "BUS In" auf low
legst, sollten die Pegel an den einzelnen Pins der ICs wie folgt
aussehen:
1
IC       Pin       Pegel
2
————————————————————————
3
74LS86    1          H     A
4
          2          L     BUS In
5
          3          H
6
          4          H     B
7
8
74LS09    1          H
9
          2          H
10
          3          H
11
12
74LS32    1          H
13
          3          H     CARRY Out
14
————————————————————————

Bei dir ist "CARRY Out" in diesem Fall low, obwohl es high sein sollte.
Welche anderen der Pins in der Tabelle haben ebenfalls einen falschen
Pegel? Damit kannst du den Fehler einkreisen.

von faustian (Gast)


Lesenswert?

"1)Mir wurde gesagt, dass diese Bauteile keinen Spannung als logische
Eins betrachten und Spannung (hier >4,5V) als Null, ähnlich dem 
ATMEL32."

Eingang auf 0V/Masse = "Keine Spannung" = 0
Eingang offen = "Miss mal nach und wunder dich" = 1

von Marvin G. (marvg)


Lesenswert?

ich habe jetzt, wie Yalu X es vorgeschlagen hat alle Pins mal 
durchgemessen und bin zu folgendem Ergebnis gekommen:

IC       Pin       Pegel
————————————————————————
74LS86    1          H     A
          2          L     BUS In
          3          L     ←!!!
          4          H     B

74LS09    1          H
          2          H
          3          H

74LS32    1          H
          3          H     CARRY Out

Pin 3 an dem XOR Baustein liefert also den falschen Wert; vermutlich 
haben wir mal das Gatter geröstet (Transistorasche auf mein Haupt).

EDIT:
Ich habe nochmal nachgemessen und bemerkt, dass sich die ICs doch 
invertiert verhalten:

XOR|0  1
0  |1  0
1  |0  1

AND|0  1
0  |1  1
1  |1  0

 OR|0  1
0  |1  0
1  |0  0

Was sagt das jetzt über meine Schaltung? Addieren tut sie nicht 
invertiert und Carry Out verhält sich immer noch merkwürdig.

von bko (Gast)


Lesenswert?

Der Baustein 74LS09 ist laut TI-Datenblatt ein
UND-Gatter mit einem "Open Collector" Ausgang.
Das heißt: der Ausgang dieses IC's kann nur nach '0' (also 0 Volt)
ziehen, um den Ausgang des 74LS09 auf '1' (also 5Volt)
zu bekommen muss noch ein "pullup" Widerstand (~10 KOhm)
eingebaut werden.
Oder du nimmst den 74LS08, der hat auch 4 UND-Gatter und ist
pinkompatibel zum 74LS09.

von Yalu X. (yalu) (Moderator)


Lesenswert?

@Marvin Guel:

Bist du sicher, dass du nicht Müll gemessen hast?

Im Beitrag #1662622 schriebst du:

> A=1 B=1 → Carry low

Wenn du richtig gemessen hast, wäre im Aufbau oder einem der Bauteile
ein Fehler. Das Carry sollte in diesem Fall natürlich high sein.

Im Beitrag #1668082 schriebst du aber:

> 74LS86    1          H     A
>           :          :
>           4          H     B
>           :          :
>           3          H     CARRY Out

Das Carry ist also high, wenn es auch A und B sind. Damit stimmt doch
alles, wo ist das Problem?


Du schriebst im Beitrag #1668082 weiterhin:

> 74LS86    :          :
>           3          L     ←!!!
>           :          :
> 74LS09    1          H

In deinem Foto erkennt man, dass Pin 3 des 74LS86 mit Pin 1 des 74LS09
verbunden sind (weiße Leitung). Wenn man davon ausgeht, dass die Leitung
und das Steckbrett in Ordnung sind, kann also die Messung nicht stimmen.

Diese

> 74LS09    1          H
>           2          H
>           3          H

und diese

> AND|0  1
> 0  |1  1
> 1  |1  0

Messung passen ebenfalls nicht zusammen.

Der Einwand von bko mit dem OC-Ausgang und dem dafür benötigten
Pullup-Widerstand ist richtig. Die Schaltung sollte aber auch ohne
Pullup-Widerstand funktionieren, da der Ausgang des Und-Gatters an einen
LS-Eingang (vom Oder-Gatter) angeschlossen ist, der hochohmigen Zustand
des Und-Gatterausgangs wie gewünscht als high interpretiert. Lediglich
die Störsicherheit leidet unter dem Weglassen des Widerstands.

von Marvin G. (marvg)


Lesenswert?

>Bist du sicher, dass du nicht Müll gemessen hast?
Nein. Ich habe ein Anschluss des Messgeräts an 0V angelegt und mit dem 
anderen die Pins berührt. Ist das richtig?

>Das Carry ist also high, wenn es auch A und B sind. Damit stimmt doch
>alles, wo ist das Problem?
Hier habe ich schlampig kopiert, wenn A und B high sind, dann ist Carry 
low. Die korrigierte Tabelle lautet wie folgt:

IC       Pin       Pegel
————————————————————————
74LS86    1          H     A
          2          L     BUS In
          3          L     ←!!!
          4          H     B

74LS09    1          H
          2          H
          3          H

74LS32    1          H
          3          L     CARRY Out

>Lediglich die Störsicherheit leidet unter dem Weglassen des Widerstands.
Störsicher muss die Schaltung nicht sein, es handelt sich nur um ein 
Schulprojekt, das demonstriert wird.

von Marvin G. (marvg)


Angehängte Dateien:

Lesenswert?

Anmerkung (Editieren ging nicht mehr): Ich habe gerade nochmal gemessen, 
im angehängten Bild könnt Ihr sehen, was bei rauskam. Ich nehme mal 
stark an dass ich, wie oben vermutet wirklich falsch messe. Wie soll ich 
verfahren? Bisher habe ich stets ein Messgeräteingang an 0V gehängt und 
mit dem anderen den Pin berührt.

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.