-
Diese
Erfindung betrifft einen rekonfigurierbaren Speicherplan für ein System
auf einem Chip.
-
HINTERGRUND DER ERFINDUNG
-
Die
vorliegende Erfindung betrifft digitale Systeme. Insbesondere betrifft
die vorliegende Erfindung einen Speicherplan für ein System auf einem Chip
(SoC).
-
Die
Grundkomponenten, welche ein herkömmliches digitales Mikrocomputersystem
umfassen, enthalten einen Taktgeber, einen Mikroprozessor, einen
Programmspeicher (d.h. einen Festwertspeicher (ROM)), einen Datenspeicher
(d.h. einen Direktzugriffsspeicher (RAM)) und eine Peripherieschnittstelle.
Die Peripherieschnittstelle dient dazu, Eingabe/Ausgabe (E/A)-Einrichtungen
(d.h. periphere Einrichtungen), wie z.B. einen Drucker, eine Tastatur
und Anzeigeeinheiten) mit dem Systembus zu koppeln. Der Mikroprozessor
kommuniziert mit anderen Elementen des Systems über parallele Signalleitungen,
welche zusammengenommen einen internen Systembus umfassen. Der Systembus
wird üblicherweise
hinsichtlich seiner Funktionalität
bezeichnet, d.h. Adressbus, Datenbus und Steuerbus. Der Mikroprozessor
adressiert einen Speicher (d.h. einen Programmspeicher und einen
Datenspeicher) über einen
Adressbus. Er adressiert auch periphere Einrichtungen (auf die über eine
Peripherieschnittstelle zugegriffen wird) über einen Adressbus, da der
Speicher und die peripheren Einrichtungen tatsächlich parallel konfiguriert
sind. Systeme, welche in der oben beschriebenen Weise aufgebaut
sind, sollen eine speicherkonforme E/A haben, da der Mikroprozessor
basierend auf dem beschriebenen Adressierungsschema auf einen Speicher
und periphere Einrichtungen zugreift.
-
Der
gesamte Adressensatz, den ein Mikroprozessor erzeugen kann, wird üblicherweise
als der "Adressraum" des Systems bezeichnet.
Wenn ein herkömmliches
Mikroprozessor-basierendes System konstruiert wird, wird der Adressraum
vordefiniert oder „festgelegt". Anders ausgedrückt, werden
alle Adressen sowohl für
den Speicher als auch für
die peripheren Einrichtungen dauerhaft in dem Adressraum des Systems
festgelegt. Wenn diese Adresskenndaten einmal festgelegt worden
sind, richtet sich eine Adressierung nach einem festgelegten Adressplan
(manchmal auch als ein "Speicherplan" bezeichnet, selbst
wenn periphere Einrichtungen ohne Speicher in dem Plan enthalten
sind).
-
Implementation
of PCI-based systems using programmable logic – IEE Proc.-Circuits Devices Syst., Band 147, 3.
Juni 2000, Seite 171–174
beschreibt ein Verfahren zum Abbilden bzw. Umsetzen einer Speicheradressbasis
in ein Basisadressregister.
-
ÜBERSICHT DER ERFINDUNG
-
Gemäß der vorliegenden
Erfindung wird ein rekonfigurierbarer Speicherplan und sein zugehöriges Rekonfigurationsverfahren
für ein
System offenbart, welches einen integrierten Prozessor, einen erneut
programmierbaren Speicher und ein programmierbares Logik-Array (z.B.
ein PLD) umfasst.
-
Gemäß der bevorzugten
Ausführungsform der
vorliegenden Erfindung ist ein wie im Anspruch 1 beschriebenes digitales
System vorgesehen.
-
Die
folgende detaillierte Beschreibung und die beigefügten Zeichnungen
bieten ein besseres Verständnis
der Natur und der Vorteile der vorliegenden Erfindung.
-
KURZE BESCHREIBUNG DER
ZEICHNUNGEN
-
1 zeigt
ein beispielhaftes Blockdiagramm eines digitalen Systems 10,
welches ein Umfeld veranschaulicht, dem Ausführungsformen der vorliegenden
Erfindung zugeordnet sein können.
-
2 zeigt
ein weiteres beispielhaftes Blockdiagramm eines digitalen Systems,
welches ein alternatives System 20 veranschaulicht, dem
Ausführungsformen
der vorliegenden Erfindung zugeordnet sein können.
-
3 zeigt
ein beispielhaftes Blockdiagramm eines digitalen Systems, welches
ein alternatives System 30 veranschaulicht, dem Ausführungsformen
der vorliegenden Erfindung zugeordnet sein können.
-
4 zeigt
eine beispielhafte physikalische Abbildung von Resourcen für einen
4 Gigabyte-Adressraum gemäß einer
Ausführungsform
der vorliegenden Erfindung;
-
5 zeigt
ein beispielhaftes rekonfigurierbares Register, welches eine Basisadresse,
die Größe und die
Art eines erlaubten Zugriffs spezifiziert, gemäß einer Ausführungsform
der vorliegenden Erfindung; und
-
6 zeigt
ein Beispiel, wie rekonfigurierbare Register mit einem physikalischen
Speicher im Zusammenhang stehen, gemäß einer Ausführungsform der
vorliegenden Erfindung.
-
BESCHREIBUNG DER SPEZIELLEN
AUSFÜHRUNGSFORMEN
-
Die
vorliegende Erfindung ist insbesondere auf einen vollständig rekonfigurierbaren
Speicherplan zur Verwendung beispielsweise in einem System auf einem
Chip (SoC) gerichtet. Herkömmliche Systeme
haben einen festen Speicherplan, was bedeutet, dass der Adressraum
für Peripheriegeräte und einen
Speicher zum Entwurfszeitpunkt festgelegt wird. Die vorliegende
Erfindung bietet einem Benutzer die Fähigkeit, die Adressierungsanordnung,
z.B. eine Start (oder "Basis")-Adresse und die
Größe (oder "Bereich"), die jeder Speicher
und jede periphere Einrichtung bzw. Bauelement in dem Speicherplan belegt,
zuzuweisen und zu modifizieren. Bevor der Speicherplan-Aspekt der
vorliegenden Erfindung beschrieben wird, wird das Umfeld dargelegt,
dem der Speicherplan zugehören
kann.
-
1 zeigt
ein beispielhaftes Blockdiagramm eines digitalen Systems 10,
welches eine Umgebung veranschaulicht, dem Ausführungsformen der vorliegenden
Erfindung zugeordnet sein können.
Das System kann auf einer einzelnen Platine, auf mehreren Platinen
oder sogar in mehreren Gehäusen
vorgesehen sein. 1 veranschaulicht ein System 10,
in welchem ein programmierbares logisches Bauelement 106 verwendet
werden kann. Programmierbare logische Bauelemente werden gegenwärtig beispielsweise
durch Altera's MAX®, FLEX® und
APEXTM PLD-Serien vertreten.
-
In
der speziellen Ausführungsform
der 1 ist ein Halbleiterbauelement 100 mit
einem Speicher 102 und einer E/A 104 gekoppelt
und umfasst ein programmierbares logisches Bauelement (PLD) 106 und
eine eingebettete Logikschaltung 107, welche neben anderen
Bauteilen eine CPU (oder Prozessor) 109 umfassen kann.
Das System 10 kann ein digitales Computersystem, ein digitales
Signalverarbeitungssystem, ein spezialisiertes digitales Schaltnetz oder
anderes Verarbeitungssystem sein. Darüber hinaus können solche
Systeme für
eine große
Vielzahl von Anwendungen bestimmt sein, wie z.B. – lediglich beispielhaft – Telekommunikationssysteme, KFZ-Systeme,
Steuer/Regelsysteme, Konsumelektronik, Personal Computer und andere.
-
2 zeigt
ein weiteres beispielhaftes Blockdiagramm eines digitalen Systems 20,
welches ein alternatives System 20 veranschaulicht, dem Ausführungsformen
der vorliegenden Erfindung zugeordnet sein können. Die Busarchitektur umfasst Bus-Master 200, 201, 202 und 204,
die jeweils mit einem oder mehreren der Peripheriegeräte in dem
System, z.B. einem Speicher 206, und anderen Peripheriegeräten 208 bis 216,
wie z.B. E/A-Bauelementen usw., über
Brücken 218 bis 224 kommunizieren
kann. Die Hauptfunktion von jedem Bus-Master besteht darin, den
Bus zu verwalten, dem er angehört
und zu steuern, welche Bauelemente bzw. Geräte auf den Bus zugreifen können. Die
Brücken 218 bis 224 dienen
dazu, eine Kommunikation zwischen einem Bus-Master in einer ersten Taktdomäne mit einem Peripheriegerät in einer
zweiten Taktdomäne
zu erlauben, um auf diese Weise zu ermöglichen, dass die Komponenten
auf jeder Brücke
mit ihren individuellen optimalen Geschwindigkeiten arbeiten. Eine
Brücke
erreicht dies, indem sie möglichst
einen Zuerst-Herein-Zuerst-Hinaus
(FIFO)-Puffer umfasst, welcher Daten mit der Taktrate einer ersten
Brücke annimmt
und sie zu einem zweiten Bus mit der Taktrate des zweiten Busses
ausgibt. Solange jeder Bus-Master auf ein verschiedenes Peripheriegerät auf einem
verschiedenen Bus zugreift, führt
die Verwendung von Busbrücken 218 bis 224 zu
einer verbesserten Systemleistung, da mehrere Bus-Master mit verschiedenen
Peripheriegeräten
auf verschiedenen Bussen gleichzeitig kommunizieren können, ohne
das Problem einer Buszugriffskonkurrenz. Mit anderen Worten sorgt
diese Ausführungsform
der vorliegenden Erfindung für
die Aufteilung von Verarbeitungselementen in ihre eigenen Taktdomänen 226 bis 232 und
sieht Brücken 218 bis 224 vor,
welche eine Kommunikation mit anderen Bauelementen auf Bussen über Taktdomänen 226 bis 232 erlaubt. Nichtsdestotrotz
ist die Busarchitektur des Systems 20 flexibel genug, um
viele Bus-Master aufzunehmen, z.B. Bus-Master 200 und 202,
welche denselben Bus teilen. Das einzige Erfordernis ist, dass die Bus-Master
mit derselben Frequenz arbeiten. Jede Taktdomäne kann von unabhängigen Taktquellen stammen
oder von einer Aufteilung von einer oder mehrerer Taktquellen stammen.
Während
die Ausführungsform
in 2 eine bestimmte Anzahl an Bus-Mastern und peripheren
Einrichtungen zeigt, sollte erkannt werden, dass diese Anzahl lediglich beispielhaft
ist und dass ein Aufbau möglich
ist, welcher eine beliebige Anzahl an Bus-Master, Bussen, Brücken und
Peripheriegeräten
hat und daher im Schutzbereich der vorliegenden Erfindung liegt.
-
3 zeigt
ein weiteres beispielhaftes Blockdiagramm eines digitalen Systems 20,
welches eine alternative Umgebung veranschaulicht, welcher Ausfüh rungsformen
der vorliegenden Erfindung zugeordnet sein können. Der Zugriff auf Peripheriegeräte wird
durch eine Anzahl Bus-Master gesteuert, welche durch eine Busstruktur
verbunden sind, welche zwei oder mehrere Busse umfasst, von denen
jeder beispielsweise ein Advanced High-Performance Bus (AHB) ist,
der ein Bus ist, der sich nach dem offenen Advanced Microcontroller
Bus Architecture (AMBA)-Standard richtet. In dieser beispielhaften Umgebung
sind drei Bus-Master vorhanden, einschließlich eines Prozessors 300,
des PLD-Masters 302 und einer Konfigurationslogik 304.
Diese Bus-Master 300 bis 304 können Lese- und Schreiboperationen
durch eine Bereitstellung von Adress- und Steuerinformation veranlassen.
Der Prozessor 300 ist mit einem ersten Bus 306 (z.B.
einem 32-bit AHB-Bus) verbunden. Der erste Bus 306 verbindet auch
mit einem oder mehreren peripheren Bauelementen, wie z.B. einer
synchronen dynamischen Direktzugriffsspeicher (SDRAM)-Steuerung 308,
einem prozessorintegrierten (On-Chip) statischen Direktzugriffsspeicher
(SRAM) (Einzel- 310 und Doppel- 312 Port), einem
Prozessor nur Peripheriegeräte
(z.B. eine Unterbrechungssteuerung 314 und einen Überwachungszeitgeber 316).
Eine Testschnittstellensteuerung (TIC) 318 kann auch mit
dem ersten Bus 406 für
einen Funktionstest verbunden sein. Die übrigen Bus-Master, welche in
diesem Beispiel der PLD-Master 302 und die Konfigurationslogik 304 sind,
teilen einen zweiten Bus 307. Der zweite Bus 307 kann
beispielsweise ein Standard 32-bit AHB-Bus, welcher eine akzeptable
niedrige Speicherzugriffsgeschwindigkeit gewährleisten kann, von dem PLD-Master 302 und
der Konfigurationslogik 304 sein, welche für den Prozessor 300 erforderlich sein
können,
welcher wie oben beschrieben mit dem ersten Bus 306 verbunden
ist. In ähnlicher
Weise können
Peripheriegeräte,
auf die mit einem vergleichsweise größeren Latenztoleranzgrad zugegriffen
werden kann, mit dem zweiten Bus 307 verbunden sein. Einige
der Module, welche mit dem zweiten Bus 307 verbunden sind,
können
beispielsweise einen universellen asynchronen Sender/Empänger (UART) 320,
eine Buserweiterung 322, einen Zeitgeber 324,
einen Taktgeber 326, eine Rücksetz/Modus (Reset/Mode)-Steuerung 328,
eine SDRAM-Speichersteuerung 308 und prozessorintegrierte (On-Chip)
statische Einzel- und Doppel-Direktzugriffsspeicher (SRAMs) 310 und 312 umfassen.
Der zweite Bus 307 ist auch mit einer PLD-Slave-Brücke 332 und
einer PLD-Master-Brücke 334 verbunden, von
denen jede mit einem PLD in dem System (in 3 nicht
gezeigt) über
einen dritten Bus (336) bzw. einen vierten Bus (338)
gekoppelt ist. Der dritte Bus 336 und der vierte Bus 338 können beispielsweise Standard
32-bit AHB-Busse
sein.
-
Es
ist verständlich,
dass es viele andere Systemumgebungen gibt, in welche der Speicherplan-Aspekt
der vorliegenden Erfindung eingebunden werden kann. Folglich sind
die oben beschriebenen Mehrfachbusumgebungen nur beispielhaft und andere
Systemumgebungen sind möglich.
Beispielsweise könnte
eine Systemumgebung möglich
sein, welche nur einen einzigen Systembus hat, welcher mit dem Speicherplan-Aspekt
der vorliegenden Erfindung verknüpft
ist.
-
Nun,
da beispielhafte Umgebungsausführungsformen
der vorliegenden Erfindung beschrieben worden sind, wird ein beispielhafter
Speicherplan gemäß einer
Ausführungsform
der vorliegenden Erfindung beschrieben.
-
Gemäß einer
Ausführungsform
der vorliegenden Erfindung kann eine physikalische Umsetzung von
Resourcen das Zuweisen eines einzigen Adressraums für Komponenten,
wie z.B. den FLASH-Speicher, das SDRAM und das Einzel- und/oder Doppel-Port-SRAM
(wie in 3 gezeigt) und/oder ein PLD,
umfassen. Als ein spezielles Beispiel betrachte die in 4 gezeigten
Systemkomponenten. Wie gezeigt, kann ein FLASH-Speicher prozessorextern
(Off-Chip) vorhanden sein, ein oder mehrere Chips umfassen und mit
einem Buserweiterungsmodul 422 gekoppelt sein. Das SDRAM
kann auch prozessorextern vorhanden sein und mit einer Speichersteuerung
gekoppelt sein, beispielsweise einer in 3 gezeigten
Speichersteuerung 330. Prozessorintegrierte Einzel- und Doppel-Port-SRAMs können auch
zwischen einem ersten Bus 306 und einem zweiten Bus 307 gekoppelt
sein. Obwohl nicht gezeigt, können
andere Bauelemente bzw. Einrichtungen abgebildet werden. Beispielsweise
können Speicherplanregister
umgesetzt werden, wobei die Speicherplanregister dazu konfiguriert
sind, Adressinformation für
Systemresourcen zu speichern. Einige dieser Komponenten, welche
beispielhafte Größen und
Quantitäten
haben, sind in dem in 5 gezeigten beispielhaften 4-Gigabyte-Speicherraum
zusammengefasst. Es sollte betont werden, dass die Größe des Speicherplans,
die Art der Komponenten und die Größe (in Byte) von jeder Komponente
nur beispielhaft gezeigt ist.
-
Ein
Speicherplan für
die obigen beispielhaften Komponenten kann durch eine Anzahl von
rekonfigurierbaren Speicherplanregistern angegeben werden. Im Allgemeinen
gibt jedes Register eine Basisadresse, Größe und Art des Zugangs an,
wie beispielsweise für
das 32-bit-Register in 6 gezeigt. Diese beispielhafte
32-bit-Adresse erlaubt einen Adressraum von 4 Gigabyte. In dem beispielhaften System 30 in 3 kann
der zweite Bus 307 auf die Register zugreifen, sodass auf
sie entweder durch den Prozessor 300 oder die Konfigurationslogik 304 zugegriffen
werden kann. Ein Benutzer kann die Basisadresse, den Adressbereich,
den Vorabbefehl (Pre-fetch)-Status und die Freigabe/Sperrung des Adressbereichs
von jeder Speicherkomponente oder jedem Peripheriegerät einstellen
oder modifizieren.
-
Die
Bezeichnung "EN" über dem nullten Bit des Registers
in 6 bedeutet, dass die Decodierung des Speicherbereichs,
welcher dem speziellen Register zugeordnet ist, ermöglicht wird,
wenn das Bit gesetzt ist. Das erste Bit in dem Register ("NP" bezeichnet, d.h.
kein Vorauslesen) steuert, wie sich eine Brücke (z.B. die Brücken 318 bis 324 in 3) verhalten
kann, wenn auf den Bereich zugegriffen wird, welcher dem Register
zugeordnet ist. Wenn das Bit nicht gesetzt ist, dann wird ein Zugriff
auf den Bereich im Voraus gelesen (z.B. bis zu der nächsten 1 kB
Grenze) und Schreibvorgänge
können
der Geschwindigkeit wegen verzögert
oder aggregiert werden. Wenn das Bit gesetzt ist, dann wird jeder
Zugriff auf den Bereich verzögert,
bis ein vorangehender Zugriff abgeschlossen ist. Das GRÖSSE-Feld
eines Registers bezeichnet den für
ein zugeordnetes Bauelement reservierten Adressbereich und folgt
in diesem Beispiel der folgenden Formel: GRÖSSE = log2(Bereichsgröße) – 1. So
wäre beispiels weise
GRÖSSE gleich
19 für
einen 1 MB-Bereich. Eine Basisadresse für einen Adressbereich eines
Bauelements in dem Register wird in den Bits 14 bis 31 in dem Register spezifizieren.
-
Nun
auf 6 Bezug nehmend ist dort ein Beispiel gezeigt,
wie Speicherplanregister mit einem physikalischen Speicher zusammenhängen, gemäß einer
Ausführungsform
der vorliegenden Erfindung. Zwei Speicherplanregister 601, 602 sind
gezeigt, um diesen Aspekt der Erfindung zu erläutern und es sollte verstanden
werden, dass jede Zahl an Registern möglich ist. Die Speicherplanregister 601 und 602 spezifizieren
jeweils eine Basisadresse, einen Adressbereich (d.h. Größe), Freigabe
(EN) und Befehlsvorverarbeitungsstatus für Resourcen 1 und 2. Die Basisadresse
und die Größe, welche
für die
Resourcen 1 und 2 reserviert sind, werden in einem physikalischen
Speicher 605 abgebildet, wie durch Pfeile 606 und 607 bzw. 608 und 609 angedeutet.
Speicherplanregister 601 und 602 können gemäß einem
Datum geladen werden, welches von einer Vorgabe (Default)-Konfigurationsquelle 610,
einem FLASH-Speicher 612 oder einer Konfigurationslogikquelle 324 bereitgestellt
wird. Die physikalische Speicherstelle der Speicherplanregister 601 und 602 ist vorzugsweise,
aber nicht definitiv, in einer Rücksetz/Modus-Steuerung 328 angeordnet,
wie in dem beispielhaften System 30 in 3 gezeigt.
-
In
einer weiteren Ausführungsform
der Erfindung wird nach einer Rücksetzoperation
des Systems eine Basisadresse auf irgendeine Zahl, beispielsweise
0x7FFFF000, gesetzt. Diese Basisadresse ist rekonfigurierbar, solange
der Speicherbereich nicht den für
ein anderes Bauelement reservierten Bereich überlappt. In diesem Beispiel
muss ein minimaler Bereich von 16 KB reserviert werden.
-
In
einer weiteren Ausführungsform
der Erfindung wird das System hochgefahren, ein Vorgabe-Speicherplan
spezifiziert einen Registerbereich für Register, welche dazu verwendet
werden, den Speicherplan zu konfigurieren. In einer alternativen Ausführungsform
kann das System von einem FLASH-Speicher ge bootet werden. Wenn ein
FLASH verwendet wird, wird die Startadresse des FLASH-Bereichs umgesetzt,
beispielsweise zu einem Rücksetzvektor
des Systemprozessors (d.h. den Vektor, bei welchem der Prozessor
einen Code auszuführen
beginnt). Wenn zusätzlich
der Prozessor von einem FLASH gebootet wird, kann der Code von dem
Prozessor in den Registerbereich geschrieben werden, um selektiv
Resourcen freizugeben, wie z.B. ein prozessorintegriertes SRAM,
eine PLD-Slave-Schnittstelle usw. (siehe 4), und
die gewünschten
Adressbereiche in dem Speicherplan zu spezifizieren. Nachdem der
Speicherplan spezifiziert ist, kann der Prozessor den Registerbereich
von dem Speicherplan entfernen, indem ein Sperrbit in dem entsprechenden
Register gesetzt wird.
-
In
noch einer weiteren Ausführungsform kann
eine externe Konfigurationseinrichtung mit dem System gekoppelt
werden und die entsprechenden Registermuster bereitstellen, wenn
der Prozessor nicht von einem FLASH gebootet wird. In dieser Situation
werden die Muster in das System über
einen Konfigurationsanschluss der Konfigurationslogik 404 (siehe 4)
heruntergeladen. Die Konfigurationslogik 404 schreibt dann
den Registerbereich auf den zweiten Bus 407. Wenn der Speicherplan
einmal in die Register heruntergeladen und installiert ist, kann der
Prozessor ausgehend von diesem Rücksetzvektor
booten.
-
Gemäß einer
weiteren Ausführungsform
der vorliegenden Erfindung stellt die Flexibilität, welche durch den rekonfigurierbaren
Speicherplan geboten wird, eine Option bereit, um alle Speicherbereiche
mit Ausnahme der dem PLD-Slave zugeordneten zu sperren, sodass alle
Speicherzugriffe von dem Prozessor 400 an das PLD (siehe 4)
gerichtet werden. Dieser Aspekt der Erfindung ist beispielsweise beim
Prototyping verwendbar, wo ein Benutzer wünscht, den ganzen Adressraum
(z.B. den gesamten in 5 zusammengefassten 4 GB Adressraum) auf
das PLD umzusetzen. Dies erlaubt es dem Benutzer, das System mit
dem in der eingebetteten Logik instanziierten Prozessor und aller
anderen Hardware in dem PLD aufzubauen.
-
Schließlich offenbart
die vorliegende Erfindung ein rekonfigurierbares Speicherplanverfahren und
eine Vorrichtung, welche in einem System auf einem Chip enthalten
sein kann. Die vorangehende Beschreibung von bevorzugten beispielhaften
Ausführungsformen
wurde zum Zwecke der Beschreibung vorgelegt.