[go: up one dir, main page]

DE112019006932T5 - Programmierbarer direct-memory-access-controller mitbeliebiger reihenfolge zur konfiguration von mehreren kernunabhängigen peripheriegeräten - Google Patents

Programmierbarer direct-memory-access-controller mitbeliebiger reihenfolge zur konfiguration von mehreren kernunabhängigen peripheriegeräten Download PDF

Info

Publication number
DE112019006932T5
DE112019006932T5 DE112019006932.2T DE112019006932T DE112019006932T5 DE 112019006932 T5 DE112019006932 T5 DE 112019006932T5 DE 112019006932 T DE112019006932 T DE 112019006932T DE 112019006932 T5 DE112019006932 T5 DE 112019006932T5
Authority
DE
Germany
Prior art keywords
address
register
memory
data
programmable
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112019006932.2T
Other languages
English (en)
Inventor
Keith Edwin Curtis
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microchip Technology Inc
Original Assignee
Microchip Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microchip Technology Inc filed Critical Microchip Technology Inc
Publication of DE112019006932T5 publication Critical patent/DE112019006932T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • G06F13/287Multiplexed DMA
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)

Abstract

Ein programmierbarer Direct-Memory-Access-, DMA-, Controller für beliebige Reihenfolge greift unter Verwendung von Adresszeigerregistern (202, 204) auf sequentiell adressierte Speicherorte (Quelle oder Ziel) zu. Jeder sequentiell adressierte Speicherort, der eine indirekte Speicheradresse beinhaltet, wird in einem Adresszwischenspeicher (230) gespeichert und verwendet, um auf den tatsächlichen nicht sequentiellen Speicherort zuzugreifen, auf den durch die DMA-Übertragung zugegriffen werden soll.

