# Nios II

Nios II és una arquitectura de processador incrustat 32 bits dissenyat específicament per a la família Altera de FPGAs. Nios II incorpora moltes millores pel que fa a l'arquitectura original de Nios, fent-lo més adequat per una gamma més àmplia d'aplicacció aplicacions informàtiques integrades, de processador de senyals digitals per al sistema de control.
Nios II és comparable a MicroBlaze, un CPU softcore competència de la família Xilinx de FPGA. A diferència de Microblaze, Nios II és autorizable pels ASICs de cèl·lules estàndard a través d'un proveïdor d'IP de tercers, Synopsys DesignWare. A través de la llicència DesignWare, els dissenyadors poden fer un port dels dissenys d'una plataforma FPGA amb base Nios a una producció ASIC
Nios II és un successor del primer processador NIOS embegut de 16 bits d'Altera.

## Característiques principals

Igual que els Nios originals, l'arquitectura Nios II és una arquitectura soft-core RISC que s'implementa íntegrament en els blocs de lògica i memòria programable dels FPGA Altera. La naturalesa soft-core del processador Nios II permet al dissenyador del sistema especificar i generar una nucli personalitzat Nios II, adaptat a les seves necessitats específiques d'aplicació. Els dissenyadors de sistemes poden ampliar la funcionalitat bàsica del Nios II mitjançant l'addició d'una unitat de gestió de memòria predefinida, o la definició d'instruccions personalitzades i perifèrics personalitzats.

### Instruccions personalitzables

De manera similar a les instruccions natives Nios II, les instruccions definides per l'usuari accepten valors de fins a dos registres de codi de 32 bits i, opcionalment, escriuen de nou el resultat en un registre destí de 32 bits. Mitjançant l'ús de les instruccions personalitzades, els dissenyadors de sistemes poden afinar el maquinari del sistema per complir amb els objectius de rendiment i també el dissenyador poden manejar fàcilment les instruccions com macros en C.

### Perifèrics personalitzables

Per als sistemes de rendiment crític que passen la majoria dels cicles de CPU executant una secció específica del codi, un perifèric definit per l'usuari pot descarregar una part o la totalitat de l'execució d'un algorisme de lògica del maquinari definit per l'usuari, millorant la potencia-eficiència o rendiment de les aplicacions.

### Unitat de gestió de memòria

Introduït en Quartus 8.0, la MMU opcional permet Nios II executar sistemes operatius que requereixen de paginació i protecció basada en hardware, tals com el kernel de Linux. Sense una MMU, Nios es limita als sistemes operatius que utilitzen una protecció simplificada i memòria virtual: per exemple, µClinux i FreeRTOS.

### Unitat de protecció de la memòria

Introduït en Quartus 8.0, el MPU opcional proporciona una protecció de memòria similar a la proporcionada per un MMU, però amb un model de programació simple i sense la sobrecàrrega de rendiment associat a una MMU.

## Família CPU NIOS II

Nios II permet utilitzar 3 configuracions diferents: Nios II/f (ràpid), Nios II/s (estàndard), i Nios II/I (econòmic).

### Nios II/f

El nucli Nios II/f està dissenyat per a un màxim rendiment a costa de la grandària del nucli. Característiques de Nios II/f inclouen:
* Cachés d'instruccions i dades separades (512 B a 64 kB)
* MMU opcional o MPU
* L'accés a un màxim de 2 GB d'espai d'adreçat extern
* Memòria opcional fortament acoblada per a instruccions i dades
* Pipeline de sis etapes per aconseguir el màxim DMIPS / MHz
* Multiplicador de maquinari d'un sol cicle i escombrat
* Opció de divisió de hardware
* Predicció de salts dinàmic
* Fins a 256 instruccions personalitzades i acceleradors de hardware il·limitats
* Mòdul de depuració JTAG
* Millores opcionals del mòdul de depuració JTAG, incloent els punts d'interrupció de hardware, disparadors de dades, i traça en temps real

