socs para aplicaciones de protección ambiental - … · mismo test bench de casos anteriores...

58
SoCs para aplicaciones de protección ambiental Escuela de Ingeniería Electrónica Instituto Tecnológico de Costa Rica Alfonso Chacón Rodríguez [email protected] Un problema de enfoque metodológico

Upload: buicong

Post on 11-Oct-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

SoCs para aplicaciones de protección ambiental

Escuela de Ingeniería Electrónica

Instituto Tecnológico de Costa Rica

Alfonso Chacón Rodríguez

[email protected]

Un problema de enfoque metodológico

Agenda

La meta La propuesta clásica inicial de un ingeniero

electrónico El problema de la validación Evaluación, reflexión, replanteo de la

estrategia Un enfoque desde arriba

La meta

Obtener un sistema de protección ambiental para prevenir caza ilegal, fuego y tala que sea robusto, de muy bajo consumo y que interfiera lo menos posible en el ambiente natural

La propuesta clásica inicial de un ingeniero electrónico

Desarrollar una red inalámbrica de sensores

Procesamiento local reducido

Redundancia en la red para aumentar la eficiencia

La propuesta clásica inicial de un ingeniero electrónico

El nodo es un pequeño sistema embebido con funciones especializadas

Algunas de las funciones serán analógicas

Otras serán DSP

Y ahora hacemos los circuitos...

Modelar en Verilog soluciones para detectar el ángulo incidente de una señal sonora sobre un par de micrófonos

El sistema básicamente detecta el retardo entre dos señales muestreadas a 1 bit

Arrancamos por las unidades de localización sonoras

Primera solución

Algoritmo adaptivo

Modelo en Verilog comprobado sobre la FPGA

Se porta el diseño a mano (Tanner) a una tecnología de 0.5 um

TestBench también en FPGA

Cadenas de retardo

Trabajar sobre una FPGA nos permite verificar tanto la funcionalidad del chip como de su unidad de testeo

Ventajas de un sistema picoBlaze 16 registros 8 bits de propósito

general

1k x 18 de memoria de programa

64 bytes de RAM

256 puertos Entrada, 256 puertos Salida

Pila para anidar hasta 31 Call/Return

Pin de interrupción

Solo 96 Slices, 0.5 o 1 block RAM en FPGA Spartan 3, Virtex II, Virtex II Pro

● Dos ciclos por instrucción

● Rápida atención de interrupciones (5 ciclos de reloj en peor caso)

Ventajas de un sistema picoBlaze Módulos IP para soporte de

periféricos disponibles ya sea por Xilinx o a través de código libre

Código VHDL para UART provisto por Xilinx en kit

Módulo micro-UART en Verilog, por Jeung-Jong Lee disponible en http://www.cmosexod.com/

(Para los que preferimos no sufrir con VHDL)

Compilador y despulgador integrado: Pblaze IDE (ejecutable desde wine en linux)

Despulgador permite controlar registros internos, RAM, puertos.

Break-points

Ventajas de un sistema picoBlaze

Plantillas VHDL (y Verilog :-) ) del micro

Integración perfecta con ISE

Simulación post-síntesis, post-route en ModelSim

Ventajas de un sistema picoBlaze

Desarrollo Instalamos el

sistema sobre una placa Spartan 3

Xilinx Spartan-3 FPGA w/ twelve 18-bit multipliers, 216Kbits of block RAM, and up to 500MHz internal clock speeds

-200 and -1000 versions available

On-board 2Mbit Platform Flash (XCF02S)

8 slide switches, 4 pushbuttons, 9 LEDs, and 4-digit seven-segment display

Serial port, VGA port, and PS/2 mouse/keyboard port

Three 40-pin expansion connectors

Three high-current voltage regulators (3.3V, 2.5V, and 1.2V)

Works with Digilent’s JTAG3, JTAG USB, and JTAG USB Full Speed cables, as well as P4 & MultiPRO cables from Xilinx

1Mbyte on-board 10ns SRAM (256Kb x 32)

Desarrollo

Creamos un pequeño sistema embebido basado en el softcore PicoBlaze de Xilinx

●Liviano (8 bits)●Fácil de programar●Interfaz RS-232 a Matlab●Generador pseudoaleatorio de retardos (LFSR)●Circuito generador de dos señales con retardo programable

Comprobación en lab

FPGA se usa para estimular el chip

Se levantan datos de precisión, consumo y linealidad

Ver:F.N. Martin Pirchio. Diseño de circuitos integrados de bajo consumo para la localización de fuentes sonoras. Master’s thesis, Departamento de Ingeniería Eléctrica yComputadoras, Universidad Nacional del Sur, Bahía Blanca, Argentina, Junio 2008.

