Nios II - Nios II

Nios II
Designer Altera
Bits 32-Bit
Design RISC
Endianness Little-Endian
Öffnen Nein
Register
Allgemeiner Zweck 32

Nios II ist eine 32-Bit- Embedded-Prozessor-Architektur, die speziell für die Altera- Familie von FPGA-integrierten Schaltkreisen ( Field Programmable Gate Array ) entwickelt wurde. Nios II enthält viele Verbesserungen gegenüber der ursprünglichen Nios-Architektur und eignet sich daher besser für eine größere Bandbreite eingebetteter Computeranwendungen, von der digitalen Signalverarbeitung (DSP) bis zur Systemsteuerung.

Nios II ist ein Nachfolger von Alteras erstem konfigurierbaren 16-Bit- Embedded-Prozessor Nios .

Hauptmerkmale

Wie das ursprüngliche Nios ist die Nios II-Architektur eine RISC- Softcore- Architektur, die vollständig in der programmierbaren Logik und den Speicherblöcken von Altera-FPGAs implementiert ist. Im Gegensatz zu seinem Vorgänger handelt es sich um ein vollständiges 32-Bit- Design:

  • 32 Allzweck-32-Bit-Register,
  • Vollständiger 32-Bit-Befehlssatz, Datenpfad und Adressraum,
  • Einzelbefehl 32 × 32 multiplizieren und dividieren, wodurch ein 32-Bit-Ergebnis erzeugt wird.

Aufgrund des Softcore-Charakters des Nios II-Prozessors kann der Systementwickler einen benutzerdefinierten Nios II-Kern festlegen und generieren, der auf seine spezifischen Anwendungsanforderungen zugeschnitten ist. Systementwickler können die Grundfunktionalität des Nios II erweitern, indem sie eine vordefinierte Speicherverwaltungseinheit hinzufügen oder benutzerdefinierte Anweisungen und benutzerdefinierte Peripheriegeräte definieren.

Benutzerdefinierte Anweisungen

Ähnlich wie bei nativen Befehle Nios II, benutzerdefinierte Anweisungen akzeptieren Werte von bis zu zwei 32- Bit - Register Quelle und optional ein Ergebnis zu einem 32-Bit - Zielregister zurückschreiben. Durch die Verwendung benutzerdefinierter Anweisungen können die Systemdesigner die Systemhardware optimieren, um die Leistungsziele zu erreichen, und der Designer kann die Anweisung in C problemlos als Makro verarbeiten .

Benutzerdefinierte Peripheriegeräte

Bei leistungskritischen Systemen, die die meisten CPU-Zyklen mit der Ausführung eines bestimmten Codeabschnitts verbringen, kann ein benutzerdefiniertes Peripheriegerät möglicherweise einen Teil oder die gesamte Ausführung eines Softwarealgorithmus auf eine benutzerdefinierte Hardwarelogik verlagern , wodurch die Energieeffizienz oder der Anwendungsdurchsatz verbessert werden .

Speicherverwaltungseinheit

Mit der optionalen MMU, die mit Quartus 8.0 eingeführt wurde, kann Nios II Betriebssysteme ausführen, die hardwarebasiertes Paging und Schutz erfordern, z. B. den Linux-Kernel. Ohne MMU ist Nios auf Betriebssysteme beschränkt, die einen vereinfachten Schutz und ein virtuelles Speichermodell verwenden: z. B. µClinux und FreeRTOS .

Speicherschutzeinheit

Die optionale MPU wurde mit Quartus 8.0 eingeführt und bietet einen ähnlichen Speicherschutz wie eine MMU, jedoch mit einem einfacheren Programmiermodell und ohne den mit einer MMU verbundenen Leistungsaufwand.

Nios II-CPU-Familie

Nios II classic wird in 3 verschiedenen Konfigurationen angeboten: Nios II / f (schnell), Nios II / s (Standard) und Nios II / e (Economy). Nios II gen2 wird in zwei verschiedenen Konfigurationen angeboten: Nios II / f (schnell) und Nios II / e (Economy).

Nios II / f

Der Nios II / f-Kern ist auf maximale Leistung auf Kosten der Kerngröße ausgelegt. Zu den Funktionen von Nios II / f gehören:

  • Separate Befehls- und Datencaches (512  B bis 64  KB )
  • Optionale MMU oder MPU
  • Zugriff auf bis zu 2  GB externen Adressraum
  • Optionaler eng gekoppelter Speicher für Anweisungen und Daten
  • Sechsstufige Pipeline zur Erzielung maximaler DMIPS / MHz
  • Single-Cycle-Hardware-Multiplikation und Barrel Shifter
  • Optionale Hardware-Teilungsoption
  • Dynamische Verzweigungsvorhersage
  • Bis zu 256 benutzerdefinierte Anweisungen und unbegrenzte Hardwarebeschleuniger
  • JTAG- Debug-Modul
  • Optionale Verbesserungen des JTAG-Debugmoduls, einschließlich Hardware-Haltepunkten, Datenauslösern und Echtzeit-Trace

