UDB. Was ist das Teil 2. Datenpfad

Ursprünglicher Autor: Cypress
  • Übersetzung


Wir betrachten UDB weiterhin auf der Grundlage der Cypress-Dokumentation. Und diesmal werden wir den Datenpfad, den Operationsautomaten, ausführlich untersuchen.

Vorheriger Artikel:
UDB. Was ist das Teil 1. Einleitung. Pld.

21.3.2 Betriebsmaschine (Datenpfad)


Der in Abbildung 21-6 dargestellte Datenpfad enthält eine 8-Bit-Single-Ended-ALU und den zugehörigen Vergleich und die Generierung von Zustandsflags. Datenpfadblöcke benachbarter UDBs können verkettet werden, um die Bittiefe zu erhöhen. Datapath enthält ein kleines dynamisches Konfigurations-RAM, das die in einer bestimmten Schleife auszuführende Operation dynamisch auswählen kann.

Datapath ist für die Implementierung typischer eingebetteter Funktionen wie z. B. Timer, Zähler, PWMs, PRS, CRC, Schieberegister und Totbandgeneratoren optimiert. Das Hinzufügen von Additions- und Subtraktionsfunktionen bietet Unterstützung für digitale Delta-Sigma-Operationen.


Abbildung 21-6. Datenpfad der obersten Ebene.

21.3.2.1 Übersicht


Die folgenden Kapitel geben einen Überblick über die Hauptfunktionen von Datapath.

Dynamische Konfiguration

Dynamische Konfiguration - Die Fähigkeit, die Arbeit und die internen Verbindungen des Datenpfads in jedem Zyklus unter der Kontrolle des Sequenzers zu ändern. Dies wird mithilfe des Konfigurationsspeichers (Konfigurations-RAM) implementiert, der acht eindeutige Konfigurationen speichert. Die Eingangsadresse dieses Speichers kann von jedem Block, der mit Ablaufverfolgungsressourcen verbunden ist, weitergeleitet werden, normalerweise von PLD-Logik, E / A-Pins oder von anderen Datenpfaden.

ALU

Die ALU kann acht Allzweckfunktionen ausführen: Inkrementieren, Dekrementieren, Hinzufügen, Subtrahieren und Ausführen von logischen AND-, OR-, XOR- und PASS-Operationen. Die Auswahl der Funktionen wird für jeden Zyklus vom Konfigurationsspeicher bestimmt. An der ALU-Ausgabe sind unabhängige Verschiebungsoperationen (links, rechts, Halbbyte-Permutationen) sowie Maskenüberlagerungsoperationen verfügbar.

Bedingte Konstruktionen

Jeder Datenpfad verfügt über zwei Bitmaskierungsvergleicher, die so konfiguriert werden können, dass ein Satz von Datenpfadregistereingaben als Argumente ausgewählt wird. Andere erkennbare Zustände können alle Nullen, alle Einsen und Überlauf sein. Diese Bedingungen bilden die Hauptausgänge des Datenpfads und können auf digitale Trace-Leitungen oder die Eingänge anderer Funktionen gelegt werden.

Embedded CRC / PRS

Datapath bietet integrierte Unterstützung für Einzelzyklus-CRC-Berechnungen und die Erzeugung von Pseudo-Zufallssequenzen (engl. Pseudo Random Sequence, PRS) mit vorgegebenen Ziffern und einem erzeugenden Polynom. Um eine Bittiefe von mehr als 8 Bit zu erreichen, können die Signale zwischen dem Datenpfad verkettet werden. Diese Funktion wird dynamisch gesteuert, dh sie kann sich mit anderen Funktionen abwechseln.

Konfigurierbare High-Bit-

Nummer Die High-Bit- Nummer (das höchstwertige Bit (MSB)) der Rechenfunktion und der Shift-Funktion kann programmgesteuert eingestellt werden. Dies bietet Unterstützung für CRC / PRS-Funktionen mit variabler Länge und ermöglicht in Verbindung mit dem Maskieren der Ausgabe der ALU die Implementierung von Timern, Zählern und Schiebeblöcken beliebiger Länge.

FIFO-Ein- / Ausgabepuffer

Jeder Datenpfad verfügt über zwei 4-Byte-FIFO-Puffer, von denen jeder so konfiguriert werden kann, dass er als Eingangspuffer fungiert (CPU oder DMA schreibt Daten in den FIFO, Datenpfad liest den FIFO) oder als Ausgabepuffer (Datenpfad schreibt in den FIFO und CPU oder DMA.) liest daraus). Diese FIFO-Puffer generieren einen Status, der zur Interaktion mit Sequenzern, Interrupts oder DMA-Anforderungen weitergeleitet werden kann.

Bondage in Ketten

Datapath kann für Kopplungsbedingungen und die Signale in der Kette mit dem benachbarten Datapath konfiguriert werden. Shift-, Transfer-, Capture- und andere herkömmliche Signale können zu Ketten zusammengefasst werden, um Arithmetikfunktionen mit höherer Kapazität sowie Shift- und CRC / PRS-Funktionen zu erstellen.

