Del PicoBlaze al MicroBlaze - dc.uba.ar · Del PicoBlaze al MicroBlaze ... •MicroBlaze MSC (Micro...

Preview:

Citation preview

M

Del PicoBlaze al MicroBlaze

Patricia Borensztejn Segundo Cuatrimestre 2013

Clase 1 Co-Diseño Hardware Software usando FPGA

Mu

seo B

otero

, Bo

gotá C

olo

mb

ia

Co Diseño con PicoBlaze

PicoBlaze

BRAM Instrucción

dirección

DEC

OD

IFIC

AC

ION

y R

UTE

O In_port

Out_port

port_id

read_strobe write_strobe

7-Segmentos

UART

LEDS y SWITCHES

RS232

Museo Botero, Bogotá Colombia

Co-Diseño con PicoBlaze

• PicoBlaze: – Procesador de 8 bits – Arquitectura Básica RISC – Se programa en ensamblador – No hay sistema operativo, se carga un programa en el

BRAM y eso es lo que se ejecuta. – No hay drivers para dispositivos. – Todo lo que no hay, se puede hacer. Lo que quiero

decir es que NO esta hecho. – Podríamos implementar por ejemplo un

microcontrolador, el PICO16, usando de base el PicoBlaze , podríamos basarnos en el PIC16.

PIC16 (Microchip) Microcontrolador

PIC16F887

PIC16

• RISC architecture – Only 35 instructions to learn – All single-cycle instructions except branches

• Operating frequency 0-20 MHz • Precision internal oscillator

– Factory calibrated – Software selectable frequency range of 8MHz

to 31KHz

• Power supply voltage 2.0-5.5V – Consumption: 220uA (2.0V, 4MHz), 11uA (2.0

V, 32 KHz) 50nA (stand-by mode)

• Power-Saving Sleep Mode • Brown-out Reset (BOR) with software control

option • 35 input/output pins

– High current source/sink for direct LED drive – software and individually programmable pull-

up resistor – Interrupt-on-Change pin

• 8K ROM memory in FLASH technology – Chip can be reprogrammed up to 100.000

times

• In-Circuit Serial Programming Option – Chip can be programmed even embedded in

the target device

• 256 bytes EEPROM memory – Data can be written more than 1.000.000

times

• 368 bytes RAM memory • A/D converter:

– 14-channels – 10-bit resolution

• 3 independent timers/counters • Watch-dog timer • Analogue comparator module with

– Two analogue comparators – Fixed voltage reference (0.6V) – Programmable on-chip voltage reference

• PWM output steering control • Enhanced USART module

– Supports RS-485, RS-232 and LIN2.0 – Auto-Baud Detect

• Master Synchronous Serial Port (MSSP) – supports SPI and I2C mode

Co

-Dis

eño

co

n P

ico

Bla

ze

Co Diseño basado en PicoBlaze

// ===================================================== // KCPSM and ROM instantiation // ===================================================== kcpsm3 proc_unit (.clk(clk), .reset(reset), .address(address), .instruction(instruction), .port_id(port_id), .write_strobe(write_strobe), .out_port(out_port), .read_strobe(read_strobe), .in_port(in_port), .interrupt(1'b0), .interrupt_ack()); programa rom_unit (.clk(clk), .address(address), .instruction(instruction));

Definición de Sistema Embebido

An embedded system is nearly any computing system (other than a general-purpose computer) with the following characteristics: Single function Typically designed to perform a predefined function Tightly constrained Tuned for low cost Single-to-fewer component based Performs functions fast enough Consumes minimum power Reactive and real-time Must continually monitor the desired environment and react to changes Hardware and software coexistence

Sistema Embebido en FPGA

Embedded design in an FPGA consists of the following: • Develop processor system in FPGA MicroBlaze processor (soft core) Peripherals PLBv46 (XPS) AXI interconnect Reset, clocking, debug ports • Use Operating System (OS) or Real Time Operating System (RTOS)

(optional) • Generate drivers and libraries • Create the software application Software routines Interrupt service routines (optional)

Co Diseño

• Cualquier sistema electronico ( o casi cualquiera de sus partes) puede realizarse tanto en hardware (puertas lógicas, registros, FSM) como en software (instrucciones ejecutadas en un procesador)

• El mejor criterio para decidir que parte del sistema se ejecuta en hardware y que parte en software es cuan rápido queremos que cada parte se ejecute.

Co Diseño

• Nano o Pico segundos: ni hablar, va al hardware. Ejemplo, una suma, una multiplicación. Una lectura a memoria.

• Microsegundos: si una instrucción tarda en ejecutarse un ciclo de reloj de 1 Giga, eso es 1 nanosegundo, por lo tanto en un microsegundo se ejecutan….1000 instrucciones. Hay que ver que hacemos…

• Milisegundos: es del orden de tiempo que necesitamos para encender un led… por ejemplo. Si lo hacemos en hardware, tenemos que gastar lógica para implementar delays.

Co Diseño

• En el flujo de diseño tradicional de un sistema embebido, se deciden los componentes hardware, se arma el sistema hardware y luego se escribe el programa que corre en el microcontrolador o elemento de proceso elegido.

• Es muy interesante poder tener flexibilidad, tanto en el software como en el hardware, y además, poder intercambiar la funcionalidad entre ambos durante el proceso de diseño.

• Esta posibilidad la tenemos con los FPGA, que incorporan núcleos de procesador (hard o soft) mas herramientas de diseño que permiten integrar los dos flujos llegando incluso a la verificación conjunta del sistema.

Co Diseño

• The cooperative design of hardware and

software components;

• The unification of currently separate

hardware and software paths;

• Moving of functionality between hardware

and software;

IP Intelectual Property

• Actualmente los diseños son tan grandes y complejos que es impracticable hacer cada porción de cero. (“from scratch”)

• La solución es “reusar” bloques funcionales, estos se denominan IP (Intelectual Property) y pueden ser: – Propios (de anteriores diseños)

– Comprados a fabricantes de FPGA

– Comprados a terceros

IP’s

a) Bloques IP no encriptados : el fabricante sintetiza el código, lo simula y lo verifica, y te entrega el fuente RTL (descripción funcional ). Ese fuente se sintetiza con el resto del código.

