UDB. Was ist das Teil 8. Adressierung von UDB



Wir schließen unser Epos mit der Übersetzung der von Cypress geschützten Dokumentation über UDB. Die neueste Ausgabe - über die Adressierung von UDB - liegt vor Ihnen.

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.
Teil 5. Datenpfad. Nützliche Kleinigkeiten.
Teil 6. Management- und Statusmodul.
Teil 7. Steuermodul für Timing und Reset
Teil 8. Adressierung von UDB. (Aktueller Artikel)

21.3.5 UDB-Adressierung


Das UDB-Paar verfügt über drei eindeutige Adressräume:

  • 8-Bit-Arbeitsregister - Ein Buscontroller, der nur auf 8 Datenbits pro Buszyklus zugreifen kann, kann diesen Adressraum zum Lesen oder Schreiben beliebiger UDB-Arbeitsregister verwenden. Dazu gehören die Register, mit denen CPU und DMA im Normalbetrieb interagieren.
  • 16-Bit-Arbeitsregister - Ein 16-Bit-Buscontroller wie ein DMA oder PSoC 5LP Cortex-M3 kann in einem Buszyklus auf 16 Bit zugreifen, um die Datenübertragung zu Funktionen zu ermöglichen, die 16 Bit oder mehr erfordern. Trotz der Tatsache, dass dieser Adressraum nicht an den Bereich gebunden ist, an den der 8-Bit-Raum gebunden ist, hat er Zugriff auf dieselben Register, jeweils nur auf ein Paar.
  • 8- oder 16-Bit-Konfigurationsregister - Diese Register konfigurieren UDB zur Ausführung einer Funktion. Nach der Konfiguration werden die Register normalerweise während des UDB-Betriebs in einen statischen Zustand versetzt. Diese Register behalten ihren Zustand nach dem Schlafmodus bei.

Anmerkung des Übersetzers
Irgendwie ist alles kompliziert formuliert. Meiner Meinung nach ist es für die ersten beiden Punkte einfacher, das Konzept der Adressierungsmethoden mit unterschiedlichen Bittiefen des Arbeitsregisters einzuführen. Durch 8-Bit- bzw. durch 16-Bit-Arbeitsregister. Wenn Sie beim Lesen dieser Absätze verwirrt sind, versuchen Sie, den Text auf diese Weise zu betrachten. Verschiedene Fenster im Adressraum der CPU, die die Adressierung derselben über die Arbeitsregister verschiedener Bits ermöglichen. Das ist alles.

21.3.5.1 Adressraum des Arbeitsregisters


Die Arbeitsregister werden während des normalen Betriebs verwendet und umfassen Batterien, Datenregister, FIFOs, Steuer- und Statusregister, Maskenüberlappungsregister und Hilfssteuerregister.

Abbildung 21-43 zeigt eine Registerkarte einer UDB.

Rechts in Abbildung 21-43 befindet sich eine 16-Bit-Adresse, die immer gerade ist. In diesem Fall hat die UDB-Nummer aufgrund der geraden Position der Adressen eine Dimension von 5 Bit und nicht von 4. Die hohen 4 Bits setzen immer noch die Registernummer.


Abbildung 21-43. Arbeitsregister UDB.

8-Bit-Arbeitsregisterzugriff
In diesem Modus erfolgt der Zugriff auf alle UDB-Register über Adressen, die an der Bytegrenze ausgerichtet sind. Im Zugriffsmodus für 8-Bit-Register (siehe Abbildung 21-44) sind alle in die UDB geschriebenen Datenbytes auf das Low-Byte des 16-Bit-UDB-Busses ausgerichtet.

In diesem Modus kann jederzeit nur auf ein Byte zugegriffen werden.


Abbildung 21-44. Zugriff auf das 8-Bit-Arbeitsregister.

Adressraum des 16-Bit-Arbeitsregisters
Ein 16-Bit-Adressraum für effizienten DMA-Zugriff und programmgesteuerten CPU-Zugriff auf Prozessoren, die ihn unterstützen, wie z. B. den Cortex-M3 in PSoC 5LP. Es gibt zwei Zugriffsmodi auf 16-Bit-Register: den Standardmodus und den Verkettungsmodus. Wie in Abbildung 21-45 gezeigt, greift es im Standardmodus über das Low-Byte auf das angegebene Register in UDB 'i' und über das High-Byte auf dasselbe Register in UDB 'i + 1' zu. Dies macht die Verarbeitung von 16-Bit-Daten in benachbarten UDBs (in der Reihenfolge der Adressen), die als 16-Bit-Funktionen konfiguriert sind, effizient.