Segunda solución

Leve variación. Se eliminan cadenas de retardo

Modelo totalmente en Verilog y comprobado sobre la FPGA

Se porta el diseño por herramientas automáticas EDA (Mentor Graphics) a una tecnología de 0.35 um

TestBench idéntico al anterior

Lazo cerrado de 1 bit

|

Comprobación en lab

Se levantan datos de precisión, consumo y linealidad. Resultados idénticos al caso anterior, con mucho menor consumo

Más datos en:A low power integrated circuit for interaural time delay estimation without delay lines.”A. Chacon-Rodriguez, F. Martin-Pirchio, S. Sañudo, and P. Julián. Circuits and Systems Part II: Express Briefs, IEEE Transactions on, vol. 56, 2009, pp. 575-579.

Incluso, en el campo... Se evalúa el chip ya

desde un ambiente WSN

Sistema WSN MicaMote, TinyOS. Matlab recibe datos por PC desde MicaMote maestra

El funcionamiento de los dispositivos, y la publicación de los resultados permite suponer un éxito en la estrategia tradicional!

Tercera solución Con éxito de primera solución,

planteamos dos aproximaciones extra.

Un filtro de Kalman simplificado

Un algoritmo de búsqueda binaria (no entraremos en detalle de este)

Modelo en Verilog comprobado sobre la FPGA

Se portan los diseños usando EDA Synopsys y Cadence, tecnología de 0.5 um

Mismo Test Bench de casos anteriores

Filtro de Kalman

Estimador binario

Localizador por Kalman

Se implementan un detector (sensor) y la unidad de cálculo para el algoritmo de Kalman

Se supone una ganancia de Kalman invariante (calculada fuera de línea), programable

La salida de las simulaciones post-síntesis en ModelSim permiten verificar en Matlab el algoritmo tanto en FPGA como con las bibliotecas CMOS finales

Se comprueban las implementaciones de los chips en FPGA, antes de completarse el proceso de diseño y envío al fab

Y todo parece funcionar ...

Se verifican los chips en el lab

El sistema permite automatizar la obtención desde Matlab de curvas de convergencia y estudios de precisión curvas de precisión

Se realizan mediciones de consumo de los chips estimulados con el mismo TestBench de casos anteriores

Conclusión preeliminar

Estimador de Kalman resulta más rápido y eficiente en términos de potencia con respecto a estimadores anteriores

En menos de dos años se han diseñado cuatro chips exitosos

El uso del TestBench sobre un sistema embebido pequeño ha cooperado en obtener rápidos resultados de diseño y verificación

Más detalles del estimador de Kalman en:Fast and low power integrated circuit for impulsive sound localisation using kalman fiter approach.” A. Chacon-Rodriguez, P. Julian, and F. Masson. Electronics Letters,46(7):533-534, 1 2010.

El problema de una validación más compleja

Se han validado cuatro ICs apoyándose en un simple sistema embebido y una FPGA

¿Pero qué pasa cuando queremos validar un sistema más complejo?

¿Por ejemplo, una unidad analógica de detección de disparos?

Procesamiento

¡Hubo un disparo!

¿Cómo pruebo que esto es eficiente?

● En términos estadísticos

● Eléctricos

Desventajas del picoBlaze

Registros de 8 bits Programación en

ensamblador Limitado espacio de

programación IP limitado Obligatorio dominar

un HDL

¿Qué querríamos? Se ha diseñado un detector

analógico de disparos

Su diseño se basó en una validación estadística (ROC) del algoritmo con una muestra significativa de señales medidas en un bosque

Se implementaron el banco de filtros y la etapa de cálculo de energía

¿Qué querríamos? Se ha verificado el

diseño eléctricamente, con pruebas de banco ”fuera de línea” para 10 señales

Se desea replicar la validación estadística del detector, con una muestra significativa de señales (al menos más de 100)

Por lo tanto sería útil ...

Un test automatizado desde la PC

Recolectar los datos en Matlab para comprobación contra el algoritmo teórico

Interfazar dispositivos de medición

Está claro que un sistema embebido de 8 bits no dará la talla*

* Algo no totalmente cierto: ver Rodriguez, J. A.; Lifschitz, O. D.; Jimenez-Fernandez, V. M.; Julian, P. M.; Agamennoni, O. E.; , "Application-Specific Processor for Piecewise Linear Functions Computation," Circuits and Systems I: Regular Papers, IEEE Transactions on , vol.PP, no.99, pp.1-11, 0doi: 10.1109/TCSI.2010.2091196

