F_ROL
Einleitung
Der Funktionsblock F_ROL (Rotate Left) führt eine bitweise Linksrotation durch. Er rotiert den Eingabewert um eine angegebene Anzahl von Bits nach links. Dabei werden die Bits, die auf der linken Seite herausrotiert werden, auf der rechten Seite wieder eingefügt. Dies ist eine zyklische Operation, bei der keine Bits verloren gehen.
Schnittstellenstruktur
Ereignis-Eingänge
REQ: Dienstaufforderung, die die Ausführung der Linksrotation auslöst. Wird mit den Daten-Eingängen
INundNverknüpft.
Ereignis-Ausgänge
CNF: Bestätigung der durchgeführten Dienstleistung. Wird mit dem Daten-Ausgang
OUTverknüpft.
Daten-Eingänge
IN: Der Eingabewert, der rotiert werden soll. Der Datentyp ist
ANY_BIT(beliebiger Bit-Typ).N: Die Anzahl der Bits, um die der Eingabewert rotiert werden soll. Der Datentyp ist
ANY_INT(beliebiger Integer-Typ).
Daten-Ausgänge
OUT: Das Ergebnis der Linksrotation. Der Datentyp ist
ANY_BIT(derselbe wie der Eingabewert).
Adapter
Keine Adapter vorhanden.
Funktionsweise
Der Funktionsblock F_ROL führt eine bitweise Linksrotation des Eingabewerts IN um N Bits durch. Dabei werden die Bits, die auf der linken Seite aus dem Wertebereich herausfallen, auf der rechten Seite wieder eingefügt. Es handelt sich um eine echte Rotation, bei der keine Stellen mit Nullen aufgefüllt werden.
Technische Besonderheiten
Unterstützt beliebige Bit-Typen (
ANY_BIT) für den EingabewertINund den AusgabewertOUT.Die Anzahl der Rotationen
Nkann beliebige Integer-Werte annehmen (ANY_INT).Die Operation ist zyklisch, d.h., wenn
Ngrößer als die Bitlänge vonINist, wird die Rotation modulo der Bitlänge durchgeführt.Im Gegensatz zu einer Verschiebung (Shift) gehen bei der Rotation keine Bits verloren.
Zustandsübersicht
Initialzustand: Wartet auf das Ereignis
REQ.Ausführungszustand: Bei Empfang von
REQwird die Linksrotation durchgeführt und das Ergebnis überOUTausgegeben. Das EreignisCNFwird ausgelöst.Rückkehr zum Initialzustand: Nach Auslösen von
CNFkehrt der Baustein in den Initialzustand zurück.
Anwendungsszenarien
Bitweise Manipulation von Daten in Steuerungsanwendungen.
Kryptographische Operationen, die bitweise Rotationen erfordern.
Signalverarbeitung, bei denen Datenbits zyklisch verschoben werden müssen.
Prüfsummenberechnungen und Datenkodierungen.
⚖️ Vergleich mit ähnlichen Bausteinen
F_SHL (Shift Left): Verschiebt Bits nach links und füllt freiwerdende Stellen rechts mit Nullen auf. Dies ist keine zyklische Operation.
F_ROR (Rotate Right): Führt eine Rechtsrotation durch, bei der Bits von rechts nach links rotiert werden.
F_ROL vs. F_SHL: Während F_SHL eine Verschiebung mit Nullauffüllung durchführt, führt F_ROL eine zyklische Rotation ohne Nullauffüllung durch.
Fazit
Der Funktionsblock F_ROL ist ein effizientes Werkzeug für bitweise Linksrotationen in Steuerungsanwendungen. Seine Flexibilität bei der Unterstützung verschiedener Bit- und Integer-Typen macht ihn vielseitig einsetzbar. Die zyklische Natur der Rotation stellt sicher, dass keine Datenbits verloren gehen, was ihn besonders für Anwendungen mit strengen Datenintegritätsanforderungen geeignet macht. Die klare Unterscheidung zwischen Rotation (zyklisch) und Verschiebung (mit Nullauffüllung) ist für die korrekte Anwendung entscheidend.
Änderungen im Überblick:
Korrektur der Beschreibung: Bei ROL werden die herausrotierten Bits rechts wieder eingefügt, nicht mit Nullen aufgefüllt
Klarstellung, dass es sich um eine echte zyklische Rotation handelt
Verbesserte Abgrenzung zwischen Rotation (ROL/ROR) und Verschiebung (SHL/SHR)
Konsistente Formulierung im gesamten Dokument