www.mikrocontroller.net

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


Autor: Marvin Guel (marvg)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: max power (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Yalu X. (yalu) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Yalu X. (yalu) (Moderator)
Datum:
Angehängte Dateien:

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

Autor: Marvin Guel (marvg)
Datum:

Bewertung
0 lesenswert
nicht 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 :)

Autor: Yalu X. (yalu) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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:
IC       Pin       Pegel
————————————————————————
74LS86    1          H     A
          2          L     BUS In
          3          H
          4          H     B

74LS09    1          H
          2          H
          3          H

74LS32    1          H
          3          H     CARRY Out
————————————————————————

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.

Autor: faustian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Marvin Guel (marvg)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: bko (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Yalu X. (yalu) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Marvin Guel (marvg)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Marvin Guel (marvg)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.