Replanteamos entonces ...

Un sistema embebido de 32 bits basado en soft core MicroBlaze de Xilinx

Con IP necesaria para conectividad avanzada

Programable desde C

Flexible y ejecutable desde una plataforma FPGA asequible (Spartan 3E)

MicroBlaze de Xilinx Plataforma integrada de diseño

(EDK)

Amplia disponibilidad de IP (incluso con ARM)

Soporta Embedded-Linux (PetaLinux) y RTOS comerciales

Soporte de OpenCores (interfaz WishBone disponible)

Sistema puede correr en dos modos:

Standalone

Xilkernel (ofrece un kernel básico estilo POSIX, manejo de hilos de ejecución, etc.)

Flujo de diseño hardware y software

MicroBlaze de Xilinx Es posible integrar IP propio

(posibilidades de venderlo por aparte, certificado por Xilinx)

Se escoge un sistema sencillo

Interfaces: Ethernet, USB 2 GPIO: LCD, Dip-Switches Una UART para depurar Una interfaz SPI para el ADC

Periféricos

El EDK provee el soft IP junto con su respectivo driver

Hay un manual para cada IP, con ejemplos de configuración

Videos en YouTube de SILICA Marcom con extensos turoriales (www.silica.com)

Sistema baseIC: Xilinx Spartan 3E FPGA (500K gates)

100-pin Hirose FX2 connector

Three 6-pin Pmod connectors

DB15HD VGA

PS/2 keyboard

Two DB9 RS-232 connectors

RJ-45 Ethernet

16-pin header for optional LCD modules

SMA connector for high-speed clock input

JTAG programming via on-board USB2 port; JTAG & SPI Flash programming with parallel or USB JTAG Cable; numerous additional configuration options.

Spartan 3E Starter Board (Digilent Inc.)

Periféricos

Se provee de los drivers C

Programas de prueba (aquí un simple Ping para comprobar la comunicación por Ethernet)

int main(){

int Status;

/* * Run the EmacLite Ping request example. */Status = EmacLitePingReqExample(EMAC_DEVICE_ID);if (Status != XST_SUCCESS) {

return XST_FAILURE;}

return XST_SUCCESS;}

