• No se han encontrado resultados

Diseño de una estructura de trabajo (RF) para el procesamiento de video en tiempo real

N/A
N/A
Protected

Academic year: 2017

Share "Diseño de una estructura de trabajo (RF) para el procesamiento de video en tiempo real"

Copied!
99
0
0

Texto completo

(1)

INSTITUTO POLITÉCNICO NACIONAL

ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA

UNIDAD PROFESIONAL ADOLFO LÓPEZ MATEOS “ZACATENCO”

SECCIÓN DE ESTUDIOS DE POSGRADO E INVESTIGACIÓN

“Diseño de una Estructura de Trabajo (RF) para

el procesamiento de video en Tiempo Real

TESIS

Que para obtener el grado de

MAESTRO EN CIENCIAS EN INGENIERÍA ELECTRÓNICA

Presenta:

Ing. Mario Dehesa González

Directores de Tesis:

Dr. Alberto Jorge Rosales Silva

Dr. Alfredo Ramírez García

(2)
(3)

INSTITUTO POLITECNICO NACIONAL

SECRETARIA DE INVESTIGACION Y POSGRADO

CARTA DE CESIÓN DE DERECHOS

En la ciudad de México, D. F. el día 5 del mes de Junio del año 2013, el (la) que suscribe

Mario Dehesa González, alumno (a) del Programa de Maestría en Ciencias en

Ingeniería Electrónica con número de registro B110290, adscrito a la Sección de Estudios de Posgrado e Investigación de la Escuela Superior de Ingeniería Mecánica y Eléctrica Unidad Profesional Adolfo López Mateos “Zacatenco”, manifiesta que es autor (a) intelectual del presente trabajo de tesis bajo la dirección del Dr. Alberto Jorge Rosales Silva y el Dr. Alfredo Ramírez García y ceden los derechos del trabajo intitulado “Diseño de una Estructura de Trabajo (RF) para el procesamiento de video en Tiempo Real” al Instituto Politécnico Nacional para su difusión, con fines académicos y de investigación.

Los usuarios de la información no deben reproducir el contenido textual, gráficas o datos del trabajo sin el permiso expreso del autor y del director del trabajo. Este puede ser obtenido escribiendo a la siguiente dirección: [email protected], [email protected], [email protected]. Si el permiso se otorga, el usuario deberá dar el agradecimiento correspondiente y citar la fuente del mismo.

.

Nombre y firma

(4)
(5)

Resumen

Este trabajo se enfoca en la creación de una estructura de trabajo nivel cinco (RF5) para el procesamiento de video en el módulo de evaluación (EVM) TMS320DM6437 DSP (Procesador Digital de Señales serie TMS320), utilizando el modelo de RF5 de Texas Instruments (TI). La implementación de la estructura de trabajo nivel cinco, consta de la creación de módulos de comunicación para aprovechar la arquitectura del procesador, y la programación de tareas (entrada, proceso, salida, control), canales y células (contenedores de algoritmos), de esta manera se tiene un código fuente general para posteriormente utilizarlo en la creación de aplicaciones personalizadas, y resolver problemas de programación de hardware, además de poder reutilizar el código fuente en diferentes aplicaciones (como por ejemplo detección de bordes, supresión de ruido, imagenología medica, etc.). De esta manera el diseñador podrá enfocarse solo en la personalización de su aplicación.

Abstract

(6)

Planteamiento del problema

El poder realizar desarrollos tecnológicos en el área de procesamiento de imágenes, implica no solo la investigación de algoritmos para resolver una gran cantidad de problemas entre los que podemos destacar los relacionados con el realce de una imagen, extracción de información contenida en imágenes, detección de movimiento, eliminación de ruido, detección de bordes, segmentación de la imagen, etc., para la interpretación y análisis de un sistema automatizado, que le ayudará a tomar decisiones o también para extracción de la información relativa a la percepción de una máquina.

Realizar la implementación en hardware de un algoritmo, implica el estudio de diferentes procesadores existentes en el mercado que sea acorde a las necesidades del problema. Por lo general lo que se hace es implementar en un procesador conocido un algoritmo, por la experiencia que se tiene en él, debido a que se conoce la plataforma de programación y la arquitectura del mismo (todos estos conocimientos requieren de por lo menos un año de tiempo de experimentación, según nuestra experiencia), por esta razón difícilmente nos arriesgamos a tomar un nuevo procesador para no tener que volver a empezar el aprendizaje de programación de hardware, además de que los procesadores especializados en la investigación de procesamiento de imágenes y video son de precios muy elevados.

Por esta razón es necesario recurrir a un procesador que tenga las características de poder hacer implementaciones de procesamiento de imágenes y video, y que el costo sea menor a un procesador de investigación. Además de crear una estructura de trabajo específica para el procesador elegido que nos ayude a avanzar rápidamente en el conocimiento del hardware, iniciar un proyecto, integrarlo y realizar pruebas, de esta manera el investigador no ocupará tiempo en el aprendizaje de una nueva plataforma y solo se concentrará en la investigación del algoritmo y la integración a la estructura de trabajo.

(7)

Objetivo general

Analizar la arquitectura del procesador TMS320DM6437 e implementar la estructura de trabajo nivel cinco (RF5) como herramienta de ayuda a la rápida implementación de aplicaciones y finalmente probar su funcionalidad con un algoritmo de procesamiento de video en tiempo real.

Objetivos particulares

Analizar la arquitectura del procesador TMS320DM6437.

Estudiar las estructuras de trabajo RF1, RF3, y RF5 de Texas Instruments.

Realizar pruebas de detección de bordes en video utilizando el Simulink de MatLab como generador de código en lenguaje C y compilarlo en CCS.

Realizar la medición del tiempo de procesamiento del algoritmo de detección de bordes (generado por Simulink de MatLab) en el procesador TMS320DM6437.

Implementar la RF5 para el procesador TMS320DM6437.

Integrar un algoritmo XDAIS de procesamiento de video en una célula para su ejecución en tiempo real.

(8)

Justificación

La utilización de hardware de arquitectura especifica nos permite tener grandes capacidades (arquitectura VLIW, IDMA, EDMA3, etc) para las operaciones matemática de una señal digital (caracterizado por la representación en el dominio del tiempo discreto y el dominio de la frecuencia discreta), lo que permite mejorar de forma exponencial la manera de crear aplicaciones en los DSPs, algunos ejemplos de su utilización los podemos encontrar en la detección de movimiento [1], detección de placas de vehículo [2], entre otros. En donde el software de programación se basa en el Code Composer Studio (CCS) y los eXpressDSP Software Technology.

TI ha plasmado toda su experiencia de programación en el desarrollo de diferentes estructuras de trabajo (RF1, RF3, y RF5) para diversas aplicaciones y procesadores, la RF es un código genérico que es utilizado por el DSP/BIOS [3] exclusivo del DSP y los algoritmos estándar XDAIS. Una característica muy especial de la RF es su flexibilidad para ajustarse a cualquier proyecto sin que sufra muchas modificaciones el código fuente, además de utilizar un conjunto de herramientas de Software compatibles para los DSPs TMS320 llamada eXpressDSP [4].

La característica más importante de una RF dentro del diseño de un proyecto es eliminar las necesidades de administración de recursos de hardware (diseño de la plataforma o sistema operativo), construcción del prototipo, y acelerar el diseño e implementación de aplicaciones.

La RF es un modelo de aplicación, donde existen políticas de administración de memoria, tareas y la encapsulación de canales, para que el desarrollador se pueda concentrar en las necesidades de su aplicación y evitar la construcción y administración de recursos de hardware de un sistema específico para su aplicación.

(9)

Alcance del proyecto

Implementar una estructura de trabajo (RF) que nos permita utilizar un procesador especializado en la industria e investigación que posea herramientas de procesamiento de imagen/video y nos permita implementar la RF.

Al implementar la RF5 en el procesador TMS320DM6437, los recursos en hardware que contiene el DSP TMS320DM6437 se administraran a manera de que el procesamiento de algoritmos sea mucho más eficiente para poder tener un sistema en tiempo real.

