UDB. Was ist das Teil 4. Datenpfad ALU



Wie beim letzten Mal versprochen, beginnen wir mit einer detaillierten Analyse der Arithmetik- und Logikeinheit (ALU).

Der allgemeine Inhalt des Zyklus „UDB. Was ist das? "
Teil 1. Einführung. Pld.
Teil 2. Datenpfad.
Teil 3. Datenpfad-FIFO.
Teil 4. Datenpfad ALU. (Aktueller Artikel)
Teil 5. Datenpfad. Nützliche Kleinigkeiten.
Teil 6. Management- und Statusmodul.
Teil 7. Steuermodul für Timing und Reset
Teil 8. Adressierung von UDB

21.3.2.4 Datenpfad-ALU


Der ALU-Kern besteht aus drei unabhängigen programmierbaren 8-Bit-Funktionen: einem Arithmetik- / Logikblock, einem Schieberegisterblock und einem Maskenüberlagerungsblock.

Arithmetische und logische Operationen


Die mithilfe des Konfigurations-RAM dynamisch ausgewählten ALU-Funktionen sind in der folgenden Tabelle aufgeführt.

Tabelle 21-8. ALU-Funktionen
Func [2: 0]FunktionBedienung
000Passsrca
001INC++ srca
010Dez.--srca
011HINZUFÜGENsrca + srcb
100SUBsrca - srcb
101Xorsrca ^ srcb
110UNDsrca & srcb
111ODERsrca | srcb

Tragen Sie in


Carry-In wird in arithmetischen Operationen verwendet. Wie in Tabelle 21-9 gezeigt, gibt es für bestimmte Funktionen Standard-Übertragswerte.

Tabelle 21-9. Funktionen übertragen.
FunktionenBedienungStandard Carry In Implementierung
INC++ srcasrca + 00h + ci, wobei ci 1 ist
Dez.--srcasrca + ffh + ci, wobei ci 0 ist
HINZUFÜGENsrca + srcbsrca + srcb + ci, wobei ci 0 ist
SUBsrca - srcbsrca + ~ srcb + ci, wobei ci 1 ist

Zusätzlich zu diesen regulären arithmetischen Anwendungen gibt es drei weitere Optionen für die Verwendung der Silbentrennung. Die CI SELA- und CI SELB-Bits legen die Regeln für die Verwendung der Übertragseingabe für jede Messung fest. Der RAM für die dynamische Konfiguration wählt bei jedem Zyklus die Konfiguration A oder B aus. Die Parameter sind in Tabelle 21-10 aufgeführt.

Tabelle 21-10. Zusätzliche Funktionen Carry In.
CI SEL A.
CI SEL B.
Modus
tragen
Beschreibung
00Default
(Standard)
Standardmäßig arithmetischer Modus,
beschrieben in Tabelle 21-9.
01Schnappt
(Registriert)
Tragen Sie Flagge, die ist
Ergebnis der Übertragung aus dem vorherigen Zyklus.
Dieser Modus wird zum Implementieren verwendet
Operationen übertragen und subtrahieren
mit Beruf.
10Probros
(Weitergeleitet)
Die Übertragung wird an anderer Stelle generiert.
und an diesen Eingang weitergeleitet. Dieser Modus
kann verwendet werden, um zu implementieren
verwaltete Zähler.
11Verkettung
(Verkettet)
Die Übertragung wird danach in die Kette gelegt
vorheriger Datenpfad. Dieser Modus kann
Verwenden Sie diese Option, um einen einzelnen Zyklus zu implementieren
Operationen mit höherer Bitrate,
in denen zwei oder mehr verwendet werden
Datenpfad.

Wenn ein Übertrag verwendet wird, wird er in einer Reihe von Funktionen verwendet, wie in Tabelle 21-11 gezeigt. Bitte beachten Sie, dass für Dekrementierungs- und Einheitensubtraktionsfunktionen der aktive Übertragungspegel niedrig (invers) ist.

Tabelle 21-11. Verfolgte Carry-In-Funktionen.
FunktionPolarität übertragenCarry In ist aktivCarry In ist inaktiv
INCDirekt++ srcasrca
Dez.Invers--srcasrca
HINZUFÜGENDirekt(srca + srcb) +1srca + srcb
SUBInvers(srca - srcb) -1(srca - srcb)

