Realisierung eines Barrelshifters

Hallo!
Hat jemand eine Idee, wie man einen Barrelshifter für 4 Eingänge und 4 Ausgänge realisieren kann? Es soll auch 2 Steuereingänge geben, die angeben, um wie weit nach links verschoben werden soll. (max. 3 Stellen).
Es soll ein entsprechendes Schaltnetz realisiert werden. Leider hab ich keine konkrete Idee, denke aber, dass es mit Halb-/bzw. Volladdierer irgendwie funktioniert.
Hat jemand eine Idee?

Gruß, Ralf

Hallo Ralf,

ist ein Barrelshifter nicht einfach ein Shift-Register bei dem der Ausgang an den Eingang angeschlossen ist? Bei einem normalen Schieberegister wird ja mit Nullen oder Einsen aufgefüllt. Bei einem Barrelshifter wird doch nur das Bit das hinten rüberfällt wieder reingschoben.

Also 1000 > 1 = 1000
und 0010 >> 2 = 1000
und so weiter.
Mehr als 3 Stellen schieben wäre zwar möglich, aber unsinnig. Bei vier Bit ist ja x

Die ganz allgemeine Methode das anzugehen ist mit einer
Kombinatorik und Wertetabelle. Könnte etwas aufwendig werden
mit 6 Variablen, ist aber noch handhabbar :stuck_out_tongue:

Du kannst es auch banal per Hand für jede Stelle einzeln
machen. Für jedes Stelle „einfach“ einen Multiplexer an den
Eingang hängen, der das passende Ausgangsbit durchleitet.

Gruß,
Ferdinand

Vielen Dank für deine Informationen.

Ok, ich denke, dass es wohl doch mit Multiplexern funktioniert, weil ich nirgendwo im WWW eine Realisierung mit Addierern gefunden habe.
Allerdings ist mir noch nicht ganz klar, wie ein Muliplexer arbeitet. Deshalb fällt mir die Realisierung wohl auch doppelt schwer.

Mit Muliplexern kann ich also ganz bestimmte bits durchschalten. Aber wie kann ich das für meinen Barrelshifter verwenden?
Wenn ich es mit ner Wertetabelle zunächst versuche, gibt es natürlich nen Haufen Belegungen. Zum einen bei 4 „normalen“ Eingängen 2 hoch 4 = 16 verschiedene Belegungen. Kommen noch die 2 Steuereingänge dazu mit insgesamt 2 hoch 2 = 4 Belegungen, macht also insgesamt 20 Belegungen in der Wertetabelle, richtig?

Mit Muliplexern kann ich also ganz bestimmte bits
durchschalten. Aber wie kann ich das für meinen Barrelshifter
verwenden?
Wenn ich es mit ner Wertetabelle zunächst versuche, gibt es
natürlich nen Haufen Belegungen. Zum einen bei 4 „normalen“
Eingängen 2 hoch 4 = 16 verschiedene Belegungen. Kommen noch
die 2 Steuereingänge dazu mit insgesamt 2 hoch 2 = 4
Belegungen, macht also insgesamt 20 Belegungen in der
Wertetabelle, richtig?

Nein, es ist einfacher: du willst ja um eine bestimmte Anzahl bits verschieben, also muss z.B. jeder Multiplexer den Eingang 3 Bits links von ihm durchschalten, m.a.W. die Adresseingänge aller Multiplexer sind immer gleich, im Beispiel = 3 (ein 8bit-Shifter müsste aus Multiplexern bestehen mit je 8 Daten-Eingängen und 3 Eingängen zur Auswahl). Dann lässt sich auch nichts mehr vereinfachen.

Für komplexere Operationen kann es natürlich nötig werden, die Adresseingänge getrennt anzusteuern, z.B. wenn man die oberen und die unteren 4 Bit vertauschen will. Aber das ist eine neue Baustelle.

Gruss reinhard