System-on-Chips (SoCs) - Teil 1
Leistungsschub für Embedded Systeme
Einen kleinen Quantensprung in der Entwicklung von Embedded-Systemen bringen nun Bausteine der Zynq-7000-Familie mit sich. Der erste Teil der zweiteiligen Artikelserie geht auf die technischen Grundlagen und die benötigten Entwicklungshilfen dieser Bausteinfamilie ein. Der zweite Teil wird sich mit der konkreten Entwicklung eines Gerätes befassen.
System-on-Chips, kurz SoCs, sind Halbleiterchips, die neben dem Prozessorkern eine größere Anzahl von Peripheriefunktionen und auch Speicher auf ein und demselben Chip vereinen. Im Allgemeinen besteht die Peripherie aus:
- Schnittstellen für die Kommunikation (Ethernet, USB, UART, I2C),
- einer Memory Management Unit,
- eventuell einem Graphic Controller
- und anwendungsspezifischen spezialisierten Co-Prozessoren, beispielsweise MPEG Encoder/Decoder.
Für die Realisierung von Embedded-Systemen werden heute fast ausschließlich SoCs verwendet. Niemand wird einen nackten Prozessor einsetzen und die benötigte Peripherie dazu designen. Am Markt sind inzwischen eine Vielzahl von Standard-SoCs im Angebot. Sobald aber anwendungsspezifische Peripherie erforderlich ist, stößt das Off-the-Shelf-SoC an seine Grenzen. Bei sehr großen Stückzahlen, wie sie bei Anwendungen im Telekom- oder Consumerbereich entstehen, lohnt es sich, ein eigenes SoC zu entwickeln. Die Entwicklungskosten dafür liegen allerdings im zweistelligen Millionenbereich. Für Anwendungen im Kontroll- oder Automatisierungsbereich ist das zu teuer!
Wenn das Off-the-Shelf-SoC an seine Grenzen stößt, wird häufig ein FPGA dazugenommen, in welchem die Spezialfunktionen implementiert werden können. Das erzeugt jedoch zusätzlichen Aufwand. Zudem wird die Kommunikation des Prozessors mit dem FPGA und der Datenaustausch vom FPGA zum Systemspeicher häufig zum lästigen Engpass.
Vorteile und Nachteile der Standard-SoCs
Der Einsatz von SoCs führt zu kompakten, leistungsfähigen aber dennoch stromsparenden Systemen. Falls der Funktionsumfang des Standard-SoCs ausreicht, muss man verhältnismäßig wenig in die Hardware-Entwicklung investieren. Ein Nachteil bei der Verwendung von Standard-SoCs entsteht jedoch in der Abhängigkeit von einem spezifischen Typ und Hersteller. Für Anwendungen in der Industrie-Elektronik, wo nur mittlere Stückzahlen benötigt werden, ist Langzeitverfügbarkeit oftmals ein Problem. Die Abkündigung eines bestimmten SoC-Produkts zieht oft ein umfangreiches Redesign nach sich. Ein weiterer Nachteil ist der Mangel an spezieller Peripherie bei Standard-SoCs, um sich besser differenzieren zu können. Eine Differenzierung ist nur durch die Erweiterung der Schaltung um zusätzliche diskrete Funktionselemente – beispielsweise FPGAs – möglich. Gefragt wären also SoCs, die kompakt, leistungsfähig und stromsparend sind sowie genügend Flexibilität bieten, um spezielle Funktionalität auf einem Chip zu realisieren.
Die Zynq-7000-SoC-Familie
Bild 1: Der Aufbau des Zynq-7000-SoCs mit seiner Besonderheit: Insgesamt neun ARM-AMBA-AXI-Interfaces zwischen dem Prozessorsystem und der programmierbaren Logik ermöglichen einen Multi-Gigabit-Datentransfer bei geringem Leistungsverbrauch.
© NetmoduleIn diese Marktlücke stößt die Zynq-7000-SoC-Familie. Jeder Baustein der Zynq-7000-Familie besteht aus einem Dual-core Cortex-A9-MPCore-Prozessorsystem, das mit bis zu 1 GHz Taktrate betrieben werden kann. Der Prozessorkern enthält zusätzlich eine NEON-und Double-Precision Floating-Point-Erweiterung. Das System ist voll integriert und fest verdrahtet und enthält L1- und L2-Caches, Speicher-Controller und eine Vielzahl gängiger Peripherie. Bild 1 zeigt das Blockschaltbild. Die zwei ARM-Prozessoren kommunizieren mit dem On-Chip-Speicher, den SDRAM und Flash Memory-Controllern und den verschiedenen Peripherieblöcken über ein ARM-AMBA-AXI-basiertes Bussystem.
Das eigentlich Spezielle ist jedoch die auf dem Chip integrierte programierbare Logik: Sie basiert auf der neuesten Xilinx-Serie-7-FPGA-Architektur. Damit ist eine 100-prozentige Kompatibilität in Bezug auf IP, Tools und Leistungsdaten zu allen Bausteinen der Xilinx-Kintex-7- und Artix-7-FPGAs sichergestellt. Insgesamt neun ARM-AMBA-AXI-Interfaces zwischen dem Prozessorsystem und der programmierbaren Logik ermöglichen einen Multi-Gigabit-Datentransfer bei geringem Leistungsverbrauch. Damit kann der SoC durch massive Parallelverarbeitung der programmierbaren Logik für große Datenmengen für rechenintensive Signalverarbeitung genutzt werden. Zugleich ist durch die Implementierung zusätzlicher Peripherie die Erweiterung der Funktionalität des Prozessorsystems möglich.
Derzeit besteht die Zynq-7000-SoC-Familie aus fünf Mitgliedern: Zynq-7010, Zynq-7020, Zynq-7030, Zynq-7045 und Zynq-7100. Die kleinsten Zynq-7000 Bausteine, Zynq-7010 und Zynq-7020, enthalten FPGAs auf der Artix-7-Familie, die für Low-cost- und Low-power-Applikationen optimiert ist. Die größeren Bausteine Zynq-7030, Zynq-7045 und Zynq-7100 beinhalten FPGAs der Kintex-7-Familie. Sie bieten vier bis zwölf 10,3-Gbps Transceiver-Kanäle sowie einen PCI-Express-Gen2-Block. Alle fünf Bausteine enthalten darüber hinaus einen 12-bit/1-Msps-ADC-Block.
Mittlere Stückzahlen interessant
Die integrierte „Programmable Logic“, die auf der aktuellen FPGA-Technologie von Xilinx basiert, bietet zusätzliche Freiheitsgrade. Mit ihr ist es möglich, mittels einer Konfigurationsdatei vielfältige neue Funktionen auf ein- und demselben Chip dazu zu implementieren. Dies eröffnet erstmals auch für Anwendungen mit mittleren Stückzahlen die Möglichkeit, einen spezialisierten SoC zu entwickeln.
Zynq stützt sich auf einen Plattformgedanken. Bereits heute gibt es fünf Mitglieder dieser Plattform und mittelfristig werden noch einige dazukommen. Das reduziert die Abhängigkeit von einem spezifischen IC-Typ: Die Migration auf ein anderes Modell derselben Plattform ist mit geringem Aufwand verbunden. Der Nachteil für diese Flexibilität ist zwar ein höherer Stückpreis, der aber in vielen Anwendungen durch Einsparungen auf Systemebene wieder wettgemacht wird.
Zielanwendungen
Bild 2: Die Vivado Design Suite - mit ihr lässt sich der FPGA des Bausteins so programmieren, dass Systemleistung und applikationsspezifische Anforderungen maximiert werden.
© NetmoduleDer Anwendungsbereich der Zynq-Familie sind Embedded-Systeme jeder Art, die ein leistungsfähiges Prozessorsystem und zusätzliche, spezialisierte Peripheriefunktionen benötigen: Kommunikationssysteme, Networking, Audiocodecs, Bild/Video-Erfassung und -Verarbeitung, Verschlüsselung, Maschinen-/Motorsteuerungen, Medizintechnik.
Notwendige Werkzeuge
Für die Software-Entwicklung werden die gleichen Hilfsmittel wie für jedes ARM-Prozessorsystem benötigt. Parallel dazu lässt sich die „Programmable Logic“ der Zynq-7000 Familie so programmieren, dass Systemleistung und applikationsspezifische Anforderungen maximiert werden. Hierzu bietet Xilinx die ISE-Design-Suite und die neue Vivado Design Suite an (Bild 2). Sie enthalten eine komplette Hardware-Umgebung mit Entwicklungs-Tools und AMBA4 AXI4 Plug-and-Play IP, sowie Bus-Funktionsmodelle (BFM) zur Beschleunigung von Design- und Verifizierungsphase.
IP-Cores
Von Xilinx und den Allianzpartnern von Xilinx steht eine sehr große Auswahl von IP-Cores zur Verfügung. Eigenentwicklungen sind nur dann nötig, wenn die Funktionalität hochgradig spezialisiert ist, oder man sich aus Konkurrenzgründen differenzieren möchte.
Essenziell: das Know-how
Die Kombination von Prozessorlogik und FPGA-Technologie erzeugt die Notwendigkeit zur engen Zusammenarbeit der Software-Entwickler mit den FPGA-Spezialisten. Entwicklungen mit Zynq-7000-Chips bedürfen eines Entwicklungsteams, das beide Disziplinen mit einer hohen Professionalität abdeckt. Um schnell zu einem positiven Entwicklungsergebnis zu kommen, muss der FPGA-Entwickler über gute Kenntnisse und Erfahrungen der FPGA-Technologie verfügen. Ist das nicht der Fall, sind Probleme mit der Synthese und dem Timing wahrscheinlich.
Das Angebot an entsprechenden Schulungen ist inzwischen vorhanden. Außerdem gibt es eine Reihe von spezialisierten Dienstleistern, die zur Projektbegleitung engagiert oder mit der Entwicklung beauftragt werden können. Für die Software-Entwicklungen sind Ingenieure vonnöten, die das ARM-Ecosystem gut kennen. Das Prozessorsystem selbst unterscheidet sich nicht wesentlich von anderen SoC-Architekturen.
Die Software
Das Prozessorsystem bootet sofort nach dem Einschalten und läuft mit einer Vielzahl von Betriebssystemen, unabhängig von der programmierbaren Logik. Das Prozessorsystem konfiguriert dann die programmierbare Logik nach der vordefinierten Anforderung. Der Hersteller gibt unter anderem folgenden Betriebssystem-Support an:
- Linux in den Varianten Xilinxs PetaLinux, Wind Rivers Linux 5, Timesys’ LinuxLink,
- Android von iVeia and Adeneo,
- Microsoft: Windows Embedded Compact 7
- RTOS: Xilinxs FreeRTOS, Wind Rivers VxWorks, Green Hills Softwares „Integrity“, ENEAs OSE, Express Logics ThreadX/NetX, Mentor Embedded Nucleus, Quadros und andere.
Mainstream ist heute sicherlich Linux mit symmetrischem Multiprocessing (SMP). Für spezielle Anwendungen kann es aber sehr interressant sein, asymmetrisches Multiprocessing zu verwenden (AMP). In diesem Fall lässt sich beispielsweise der zweite ARM Core mit einem schlanken RTOS betreiben.
Die Werkzeuge
Software-Entwickler können die Eclipse-Umgebung, das „Xilinx Platform Studio Software Development Kit“ (SDK) sowie das „ARM Development Studio 5“ (DS-5) und die „ARM RealView Development Suite“ (RVDS) nutzen. Außerdem die Compiler, Debugger und Applikationen führender Anbieter der ARM Connected Community und des Xilinx-Alliance-Programms. Dazu zählen unter anderem Lauterbach, Wind River, PetaLogix, The MathWorks, Mentor Graphics, Micrium und MontaVista.
Mit der Zynq-7000-Familie hat Xilinx den Anwendern die Möglichkeit eröffnet, selbst für kleinere Stückzahlen leistungsfähige und bezahlbare SoC-Lösungen zu entwickeln. Die zugrundeliegende Zynq-7000-Plattform besticht durch Skalierfähigkeit der einsetzbaren Technologien und hohe Kompatibilität zu ARM-Standards und anderen Produkten von Xilinx sowie einer Vielzahl an verfügbaren Tools. Allerdings stellt die umfassende Programmierfähigkeit der Produkte hohe Anforderungen an den Entwickler.
Autoren: Rainer Fehr ist technischer Leiter bei Netmodule,
Jürgen Kern ist Geschäftsführer bei Netmodule.