Al concluir la implementación de la estructura de trabajo para el TMS320DM6437 se contará con una herramienta para ser utilizada para la investigación y desarrollo en el campo de procesamiento de imágenes, visión artificial, detección de movimiento, seguridad industrial, vigilancia, etc. Que permitirá la rápida implementación del proyecto y realización de pruebas del algoritmo.

Por las características de la RF, su utilización principal es en la industria para el desarrollo rápido de proyectos, pero al realizar la implementación en el procesador TMS320DM6437 su utilidad permitirá que este procesador y todas sus características sean para la investigación y desarrollo de algoritmos en el laboratorio de señales y sistemas de la SEPI en ESIME Zacatenco, y obtener resultados en el rendimiento y comportamiento del algoritmo, además de evaluar su comportamiento en ambientes reales, y probar diferentes fuentes de adquisición de información (cámaras web, reproductores dvd, cámaras de seguridad, cámaras portátiles, etc.) que puedan ser compatibles con el módulo de procesamiento de video del procesador TMS320DM6437.

(10)

Índice

Capítulo 1.  Introducción ... 1 

1.1  Operaciones de Nivel Bajo ... 3 

1.2  Operaciones de Nivel Intermedio ... 4 

1.3  Operaciones de Nivel Alto ... 4 

1.4  Hardware de propósito general ... 5 

1.5  Hardware de propósito especifico ... 5 

1.6  Procesador Digital de Señales (DSP) ... 6 

1.7  Familia TMS320DM64x ... 7 

1.7.1  Familia DaVinci ... 10 

1.8  Estructuras de Trabajo ... 12 

1.9  Conclusiones ... 13 

Capítulo 2.  Características del procesador de video digital propuesto ... 14 

2.1  Características del dispositivo TMS320DM6437 ... 17 

2.2  CPU (Núcleo del DSP) ... 18 

2.3  Mapa de Memoria ... 18 

2.4  Consideraciones del Reloj ... 20 

2.5  Secuencia de arranque del TMS320DM6437 ... 20 

2.5.1  Modos de arranque ... 21 

2.6  Interconexión interna del Sistema ... 21 

2.7  Subsistema de Procesamiento de Video (VPSS) ... 21 

2.7.1  Procesamiento de Video Front‐End (VPFE) ... 22 

2.7.2  Controlador de CCD (CCDC) ... 24 

2.7.3  Motor de Vista Previa ... 24 

2.7.4  Redimensionador ... 25 

2.7.5  Hardware 3A (H3A) ... 25 

2.7.6  Histograma ... 26 

2.7.7  Codificador de video (VENC) ... 27 

2.8  Receptor/Transmisor Universal Asíncrono (UART) ... 27 

2.9  Comunicaciones entre circuitos (I2C) ... 28 

2.10  Conclusión ... 29 

Capítulo 3.  Estructuras de trabajo (RFs) ... 30 

3.1  Estructura de trabajo nivel uno (RF1) ... 33 

3.2  Estructura de trabajo nivel tres (RF3) ... 35 

3.3  Estructura de trabajo nivel cinco (RF5) ... 36 

3.3.1  Justificación de la migración y adaptación de la estructura de trabajo nivel cinco al  procesador TMS320DM6437 ... 37 

3.3.2  Características principales de la RF5 ... 38 

(11)

3.3.4  Comunicación entre los diferentes módulos ... 40 

3.4  Desarrollo de aplicaciones ... 42 

3.4.1  Arquitectura para el diseño de aplicaciones ... 42 

3.4.2  Modo de operación del canal ... 43 

3.4.3  Solicitud de envíos de E/S ... 44 

3.4.4  Control de un dispositivo ... 44 

3.5  Controladores de Clase ... 44 

3.5.1  Adaptador SIO (DIO) ... 44 

3.5.2  Módulo PIP ... 46 

3.5.3  Controlador clase GIO ... 46 

3.6  Conclusiones ... 46 

Capítulo 4.  Diseño e implementación de la RF5 en el procesador  TMS320DM6437 utilizando un algoritmo de detección de bordes y resultados de  tiempo de procesamiento ... 47 

4.1  Configuración del DSP/BIOS ... 47 

4.2  Modificación de la memoria interna ... 48 

4.3  Programación del subsistema de procesamiento de video ... 50 

4.4  Ajustes del temporizador ... 51 

4.5  Archivos de aplicación para la RF5 en el procesador DM6437 ... 53 

4.6  Adaptación de la RF5 ... 54 

4.6.1  Agregar nuevo código fuente para los módulos ... 54 

4.7  Adaptación de un algoritmo de detección de bordes en la estructura de trabajo nivel  cinco  56  4.8  Estructura del árbol de navegación de la RF5 ... 58 

4.9  Implementación de un algoritmo de detección de bordes utilizando la estructura de  trabajo nivel cinco ... 59 

4.9.1  Arquitectura de software y flujo de datos ... 60 

4.10  Arquitectura de la Tarea de Captura ... 61 

4.11  Arquitectura de la Tarea Proceso ... 62 

4.12  Personalización de la RF5 ... 63 

4.12.1  Creación del canal de procesamiento ... 63 

4.12.2  Procedimiento para habilitar e inicializar el canal ... 65 

4.12.3  Condiciones para agregar una célula ... 65 

4.13  Arquitectura de la Tarea Display ... 66 

4.14  Análisis en tiempo real utilizando el DSP/BIOS ... 67 

4.14.1  Módulo UTL ... 67 

4.15  Conclusiones ... 69 

Capítulo 5.  Conclusiones y trabajo a futuro ... 71 

5.1  Trabajo a futuro ... 72 

(12)

Anexos ... 77 

Índice de figuras

Figura 1.1. Pirámide de procesamiento de operaciones. (Kehtarnavaz & Gamadia, 2006) ... 3 

Figura 1.2. Paralelismo en Nivel bajo (a) punto, (b) vecindad, y (c) global para operaciones de procesamiento  de imagen y video. ... 4 

Figura 1.3. Diagrama de bloques de la familia TMS320DM64x. ... 7 

Figura 1.4. Jerarquía de la memoria del procesador TMS320DM64x. ... 8 

Figura 1.5. Estructura interna del controlador DMA. ... 9 

Figura 1.6. Diagrama de bloques de la arquitectura del procesador TMS320DM6437. ... 10 

Figura 1.7. Arquitectura de los controladores IDMA y EDMA3. ... 11 

Figura 2.1. Diagrama de bloques de funcionalidad del procesador DM6437 (Texas Instruments, 2008) pág.  12. ... 16 

Figura 2.2. Ruta de datos en el procesador TMS320C64x+ (Núcleo del DSP) (Texas Instruments). ... 19 

Figura 2.3. Diagrama de bloques de la interconexión del sistema. ... 23 

Figura 2.4. Diagrama de bloques del módulo I2C. ... 29 

Figura 3.1. Etapas de desarrollo de un proyecto. ... 30 

Figura 3.2. Creación de un pequeño sistema a un sistema complejo. ... 32 

Figura 3.3. Creación de un sistema utilizando las estructuras de trabajo. ... 33 

Figura 3.4. Topología de los módulos de la RF1. ... 34 

Figura 3.5 Topología de los módulos de la RF3. ... 36 

Figura 3.6. Arquitectura de la estructura de trabajo nivel cinco. (Texas Instruments, 2003) ... 38 

Figura 3.7. Comunicación entre una tarea y un controlador por medio de un objeto SIO. (Texas Instruments,  2003) ... 40 

Figura 3.8. Comunicación entre dos tareas utilizando mensajes SCOM. (Texas Instruments, 2003) ... 41 

Figura 3.9. Comunicación intercelular utilizando objetos ICC. (Texas Instruments, 2003) ... 41 

Figura 3.10. Componentes del controlador de un dispositivo. (Texas Instruments, 2003) ... 43 

Figura 3.11. Transmisión de datos en una aplicación utilizando DIO. (Texas Instruments, 2003) ... 45 

Figura 4.1. Diagrama a bloques de la comunicación de la memoria interna del núcleo C64x+ (Texas  Instruments). ... 49 

Figura 4.2. Configuración en modo desencadenado del temporizador ... 52 

Figura 4.3. Estructura de trabajo nivel cinco. ... 53 

Figura 4.4. (a) Imagen original, (b) Extracción de la fila central de la imagen (a). ... 57 

