SoC-Architektur

Was ist eine SoC-Architektur?

Eine System-on-a-Chip-Architektur (SoC-Architektur) beschreibt einen komplexen integrierten Schaltkreis, der Prozessorkerne, Speicher, Hardware-Logik, Peripherieeinheiten und weitere Komponenten enthält, die alle durch Kommunikationssysteme wie interne Datenbusse oder Netzwerke miteinander verbunden sind.

Mithilfe von MATLAB® und Simulink® lassen sich Algorithmen zur Implementierung auf SoC-Architekturen entwickeln und anschließend dabei analysieren, wie sie sich bei einer Partitionierung zwischen Software-Komponenten verhalten würden, die auf dedizierten Hardware-Prozessoren laufen. Anschließend können Sie Code-Generatoren und Hardware-Support-Pakete verwenden, um programmierbare SoC-Bausteine und Boards anzusteuern.

Prozessorkerne

Prozessorkerne sind die zentralen Bausteine von SoC-Architekturen. Viele SoCs basieren heute auf Prozessorkernen von Arm®, wie den Cortex®-A-, Cortex-M- und Cortex-R-Kernen. Andere spezialisierte Kerne, die in SoC-Architekturen verwendet werden, sind beispielsweise Synopsys® ARC®-Prozessoren, Cadence® Tensilica®Xtensa®-Prozessoren und Prozessorkerne, die auf der RISC-V-Befehlssatzarchitektur basieren.

SoC-Architekturen basieren zunehmend auf mehreren Kernen. Beim symmetrischen Multiprocessing werden die Anwendungen auf mehrere Prozessorkerne partitioniert. Beim asymmetrischen Multiprocessing hingegen können die Kerne völlig unterschiedliche Aufgaben erfüllen, wobei einige von ihnen anspruchsvolle Echtzeit-Aufgaben übernehmen und gleichzeitig die Ein- und Ausgabe verwalten, während andere allgemeine Steuerungsfunktionen wahrnehmen. Jede dieser Formen von SoC-Architekturen bringt eigene Herausforderungen bei der Programmierung und Kommunikation mit sich.

Abbildung 1: SoC-Architekturen umfassen Prozessoren, Speicher, Peripheriekomponenten und Kommunikationsbusse.

SoC-Architekturen umfassen Prozessoren, Speicher, Peripheriekomponenten und Kommunikationsbusse.

Speicher

SoC-Architekturen können verschiedene Speichertypen und -konfigurationen enthalten. Der SRAM-Speicher kann für Prozessorregister und schnelle Level-1-Caches (L1) verwendet werden, während der DRAM-Speicher häufig den Hauptspeicher der unteren Ebene von SoCs bildet.

Für speicherintensive Anwendungen, wie beispielsweise Embedded Vision, benötigen Entwickler gegebenenfalls Off-Chip-DDR-Speicher, um die Datenmenge zu verwalten. Die Speicherbandbreite der SoC-Architektur kann dabei ein wichtiger Faktor bei der Entwicklung dieser Anwendungen sein. Produkte wie das SoC Blockset™ lassen sich zur Analyse der Speicherbandbreite für in Simulink modellierte Systeme verwenden.

Peripherie/Schnittstellen

Viele Peripheriekomponenten wurden in SoC-Architekturen integriert, oftmals um gängige Kommunikationsprotokolle zu unterstützen. Zu den gängigen Schnittstellen gehören GPIO, PCI-Express, Gigabit Ethernet, CAN, SPI, USB und UART.

Die SoC-Architekturen von Mikrocontrollern weisen Peripheriekomponenten wie Pulsbreitenmodulatoren (PWM), Analog-Digital-Wandler (ADC) und Digital-Analog-Wandler (DAC) auf. Mit dem SoC Blockset haben Sie die Möglichkeit, diese Peripheriekomponenten während der Algorithmenentwicklung in Simulink zu simulieren, während die SoC Builder-App den Prozess der Konfiguration der Peripheriekomponenten automatisiert.