Description

  • VERWANDTE PATENTANMELDUNG
  • Diese Anmeldung beansprucht die Priorität vor der im gemeinsamen Besitz befindlichen vorläufigen US-Patentanmeldung Seriennummer 62/811,400 ; eingereicht am 27. Februar 2019; mit dem Titel „Programmable Arbitrary Sequence Direct Memory Access Controller for Configuring Multiple Core Independent Peripherals“ von Keith Edwin Curtis; und wird hiermit für alle Zwecke durch Bezugnahme hierin aufgenommen.
  • TECHNISCHES GEBIET DER ERFINDUNG
  • Die vorliegende Offenbarung bezieht sich auf eine Steuerung des direkten Speicherzugriffs (DMA) und insbesondere auf einen programmierbaren reihenfolgebeliebiger DMA-Controller zum Konfigurieren mehrerer kernunabhängiger Peripheriegeräte (CIPs).
  • HINTERGRUND DER ERFINDUNG
  • Ein kernunabhängiges Peripheriegerät wird als ein Peripheriegerät angesehen, das nicht von der CPU gesteuert werden muss, um seine Funktion auszuführen. Beispielsweise muss ein herkömmlicher Analog-Digital-Wandler von der CPU gesteuert werden, um jeden Wert abzutasten, und die CPU muss das Ergebnis speichern, sobald es erhalten wurde. Eine kernunabhängige Version eines solchen Analog-Digital-Wandlers kann immer noch von der CPU konfiguriert werden, aber sobald sie konfiguriert wurde, kann sie unabhängig von der CPU arbeiten und kann beispielsweise unabhängig ausgelöst werden und Ergebnisse an bestimmten Orten speichern. Andere kernunabhängige Peripheriegeräte können implementiert werden, was es ermöglicht, die CPU von Steuerungsaufgaben zu befreien und somit die Verarbeitungsleistung eines Mikrocontrollers zu erhöhen. Einer der Hauptvorteile von kernunabhängigen Peripheriegeräten (CIPs) besteht darin, dass sie im laufenden Betrieb rekonfiguriert werden können, um die Leistung oder den Betrieb des CIP, eines Pseudo-Peripheriegeräts, zu ändern. Leider können die CIP-Konfigurationsregister über mehrere speicherabgebildete Spezialfunktionsregister-(SFR)-Adressenbänke verstreut sein. Die Verwendung von Programmfirmware zum Durchführen einer CIP-Rekonfiguration ist ebenfalls relativ langsam und verursacht eine Latenzzeit als Reaktion auf ein externes Signal.
  • Ein Verfahren, das verwendet werden kann, besteht darin, zwei DMA-Peripheriegeräte zusammen zu konfigurieren, von denen eines auf die SFR-Adressliste aus dem Speicher zugreift und dann das zweite DMA-Peripheriegerät mit diesen SFR-Adressen programmiert, das dann die tatsächlichen CIP-Rekonfigurationsdatenübertragungen an die CIP-SFRs durchführt. Dies ist sehr ineffizient, da mehrere Register dupliziert werden und die Schreibgeschwindigkeit langsamer ist. Es erfordert auch, dass die beiden DMA-Peripheriegeräte so querverbunden sind, dass sie sich gegenseitig triggern. Wenn eines der DMA-Peripheriegeräte einen Fehler oder einen Fehlerzustand trifft, schlägt die DMA-Operation fehl.
  • ZUSAMMENFASSUNG
  • Was daher benötigt wird, ist ein programmierbarer reihenfolgebeliebiger Direktspeicherzugriffs- (DMA-) Controller, der extern getriggert werden kann und in einer programmierbaren Reihenfolge auch zu verschiedenen nicht-sequentiellen Speicherplätzen springen kann.
  • Gemäß einer Ausführungsform kann ein programmierbarer reihenfolgebeliebiger Direktspeicherzugriffs- (DMA-) Controller aufweisen: ein erstes Adresszeigerregister; ein zweites Adresszeigerregister; einen Datenzwischenspeicher, der mit einem ersten Datenbus gekoppelt ist; einen Adresszwischenspeicher, der mit einem zweiten Datenbus gekoppelt ist; einen Multiplexer mit einem ersten Eingang, der mit dem ersten Adresszeigerregister gekoppelt ist, einem zweiten Eingang, der mit dem Adresszwischenspeicher gekoppelt ist, einem dritten Eingang, der mit dem zweiten Adresszeigerregister gekoppelt ist, und einem Ausgang, der mit einem Adressbus gekoppelt ist; und eine Steuerlogik, die mit den ersten und zweiten Adresszeigerregistern, dem Adresszwischenspeicher, dem Multiplexer und dem Datenzwischenspeicher gekoppelt ist und diese steuert.
  • Gemäß einer weiteren Ausführungsform kann die Steuerlogik mit einer Buszuteilungslogik kommunizieren. Gemäß einer weiteren Ausführungsform kann der Datenzwischenspeicher in den ersten Datenbus schreiben und von diesem lesen. Gemäß einer weiteren Ausführungsform kann der erste Datenbus mit einem Datenspeicher gekoppelt sein. Gemäß einer weiteren Ausführungsform kann der zweite Datenbus mit einem Programmspeicher gekoppelt sein. Gemäß einer weiteren Ausführungsform kann der Programmspeicher ein nichtflüchtiger Speicher sein. Gemäß einer weiteren Ausführungsform kann der nichtflüchtige Speicher ein programmierbarer Flash-Speicher sein. Gemäß einer weiteren Ausführungsform kann der Datenspeicher ein Direktzugriffsspeicher (RAM) sein. Gemäß einer weiteren Ausführungsform können der erste und der zweite Datenbus mit einem Speicher gekoppelt sein. Gemäß einer weiteren Ausführungsform können erste und zweite Bytezähler mit der Steuerlogik kommunizieren und können eine Anzahl übertragener Datenbytes zählen.
  • Gemäß einer anderen Ausführungsform kann ein Verfahren zur indirekten Speicheradressierung mit einem programmierbaren reihenfolgebeliebigen Direktspeicherzugriffs- (DMA-) Controller die Schritte aufweisen: Lesen einer Registeradresse, die an einer durch ein erstes Adresszeigerregister spezifizierten Speicheradresse gespeichert ist; Speichern der Registeradresse in einem Adresszwischenspeicher; Lesen von Konfigurationsdaten, die an einer anderen Speicheradresse gespeichert sind, die durch ein zweites Adresszeigerregister spezifiziert ist; Speichern der Konfigurationsdaten in einem Datenzwischenspeicher; und Schreiben der im Datenzwischenspeicher gespeicherten Konfigurationsdaten in ein Register an der im Adresszwischenspeicher gespeicherten Registeradresse.
  • Gemäß einer weiteren Ausführungsform kann das Verfahren den Schritt des Koppelns des Datenzwischenspeichers mit einem ersten Datenbus und Datenspeicher aufweisen. Gemäß einer weiteren Ausführungsform kann das Verfahren den Schritt des Koppelns des Adresszwischenspeicher mit einem zweiten Datenbus und Programmspeicher aufweisen. Gemäß einer weiteren Ausgestaltung des Verfahrens kann das Register ein peripheres Register sein. Gemäß einer weiteren Ausgestaltung des Verfahrens kann das periphere Register ein Sonderfunktionsregister sein. Gemäß einer weiteren Ausführungsform des Verfahrens kann das Spezialfunktionsregister einem kernunabhängigen Peripheriegerät (CIP) zugeordnet sein. Gemäß noch einer weiteren Ausführungsform weist ein Verfahren zur indirekten Speicheradressierung mit einem programmierbaren reihenfolgebeliebigen Direktspeicherzugriffs- (DMA-) Controller die Schritte auf: Lesen einer Registeradresse, die an einer durch ein erstes Adresszeigerregister spezifizierten Speicheradresse gespeichert ist; Speichern der Registeradresse in einem Adresszwischenspeicher; Lesen von Konfigurationsdaten, die in einem peripheren Register gespeichert sind, das eine Speicheradresse aufweist, die durch die Registeradresse im Adresszwischenspeicher spezifiziert ist; Speichern der Konfigurationsdaten in einem Datenzwischenspeicher; und Schreiben der Konfigurationsdaten in einen Speicher an einer durch ein zweites Adresszeigerregister spezifizierten Adresse.
  • Gemäß einer weiteren Ausführungsform kann das Verfahren den Schritt des Koppelns des Datenzwischenspeichers mit einem ersten Datenbus und Datenspeicher aufweisen. Gemäß einer weiteren Ausführungsform kann das Verfahren den Schritt des Koppelns des Adresszwischenspeicher mit einem zweiten Datenbus und Programmspeicher aufweisen. Gemäß einer weiteren Ausgestaltung des Verfahrens kann das Register ein peripheres Register sein. Gemäß einer weiteren Ausgestaltung des Verfahrens kann das periphere Register ein Sonderfunktionsregister sein. Gemäß einer weiteren Ausführungsform des Verfahrens kann das Spezialfunktionsregister einem kernunabhängigen Peripheriegerät (CIP) zugeordnet sein.
  • Figurenliste
  • Ein vollständigeres Verständnis der vorliegenden Offenbarung kann durch Bezugnahme auf die folgende Beschreibung in Verbindung mit den begleitenden Zeichnungen erlangt werden, wobei:
    • 1 ein schematisches Blockschaltbild eines Direktspeicherzugriffs-(DMA)-Controllers gemäß Stand der Technik veranschaulicht;
    • 2 ein schematisches Blockdiagramm eines programmierbaren reihenfolgebeliebigen DMA-Controllers gemäß spezifischen beispielhaften Ausführungsformen dieser Offenbarung veranschaulicht;
    • 3 ein schematisches Flussdiagramm des Betriebs des programmierbaren reihenfolgebeliebigen DMA-Controllers nach 2 veranschaulicht, der neue Konfigurationsdaten gemäß spezifischen beispielhaften Ausführungsformen dieser Offenbarung in einen Speicherort für beliebige Reihenfolge lädt;
    • 4 ein schematisches Flussdiagramm des Betriebs des programmierbaren reihenfolgebeliebigen DMA-Controllers von 2 veranschaulicht, der vorhandene Konfigurationsdaten gemäß spezifischen beispielhaften Ausführungsformen dieser Offenbarung aus einem Speicherort für beliebige Reihenfolge liest; und
    • 5 ein schematisches Blockschaltbild von sequentiellen und nicht-sequentiellen Speicherplätzen veranschaulicht.
  • Während die vorliegende Offenbarung verschiedenen Modifikationen und alternativen Formen zugänglich ist, wurden spezifische beispielhafte Ausführungsformen davon in den Zeichnungen gezeigt und hierin im Detail beschrieben. Es versteht sich jedoch, dass die hierin beschriebene Beschreibung spezifischer beispielhafter Ausführungsformen die Offenbarung nicht auf die hierin offenbarten Formen beschränken soll.
  • DETAILLIERTE BESCHREIBUNG
  • Ausführungsformen der vorliegenden Offenbarung können einen programmierbaren reihenfolgebeliebigen DMA-Controller aufweisen. Auf eine Seite einer Speichersystemadresse (Quelle oder Ziel) wird normal (sequentiell) unter Verwendung von Quellen-/Zieladressenregistern und einem Zähler zugegriffen. Auf die zweite Seite des Speichersystems (Ziel oder Quelle) wird indirekt zugegriffen. Ein Adressregister hält eine Adresse eines Speicherplatzes. Der Speicherplatz enthält den tatsächlichen Speicherplatz, auf den zugegriffen werden soll. Unter Verwendung dieser Methode, kann zum Beispiel, jedoch ohne Einschränkung, eine Liste von Sonderfunktionsregisteradressen (SFR) in den Speicher programmiert werden, und wenn der DMA ausgelöst wird, werden die Daten in der von einer Liste im Programm vorgegebenen Reihenfolge an die SFR-Adressen übertragen. SFRs sind im Allgemeinen Register zum Konfigurieren und Steuern der Funktionalität verschiedener Peripheriegeräte. Für einen einfachen Zugriff auf diese Register sind sie auf den Datenspeicherplatz speicherabgebildet.
  • Gemäß bestimmten beispielhaften Ausführungsformen dieser Offenbarung kann der programmierbare reihenfolgebeliebige DMA-Controller die Inhalte mehrerer Peripheriegeräte in den Speicher oder vom Speicher in die Peripherie-SFRs kopieren, ohne dass die Adressen der SFRs in sequentieller Reihenfolge vorliegen müssen. Es ermöglicht dem DMA auch, die Peripheriegeräte möglicherweise auf eine von mehreren voreingestellten Konfigurationen umzukonfigurieren, indem einfach auf verschiedene Listen Bezug genommen wird. Der DMA kann auch durch ein externes Signal getriggert werden, das ein dynamisches System erzeugt, das die SFRs rekonfigurieren kann, z. B. von den CIPs als Reaktion auf externe Stimuli.
  • Die vorgeschlagene Lösung ist einfacher, als zwei DMA-Controller zu benötigen, da sie eine Modifikation eines bestehenden DMA-Controller-Designs ist. Außerdem entfällt die Notwendigkeit, zwei verschiedene DMA-Controller über Kreuz zu verbinden. Es sollte kleiner und schneller sein und einen kleineren SFR-Footprint haben als ein Paar von DMA-Controllern. In einer anderen Ausführungsform kann der DMA-Controller weiter verbessert werden, indem er ein Betriebsmodusregister aufweist, das es ermöglicht, den DMA-Controller so zu steuern, dass er entweder im herkömmlichen Betriebsmodus oder im indirekten Betriebsmodus arbeitet, wie unten ausführlicher erläutert wird.
  • Nun auf die Zeichnungen Bezug nehmend, werden die Details von beispielhaften Ausführungsformen schematisch dargestellt. Gleiche Elemente in den Zeichnungen werden durch gleiche Zahlen dargestellt, und ähnliche Elemente werden durch gleiche Zahlen mit einem anderen Kleinbuchstaben-Suffix dargestellt.
  • In 1 ist ein schematisches Blockschaltbild eines Direktspeicherzugriffs-(DMA)-Controllers nach dem Stand der Technik dargestellt. Der DMA-Controller kann ein erstes Adresszeigerregister 102, ein zweites Adresszeigerregister 104, einen ersten Bytezähler 106, eine Steuerlogik 108, einen zweiten Bytezähler 110, einen Multiplexer 112 mit zwei Eingängen und einen Datenzwischenspeicher 118 aufweisen. Der Multiplexer 112 kann mit einem Speicheradressbus 114 gekoppelt sein und der Datenzwischenspeicher 118 kann mit einem Speicherdatenbus 116 gekoppelt sein. Die Steuerlogik 108 kann mit einer Buszuteilungslogik (nicht gezeigt) kommunizieren. Die ersten und zweiten Adresszeigerregister 102 und 104 inkrementieren sequentiell mit einem Zähler (nicht gezeigt) und zeigen auf sequentielle Speicherorte. Das erste Adresszeigerregister 102 enthält eine Adresse eines Speicherorts, von dem Daten abgerufen werden sollen. Das zweite Adresszeigerregister 104 enthält eine Adresse eines anderen Speicherorts, in den Daten geschrieben werden sollen. Der Speicher (nicht gezeigt) kann unter anderem ein Flash-Programmspeicher, Firmware-Speicher, Direktzugriffsspeicher (RAM) sein, ist aber nicht darauf beschränkt.
  • Die Daten werden zuerst aus dem durch das erste Adresszeigerregister 102 spezifizierten Speicherort gelesen, wobei der Multiplexer 112 eine Quelladresse aus dem ersten Adresszeigerregister 102 an den Adressbus 114 koppelt, der mit dem Speicherbus (nicht gezeigt) gekoppelt ist. Die Inhalte (Daten) dieser Speicher- (Quellen-) Ort werden über den Datenbus 116 gelesen und im Datenzwischenspeicher 118 gespeichert. Dann koppelt der Multiplexer 112 eine Zieladresse aus dem zweiten Adresszeigerregister 104 an den Adressbus 114 und ein Speicher- (Ziel-) Ort an dieser Adresse wird mit den Inhalten (Daten), die im Datenzwischenspeicher 118 gespeichert sind, über den Datenbus 116 beschrieben. Der Adressbus 114 und der Datenbus 116 können mit einem Speicher (nicht gezeigt) gekoppelt sein.
  • Die oben erwähnte Speicherdatenübertragungsoperation funktioniert gut, wenn die Speicheradressenplätze sequentiell angeordnet sind, aber nicht so gut, wenn dies nicht der Fall ist, da nicht sequentielle Speicheradressenplätze möglicherweise nicht zwischengespeichert werden können und/oder die Latenzzeiten der Speicheradressierung erhöhen. Eine Möglichkeit, nicht-sequentielle DMA-Übertragungen durchzuführen, erfordert zwei der in 1 gezeigten DMA-Controller. Dies ist sehr ineffizient, da mehrere Register dupliziert werden und die Schreibgeschwindigkeit langsamer ist. Es erfordert auch, dass die beiden DMA-Controller so querverbunden sind, dass sie sich gegenseitig triggern. Wenn entweder ein Fehler oder ein Fehlerzustand auftritt, schlagen die Datenübertragung(en) fehl.
  • Unter Bezugnahme auf 2 ist ein schematisches Blockdiagramm eines programmierbaren reihenfolgebeliebigen DMA-Controllers gemäß spezifischen beispielhaften Ausführungsformen dieser Offenbarung dargestellt. Ein programmierbarer reihenfolgebeliebiger DMA-Controller, allgemein mit der Nummer 200 bezeichnet, der einen besseren und effizienteren Weg bietet, DMA-Transfers in beliebiger Reihenfolge zu handhaben, ist in 2 gezeigt. Der programmierbare reihenfolgebeliebige DMA-Controller 200 kann ein erstes Adresszeigerregister 202 aufweisen, ein zweites Adresszeigerregister 204, einen ersten Bytezähler 206, eine Steuerlogik 208, einen zweiten Bytezähler 210, einen Multiplexer 212 mit Ausgängen, die mit einem Adressbus 214 gekoppelt sind, ein Datenzwischenspeicher 218 mit Ausgängen und Eingängen, die mit einem ersten Datenbus 216 gekoppelt sind, einen Adresszwischenspeicher 220 mit Eingängen, die an einen zweiten Datenbus 222 gekoppelt sind, und eine Buszuteilungslogik 228 in Kommunikation mit der Steuerlogik 208.
  • Der erste Datenbus 216 kann mit einem Datenspeicher 226 gekoppelt sein und der zweite Datenbus 222 kann mit einem Programmspeicher 224 gekoppelt sein. Der Datenspeicher 226 kann beispielsweise ein Acht-Bit-Speicher sein, ist aber nicht darauf beschränkt, und der Programmspeicher 224 kann beispielsweise ein 14-Bit-Speicher sein, ist aber nicht darauf beschränkt. Die Adressierung jedes Speichers kann über den Adressbus 214 erfolgen. Der Programmspeicher 224 kann indirekte Zieladressen beinhalten, an die die Daten übertragen oder von denen diese gelesen werden sollen. Der mit dem zweiten Datenbus 222 gekoppelte Programmspeicher 224 kann beispielsweise ein nichtflüchtiger Direktzugriffsspeicher (RAM) wie beispielsweise ein programmierbarer Flash-Speicher sein, ist aber nicht darauf beschränkt. Der Datenspeicher 226 kann ein flüchtiger oder ein nichtflüchtiger RAM sein. Der Datenspeicher 226 und der Programmspeicher 224 können die gleiche Bitbreite aufweisen und aus einem einzigen Speicher bestehen.
  • Der Betrieb des in 2 gezeigten programmierbaren reihenfolgebeliebigen DMA-Controllers wird nachstehend unter Bezugnahme auf 3 und 4 und deren Beschreibungen ausführlicher offenbart. Der zweite Datenbus 222 kann mit demselben oder einem anderen Speicher wie der erste Datenbus 216 gekoppelt sein. Der Adresszwischenspeicher 220 ist über den zweiten Datenbus 222 mit dem Programmspeicher 224 gekoppelt und liest und speichert indirekte Zieladressen aus bzw. in dem Programmspeicher 224. Zwischenspeicher 218 kann über den ersten Datenbus 216 Daten in seinen zugeordneten Speicher lesen und in diesen schreiben. Die Steuerlogik 208 kann mit der Buszuteilungslogik 228 kommunizieren. Die Bytezähler 206 und 210 können verwendet werden, um die Anzahl der übertragenen Speicherbytes zu zählen.
  • Damit der DMA-Controller in einem herkömmlichen Modus arbeiten kann, wie in 1 gezeigt, ist ein Betriebsmodusregister 250 vorgesehen. Das Betriebsmodusregister kann den Betrieb entweder im konventionellen Modus oder im indirekten Modus ermöglichen, beispielsweise durch Löschen oder Setzen eines Bits 255 in Register 250. Andere Konfigurationen sind möglich und es können mehr als ein Bit im Register 250 verwendet werden, um den tatsächlichen Betriebsmodus zu definieren. Beim Betrieb im herkömmlichen Betriebsmodus wird der Adresszwischenspeicher 220 nicht verwendet und der DMA-Controller funktioniert, wie oben gemäß 1 beschrieben. Das Betriebsmodusregister kann ein speicherabgebildetes Spezialfunktionsregister 250 oder es können unbenutzte Bits eines bereits vorhandenen Konfigurationsregisters zum Einstellen des indirekten oder herkömmlichen DMA-Betriebsmodus verwendet werden.
  • Verweise auf kernunabhängige Peripherie-(CIP)- und Spezialfunktionsregister-(SFR)-Adressen und -Daten werden hier zu Veranschaulichungszwecken verwendet, wie in 3 und 4 und deren Beschreibungen hiernach gezeigt. Ein Fachmann mit gewöhnlichen Kenntnissen auf dem Gebiet der Digitalelektronik und dem Nutzen dieser Offenbarung wird die Lehren dieser Offenbarung leicht verstehen und in der Lage sein, die Lehren dieser Offenbarung auf andere Anwendungen und das Schreiben und Lesen von peripheren Registerkonfigurationen, die eine indirekte DMA-Adressierung erfordern, anzuwenden.
  • Unter Bezugnahme auf 3 ist ein schematisches Flussdiagramm des Betriebs des programmierbaren reihenfolgebeliebigen DMA-Controllers nach 2 dargestellt, der gemäß bestimmten beispielhaften Ausführungsformen dieser Offenbarung neue Konfigurationsdaten in einen reihenfolgebeliebigen Speicherort lädt. Der reihenfolgebeliebige Speicherort wird durch eine Speicheradresse bestimmt, die an einem anderen Speicherort gespeichert ist. In Schritt 302 beginnen DMA-Übertragungen. A) In Schritt 304 wird eine CIP-SFR-Adresse, die im Speicher an einer durch ein erstes Adresszeigerregister 202 spezifizierten Speicheradresse gespeichert ist, gelesen und dann in Schritt 306 in einem Adresszwischenspeicher 220 gespeichert, z. B. aus dem Programmspeicher 224 über den zweiten Datenbus 222. B) In Schritt 308 werden CIP-Konfigurationsdaten, die im Datenspeicher 226 an einer durch ein zweites Adresszeigerregister 204 spezifizierten Speicheradresse gespeichert sind, unter Verwendung des Adressbusses 214 und des zweiten Datenbusses 222 gelesen und in Schritt 310 im Datenzwischenspeicher 218 gespeichert. C) In Schritt 312 werden die im Datenzwischenspeicher 218 von Schritt 310 gespeicherten CIP-Konfigurationsdaten unter Verwendung des Adressbusses 214 und des ersten Datenbus 216 in die CIP-SFR- (Speicher-) Adresse geschrieben, die eine bestimmte Adresse im Datenspeicher 226 ist, die im Adresszwischenspeicher 220 gespeichert ist. Somit sind nur drei DMA-Transfers erforderlich, um eine indirekte Adressierung durchzuführen, um einen CIP-SFR zu konfigurieren oder zu aktualisieren. Diese DMA-Transfers können für jeden CIP-SFR, der geladen oder aktualisiert werden muss, wiederholt werden, z. B. für eine Vielzahl von CIP-SFRs.
  • Unter Bezugnahme auf 4 ist ein schematisches Flussdiagramm des Betriebs des programmierbaren reihenfolgebeliebigen DMA-Controllers nach 2 dargestellt, der gemäß spezifischen beispielhaften Ausführungsformen dieser Offenbarung vorhandene Konfigurationsdaten aus einem reihenfolgebeliebigen Speicherort liest. Der reihenfolgebeliebige Speicherort wird durch eine Speicheradresse bestimmt, die an einem anderen Speicherort gespeichert ist, die durch in einem Adresszeigerregister spezifiziert ist. In Schritt 402 beginnen DMA-Übertragungen. A) In Schritt 404 wird eine CIP-SFR-Adresse, die im Speicher, z. B. Programmspeicher 224, unter Verwendung des Adressbusses 214 und des zweiten Datenbusses 222 an einer durch ein erstes Adresszeigerregister 202 spezifizierten Speicheradresse gespeichert, und dann in Schritt 406 durch Koppeln des Adresszwischenspeichers 220 mit dem zweiten Datenbus 222 und dem Programmspeicher 224 in einem Adresszwischenspeicher 220 gespeichert. B) In Schritt 408 werden CIP-Konfigurationsdaten, die in dem CIP-SFR gespeichert sind, der eine bestimmte Adresse im Datenspeicher 226 ist, an einer durch den Adresszwischenspeicher 220 spezifizierten Speicheradresse gelesen, indem der Adresszwischenspeicher 220 mit dem Adressbus 214 und dem ersten Datenbus 216 gekoppelt und diese verwendet werden, und dann in Schritt 410 in dem Datenzwischenspeicher 218 gespeichert. C) In Schritt 412 werden die in dem Datenzwischenspeicher 218 gespeicherten CIP-Konfigurationsdaten unter Verwendung des Adressbusses 214 und des Datenbusses 216 in eine Speicheradresse des Datenspeichers 226 geschrieben, die durch ein zweites Adresszeigerregister 204 spezifiziert ist. Somit sind nur drei DMA-Transfers erforderlich, um eine indirekte Adressierung durchzuführen, um den Inhalt von einem CIP SFR zu lesen und diesen an einem Speicherort zu speichern, der durch das erste Adresszeigerregister 202 definiert ist. Diese DMA-Übertragungen können für jeden CIP-SFR wiederholt werden, der gelesen werden muss, z. B. für eine Vielzahl von CIP-SFRs.
  • In 5 ist ein schematisches Blockschaltbild von sequentiellen und nicht sequentiellen Speicherplätzen dargestellt. Sequentielle Speicherplätze 520, die einen Teil des Programmspeichers 224 darstellen können, können verwendet werden, um die Adressen von nicht-sequentiellen Speicherplätzen 530-544 zu speichern, die einen Teil des Datenspeichers 226 darstellen können. Die nicht-sequentiellen Speicherplätze 530-544 können auf spezielle Funktionsregister verschiedener Peripheriegeräte zum Speichern von Daten, z. B. Konfigurationsdaten, speicherabgebildet sein. Die Register können mindestens ein Spezialfunktionsregister (SFR) 560 eines kernunabhängigen Peripheriegeräts (CIP) 562 aufweisen, das einen nicht sequentiellen Speicherort 544 aufweist. Alternativ kann das SFR 560 ein peripheres Register sein. Adressen für die nicht sequentiellen Speicherplätze 530-544 können in den sequentiellen Speicherplätzen 520a-n gespeichert werden und auf diese kann wie oben beschrieben zugegriffen werden. Die nicht-sequentiellen Speicherplätze 530-544 können hauptsächlich für SFR-560-Adressen verwendet werden.
  • Die vorliegende Offenbarung wurde in Bezug auf eine oder mehrere Ausführungsformen beschrieben, und es sollte verstanden werden, dass viele Äquivalente, Alternativen, Variationen und Modifikationen, abgesehen von den ausdrücklich genannten, möglich sind und im Schutzumfang der Offenbarung liegen. Während die vorliegende Offenbarung verschiedenen Modifikationen und alternativen Formen zugänglich ist, wurden spezifische beispielhafte Ausführungsformen davon in den Zeichnungen gezeigt und hierin im Detail beschrieben. Es versteht sich jedoch, dass die hierin beschriebene Beschreibung spezifischer beispielhafter Ausführungsformen die Offenbarung nicht auf die hierin offenbarten besonderen Formen beschränken soll.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 62/811400 [0001]

