FPGA - Flujo de Diseño UBA - Sistemas Embebidos - FPGA – SoftCores – 2010 – Franco Ferrucci, Sebastián García
FPGA Field Programmable Gate Array UBA - Sistemas Embebidos - FPGA – SoftCores – 2010 – Franco Ferrucci, Sebastián García
FPGA - ¿Qué es? Arreglo de celdas básicas programables cuyas Definición simplificada: Arreglo de celdas básicas programables cuyas interconexiones también son programables Arquitectura genérica de FPGA ? - A high capacity programmable logic device - An array of programmable basic logic cells surrounded by programmable interconnects - Can be configured (programmed) by end-users (field-programmable) to implement specific applications - Capacity up to multi-millions logic gates and speed up to 500MHz - Popular applications: prototyping, on-site hardware reconfiguration, DSP, logic emulation, network components, etc… UBA - Sistemas Embebidos - FPGA – SoftCores – 2010 – Franco Ferrucci, Sebastián García
FPGA - Flujo de Diseño Flujo de diseño típico: Verificación Entrada Síntesis Lógica Place & Route Programación Lenguaje de descripción de Hardware: VHDL Verilog UBA - Sistemas Embebidos - FPGA – SoftCores – 2010 – Franco Ferrucci, Sebastián García
FPGA - Flujo de Diseño Xilinx - CLB: Celdas lógicas programables Flip-Flop Actel - VersaTiles VersaTiles Tecnología Flash. La programación de la celda no se pierde al quitar la alimentación FPGA - Flujo de Diseño Flujo de diseño típico: Verificación Entrada de Diseño Síntesis Lógica Place & Route Programación LUT: Look-Up Table Bloque RAM 16 bits: 4 entradas – 1 salida ENTRADA SALIDA 0 0 0 0 S0 0 0 0 1 S1 … … 1 1 1 1 S15 Transformación a un nivel de abstracción MENOR Mapeo del diseño según la TECNOLOGÍA especificada Incluye optimizaciones: Mayor velocidad Menor área Optimización de lógica, de tiempos, etc ¡No todo código VHDL es sintetizable! a <= not(a) after 5.4 ns; UBA - Sistemas Embebidos - FPGA – SoftCores – 2010 – Franco Ferrucci, Sebastián García
FPGA - Flujo de Diseño Síntesis - Xilinx: XST Verificación Entrada Lógica Place & Route Programación UBA - Sistemas Embebidos - FPGA – SoftCores – 2010 – Franco Ferrucci, Sebastián García
Síntesis - Actel: Symplify Pro FPGA - Flujo de Diseño Síntesis - Actel: Symplify Pro Verificación Entrada de Diseño Síntesis Lógica Place & Route Programación UBA - Sistemas Embebidos - FPGA – SoftCores - 2010
FPGA - Flujo de Diseño Flujo de diseño típico: Verificación Entrada Síntesis Lógica Place & Route Programación Elección de: celdas lógicas rutas de interconexionado bloques de memoria RAM/Flash, PLLs, etc. También posee opciones de optimización de tiempo. Retardos en las líneas de conexión más importantes que retardos en celdas lógicas. Los tiempos de retardos estimados en el proceso de síntesis no tienen en cuenta los retardos en las conexiones. Simulación Post-Place&Route: más exacta!!! UBA - Sistemas Embebidos - FPGA – SoftCores – 2010 – Franco Ferrucci, Sebastián García
Place & Route – Xilinx: PlanAhead FPGA - Flujo de Diseño Place & Route – Xilinx: PlanAhead Verificación Entrada de Diseño Síntesis Lógica Place & Route Programación UBA - Sistemas Embebidos - FPGA – SoftCores – 2010 – Franco Ferrucci, Sebastián García
Place & Route – Actel: Designer FPGA - Flujo de Diseño Place & Route – Actel: Designer Verificación Entrada de Diseño Síntesis Lógica Place & Route Programación Compile Performs design rule check on the input netlist. Compile also performs some optimizations on the design through logic combining and buffer tree modifications. Compile options vary by family. UBA - Sistemas Embebidos - FPGA – SoftCores – 2010 – Franco Ferrucci, Sebastián García
FPGA - Flujo de Diseño Flujo de diseño típico: Comportamiento Req. de tiempos Req. de potencia Flujo de diseño típico: Verificación Entrada de Diseño Síntesis Lógica Place & Route Programación UBA - Sistemas Embebidos - FPGA – SoftCores – 2010 – Franco Ferrucci, Sebastián García
Verificación: ModelSim FPGA - Flujo de Diseño Verificación: ModelSim Verificación Entrada de Diseño Síntesis Lógica Place & Route Programación UBA - Sistemas Embebidos - FPGA – SoftCores – 2010 – Franco Ferrucci, Sebastián García
Verificación - Actel: SmartTime FPGA - Flujo de Diseño Verificación - Actel: SmartTime Verificación Entrada de Diseño Síntesis Lógica Place & Route Programación Q CE R D RETARDO UBA - Sistemas Embebidos - FPGA – SoftCores - 2010
Verificación - Actel: SmartPower FPGA - Flujo de Diseño Verificación - Actel: SmartPower Verificación Entrada de Diseño Síntesis Lógica Place & Route Programación UBA - Sistemas Embebidos - FPGA – SoftCores – 2010 – Franco Ferrucci, Sebastián García
Verificación - Xilinx: XPower Analyzer FPGA - Flujo de Diseño Verificación - Xilinx: XPower Analyzer Verificación Entrada de Diseño Síntesis Lógica Place & Route Programación UBA - Sistemas Embebidos - FPGA – SoftCores – 2010 – Franco Ferrucci, Sebastián García
Ejemplo: Circuito debouncing UBA - Sistemas Embebidos - FPGA – SoftCores – 2010 – Franco Ferrucci, Sebastián García
registro de desplazamiento lógica de generación de ‘salida’ Ejemplo: Circuito debouncing Q D clk switch_in salida Q1 Q2 QN QN-1 La salida del circuito sólo será ‘1’ cuando: Q1 = Q2 = … = QN-1 = ‘1’ QN = ‘0’ Solución propuesta: registro de desplazamiento + lógica de generación de ‘salida’ UBA - Sistemas Embebidos - FPGA – SoftCores – 2010 – Franco Ferrucci, Sebastián García
Ejemplo: Circuito debouncing Q D clk switch_in salida Q1 Q2 QN QN-1 VHDL – Entidad: entity switch_seguro is port( clk : IN std_logic; reset : IN std_logic; switch_in : IN std_logic; salida : OUT std_logic ); end switch_seguro; UBA - Sistemas Embebidos - FPGA – SoftCores - 2010
Ejemplo: Circuito debouncing VHDL – Arquitectura: architecture arch1 of switch_seguro is signal switch_buffer : std_logic_vector(7 downto 0); begin --Proceso: una gran sentencia concurrente! process(clk,reset) if reset = '1' then switch_buffer <= x"00"; elsif rising_edge(clk) then switch_buffer <= switch_buffer(6 downto 0) & switch_in; end if; end process; --Otra sentencia concurrente: salida <= '1' when switch_buffer = x"7F" else '0'; end arch1; Después de esta presentación mostrar el proyecto “uba_2010_presentacion_0” UBA - Sistemas Embebidos - FPGA – SoftCores – 2010 – Franco Ferrucci, Sebastián García
Ejemplo: Circuito debouncing Agregado de Flip-Flop a la salida: --Otra sentencia concurrente: salida_d <= '1' when switch_buffer = x"7F" else '0'; --Proceso: Flip-Flop de salida. process(clk,reset) begin if reset = '1' then salida <= '0'; elsif rising_edge(clk) then salida <= salida_d; end if; end process; end arch2; UBA - Sistemas Embebidos - FPGA – SoftCores – 2010 – Franco Ferrucci, Sebastián García
Flujo de Diseño FPGA + SoftCore UBA - Sistemas Embebidos - FPGA – SoftCores – 2010 – Franco Ferrucci, Sebastián García
FPGA + SoftCore - Flujo de Diseño Verificación Entrada de Diseño Simulación Código Compilación Síntesis Programación ¿Debug? Ruteo * Al trabajar con FPGA no es común disponer de un equivalente al proceso de Depuración o Debugging. Programación UBA - Sistemas Embebidos - FPGA – SoftCores – 2010 – Franco Ferrucci, Sebastián García
Actel IDEs & ARM Cortex-M1 UBA - Sistemas Embebidos - FPGA – SoftCores – 2010 – Franco Ferrucci, Sebastián García
Actel IDEs Libero SoftConsole Administra el proceso de síntesis, place & route y programación de la FPGA - Herramienta gráfica. - Muestra el diseño en diagrama de bloques. - Útil para la interconexión de los bloques de un sist. que incluye un uP Basado en Eclipse - Compilador GNU C - Debugger GNU SmartDesign UBA - Sistemas Embebidos - FPGA – SoftCores – 2010 – Franco Ferrucci, Sebastián García
Actel IDEs Libero SoftConsole UBA - Sistemas Embebidos - FPGA – SoftCores – 2010 – Franco Ferrucci, Sebastián García
Actel IDEs: SmartDesign Catálogo: UARTs, FIFOs, RAM, Fash, PLL Cortex-M1, buses, controladores de RAM/Flash externas, etc. UBA - Sistemas Embebidos - FPGA – SoftCores - 2010
Catálogos de Cores - Cortex-M1 ver. 2.7 Tightly Coupled Memory no implementado 1 única interrupción UBA - Sistemas Embebidos - FPGA – SoftCores – 2010 – Franco Ferrucci, Sebastián García
Catálogos de Cores - Cortex-M1 ver. 3.0 - ITCM: 8KB - DTCM: 4KB - 16 interrupciones - multiplicador 3 ciclos UBA - Sistemas Embebidos - FPGA – SoftCores – 2010 – Franco Ferrucci, Sebastián García
Catálogos de Cores – Buses & Periféricos Útil para conexión del Cortex-M1 con otros proyectos en FPGA sin conexión AMBA. UBA - Sistemas Embebidos - FPGA – SoftCores – 2010 – Franco Ferrucci, Sebastián García
Mapeo de componentes en Memoria Bus AHB Bus APB UBA - Sistemas Embebidos - FPGA – SoftCores – 2010 – Franco Ferrucci, Sebastián García
Actel IDEs: SoftConsole UBA - Sistemas Embebidos - FPGA – SoftCores – 2010 – Franco Ferrucci, Sebastián García
Actel IDEs: Firmware Catalog Actel has a broad offering of proven and pre-implemented synthesizable IP building blocks that can be easily configured and used within Actel FPGA system-level designs. Software drivers for many Actel IP Cores are available within the Firmware Catalog. The drivers are free of charge and delivered as C source, so they can be easily compiled and linked into a user's program or executable. These drivers hide the implementation details of peripheral operations behind a driver application program interface (API), so the developer need only be concerned with the peripheral's function. Provee los Drivers de los IP Cores que interactúan con el uP. - Código disponible escrito en C. - Permite ocultar los detalles del funcionamiento de los periféricos UBA - Sistemas Embebidos - FPGA – SoftCores – 2010 – Franco Ferrucci, Sebastián García
Actel IDEs: Firmware Catalog UART: void UART_init(UART_instance_t * this_uart, addr_t base_addr, uint8_t baud_value, uint8_t line_config); void UART_send(UART_instance_t * this_uart, const uint8_t * tx_buffer, size_t tx_size); size_t UART_get_rx(UART_instance_t * this_uart,uint8_t * rx_buffer, size_t buff_size); GPIO: Actel has a broad offering of proven and pre-implemented synthesizable IP building blocks that can be easily configured and used within Actel FPGA system-level designs. Software drivers for many Actel IP Cores are available within the Firmware Catalog. The drivers are free of charge and delivered as C source, so they can be easily compiled and linked into a user's program or executable. These drivers hide the implementation details of peripheral operations behind a driver application program interface (API), so the developer need only be concerned with the peripheral's function. void GPIO_init(gpio_instance_t * this_gpio, addr_t base_address, uint32_t initial_output); void GPIO_set_output(gpio_instance_t * this_gpio, uint32_t value); uint32_t GPIO_get_input(gpio_instance_t * this_gpio); UBA - Sistemas Embebidos - FPGA – SoftCores – 2010 – Franco Ferrucci, Sebastián García
Actel IDEs: SoftConsole Mapeo de memoria en el Entorno de programación #ifndef __UBA_2010_PRESENTACION_1_H_ #define __UBA_2010_PRESENTACION_1_H_ /************************************************* * Peripheral Memory Map ************************************************/ #define COREAHBNVM_BASE_ADDR 0x00000000UL #define EXT_SRAM_BASE_ADDR 0x18000000UL #define COREAHBSRAM_BASE_ADDR 0x20000000UL #define COREGPIO0_BASE_ADDR 0xC5000000UL #define COREAI_BASE_ADDR 0xC6000000UL #define CORETIMER0_BASE_ADDR 0xC7000000UL #endif /* __UBA_2010_PRESENTACION_1_H_ */ Actel has a broad offering of proven and pre-implemented synthesizable IP building blocks that can be easily configured and used within Actel FPGA system-level designs. Software drivers for many Actel IP Cores are available within the Firmware Catalog. The drivers are free of charge and delivered as C source, so they can be easily compiled and linked into a user's program or executable. These drivers hide the implementation details of peripheral operations behind a driver application program interface (API), so the developer need only be concerned with the peripheral's function. UBA - Sistemas Embebidos - FPGA – SoftCores – 2010 – Franco Ferrucci, Sebastián García
Ejemplo: Implementación Cortex-M1 en Actel M1AFS-EMBEDDED KIT UBA - Sistemas Embebidos - FPGA – SoftCores – 2010 – Franco Ferrucci, Sebastián García
Actel M1AFS-EMBEDDED KIT UBA - Sistemas Embebidos - FPGA – SoftCores – 2010 – Franco Ferrucci, Sebastián García FPGA Fusion M1AFS1500 350 MHz máx. FPGA basada en Flash 1MByte Flash interna ADC 12 bits @ 600 Ksps 30 Entradas analógicas: -10,5 - +12 Volt. Oscilador interno RC 100 MHz 38.400 celdas lógicas 2 PLLs JTAG Precio: 1- U$S 250