Durchführen


Ausführen - optionaler Datenpfadausgang, der auf der Grundlage eines statisch festgelegten hohen Bits gebildet wird. Der Wert kann über die Kette an die Übertragungseingabe an einen älteren Block übergeben werden. Beachten Sie, dass bei Dekrement- und Subtraktionsfunktionen die Ausführung invertiert ist.

Tabelle 21-12. Eigenschaften Ausführen.
FunktionPolarität ausführenCarry Out ist aktivAusführen ist inaktiv
INCDirekt++ srca == 0srca
Dez.Invers--srca == -1srca
HINZUFÜGENDirektsrca + srcb> 255srca + srcb
SUBInverssrca - srcb <0(srca - srcb)

Transferstruktur


Die Parameter für die Eingabe und Auswahl des höchstwertigen Bits für die Erzeugung der Ausführung sind in Abbildung 21-15 dargestellt. Die zwischengespeicherten Übertragswerte können als Übertrag für nachfolgende arithmetische Operationen verwendet werden. Diese Funktion kann verwendet werden, um Funktionen mit höherer Kapazität mithilfe von Zyklen zu implementieren.



Abbildung 21-15. Übertragungsvorgang.

Schaltbetrieb


Der Schaltvorgang erfolgt unabhängig vom Betrieb der ALU gemäß Tabelle 21-13.

Tabelle 21-13. Funktionen des Schaltvorgangs.
Shift [1: 0]Funktion
00Pass
01Nach links verschieben
10Nach rechts verschieben
11Nibbles tauschen (Nibble Swap)

Der Ausgabewert der Verschiebungsoperation wird mit Datapath ausgegeben. Die Ausgänge zum Verschieben nach rechts ( sor ) und nach links ( sol_msb ) sind mit den gleichen Bits konfiguriert . Das statische Konfigurationsbit (SHIFT SEL im Register CFG15) bestimmt, welcher Shift-Ausgang als Datenpfad-Ausgang verwendet wird. In Abwesenheit einer Verschiebung werden die Signale sor und sol_msb als LSB bzw. MSB der ALU-Funktion definiert.

Die Konfigurationsbits SI SELA und SI SELB bestimmen den Datenversatz für die angegebene Operation. Der dynamische Konfigurations-RAM wählt die Konfiguration A oder B für jeden Taktzyklus aus. Pushed-Daten werden nur beim Verschieben nach links und rechts verwendet. Diese Eingabe wird nicht beim Überspringen und Neuanordnen von Halbbytes verwendet. Die ausgewählten Werte und Anwendungsfälle beziehen sich sowohl auf eine Rechtsverschiebung als auch auf eine Linksverschiebung und sind in Tabelle 21-14 aufgeführt.

Tabelle 21-14. Funktionsverschiebung
SI SEL A.
SI SEL B.
Quelle
geschoben
Daten
Beschreibung
00Standard / Arithmetik
(Standard / Arithmetik)
Standardmäßig der Wert des DEFSI-Bits
(Konstante 1 oder 0). Wenn der MSB SI jedoch gespannt ist,
dann ist die Quelle der Wert des ausgewählten
höherwertiges Bit ALU (nur für Rechtsverschiebungen).
01Schnappen
(Registriert)
Der Eingabewert für die Verschiebung wird eingestellt
aktuell zwischengespeicherter Ausgangswert
Scherung (aus dem vorherigen Zyklus). Bedienung
Linksverschiebung verwendet den letzten Wert
Linksverschiebung. Rechtsschaltbetrieb verwendet
letzte Ausgangsverschiebung nach rechts.
10Probros
(Weitergeleitet)
Die Eingabe für die Schicht kommt an
extern über Trace-Ressourcen (SI-Eingabe).
11Verkettung
(Verkettet)
Für die Eingabe nach links verschieben
wirft vom Ausgang des rechten Blocks
Datenpfad in einer Kette zur Eingabeverschiebung
nach rechts - von links.

