Upload
vodien
View
264
Download
0
Embed Size (px)
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
Para quien quiera hacerlo…
• http://www.mikroe.com/products/view/11/book-pic-microcontrollers/
• Libro completo del PIC16F887 de MikroElektronika
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.