Nios II es una arquitectura de procesador integrado de 32 bits diseñada específicamente para la familia de circuitos integrados de matriz de puertas programables en campo (FPGA) de Altera . Nios II incorpora muchas mejoras con respecto a la arquitectura Nios original, lo que la hace más adecuada para una gama más amplia de aplicaciones informáticas integradas, desde el procesamiento de señales digitales (DSP) hasta el control de sistemas.
Nios II es el sucesor del primer procesador integrado configurable de 16 bits de Altera, Nios , presentado en 2000. [1]
Al igual que el Nios original, la arquitectura del Nios II es una arquitectura de núcleo blando RISC que se implementa completamente en los bloques de memoria y lógica programable de los FPGA de Altera. A diferencia de su predecesor, es un diseño completo de 32 bits :
La naturaleza de núcleo blando del procesador Nios II permite al diseñador del sistema especificar y generar un núcleo Nios II personalizado, adaptado a los requisitos específicos de su aplicación. Los diseñadores de sistemas pueden ampliar la funcionalidad básica del Nios II, por ejemplo, añadiendo una unidad de gestión de memoria predefinida o definiendo instrucciones y periféricos personalizados.
De manera similar a las instrucciones nativas de Nios II, las instrucciones definidas por el usuario aceptan valores de hasta dos registros de origen de 32 bits y, opcionalmente, escriben un resultado en un registro de destino de 32 bits. Al utilizar instrucciones personalizadas, los diseñadores de sistemas pueden ajustar el hardware del sistema para cumplir con los objetivos de rendimiento y, además, el diseñador puede manejar fácilmente la instrucción como una macro en C.
Para los sistemas de rendimiento crítico que gastan la mayoría de los ciclos de CPU ejecutando una sección específica de código, un periférico definido por el usuario puede potencialmente descargar parte o la totalidad de la ejecución de un algoritmo de software a la lógica de hardware definida por el usuario , mejorando la eficiencia energética o el rendimiento de la aplicación.
Introducida con Quartus 8.0, la MMU opcional permite que Nios II ejecute sistemas operativos que requieren paginación y protección basadas en hardware, como el núcleo Linux. Sin una MMU, Nios está restringido a sistemas operativos que utilizan un modelo de memoria virtual y protección simplificado, por ejemplo, μClinux y FreeRTOS .
Introducida con Quartus 8.0, la MPU opcional proporciona protección de memoria similar a la proporcionada por una MMU pero con un modelo de programación más simple y sin la sobrecarga de rendimiento asociada con una MMU.
El Nios II Classic se ofrece en tres configuraciones diferentes: Nios II/f (rápido), Nios II/s (estándar) y Nios II/e (económico). El Nios II Gen2 se ofrece en dos configuraciones diferentes: Nios II/f (rápido) y Nios II/e (económico).
El núcleo Nios II/f está diseñado para obtener el máximo rendimiento a costa del tamaño del núcleo. Las características de Nios II/f incluyen:
El núcleo de Nios II/s está diseñado para mantener un equilibrio entre rendimiento y costo. Esta implementación del núcleo ya no es compatible con Altera Quartus II v.17 y versiones posteriores. Las características de Nios II/s incluyen:
El núcleo Nios II/e está diseñado para la utilización lógica más pequeña posible de los FPGA. Esto es especialmente eficiente para aplicaciones FPGA Cyclone II de bajo costo. Las características de Nios II/e incluyen:
Nios II utiliza la red de conmutación Avalon como interfaz para sus periféricos integrados. En comparación con un bus tradicional en un sistema basado en procesador, que permite que solo un maestro de bus acceda al bus a la vez, la red de conmutación Avalon, que utiliza un esquema de arbitraje del lado esclavo, permite que varios maestros operen simultáneamente.
El desarrollo de Nios II consta de dos pasos separados: generación de hardware y creación de software.
El desarrollo se realiza dentro de una aplicación de Altera llamada Embedded Design Suite (EDS). EDS contiene un entorno de desarrollo integrado completo para gestionar tanto el hardware como el software en dos pasos separados:
Los diseñadores de hardware de Nios II utilizan la herramienta de integración de sistemas Qsys, un componente del paquete Quartus-II, para configurar y generar un sistema Nios. La interfaz gráfica de usuario (GUI) de configuración permite a los usuarios elegir el conjunto de características de Nios-II y agregar periféricos y bloques de E/S (temporizadores, controladores de memoria, interfaz serial, etc.) al sistema integrado. Cuando se completa la especificación de hardware, Quartus-II realiza la síntesis, la colocación y la ruta para implementar todo el sistema en el objetivo FPGA seleccionado.
Qsys está reemplazando al antiguo SOPC (System-on-a-Programmable-Chip) Builder, que también podría usarse para construir un sistema Nios II y se recomienda para nuevos proyectos. [2]
Un paquete independiente, denominado Embedded Design Suite (EDS), gestiona el desarrollo del software. Basado en el IDE de Eclipse , el EDS incluye un compilador C/C++ (basado en la cadena de herramientas GNU ), un depurador y un simulador de conjuntos de instrucciones. El EDS permite a los programadores probar su aplicación en simulación o descargar y ejecutar su aplicación compilada en el host FPGA real.
Como la cadena de desarrollo de C/C++ se basa en GCC, la gran mayoría del software de código abierto para Linux se compila y ejecuta con modificaciones mínimas o nulas. También se han adaptado sistemas operativos de terceros a Nios II. Entre ellos se incluyen Micrium MicroC/OS-II , eCos , Segger Microcontroller embOS, ChibiOS/RT , μCLinux y FreeRTOS .
Nios II es comparable a MicroBlaze , una CPU de núcleo blando que compite con la familia de FPGA de Xilinx . A diferencia de MicroBlaze, Nios II se puede licenciar para ASIC de celda estándar a través de un proveedor de IP externo, Synopsys Designware. A través de la licencia de Designware, los diseñadores pueden trasladar diseños basados en Nios desde una plataforma FPGA a un dispositivo ASIC de producción en masa.