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
>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
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?
Im Logikplan steckt übrigens noch ein Fehler: Eine der Leitungen ist ist mit keinem, eine andere gleich mit zwei Signalquellen verbunden.
> 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 :)
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.
"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
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.
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.
@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.
>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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.