Abbildung 21-45. Zugriff auf 16-Bit-Arbeitsregister im Standardmodus.

Im Verkettungsmodus werden die Register einer UDB zu 16-Bit-Registern zusammengefasst, wie in Abbildung 21-46 dargestellt. In diesem Modus muss der 16-Bit-Datenbus des UDB-Arrays auf ein Registerpaar in der UDB in dem in der Abbildung gezeigten Format zugreifen. Wenn beispielsweise auf das Register A0 zugegriffen wird, erfolgt tatsächlich ein Zugriff auf A0 über das niedrige Byte und auf A1 über das hohe Byte.


Abbildung 21-46. Zugriff auf ein 16-Bit-Arbeitsregister im Verkettungsmodus

Die Verwendung von DMA ist durch die Bittiefe des 16-Bit-Arbeitsregisters begrenzt. Es reicht nicht aus, mit Funktionen zu arbeiten, die größer als 16 Bit sind. Dies wird durch Adressüberlagerungen verursacht, wie in gezeigt
Tabelle 21-25.

Tabellen 21-25. Optimierter Adressraum für 16-Bit-UDB-Funktionen.
Die AdresseHigh Byte wird in geschriebenLow Byte wird in geschrieben
0UDB1UDB0
2UDB2UDB1
4UDB3UDB2

Wenn der DMA 16 Bits an die Adresse 0 sendet, werden die niedrigen und hohen Bytes in UDB0 bzw. UDB1 geschrieben. Bei der nächsten 16-Bit-DMA-Übertragung an Adresse 2 wird der Wert in UDB1 durch das niedrige Byte dieser Übertragung überschrieben.

Um Probleme im Zusammenhang mit einer solchen Speicherorganisation zu vermeiden, wird für Funktionen mit einer Bittiefe von mehr als 16 Bit empfohlen, den DMA-Prozess für einen Bereich mit 8-Bit-Arbeitsregistern zu starten.

21.3.5.2 Adressraum des Konfigurationsregisters


Die Konfiguration erfolgt auf UDB-Paarebene. Ein UDB-Paar besteht aus zwei UDBs und einem zugehörigen Tracerkanal (siehe Abbildung 21-47).


Abbildung 21-47. Adressschema zum Konfigurieren eines UDB-Paares.

21.3.5.3 Adressraum für die UDB-Konfiguration


Abbildung 21-48 zeigt das Adresskonfigurationsdiagramm einer bestimmten UDB. Wie Sie sehen können, wird dieser Konfigurationsbereich auf beiden UDBs paarweise dupliziert. Insgesamt sind 128 Bytes (7-Bit-Adressen) für jede UDB-Konfiguration reserviert, die in 16-Bit-Segmente unterteilt sind. Es ist erwähnenswert, dass der 16-Bit-Zugriff auf ungerade Grenzen nicht unterstützt wird. Beim Lesen werden immer 16 Bit im Konfigurationsbereich zurückgegeben, und unnötige Bytes können ignoriert werden.


Abbildung 21-48. Der Adressraum der UDB-Konfiguration.

21.3.5.4 Adressraum der Routing-Konfiguration


Die UDB-Trace-Konfiguration besteht aus eingebetteten RAM-Bits zur Steuerung des Status von Gateway-Switches, Segmentierung und Eingabe- / Ausgabepuffern.

21.3.6 Systembuszugriffskohärenz


UDB-Register haben einen Dual-Access-Modus:

  • Zugriff auf den Systembus, in dem die CPU oder der DMA in das UDB-Register liest oder schreibt;
  • Interner UDB-Zugriff, bei dem die UDB-Funktion den Inhalt des Registers aktualisiert oder verwendet
.

21.3.6.1 Gleichzeitiger Systembuszugriff


Die folgende Tabelle enthält eine Liste möglicher gleichzeitiger Zugriffsereignisse und das erforderliche Verhalten.

