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 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