Zeitmultiplexing

In überabgetasteten Anwendungen oder wenn keine hohen Taktraten benötigt werden, kann eine ALU in Datapath effektiv zwischen zwei Registersätzen und Zustandsgeneratoren aufgeteilt werden. Die ALU- und Schieberegisterausgänge werden zwischengespeichert und können in nachfolgenden Zyklen als Eingabe verwendet werden. Anwendungsbeispiele umfassen die Unterstützung von 16-Bit-Funktionen in einem einzigen (8-Bit) -Datenpfad oder das Wechseln von CRC-Generierungsoperationen mit Datenverschiebungsoperationen.

Datenpfad-Eingaben

Datapath verfügt über vier Arten von Eingängen: Konfigurations-, Steuerungs- und Dateneingänge (seriell und parallel). Konfigurationseingänge wählen die dynamische Konfigurations-RAM-Adresse aus. Steuereingänge laden Datenregister aus dem FIFO und laden die Batterieausgabe in den FIFO. Zu den seriellen Dateneingaben gehören Verschiebe- und Übertragungseingaben. Der parallele Dateneingangsport ermöglicht den Empfang von bis zu 8 Datenbits aus Trace-Ressourcen.

Datenpfad-Ausgaben

Im Datenpfad werden insgesamt 16 Signale generiert. Einige davon sind Bedingungssignale (zum Beispiel Vergleiche), andere sind Statussignale (zum Beispiel FIFO-Status) und der Rest sind Datensignale (zum Beispiel Schieberegisterausgabe). Diese 16 Signale werden in 6 Datapath-Ausgänge gemultiplext und auf eine Trace-Matrix geleitet. Standardmäßig sind die Ausgänge mit einer Taktfrequenz synchronisiert, wodurch das Pipelining mit einer Verzögerung von 1 Takt erzeugt wird. Ihre (Ausgänge) können auch in den asynchronen Modus (kombinatorischen Modus) geschaltet werden (siehe Anmerkungen des Übersetzers).

Anmerkung des Übersetzers

Ich habe lange gesucht, was ist der Synchronismus der Ausgänge Datapath. Nach meiner Erfahrung ist alles asynchron. Es stellte sich heraus, dass es sich nicht um den Zustand der Ausgänge handelt, sondern um die Einstellung des Editors für darauf basierende Variablen.



Dadurch generiert der Editor einen solchen Verilog-Code:
/* ==================== Assignment of Registered Variables ==================== */
always @ (posedge clock)
begin : register_assignments
    var1 <= (decr_finished);
end

Wenn Sie in den kombinatorischen Modus wechseln, sieht der



Code folgendermaßen aus:

assign var1 = (decr_finished);

All dies gilt jedoch für Variablen, die basierend auf den Ausgaben von Datapath generiert werden. Und die Ausgänge selbst sind immer asynchron. Und ihre Namen (in diesem Beispiel decr_finished ) können verwendet werden, ohne zusätzliche Variablen einzugeben .

Datapath-Arbeitsregister

Jedes Datapath- Modul verfügt über sechs 8-Bit-Arbeitsregister. CPU oder DMA haben Lese- und Schreibzugriff auf alle Register.

Tabelle 21-1
TypVornameBeschreibung
BatterieA0, A1Batterien können sowohl Quelle als auch Empfänger
für eine ALU sein. Sie können auch aus einem Datenregister
oder einem FIFO geladen werden . Batterien enthalten normalerweise den aktuellen Wert einer Funktion
(z. B. einen Zähler, einen CRC oder eine Schicht). Diese Register verlieren ihre
Werte, wenn sie in den Schlafmodus wechseln, und beim Zurücksetzen nehmen sie den
Wert 0x00 an.
DatenD0, D1Datenregister enthalten typischerweise Funktionskonstanten,
beispielsweise einen PWM-Vergleichswert, eine Zeitperiode oder ein CRC-Polynom.
Diese Register behalten ihre Werte im
Ruhemodus.
FIFOF0, F1Zwei 4-Byte-FIFO-Puffer stellen sowohl die Quelle
als auch den Empfänger für die gepufferten Daten bereit . FIFOs können
als Eingangspuffer sowie als Ausgangspuffer oder als ein
Eingangspuffer und ein Ausgangspuffer konfiguriert werden . Statussignale zeigen den
Status des Lesens und Schreibens dieser Puffer an. Beispiele für die Verwendung
sind gepufferte TX- und RX-Daten in SPI oder UART
sowie gepufferte PWM-Daten und gepufferte
Zeitperiodendaten. Diese Register speichern ihre Werte nicht
im Ruhemodus und beim Rücksetzen nehmen sie den Wert 0x00 an.

Im nächsten Artikel werden wir uns mit dem FIFO beschäftigen.

Jetzt auch beliebt: