Zeigen Sie zweistellige Zahlen auf 2 Sieben-Segment-Anzeigen an

Ich mache eine Arithmetic Logic Unit (ALU) für eine Aufgabe und bin auf einem Punkt. Gemäß meinem Schaltungsdesign auf dem unten geteilten Link kann ich also 1 Ziffer meiner Alu ausgeben. Es ist eine 4-Bit-ALU, daher kann die maximale Ausgabe das Ergebnis einer Addition sein, dh 9 + 9 = 18. Hier liegt mein Problem.

Die korrekte Ausgabe wird bis 9 auf der 7-Segment-Anzeige angezeigt. Danach wird zufälliges Kauderwelsch angezeigt. Ich habe LEDs hinzugefügt, um die binäre Ausgabe zu sehen, um zu überprüfen, ob die richtige Ausgabe in meiner Simulation empfangen wird. Da es nur 4 Bits gibt, geht die Ausgabe auf LEDs auch maximal auf 1111 (für Ausgabe 15 in Dezimal). Danach wird es auf 0000 für 16 zurückgesetzt und beginnt von vorne.

Kann mir bitte jemand den richtigen Ansatz zeigen? Wie kann ich 2 7-Segment-Anzeigen dazu bringen, meine korrekte Ausgabe in Dezimalzahlen anzuzeigen? Bis die Ausgabe kleiner als 9 ist, zeigt das erste 7-Segment Null an, aber sobald die Ausgabe auf 10 geht, zeigt das erste 7-Segment eine 1 an.

Hilfe wird sehr geschätzt.

Beitrag auf imgur.com anzeigen

Einfacher zu verwenden ist ein LED-Treiber, der eine Hex-Ziffer anzeigen kann. Andernfalls müssen Sie eine Umrechnung in Dezimalzahlen vornehmen.
Ich habe eine Idee, dass ich einen BCD-zu-7-Segment-Decoder verwenden muss. Ich benutze das bereits, um die eine Ziffer anzuzeigen. Wie kann ich es erweitern, um es auf 2 separaten Displays anzuzeigen?
Ich bin mir auch nicht sicher, ob wir Hex-Ziffern verwenden dürfen. Wäre besser, wenn ich eine Lösung finde, um von Binär in Dezimal umzuwandeln.
Sie können C oder eine Assembly schreiben, die einzelne Bits der Siebensegmentanzeigen ein- und ausschaltet. Die Eingabe für die Funktion kann die Zahl sein, und der Code setzt die Bits für die Anzeigen.
Wenn Sie alles dezimal machen, sollten Sie die Logik Ihres Addierers ändern, um bei 10 zu tragen und die richtige Ziffernausgabe zu erzeugen.
@stark kannst du genauer werden? Wie mache ich das?
@Programmer400 Ich kann dafür keinen Code verwenden. Dafür wird wahrscheinlich ein Mikrocontroller benötigt. Ich muss eine Lösung durch die verfügbaren Komponenten finden, dh BCDs, Decoder, Muxs, Addierer und einige andere einfache ICs
Die niedrigste Ziffer ist in Ordnung, so dass Sie eine Tabelle mit 3 + 3 hohen Bits und 3 + Übertragsausgängen haben. Es wird einige Arbeit erfordern, die Logik zu reduzieren, da Sie xor-Gatter verwenden möchten, aber im Grunde werden Sie Bits umdrehen, je nachdem, ob die Summe > 10 ist.
Das Gute ist, dass Sie keine Werte haben, die es einfacher machen, sie zu reduzieren.
Schauen Sie sich den Shift-Add-Three-Algorithmus an.
Ich bin verwirrt ... Möchten Sie, dass die Ausgangsziffern die Summe der binären Eingänge zum Addierer anzeigen und bei Dezimal 10 stoppen, oder möchten Sie, dass die Anzeige bis 30 reicht? Oder 31, wenn CARRY IN heiß ist?
@SpehroPefhany Es besteht keine Notwendigkeit für eine Zustandsmaschine. Dies könnte mit einer Nachschlagetabelle in einem EEPROM erfolgen. Es auf Gate-Ebene zu reduzieren, scheint jedoch ein Forschungsprojekt zu sein.
Ich habe eine Antwort auf meine Lösung zum Anzeigen von Summe und Subtraktion mit Binärdaten als Eingabe und anzeigbaren Ziffern als Ausgaben gepostet.

Antworten (1)

Diese Schaltung könnte einfacher sein, aber sie erreicht, was Sie wollen, ohne Ihre ursprüngliche Schaltung zu modifizieren.

Komplexe Schaltung

http://imgur.com/XwqYME4 ist der Link zum Foto, damit Sie für bessere Details hineinzoomen können.

Gehe ich richtig in der Annahme, dass Sie hinzugefügt haben X 10 Und X 10 -Logik zur Schaltung?
Entschuldigung, aber leider habe ich die Notation zum Schreiben von Logik mit Text nicht gelernt. Wenn Sie mir einen Link schicken, könnte ich es schnell lernen.