Click here to load reader

Del PicoBlaze al MicroBlaze - dc.uba.ar · Del PicoBlaze al MicroBlaze ... •MicroBlaze MSC (Micro Controller System) ... Quizas mas. En xilinx el tutorial es un curso que se da

  • View
    228

  • Download
    0

Embed Size (px)

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

  • M

    Del PicoBlaze al MicroBlaze

    Patricia Borensztejn Segundo Cuatrimestre 2013

    Clase 1 Co-Diseo Hardware Software usando FPGA

    Mu

    seo B

    otero

    , Bo

    got C

    olo

    mb

    ia

  • Co Diseo con PicoBlaze

    PicoBlaze

    BRAM Instruccin

    direccin

    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-Diseo con PicoBlaze

    PicoBlaze: Procesador de 8 bits Arquitectura Bsica 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. Podramos implementar por ejemplo un

    microcontrolador, el PICO16, usando de base el PicoBlaze , podramos 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

  • Para quien quiera hacerlo

    http://www.mikroe.com/products/view/11/book-pic-microcontrollers/

    Libro completo del PIC16F887 de MikroElektronika

    http://www.mikroe.com/products/view/11/book-pic-microcontrollers/http://www.mikroe.com/products/view/11/book-pic-microcontrollers/http://www.mikroe.com/products/view/11/book-pic-microcontrollers/http://www.mikroe.com/products/view/11/book-pic-microcontrollers/http://www.mikroe.com/products/view/11/book-pic-microcontrollers/http://www.mikroe.com/products/view/11/book-pic-microcontrollers/http://www.mikroe.com/products/view/11/book-pic-microcontrollers/

  • Co

    -Dis

    eo

    co

    n P

    ico

    Bla

    ze

  • Co Diseo 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));

  • Definicin 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 Diseo

    Cualquier sistema electronico ( o casi cualquiera de sus partes) puede realizarse tanto en hardware (puertas lgicas, 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 rpido queremos que cada parte se ejecute.

  • Co Diseo

    Nano o Pico segundos: ni hablar, va al hardware. Ejemplo, una suma, una multiplicacin. Una lectura a memoria.

    Microsegundos: si una instruccin 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 lgica para implementar delays.

  • Co Diseo

    En el flujo de diseo 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 adems, poder intercambiar la funcionalidad entre ambos durante el proceso de diseo.

    Esta posibilidad la tenemos con los FPGA, que incorporan ncleos de procesador (hard o soft) mas herramientas de diseo que permiten integrar los dos flujos llegando incluso a la verificacin conjunta del sistema.

  • Co Diseo

    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 diseos son tan grandes y complejos que es impracticable hacer cada porcin de cero. (from scratch)

    La solucin es reusar bloques funcionales, estos se denominan IP (Intelectual Property) y pueden ser: Propios (de anteriores diseos)

    Comprados a fabricantes de FPGA

    Comprados a terceros

  • IPs

    a) Bloques IP no encriptados : el fabricante sintetiza el cdigo, lo simula y lo verifica, y te entrega el fuente RTL (descripcin funcional ). Ese fuente se sintetiza con el resto del cdigo.

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

  • IPs

    IPs 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 IPs de Xilinx son de este tipo.

    System Generator: Integran varios IPs. Por ejemplo el Base System

    Builder que usaremos para crear el sistema MicroBlaze MCS.

  • IPs

    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 Diseo 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 bsicos 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)

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

  • Instanciacin 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 Diseo 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 IPs que permiten disear un sistema completo basado en MicroBlaze para su implementacin 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 aplicacin 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 Lgica Programable.

    Vivado cuesta 3000 dlares por nodo. Vivado tiene una herramienta de sntesis

    automtica 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 ctedras de universidades.

    Actualmente tenemos licencias vigentes hasta abril 2014.

    Xilinx tambin 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 ensear 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 aplicacin accediendo a los dispositivos

    del sistema Debuggear la aplicacin 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

  • Diseo Completo

  • Luego.

    Incorporar al sistema una BRAM, y hacer una aplicacin que lea y escriba en la BRAM

    Incorporar al sistema un controlador de VGA y hacer una aplicacin 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 aplicacin que lea de memoria externa a BRAM y escriba de BRAM a memoria externa.

    Usar todas esas primitivas para armar alguna aplicacin mas grande, un procesamiento de imgenes, un juego, etc.