Claims (26)

  1. Programmierbarer reihenfolgebeliebiger Direct-Memory-Access- (DMA-) Controller, der aufweist: ein erstes Adresszeigerregister; ein zweites Adresszeigerregister; einen Datenzwischenspeicher, der mit einem ersten Datenbus gekoppelt ist; einen Adresszwischenspeicher, der mit einem zweiten Datenbus gekoppelt ist; einen Multiplexer, der einen ersten Eingang aufweist, der mit dem ersten Adresszeigerregister gekoppelt ist, einen zweiten Eingang aufweist, der mit dem Adresszwischenspeicher gekoppelt ist, einen dritten Eingang aufweist, der mit dem zweiten Adresszeigerregister gekoppelt ist, und einen Ausgang aufweist, der mit einem Adressbus gekoppelt ist; und Steuerlogik, die mit den ersten und zweiten Adresszeigerregistern, dem Adresszwischenspeicher, dem Multiplexer und dem Datenzwischenspeicher gekoppelt ist und diese steuert.
  2. Programmierbarer reihenfolgebeliebiger DMA-Controller gemäß Anspruch 1, der weiterhin ein Steuerregister aufweist, das ausgebildet ist, um einen Betriebsmodus des DMA-Controllers zu steuern, wobei, wenn er in einem ersten Modus arbeitet, der DMA-Controller ausgebildet ist, um das erste Adresszeigerregister zum Speichern einer Quelladresse und das zweite Adresszeigerregister zum Speichern einer Zieladresse zu verwenden, und wenn er in einem zweiten Modus arbeitet, der DMA-Controller ausgebildet ist, um von dem zweiten Datenbus eine Quell- oder eine Zieladresse in dem Adresszwischenspeicher zu empfangen.
  3. Programmierbarer reihenfolgebeliebiger DMA-Controller gemäß Anspruch 2, wobei ein Bit in dem Steuerregister bestimmt, ob der DMA-Controller im ersten oder zweiten Modus arbeitet.
  4. Programmierbarer reihenfolgebeliebiger DMA-Controller gemäß einem der Ansprüche 1 bis 3, wobei die Steuerlogik mit einer Buszuteilungslogik kommuniziert.
  5. Programmierbarer reihenfolgebeliebiger DMA-Controller gemäß einem der Ansprüche 1 bis 4, wobei der Datenzwischenspeicher in den ersten Datenbus schreibt und daraus liest.
  6. Programmierbarer reihenfolgebeliebiger DMA-Controller gemäß einem der Ansprüche 1 bis 5, wobei der erste Datenbus mit einem Datenspeicher gekoppelt ist.
  7. Programmierbarer reihenfolgebeliebiger DMA-Controller gemäß einem der Ansprüche 1 bis 6, wobei der zweite Datenbus mit einem Programmspeicher gekoppelt ist.
  8. Programmierbarer reihenfolgebeliebiger DMA-Controller gemäß Anspruch 7, wobei der Programmspeicher ein nichtflüchtiger Speicher ist.
  9. Programmierbarer reihenfolgebeliebiger DMA-Controller gemäß Anspruch 8, wobei der nichtflüchtige Speicher ein programmierbarer Flash-Speicher ist.
  10. Programmierbarer reihenfolgebeliebiger DMA-Controller gemäß Anspruch 6, wobei der Datenspeicher ein Speicher mit wahlfreiem Zugriff (RAM) ist.
  11. Programmierbarer reihenfolgebeliebiger DMA-Controller gemäß einem der Ansprüche 1 bis 10, wobei der erste und der zweite Datenbus mit einem Speicher gekoppelt sind.
  12. Programmierbarer reihenfolgebeliebiger DMA-Controller gemäß einem der Ansprüche 1 bis 11, der weiterhin erste und zweite Bytezähler aufweist, die mit der Steuerlogik kommunizieren und eine Anzahl übertragener Datenbytes zählen.
  13. Verfahren zur indirekten Speicheradressierung mit einem programmierbaren reihenfolgebeliebigen Direct-Memory-Access- (DMA-) Controller, wobei das Verfahren die Schritte aufweist: Lesen einer Registeradresse, die an einer durch ein erstes Adresszeigerregister spezifizierten Speicheradresse gespeichert ist; Speichern der Registeradresse in einem Adresszwischenspeicher; Lesen von Konfigurationsdaten, die an einer anderen Speicheradresse gespeichert sind, die durch ein zweites Adresszeigerregister spezifiziert ist; Speichern der Konfigurationsdaten in einem Datenzwischenspeicher; und Schreiben der im Datenzwischenspeicher gespeicherten Konfigurationsdaten in ein Register an der im Adresszwischenspeicher gespeicherten Registeradresse.
  14. Verfahren gemäß Anspruch 13, wobei das Register ein peripheres Register ist.
  15. Verfahren gemäß Anspruch 14, wobei das periphere Register ein Spezialfunktionsregister ist.
  16. Verfahren gemäß Anspruch 15, wobei das Spezialfunktionsregister einem kernunabhängigen Peripheriegerät (CIP) zugeordnet ist.
  17. Verfahren gemäß einem der Ansprüche 13 bis 16, das weiterhin den Schritt des Koppelns des Datenzwischenspeichers mit einem ersten Datenbus und Datenspeicher aufweist.
  18. Verfahren gemäß einem der Ansprüche 13 bis 17, das weiterhin den Schritt des Koppelns des Adresszwischenspeichers mit einem zweiten Datenbus und Programmspeicher aufweist.
  19. Verfahren gemäß einem der Ansprüche 13 bis 18, wobei der DMA-Controller konfigurierbar ist, um in einem Direktadressierungsmodus zu arbeiten, in dem das erste Adresszeigerregister eine Quelladresse speichert und das zweite Adresszeigerregister eine Zieladresse speichert.
  20. Verfahren zur indirekten Speicheradressierung mit einem programmierbaren reihenfolgebeliebigen Direct-Memory-Access- (DMA-) Controller, wobei das Verfahren die Schritte aufweist: Lesen einer Registeradresse, die an einer durch ein erstes Adresszeigerregister spezifizierten Speicheradresse gespeichert ist; Speichern der Registeradresse in einem Adresszwischenspeicher; Lesen von Konfigurationsdaten, die in einem peripheren Register gespeichert sind, das eine Speicheradresse aufweist, die durch die Registeradresse im Adresszwischenspeicher spezifiziert ist; Speichern der Konfigurationsdaten in einem Datenzwischenspeicher; und Schreiben der Konfigurationsdaten in einen Speicher an einer durch ein zweites Adresszeigerregister spezifizierten Adresse.
  21. Verfahren gemäß Anspruch 20, wobei das Register ein peripheres Register ist.
  22. Verfahren gemäß Anspruch 21, wobei das periphere Register ein Spezialfunktionsregister ist.
  23. Verfahren gemäß Anspruch 22, wobei das Spezialfunktionsregister einem kernunabhängigen Peripheriegerät (CIP) zugeordnet ist.
  24. Verfahren gemäß einem der Ansprüche 20 bis 23, das weiterhin den Schritt des Koppelns des Datenzwischenspeichers mit einem ersten Datenbus und Datenspeicher aufweist.
  25. Verfahren gemäß einem der Ansprüche 20 bis 24, das weiterhin den Schritt des Koppelns des Adresszwischenspeichers mit einem zweiten Datenbus und Programmspeicher aufweist.
  26. Verfahren gemäß einem der Ansprüche 20 bis 25, wobei der DMA-Controller konfigurierbar ist, um in einem Direktadressierungsmodus zu arbeiten, in dem das erste Adresszeigerregister eine Quelladresse speichert und das zweite Adresszeigerregister eine Zieladresse speichert.