Figura 4.5. (a) Función que representa el perfil horizontal de la imagen original. (b) Primera derivada a partir  del perfil horizontal. ... 57 

Figura 4.6 Árbol de navegación de la RF5. ... 58 

Figura 4.7 Procesamiento de un algoritmo de  detección de bordes utilizando la RF5. ... 59 

Figura 4.8. Flujo de datos de la aplicación. ... 60 

Figura 4.9. Digitalización de la señal de video. ... 61 

Figura 4.10. Almacenamiento de la imagen en la memoria externa (VPFE). (Texas Instruments, 2008) ... 62 

Figura 4.11. Modificación del archivo thrProcess.h para inicializar canales y células. ... 64 

Figura 4.12. Conversión digital analógica. ... 66 

(13)

Índice de tablas

Tabla 1. Características del procesador DM6437. [19] ... 17 

Tabla 2 Descripción de Registros VPSS. [22] ... 22 

Tabla 3. Procesadores que pueden utilizar las estructuras de trabajo. ... 37 

Tabla 4. Registro de memoria L1 ... 48 

Tabla 5. Registro de memoria L2 ... 49 

Tabla 6. Tabla de descripción del Control de Registros del Temporizador Global. ... 52 

Tabla 7. Cuadro comparativo de tiempo de procesamiento de un algoritmo con RF5 y sin RF5 en una trama.  ... 68 

Tabla 8. Cuadros por segundo procesados en un algoritmo de detección de bordes con RF5 y sin RF5. ... 68 

Tabla 9. Tiempo de procesamiento para una trama utilizando el procesador DM642 con una estructura de  trabajo nivel cinco. ... 69 

(14)

Acrónimos

Acrónimo Español Inglés

API Interfaz de programación de

aplicaciones Application Programming Interface

ASIC Circuito Integrado para Aplicaciones

Especificas Application-Specific Integrated Circuit

BIN

Un bin es una subdivisión en la escala de intensidad de una imagen, por lo general se utilizan 256, si por ejemplo, se utilizan dos bins, existirán dos regiones (una de 0 a 127 y otra de 128 a 255)

CCL Librería de soporte de chip Chip Support Library

CCS Code Composer Studio

CPU Unidad Central de Procesamiento Central Processing Unit

D1 Formato de video de 704 x 480 pixeles

DAC Convertidor Digital Analógico Digital Analog Converter

DDR2 Double Data Rate 2

DLP Paralelismo a nivel de datos Data Level Parallelism

DMA Acceso Directo a Memoria Direct Memory Access

DSP Procesador Digital de Señales Digital Signal Processor

EDMA3 Acceso Directo a Memoria Mejorado Enhanced Direct Memory Access 3

EMAC Ethernet MAC Ethernet Media Access Control

EMIF Interface de Memoria Externa External Memory Interface

EVM Módulo de evaluación Evaluation Module

FPGA Arreglo de compuertas lógicas

programables Field-programmable Gate Array

(15)

Acrónimo Español Inglés

IDK Kit de desarrollo de imágenes Imaging Developer’s Kit

IDMA DMA Interno Internal DMA

ILP Paralelismo a nivel de instrucciones Instruction Level Parallelism

KW Kilopalabra = 1024 palabras Kiloword

L1 Memoria Nivel 1 Level 1

L1D Memoria Nivel 1 de Datos L1 Data

L1P Memoria Nivel 1 de Programa L1 Program

L2 Memoria Nivel 2 Level 2

McASP Puerto Serie Asíncrono Multicanal Multichannel Asynchronous Serial Port

McBSP Puerto Serie Multicanal con capacidad

de almacenamiento Peripheral Component Interconnect

RF5 Estructura de trabajo nivel 5 Reference Framework 5

RTOS Sistema operativo en tiempo real Real Time Operating System

SCOM Comunicaciones sincronizadas Synchronous Communications

TGCR Control de registros del temporizador

global Timer Global Control Register

UART Transmisor-Receptor Asíncrono

Universal

Universal Asynchronous Receiver-Transmitter

VGA Adaptador de gráficos de video Video Graphics Array

VLIW Procesador de instrucciones complejas Very Long Instruction Word

VPBE Puerto de salida de video Video Processing Back End

VPFR Puerto de captura de video Video Processing Front End

VPSS Subsistema de procesamiento de video Video Processing Subsystem

XDAIS eXpressDSP Algorithm Interoperability

(16)
(17)

Diseño de una Estructura de Trabajo (RF) para el procesamiento de video en 

Capítulo 1.

I

ntroducción

El tipo de información al que hoy en día tenemos acceso, es principalmente de carácter digital, y podemos almacenarla en archivos de datos, podemos incorporar a la vida cotidiana diversos formatos (qt, mp4, wmv, bmp, gif, tif, jpg, mp3, wav, wma, pdf) para almacenar música, libros, imágenes y video, es evidente que la portabilidad actual de todo este tipo de información no habría sido posible sin la implementación eficiente y optimizada de los algoritmos de procesamiento digital de la señal de entrada.

El procesar una imagen o video implica una gran carga computacional debido a la cantidad de información que debe ser procesada y tomando en cuenta que las diversas plataformas tienen límite de recursos computacionales como memoria y el consumo de energía.

Como la mayoría de los algoritmos que se desarrollan para procesar imágenes digitales y video requieren una gran demanda del hardware de propósito general, es necesario recurrir a procesadores especializados con toma de decisiones (Trade Off)1 [5] para llegar a una decisión aceptable en la ejecución del algoritmo que dependerá del resultado al que se desea llegar.

El tiempo real en el procesamiento de imágenes/video toma en cuenta el procesamiento de grandes cantidades de datos con el propósito de extraer información útil en un tiempo determinado dependiendo de la aplicación. Un tema muy importante es como poder procesar grandes cantidades de datos y cálculos en tiempo real, por ejemplo, una video cámara VGA tiene una resolución de 640 x 480 pixeles a 30 cuadros por segundo (fps), se necesitaría realizar un procesamiento aproximado de 28 millones de pixeles por segundo, considerando que hoy en día ya es común encontrar cámaras de alta definición, que tienen una resolución de 1280 x 720 pixeles a 30 fps, se necesitaría realizar el procesamiento de 83 millones de pixeles por segundo. Una forma de poder realizar el procesamiento de esta cantidad de datos es mediante el procesamiento en paralelo, realizado por procesadores especializados [6].

1

(18)

Existen dos formas de paralelismo en un algoritmo a nivel de datos, DLP (Data Level Parallelism) y a nivel de instrucciones, ILP (Instruction Level Parallelism). El DLP se presenta en la aplicación de la misma operación en diferentes conjuntos de datos y la ILP está presente en la programación simultánea de múltiples operaciones independientes [7]. Un ejemplo de DLP es el cálculo del área bajo la curva por medio de una integración, que basta con dividir el intervalo de integración entre todos los procesadores disponibles y que cada uno resuelva su fragmento sin preocuparse de lo que hacen los demás, al final, todos los resultados parciales se recolectan y se suman. Con “n” procesadores el problema se puede resolver “n” veces más rápido que haciendo uso de uno solo [8].

El ILP es un modelo computacional que se basa en que una aplicación consiste de varias tareas y cada tarea es responsable de una parte de la carga del procesamiento de la aplicación en general y a su vez cada tarea realiza una operación independiente. Los algoritmos de cada tarea son diferentes y se pueden aprovechar las características particulares de cada uno para ejecutarlas en el CPU. Por ejemplo la ecuación ( 1 ) :

( 1 )

Suponiendo que cada instrucción se ejecuta en un ciclo de reloj en forma secuencial, entonces nos tomaría 3 ciclos de reloj terminar estas operaciones. Como podemos ver las instrucciones “e” y “f” son independientes por lo tanto las podemos ejecutar en el mismo ciclo de reloj en un procesamiento tipo ILP, y “g” espera los resultados de “e” y “f”, por lo tanto el tiempo de ejecución será de solo dos ciclos de reloj, lo que significa que es 3/2 más rápido [9].

Estos desarrollos hoy en día los podemos ver aplicados en distintas áreas como la navegación, robótica, biología, geología, meteorología, medicina, identificación de construcciones, inspección, control de calidad, cartografía, etc.

(19)
[image:19.612.204.412.133.273.2]

