
In früheren Artikeln, Übersetzungen der Cypress-Dokumentation, wurde der Betriebsautomat Datapath sehr inhaltlich berücksichtigt. Allmählich beschäftigen wir uns mit anderen UDB-Modulen, insbesondere dem Management- und Statusmodul.
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. (Aktueller Artikel)
Teil 7. Steuermodul für Timing und ResetTeil 8. Adressierung von UDB21.3.3. Verwaltungs- und Statusmodul
Eine allgemeine Ansicht des Steuermoduls und des Status ist in Abbildung 21-28 dargestellt. Die Statusbits des Steuerregisters werden an Ablaufverfolgungsressourcen übertragen, wodurch das Programm das Verhalten der UDB steuern kann. Das Statusregister empfängt Daten von Verfolgungsleitungen, sodass das Programm die von der UDB ausgeführten Vorgänge überwachen kann.
Abbildung 21-28. Verwaltungs- und Statusregister.Die Struktur des Steuermoduls und der Status sind in Abbildung 21-29 detaillierter dargestellt. Das Hauptziel dieser Einheit ist es, die Interaktion des Prozessorkernprogramms mit der Arbeit interner UDB-Elemente zu koordinieren. Aufgrund der starken Verbindung mit der Trace-Matrix kann dieser Block jedoch so konfiguriert werden, dass er andere Funktionen ausführt.
Abbildung 21-29. Steuerungs- und Statusmodul.Betriebsarten:
- Statuseingabe Der Status von von außen aufgewickelten Leitungen kann eingegeben und als Status erfasst werden, wonach die CPU oder der DMA gelesen werden.
- Steuerausgang Die CPU oder der DMA können Daten in das Steuerregister schreiben. Diese Daten bestimmen den Status der Zeilen, die zu den Ablaufverfolgungsressourcen führen.
- Parallele Eingabe - zur parallelen Eingabe Datenpfad.
- Parallele Ausgabe - von der parallelen Ausgabe von Datapath.
- Zählermodus In diesem Modus arbeitet das Steuerregister als 7-Bit-Zähler mit abnehmbarer Periode und automatischer Rückstellung. Trace-Kanaleingänge können so konfiguriert werden, dass sie sowohl das Ein- als auch das Zurücksetzen des Zählers steuern. Wenn dieser Modus aktiviert ist, ist die Funktionalität des Steuerregisters nicht verfügbar.
- Synchronmodus / Synchronisationsmodus . In diesem Modus fungiert das Statusregister als 4-Bit-Dual-Synchronizer. Wenn dieser Modus aktiviert ist, ist die Funktionalität des Statusregisters nicht verfügbar.
21.3.3.1 Status- und Steuermodus
Im Steuerungs- und Statusmodus fungiert dieses Modul in der in Abbildung 21-30 gezeigten Konfiguration als Statusregister, Maskenüberschreibungsregister und Steuerregister.
Abbildung 21-30. Job Management und Status.Statusregister-Betrieb
Jede UDB verfügt über ein 8-Bit-Statusregister. Die Eingabe in dieses Register stammt von einem beliebigen Signal einer digitalen Trace-Struktur. Das Statusregister ist zerstörbar: Es verliert im Ruhezustand seinen Zustand und hat nach dem Aufwachen den Wert 0x00. Jedes Bit kann unabhängig programmiert werden, um in einem von zwei Modi zu arbeiten.
Tabelle 21-19. Statusregister.
Ein wichtiges Merkmal der Statusregister-Löschoperation ist, dass nur gespannte Bits gelöscht werden. Dadurch können die verbleibenden Bits den Status weiter erfassen, um die Prozesskontinuität aufrechtzuerhalten.
Normaler Lesestatus
Standardmäßig liest die CPU den Status der entsprechenden Schaltung transparent. In diesem Modus können in der UDB zwischengespeicherte Daten gelesen werden.
Stick Status mit klar nach dem Lesen
In diesem Modus werden die Statusregistereingänge bei jedem Steuerungs- und Statustaktzyklus abgetastet. Wenn das Signal bei einem bestimmten Takt hoch ist, wird es im Statusbit erfasst und bleibt unabhängig von nachfolgenden Eingangszuständen hoch. Wenn die CPU oder der DMA das Statusregister liest, wird das Bit gelöscht. Das Löschen des Statusregisters ist modeunabhängig und erfolgt auch dann, wenn die UDB-Taktung deaktiviert ist. Es basiert auf dem Bus-Timing und tritt als Teil einer Leseoperation auf.
Latch-Status beim Lesen
Abbildung 21-31 zeigt den Aufbau der Statusleselogik. Auf das Sticky-Statusregister folgt ein Latch, der die Statusregisterdaten zwischenspeichert und während des Lesezyklus stabil hält, unabhängig von der Anzahl der Warte-Ticks im aktuellen Lesevorgang.
Abbildung 21-31. Die Logik des Lesestatus.Generierung unterbrechen
In den meisten Funktionen ist die Interrupt-Generierung an die Statusbitparameter gebunden. Wie in Abbildung 21-31 dargestellt, ist diese Funktion in Form einer Maskierungsoperation und Anwenden der
ODER- Operation auf den Status in die Statusregisterlogik integriert. Mit den eingebauten Interrupt-Generatoren können nur die unteren 7 Bits des Statuseingangs verwendet werden. Das höchstwertige Bit (Most Significant Bit, MSB) wird normalerweise als Interrupt-Ausgang verwendet und kann über digitale Verfolgungskanäle an den Interrupt-Controller weitergeleitet werden. In dieser Konfiguration wird der Status des Interrupt-Anforderungsbits aus dem Register für das hohe Statusregister gelesen.
21.3.3.2 Bedienung des Steuerregisters
Für jede UDB steht ein 8-Bit-Steuerregister zur Verfügung. Es arbeitet als Standard-Lese- / Schreibregister auf dem Systembus, wobei die Ausgabe dieser Registerbits durch die Leitungen der digitalen Trace-Struktur gesteuert wird.
Das Steuerregister ist zerstörbar: Es verliert im Ruhezustand seinen Zustand und hat nach dem Aufwachen den Wert 0x00.
Verwaltungsregister-Modi
Jedes Bit kann in einem von drei Modi konfiguriert werden. Die Konfiguration wird durch Kombinieren der Bits zweier 8-Bit-Register CTL_MD1 [7: 0] und CTL_MD0 [7: 0] festgelegt. Zum Beispiel steuert {CTL_MD1 [0], CTL_MD0 [0]} den Nullbitmodus des Steuerregisters (siehe Tabelle 21-20).
Tabelle 21-20. Steuerregister-Nullbit-Modus
Direct Control Register-Modus
Standardmäßig ist der Modus direkt. Wie in Abbildung 21-32 gezeigt, wird beim Schreiben der CPU oder des DMA in das Steuerregister die Ausgabe des Steuerregisters im selben Zyklus direkt an die Ablaufverfolgungsleitung gesendet.
Abbildung 21-32. Direktsteuerregistermodus.Synchronsteuerregistermodus
Im synchronen Modus, wie in Abbildung 21-33 gezeigt, ist der Ausgang des Steuerregisters nicht synchron mit dem Takt, der dem aktuellen Takt der Steuerung und des Status (Status und Steuerung, SC) entspricht. Auf diese Weise können Sie die Zeitdiagramme des Ausgangs bei der ausgewählten SC-Frequenz und nicht bei der Bustaktfrequenz steuern.
Abbildung 21-33. Synchronsteuerregistermodus.Pulsmodus-Steuerregister
Der Impulsmodus ähnelt dem Synchronmodus, da darin das Steuerbit mit der SC-Frequenz neu abgetastet wird; Der Impuls beginnt beim ersten SC-Taktzyklus und folgt dem Busschreibzyklus. Der Steuerbitausgang wird während eines vollen SC-Taktzyklus gesetzt. Am Ende dieses Taktzyklus wird das Steuerbit automatisch zurückgesetzt.
Mit dieser Betriebsart kann das Programm 1 in das Steuerregisterbit schreiben, um einen Impuls zu erzeugen. Nachdem dem Bit der Wert 1 zugewiesen wurde, liest das Programm ihn bis zum Ende des Impulses als 1, danach wird er als 0 gelesen. Danach kann das Programm eine weitere 1 schreiben, um einen neuen Impuls zu starten. Daher ist es nicht möglich, öfter als bei jedem zweiten Schritt des SC-Signals einen Impuls zu geben.
Verwaltungsregister zurücksetzen
Das Steuerregister verfügt über zwei Rücksetzmodi, die vom EXT RES-Konfigurationsbit gesteuert werden (siehe Abbildung 21-34). Wenn EXT RES im Synchron- oder Impulsmodus 0 (Standard) ist, setzt der verfolgte Reset-Eingang den synchronisierten Ausgang zurück, nicht jedoch das Steuerbit selbst. Wenn EXT RES 1 ist, setzt der rückverfolgbare Rücksetzeingang sowohl das Steuerbit als auch den synchronisierten Ausgang zurück.
Abbildung 21-34. Verwaltungsregister zurücksetzen.21.3.3.3 Paralleler Ein- / Ausgabemodus
In diesem Modus sind Steuerung und Statusverfolgung mit den Datenpfadsignalen für parallelen Ein- und parallelen Ausgang verbunden. Um diesen Modus zu aktivieren, müssen Sie die SC OUT-Konfigurationsbits spannen, um den parallelen Datenpfadausgang auszuwählen. Die Kommunikation mit dem Paralleleingang ist immer verfügbar. Diese Trace-Verbindungen werden jedoch mit den Statusregistereingängen, Zählersteuereingängen und Interruptausgängen geteilt.
Abbildung 21-35. Paralleler E / A-Modus.21.3.3.4 Zählermodus
Wie in Abbildung 21-36 gezeigt, steht im Zählermodus der Einheit ein 7-Bit-Zähler zur Verfügung, der sowohl innerhalb von Operationen innerhalb der UDB als auch für die Anforderungen des Programms verwendet werden kann. Die Merkmale des Messgeräts umfassen:
- 7-Bit-Periodenregister (Lesen / Schreiben).
- 7-Bit-Kontoregister (Lesen / Schreiben). Der Zugriff ist nur möglich, wenn der Zähler gestoppt ist.
- Lädt den Zeitraum im Kontoregister automatisch neu, wenn er Null erreicht.
- Das über die Software zugängliche Steuerbit im Hilfssteuerregister CNT START, mit dem der Zähler gestartet und gestoppt wird. (Es überlappt das ENABLE-Hardwaresignal und muss installiert sein, damit das optionale ENABLE-Hardwaresignal funktioniert.)
- Auswählbare Bits der Trace-Kanäle der optionalen dynamischen Zählersteuerung für die Start- und Ladefunktionen:
- DE, verfolgtes Signal zum Starten oder Stoppen der Zählung.
- LD, ein rückverfolgbares Lastsignal, das ein periodisches Nachladen verursacht. Wenn dieses Signal gespannt ist, überlappt es das anstehende Endsignal. Es ist empfindlich gegenüber dem Pegel, und während das Signal gespannt ist, wird die Periode weiter geladen. - Ein 7-Bit-Zähler kann als sc_out [6: 0] an Trace-Ressourcen gesendet werden.
- Das Beendigungssignal kann Trace-Ressourcen als sc_out [7] eingeben.
- Im Standardmodus wird der Fangmodus für das Zählsignal verwendet. Im alternativen Modus wird in den Kombinationsmodus gewechselt.
- Im Standardmodus muss das optionale Hardware-EN-Signal, falls verwendet, eingestellt werden, um das LD-Hardware-Signal zu aktivieren. Im alternativen Modus sind die LD- und EN-Hardwaresignale unabhängig.
Abbildung 21-36. ZählermodusAnmerkung des Übersetzers:
Um diesen Ort herum wurde mir klar, dass ich nichts aus dem Dokument vollständig verstehe. Nirgendwo werden diese "Standard" - und "Alternativ" -Modi beschrieben. Nach langer Suche konnte ich einige finden, aber ein Beispiel.
Datei: C: \ Programme (x86) \ Cypress \ PSoC Creator \ 4.2 \ PSoC Creator \ psoc \ content \ CyComponentLibrary \ CyComponentLibrary.cylib \ bScanComp_v1_10 \ bScanComp_v1_10.v
Erklärender Code:

