-
Hintergrund
-
1. Gebiet der Erfindung
-
Die
vorliegende Erfindung betrifft allgemein kleine Mehrprozessorsysteme,
wie beispielsweise Funktelefone mit einem Steuerprozessor und einem Signalprozessor.
Die Erfindung betrifft spezifischer Systeme, in welchen einer oder
mehrere der Prozessoren ein Softwareprogramm oder eine Sequenz von Schritten
ausführt,
die von Zeit zu Zeit geändert,
modifiziert oder ausgebaut werden könne.
-
2. Zugehöriger Stand
der Technik
-
Ein
Kommunikationsgerät,
wie beispielsweise Funktelefone, führt eine Vielfalt von Signal-
und Datenverarbeitungsfunktionen durch. Bei älteren Systemen verarbeitete
ein digitaler Signalprozessor (DSP) digitalisierte Audiosignale
und steuerte eine Mikroprozessor-Steuereinheit (MCU) allgemeine Systemoperationen,
einschließlich
eines Aufbaus und einer Trennung von Kommunikationen, für eine einzelne
Geräteeinheit
(z.B. ein Telefon). Der DSP und die MCU der einfachsten herkömmlichen
Systeme kommunizieren über
einen gemeinsam genutzten Speicher mit Einzelport und Mehrfachport,
Steuersignale, etc. Jedoch sind zusätzliche Merkmale und Steueroptionen
möglich,
wenn zugelassen ist, dass der DSP und die MCU miteinander beispielsweise über einen
gemeinsam genutzten Speicher kommunizieren. Obwohl Systeme, in welchen
der DSP und die MCU nicht miteinander kommunizieren, möglich sind,
hat die Entwicklung von zellularen Kommunikationen, um eine Unterstützung für digitale
Datenkommunikationen sowie Audiokommunikationen zu enthalten, zu
einer größeren Notwendigkeit
dafür geführt, dass
der DSP und die MCU miteinander kommunizieren.
-
Es
haben sich auch Kommunikationsstandards entwickelt und entwickeln
sich fortlaufend. Standards sind oft derart entwickelt, dass sie
erweiterbar sind, oder neue Merkmale werden klugerweise derart entwickelt,
dass sie mit einem existierenden Standard abwärts kompatibel sind, so dass
die neuen Merkmale auf dem Gebiet ohne die Notwendigkeit ausgenutzt
werden können,
jedes Gerätestück zu ersetzen,
das es bereits auf dem Gebiet gibt. Um eine solche Entwicklung unterzu bringen,
gibt es einen großen
Druck, sich weg von in einem Nurlesespeicher (ROM) sitzender Software
oder Firmware zu bewegen, um auf dem DSP oder der MCU auszuführen. Ein
Modifizieren von ROM-residenter Software oder Firmware ist schwierig,
weil allgemein ein ROM nicht beschrieben werden kann, außer einmal
zur Zeit einer Herstellung.
-
Letztlich
hat der oben beschriebene Druck in der Entwicklung von integrierten
Schaltungen einschließlich
DSP, MCU, ROM und RAM resultiert. Die geldlichen und größenmäßigen Aufwende
für ein Hinzufügen eines
RAM zu integrierten Schaltungssystemen haben erzwungen, dass der
DSP und die MCU einen RAM gemeinsam nutzen, wann immer es möglich ist.
Um eine Kommunikation zwischen dem DSP und der MCU zu ermöglichen
und um ein Verschwenden von jedem Speicherplatz zu vermeiden, was,
wie es angemerkt wird, vorherrschend ist, nutzen sie einen RAM gemeinsam.
Systemsoftware wird in einen RAM geladen, um eine Flexibilität und die Fähigkeit
zum Rekonfigurieren von Systemen zu maximieren, um in Entsprechung
mit sich entwickelnden Kommunikationsstandards zu bleiben. Wenn
jedoch ein Speicher gemeinsam genutzt wird, wie beispielsweise unter
Verwendung der in 1 dargestellten Architektur,
wird die Speicherzugriffsbandbreite ein ernsthaftes Problem.
-
EP 0924623 offenbart ein
Computersystem, das einen Zuteilungsmechanismus enthält, der
zulässt,
dass mehrere Bus-Master auf einen Grafikbus zugreifen.
-
EP 0702307 offenbart ein
Computersystem mit einem Multibuszuteiler zum Zuteilen eines Zugriffs
eines Speicherbusses zwischen zwei ungleichen peripheren Bussen.
-
Die
Erfindung ist durch eine Vorrichtung gemäß Anspruch 1 und ein Verfahren
gemäß Anspruch 19
definiert.
-
Gemäß der Erfindung
ist eine Vorrichtung gemäß Anspruch
1 zur Verfügung
gestellt.
-
Gemäß der Erfindung
ist auch ein Verfahren zum Betreiben eines Buszuteilungsmoduls gemäß Anspruch
19 zur Verfügung
gestellt.
-
Gemäß einem
Aspekt der Erfindung weist eine integrierte Schaltung folgendes
auf: ein erstes Datenverarbeitungsuntersystem mit einem an einen ersten
Bus ange schlossenen ersten Prozessor als Bus-Master; ein zweites
Datenverarbeitungsuntersystem mit einem an einen zweiten Bus angeschlossenen
zweiten Prozessor als Bus-Master; ein erstes Slave-Untersystem mit
einer Speichereinheit, die durch einen des ersten und des zweiten
Prozessors verwendbar ist, mit einem vierten Bus; und der erste, der
zweite, der dritte und der vierte Bus sind über ein Buszuteilungsmodul
miteinander verbunden, das angeordnet ist, um den ersten und den
zweiten Bus-Master mit dem ersten und dem zweiten Slave-Untersystem
ohne Blockierung zu verbinden.
-
Mehrere
Varianten in Bezug auf diesen Aspekt der Erfindung sind möglich. Beispielsweise
kann das erste Slave-Untersystem einen gemeinsam genutzten Speicher
enthalten, der an den dritten Bus angeschlossen ist und durch den
ersten Prozessor über
den dritten Bus gemeinsam genutzt wird. Es kann auch einen lokalen
Speicher geben, der an den ersten Prozessor angeschlossen ist, welcher
direkt mit dem lokalen Speicher kommuniziert. Die Schaltung kann
auch eine Direktzugriffsspeicher-(DMA-)Steuerung und einen an den
dritten Bus und den vierten Bus angeschlossenen DMA-Bus enthalten,
wodurch Daten zwischen dem zweiten, dem dritten und dem vierten
Bus bewegt werden können, die über ein
Buszuteilungsmodul selektiv miteinander verbunden sind, das angeordnet
ist, um den ersten und den zweiten Bus-Master mit dem ersten und
dem zweiten Slave-Untersystem
ohne Blockierung zu verbinden.
-
Gemäß einem
weiteren Aspekt der Erfindung weist eine integrierte Schaltung folgendes
auf: eine Datenkommunikationsvorrichtung, die ein Kommunikationssystem
mit einem ersten internen Bus, ein Überwachungs- und Steuersystem
mit einem zweiten internen Bus aufweist; ein erstes Slave-Vorrichtungssystem
mit einem dritten internen Bus; ein zweites Slave-Vorrichtungssystem
mit einem vierten internen Bus; ein Direktzugriffsspeicher-(DMA-)System
mit einem fünften
internen Bus; und wobei der erste, der zweite, der dritte, der vierte
und der fünfte interne
Bus über
ein Buszuteilungsmodul (BAM) miteinander verbunden sind.
-
Gemäß einem
Aspekt der Erfindung in Bezug auf Telekommunikationssysteme, eine
integrierte Schaltungsvorrichtung, die in einem Telefonapparat verwendet
wird, kann die Vorrichtung in einer integrierten Schaltung einen
DSP, eine MCU, einen gemeinsam genutzten Systemspeicher, einen DSP-Bus,
mit welchem der DSP verbunden ist, einen MCU-Bus, mit welchem die
MCU verbunden ist, eine periphere Einheit und einen peripheren Bus,
mit welchem die periphere Einheit verbunden ist, einen Speicherbus,
mit welchem der gemeinsam genutzte Systemspeicher verbunden ist,
und ein BAM, das selektiv den DSP-Bus und den MCU-Bus mit dem Speicherbus
und dem peripheren Bus verbindet, aufweisen, wobei dann, wenn der
DSP und die MCU einen Zugriff auf unterschiedliche Busse anfordern,
ein Zugriff ohne Blockierung erfolgt.
-
Mehrere
Varianten in Bezug auf die verschiedenen Aspekte der Erfindung sind
möglich.
Beispielsweise kann das erste Slave-Untersystem einen gemeinsam
genutzten Speicher enthalten, der mit dem dritten Bus verbunden
ist und durch den ersten Prozessor über den dritten Bus gemeinsam
genutzt wird. Es kann auch einen lokalen Speicher geben, der mit
dem ersten Prozessor verbunden ist, der direkt mit dem lokalen Speicher
kommuniziert. Die Schaltung kann auch eine Direktzugriffsspeicher-(DMA-)Steuerung
und einen DMA-Bus enthalten, der mit dem dritten Bus und dem vierten
Bus verbunden ist, wodurch Daten zwischen dem ersten Slave-Untersystem
und dem zweiten Slave-Untersystem ohne Intervention durch den ersten
Prozessor oder den zweiten Prozessor bewegt werden können. Es
kann weiterhin eine Speicherzugriffsschnittstelle (MAI) geben, die
einen des dritten und des vierten Busses mit dem lokalen Speicher
verbindet. Der vierte Bus kann eine Verbindung zu einer externen
Vorrichtung enthalten, die eine Speichervorrichtung sein kann.
-
Die
integrierte Schaltung von solchen Aspekten der Erfindung kann weiterhin
einen Systemspeicher aufweisen, auf den durch sowohl das Datenkommunikationssystem
als auch das Überwachungs-
und Steuersystem über
das BAM und den dritten internen Bus zugegriffen wird.
-
Die
Vorrichtung kann so konfiguriert sein, dass das DMA-System Daten
direkt zwischen dem Systemspeicher und dem zweiten Slave-Vorrichtungssystem
kommuniziert. Das zweite Slave-Vorrichtungssystem kann Systemunterstützungselemente,
Kommunikationsunterstützungselemente
und Eingabe/Ausgabe-(I/O-)Elemente enthalten. Die Systemunterstützungselemente
können
eine Unterbrechungssteuerung enthalten, und die Kommunikationsunterstützungselemente
und die I/O-Elemente können
einen generischen seriellen Port enthalten. Das Kommunikationssystem
kann einen digitalen Signalprozessor (DSP) enthalten, während das Überwachungs-
und Steuersystem eine Mikroprozessor-Steuereinheit (MCU) enthalten
kann. Der DSP und die MCU können
jeweils mit einer internen Vorrichtung über den ersten und den zweiten
internen Bus kommunizieren, und auch mit dem Systemspeicher über das
BAM und den dritten internen Bus. Der vierte Bus kann eine Verbindung
zu einer externen Vorrichtung enthalten, die eine Speichervorrichtung sein
kann.
-
Bei
einer weiteren Variation kann die Vorrichtung weiterhin eine DMA-Steuerung
und einen durch die DMA-Steuerung gesteuerten DMA-Bus enthalten,
wobei das BAM weiterhin selektiv den DMA-Bus zwischen dem Speicherbus
und dem peripheren Bus verbindet. Das periphere Einheitssystem kann
auch eines oder mehrere Unterstützungselemente
enthalten, einschließlich
Systemunterstützungselementen, Kommunikationsunterstützungselementen
und I/O-Unterstützungselementen.
Bei diesen Variationen können
der DSP und die MCU jeweils mit einer lokalen Vorrichtung über jeweils
den lokalen Bus des DSP und der MCU kommunizieren, und auch über das
BAM und den Speicherbus mit dem Systemspeicher kommunizieren. Es
kann auch einen externen Bus geben, der eine Verbindung zu einer
externen Vorrichtung, wie beispielsweise einer Speichervorrichtung,
enthält.
Das Betriebsmittel von einigen Vorrichtungen kann weiterhin einen
Speicher aufweisen, der durch wenigstens den ersten und den zweiten
der mehreren Bus-Master verwendet wird. Das BAM kann weiterhin einen
DMA-Bus aufweisen, der selektiv zwei der mehreren Slave-Busse miteinander
verbindet. Die mehreren Betriebsmittel können eines oder mehrere Unterstützungselemente
enthalten, einschließlich
Systemunterstützungselementen,
und als Unterbrechungssteuerung Kommunikationsunterstützungselemente,
wie beispielsweise GSM-Kommunikationsunterstützungselemente, und I/O-Unterstützungselementen,
wie beispielsweise ein generisches serielles Port. Der erste Bus-Master kann
weiterhin einen DSP aufweisen. Der zweite Bus-Master kann weiterhin
eine MCU aufweisen. Die Vorrichtung kann weiterhin einen externen
Slave-Bus enthalten, der eine Verbindung zu einer externen Vorrichtung
enthält,
die eine Speichervorrichtung sein kann.
-
Gemäß weiteren
Aspekten der Erfindung gibt es Verfahren zum Zuteilen einer Priorität und zum
Gewähren
von Buszugriffsanforderungen. Ein Verfahren zum Zuteilen einer Priorität zu und
zum Gewähren
von Buszugriffsanforderungen kann ein Gewähren der Buszugriffsanforderung
eines Anfordernden aufweisen, die eine Unterbrechung einer hohen
Priorität
aktiviert, wenn kein Anfordernder die Unterbrechung hoher Priorität aktiviert,
ein Gewähren
der Buszugriffsanforderung eines Anfordernden, der im Besitz des
aktuellen Anforderungsslots ist. Gemäß dem Verfahren kann ein Zugriff
einem Prozessor gewährt
werden, der bei einem Echtzeitsignal arbeitet, wenn der Prozessor
für eine
Auszeitperiode in einem Wartezu stand gewesen ist. Die Auszeitperiode
kann programmierbar sein. Die Anzeige, dass der Prozessor länger als
für die
Auszeitperiode in dem Wartezustand gewesen ist, kann eine Zuteilung einer
Unterbrechung hoher Priorität
sein. Wenn die Anforderung dem Besitzer des aktuellen Anforderungsslots
gewährt
wird, kann die Tabelle von Anforderungsslot-Besitzern einem Updaten
unterzogen werden. Wenn die Anforderung dem höchsten Eintrag in der Round-Robin-Liste
gewährt
wird, können sowohl
die Round-Robin-Liste als auch die Tabelle von Anforderungsslot-Besitzern einem Update
unterzogen werden.
-
Kurze Beschreibung
der Zeichnungen
-
In
den Zeichnungen, in welchen gleiche Bezugszeichen gleiche Elemente
anzeigen, ist folgendes gezeigt:
-
1 ist
ein schematisches Blockdiagramm einer herkömmlichen Busarchitektur mit
einem gemeinsam genutzten Speicher;
-
2 ist
ein vereinfachtes schematisches Blockdiagramm einer beispielhaften
Busarchitektur, die Aspekte der vorliegenden Erfindung verkörpert;
-
3 ist
ein detaillierteres Blockdiagramm der Busarchitektur der 2;
und
-
4 ist
ein Ablaufdiagramm eines beispielhaften Zuteilungsverfahrens, das
Aspekte der Erfindung verkörpert.
-
Detaillierte
Beschreibung
-
Die
vorliegende Erfindung wird beim Lesen der folgenden detaillierten
Beschreibung von einigen beispielhaften Ausführungsbeispielen von ihr besser verstanden
werden.
-
Ein Überblick über die
Architektur eines beispielhaften Ausführungsbeispiels von Aspekten
der vorliegenden Erfindung wird nun in Verbindung mit 2 angegeben.
-
Wenn
in der folgenden Diskussion ein Bus angegeben ist, hat dies die
Bedeutung einer Gruppe von Signalpfaden, die die funktionellen Einheiten
der Schaltung, des Systems oder der Vorrichtung, die oder das gerade
diskutiert wird, verbindet. Ein Bus kann eine Adressierkomponente
und eine Datenträgerkomponente
enthalten, die jeweils manchmal einzeln als Bus bezeichnet sind.
Im Allgemeinsten sind Busse konfiguriert, um zwei oder mehrere parallele Signalpfade
zu haben, die Daten- und Adresseninformation mit einer Breite von
mehreren Bits tragen, obwohl auch serielle Busse bekannt sind.
-
2 zeigt
eine Vorrichtung 200, die beispielsweise als integrierte
Schaltung implementiert ist. Die Vorrichtung enthält ein Untersystem 200 eines
digitalen Signalprozessors (DSP) und ein Untersystem 202 einer
Mikrosteuerungseinheit (MCU). Innerhalb des DSP-Untersystems 201 ist
ein lokaler Bus (nicht gezeigt), an welchen ein Prozessor angeschlossen
ist. Ein Bus 203 stellt eine externe (zu dem DSP-Untersystem 201)
Verbindung zu dem DSP-Untersystem 201 für andere Elemente der Vorrichtung 200 zur
Verfügung;
der Bus 203 kann auch der lokale Bus innerhalb des DSP-Untersystems 201 sein.
Gleichermaßen
enthält
das MCU-Untersystem 202 einen lokalen
Bus, nämlich
den MCU-Bus 204, der eine externe (zu dem MCU-Untersystem 202)
Verbindung des MCU-Untersystems 202 zu anderen Elementen der
Vorrichtung 200 zur Verfügung stellt. Jedes der Untersysteme 201 und 202,
die bislang diskutiert sind, enthält einen Prozessor, um dadurch
die Vorrichtung 200 mit mehreren Prozessoren zu versehen. Um
die Leistungsfähigkeit
jedes Prozessors zu verbessern, ist ihm sein eigenes Untersystem
(201, 202) zusammen mit seinem eigenen lokalen
Bus (jeweils 203, 204) zugeteilt worden. Diese
werden nachfolgend detaillierter diskutiert werden. Wie es oben
angegeben ist, enthalten das DSP-Untersystem 201 und das
MCU-Untersystem 202 einen DSP (der nachfolgend diskutiert
wird) bzw. eine MCU (die nachfolgend diskutiert wird). Der DSP und
die MCU ist jeweils ein Bus-Master, was bedeutet, dass sie jeweils
einen Zugriff über
ihren jeweiligen lokalen Bus auf andere Elemente der Vorrichtung 200 anfordern können. Sie
können
auch jeweils mehrere interne Busse enthalten, wenn Aufbauanforderungen
durch eine solche Struktur besser erfüllt werden.
-
Die
Vorrichtung 200 enthält
weiterhin drei andere Busse 205, 206 und 207,
mit welchen verschiedene zusätzliche
Elemente verbunden sind. Die anderen Elemente der Vorrichtung 200 sind
Bus-Slaves, die auf Anforderungen für einen Zugriff von den Bus-Mastern
reagieren. Ein Speicher, wie beispielsweise ein statischer Direktzugriffsspeicher
(SRAM), der als gemeinsam genutzter Systemspeicher verwendet werden
kann, ist mit einem Bus 205 verbunden. Verschiedene periphere
Vorrichtungen, durch welche die Vorrichtung 200 ihre nötigen Funktionen durchführen kann,
sind in einem peripheren Untersystem 209 enthalten, das
mit einem peripheren Bus 206 verbunden ist. Schließlich sind
externe Vorrichtungen 210, wie beispielsweise ein Flash-ROM,
mit einem externen Bus 207 verbunden. Die Aufteilung von
Funktionen auf die verschiedenen Vorrichtungen und Busse, die oben
vorzugsweise angegeben sind, wird durch den Entwickler für irgendeinen
bestimmten Zweck optimiert. Bei dem gegenwärtig beschriebenen Ausführungsbeispiel
ist veranlasst worden, dass verschiedene Optimierungsauswahlen die
Vorrichtung 200 geeignet für eine Verwendung als das Kernstück von drahtlosen
Mobilfunkkommunikationsvorrichtungen geeignet ist, wie beispielsweise
ein Telefon für
ein globales System für
Mobilfunkkommunikationen (GSM), ein Telefon, das ein anderes Kommunikationsprotokoll
unterstützt,
wie beispielsweise einen Codevielfachzugriff (CDMA), oder Vorrichtungen,
die das drahtlose Anwendungsprotokoll (WAP) unterstützen.
-
Die
Busse 203, 204, 205, 206 und 207,
die oben beschrieben sind, sind über
ein Buszuteilungsmodul (BAM) 211 miteinander verbunden,
das ein Direktzugriffsspeicher-(DMA)-Untersystem (nicht gezeigt)
enthält.
Die Konfiguration und der Betrieb des BAM 211 wird nachfolgend
detaillierter beschrieben. Diese Konfiguration und dieser Betrieb
bestimmen, welche Busse miteinander kommunizieren können, und
zu welchen Zeiten. Der Aufbau und der Betrieb des BAM 211 ist
optimiert, um eine konfigurierbare minimale Zugriffsbandbreite durch
das DSP-Untersystem 201 und das MCU-Untersystem 202 zu
irgendeinem der anderen erforderlichen Systemelemente zu garantieren
und um zu verhindern, dass ein Untersystem 201, 202 das
andere Untersystem 201, 202 sperrt.
-
Bei
dem illustrativen Ausführungsbeispiel der
Vorrichtung 200 verwenden alle Bus-Master, einschließlich des DSP-Untersystems 201 und
des MCU-Untersystems 202, einen gemeinsamen vereinheitlichten
Adressenraum. Eine Anzahl von wichtigen Vorteilen kann durch eine
Verwendung eines vereinheitlichten Adressenraums erhalten werden. Beispielsweise
können
das DSP-Untersystem 201 und das MCU-Untersystem 202 Daten oder
einen Code im SRAM 208 lediglich durch Führen eines
Zeigers zu den Daten oder zu dem Code, die bzw. der auszutauschen
ist, austauschen, durch Schreiben des Zeigers zu einer global bekannten
Stelle. Gemäß einem
weiteren Vorteil eines vereinheitlichten Adressenraums wird die
für eine
Adressendecodierung im BAM 211 erforderliche Logik stark
vereinfacht, weil dasselbe Decodieren ungeachtet dessen erforderlich ist,
welcher Bus-Master oder Bus-Slave
bei einer bestimmten Transaktion beteiligt ist. Gemäß einem
weiteren Vorteil des vereinheitlichten Adressenraums wird ein äußerst symmetrisches
System erreicht. Da sowohl der DSP als auch die MCU denselben Adressenraum
verwenden, kann ein Code einfacher von einer Vorrichtung zur anderen
portiert werden. Daher kann der Entwickler einen Code besser zwischen dem
DSP und der MCU aufteilen, was kritische Pfadprobleme und eine Prozessorüberlast
vermeidet.
-
Das
illustrative Ausführungsbeispiel
wird nun detaillierter in Verbindung mit 3 beschrieben.
Zuerst wird das DSP-Untersystem 201 beschrieben.
-
Bei
dem Kernstück
des DSP-Untersystems 201 ist ein Kern 301 Analog
Devices 218X DSP. Andere Typen eines DSP-Kerns 301 könnten verwendet werden,
einschließlich
derjenigen, die als Teil einer MCU implementiert sind, oder anderer
Vorrichtungen, die DSP-Fähigkeiten
in Hardware oder Software implementieren. Ebenso sind im DSP-Untersystem 201 ein
Speichermanagementsystem 302 mit einer Steuerung für ein Herunterladen,
einer Cache- und Scratch-Speichersteuerung
und eines Cachespeichers, und DSP-spezifische periphere Einheiten,
einschließlich
eines Viterbi-Coprozessors 303 und einer generischen Verschlüsselungsmaschine 304 enthalten.
Die Funktionalität
von solchen DSP-spezifischen peripheren
Geräten
könnten
in dem DSP oder als externe Hardware und/oder Software implementiert sein.
-
Bemerkenswerterweise
ist bei dem DSP-Untersystem 201 kein interner Nurlesespeicher
(ROM) vorhanden. Stattdessen wird ein DSP-Code dynamisch in den
DSP-Cachespeicher 305 heruntergeladen oder in den Cache
gespeichert. Durch Verwenden eines Cachespeichers 305 erfolgt
das Herunterladen eines DSP-Codes für den Anwender transparent.
Durch Verwenden herkömmlicher
Cachespeicherungstechniken muss nicht der gesamte des DSP-Codes,
der für
eine bestimmte Funktion erforderlich ist, wie beispielsweise einen
Sprachcodierer, bei jedem bestimmten Zeitpunkt heruntergeladen werden.
Vielmehr müssen
nur diejenigen Bruchteile heruntergeladen werden, die sofort zur
Verwendung durch den DSP nötig
sind, was darin resultiert, dass weniger Speicher innerhalb des
DSP-Untersystems 201 erforderlich
ist. Obwohl die vorangehende Diskussion zeigt, dass das DSP-Untersystem 201 keinen
internen ROM erfordert, könnte
einer enthalten sein, wenn es erwünscht ist, ohne von dem Sinngehalt
der Erfindung abzuweichen.
-
Ein
DSP-Code kann in den Cache von entweder einem internen Systemspeicher 208 oder
von einem externen Speicher, wie beispielsweise einen Flash-ROM,
der als externe Vorrichtung 210 an dem Bus 207 angeschlossen
ist, geladen werden. Eine Vorteilnahme einer solchen Flexibilität minimiert
Konflikte zwischen dem DSP-Untersystem 201 und
dem MCU-Untersystem 202 in Bezug auf einen Speicherzugriff.
Ein kritischer Code sollte platziert werden, wo der minimale Zusatz
und die minimale Latenz während
eines aktuellen Systembetriebs auferlegt sein werden.
-
Für eine maximale
Flexibilität
in Bezug auf eine Softwareaufteilung sind alle Bussysteme 204, 205, 206 und 207 durch
das DSP-Untersystem 201 über den DSP-Bus 203 und das BAM 211 zugreifbar.
-
Das
DSP-Untersystem 201 hat auch einen internen statischen
RAM 305, der für
einen Code mit kritischen Zeitgabeanforderungen und für Daten
verwendet werden kann. Der interne statische RAM 305 des
DSP 301 ist auch für
das MCU-Untersystem 202 über ein
Speicherzugriffsschnittstellen-(MAI-)Modul 306 zugreifbar,
das mit dem peripheren Bus 206 verbunden ist.
-
Das
MCU-Untersystem 202 enthält einen MCU-Kern 307 ARM7TDM1
(von ARM Ltd. aus dem Vereinigten Königreich) oder einen anderen
geeigneten MCU-Zugriff. Das MCU-Untersystem 202 enthält weiterhin
Takterzeugungsschaltungen 308 und einen kleinen ROM 309,
der einen Ureingabecode bzw. Bootstrap-Code zum Laden extern gespeicherter Software
enthält.
-
Der
Speicher 208 des illustrativen Ausführungsbeispiels ist ein interner
statischer RAM (SRAM) zum Speichern von Daten und eines Codes. Er
ist für
sowohl das DSP-Untersystem 201 als auch das MCU-Untersystem 202 über ihre
jeweiligen Busse 203 und 204 zugreifbar, wenn
sie über
das BAM 211 mit dem Speicherbus 205 verbunden
sind. Ein zeitkritischer MCU-Untersystemcode kann in diesem Speicher
platziert werden, um ihn von dem zeitkritischen Code für das DSP-Untersystem zu trennen. Ein
weniger zeitkritischer DSP-Code kann auch im statischen RAM 208 gespeichert
werden.
-
Das
periphere Untersystem 209 enthält eine generische Unterbrechungssteuerung 310,
einen generischen Zeitgeber 311, ein generisches serielles Port 312,
ein Eingabe/Ausgabe-(GPIO-)Port 313 für allgemeine Zwecke und ein
GSM-I/O-System 314. Die
generische Unterbrechungssteuerung 310 sammelt alle durch
das System empfangenen Unterbrechungen, gruppiert sie zusammen in
softwarekonfigurierbaren Gruppen und ordnet sie einer Prioritätsebene
zu. Somit wird ein voll ständig
programmierbares Unterbrechungsprioritätsschema implementiert. Bei
dem illustrativen Ausführungsbeispiel
existieren auch drei unabhängige
Unterbrechungssteuerungen (nicht gezeigt), und zwar eine für jedes
des DSP-Untersystems 201, des MCU-Untersystems 202 und
intern zu dem BAM 211. Das generische Zeitgebermodul 311 ist
ein vollständig
softwarekonfigurierbares Zeitgebermodul, das zum Halten einer Systemzeitgabe
verwendet wird. Das Zeitgebermodul kann Unterbrechungen erzeugen
und externe Verbindungen zu der Vorrichtung 200 einstellen
oder löschen.
Das generische serielle Port 312 ist eine vollständig softwareprogrammierbare
Ablaufsteuerung mit spezifischer Hardware zum Implementieren von
Standards für
serielle Ports. Das generische serielle Port 312 kann programmiert
werden, um die meisten bekannten seriellen Standards zu bedienen.
Somit kann jeder Anwender der Vorrichtung 200 eindeutige
hardwarespezifische serielle Schnittstellen erzeugen, ohne irgendeine
der internen Strukturen der Vorrichtung 200 zu modifizieren.
Die Funktionalität
des GPIO 313 lässt
zu, dass verschiedene externe Verbindungen zu der Vorrichtung 200 für irgendwelche bestimmten
eindeutigen hardware- oder softwarespezifischen Schnittstellenanforderungen
verwendet werden.
-
Der
externe Bus 207 stellt einen Hochgeschwindigkeitsanschluss
zu der Vorrichtung 200 zur Verfügung, der zum Anschließen von
Elementen, wie beispielsweise einem Flash-ROM geeignet ist, die eine
parallele Schnittstelle erfordern.
-
Wie
es oben beschrieben ist, werden alle Busse 203, 204, 205, 206 und 207 über das
Buszuteilungsmodul (BAM) 211 miteinander verbunden. Das
Buszuteilungsmodul enthält
drei Zuteilungseinheiten 314, 315 und 316 und
ein Direktzugriffsspeicher-(DMA-)Untersystem mit einem DMA-Bus 317 und
einer DMA-Steuerung 318, die unten beschrieben sind. wie
es nachfolgend beschrieben werden wird, ist teilweise dadurch, dass
man eine separate Zuteilungseinheit für jeden Slave-Bus hat, das
BAM 211 derart aufgebaut und angeordnet, dass ein Blockieren
vermieden wird, wenn mehrere Bus-Master jeweils einen Zugriff auf
Betriebsmittel anfordern, die an die unterschiedlichen Slave-Busse
angeschlossen sind.
-
Die
drei Buszuteilungseinheiten 314, 315 und 316 entsprechen
jeweils einem der drei Hauptsystembusse, nämlich dem Speicherbus 205,
dem peripheren Bus 206 bzw. dem externen Bus 207.
Die drei Zuteilungseinheiten 314, 315 und 316 sind
strukturmäßig identisch
(die Zuteilungsverfahren können unterschiedlich
sein), sind aber jeweils für
ihren eigenen Bus 205, 206 und 207 bestimmt.
-
Eine
Zuteilungseinheit 314 verbindet selektiv den Speicherbus 205 mit
einem des DSP-Busses 203, des MCU-Busses 204,
des DMA-Busses (der nachfolgend diskutiert wird) oder des DSP-Caches.
-
Eine
zweite Zuteilungseinheit 315 verbindet selektiv den peripheren
Bus 206 mit einem des DSP-Busses 203, des MCU-Busses 204 und
des DMA-Busses (der nachfolgend diskutiert ist).
-
Eine
dritte Zuteilungseinheit 316 verbindet selektiv den externen
Bus 207 mit einem des DSP-Busses 203, des MCU-Busses 204,
des DMA-Busses (der nachfolgend diskutiert ist) und des DSP-Caches.
-
Es
sollte offensichtlich sein, dass die in 3 dargestellte
Struktur nicht blockierend ist, wie es nun diskutiert wird. Bus-Master,
wie z.B. der DSP-Kern 301 und die MCU 307, sind
jeweils mit ihrem eigenen Bus verbunden. Eine lokale Kommunikation
durch einen Bus-Master auf seinem eigenen Bus ist vollständig unabhängig von
einer lokalen Kommunikation durch einen anderen Bus-Master auf seinem
eigenen Bus. Betriebsmittel, d.h. Bus-Slaves sind unter mehrere
Slave-Busse verteilt, wie z.B. die Busse 205, 206, 207.
Wenn ein Bus-Master einen Zugriff auf ein Betriebsmittel an einem
Slave-Bus anfordert und ein anderer Bus-Master einen Zugriff auf ein
anderes Betriebsmittel an einem anderen Slave-Bus anfordert, tritt
kein Blockieren auf, weil unabhängige
Zuteilungseinheiten die getrennten Anforderungen handhaben. Somit
kann der Entwickler den Aufbau durch Trennen von gemeinsam genutzten Betriebsmitteln
demgemäß optimieren,
welcher Bus-Master der primäre
Nutzer des Betriebsmittels ist. Andere nicht blockierende Strukturen
sind möglich,
und unter Verwendung von beispielsweise einem Mehrfachport kann
eine nicht blockierende parallele Schaltstruktur verwendet werden.
-
Die
Trennung gemeinsam genutzter Betriebsmittel kann wie folgt durchgeführt werden. Wenn
der DSP-Kern 301 ein erstes Betriebsmittel mehr als die
MCU 307 verwendet, aber die MCU 307 ein zweites
Betriebsmittel mehr als der DSP-Kern 301 verwendet, dann
sollten das erste und das zweite Betriebsmittel an unterschiedliche
Slave-Busse angebracht werden.
-
Jede
Zuteilungseinheit 314, 315, 316 gewährt einen
Zugriff auf ihren Bus 205, 206, 207 gemäß dem nachfolgend
beschriebenen Verfahren. Ein aktives Busauswahl signal von einem
Anfordernden zu der Zuteilungseinheit 314, 315, 316 zeigt
eine Anforderung für
einen Zugriff und eine Zuteilung an. Die Zuteilungseinheit 314, 315, 316 bringt
entweder ein Wartesignal zum Verzögern eines Zugriffs zurück oder
gewährt
den Zugriff. Wenn das Busauswahlsignal eines Anfordernden, der einen
Zugriff gewährte, inaktiv
wird, zeigt es der Zuteilungseinheit an, dass der nächste Zuteilungszyklus
beginnen kann.
-
Um
die Leistungsfähigkeit
der Vorrichtung 200 zu maximieren, kann der DSP-Cachezugriff in einem
Blockmode unter einem Lesen von (beispielsweise) bis zu 12 Worten
gleichzeitig durchgeführt werden.
Bei dem illustrativen Ausführungsbeispiel sind
Worte 16 Bits lang, jedoch können andere Längen verwendet
werden, wie es durch bestimmte Busentwicklungen erforderlich ist,
die im Stand der Technik bekannt sind. Somit kann ein voller Vorteil aus
der zur Verfügung
gestellten Bandbreite dadurch gezogen werden, dass beispielsweise
ein Flash-ROM als externe Vorrichtung 210 mit dem externen
Bus 207 verbunden ist. Das Verfahren einer Zuteilung wird
nachfolgend detaillierter diskutiert.
-
Das
DMA-Untersystem des Buszuteilungsmoduls enthält einen DMA-Bus 317 und
eine Mehrkanal-DMA-Steuerung 318. Bei dem illustrativen Ausführungsbeispiel
wird eine 16-Kanal-DMA-Steuerung 318 verwendet. Die DMA-Steuerung 318 ist
ein Bus-Master, wie der DSP-Kern 301 und die MCU 307.
Der DMA-Bus 317 verbindet die drei Zuteilungseinheiten 314, 315, 316 miteinander,
so dass ein DMA zwischen Vorrichtungen durchgeführt werden kann, die mit irgendeinem
der drei Busse, nämlich dem
Speicherbus 205, dem peripheren Bus 206 und dem
externen Bus 207, verbunden sind. Daten oder ein Code können von
irgendeiner Adressenstelle auf einem der drei Busse 205, 206 und 207 zu
irgendeiner Adressenstelle auf einem anderen der drei Busse 205, 206 und 207 transferiert
werden. Die DMA-Steuerung 318 enthält ein Wort
eines Transferspeichers, der der Speicher ist, der zum Durchführen des
Transfers verwendet wird, der oben angegeben ist und nachfolgend
detailliert beschrieben wird. Die DMA-Steuerung 318 enthält auch
einen anderen Speicher, der zu Zwecken verwendet wird, die im Stand
der Technik bekannt sind. Andere Speichergrößen könnten verwendet werden, wenn
es für
einen bestimmten Zweck erwünscht
ist. Die DMA-Steuerung 318 liest ein Wort von einer Quellenstelle
während
eines ersten Speicherzyklus ein, schreibt dann das Wort zu einer
Zielortstelle während
eines zweiten darauf folgenden Speicherzyklus aus.
-
Die
DMA-Steuerung 318 steuert den Betrieb des DMA-Busses 317.
Die DMA-Steuerung 318 handhabt
Datentransfers für
sowohl durch eine Unterbrechung angetriebene I/O-Vorrichtungen als auch
für Speichervorrichtungen.
Die DMA-Steuerung 318 enthält separate
Vollduplexkanäle
mit identischer Funktionalität.
Jeder Kanal wird durch entweder das MCU-Untersystem 202 oder
das DSP-Untersystem 201 über den
peripheren Bus 206 gesteuert und konfiguriert. Nachdem
die DMA-Steuerung 318 eine programmierbare Anzahl von Adressenstellen transferiert,
teilt sie der Unterbrechungssteuerung 310 eine Unterbrechung
zu.
-
Die
DMA-Steuerung 318 kann die folgenden Aufgaben durchführen, die
dem System eine zusätzliche
Funktionalität
geben. Ein RAM-Puffer kann zwischen einer I/O-Vorrichtung und beispielsweise
dem MCU-Untersystem 202 erzeugt werden. Somit kann die
Anzahl von Unterbrechungen, die zum Handhaben von I/O-Daten erforderlich
sind, reduziert werden. In einem solchen Fall transferiert die DMA-Steuerung einen Block
einer vorbestimmten oder programmierbaren Anzahl von Worten von
Daten zwischen einem Speichermodul, wie beispielsweise dem SRAM 208,
und der I/O-Peripherieeinheit innerhalb des peripheren Untersystems 209.
Die DMA-Steuerung kann einen Block von Daten, wie beispielsweise
eine Tabelle oder ein Programm, von einem Flash-ROM unter den externen
Vorrichtungen 210 zu dem Datenspeicher, dem Programmspeicher oder
dem Cache des internen DSP-Untersystems bewegen.
Schließlich
kann die DMA-Steuerung das Kopieren von irgendwelchen großen Speicherblöcken von
einer Stelle zu einer anderen im System bewirken, wie es erforderlich
sein kann.
-
Als
Nächstes
wird das Zuteilungsverfahren des illustrativen Ausführungsbeispiels
in Verbindung mit 4 diskutiert. Bei der illustrativen
Vorrichtung 200 sind das DSP-Untersystem 201, das MCU-Untersystem 202 und
die DMA-Steuerung 318 Bus-Master.
-
Gemäß einem
einfachen Zuteilungsverfahren hat jede Vorrichtung eine eindeutige
Prioritätsebene
zugeordnet. In einem solchen System wird der Vorrichtung mit der
höchsten
Priorität,
die einen Zugriff auf einen Bus anfordert, immer ein Zugriff zugeteilt.
Jedoch kann ein solches Schema in einem Hungern nach Bandbreite
für Vorrichtungen
niedriger Priorität
resultieren, wenn die Vorrichtungen höherer Priorität konstant
einen Zugriff fordern. Ein weiteres allgemeines Zuteilungsverfahren
ist das Round-Robin-Zuteilungsverfahren, bei welchem jeder Vorrichtung
eine Priorität
zugeteilt wird, die von der Platzierung der Vorrichtung auf einer
Rotationsliste abhängt.
Die anfordernde Vorrichtung bei der höchsten Position in der Liste
empfängt
den angeforderten Zugriff. Typischerweise wird die oberste Vorrichtung
in der Prioritätsliste
dann zu dem untersten Teil der Liste bewegt. Keines dieser herkömmlichen
Verfahren erfüllt
alle Anforderungen der hierin beschriebenen Vorrichtung.
-
Da
die Bandbreitenanforderungen des peripheren Untersystems 209 nicht
sehr hoch sind, wird eine Zuteilung für den peripheren Bus 206 durch
das Round-Robin-Verfahren
durchgeführt.
Es kann angenommen werden, dass es keine Rückseite-an-Rückseite-Anforderungen
durch einen Bus-Master für
den peripheren Bus gibt.
-
In
Bezug auf den externen Bus 207 und den Speicherbus 205 müssen die
erwarteten Bandbreitenerfordernisse des DSP-Busses 203,
des MCU-Busses 204 und des DMA-Busses 317 berücksichtigt
werden. Eine Round-Robin-Tabelle ist mit einer festen Tabelle mit
15 programmierbaren Slots kombiniert. In Abhängigkeit von den relativen
Bandbreitenerfordernissen des DSP-Untersystems 201, des
MCU-Untersystems 202 und
der DMA-Steuerung 318 sind die 15 Slots geeignet auf die
drei Bus-Master verteilt.
-
Das
resultierende zusammengesetzte Zuteilungsverfahren wird wie folgt
durchgeführt.
Die Zuteilungseinheiten (3, 314, 315, 316)
warten darauf, dass Busanforderungen ankommen, 401. dann
prüft die
Zuteilungseinheit auf Unterbrechungen hoher Priorität, 405.
Wenn beispielsweise das DSP-Untersystem 201 in einen Wartezustand
versetzt worden ist, kann es die seriellen Ports nicht handhaben,
was zum Verarbeiten erforderlich ist. Daher wird dann, wenn ein
solcher Wartezustand des DSP-Untersystems 201 auftritt,
eine Unterbrechung hoher Priorität ausgegeben.
Wenn eine solche Unterbrechung hoher Priorität auftritt und erfasst wird, 402,
wird ein Zugriff auf den Bus-Master gewährt, der verantwortlich dafür ist, dass
die Unterbrechung hoher Priorität
ausgegeben worden ist, 403. Nachdem der Zugriff beendet
ist, nimmt die Zuteilungseinheit wieder ein Warten auf Busanforderungen
auf, 401. Als Nächstes
wird eine Bestimmung durch Bezugnahme auf die feste Tabelle programmierbarer
Slots diesbezüglich
durchgeführt,
ob einer der Anfordernden der aktuelle Besitzer des Zugriffsslots
ist, 404. Wenn es so ist, wird bei 405 dem aktuellen
Slot-Besitzer ein Zugriff gewährt und
wird die Slot-Tabelle einem Updaten unterzogen, so dass der Slot-Besitzer
nun der nächste
darin aufgelistete Bus-Master ist, 406. Wenn der gegenwärtige Slot-Besitzer
nicht einer der Anfordernden ist, 404, dann wird die Anforderung
gemäß dem aktuellen
Zustand der Round-Robin-Tabelle gewährt, 407. Dann wird
die Round-Robin-Tabelle einem Updaten unterzogen, 408,
wie es für
die Slot-Besitzertabelle erfolgt, 406.
-
Wesentliche
Teile des beschriebenen Zuteilungsverfahrens werden asynchron durchgeführt, wie beispielsweise
durch eine asynchrone Logik. Durch Verwenden asynchroner Prozesse
verarbeitet das Zuteilungsverfahren Busanforderungen sofort, ohne Buszyklen
zu verlieren. Nur die Updates 406, 408 werden
auf einer Taktzyklusbasis durchgeführt. Die Updates 406, 408 erfolgen
bei dem Taktzyklus, in welchem ein Buszugriff gewährt ist.
-
Es
ist möglich,
bei einem solchen Zuteilungsverfahren mehrere Vorrichtungen zu haben,
die Unterbrechungen hoher Priorität erzeugen können, aber in
dem Fall muss zwischen ihnen eine Hilfs-Prioritätszuteilung durchgeführt werden,
in welchem zwei oder mehrere Unterbrechungen hoher Priorität gleichzeitig erfasst
werden.
-
Die
vorliegende Erfindung ist nun in Verbindung mit einer Anzahl von
spezifischen Ausführungsbeispielen
davon beschrieben worden. Jedoch sollten nun zahlreiche Modifikationen,
die derart angesehen werden, dass sie in den Schutzumfang der vorliegenden
Erfindung fallen, Fachleuten auf dem Gebiet offensichtlich sein.
Daher ist beabsichtigt, dass der Schutzumfang der vorliegenden Erfindung
nur durch den Schutzumfang der hierzu beigefügten Ansprüche beschränkt ist.