DE112019006932.2T 2019-02-27 2019-06-21 Programmierbarer direct-memory-access-controller mitbeliebiger reihenfolge zur konfiguration von mehreren kernunabhängigen peripheriegeräten Pending DE112019006932T5 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962811400P 2019-02-27 2019-02-27
US62/811,400 2019-02-27
US16/377,439 US10983936B2 (en) 2019-02-27 2019-04-23 Programmable arbitrary sequence direct memory access controller for configuring multiple core independent peripherals
US16/377,439 2019-04-23
PCT/US2019/038390 WO2020176123A1 (en) 2019-02-27 2019-06-21 Programmable arbitrary sequence direct memory access controller for configuring multiple core independent peripherals

Publications (1)

Publication Number Publication Date
DE112019006932T5 true DE112019006932T5 (de) 2021-12-02

Family

ID=72141137

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019006932.2T Pending DE112019006932T5 (de) 2019-02-27 2019-06-21 Programmierbarer direct-memory-access-controller mitbeliebiger reihenfolge zur konfiguration von mehreren kernunabhängigen peripheriegeräten

Country Status (4)

Country Link
US (1) US10983936B2 (de)
CN (1) CN113474761B (de)
DE (1) DE112019006932T5 (de)
WO (1) WO2020176123A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10983936B2 (en) * 2019-02-27 2021-04-20 Microchip Technology Incorporated Programmable arbitrary sequence direct memory access controller for configuring multiple core independent peripherals
US12468476B2 (en) 2020-12-24 2025-11-11 Alibaba Group Holding Limited Hybrid memory management systems and methods with in-storage processing and attribute data management
GB202215220D0 (en) * 2022-10-14 2022-11-30 Nordic Semiconductor Asa Direct memory access controller

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4847750A (en) 1986-02-13 1989-07-11 Intelligent Instrumentation, Inc. Peripheral DMA controller for data acquisition system
EP0333231B1 (de) * 1988-03-18 1995-06-14 Nec Corporation Mikrocomputersystem, fähig zum Speicherzugriff mit hoher Geschwindigkeit
US5513374A (en) * 1993-09-27 1996-04-30 Hitachi America, Inc. On-chip interface and DMA controller with interrupt functions for digital signal processor
US5678063A (en) 1995-04-19 1997-10-14 National Instruments Corporation System and method for performing efficient random write operations
US6202106B1 (en) * 1998-09-09 2001-03-13 Xilinx, Inc. Method for providing specific knowledge of a structure of parameter blocks to an intelligent direct memory access controller
US6189082B1 (en) * 1999-01-29 2001-02-13 Neomagic Corp. Burst access of registers at non-consecutive addresses using a mapping control word
US7650440B2 (en) 2006-07-25 2010-01-19 Microchip Technology Incorporated Peripheral supplied addressing in a simple DMA module
US20180107591A1 (en) * 2011-04-06 2018-04-19 P4tents1, LLC System, method and computer program product for fetching data between an execution of a plurality of threads
US9489009B2 (en) * 2014-02-20 2016-11-08 Samsung Electronics Co., Ltd. System on chip, bus interface and method of operating the same
US10225944B2 (en) * 2016-01-29 2019-03-05 Ncr Corporation Mounting plinth for self-service terminal (SST)
US10360164B1 (en) * 2018-01-19 2019-07-23 Microchip Technology Incorporated Direct memory access adapter
US10983936B2 (en) * 2019-02-27 2021-04-20 Microchip Technology Incorporated Programmable arbitrary sequence direct memory access controller for configuring multiple core independent peripherals

