{"id":311,"date":"2025-10-03T19:08:08","date_gmt":"2025-10-03T19:08:08","guid":{"rendered":"http:\/\/techblog.auchmonoabspielbar.de\/?p=311"},"modified":"2025-10-03T19:16:35","modified_gmt":"2025-10-03T19:16:35","slug":"4-bit-prozessor-teil-3-hardwaresimulation","status":"publish","type":"post","link":"http:\/\/techblog.auchmonoabspielbar.de\/?p=311","title":{"rendered":"4 Bit Prozessor, Teil 3 &#8211; Hardwaresimulation"},"content":{"rendered":"\n<p>Es wird immer noch kein L\u00f6tkolben heraus geholt. Ich beginne damit, einzelne Teile zu simulieren. Da ich nur wenig Erfahrung mit dem Entwurf digitaler Schaltungen habe, ist nicht klar, ob die Teile auch so funktionieren wie sie sollen. Fehlersuche und Korrektur sind in der Simulation wesentlich einfacher als bei der echten Hardware. Und wenn sich eine Vorgehensweise als nicht realisierbar herausstellt, hat man weniger Verluste.<\/p>\n\n\n\n<p>Als erste \u00dcbung &#8211; insbesondere zur Einarbeitung in das Simulationsprogramm &#8211; habe ich mit der Addition\/ Subtraktion angefangen. Es gibt zwar eine komplette ALU als TTL Baustein, die ist aber nur schwer zu bekommen und deckt nur 90% meines Bedarfs ab. Deshalb habe ich mich entschlossen die ALU komplett selber aufzubauen. <\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p>Die 4 Bit Addition ist einfach, es gibt hierzu mit dem 74LS83 einen fertigen Baustein. Und mit geringen Zusatzaufwand kann man daraus auch eine Subtraktion machen. Hierzu muss man nur das zweite Eingabewort negieren (nicht einfach invertieren). Invertieren ist einfach mit XOR Gattern zu erreichen. Zum negieren muss aber dann noch eins abgezogen werden. Das geht aber auch \u00fcberraschend einfach indem man das carry in ebenfalls invertiert (in diesem Rahmen auch als borrow zu bezeichnen). Zudem muss bei der Subtraktion dann auch noch das carry out invertiert werden.<\/p>\n\n\n\n<p><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1081\" height=\"978\" src=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2025\/10\/Bildschirmfoto-vom-2025-10-03-21-14-28.png\" alt=\"\" class=\"wp-image-319\" srcset=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2025\/10\/Bildschirmfoto-vom-2025-10-03-21-14-28.png 1081w, http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2025\/10\/Bildschirmfoto-vom-2025-10-03-21-14-28-300x271.png 300w, http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2025\/10\/Bildschirmfoto-vom-2025-10-03-21-14-28-768x695.png 768w, http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2025\/10\/Bildschirmfoto-vom-2025-10-03-21-14-28-624x565.png 624w\" sizes=\"auto, (max-width: 1081px) 100vw, 1081px\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2025\/10\/Bildschirmaufzeichnung-vom-2025-10-03-20-44-04.mp4\"><\/video><\/figure>\n\n\n\n<p>Das scheint soweit zu funktionieren. Bei der Addition wird die Summe bei aktiven carry in um eins erh\u00f6ht und bei einer Summer gr\u00f6\u00dfer als 15 (F Hexadezimal) wird das carry out aktiv. Bei der Subtraktion wird die Differenz bei einem carry in (oder borrow) um eins erniedrigt und sobald der Wert negativ wird, wird carry out aktiv. Die weiteren Funktionen der ALU werde ich in der kommenden Woche simulieren, diese sind jedoch noch einfacher und sollten keine Probleme verursachen.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p>Mein zweiter Test nimmt das vier Arbeitsregister ins Visier. Sie ben\u00f6tigen einen input port zusammen mit einer zwei Bit Adresse zur Auswahl des Registers welches beschrieben werden soll und einen output port ebenfalls mit einer zwei Bit Adresse zur Auswahl des Ausgabewerts. Hier setze ich auf ein 74LS173 &#8211; ein 4 Bit flankengesteuertes Latch. Zur Unterst\u00fctzung der Simulation habe ich noch einen 4 Bit counter zur Erzeugung des Eingabewerts sowie zwei 2 Bit counter zur Auswahl des Schreib- und des Leseports eingef\u00fcgt.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1461\" height=\"1232\" src=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2025\/10\/Bildschirmfoto-vom-2025-10-03-21-09-18.png\" alt=\"\" class=\"wp-image-318\" srcset=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2025\/10\/Bildschirmfoto-vom-2025-10-03-21-09-18.png 1461w, http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2025\/10\/Bildschirmfoto-vom-2025-10-03-21-09-18-300x253.png 300w, http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2025\/10\/Bildschirmfoto-vom-2025-10-03-21-09-18-768x648.png 768w, http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2025\/10\/Bildschirmfoto-vom-2025-10-03-21-09-18-624x526.png 624w\" sizes=\"auto, (max-width: 1461px) 100vw, 1461px\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p>Zum Lesen wird die Adresse des Registers \u00fcber SelOut angelegt und die Leitung OutEna(ble) aktiviert. Im inaktiven Zustand sind alle Ausg\u00e4nge der vier Register hochohmig. Erst mit der Aktivierung wird \u00fcber einen 2 nach 4 Demultiplexer das gew\u00e4hlte Register freigeschaltet und gibt seinen Inhalt aus.<\/p>\n\n\n\n<p>Das Schreiben funktioniert \u00e4hnlich. Es wird die Schreibadresse \u00fcber SelIn angelegt und die Leitung InLatch aktiviert. Mit der steigenden Flanke wird dann der aktuelle Wert von DataIn in das gew\u00e4hlte Register \u00fcbernommen. Alle anderen Register bleiben unver\u00e4ndert. Leider wird bei der Bildschirmaufzeichnung die Mausbewegung nicht mit gespeichert, deshalb kann man nur schlecht verfolgen, was passiert. Es wird zuerst eine 1 in das Register 0, 2 in Register 1, 3 in Register 2 und 4 in Register 3 geschrieben. Danach werden die Inhalte der Register 0 bis 3 nacheinander angezeigt.<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2025\/10\/Bildschirmaufzeichnung-vom-2025-10-03-21-00-45.mp4\"><\/video><\/figure>\n\n\n\n<p>Als n\u00e4chstes m\u00fcssen die Ausg\u00e4nge des Registerblocks und des Akkumulators auf die ALU geschaltet werden sowie das Ergebnis der ALU Operation wiederum in den Registerblock eingespeichert werden. Das wird die Aufgabe f\u00fcr die n\u00e4chsten Tage werden.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Es wird immer noch kein L\u00f6tkolben heraus geholt. Ich beginne damit, einzelne Teile zu simulieren. Da ich nur wenig Erfahrung mit dem Entwurf digitaler Schaltungen habe, ist nicht klar, ob die Teile auch so funktionieren wie sie sollen. Fehlersuche und Korrektur sind in der Simulation wesentlich einfacher als bei der echten Hardware. Und wenn sich [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,2],"tags":[],"class_list":["post-311","post","type-post","status-publish","format-standard","hentry","category-hardware","category-software"],"_links":{"self":[{"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=\/wp\/v2\/posts\/311","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=311"}],"version-history":[{"count":5,"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=\/wp\/v2\/posts\/311\/revisions"}],"predecessor-version":[{"id":320,"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=\/wp\/v2\/posts\/311\/revisions\/320"}],"wp:attachment":[{"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=311"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=311"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=311"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}