b) Bloques IP encriptados: el fabricante encripta el nivel RTL. No hay standard de encriptacion. Lo que compras para un fabricante no sirve para otro.

c) Bloques IP a nivel de netlist, sin ruteo y sin emplazamiento . Las netlists son a nivel de CLB y estan también encriptadas. Mas optimizadas que a nivel de RTL.

d) Bloques IP a nivel de netlist, ruteados y emplazados. Muy optimizados. Netlists encriptada. Posicion fija relativa al FPGA o no.

IP’s

• IP´s • Core Generator:

– Se pueden parametrizar y elegir las funciones deseadas y desactivar otras (por ej. MicroBlaze sin unidad de coma flotante). Creo que todos los IP´s de Xilinx son de este tipo.

• System Generator: – Integran varios IP´s. Por ejemplo el Base System

Builder que usaremos para crear el sistema MicroBlaze MCS.

IP´s

Create RTL

for IP block

IP Provider FPGA Designer

Incorporate

IP block(s)

Unplaced-and-

unrouted netlist

Synthesis

Create RTL for

body of design

Unplaced-and-

unrouted netlist

Synthesis

Incorporate

IP block(s)

Place-and-Route Place-and-Route

Placed-and-routed

netlist

Placed-and-routed

netlist

(a)

(b)

(c)

Co Diseño con MicroBlaze • MicroBlaze MSC (Micro Controller System)

– Es un sistema microcontrolador basado en un procesador de 32 bits

– Tiene memoria local de 4 a 64Kbytes – El sistema MSC incluye dispositivos básicos de E/S:

• Una UART • 4 timers fijos • 4 timers programables • Un controlador de interrupciones • 4 ports de entrada de 32 bits • 4 ports de salida de 32 bits

– El desarrollo de software se realiza con el SDK (Sofware Development Kit) de xilinx

– Se programa en C o C++ – Admite Sistema Operativo – Tiene soporte para debugging

MicroBlaze MCS (Micro Controller System)