se encuentran en el nivel inferior, las operaciones de extracción de características se encuentran en el nivel intermedio y las operaciones para la adquisición de conocimiento se encuentran en la parte superior, ver Figura 1.1.

Figura 1.1. Pirámide de procesamiento de operaciones. [6]

Para realizar la tarea de muestreo de la señal, digitalización de video, procesamiento y análisis en tiempo real, implica una gran cantidad de cálculos matemáticos. Estas tareas se pueden realizar con diferentes alternativas tecnológicas, como son: El hardware de propósito general, hardware de propósito específico y el procesador digital de señales (DSP).

1.1 Operaciones de Nivel Bajo 

Estas operaciones también son conocidas como operaciones directas con la matriz de datos de la imagen. En estas operaciones podemos encontrar las transformaciones de color, corrección de la gamma, filtros lineales y no lineales, reducción de ruido, transformaciones en el dominio de la frecuencia, etc. [11]. El objetivo de estas operaciones es mejorar visiblemente los datos de la imagen posiblemente enfatizando ciertas características determinadas o preparando las características para el procesamiento del Nivel intermedio. Estas operaciones pueden ser mejor clasificadas como punto, vecindad y operaciones globales [12]. Las operaciones punto son simplemente en donde tenemos un pixel de entrada y otro pixel de salida, en donde la transformación no depende de los pixeles que rodean al pixel de entrada, este tipo de operaciones contempla las operaciones aritméticas, operaciones lógicas, búsquedas en la tabla, operaciones de umbral, etc. Aquí es evidente el uso de DLP como se muestra en la Figura 1.2 (a).

(20)
[image:20.612.90.508.187.390.2]

vecinos como se muestra en la Figura 1.2 (b), estas operaciones requieren una gran cantidad de cálculos y por este motivo es necesaria la aplicación de procesamientos en paralelo. Las operaciones globales están basadas en las operaciones de vecindad en el que el pixel de salida solo depende de cada pixel de entrada en la imagen como se muestra en la Figura 1.2 (c). Estas operaciones son comúnmente utilizadas en la Transformada de Fourier discreta que depende de la imagen completa.

Figura 1.2. Paralelismo en Nivel bajo (a) punto, (b) vecindad, y (c) global para operaciones de procesamiento de imagen y video.

1.2 Operaciones de Nivel Intermedio 

En este tipo de operaciones la transformación de datos de la imagen se ve modificada mediante la extracción de ciertos atributos o características de interés de una imagen. En este tipo de operaciones podemos encontrar la segmentación de la imagen en regiones y objetos de interés, detección de bordes, líneas, curvas u otros atributos de la imagen tales como las funciones estadísticas (media, mediana, desviación estándar, etc.). El objeto del Nivel intermedio de operaciones es reducir la cantidad de datos para formar un conjunto adecuado de características (transformaciones de color, corrección de la gamma, filtros lineales y no lineales, reducción de ruido) para el procesamiento a Nivel alto [11].

1.3 Operaciones de Nivel Alto 

Es el encargado de interpretar los resultados abstractos del Nivel intermedio, las operaciones de Nivel alto se encargan de realizar el análisis de la escena basándose en un conocimiento previo, entre las operaciones que se ejecutan en este nivel están incluidas la

Imagen de entrada Imagen de salida Imagen de entrada Imagen de salida

Imagen de salida Imagen de entrada

(a) (b)

(21)

clasificación y reconocimiento de objetos o la toma de decisiones basándose en las características extraídas de la escena. Este tipo de operaciones está caracterizado por el control sobre las operaciones realizadas, en este tipo de procesamiento las operaciones son más secuenciales que paralelas, pero debido a sus irregularidades son candidatas para utilizar el ILP [11].

Los algoritmos para el procesamiento de video son muy exigentes en cuanto a los recursos computacionales que necesitan de recursos tecnológicos con una capacidad de cómputo elevada. Hoy en día podemos encontrar diferentes alternativas para poder implementar algoritmos de procesamiento de video y los podemos clasificar en tres grupos: Hardware de Propósito General, Hardware de Propósito Específico y los basados en DSP´s.

1.4 Hardware de propósito general 

Este tipo de hardware puede implementar diversos estándares de codificación entre los que podemos encontrar C y C++. Un ejemplo muy claro de este tipo de tecnología lo podemos encontrar en los procesadores utilizados por las computadoras personales o de escritorio, este tipo de procesadores son capaces de realizar el muestreo, digitalización y análisis del video en tiempo real, y todo esto sin utilizar el 100% de su capacidad, otra ventaja de este tipo de tecnología es que permite la ejecución de software aunque este no se encuentre optimizado para la arquitectura especifica del microprocesador. Las desventajas que presenta el Hardware de propósito general es que no se encuentran optimizados para una arquitectura concreta, así como su elevado consumo de energía y precio.

Ejemplo de hardware de propósito general:  

• Procesadores Intel [13]: Este tipo de procesadores ofrecen procesamiento multitarea, aumento en sus operaciones visuales en su tarjeta de video dedicada y administrando mejor el uso de la energía.

• Procesadores ARM [14]: Este tipo de procesadores son muy utilizados para ejecutar sistemas operativos RTOS (Real-Time Operating System), los podemos encontrar en sensores inteligentes, televisión digital, Smartphones, Sistemas de frenado, etc.

1.5 Hardware de propósito especifico 

(22)

Aplicaciones Específicas), este tipo de circuitos están hechos para un uso específico, con diseños más pequeños, con la desventaja de que se fabrican en pequeñas líneas de producción y el costo final de cada FPGA es muy alto comparado con un FPGA de uso general, este tipo de hardware también tiene la ventaja de procesar video en tiempo real con bajos consumos de energía.

Entre las desventajas que tiene este tipo de Hardware se encuentra su poca flexibilidad ya que una vez que se han fabricado son difícilmente adaptables a modificaciones que se produzcan por ejemplo en el tamaño de captura de imagen.

1.6 Procesador Digital de Señales (DSP) 

En 1979 Bell Labs lanza el primer Procesador Digital de Señales "The Mac 4 Microprocessor", después en 1980 NEC presenta el primer DSP completo, el PD7710 y AT&T presenta el DSP1 [15].

El primer DSP producido por Texas Instruments (TI) "TMS32010" fue presentado el 8 de abril de 1983, este procesador contenía ya algunas variantes con respecto a otros, como la arquitectura de punto fijo y punto flotante. El estudio de los DSP’s en la actualidad es de gran importancia y además existen diversos fabricantes que construyen este tipo de tecnología entre los que se encuentran: TI, NXP y Analog Devices. Cada fabricante tiene DSP’s que se ajustan a diferentes campos de aplicación entre los que podemos encontrar los orientados al desarrollo de aplicaciones de video.

Las diferencias que podemos encontrar entre los DSP’s de las diferentes compañías son la cantidad de memoria interna que contienen y los periféricos que lo integran [16].

En la última década han aparecido DSP´s especializados en el procesamiento de video, estos DSP´s poseen una arquitectura que facilita la implementación de estas aplicaciones e incluyen periféricos (puertos de entrada y salida de video, puertos Ethernet, puertos de audio, etc.), que son de gran importancia en el área de procesamiento de video.

(23)

1.7 Familia TMS320DM64x 

Esta familia de DSP’s de TI actualmente se compone de las siguientes subfamilias:

TMS320DM648x, TMS320DM647x, TMS320DM643x, TMS320DM642x,

[image:23.612.92.509.166.386.2]

TMS320DM641x, TMS320DM640x. En la Figura 1.3 podemos ver la estructura interna que poseen todos los procesadores de esta familia.

Figura 1.3. Diagrama de bloques de la familia TMS320DM64x.

El núcleo de esta familia TMS320DM64x está integrado por una arquitectura de Procesador de Instrucciones Complejas (VLIW), que puede realizar hasta ocho operaciones de forma simultánea en un solo ciclo de reloj con datos de 32 bits, este rendimiento se logra gracias a sus 8 unidades funcionales y 64 registros internos de 32 bits. Las unidades funcionales se encuentran agrupadas en 2 rutas de datos y cada uno con 4 unidades idénticas que operan principalmente con los registros de ruta de datos a la que pertenecen con una capacidad limitada para acceder a registros de otra ruta.

