SoPC-basierte Embedded Systeme
SoPC - Was ist das?

Die Abkürzung SoPC steht für "System on a Programmable Chip" und
bezeichnet ein, in der Regel Mikroprozessor-basiertes System,
welches in einem wiederprogrammierbaren Logikbaustein (einem FPGA,
Field Programmable Gate Array) realisiert ist. Das folgende Bild
zeigt beispielhaft den Aufbau eines SoPC-basierten Embedded Systems,
bei dem alle Systemkomponenten, in diesem Fall ein vollständiger
Mikrocontroller, in einem FPGA integriert sind. Lediglich eine
gegebenenfalls notwendige, Analogkomponenten umfassende
Anpassschaltung muss außerhalb des FPGAs realisiert werden.
|
  
| |

Der entscheidende Vorteil dieser Systemlösung ist, dass, bedingt
durch die Wiederprogrammierbarkeit von FPGAs, das vollständige
System, bestehend aus Hard- und Software, nachträglich geändert
werden kann. Somit kann der Einsatzbereich des Systems,
beispielsweise durch Integration eines leistungsfähigeren
Prozessors, jederzeit angepasst oder geändert werden. Die
Hardware kann aktualisiert oder geändert werden, ohne dass
'wirklich' neue Hardware produziert werden muss.
|
Entwicklungsmethode

Wie wird nun ein SoPC-basiertes Embedded System entwickelt?
|

Die grundlegenden SoPC-Komponenten, wie beispielsweise die CPU
oder Standard-Ein-/Ausgabeschnittstellen, sind häufig in Form
sogenannter IP-Cores verfügbar. Unter einem IP-Core versteht man
ein in einer Hardwarebeschreibungssprache (z. B. VHDL) erstelltes,
synthetisierbares Modell einer Systemkomponente. Mittlerweile gibt
es eine Vielzahl von kommerziellen Anbietern für IP-Cores.
Daneben hat sich, ähnlich dem aus dem Software-Bereich
bekannten Open-Source Markt, ein Markt für weitgehend frei
verfügbare IP-Cores entwickelt (siehe:
OpenCores
).
|

Die Integration der eingesetzten IP-Cores und der Zusammenbau
zu einem Gesamtsystem wird in der Regel auf einem relativ
hohen Abstraktionsniveau durch Tools mit einer grafischen
Benutzeroberfläche unterstützt. Das so spezifizierte SoPC
muss dann noch in ein FPGA-spezifisches Format übersetzt und
in das FPGA 'programmiert' werden.
|

Die Entwicklung der auf dem System ablaufenden Software erfolgt
nach den in diesem Bereich bekannten Methoden.
|
Einsatzgebiete

Möglich und interessant wurde der Einsatz von SoPC-basierten
Embedded Systems erst durch die Verfügbarkeit von ausreichend
hoch integrierten FPGAs. Aktuell verfügbare FPGA-Bausteine
erlauben die Integration komplexer Mehrprozessorsysteme mit
mehreren 32-Bit CPUs. Diesbezügliche Anwendungsgrenzen sind
praktisch nicht vorhanden. Einziger Wermutstropfen ist der im
Vergleich zu einem Mikrocontroller-basierten Embedded System
derzeit noch etwas höhere Preis. Dem gegenüber steht jedoch der
einzigartige Vorteil, das Gesamtsystem (Hard- und Software!)
jederzeit aktualisieren und anpassen zu können.
|
Unser Know-How

Im Fachgebiet Computertechnik und -entwicklung beschäftigen wir
uns seit vielen Jahren mit der Entwicklung und dem Aufbau
SoPC-basierter Embedded Systems. Solche Systeme werden sowohl
in der Lehre als auch in der angewandten Forschung und Entwicklung
eingesetzt. Die im folgenden aufgelisteten Arbeiten und Projekte
stehen repräsentativ für den vorhandenen Erfahrungsschatz.
|
 
| 
|
Die MSoPC-Baugruppe wurde im Rahmen einer Diplomarbeit
(
Diplomarbeit MSoPC)
entwickelt. Auf der Baugruppe befinden sich mehrere FPGAs der
Firma Altera sowie eine Vielzahl von Ein-/Ausgabe-Komponenten,
wie beispielsweise ein LCD mit Touchpanel, und
Erweiterungsschnittstellen. Die Baugruppe wurde für einen
möglichst universellen Einsatz konzipiert und wird dementsprechend
in den meisten unserer Entwicklungsprojekte eingesetzt.
|
| 
| 
| uCLinux basierte Entwicklungsumgebung |
Im Rahmen einer Diplomarbeit
(
Diplomarbeit uCLinux)
entstand eine Embedded Linux (uCLinux) basierte Entwicklungsumgebung
für die MSoPC-Baugruppe. Die auf der Baugruppe vorhandenen
Ein-/Ausgabe-Einheiten, allen voran das LCD-Display, werden durch
entsprechende Linux-Treiber unterstützt. Durch einen ebenfalls im
Rahmen dieser Arbeit entwickelten Ethernet-Adapter und eine
angepasste Bootloader-Software kann das System auch über ein
Netzwerk gebootet werden bzw. das entwickelte Anwenderprogramm
kann über Ethernet schnell auf das Zielsystem geladen werden.
|
| 
| 
| RPC-basierte Anbindung eines LCD/Touchpanels |
Mit Hilfe der MSoPC-Baugruppe wurde im Rahmen einer Bachelorarbeiten
(
Bachelorarbeit RPC)
ein heterogenes Mehrprozessorsystem entwickelt, bei welchem ein
Prozessor als sogenannter I/O-Coprozessor für die Bedienung
der Ein-/Ausgabeschnittstellen eines Systems, allen voran ein
LCD-Grafikbildschirm mit Touchpanel, abgestellt ist. Die Dienste
dieses I/O-Coprozessors können mittels sogenannter Remote Procedure
Calls (RPC) von anderen Prozessoren in Anspruch genommen werden.
|
| 
| 
| Pipeline-Datenverarbeitung in einem
Multiprozessor-SoPC |
Die Pipeline-Bearbeitung ist ein im Bereich der Embedded Systeme
häufig angewandtes Bearbeitungsmodell. Dabei können in einem
Mehrprozessorsystem jedem Prozessor eine oder mehrere
Bearbeitungsstufen der Pipeline zugewiesen werden. Die auf
den jeweiligen Prozessoren ablaufenden Bearbeitungsvorgänge
werden zeitlich parallel ausgeführt. In mehreren Bachelorarbeiten
wurde ein Framework zur Erstellung von Anwendungen nach dem
Pipeline-Bearbeitungsmodell entwickelt. Ziel ist es gewesen,
eine Entwicklungsumgebung zu schaffen, bei der sich der Entwickler
ausschließlich auf die Entwicklung der jeweiligen, in einer
Pipeline-Stufe ausgeführten Datenbearbeitungsprozesse
konzentrieren muss. Alle Aufgaben der Pipeline-Konfiguration
und der Kommunikation zwischen den Pipeline-Stufen werden von dem
Framework übernommen. Weitere Informationen auf Anfrage (strahnen@hs-ulm.de).
|
|
 |