Instanciación de un MicroBlaze //----------------------------------------------------------------------------- // micro_top.v //----------------------------------------------------------------------------- module micro_top ( RS232_Uart_1_sout, RS232_Uart_1_sin, RESET, GCLK ); output RS232_Uart_1_sout; input RS232_Uart_1_sin; input RESET; input GCLK; (* BOX_TYPE = "user_black_box" *) micro micro_i ( .RS232_Uart_1_sout ( RS232_Uart_1_sout ), .RS232_Uart_1_sin ( RS232_Uart_1_sin ), .RESET ( RESET ), .GCLK ( GCLK ) ); endmodule

Instanciación de MicroBlaze

• Hay varias maneras de instanciar un MicroBlaze MCS :

1. Usando el ISE Proyect Navigator y agregando un IP core de tipo processor.

2. Usando el ISE Proyect Navigator y agregando un embedded processor que lo que hace es abrir el XPS (Xilinx Platform Studio)

3. Directamente abriendo el XPS y construyendo el sistema mediante el BSB (Base System Builder)

1. Agregando un IP core de tipo Processor

2. Agregando un Embedded Processor

3. Mediante el XPS

Co Diseño con MicroBlaze

• El MicroBlaze es un IP (Intellectual Property) de Xilinx. Está incluido en el ISE Design Suite.

• Es un “soft core”. • El EDK (Embedded Development Kit) es un conjunto de

herramientas y de IP´s que permiten diseñar un sistema completo basado en MicroBlaze para su implementación en FPGA.

• El EDK pertenece al ISE Design Suite, que ademas tiene otras herramientas: – ISE Proyect Navigator – PlanAhead – ChipScope….

EDK (Embedded Development Kit)

• Formado por :

– XPS: Xilinx Platform Studio, arma la plataforma de hardware

– SDK: Software Development Kit: desarrollo de aplicaciones en C/C++. Entorno basado en ECLIPSE.

– Primero se arma la plataforma hardware, luego la aplicación para ella.

Design Suites de Xilinx

• ISE Design Suite y Vivado Design Suite • Vivado esta especializada en crear SoC (System

on Chip) , especialmente creada para el ultimo producto de XILINX: Zynq-7000 que contiene un dual core ARM Cortex A9 , mas Lógica Programable.

• Vivado cuesta 3000 dólares por nodo. • Vivado tiene una herramienta de síntesis

automática de C, C++ o System C a RTL. • ISE Design Suite creo que ya no se vende por

separado sino como parte de Vivado

Xilinx University Program

• Xilinx tiene un University Program (xup) que otorga licencias de ISE Design Suite a las cátedras de universidades.

• Actualmente tenemos licencias vigentes hasta abril 2014.

• Xilinx también tiene convenios con digilent para ofrecer placas de desarrollo a precios con descuentos para universidades.

¿Que vamos a hacer?

• Vamos a aprender a usar el EDK, siguiendo un tutorial de xilinx que nos va a enseñar a: – Crear un sistema basado en MicroBlaze – Crear nuevos IPs y agregarlos al sistema – Crear nuestros propios dispositivos (modulos hdl) e

incorporarlos al sistema – Desarrollar la aplicación accediendo a los dispositivos

del sistema – Debuggear la aplicación corriendo en la placa – Esto nos puede llevar unas seis clases. Quizas menos.

Quizas mas. En xilinx el tutorial es un curso que se da en dos dias completos.

Pre-requisitos

• Familiarity with the Xilinx ISE™ tool set

• Basic C programming

• Basic understanding of processor-based system

• Basic HDL knowledge

Diseño Completo

Luego….

• Incorporar al sistema una BRAM, y hacer una aplicación que lea y escriba en la BRAM

• Incorporar al sistema un controlador de VGA y hacer una aplicación que escriba en la VGA el contenido de un BRAM, o bien cualquier otra cosa

• Incorporar al sistema un controlador de memoria externa. Hacer una aplicación que lea de memoria externa a BRAM y escriba de BRAM a memoria externa.

• Usar todas esas primitivas para … armar alguna aplicación mas grande, un procesamiento de imágenes, un juego, etc.

Recommended