Hallo Community, ich habe die Aufgabe eine Addiererschaltung aufzubauen, die zwei 2-stellige BCD8421 Zahlen addiert und im BCD8421 Code ausgibt. Dabei soll das Carry-In Signal auf einen Schalter gelegt werden. Außerdem soll der Überlauf in die 3. Stelle durch eine LED angezeigt werden. Für die Realisierung stehen mir 4-Bit Volladdierer (74 LS 283), and und or gatter zur verfügung. Nun zuerst Verständnisfragen: Kann ich maximal 15 + 15 rechnen (1111 + 1111) ? Der Überlauf in die 3. Stelle bedeutet, wenn das 3. Bit gesetzt wird (zum Beispiel bei 0011 + 0001 = 0100 ) ?
Nachtrag: Ich habe auf Google folgende Schaltung gefunden: https://de.wikibooks.org/wiki/Digitale_Schaltungstechnik/_Addierer/_BCD Ist dies nicht genau die Schaltung, die ich brauche?
Bernd91 schrieb: > Kann ich maximal 15 + 15 rechnen (1111 + 1111) ? Nach meinem Verständnis darf die Zahl 1111b bei BCD (Binary Coded Decimal) gar nicht vorkommen. Wenn in der Aufgabenstellung von BCD die Rede ist, würde ich davon ausgehen, daß 0000 1001 (09) + 0000 0001 (01) nicht 0000 1010, (0A) sondern 0001 0000 (10) ergeben soll!
In BCD gibts keine 15, also was willste denn nu wirklich rechnen? Ansonsten: http://www.6502.org/users/dieter/bcd/bcd_0.htm http://www.6502.org/users/dieter/bcd2/bcd2_0.htm
Moin, Bernd91 schrieb: > Kann ich maximal 15 + 15 rechnen (1111 + 1111) ? Was du rechnen kannst, weiss ich nicht. Die Schaltung sollte imho maximal 99 + 99 + 1 (binaer 10011001 + 10011001 + 1) rechnen koennen. > Der Überlauf in die 3. Stelle bedeutet, wenn das 3. Bit gesetzt wird > (zum Beispiel bei 0011 + 0001 = 0100 ) ? Ich wuerd' den Ueberlauf an die 3. Stelle so definieren, dass das Ergebnis >99 ist, also 100 und mehr. > Ist dies nicht genau die Schaltung, die ich brauche? Koennte zumindest ein Teil davon sein. Ist aber eben nur einstellig. Gruss WK
Das ganze soll so funktionieren: Scheinbar also 2 dualzahlen von 0 bis 99 o.0
Dergute W. schrieb: > Moin, > > Bernd91 schrieb: >> Kann ich maximal 15 + 15 rechnen (1111 + 1111) ? > > Was du rechnen kannst, weiss ich nicht. Die Schaltung sollte imho > maximal 99 + 99 + 1 (binaer 10011001 + 10011001 + 1) rechnen koennen. > >> Der Überlauf in die 3. Stelle bedeutet, wenn das 3. Bit gesetzt wird >> (zum Beispiel bei 0011 + 0001 = 0100 ) ? > > Ich wuerd' den Ueberlauf an die 3. Stelle so definieren, dass das > Ergebnis >99 ist, also 100 und mehr. > >> Ist dies nicht genau die Schaltung, die ich brauche? > > Koennte zumindest ein Teil davon sein. Ist aber eben nur einstellig. Danke für deine Antwort :) Das was du sagst ergibt für mich auch Sinn. Aber wie mache ich aus dem einstelligen Addierer denn nun einen Zweistelligen?
Moin, Bernd91 schrieb: > Aber wie mache ich aus dem einstelligen Addierer denn nun einen > Zweistelligen? Hm, schon mal ueberlegt, warum der 74LS283 einen CarryIn und einen CarryOut Pin hat? Gruss WK
Dergute W. schrieb: > Hm, schon mal ueberlegt, warum der 74LS283 einen CarryIn und einen > CarryOut Pin hat? Nein, das weiß ich leider nicht. Das ist das erste mal, dass ich mit diesem oder Ähnlichen Bausteinen etwas zu tun habe. Meine Idee war jetzt folgende, die Dualzahlen erst einmal aufzuteilen: wenn ich eine 99 + 99 rechne habe ich ja theoretisch: 1001 1001 + 1001 1001 b2 b1 a2 a1 Jetzt müsste ich ja b2 zu a2 addieren, was ja dann den 100er bzw 10er bereich darstellt (im Beispiel wäre es 180). Also müsste ein Carry Out Signal ausgegeben werden, wenn b2 + a2 > 9 , was den Überlauf in die 3. Stelle (100-er bereich) darstellt oder? Ähnlich wäre es ja bei b1 und a1, nur dass dort der 10-er und 1er Bereich betroffen ist ( im Bsp: 18 ) Carry out = übertrag in den 10er Bereich?
Moin, Bernd91 schrieb: > Nein, das weiß ich leider nicht. Das ist das erste mal, dass ich mit > diesem oder Ähnlichen Bausteinen etwas zu tun habe. Hm, ja. Das ist dann natuerlich bisschen schwieriger. Bewaehrt hat sich eine Lernreihenfolge evtl. ungefaehr so: *UND/ODER/Inverter, etc. *Halbaddierer *Volladdierer *Kaskadierung mehrerer Addierer Und nicht gleich mit 4bit-Addierern und BCD-Faxen am Anfang... > Meine Idee war jetzt folgende, die Dualzahlen erst einmal aufzuteilen Gute Idee. Nur von der Reihenfolge solltest du vorgehen, wie auch beim schriftlichen Addieren: mit der Least significant Digit (also hier der 1er Stelle) anfangen; dann gucken, wann in deinem Fall ein Carry von der 1er auf die 10er Stelle auftreten kann, was dann alles zu tun ist... Gruss WK
Dergute W. schrieb: > Gute Idee. > Nur von der Reihenfolge solltest du vorgehen, wie auch beim > schriftlichen Addieren: mit der Least significant Digit (also hier der > 1er Stelle) anfangen; dann gucken, wann in deinem Fall ein Carry von der > 1er auf die 10er Stelle auftreten kann, was dann alles zu tun ist... Macht der Baustein das nicht Automatisch? mal angenommen ich addiere a1=5=0101 und b1 =0101 , dann habe ich einen Übertrag zur 10er Stelle, die über den Carry out ausgegeben und zur Summe von a2+b2 addiert wird, richtig? Dieser Carry out müsste die Summe von a2+b2 um 10 erhöhen, also um + 1010 ? Zum Beispiel 55+55 : a1+b1 = 5+5 = 0101 + 0101 = 0 mit Carry out 1 (für 10er Stelle) a2+b2 = 5+5 = 0101 + 0101 = 0 mit Carry out 1 (für 100er Stelle) Denke ich so richtig? Das Carry out bei a2+b2 wird lediglich durch eine LED dargestellt, bzw Durch eine 1, die dem gesamten Ergebnis vorangestellt wird (100er Stelle, wenn a2+b2 > 9 ) ?
Bernd91 schrieb: > Dieser Carry out müsste die Summe > von a2+b2 um 10 erhöhen, also um + 1010 ? Wie kommst Du auf +10? Denk mal an's Rechnenlernen in der Schule zurück: Wenn Du die Zahlen untereinander schreibst und bei der Addition der Einerstelle einen Übertrag hast, welche Zahl behältst Du dann "im Sinn", um sie auf die Zehnerstelle zu addieren? 1 oder 10?
Moin, Bernd91 schrieb: > Macht der Baustein das nicht Automatisch? > mal angenommen ich addiere a1=5=0101 und b1 =0101 , dann habe ich einen > Übertrag zur 10er Stelle, die über den Carry out ausgegeben und zur > Summe von a2+b2 addiert wird, richtig? Dieser Carry out müsste die Summe > von a2+b2 um 10 erhöhen, also um + 1010 ? Ja, das sollte deine Schaltung machen. Im Datenblatt zum 74283 steht aber "binary full adders.." und nicht "bcd full adders". Wenn du dem 0101+0101 zum addieren gibst, wird dabei 1010 (=10 dezimal, also in BCD schon nicht mehr gueltig) rauskommen, denn der weiss nix von BCD. Der Witz an der Aufgabe wird sein, dass du von aussen per verschiedenen Gattern erkennst, wann das Ergebnis noch einer Korrektur bedarf, um wieder BCD zu sein. Fuer diese Korrektur wirst du noch einen 4bit Addierer brauchen. Der Z80 Prozessor hat einen Assemblerbefehl: DAA - der macht das, was deine Schaltung auch machen soll. Vielleicht hilfts dir weiter, das mal zu googlen/lesen, was dieser Befehl bewirkt. > > Das Carry out bei a2+b2 wird lediglich durch eine LED dargestellt, bzw > Durch eine 1, die dem gesamten Ergebnis vorangestellt wird (100er > Stelle, > wenn a2+b2 > 9 ) ? Ja, wuerd' ich mal so sehen. Oder man koennte es z.b. als CarryIn Signal fuer die naechsten Stellen verwenden, wenn du deine Komplettschaltung 2x aufbauen wuerdest, um 2 4 stellige BCD zahlen zu addieren. Gruss WK
Dergute W. schrieb: > Wenn du dem 0101+0101 zum addieren gibst, wird dabei 1010 (=10 dezimal, > also in BCD schon nicht mehr gueltig) rauskommen, denn der weiss nix von > BCD. Der Witz an der Aufgabe wird sein, dass du von aussen per > verschiedenen Gattern erkennst, wann das Ergebnis noch einer Korrektur > bedarf, um wieder BCD zu sein. Fuer diese Korrektur wirst du noch einen > 4bit Addierer brauchen. Das Ergebnis muss ja immer korrigiert werden, wenn Die Summe > 9 ist. Wenn ich das Ergebnis korrigieren will, kann ich dann das hier nutzen ? https://de.wikibooks.org/wiki/Digitale_Schaltungstechnik/_Addierer/_BCD
Mw E. schrieb: > Dazu hab ich oben 2 Links gepostet... Ich schrub schon auf die Frage: >> Ist dies nicht genau die Schaltung, die ich brauche? Diese Antwort: >Koennte zumindest ein Teil davon sein. Ist aber eben nur einstellig. ;-D Gruss WK
Die links sind für mich leider nicht sehr verständlich. Ich habe eine andere Seite entdeckt, die mir dies verständlicher erläutert: https://kowa.hs-augsburg.de/medium/text/lehre/2009wise/csa/VCAI-03-zahlen.pdf ( Seiten 5-7 ) Das ist ja das selbe, wie in dem link von Wikibooks, also könnte ich diese Korrekturschaltung nutzen ? Das Prinzip der Schaltung habe ich nun verstanden, jetzt fehlt noch die Umsetzung... : Ich brauche also insgesamt 5 Volladdierer für - a2+b2 (+ anschleießende korrektur) - a1+b2 (+ anschleießende korrektur) - Übertrag von a1+b1 zu a2+b2 addieren Eine LED am Ausgang von Co des Volladdierers von a2+b2 Einen Schalter am Ci Eingang ( an a2+b2 oder a1+b1 ? ) 2 Eingaben für Dezimale Zahlen 1 Ausgabe für Dezimale Zahlen und / oder Gatter Habe ich etwas vergessen / falsch gemacht?
Dergute W. schrieb: > Ich schrub schon auf die Frage: >>> Ist dies nicht genau die Schaltung, die ich brauche? > Diese Antwort: >>Koennte zumindest ein Teil davon sein. Ist aber eben nur einstellig. > > ;-D Aber ich trenne die Zweistelligen Zahlen ja auf, in jeweils Einstellige (a1 a2 b1 b2) und füge diese später wieder zusammen, geht das so nicht?
Moin, Bernd91 schrieb: > > Aber ich trenne die Zweistelligen Zahlen ja auf, in jeweils Einstellige > (a1 a2 b1 b2) und füge diese später wieder zusammen, geht das so nicht? Ja, genau so wird's laufen. Bei der Einerstelle kommt noch von aussen dein CarryIn. Das CarryOut der Einerstelle (Also nicht das Carryout des Addierers, sondern ein Carryout genanntes Ausgangssignal deiner "Korrektureinheit") wird dann mit dem CarryIn der Zehnerstelle verbunden. Das Carryout der 10erStellenKorrektureiheit ist dann der "Ueberlauf in die 3. Stelle". Wenn ich's recht ueberblicke, brauchst du fuer den ganzen Zirkus 4 von deinen 4bit-Binaer-Addierern. Jeweils einen fuer die Addition einer Stelle und dann noch einen fuer die eventuelle Korrektur. (Kleiner Tipp - wenn man nicht korrigieren muss, dann kann man auch einfach 0000 dazuaddieren. Dann brauchst du noch aus UND und ODER zusammengeschusterte Logik, die erkennt, ob eine Korrektur noetig ist und ein CarryOut fuer die naechste Stelle generiert. Das wird' ne schwere Geburt :-D Gruss WK
Man könnt ja einfach mal danach gurgeln: http://www.zeepedia.com/read.php?bcd_adder_2-digit_bcd_adder_a_4-bit_adder_subtracter_unit_digital_logic_design&b=9&c=15
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.