(24)
[image:24.612.81.396.163.497.2]

El tiempo que toma entrar a las memorias depende de su nivel de jerarquía. La memoria L1 tiene un tiempo de acceso que depende de la frecuencia del procesador (594 MHz), el L2 tiene un tiempo de acceso del doble de tiempo que la memoria L1 y la Memoria Externa tiene un tiempo programable de acceso que se encuentra determinado por el intervalo de frecuencias de 100MHz y 133Mhz [18].

Figura 1.4. Jerarquía de la memoria del procesador TMS320DM64x.

La función del controlador DMA (Acceso Directo a Memoria) es la de administrar todas las transferencias entre la memoria interna (L1 y L2) y la memoria externa o los periféricos como se muestra en la Figura 1.6. Las tareas que provocan una transferencia de datos mediante el controlador DMA están definidas por las siguientes situaciones:

• Cuando el CPU accede a un fragmento de código o de datos que se encuentran almacenados en la memoria externa.

• Si los periféricos realizan alguna transferencia de datos hacia o desde la memoria externa.

(25)

• Cuando el usuario programa el DMA para realizar alguna transferencia definida de datos entre la memoria interna de propósito general y la memoria externa, mediante el mecanismo llamado QDMA (Quick DMA), o también por EDMA (DMA Mejorado). Una de las ventajas de estas transferencias es que se pueden realizar en bloques de datos unidimensionales o bidimensionales.

Todas las transferencias solicitadas son almacenadas en una de las cuatro colas de petición (urgente, alta, media y baja) que posee el controlador DMA, cada cola contiene 16 posiciones por lo que puede acumular 64 peticiones. Las colas de petición tienen prioridad, lo que significa que, si existen transferencias pendientes en varias de ellas, éstas se atienden en un orden preestablecido, es posible configurar las peticiones máximas que puede realizar cada elemento de la cola de petición para acceder al controlador DMA.

Por ejemplo en la Figura 1.5, se podría pensar que las peticiones provenientes de los periféricos (representadas con el número uno), pueden acumularse en cualquiera de las 4 colas de prioridad pero solo se disponen de 4 posiciones en la cola de prioridad urgente, 7 en la de prioridad alta y 5 en las de prioridad media y baja. Lo mismo se puede indicar para las peticiones generadas por el controlador de EDMA (representadas con el número dos) y por el CPU o el usuario a través del controlador IDMA (representadas con el número tres).

L 1 (C PU) L 2 (C PU) ID MA

L 1 (C PU) L 2 (C PU) ID MA

E D MA

E D MA

Periféricos Periféricos sp li t sp li t

1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3

1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3

1 1 1 1 1 2 2 2 2 2 2 2 3 3 3 3

C ontrolador D MA C ontrolador D MA C ola con 16 posiciones 3 2 1

Figura 1.5. Estructura interna del controlador DMA.

El rendimiento de las transferencias al DMA depende de parámetros como a qué tipo de recurso se desea acceder, la cantidad de datos que tiene el buffer para transferir y su alineamiento en la memoria. En el caso de la memoria externa conectada al DSP a través de la interfaz EMIF, se pueden llegar a transferir bloques de datos de 32 bits a una velocidad de un dato por ciclo de reloj del procesador. Pero si solo se transfiere un dato de 1Byte será necesario emplear hasta 18 ciclos de reloj.

(26)

Ethernet (EMAC), un puerto serie multicanal de audio (McASP0), 3 temporizadores de 32 bits, 16 pines de entrada/salida de propósito general (GP0) y un Controlador del Bus (I2C). Una familia muy importante de TI es la Familia DaVinci TMS320DM6437 que cuenta con un menor tamaño que sus antecesoras, mayor flexibilidad de la memoria interna, mejoras en la eficiencia del controlador de transferencias por DMA y en la ampliación en su repertorio de instrucciones, a continuación se presentan los elementos que integran esta familia.

1.7.1 Familia DaVinci 

Entre el hardware especializado para el procesamiento de video tenemos a la familia DaVinci con el procesador TMS320DM6437. El núcleo de este procesador también se le llama C64x+ [19], posee una arquitectura VLIW con dos niveles de memoria interna (L1, L2) y un controlador IDMA (DMA Interno) para realizar transferencias entre elementos internos (L1 y L2).

[image:26.612.92.508.403.661.2]

El núcleo del procesador se conecta mediante una matriz de conmutación con un conjunto de periféricos internos y un subsistema de procesado de video [20], como se muestra en el diagrama de bloques en la Figura 1.6.

(27)

El tamaño de la memoria interna es de 240kB, con cache de nivel 1 de programa (LP1) con 32kB que puede ser configurada como memoria de propósito general, cache de nivel 1 para código o se puede combinar como las dos anteriores, el cache de nivel 1 de datos (L1D) posee 80kB y también es configurable como memoria de propósito general o una combinación de ambas. La memoria L2, tiene una capacidad de 128kB que pueden ser compartidos entre memoria cache de nivel 2 y memoria de propósito general para datos y código.

La funcionalidad del DMA ha sido modificada de las familias anteriores con dos controladores independientes (IDMA y EDMA3), el IDMA que se encarga de realizar transferencias más eficientes entre las memorias internas (L1 y L2) y los periféricos, y el EDMA3, utilizado para las transferencias entre memoria externa y memoria interna. Al combinar el trabajo de los dos controladores se mejora significativamente el rendimiento, ya que reduce el empleo del CPU. En la Figura 1.7 se puede ver la relación existente entre los dos controladores de DMA y los recursos a los que puede acceder cada uno de ellos. Con estos dos controladores de DMA se pueden enlazar automáticamente transferencias sin la intervención del CPU [21].

Memoria externa Memoria externa Periféricos Periféricos

E D MA 3

E D MA 3

L 2 ∙   C aché ∙   Propósito 

general

L 2 ∙   C aché ∙   Propósito 

general C ontrolador de memoria  de programa L 1 C ontrolador de memoria  de programa L 1 ID MA

ID MA C PUC PU

[image:27.612.87.520.351.653.2]

C ontrolador de memoria  de datos L 1 C ontrolador de memoria  de datos L 1 L 1P L 1P L 1D L 1D

Figura 1.7. Arquitectura de los controladores IDMA y EDMA3.

(28)

realizar implementaciones de software de manera rápida ahorrando tiempo de pruebas, así como tiempo para el desarrollo del prototipo del proyecto final.

1.8 Estructuras de Trabajo 

Desde que Texas Instruments presentó los DSPs con grandes capacidades de desarrollo de software, se marcó el inicio para que los desarrolladores mejoraran de forma exponencial la manera de crear aplicaciones para la familia de DSP’s TMS320, algunos ejemplos de su utilización los podemos encontrar en la detección de movimiento [1], detección de placas [2] entre otros. Donde los elementos más importantes para el desarrollo de software son: Code Composer Studio (CCS) y eXpressDSP Software Technology.

La estructura de trabajo (“Reference Frameworks” RF) es el código genérico del DSP que es utilizado por el DSP/BIOS [3] y los algoritmos estándar del TMS320DSP, esta estructura de trabajo se adapta y utiliza con un conjunto de herramientas de Software y Desarrollo para los DSP’s TMS320 llamada eXpressDSP compatibles para lograr aplicaciones específicas [4].

Además una estructura de trabajo es un modelo de aplicación, donde existen políticas de administración de memoria, de hilos y la encapsulación de canales, donde el desarrollador se puede concentrar en las necesidades de su sistema y comenzar a construir en la parte superior de la RF2. TI ofrece múltiples RFs, el uso de cada RF depende del tipo de proyecto a realizar, este trabajo de investigación se enfoca en la plataforma DSP C64x+. El código fuente proporcionado por TI para las RFs se encuentra escrito en Lenguaje C. Las RFs están diseñadas para eliminar las necesidades de diseño, construcción y pruebas de código en bajo nivel y acelerar el diseño e implementación de las aplicaciones.

La RF1 (Compacta), está diseñada para tener un Footprint3 mínimo y conserva todos los elementos eXpressDSP4. Se utiliza para la configuración de objetos estáticos sin considerar el tiempo de ejecución y la creación de objetos dinámicos. La administración de memoria es completamente estática y no es compatible con la administración de memoria dinámica. El número de canales y algoritmos soportados es como máximo tres y no existe preferencia o bloqueo de hilos.