Gleicher Text:cy_psoc3_count7 #(.cy_period(Period),.cy_route_ld(0),.cy_route_en(1), .cy_alt_mode(1)) ChannelCounter( /* input */ .clock(clk_int), /* input */ .reset(1'b0), /* input */ .load(1'b0), /* input */ .enable(enable_int), /* output [06:00] */ .count(count), /* output */ .tc(tc_o) );
Die Deklaration der Komponente cy_psoc3_count7, die ich nur für die VHDL-Sprache gefunden habe, scheint für Verilog in die Entwicklungstools integriert zu sein. Jetzt wissen Sie ungefähr, wo Sie nach den zur Diskussion stehenden Stimmbits suchen müssen.
Hier betrachten wir die mysteriösen Bits, die entweder SC OUT CTL oder SC_OUT_CTL genannt werden, deren Werte jedoch nicht dokumentiert sind. Ich habe sie nirgendwo gefunden. Aus dem Text geht hervor, dass sie die STATUS_CONTROL-Komponente zwischen den Modi wechseln. In der zuvor erwähnten VHDL-Datei C: \ Programme (x86) \ Cypress \ PSoC Creator \ 4.2 \ PSoC Creator \ warp \ lib \ lcpsoc3 \ cpsoc3.vhd
wir sehen separat den uns bereits bekannten Zähler component cy_psoc3_count7 generic(cy_period : std_logic_vector (6 downto 0) := "1111111"; cy_init_value : std_logic_vector (6 downto 0) := "0000000"; cy_route_ld : boolean := false; cy_route_en : boolean := false; cy_alt_mode : boolean := false); port (clock : in std_logic; reset : in std_logic; load : in std_logic; enable : in std_logic; count : out std_logic_vector (6 downto 0); tc : out std_logic); end component;
getrennt - Status und Verwaltung attribute atomic_rtl of cy_psoc3_status : component is rtl_generic; attribute cpu_access of cy_psoc3_status : component is true; component cy_psoc3_statusi generic(cy_force_order : boolean := false; cy_md_select : std_logic_vector (6 downto 0) := "0000000"; cy_int_mask : std_logic_vector (6 downto 0) := "0000000"); port (reset : in std_logic := '0'; clock : in std_logic := '0'; status : in std_logic_vector (6 downto 0); interrupt : out std_logic); end component; attribute atomic_rtl of cy_psoc3_statusi : component is rtl_generic; attribute cpu_access of cy_psoc3_statusi : component is true; component cy_psoc3_control generic(cy_init_value : std_logic_vector (7 downto 0) := "00000000"; cy_force_order : boolean := false; cy_ctrl_mode_1 : std_logic_vector (7 downto 0) := "00000000"; cy_ctrl_mode_0 : std_logic_vector (7 downto 0) := "00000000"; cy_ext_reset : boolean := false); port (reset : in std_logic := '0'; clock : in std_logic := '0'; control : out std_logic_vector (7 downto 0)); end component;
separat - Synchronisierer component cy_psoc3_sync port (clock : in std_logic := '0'; sc_in : in std_logic; sc_out : out std_logic); end component;
Ich wiederhole, dass Verilog überhaupt keine Version dieser Deklarationen hat (es gibt nur Verhaltensmodelle im Verzeichnis C: \ Programme (x86) \ Cypress \ PSoC Creator \ 4.2 \ PSoC Creator \ warp \ lib \ sim, daher denke ich, dass die Bits gesetzt sind Modi sind für einfache Programmierer nicht zugänglich. Wenn Sie diesen Abschnitt lesen, sollten Sie diese Tatsache berücksichtigen. Etwas dient nur als Referenz und unterliegt nicht uns Programmierern.
Um den Zählermodus zu aktivieren, muss der Zählerausgang in den Bits SC_OUT_CTI [1: 0] ausgewählt werden. In diesem Modus ist der normale Betrieb des Steuerregisters nicht verfügbar. Gleichzeitig kann das Statusregister für Leseoperationen verwendet werden, Sie sollten es jedoch nicht zum Generieren eines Interrupts verwenden, da das Maskenabbildungsregister auch als Zählerperiodenregister verwendet wird. Das Periodenregister wird nicht zerstört und behält nach dem Aufwachen seinen Zustand. Für eine Periode von N Messungen muss der Wert N-1 in das Periodenregister geladen werden. Der Wert N = 1 (die Periode ist Null), da der Wert des Frequenzteilers nicht unterstützt wird und zu einer konstanten Einheit am Ausgang des TC führt (Terminalanzahl, TC). Die Verfügbarkeit des SYNC-Modus hängt davon ab, ob die dynamische Steuerung (LD / EN) verwendet wird oder nicht. Wenn es nicht verwendet wird, hat dies keine Auswirkungen auf den SYNC-Modus. Bei Verwendung ist der SYNC-Modus nicht verfügbar.
21.3.3.5 Synchronisationsmodus
Wie in Abbildung 21-37 gezeigt, kann das Statusregister als 4-Bit-Doppeltakt arbeiten, der mit dem aktuellen SC_CLK-Wert synchronisiert ist, wenn das SYNC-MD-Bit gesetzt ist. Dieser Modus kann verwendet werden, um die lokale Synchronisation von asynchronen Signalen (z. B. GPIO-Eingängen) zu implementieren. In diesem Fall werden die synchronisierten Signale aus SC_IN [3: 0] ausgewählt, die Ausgänge werden zu den Kontakten SC_IO_OUT [3: 0] geleitet und SYNC MD schaltet die Kontakte SC_IO automatisch in den Ausgangsmodus. In diesem Modus ist der normale Betrieb des Statusregisters nicht verfügbar, und der Status des Sticky-Statusbits ist unabhängig von den Einstellungen der Modussteuerung zwangsweise deaktiviert. Dieser Modus wirkt sich nicht auf das Steuerregister aus. Der Zähler kann weiterhin verwendet werden, jedoch mit Einschränkungen. In dieser Betriebsart können keine dynamischen Eingänge (LD / EN) verwendet werden.
Abbildung 21-37. Synchroner Modus.21.3.3.6 Status- und Steuerungstaktung
Die Steuer- und Statusregister erfordern eine Taktauswahl in einer der folgenden Betriebsarten:
- Statusregister mit einem beliebigen Bit im Sticky-Modus mit Löschen nach dem Lesen,
- Steuerregister im Zählermodus,
- synchroner Modus.
Das Timing wird im Takt- und Rücksetzmodul zugewiesen. Siehe 21.3.4. Steuermodul takten und zurücksetzen.
21.3.3.7 Hilfssteuerregister
Das Hilfssteuerregister zum Lesen und Schreiben ist ein spezielles Register, das fest eingestellte UDB-Geräte steuert. Dieses Register ermöglicht es der CPU oder dem DMA, Interrupts, FIFOs und Zähleroperationen dynamisch zu steuern. Die Bits der Register und ihre Beschreibung sind unten angegeben:
FIFO0 und FIFO1 löschen (FIFO0 löschen, FIFO1 löschen)
Die FIFO0-CLR- und FIFO1-CLR-Bits werden verwendet, um den Status der entsprechenden FIFOs zurückzusetzen. Wenn 1 in diese Bits geschrieben wird, wird der Zustand des entsprechenden FIFO zurückgesetzt. Um den FIFO-Betrieb fortzusetzen, muss 0 geschrieben werden. Diese Bits bleiben gespannt. FIFOs arbeiten als einfache Einzelbyte-Puffer ohne Status.
FIFO0- und FIFO1-Ebene (FIFO0-Ebene, FIFO1-Ebene)
Die FIFO0-LVL- und FIFO1-LVL-Bits legen den Pegel fest, bei dem ein 4-Byte-FIFO den Busstatus erhöht (wenn der Bus in den FIFO liest oder in diesen schreibt). Der FIFO-Busstatuswert hängt von der konfigurierten Richtung ab, wie in der folgenden Tabelle gezeigt.
Tabelle 21-21. Steuerbits auf FIFO-Ebene.
Interrupt aktivieren
Wenn die Statusregister-Generierungslogik aktiviert ist, ermöglicht das INT EN-Bit den Durchgang des erzeugten Interrupt-Signals.
Zähler / Konto starten? (Start zählen)
Das CNT START-Bit kann zum Starten und Stoppen des Zählers verwendet werden (nur verfügbar, wenn die SC_OUT_CTL [1: 0] -Bits für den Zählerausgangsmodus konfiguriert sind).
21.3.3.8 Zusammenfassung der Verwaltungs- und Statusregister
Die folgende Tabelle fasst die Funktionen der Steuer- und Statusregister zusammen. Bitte beachten Sie, dass Masken- und Steuerregister mit Zählern und Periodenregistern kombiniert werden und der Wert dieser Register nicht von der Betriebsart abhängt.
Tabelle 21-22. Eine kurze Zusammenfassung der Funktionsweise der Verwaltungs- und Statusregister
a. - Beachten Sie, dass im Maskenmodus das Maskenüberlagerungsregister als Periodenregister und nicht als Maskenüberlagerungsregister fungieren kann. Folglich ist der Interrupt-Ausgang nicht verfügbar, wenn der Zählermodus aktiviert ist.
b. - Beachten Sie, dass im Synchronisationsmodus das Statusregister nicht verfügbar ist und daher das Maskenüberlagerungsregister nicht verwendet werden kann. Es kann jedoch als Periodenregister für den Zählermodus verwendet werden.
Fortsetzung folgt…