Die Ausgabe beim Verschieben nach links wird von dem als hoch angegebenen Bit übernommen. Bei einer Verschiebung nach rechts werden die Eingabedaten von der ausgewählten Senior-Position (MSB) verschoben. Der Ausgang ist selbst beim Verschieben nach links und beim Verschieben nach rechts verriegelt und kann für den nächsten Takt verwendet werden. Diese Funktion kann verwendet werden, um eine Verschiebung größerer Kapazität in mehreren Zyklen zu implementieren.



Abbildung 21-16. Schaltbetrieb.

Es ist anzumerken, dass die durch Auswahl von MSB isolierten Bits immer noch verschoben sind. In dem gezeigten Beispiel wird Bit 7 immer noch zu sil verschoben, wenn es nach rechts verschoben wird, und Bit 5 wird zu Bit 4 verschoben, wenn es nach links verschoben wird. Das Ausgangsbit (rechts oder links) einer isolierten Gruppe geht verloren.

ALU-Masken-Overlay-Operation


Das 8-Bit-Maskenregister im statischen Raum der UDB-Konfigurationsregister definiert die Maskierungsoperation. Bei dieser Operation wird dem ALU-Ausgang eine Maske (UND-Operation) mit dem Wert dieses Registers überlagert. Eine typische Verwendung der ALU-Maskierungsoperation ist die Implementierung autonomer Zeitgeber und Zähler mit einer Auflösung, die ein Vielfaches einer Zweierpotenz ist.

21.3.2.5. Datenpfadeingänge und Multiplexing


Wie in Tabelle 21-15 gezeigt, verfügt jeder Datenpfad über 9 Eingänge, einschließlich 6 Eingänge aus der Kanalverfolgung. Dazu gehören die Konfigurationsadressen von RAM, FIFO, Steuersignale zum Laden von Datenregistern sowie das Verschieben und Übertragen von Dateneingaben.

Tabelle 24-15. Datenpfadeingaben
LoginBeschreibung
RAD2
RAD1
RAD0
Asynchrone Adresse im dynamischen Konfigurations-RAM. Adressen
acht vom Benutzer programmierbare 16-Bit-Wörter. Jedes Wort
enthält die Datenpfad-Steuerbits für die aktuelle Schleife. Sequenz
Anweisungen können durch diese Adresseneingänge bestimmt werden.
F0ld
F1LD
Wenn in diesem Zyklus gespannt, werden Daten in den ausgewählten FIFO geladen
von der Batterie A0 oder A1 oder dem Ausgang von der ALU. Quelle ausgewählt
mit den Konfigurationsbits Fx INSEL [1: 0]. Dieser Eingang reagiert empfindlich auf Schwankungen.
Es wird bei Datapath abgetastet; bei Übergangserkennung
Von "0" bis "1" erfolgt das Laden an der nächsten Flanke des Taktsignals.
D0ld
D1LD
Wenn in dieser Schleife gespannt, wird das Dx-Register von geladen
die zugehörigen FIFO Fx. Dieser Eingang reagiert empfindlich auf Schwankungen. Es wird abgetastet
Datenpfad beim Erkennen eines Übergangs von "0" zu "1" wird geladen
tritt bei der nächsten Flanke des Taktsignals auf.
SIDies ist ein Dateneingabewert, der zum Verschieben verwendet werden kann
rechts oder links.
CiDieser Übertragswert wird verwendet, wenn das Steuersignal
Übertragung ist gleich "gerouteter Übertrag".

Wie in Abbildung 21-17 dargestellt, verfügt jeder Eingang über einen 6-in-1-Multiplexer. Daher sind alle Eingänge austauschbar. Eingaben werden auf zwei Arten verarbeitet: entweder nach Pegel oder nach Differential. Die Adresse im RAM der dynamischen Konfiguration sowie die Verschiebungs- und Datenwerte sind abhängig vom Pegel. FIFO- und Laderegister-Datensignale reagieren empfindlich auf Unterschiede.



Abbildung 21-17. Datenpfad-Eingangssignale.

Im nächsten Artikel werden wir uns mit einer Überprüfung nützlicher kleiner Dinge befassen.

Source: https://habr.com/ru/post/de437096/


All Articles