/*****************************************************************************//**** The entry point for the EmacLite driver to ping request example in polled* mode. This function will generate specified number of request packets as* defined in "NUM_OF_PING_REQ_PKTS.** @param DeviceId is device ID of the XEmacLite Device.** @return XST_FAILURE to indicate failure, otherwise it will return* XST_SUCCESS.** @note None.*******************************************************************************/static int EmacLitePingReqExample(u16 DeviceId){

int Status;int Index;int Count;int EchoReplyStatus;XEmacLite_Config *ConfigPtr;XEmacLite *EmacLiteInstPtr = &EmacLiteInstance;SeqNum = 0;RecvFrameLength = 0;EchoReplyStatus = XST_FAILURE;NumOfPingReqPkts = NUM_OF_PING_REQ_PKTS;

/* * Initialize the EmacLite device. */ConfigPtr = XEmacLite_LookupConfig(DeviceId);if (ConfigPtr == NULL) {

return XST_FAILURE;}

Memoria

Gran flexibilidad de memoria

En esquema más simple, se utilizan los BRAM de la FPGA

Conexión eficiente por bus dedicado a memoria externa (controladores provistos)

Sistema básico

Se arranca con un simple sistema

LCD, pulsadores, RS-232 conectado por terminal con PC

Se corre una aplicación de test de memoria

Sistema avanzado Se añaden interfaces Ethernet-USB

DDR SRAM, 128 MB para ejecución de programas y almacenamiento de mediciones

Controlador de Interrupciones

Controlador SPI para conectar el ADC

Desde la PC, se abre la comunicación vía Matlab por UDP-IP

Modelo de programación

El depurador nos permite evaluar primero el software, antes de comprobar en Hardware

RS-232 sirve como puerto de depuración hacia una PC

Estado actual

El sistema se comunica con la PC, via Ethernet

Etapas finales de afinamiento del algoritmo de prueba

En general, el sistema es muy versátil

Pero su gran versatilidad lo hace complejo para gente acostumbrada a un enfoque bottom-up

Es necesaria una formación más fuerte de uso de procesadores desde el alto nivel (incluso ya manejando OS) para facilitar este proceso a los estudiantes

Volviendo al tema...

¿Cómo aceleramos el proceso de desarrollo de los nodos y la red?

Un enfoque más desde arriba

Convendría plantear el problema desde arriba

Desarrollar un sistema general y luego ir trasladando al hardware aplicaciones específicas

Debemos pensar en: ● Número elevado de

nodos (bajo costo/nodo)

● Nodos propensos a fallas ( tolerancia a fallas)

● Topología dinámica (escalabilidad)

● Comunicaciones de difusion

● Limitaciones energéticas

Un enfoque más desde arriba

Queremos reconocer patrones no típicos en un bosque

El sistema de detección despierta a este sistema de reconocimiento (SiRPA)

El problema en partes

Se require de: Un normalizador (control de ganancia) Un banco de filtros Un reductor de dimensiones Generador de símbolos Unidad de reconocimiento de modelos ocultos

de Markov

Normalizador

Establecer un patrón dorado y luego decidir si esposible trasladar esta etapa a una sección analógica

El banco de filtros

● Banco de filtros QMF para ir separando la señal en bandas o dimensiones

● Análisis tiempo-frecuencia● Implementación recursiva (fácil

de ejecutar en software, cara en términos de hardware)

● Cada filtro es un filtro elíptico de tercer orden

El banco de filtros

● Filtro en Cascada se reemplaza por una estructura iterativa

● Las diferencias de frecuencias de muestreo permiten paralelizar la operación

● Para dismiunir el área de multiplicaciones, se utilizan codificación CSD, puesto que solo el multiplicando es variable

● Los multiplicandos constantes se obtienen por evaluaciones fuera de línea en la PC

● Implementación en punto fijo, 16 bits

Banco de Filtros: Detalle de implementación FPGA

El banco de filtros

● Verificación sobre FPGA● El código verificado se puede

portar a una tecnología CMOS (en nuestro caso 0.5 um, Celdas Estándar OSU)

El banco de filtros

Comprobado con simulaciones con datos de la tecnología 0.5 um (Celdas Estándar OSU)

● Estudios de consumo preliminares dicen que los filtros consumen apenas 800nW a 3.3 [email protected] kHz

El banco de filtros

Podemos incluso ya saber cómo quedará el circuito una vez implementado físicamente

Reductor de dimensiones Es necesario disminuir la complejidad

Un LDA se usa para disminuir de 8 a 3 dimensiones el espacio de variables

Un generador de símbolos proveerá de la secuencia que describe a la señal particular para ser evaluada por el HMM

Se ha determinado ya las matrices necesarias (los coeficientes de los multiplicadores CSD) para efectuar la reducción

Este procesamiento ha sido lento y laborioso

Si se hubiera hecho esto por medio de un sistema embebido, quizás ya se tendría una solución

Buscador de centroides Se va buscando la

”trayectoria” de los patrones hallados en 3D, en función de la cercanía de un alfabeto predefinido

Esta ”trayectoria” es el código que se alimentará a la HMM

Los símbolos son el producto de multiples entrenamientos con sonidos provenientes de un bosque, más disparos, motosierras, aviones, y otros sonidos supuestamente ajenos en un bosque silvestre

HMM

Se ha implementado un algoritmo Viterbi para resolver el modelo de Markov

El HMM simplemente entrega la probabilidad de que una secuencia de símbolos se parezca a las secuencias buscadas (disparos, motosierras, otros sonidos)

El modelo ha sido entrenado a partir de evaluaciones de datos reales

Se desarrolló un pequeño procesador dedicado de punto flotante para ejecutar el algoritmo. Representación 32 bits (IEEE Single precision)

Memoria de datos

Implementación FPGA

El problema en partesSe ha realizado parte la implementación del prototipo en FPGA

Implementación VHDL (no mi favorita :-) Dificultades de integración Entrenamiento de coeficientes y generador de símbolos por

computadora La falta de la flexibilidad de diseñar en VHDL ha complicado la

verificación de los algoritmos en hardware En particular, es deseable una implementación sobre un

sistema embebido para test y evaluación Ir migrando a unidades dedicadas conforme se validen las

estructuras finales

El problema en partesNo se ha podido realizar la integración final pues:

Faltan resolver aspectos de configuración y entrenamiento Dificultades de integración entre las partes debido a que

muchos estudiantes han participado en el proyecto en semestres distintos

No se está seguro aún de todos los algoritmos Una prueba en campo es necesaria antes de pasar al silicio

Conclusiones

Es necesario volver a una implementación soft (sistema embebido) para estar seguros de que los algoritmos son eficientes y efectivos

Una vez seguros, se podrá trasladar parte de los algoritmos a hardware, y recomprobar en campo

Solo con una verificación completa de lo anterior, podemos estar seguros para ir a una integracion en una tecnología avanzada (al menos 130 nm)