Also Published As

Publication number Publication date
CN113474761B (zh) 2024-07-26
CN113474761A (zh) 2021-10-01
US10983936B2 (en) 2021-04-20
WO2020176123A1 (en) 2020-09-03
US20200272588A1 (en) 2020-08-27

Similar Documents

Publication Publication Date Title
DE69021899T2 (de) DMA-Steuerung.
DE2350215C2 (de) Rechenanlage
DE60100476T2 (de) Unterstützung mehrerer konfigurationszustände eines fpga mittels eines auf dem integrierten schaltkreis dafür vorgesehenen prozessors
DE69915243T2 (de) Speicherplattenanordnung-Steuerungsvorrichtung
DE69906156T2 (de) Mikroprozessorvorrichtung mit programmierbaren wartezuständen
WO2005073865A2 (de) Vorrichtung zur datenübertragung zwischen speichern
DE68923863T2 (de) Ein-/Ausgabecachespeicherung.
DE2953861C2 (de)
DE68928040T2 (de) Pufferspeichersubsystem für Peripheriesteuerungen und Verfahren
DE102014103347A1 (de) Bedingte Verkettungsglieder für Direct-Memory-Access-Controller
DE3303488A1 (de) Digitales signalverarbeitungssystem
DE69838701T2 (de) Vorrichtung zum Lese/-Schreibzugriff von Registern in zentraler Verarbeitungseinheit
DE3687867T2 (de) Mikrorechner.
DE69611510T2 (de) Zentrale Verarbeitungseinheit mit Cache-Speicher
DE68929080T2 (de) Anordnung zum Speichern von Informationen für einen Datenanbieterprozessor
DE602004010399T2 (de) Neuadressierbare virtuelle dma-steuer und statusregister
DE69119149T2 (de) Struktur zur direkten Speicher-zu-Speicher-Übertragung
DE112019002336T5 (de) Speicherpoolzuordnung für ein mehrkern-system
DE112019006932T5 (de) Programmierbarer direct-memory-access-controller mitbeliebiger reihenfolge zur konfiguration von mehreren kernunabhängigen peripheriegeräten
DE2718551B2 (de)
DE602005002691T2 (de) Verfahren zur Programmierung einer System auf Chip DMA Steuerung, sowie ein System auf Chip dafür.
DE2134816A1 (de) Einrichtung zur adressenuebersetzung
DE69033416T2 (de) Hauptspeicherkarten mit Einzelbit-Setz- und Rücksetz-Funktion
DE3855148T2 (de) Speicheradressengenerator
DE112005003216T5 (de) System und Verfahren für Steuerregister, auf die über private Rechenoperationen zugegriffen wird

Legal Events

Date Code Title Description
R012 Request for examination validly filed