Introducció al sistema NIOS

Transcripción

Introducció al sistema NIOS
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

Documentos relacionados