Nios II / s

Der Nios II / s-Kern wurde entwickelt, um ein Gleichgewicht zwischen Leistung und Kosten aufrechtzuerhalten. Zu den Funktionen von Nios II / s gehören:

  • Anweisungscache
  • Bis zu 2 GB externer Adressraum
  • Optionaler eng gekoppelter Speicher für Anweisungen
  • Fünfstufige Pipeline
  • Statische Verzweigungsvorhersage
  • Hardware multipliziert, teilt und verschiebt Optionen
  • Bis zu 256 benutzerdefinierte Anweisungen
  • JTAG- Debug-Modul
  • Optionale Verbesserungen des JTAG-Debugmoduls, einschließlich Hardware-Haltepunkten, Datenauslösern und Echtzeit-Trace

Nios II / e

Der Nios II / e-Kern ist für eine möglichst geringe logische Auslastung von FPGAs ausgelegt. Dies ist besonders effizient für kostengünstige Cyclone II-FPGA-Anwendungen. Zu den Funktionen von Nios II / e gehören:

  • Bis zu 2 GB externer Adressraum
  • JTAG- Debug-Modul
  • Komplettsysteme in weniger als 700  LEs
  • Optionale Debug-Verbesserungen
  • Bis zu 256 benutzerdefinierte Anweisungen
  • Kostenlos, keine Lizenz erforderlich

Avalon Switch Fabric-Schnittstelle

Nios II verwendet die Avalon- Switch-Struktur als Schnittstelle zu den eingebetteten Peripheriegeräten. Im Vergleich zu einem herkömmlichen Bus in einem prozessorbasierten System, bei dem jeweils nur ein Busmaster auf den Bus zugreifen kann, können mit der Avalon-Switch-Fabric mithilfe eines Slave-seitigen Arbitrierungsschemas mehrere Master gleichzeitig arbeiten.

Entwicklungsprozesse

Die Entwicklung für Nios II besteht aus zwei separaten Schritten: Hardware-Generierung und Software-Erstellung.

Die Entwicklung wird in einer Altera-Anwendung namens Embedded Design Suite (EDS) gehostet. Das EDS enthält eine vollständig integrierte Entwicklungsumgebung, mit der sowohl Hardware als auch Software in zwei separaten Schritten verwaltet werden können:

Hardware-Generierungsprozess

Nios II-Hardwareentwickler verwenden das Qsys-Systemintegrationstool, eine Komponente des Quartus-II-Pakets, um ein Nios-System zu konfigurieren und zu generieren. Über die grafische Benutzeroberfläche der Konfiguration (GUI) können Benutzer den Funktionsumfang des Nios-II auswählen und dem eingebetteten System Peripherie- und E / A-Blöcke (Timer, Speichercontroller, serielle Schnittstelle usw.) hinzufügen. Wenn die Hardwarespezifikation vollständig ist, führt Quartus-II die Synthese, Platzierung und Route durch, um das gesamte System auf dem ausgewählten FPGA-Ziel zu implementieren.
Qsys ersetzt den älteren SOPC-Builder (System-on-a-Programmable-Chip), mit dem auch ein Nios II-System erstellt werden kann, und wird für neue Projekte empfohlen.

Software-Erstellungsprozess

Ein separates Paket namens Embedded Design Suite (EDS) verwaltet die Softwareentwicklung. Basierend auf der Eclipse- IDE enthält das EDS einen C / C ++ - Compiler (basierend auf der GNU-Toolchain ), einen Debugger und einen Befehlssatzsimulator. Mit EDS können Programmierer ihre Anwendung in der Simulation testen oder ihre kompilierte Anwendung auf den tatsächlichen FPGA-Host herunterladen und ausführen.

Da die C / C ++ - Entwicklungskette auf GCC basiert, wird die überwiegende Mehrheit der Open Source- Software für Linux kompiliert und mit minimalen oder keinen Änderungen ausgeführt. Betriebssysteme von Drittanbietern wurden ebenfalls auf Nios II portiert. Dazu gehören Micrium MicroC / OS-II , eCos , Segger Microcontroller embOS, ChibiOS / RT , μCLinux und FreeRTOS .

Lizenzierung

Nios II ist vergleichbar mit MicroBlaze , einer konkurrierenden Softcore-CPU für die Xilinx- FPGA-Familie. Im Gegensatz zu MicroBlaze ist Nios II über einen IP-Anbieter von Drittanbietern , Synopsys Designware, für Standardzellen- ASICs lizenzierbar. Über die Designware-Lizenz können Designer Nios-basierte Designs von einer FPGA-Plattform auf ein Massenproduktions-ASIC-Gerät portieren.

Siehe auch

Verweise

Externe Links