Wie baut man eine Divisionslogikschaltung? [geschlossen]

Ich verstehe die Division in Binär, aber die Anwendung in einer Schaltung ist verwirrend. Bisher habe ich Addierer/Subtraktions- und Multiplikationsschaltungen gebaut. Ich denke, ich sollte zusätzliche Bits für Radix-Bits haben. einfacher Schaltplan, der mir vielleicht einen Kick über die Divisionslogikschaltung gibt.

Das ist viel zu weit gefasst, schauen Sie sich nur die Optionen an, die Wikipedia zu Divisionsalgorithmen anbietet . Sie können keinen "einfachen" digitalen logischen Ganzzahlteiler implementieren.
Die Division erfolgt normalerweise durch eine Reihe von Multiplikationen, wobei jedes Ausgangsbit sequentiell ausgewählt wird.
Sie sollten eine sehr kleine CPLD verwenden, um Ihre Division durchzuführen. Altera und Xilinx geben die dafür erforderlichen Primitiven an.

Antworten (1)

Einzelne Teilreste müssen aus zuvor berechneten Teilresten in der Kette abgeleitet werden. Es ist also komplizierter.

Das soll sozusagen nur einen Kick geben. Ich habe es nicht gut gecheckt. Aber ich denke, es geht um einen Ansatz. Es ist jedoch kombinatorisch. Ich bin mir nicht sicher, ob du das willst.

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Das Obige ist ein 8-Bit-Dividenden (A) und ein 4-Bit-Divisor (B). (Nun, wenn ich es beim Schreiben nicht vermasselt habe, was ich vielleicht habe.) Es finden Spurwechsel statt. Wenn Sie sich einen Mux-Ausgang ansehen, werden Sie sehen, dass das höherwertige Bit des Ausgangs einfach weggelassen wird und die niederwertigen 3 Bits auf die oberen drei eines neuen Busses geändert werden, wo sein LSB vom nächsten Bit von A kommt (Div.) Der A-seitige Eingang des nächsten Addierers ist dann eine Zusammensetzung, wie beschrieben. Außerdem ist der obere "Mux" nicht wirklich ein Mux. Ich habe stattdessen dieses Symbol für einen Komparator verwendet. Es wird getestet A [ 7 : 4 ] B [ 3 : 0 ] , denn wenn dieser Teil von A größer oder gleich ist, dann erfordert die Division einen Quotienten größer als 4 Bits. Hoffentlich ist das klarer.

Der Ausgang Ihrer 2: 1-Muxs befindet sich auf derselben Leitung wie die Eingänge A. Dies ist möglicherweise akzeptabel, vorausgesetzt, Sie könnten die A-Eingänge abschneiden, dies ist jedoch in Ihrem Schema nicht möglich. Der Ausgang des 2:1-Mux steht also in ständigem Wettbewerb mit den A-Eingängen. Oder gehen diese Zeilen in 4:0 über? Ich meine das A[1], das sich mit [3:0]->[4:1] verbindet
@jbord39: Da gibt es Spurwechsel. Siehst du sie nicht? Ich muss das vielleicht in etwas kleineres umwandeln!
@ jbord39: Hoffentlich ist das klarer. Auch über die Details muss ich vielleicht noch nachdenken. Aber die Grundidee ist, B zu negieren (weshalb der Carry-In immer auf '1' gesetzt ist) und jede Stufe wie gezeigt auszuführen.
Ein ziemlich interpretatives Schema. Vielleicht möchten Sie die Knoten vor und nach jedem Spurwechsel beschriften. Zum Beispiel der Bereich, der Q[2] produziert (das ist das CO des vorherigen Adder[3], wenn ich es richtig verstehe). Das CO von previousAdder[2:0] wird als Auswahl für 2to1Mux[2:0] verwendet. Vielleicht würde sogar nur die Anzahl der parallelen Tore, die durch jedes Symbol dargestellt werden, es viel klarer machen.
@jbord39: Ich wünschte, ich wüsste auch, wie man mit diesem Editor dickere Buslinien erstellt. Dann könnte eine dünne Linie als einzelnes Bit gesehen werden. Nicht sicher. Ich werde sehen, ob ich das Diagramm verbessern kann. Lassen Sie mich einen Moment nachdenken.
@ jbord39: Nun, ich habe es noch einmal versucht. Es wird langweilig, es viel besser zu machen. Hoffentlich bringt das die Dinge rüber (und/oder macht Fehler, die ich gemacht habe, klarer.)