Post on 11-Oct-2018
SoCs para aplicaciones de protección ambiental
Escuela de Ingeniería Electrónica
Instituto Tecnológico de Costa Rica
Alfonso Chacón Rodríguez
alchacon@itcr.ac.cr
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
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
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 V@14.4 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
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)