Beschreibung
Verfahren zum Hochfahren einer SOPC-Schaltungseinheit
Technisches Gebiet
Die Erfindung betrifft ein Verfahren und eine Schaltungsan¬ ordnung zum Hochfahren einer, aus einer programmierbaren Lo- gikeinheit gebildeten SOPC ("System on a Programmable Chip") - Schaltungseinheit.
Stand der Technik
Die Leistungsfähigkeit elektronischer Schaltungen steigt mit zunehmender Integrationsdichte. Programmierbare Logikeinhei— ten, wie z.B. Field Programmable Gate Array (FPGA), ermögli¬ chen es, dass Programmfunktionen zusammen mit Speicherfunkti— onen auf einem Chip integriert werden können. Dadurch wird dem Anwender, unter Zuhilfenahme von geeigneten Software- Werkzeugen und unter Verwendung vorgefertigter Algorithmen, sog. IP-Cores (Intellectual Property Cores) , die Möglichkeit gegeben, die Funktionalität eines Mikroprozessors samt einer anwendungsspezifischen Logik als Hardware auf seinen Anwen¬ dungsfall abgestimmt, selbst zu entwerfen. Der Entwurf der Hardware kann durch Hardwarebeschreibungssprachen, wie z.B. VHDL ( Very High Speed Integrated Circuit Hardware Descripti- on Language) erfolgen, durch welche ein Konfigurationsdaten— ström erzeugt und in das FPGA geladen wird. Auf diese Weise kann z.B. ein RISC—Prozessor auf einer grafischen Oberfläche entworfen und dessen Funktion in das FPGA eingefügt werden. Gleiches gilt für die anwendungsspezifische Logik. Am Ende des Konfigurierens ist die Hardware des programmierbaren Chips definiert. In einem zweiten Schritt erfolgt dann das Erstellen des eigentlichen Programm-Codes, zum Beispiel unter Zuhilfenahme einer Programmiersprache wie C. Nachdem das C-
Programm (Programmcodes der Anwendung) geschrieben ist, wird dieses mit einem speziellen Compiler übersetzt. Der Objektco¬ de wird in einen nichtflüchtigen Speicher geladen. Dieser Ob¬ jektcode, im folgenden als Programm—Code oder auch als Anwen- der- oder Benutzerprogramm bezeichnet, wird dann vom Mikro¬ prozessor im SOPC ausgeführt.
Im Gegensatz zu herkömmlichen Mikroprozessoren, die aus fest definierten Verarbeitungseinheiten bestehen und durch ein Programm gesteuert werden, das in der CPU sequenziell abgear¬ beitet wird, ermöglicht ein "System on Programmable Chip" (SOPC) in einem weitaus größeren Maße die Parallelverarbei¬ tung, sowie eine bessere Verteilung der Rechnerressourcen ü— ber die Chipfläche. SOPC-Systeme werden in der Kommunikati— onstechnik bei Nebenstellenanlagen (PBX) und im Embedded— Bereich, wie beispielsweise in Handys oder Handhelds, einge¬ setzt.
Bei Anwendungen in der Kommunikationstechnik ist eine SOPC- Schaltung in der Regel Bestandteil einer, auf einer herkömm¬ lichen Leiterplatte realisierten Schaltung. Auf der Leiter¬ platte befindet sich neben dem SOPC-Chip auch ein Schreib- Lese-Speicher, zum Beispiel ein SRAM, der den Objektcode des Anwenderprogramms enthält. SOPC und SRAM sind als getrennte integrierte Bausteine über einen Systembus verbunden.
Um eine Schaltungsanordnung mit einem SOPC-Chip hochzufahren werden sogenannte Initialisierungsbausteine verwendet, die ebenfalls auf der Leiterplatte angeordnet sind. Sie besitzen einen nichtflüchtigen Speicher mit Konfigurationsdaten für das FPGA. Ein Initialisierungsbaustein, auch als serielles Flash oder Boot-Memory bezeichnet, ist auf den FPGA-Baustein abgestimmt und mit diesem zum Beispiel über ein I2C-Interface verbunden. Bei einer Konfiguration in einem sogenannten akti- ven Konfigurationsmodus erzeugt der FPGA-Baustein Synchroni¬ sationssignale, die er an den seriellen Flash—Baustein über¬ mittelt. Wenn beide Bausteine synchronisiert sind, sendet der
serielle Flash-Speicher den Konfigurationsdatenstrom in den FPGA-Baustein. Das so als MikroController konfigurierte FPGA führt nun den Programm-Code des Anwenderprogramms aus dem ex¬ ternen, nichtflüchtigen Programm-Code-Flash-Speicher aus..
Die Notwendigkeit eines externen Flash-Speichers für den Pro¬ gramm—Code ergibt sich daraus, dass die Anzahl der zur Verfü¬ gung stehenden Logikzellen auf dem FPGA-Chip eng begrenzt ist, da ein großer Teil dieser Logikzellen für die CPU- Bildung und für die Bildung der peripheren Funktions- bzw. Logikeinheiten benötigt wird. Gleiches gilt für die Bildung eines externen SRAM—Bausteins auf dem Chip, der zur Speiche¬ rung der Programmdaten des Anwenderprogramms erforderlich ist.
Im Bestreben, die Integrationsdichte elektronischer Schalt¬ kreise ständig zu erhöhen, stellt ein externer nichtflüchti¬ ger Flash—Speicher zur Speicherung des Programm-Codes einen zusätzlichen schaltungstechnischen Aufwand dar, der von Nach¬ teil ist.
Darstellung der Erfindung
Der vorliegenden Erfindung liegt die Aufgabe zu Grunde, eine "System on a Programmable Chip" — Architektur, die einen Ini¬ tialisierungsschaltkreis enthält, so anzugeben, dass ein ex¬ terner, nichtflüchtiger Flash-Speicher nicht erforderlich ist.
Diese Aufgabe wird bei einem Verfahren durch die Merkmale des Patentanspruchs 1 und bei einer Schaltungsanordnung durch die Merkmale des Patentanspruchs 8 gelöst. In den abhängigen An- Sprüchen sind jeweils vorteilhafte Weiterbildungen der Erfin¬ dung angegeben.
Die Erfindung geht davon aus, der Speicherbereich des Initia¬ lisierungsbausteins neben der Speicherung der Konfigurations¬ daten auch für die Speicherung des Programm-Codes genutzt werden kann. Dadurch kann ein externer Flash-Speicher einge- spart werden, da der Programm-Code direkt im Initialisie¬ rungsbaustein bereit gehalten wird. Auf der Leiterplatte ent¬ fällt damit der erforderliche Platz für den Flash- Speicherbaustein. Mit dem Wegfall des Flash—Speicherbausteins fallen auch Adress- und Datenleitungen weg. Dies vereinfacht nicht nur das Schaltungslayout, sondern verbessert auch die Systemzuverlässigkeit. Das System ist weniger anfällig gegen elektromagnetische Störungen. Ferner ergibt sich ein ferti- gungs- und verwaltungstechnischer Vorteil, da nur ein Bau¬ stein, der Initialisierungsbaustein, programmiert werden muss und nur eine Sachnummer der Software zu verwalten ist. Da¬ durch verringern sich die Kosten bei der Realisierung einer SOPC-Applikation.
Das erfindungsgemäße Verfahren zum Hochfahren einer Schal- tungsanordnung mit einem SOPC-Chip weist daher folgende Schritte auf:
a) Bereithalten von Konfigurationsdaten in einem ersten Speicherbereich und Anweisungen eines Programm—Codes in einem zweiten Speicherbereich eines nichtflüchtigen Speichers in einem Initia¬ lisierungsschaltkreis; b) Übertragen der Konfigurationsdaten aus diesem ersten Speicherbereich des nichtflüchtigen Spei- chers in die SOPC-Schaltungseinheit, um diese zu konfigurieren; c) Übertragen der Anweisungen des Programmcodes aus dem zweiten Speicherbereich des nichtflüchtigen Speichers in einen Speicherbereich des Schreib- Lese-Speichers; d) Ausführen der Anweisungen im Schreib—Lese- Speicher durch die SOPC-Schaltungseinheit.
Eine bevorzugte Ausführung des erfindungsgemäßen Verfahrens ist dadurch gekennzeichnet, dass mit der Übertragung der Kon¬ figurationsdaten in die SOPC-Schaltungseinheit ein CPU- Bootcode übertragen und in einen konfigurierten Speicherbe¬ reich der SOPC-Schaltungseinheit gespeichert wird. Dadurch kann dieser CPU-Bootcode unmittelbar nach dem die Konfigura¬ tion des SOPC-Bausteins abgeschlossen ist, ausgeführt werden. Dieses CPU-Bootprogramm ist vom Speicherbedarf her so klein bemessen, dass es in den konfigurierbaren Speicherbereich des SOPC-Bausteins passt.
Hierbei ist bevorzugt, dass unmittelbar nach Abschluss der Konfiguration der SOPC-Schaltungseinheit der CPU-Bootcode au— tomatisch gestartet wird, um sämtliche Anweisungen des Pro¬ gramm-Codes vom zweiten Speicherbereich des nichtflüchtigen Speichers über den Systembus in den Schreib-Lese— Speicher zu übertragen. Dadurch wird der im Initialisierungsbaustein ge¬ speicherte Programm-Code in den externen Schreib-Lese- Speicher (RAM-Speicher) kopiert. Nach Abschluss des Kopier¬ vorgangs enthält der Schreib-Lese—Speicher, der bislang nur zur Speicherung von Programm-Daten verwendet wurde, auch den vollständigen Code der Applikation. Von dort kann dieses An¬ wenderprogramm dann ausgeführt werden.
Bei der Übertragung auf dem Systembus wird bevorzugt ein se¬ rielles Übertragungsverfahren verwendet.
Um die Zeitdauer für das Hochfahrens möglichst gering zu halten, ist es günstig, wenn unmittelbar nach der Übertra¬ gung des Programm-Codes die SOPC-Schaltungseinheit mit der sequenziellen Abarbeitung der Anweisungen des Programm-Codes aus dem Schreib-Lese-Speicher beginnt.
In einer besonders bevorzugten Variante der Erfindung wird der Programm—Code im Initialisierungsbaustein in einer komp¬ rimierten Form bereitgehalten. Dadurch können auch komplexe
Anwenderprogramme im Initialisierungsbaustein gespeichert werden.
Von ganz besonderem vorteil ist, wenn der Programm-Code in Programmsätze gegliedert ist, und jedem Programmsatz jeweils ein Algorithmus zur Dekompression zugeordnet ist. Dadurch braucht das Boot-Programm, dessen Speicherumfang am SOPC-Chip eng begrenzt ist, keinen Dekompressionsalgorithmus enthalten.
Kurzbeschreibung der Zeichnungen
Die Erfindung wird nachstehend an Hand eines Ausführungsbei¬ spiels näher erläutert. Es zeigt:
Figur 1 in einer Blockdarstellung eine "System on a Pro- grammable Chip "— Schaltungsanordnung gemäß dem Stand der Technik, wobei der externe Flash—Speicher den Programm-Code der Applikation enthält;
Figur 2 in einer Blockdarstellung ein Ausführungsbeispiel einer "System on a Programmable Chip" - Schaltungs¬ anordnung gemäß der Erfindung, wobei ein externer Flash—Speicher nicht erforderlich ist.
Ausführung der Erfindung
Die Figur 1 zeigt in einer Blockdarstellung eine SOPC- Architektur gemäß dem Stand der Technik. In der Zeichnung der Figur 1 ist mit dem Bezugszeichen 1 eine, aus einer pro¬ grammierbaren Logikeinheit (FPGA) gebildete SOPC- Schaltungseinheit bezeichnet. Die SOPC-Schaltungseinheit 1 ist auf einem Chip realisiert. Von diesem Chip getrennt ist im Block links mit dem Bezugszeichen 2 ein Initialisierungs¬ schaltkreis gekennzeichnet. Dieser Initialisierungsschalt¬ kreis 2 ist auf Grund seiner Funktion und seiner seriellen Anbindung an den FPGA-Baustein 1 als "Serielles Flash" ge¬ kennzeichnet. Das serielle Flash 2 enthält einen nichtflüch- tigen Speicher mit einem Speicherbereich 3. Der nichtflüchti— ge Speicher kann z.B. in EPROM-Technologie ausgeführt sein. Der Speicherbereich 3 enthält die Konfigurationsdaten für den FPGA-Baustein 1 und den Startup-Code zur Konfiguration einer CPU auf dem FPGA 1. In der Zeichnung der Figur 1 ist auf der rechten Seite ein Schreib-Lese-Speicher 5 (RAM) zu sehen, der zur Speicherung der Programm—Daten dient. Im Block darunter ist ein zweiter, externer, nichtflüchtiger Speicher 6 ge¬ zeichnet, der als Flash—Speicher ausgebildet ist und den Pro¬ gramm-Code, das heißt die Anweisungen des Anwenderprogramms enthält. Die Pfeile 7, 11, und 12 deuten einen nicht näher dargestellten Systembus an, der die einzelnen Blöcke 1, 2, 5 und 6 verbindet. Der Baustein 2 kann z.B. ein Altera ® EPCSl sein, und Baustein 1 kann ein Altera ® Cyclon ™ sein.
Das Hochfahren eines derartigen Systems aus dem Stand der Technik funktioniert nun so, dass beim Einschalten der Ver¬ sorgungsspannung, gemäß einer inhärenten funktionellen Zuord¬ nung der Bausteine 1 und 2, Baustein 1 die Rolle eines Mas¬ ters, und Baustein 2 die Rolle eines Slaves einnimmt. Beim Power-Up wird vom seriellen Flash 2 der Konfigurationsdaten¬ strom (in Figur 1: Pfeil 7 mit der Kennzeichnung " FPGA-Boot ") in den programmierbaren Logikbausteinen FPGA 1 übertragen.
Diese Übertragung erfolgt bei den oben erwähnten Bausteinen Altera ® EPCSl und Cyclon ™ mit einem Bit pro Taktzyklus. Ergebnis dieser Konfiguration ist, dass, entsprechend der ü- bertragenen Konfigurationsdaten, auf dem FPGA 1 ein Mikropro- zessor, dessen Register sowie Ein- und Ausgabeeinheiten defi¬ niert und initialisiert sind. Nach der Initialisierung geht das System in den Benutzermodus über. Es folgt die Ausführung des eigentlichen Anwender/Benutzerprogramms, dessen Programm- Code im externen Flash-Speicher 6 gespeichert ist. (Der ex- terne Flash-Speicher 6 ist über parallele Leitungen des Sys¬ tembus mit dem SOPC-Baustein 1 verbunden (Pfeil 12) und in Figur 1 der Block der besseren Unterscheidbarkeit wegen mit "Paralleles Flash" beschriftet) . Während der Bearbeitung des Anwenderprogramms werden Programm-Daten zwischen dem SOPC- Baustein 1 und dem Schreib-Lese-Speicher (RAM-Speieher) 5 ausgetauscht (Pfeil 11).
Die Figur 2 zeigt in einer Blockdarstellung ein Ausführungs¬ beispiel der Erfindung. Wie ein Vergleich mit Figur 1 zeigt, ist der bislang erforderliche externe Flash-Speicher (in wel¬ chem gemäß dem Stand der Technik der Programm-Code abgelegt ist) , durch die Erfindung nicht mehr erforderlich. Erfin¬ dungsgemäß wird der Programm-Code im Initialisierungsbaustein 2 gespeichert. Hierzu weist der Initialisierungsbaustein 2 einen ersten Speicherbereich 3 auf, in welchem (wie bislang im Stand der Technik auch) , die Konfigurationsdaten für den FPGA-Baustein sowie der Startup-Code für die CPU bereit gehalten werden. Zusätzlich zu diesem ersten Speicherbereich 3 weist der Initialisierungsbaustein 2 einen weiteren, zwei— ten Speicherbereich 4 auf, in welchem gemäß der Erfindung der Programm-Code eines oder mehrerer Anwenderprogramme gespei¬ chert ist.
Das Hochfahren der erfindungsgemäßen Schaltungsanordnung er- folgt nun so, dass, sobald die Versorgungsspannung stabil am FPGA-Baustein 1 anliegt, der FPGA-Baustein 1 die Rolle des Masters und der Initialisierungsbaustein 2 die Rolle des Sla—
ve einnimmt. Anschließend werden die Konfigurationsdaten für den FPGA-Baustein 1 inklusive des Startup-Codes für die CPU vom Initialisierungsbaustein 2 in den FPGA-Baustein 1 über¬ tragen (in Figur 2 ist dies wieder durch den Pfeil 7 mit der Beschriftung "FPGA-Boot" dargestellt) . Die Datenübertragung beinhaltet auch ein kleines Boot-Programm, was in Figur 2 mit dem Pfeil 8 ("CPU-Boot") veranschaulicht ist. Unmittelbar nach der Konfiguration des FPGA-Bausteins 1, bei dem dieser die SOPC-Funktionalität erhält, wird nun dieses Boot-Programm "CPU-Bootcode" im SOPC-Baustein 1 gespeichert und ausgeführt. Der "CPU-Bootcode" ist hinsichtlich seines Speicherbedarfs so klein bemessen, dass er ohne weiteres in den konfigurierbaren Speicherbereich des SOPC-Bausteins passt. Sobald dieser "CPU- Bootcode" vollständig in den SOPC-Baustein 1 übertragen und dort ablauffähig ist, beginnt dieses Boot—Programm mit einem Kopiervorgang, bei dem Daten aus dem Speicherbereich 4 des seriellen Flash-Festwertspeichers 4 in einen Speicherbereich des externen RAM—Speichers 5 kopiert werden. In Figur 2 ist dieser Vorgang durch die Pfeile 8 und 9 ("CPU-Boot") veran- schaulicht. Am Ende dieses Kopiervorgangs steht nun der voll¬ ständigen Satz der Anweisungen des Programm-Codes auch im RAM 5. Im Gegensatz zum Stand der Technik enthält nun das RAM 8 zusätzlich zu den Programm—Daten auch den Programm-Code. Die CPU im SOPC-Baustein beginnt nun mit der Ausführung des Pro- gramm-Codes aus dem Schreib-Lese-Speicher (RAM) 5.
Der Programm-Code wird im seriellen Flash—Speicher bevorzugt in einer komprimierten Form bereit gehalten. Von besonderem Vorteil ist, wenn an das komprimierte Anwenderprogramm ein Algorithmus zur Dekompression angehängt ist. Beim Hochfahren kopiert der "CPU-Bootcode" das Programm—Code-File samt diesem Dekomprimieralgorithmus in den Schreib-Lese-Speicher 5. So¬ bald dieser Kopiervorgang abgeschlossen ist, wird durch den Dekomprimieralgorithmus die Kompression der Applikation wie— der rückgängig gemacht und der Programm—Code gestartet.
In einer besonders bevorzugten Ausführungsform werden mehrere Versionen samt zugehöriger Programm-Daten in komprimierter Form im Initialisierungsbaustein 2 bereit gehalten. Einem Programmsatz können mehrere Programm-Datensätze zugeordnet werden. Dadurch kann ein Programmsatz der in verschiedenen Ländern zum Einsatz kommt, auf die jeweilige Landessprache (z.B. in deutsch, englisch, und französisch) abgestimmt wer¬ den. Neben der oben dargestellten Hardware-Einsparung, die durch Wegfall des externen Speichers zustande kommt, ergibt sich durch Programmsätze, denen mehrere Sprach-Datensätze zu¬ geordnet sind, weiter Verwaltungs- bzw. Logistik-Vorteile.