Introducció al sistema NIOS SISTEMES ELECTRONICS DIGITALS Enric Pastor y Juan López Dept. Arquitectura de Computadores Universidad Politécnica de Cataluña Indice Arquitectura de un sistema Nios Arquitectura del procesador Nios Bus de comunicación Avalon Herramientas de desarrollo Sistemas operativos 1 Arquitectura de un sistema Nios Arquitectura de un sistema Nios Sistema de desarrollo basado en un procesador “soft core” implementado sobre FPGAs Compuesto de: z z z Procesador Nios reconfigurable (en la FPGA) Bus Avalon reconfigurable (en la FPGA) Amplio conjunto de periféricos (en la FPGA y externos) Sistema de desarrollo integrado: z z Hardware: gestor de la configuración de la arquitectura Software: herramientas C/C++ del sistema GNU Pro Disponibles múltiples prototipos de desarrollo 2 Arquitectura de un sistema Nios Nios Flash Tri-State Bridge UART 0 Arbiter Interrupt Controler Arbiter @ decoder Timer 0 Arbiter Arbiter FPGA Dynamic Bus Sizing Port Interface Data In Multiplexer Arbiter Wait State Generation User Tri_State Device Nios SRAM UART n Timer n SPI 0 GPIO 0 DMA 0 SPI n GPIO n DMA n Memory Interface User-Defined Interface AVALON (Bus Peripheral Module) Arquitectura del procesador Nios 3 Arquitectura del procesador Nios Nios: Núcleo de Procesador Reconfigurable Arquitectura RISC segmentada de 16/32-Bits z Instrucciones de 16-bits z Una instrucción completada en cada ciclo del reloj Banco de registros interno con mecanismo de ventana Data-path configurable z 16-bits (1100 LEs) z 32-bits (1700 LEs) z z Bit shifter: 3,5,7,15 o 31 bit por ciclo Multiplicación: soft, 1 bit por ciclo, 16x16Æ32 en 2 ciclos Dimensionado dinámico del bus Rendimiento entre 30 y 80 MIPS (e.g. 33/50 MHz) Componente RISC estándar 4 Banco de Registros en Ventana Técnica usada por CPUs de alto rendimiento z Permite llamadas a subrutinas muy rápidas y eficientes Dispone de un máximo de 512 registros de propósito general Acceso a 32 registros en cada momento: z z Ventana móvil de 24 registros 8 registros globales fijos Mecanismo usado por el compilador de C/C++ Bit Shift Speed Desplazamiento de múltiples bits en un solo ciclo z Desplazamientos de 3, 5, 7, 15, o 31 bits por ciclo Ejemplo: z z Bit Shift hasta 7 bits: i << 9; /* Shift a la izquierda de 9 bits */ Se ejecuta en dos ciclos 0 Clock 1 (Shift 7 bits) Clock 2 (Shift 2 bits) 5 Opciones para la multiplicación Software z Usa la GNU Math Library para todas las multiplicaciones MSTEP z z z Hardware Multiplier - Opción 1 One-Bit Per Clock Multiply Mejora ~ 4X sobre la multiplicación por software MUL z z Multiplicador hardware - Opción 2 16 x 16 Î 32 en 2 Clocks Multiplier Additional Logic Clock Cycles Elements Used 16x16>32 None (Software) Clock Cycles 32x32>32 0 80 250 MSTEP +200 18 80 MUL +400 2 16 Instrucciones / UAL configurable Juego de instrucciones extensible z Optional FIFO, Memory, Other Logic Hasta 5 instrucciones NIOS System Builder: z Añade un bloque en la UAL z Asigna un Op-Code z Genera macros para C y ensamblador 6 Interrupciones / Excepciones Interrupciones Hardware Externas z Lógica para producir el número de interrupción (6-bits) y generar el pin IRQ se incluye en el Peripheral Bus Module (PBM). Fuentes de Excepciones Internas z 2 fuentes de excepciones internas 9 Register window-overflow 9 Register window-underflow Excepciones Software z El software puede pedir transferir el control a un exception handler generando una instrucción TRAP. Bus de comunicación Avalon 7 Bus de comunicación Avalon Bus basado en multiplexores para entornos on-chip Transferencias de 8/16/32 bits puntuales o en stream Conexión de componentes reconfigurable. Inserción automática de los mecanismos de arbitraje Reconfiguración disponible: z Tipo de Bus: 9 Separate, Dedicated Input and Output Data Busses 9 Tri-State Data Bus z z z z Anchura del Bus de Datos Anchura del Bus de Direcciones Tiempo de setup / hold Dirección base y generación de IRQs Bus de comunicación Avalon Dirección base y prioridad de todos los dispositivos 8 Bus de comunicación Avalon Setup/Hold Time z Número de Setup/Hold Clocks Bus de comunicación Avalon Gran número de periféricos disponibles: z z z z z z z z z z UART Timer DMA Serial Peripheral I/F (SPI) Parallel I/O (PIO) Memory I/F Generic Port I/F On-Chip Bus Port IDE … 9 Herramientas de Desarrollo Herramientas de desarrollo Hardware Environment Software Environment Simulation Environment 10 Herramientas de desarrollo GNUPro C Development Kit z z z z z Compiler Assembler Linker Debugger Nios Software Libraries Nios Development Utilities z z z z Compile, Assemble, Link Download to SRAM and Flash Disassemble Executable Code Prepare Executable for Boot ROM Herramientas de desarrollo Configure Processor Peripheral Library Select Peripherals Hardware Processor Design Simulation Test Bench Software Generate (Verilog / VHDL) Synthesis Place & Route User Design Purchased IP Hardware Configuration File JTAG Serial Ethernet Download & Debug Altera PLD C Header files Custom Library Boot monitor Executable Code Cygnus/Red Hat GNUPro User Code S/W Libraries RTOS 11 Herramientas de desarrollo The CPU core Peripherals Available Options Herramientas de desarrollo Fuentes Variables Registros Consola Memoria 12 Sistemas Operativos Sistemas Operativos Tres sistemas operativos disponibles: z uC/OS-II z Kros z uCLinux uC/OS-II [www.ucos-ii.com] z Kernel en tiempo real z Portable, escalable, determinista y multi-tarea z Máximo de 63 tareas z Ofrece: semáforos, eventos, exclusión mutua, mensajes, gestión de tareas y gestión de memoria. z Sistema de ficheros, red y GUI para LCDs disponibles. 13 Sistemas Operativos Kros [kros.shugyodesign.com] z Kernel en tiempo real basado en threads z Ofrece: gestión de threads, interrupciones, exclusión mutua, semáforos, pila TCP/IP, sistema FAT32 z Configuración directamente adaptada al entorno Nios uCLinux [www.uclinux.org][www.microtronix.com] z Derivación de Linux sin soporte para MMU z Ofrece: todas las funciones de los kernels de linux, e.g. TCP/IP, NFS, ext2, FAT16, FAT32, etc. z Requiere una ampliación RAM/FLASH y un “disco” compactFlash Laboratorio 14 Experiencia La EPSC dispone de un laboratorio equipado con 10 kits APEX20K200E Placa adicional con soporte para uCLinux Utilizada para diversas asignaturas Nios Development Board 15 Diagrama de Bloques del Sistema Mapa de Memoria del Sistema 16 Experiencia Estructura de computadores z z Arquitectura von Newman Segmentación Conceptos básicos de gestión de E/S z z z Polling Interrupciones DMA Diseño a nivel de sistema z Selección del conjunto de periféricos Sistemas operativos z z Procesos Desarrollo de drivers Experiencia Algoritmos hardware/software para el filtrado de imágenes (SOBEL) z z z Codiseño hardware/software Adición de nuevas instrucciones al ISA de NIOS UART (Comunicación serie con el PC) Control de un radar z Generación de formas de onda Sistema de detección por ultrasonidos Sistema fly-by-wire para aviones radiocontrol z Interacción con acelerómetros, inclinómetros, etc. Casa domótica z z Sensores/actuadores Integración en red 17 Conclusiones Conclusiones Sistema altamente flexible. Permite plantear al estudiante el diseño global del sistema y no solo su programación Interesante disponer drivers no propietarios para memoria (RAM, FLASH, compactFlash), LCDs gráficos, IDE, PCI y otros dispositivos Prototipo de desarrollo no dispone de interfaz A/D D/A integrada, limitando su aplicabilidad Rendimiento aceptable para la mayor parte de las aplicaciones, aunque la frecuencia máxima de Nios limita el resto de la FPGA 18