2

Las RFs nos dan la ventaja de no preocuparnos por el diseño y construcción de un sistema específico desde el inicio del proyecto. Las RFs están construidas por las librerías de soporte de chip para el dispositivo utilizado, contenedores de algoritmos, algoritmos estándar TMS320 y el código de aplicación específico, siendo este último la parte superior de la RF.

3

Espacio de memoria utilizado por la aplicación.

4

(29)

Con la RF3 (Flexible) cambia el Footprint mínimo de la RF1 por mayor flexibilidad, solo se pueden crear objetos estáticos, pero ahora existen Buffers para la administración de la memoria dinámica, la flexibilidad consiste en el uso de más canales y algoritmos, es compatible con operaciones multi-hilo. Este nivel nos proporciona un hilo adicional para permitir el control del DSP por una unidad externa como por ejemplo un procesador Host. Cuando necesitamos una amplia flexibilidad y el Footprint no es importante podemos utilizar la RF5 (Extensiva), donde el número de canales y algoritmos llega a más de 100, puede trabajar con un solo rango ó multi-rango5, existe prioridad, bloqueo y control dedicado de hilos.

1.9 Conclusiones 

Los DSPs poseen arquitecturas diseñadas especialmente para acelerar los cálculos matemáticos intensos utilizados en la mayoría de sistemas de procesamiento de señales en tiempo real. Por medio de una estructura de trabajo es posible adaptar los recursos específicos del DSP para el procesamiento de una aplicación específica.

Una estructura de trabajo es muy eficaz al trabajar con el paralelismo de un programa y así obtener la mayor cantidad de ventajas de las arquitecturas VLIW y con ello la obtención de elevadas prestaciones del DSP. Al poder realizar el desarrollo de una estructura de trabajo como la RF5 es posible utilizarla tanto en la industria como en el área de desarrollo e investigación de algoritmos de procesamiento de imágenes y video que actualmente se realizan en el laboratorio de Señales y Sistemas de SEPI Electrónica.

5

(30)

Capítulo 2.

Características del procesador de

video digital propuesto

El módulo de evaluación TMS320DM6437 es un dispositivo basado en la tercera generación de alto rendimiento llamada VelociTI con arquitectura VLIW. El núcleo del DSP llamado C64x+ [19] tiene 64 registros de propósito general con una longitud de palabra de 32 bits y ocho unidades funcionales independientes (2 multiplicadores para resultados de 32 bits y 6 Unidades Lógicas Aritméticas “ALU”), las ocho unidades funcionales incluyen instrucciones para acelerar el rendimiento en aplicaciones de video e imágenes. El núcleo del DSP puede almacenar hasta cuatro multiplicaciones acumuladas (MACs multiply-accumulates) de 16-bits por ciclo de reloj, dando un total de 2800 millones de MACs por segundo (MMACS), u ocho MACs por ciclo para un total de 5600 MMACS [22].

El núcleo del procesador DM6437 utiliza una arquitectura de dos niveles de caché. La memoria caché Nivel 1 de Programa (L1P), consiste en un espacio de memoria de 256 Kbits que puede ser configurada como memoria de propósito general o memoria caché directa; y la memoria caché nivel 1 de datos (L1D), consta de una memoria de 640 Kbits que puede ser configurada como memoria caché de propósito general o memoria caché nivel 1 de datos. La memoria caché nivel 2 (L2) se compone de un espacio de memoria de 1M bit y puede ser configurada para utilizarse como archivo mapeado6, caché o una combinación de ambos.

El conjunto de periféricos se puede adaptar a una gran diversidad de entornos y cuenta con los siguientes recursos:

Dos puertos de video configurables, un conector Ethernet MAC (EMAC) 10/100Mb, un bus de comunicaciones entre circuitos (I2C), dos puertos serie (McBSPs), un puerto de audio multicanal serie (McASP0), 2 temporizadores de 64 bits de propósito general ó 2 temporizadores de 32 bits independientes, 1 temporizador de 64 bits (Watchdog), una Interfaz de Puerto Host (HPI) [23] de 16 bits configurable por el usuario, 2 UARTs, 3 moduladores por ancho de pulso (PWM), un protocolo de comunicación CAN (Control Area Network), un sistema de expansión de periféricos (PCI) a 33MHz, 2 interfaces de memoria externa sin cola: una interfaz de memoria asíncrona externa (EMIFA) para memorias lentas y periféricos, y una interfaz para memorias sincronizadas de mayor velocidad (DDR2).

6 Un archivo de memoria asignada (memory-mapped) es una porción de memoria virtual en la que se establece una

(31)

El procesador DM6437 incluye un subsistema de procesamiento de video (VPSS) con dos periféricos configurables de Video/Imagen: 1 sistema de procesamiento de video de entrada (VPFE) utilizado para la captura de video, 1 sistema de procesamiento de video de Back-End (VPBE) utilizado para la salida de video.

El procesamiento de video Front-End (VPFE) se compone de un controlador CCD (CCDC), un motor de pre-visualización, un módulo de histograma, auto exposición/balance de blancos/módulo de enfoque (H3A) y módulo Redimensionador. La CCDC es capaz de interactuar con los decodificadores de video comunes (sensores CMOS y dispositivos de carga acoplada CCD). La pre-visualización de la imagen es un motor de procesamiento en tiempo real que toma los datos directamente del sensor CMOS o CCD y los convierte a partir de un diseño RGB a YUV422 [24]. El módulo de histograma y H3A proporciona información estadística sobre los datos obtenidos directamente del sensor para el uso del procesador DM6437. El Redimensionador acepta los datos de la imagen para cambiar el tamaño horizontal y vertical de 1/4x a 4x en incrementos de 256/N, donde N se encuentra entre 64 y 1024.

El procesamiento de video Back-End (VPBE) está compuesto por un motor de visualización en pantalla (OSD) y un codificador de video (VENC) [25]. El motor OSD es capaz de manejar 2 ventanas de video por separado y 2 ventanas separadas OSD. El VENC está compuesto por 4 DACs analógicos a 54 MHz, proporcionando un medio de video en formato NTSC/PAL, S-Video y/o salida de video compuesto. El VENC también proporciona hasta 24 bits de salida digital a un dispositivo RGB8887. La salida digital utiliza el protocolo BT.6568 de 8/16 bits de salida [26].

El control de acceso por Ethernet (EMAC) proporciona una interfaz entre el DM6437 y la red. El EMAC puede ser configurado con los estándares 10Base-T (10 Mbits/segundo) y 100Base-TX (100 Mbits/segundo).

El módulo de administración de datos de Entrada/Salida (MDIO) revisa continuamente 32 direcciones MDIO para enumerar los dispositivos PHY9 en el sistema [27].

Los buses I2C y VLYNQ permiten controlar fácilmente los dispositivos periféricos para comunicarse con los procesadores de un host.

El Controlador de CAN10 (HECC “High-End Controller Area Network”) proporciona un protocolo de control distribuido (sincroniza la comunicación entre los diferentes dispositivos) para comunicarse con otros controladores en serie.

7 RGB88: Asigna 8 bits para los canales rojo (R), verde (G) y azul (B). Normalmente se utiliza para contenidos sin

comprimir.

8

Protocolo de video digital sin comprimir para transmitir en NTSC o PAL

9

(32)

El procesador DM6437 se comunica con los periféricos a través de las interfaces de dispositivos y un bus EMIF con un ancho de 8 bits. La memoria DDR2 está conectada a un bus dedicado con un ancho de 32 bits. El Bus EMIF es seleccionable por medio de un jumper para ser conectado a la memora FLASH, SRAM, NAND o a otras tarjetas de expansión.

El procesador DM6437 utiliza el decodificador TVP5146M2 para realizar la codificación y decodificación de video.

El Códec AIC33 le permite al DSP transmitir y recibir señales analógicas de audio. El Bus I2C se utiliza para administrar la interfaz de control del Códec, mientras que el McBSP controla el flujo de audio. La conexión de audio se realiza por medio de las tomas de audio de 3.5mm que corresponden a la entrada de micrófono, entrada de línea, salida de línea y audífonos, en este proyecto de tesis solo nos enfocaremos a la parte del procesamiento de imágenes y video.