Tabelle 21-26. Gleichzeitiger Zugriff auf den Systembus.
RegistrierenAufnahme von UDB
Busaufzeichnung
Aufnahme von UDB
Lesen aus dem Bus
Lesen aus der UDB
Busaufzeichnung
Lesen aus der UDB
Lesen aus dem Bus
AxeUnsicheres ErgebnisNicht direkt verfügbar a, bUDB liest den vorherigen WertDer Bus und die UDB lesen den aktuellen Wert.
Dx
FxNicht unterstützt (UDB und Bus müssen multidirektionalen Zugriff haben)Wenn FIFO-Statusflags verwendet werden, wird gleichzeitig gelesen / geschriebenNicht unterstützt (UDB und Busse müssen multidirektionalen Zugriff haben)
STNicht verfügbar, Bus schreibt nichtDer Bus liest den vorherigen Wert.Nicht verfügbar, UDB liest nicht
CTLNicht verfügbar, UDB schreibt nichtUDB liest den vorherigen WertDer Bus und die UDB lesen den aktuellen Wert.
CNTUnsicheres ErgebnisNicht direkt bei erhältlich
ACTLNicht verfügbar, UDB schreibt nicht
Msk
Per
MC (RO)Nicht verfügbar, Bus schreibt nichtNicht direkt verfügbar dNicht verfügbar, Bus schreibt nicht

a. Axtregister können mit der FIFO-Software-Erfassungsfunktion sicher gelesen werden.
b. In Dx-Registern können FIFOs nur dynamisch geschrieben werden. In diesem Modus ist das direkte Lesen von Dx-Registern nicht verfügbar.
c. Das CNT-Register kann nur dann sicher gelesen werden, wenn es deaktiviert ist. Eine Alternative zum dynamischen Lesen des CNT-Werts besteht darin, die Ausgabe zum SC-Register zu verfolgen (im transparenten Modus).
d. MC-Registerbits können zum sicheren Lesen zu den Statusregistereingängen (im transparenten Modus) zurückverfolgt werden.

21.3.6.2 Kohärenter Akkumulatorzugriff (atomare Lese- und Schreibvorgänge)


UDB-Batterien sind das Hauptziel der Datenverarbeitung. Daher führt das direkte Lesen dieser Register während des normalen Betriebs zu einem undefinierten Ergebnis, wie in der obigen Tabelle gezeigt. Es gibt jedoch eine integrierte Unterstützung für atomare Lesungen in Form einer Programmerfassung, die auf in einer Kette verbundenen Blöcken implementiert ist. In einem solchen Verwendungsmodell überträgt das Lesen der letzten signifikanten Batterie Daten von allen in der Kette verbundenen Blöcken zu den zugeordneten FIFOs. Die Atomaufzeichnung im FIFO kann programmgesteuert implementiert werden. Einzelne Schreibvorgänge können am FIFO-Eingang ausgeführt werden, und dann kann das FIFO-Statussignal, an das die letzte Aufzeichnung vorgenommen wurde, an alle verknüpften Blöcke weitergeleitet werden, während die FIFO-Daten an die Dx- oder Ax-Register übertragen werden.

Nachwort vom Übersetzer


Dieser Übersetzungszyklus wurde als Antwort auf den Kommentar zum Artikel erstellt , in dem zunächst vorgeschlagen wurde, kurz zu beschreiben, was UDB ist. Nun ist klar, dass für eine kurze Antwort mindestens die Hälfte der hier vorgestellten Materialien zitiert werden müsste, da sonst die Antwort immer noch unvollständig wäre. Jetzt werden alle Materialien übersetzt und zusammengestellt. Die Aufgabe ist abgeschlossen.

Während der Arbeit machten wir auch auf einen anderen interessanten PSoC-Block aufmerksam, der niemandem bekannt ist, aber mit enormer Kraft behaftet ist. Dies ist DFB, Digital Filter Block. Es ist zwar beängstigend, in die Übersetzung zu stürzen. Aus der Übersetzung über UDB geht hervor, dass eine Dokumentation nicht ausreicht, oh, Übung ist erforderlich. Das Problem ist, dass es in UDB nur wenige vorgefertigte Beispiele gibt, aber sie sind es. Es war noch nicht möglich, aus den Beispielen im DFB etwas Wertvolles zu finden (Cypress selbst hat einen digitalen Filter in Form einer Black Box erstellt, es funktioniert, aber es ist nicht klar, wie). Eine Übersetzung ohne Beispiele macht keinen Sinn. Daher machen wir die Leser bei dieser Gelegenheit auf diesen Block aufmerksam. Vielleicht wird jemand in den Kommentaren Links zu guten Beispielen bereitstellen. Wenn wir uns mit diesem Block befassen, wird es möglich sein, einen Zyklus von Übersetzungen und praktischen Artikeln darüber zu erstellen. In der Zwischenzeit ist das alles.

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


All Articles