### Nios II/s

El nucli Nios II/s està dissenyat per mantenir un equilibri entre rendiment i cost. Característiques de Nios II/s inclouen:
* Caché d'instruccions
* Fins a 2 GB d'espai d'adreçament extern
* Memòria opcional fortament acoblada per a instruccions
* Pipe-line de cinc etapes
* Predicció estàtica de salts
* Opcions de multiplicar, dividir i canviar hardware
* Fins a 256 instruccions personalitzades
* Mòdul de depuració JTAG
* Millores opcionals del mòdul de depuració JTAG, incloent els punts d'interrupció de hardware, disparadors de dades, i traça en temps real.

### Nios II/i

El nucli Nios II / I està dissenyat per a la utilització més petita possible d'una FPGA. Això és especialment eficient per FPGAs Cyclone II i aplicacions de baix cost. Característiques de Nios II/i inclouen:
* Fins a 2 GB d'espai d'adreces externa
* Mòdul de depuració JTAG
* Sistemes complets en menys de 700 elements lògics.
* Millores de depuració opcionals
* Fins a 256 instruccions personalitzables
* Gratuït, sense llicència

## Interfície de matriu de commutació Avalon

Nios II utilitza la matriu de commutació Avalon com a interfície per als seus perifèrics integrats. En comparació amb un bus tradicional en un sistema basat en el processador, que permet només un accés mestre de bus alhora, la matriu de commutació Avalon, utilitzant un esquema d'arbitratge del costat de l'esclau, permet múltiples mestres operin simultàniament.

## Els processos de desenvolupament

El desenvolupament de Nios II consisteix en dues etapes separades: la generació de hardware i la creació de sofware.
Desenvolupament es troba allotjat dins d'una aplicació d'Altera anomenada embedded design suite (EDS). EDS conté un complet entorn de desenvolupament integrat per gestionar tant el hardware com el sofware en dues etapes separades:

### Procés de generació de hardware

Els dissenyadors de hardware Nios II utilitzen l'eina d'integració de sistemes QSys, un component del paquet de Quartus-II, per configurar i generar un sistema de nios. La interfície gràfica d'usuari (GUI) permet als usuaris triar el conjunt de característiques de Nios-II, i per afegir perifèrics a la I/S de blocs (temporitzadors, memòria, controladors d'interfície en sèrie, etc.) per al sistema integrat. Quan l'especificació de hardware està completa, Quartus-II realitza la síntesi, el lloc i ruta per implementar tot el sistema en l'objectiu FPGA seleccionat.
QSys és la substitució del SOPC (system-on-a-chip programable) Constructor, que també podria ser utilitzat per construir un sistema Nios II, i està sent recomanat per a nous projectes.

### Procés de creació de sofware

Un paquet separat, anomenat embedded design suite (EDS), gestiona el desenvolupament de programari. Basat en l'IDE d'Eclipse, l'EDS inclou un / C ++ C (basat en la cadena d'eines GNU), un depurador i un simulador de joc d'instruccions. EDS permet als programadors posar a prova la seva aplicació en la simulació, o descarregar i executar l'aplicació compilada en el host FPGA real.
A causa que el C/C++ de la cadena de desenvolupament es basa en GCC, la gran majoria de programari de codi obert per Linux compila i s'executa amb mínima o cap modificació. En sistemes operatius d'altres fabricants també han estat portats a Nios II. Aquests inclouen RTOS, Micrium MicroC / US-II, ressons, ChibiOS / RT, μCLinux i FreeRTOS.

## Referències

* 1 2 Parab, 2017, p. 75.
* ↑ Parab, 2017, p. vii.

## Bibliografia

* Parab, Jivan S.; Gad, Rajendra S.; Naik, G.M.. Hands-on Experience with Altera FPGA Development Boards (en anglès). Springer, 2017. ISBN 8132237692.