Kommunikationssysteme

Die verschiedenen Module in SoC-Architekturen müssen miteinander kommunizieren, um Anweisungen und Daten zu senden. Die busbasierte Kommunikation wird bereits seit der Entwicklung der ersten SoCs zu diesem Zweck eingesetzt. Eine der verbreitetsten Busarchitekturen ist der AMBA-Standard (Advanced Microcontroller Bus Architecture) von Arm. Das AMBA Advanced eXtensible Interface (AXI), hat sich inzwischen in der gesamten Halbleiterindustrie durchgesetzt.

In den vergangenen Jahren haben sich auch Verbindungsnetzwerke als Alternative zur busbasierten Kommunikation in SoC-Architekturen durchgesetzt. Der Typ der Verbindungsarchitektur – oft als Network-on-Chip bezeichnet – ermöglicht es jedem Subsystem, seine eigene Taktdomäne zu haben.

Programmierbare SoCs

Halbleiterunternehmen wie AMD®, Intel® und Microchip haben programmierbare SoC-Architekturen als Erweiterung von FPGA-Produktlinien entwickelt. Diese programmierbaren SoC-Elemente bieten den Anwendern festverdrahtete Prozessorkerne zusammen mit der programmierbaren Logik von herkömmlichen FPGAs. Programmierbare SoCs ermöglichen es den Kunden, Hardware/Software-Anwendungen zu entwickeln, die aus Prozessorsoftware in Kombination mit Bibliotheken von IP-Cores bestehen.

  • #AMD führte die Zynq®-7000 SoC-Architektur mit einem Arm Dual-Core-Cortex-A9-Kern ein, und anschließend folgten die Zynq UltraScale+ MPSoC- und RFSoC-Familien, die Quad-Core-Cortex-A53- und Dual-Core-Cortex-R5F-Prozessoren von Arm enthalten.
  • Intel brachte Bausteine mit SoC-Architekturen auf den Markt, die als SoC FPGAs bezeichnet werden. Cyclone® V SoC, Arria V SoC und Arria 10 SoC basieren auf dem Dual-Core Cortex-A9 von Arm, während der Stratix 10 SoC auf einem Quad-Core Cortex-A53 von Arm fußt.
  • Microchip Technology brachte SmartFusion- und SmartFusion2-SoCs auf der Grundlage von Arm Cortex-M-Kernen auf den Markt, und erst kürzlich erschien die PolarFire®-SoC-FPGA-Familie, die einen kohärenten RISC-V-Prozessor-Cluster enthält.

Das SoC Blockset enthält Simulink-Blöcke, die man zur Modellierung, Simulation und Analyse von SoC-Architekturen auf Basis von programmierbaren SoCs verwenden kann. In Verbindung mit Embedded Coder® kann das SoC Blockset zur Generierung von lesbarem, kompaktem und schnellem C/C++ Code für eingebettete Prozessoren und mit HDL Coder™ zur Generierung von synthetisierbarem Verilog®- und VHDL®-Code aus Simulink-Modellen verwendet werden.

Hardware-Entwickler generieren IP-Cores innerhalb der programmierbaren Logik programmierbarer SoC-Architekturen, um rechenintensive Aufgaben zu beschleunigen oder individuell abgestimmte Peripherieeinheiten zu entwickeln. Mit HDL Coder können Sie aus Simulink-Modellen oder MATLAB-Algorithmen individuelle IP-Cores generieren. In SoC-Architekturen können diese IP-Cores über AXI4-Register mit Tasks kommunizieren, die auf Arm-Prozessoren laufen, oder über externe E/A-Anschlüsse mit Off-Chip-Geräten und -Signalen verbunden werden.


Siehe auch: SoC Blockset, HDL Coder, Embedded Coder, HDL Verifier, Fixed-Point Designer, Vision HDL Toolbox, FPGA design and SoC codesign, Zynq UltraScale+ RFSoC Design