[image:32.612.122.495.331.631.2]

En la Figura 2.1 se muestra el diagrama a bloques de la tarjeta TMS320DM6437.

Figura 2.1. Diagrama de bloques de funcionalidad del procesador DM6437 [28] pág. 12.

10

(33)

2.1 Características del dispositivo TMS320DM6437 

En la Tabla 1 podemos ver las características generales del DSP TMS320DM6437 que utilizaremos en la implementación de la RF5, para referencias más detalladas consultar el manual TMS320C64x/C64x+ DSP [19].

Tabla 1. Características del procesador DM6437. [19]

Características de Hardware TMS320DM6437

Periféricos

Controlador de memoria DDR2

Ancho de bus 16/32 bits [1.8 V Entrada/Salida]

EMIF Asíncrono (EMIFA)

Asíncrono (ancho de bus 8 bits), RAM, Flash, (NOR o NAND de 8 bits)

EDMA3 1 (64 canales independientes,

8 canales QDMA) Temporizadores

2 de propósito general de 64 bits (configurables como 2 de 64 bits o 4 de 32 bits) y 1 WatchDog de 64 bits.

UARTs 2 (1 con RTS y otro para el control de lujo CTS)

I2C 1 (Maestro/Esclavo)

McBSPs 2

McASP 1 (4 serializadores)

Puertos de Video

Configurables

1 Entrada (VPFE) 1 Salida (VPBE)

Circuito de memoria

Tamaño (Bytes) RAM de 240 KB, ROM de 64

KB

Organización

32 KB en L1P (Puede almacenar RAM/Caché hasta 32 KB),

80 KB en L1D (Puede almacenar RAM/Caché hasta 80 KB), 128 KB para RAM/Caché (L2).

64KB ROM de arranque. MegaModule Rev ID Dirección de localización:

0x01812000 Ver las características del TMS320DM6437 Digital Media Processor (DMP) [29] CPU ID + CPU Rev

ID

Control de Registros de Estado

JTAG BSDL_ID Registro JTAGID (Dirección

(34)

2.2 CPU (Núcleo del DSP) 

Conocer las características del núcleo C64x+ es muy importante para poder implementar una estructura de trabajo como la RF5 de TI, que ya se encuentra implementada en el DSP DM642, ya que del desempeño del núcleo dependerá el funcionamiento de la RF5.

El C64x+ es la Unidad Central de Procesamiento (CPU) y está compuesta de ocho unidades funcionales, 2 archivos de registro y 2 rutas de datos como se muestra en la Figura 2.2. Los 2 registros son de Propósito General (A y B), contienen 32 registros de 32-bits para un total de 64 registros. Los registros de propósito general pueden ser utilizados para datos o para punteros de dirección. Los tipos de datos soportados son: paquetes de datos de 8-bits, paquetes de datos de 16-bits, paquetes de datos de 32-bits, datos de 40 bits y datos de 64 bits. Los valores mayores a 32 bits, como los valores de 40 bits o 64 bits de longitud, se almacenan en registros pares, con los 32 bits menos significativos (LSBs) de datos colocados en algún registro y los restantes 8 o 32 bits más significativos (MSBs) en el registro superior siguiente (que siempre es un número impar del registro).

Las 8 unidades funcionales (.M1, .L1, .D1, .S1, .M2, .L2, .D2, y .S2) son cada una capaz de ejecutar una instrucción en un ciclo de reloj [28].

La unidad funcional .M se encarga de realizar todas las operaciones relacionadas con multiplicaciones. Las unidades .S y .L se encargan de ejecutar un conjunto general de aritmética, lógica, y funciones secundarias. La función de la unidad .D es cargar los datos de memoria a los archivos de registro y almacenar los resultados de los archivos de registro en la memoria.

2.3 Mapa de Memoria 

El dispositivo tienes varios chips de memoria asociados al procesador. El mapa de memoria cuyo espacio de configuración es de la dirección 0x0180 0000 a 0x0FFF FFFF, es utilizado para simplificar el desarrollo de software y mantiene una coherencia entre los recursos del dispositivo a través de los buses maestros. El mapa de memoria puede ser consultado en el manual de referencia de la memoria interna [30] .

La herramienta de programación utilizada es el Code Composer StudioTM Integrated Development Environment (IDE).

(35)
[image:35.612.113.479.72.690.2]
(36)

2.4 Consideraciones del Reloj 

El dispositivo TMS320DM6437 así como sus periféricos son controlados por los controladores (PLLC1 y PLLC2) y el Controlador de Poder y Suspensión (PSC). Además el sistema modular VPSS_CLKCTL que configura los registros de la fuente de reloj para el subsistema de procesamiento de video (VPS).

Después de haber reiniciado el dispositivo, el usuario es el responsable de la programación de los controladores de PLL (PLLC1 y PLLC2) y el Controlador PSC para que el dispositivo trabaje a la frecuencia de reloj deseada así como el estado del reloj periférico deseado (clock gating or not11).

Para el ahorro de energía, los periféricos del DM6437 hacen uso del “clock gating or not” [31].

El DM6437 se encuentra predeterminado en el modo PLL bypass12, para poder utilizarlo en la frecuencia deseada es necesario programar el PLLC1 y PLLC2 [28].

El procesador DM6437 soporta la opción de fastboot, cuando se reinicia la salida del dispositivo el código interno encargado de iniciar los programas del PLLC1 en modo PLL con un multiplicador y un divisor PLL específico para agilizar el arranque del dispositivo. La opción de fastboot es un beneficio para un inicio más rápido, pero el multiplicador y el divisor PLL seleccionado pueden no ser de la frecuencia necesaria para la aplicación en tiempo de ejecución, es por esto que queda como responsabilidad del usuario volver a configurar el PLLC1 después del fastboot para llevar el dispositivo a la frecuencia de reloj requerida [32].

El reloj y el estado de reinicio para cada módulo del TMS320DM6437 están controlados por el PSC [28].

2.5 Secuencia de arranque del TMS320DM6437 

La secuencia de arranque es un proceso que se carga de la memoria del DM6437 en la sección de datos y de programa, por lo que algunos registros internos están definidos con valores predeterminados. La secuencia de arranque inicia de forma automática después de cada reinicio del DM6437. Existen diferentes métodos para poder inicializar la memoria y los registros, cada uno de estos métodos es conocido como modo de arranque. El modo de arranque se puede realizar por medio de la ROM interna, EMIFA o por los gestores de

11

El método encargado de la conmutación entre componentes innecesarios se llama clock gating, que implica apagar la señal de reloj de los componentes innecesarios, y esto se realiza desactivando dichos componentes.

12

(37)

arranque secundarios como la memoria externa. Algunas configuraciones de dispositivos son determinadas al restaurar el dispositivo.

2.5.1 Modos de arranque 

El modo de arranque del DM6437 está determinado por los dispositivos de arranque y los pines de configuración. Los modos de arranque están agrupados en tres categorías: modo Non Fastboot, modo Fixed-Multiplier Fastboot y modo User-Select Multiplier Fastboot.

• Modo Non-Fastboot (FASTBOOT=0): El DM6437 opera en modo PLL bypass predeterminado durante el arranque.

• Modo Fixed-Multiplier Fastboot (FASTBOOT=1, AEM[2:0]=001b): La velocidad de arranque está determinada dependiendo de la configuración de los multiplicadores PLL.

• Modo User-Select Multiplier Fastboot (FASTBOOT=1,

AEM[2:0]=000b,011b,100b,101b): El código del bootloader acelera el arranque del DM6437. El multiplicador PLL es seleccionado por el usuario a través del pin PLLMS[2:0].

2.6 Interconexión interna del Sistema 

La Figura 2.3 muestra el diagrama a bloques de la interconexión del sistema. La siguiente lista es la ayuda para la interpretación del diagrama:

• La dirección de las flechas indican un Bus Maestro o Esclavo.

• Las flechas se originan en el Bus Maestro y terminan en el Bus esclavo.

• La dirección de las flechas no indican la dirección del flujo de datos. El flujo de datos es normalmente bidireccional para cada uno de los caminos del Bus.

• El patrón de la línea de cada flecha nos indica la frecuencia de reloj a la que opera, por ejemplo a la frecuencia de reloj DSP/3, DSP/6 o MXI/CLKIN.

• Un periférico puede tener varias instancias como se muestra en la Figura 2.3, por lo tanto: El Periférico/Módulo tiene un Puerto(s) Maestro para la transferencia de datos, así como un Puerto(s) Esclavo para el acceso a registros, acceso a datos y/o acceso a memoria. Un ejemplo de estos periféricos son en Megamódulo C64x+ [21], EDMA3 [33], VPSS, VLYNQ, HPI, EMAC, y el PCI.

2.7 Subsistema de Procesamiento de Video (VPSS) 

(38)

llamada “Front End” (VPFE) por ejemplo sensores de imágenes CCD, decodificadores de video, etc., y una Interfaz de procesamiento de video de Salida llamada “Back End” para la visualización en dispositivos como pantallas analógicas, codificadores de video, etc.

En la Tabla 2 se muestra el mapa de asignación de memoria VPSS. Tabla 2 Descripción de Registros VPSS. [22]

Intervalo de Dirección HEX

Acrónimo Descripción

0x01C7 3400 PID Revisión periférica e información de clase.

0x01C7 3404 PCR Control de Registros SCPV.

0x01C7 3408 -- Reservado.

0x01C7 3508 SDR_REG_EXP SDRAM solicitud de lectura no se ejecuta en tiempo real.

0x01C7 350C - 0x01C7 3FFF

-- Reservado.

2.7.1 Procesamiento de Video Front‐End (VPFE) 

El Procesamiento de Video Front-End (VPFE) está compuesto por un Controlador CCD (CCDC), un Motor de Vista Previa, Redimensionador, Hardware Generador de Estadísticas 3A (H3A), y un bloque de Histograma. Todos estos módulos son ofrecidos por el DM6437.

• El CCDC proporciona la interfaz con los sensores de imagen y fuentes de video digital.

• El Motor de Vista Previa es un bloque de procesamiento de imágenes encargado de convertir el formato de Color RAW Bayer en un patrón YUV 4:2:2.

• El módulo Redimensionador se encarga de modificar la resolución de la imagen de entrada a la resolución requerida de video.

• El módulo H3A se encarga del control de Auto Enfoque (AF), Balance de Blanco Automático (AWB), y la Exposición Automática (AE).

• El módulo de Histograma contiene bins13 para el conteo de pixeles de color, que nos proporcionará las estadísticas necesarias para implementar diversos algoritmos 3A (AE/AF/AWB) y ajustar la imagen/video a la salida de video.

El mapa de memoria del Registro VPFE se puede consultar en el documento TMS320DM6437 Digital Media Processor [22].

13 Un bin es una subdivisión en la escala de intensidad de una imagen, por lo general se utilizan 256, si por ejemplo, se

(39)
[image:39.612.104.480.69.687.2]
(40)

2.7.2 Controlador de CCD (CCDC) 

El CCDC recibe el video/imagen (datos procedentes del sensor CMOS o CCD) o datos YUV de video. Las siguientes funciones son soportadas por el módulo CCDC.

• Formato convencional Bayer.

• Interfaz con sensores progresivos y entrelazados.

• REC656/CCIR-656 estándar (Formato YCbCr 4:2:2 ya sea de 8 ó 16 bits). • Formato YCbCr 4:2:2, ya sea de 8 o 16 bits con señales VSYNC.

• Control de disparo de señal.

• Compensación de niveles de negro. • Compresión de 10 bits a 8 bits.

• Filtro pasa bajos antes de escribir en SDRAM. Si este filtro está habilitado, 2 pixeles en cada borde (izquierdo y derecho) se recortan a la salida.

• Intervalo de salida de 16 bits a 8 bits (permite un ahorro del 50% de almacenamiento).

• Disminución de resolución a través de los patrones de eliminación selectiva programable.

• Salida de control a la DDR2 a través de una señal externa con un permiso de escritura.

• Hasta 16K pixeles (resolución de la imagen) tanto en la dirección horizontal y vertical.

2.7.3 Motor de Vista Previa 

El motor de vista previa se encarga de procesar la información de imagen/video sin procesar directamente del sensor (CMOS o CCD) en datos YCbCr 4:2:2. La salida de la vista previa es utilizada para realizar compresiones de video y para ser utilizada por pantallas con codificadores analógicos NTSC/PAL. Las siguientes características son soportadas por el motor de vista previa:

• Acepta formatos convencionales del Patrón de Bayer14 [34].

• Entrada de datos Imagen/Video, ya sea del Controlador CCD/CMOS o la memoria DDR2.

• Una salida hasta con un ancho de 1280 pixeles.

• Recorte automático/definido de pixeles/líneas de borde cuando se está procesando la imagen/video.

• Captura de cuadro oscuro a DDR2.

14El patrón de Bayer es un arreglo en donde los sensores tiene el acomodo rojo-verde-rojo… en una fila, y

(41)

• Sustracción de cuadros oscuros para la entrada de datos sin procesar.

• Compensación de sombreado. Cada pixel de entrada se multiplica por un valor de ganancia de 8 bits y el resultado es desplazado a la derecha por un parámetro programable (0-7 bits).

• Descompresión de datos lineales de 10 bits para transformarlos a datos no lineales de 8 bits, lo que permite un ahorro del 50% sobre la memoria DDR2.

• Filtro de Mediana Horizontal para reducir el nivel de ruido inducido en los pixeles. • Filtro de supresión ruido programable que opera en una vecindad de 3x3.

• Ganancia digital y balance de blancos.

• Interpolación programable CFA que opera en vecindades de 5x5. • Patrón de Bayer RGB y sensor de colores complementarios. • Corrección gamma programable.

• Conversión de color programable (RGB a YUV). • Mejora de luminancia y supresión de crominancia.

2.7.4 Redimensionador 

El módulo Redimensionador puede aceptar datos de Imagen/Video, ya sea del motor de vista previa o de la DDR2. Las siguientes funciones son compatibles con el módulo Redimensionador:

• Una salida con hasta 1280 pixeles horizontales. • Entrada de datos de la DDR2 externa.

• Ampliación hasta 4x (zoom digital). • Interpolación bicúbica.

• Interpolación bilineal opcional para los componentes de crominancia. • Reducción hasta por ¼ x.

• Factor de Redimensionamiento de las direcciones horizontal y vertical.

• Los índices disponibles para la Ampliación y Reducción son: 256/N, donde N toma valores desde 64 a 1024.

2.7.5 Hardware 3A (H3A) 

El módulo de Hardware 3A (H3A) proporciona los bucles15 de control para el auto enfoque, auto balance de blancos y la auto exposición. Existen dos componentes principales para el módulo H3A:

• Motor de Auto Enfoque (AF).

15 Un bucle o ciclo, es una sentencia que se realiza repetidas veces en un código determinado, hasta que se cumpla una

Figure

Figura 1.1. Pirámide de procesamiento de operaciones. [6]
Figura 1.2. Paralelismo en Nivel bajo (a) punto, (b) vecindad, y (c) global para operaciones de procesamiento de imagen y video
Figura 1.3. Diagrama de bloques de la familia TMS320DM64x.
Figura 1.4. Jerarquía de la memoria del procesador TMS320DM64x.
+7

Referencias

Documento similar

Where possible, the EU IG and more specifically the data fields and associated business rules present in Chapter 2 –Data elements for the electronic submission of information

The 'On-boarding of users to Substance, Product, Organisation and Referentials (SPOR) data services' document must be considered the reference guidance, as this document includes the

In medicinal products containing more than one manufactured item (e.g., contraceptive having different strengths and fixed dose combination as part of the same medicinal

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

This section provides guidance with examples on encoding medicinal product packaging information, together with the relationship between Pack Size, Package Item (container)

Package Item (Container) Type : Vial (100000073563) Quantity Operator: equal to (100000000049) Package Item (Container) Quantity : 1 Material : Glass type I (200000003204)

Y tendiendo ellos la vista vieron cuanto en el mundo había y dieron las gracias al Criador diciendo: Repetidas gracias os damos porque nos habéis criado hombres, nos