Issuu on Google+

Índice general

1. Introducción a los Sistemas de Control Activo de Ruido

5

1.1. Panorama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5

1.2. Propósito . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

1.3. Método . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

1.4. Sistemas pasivos de cancelación de Ruido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

1.5. El concepto de la Cancelación Activa de Ruido (ANC) . . . . . . . . . . . . . . . . . . . . . . . . .

7

1.6. Técnicas de Control para los sistemas ANC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7

1.7. Principios de acústica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8

1.7.1. Ecuación de onda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8

1.7.2. Principio de Superposición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

1.7.3. Control en la transmisión de ondas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

1.7.3.1.

Actuador secundario único . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

1.7.3.2.

Dos actuadores Secundarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12

2. Introducción a los algoritmos de Filtrado Adaptivo de Señales

14

2.1. Filtros Digitales en Sistemas ANC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14

2.1.1. La transformada Z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15

2.1.2. Mapeado del plano en el dominio de s hacia el dominio de z . . . . . . . . . . . . . . . . . .

17

2.1.3. Ecuaciones en diferencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17

2.2. Estructura de los Filtros Digitales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18

2.2.1. Filtros FIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18

2.2.2. Filtros IIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19

2.3. Filtros Óptimos en el dominio del Tiempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

20

2.3.1. Modelo de la Cancelación Eléctrica de Ruido . . . . . . . . . . . . . . . . . . . . . . . . . .

20

2.3.2. El Filtro de Wiener . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

22

1


ÍNDICE GENERAL

2

2.3.3. Sistemas de Predicción Lineal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

23

2.3.4. El algoritmo LMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

24

2.3.4.1.

Algoritmo de descenso más escarpado (Steepest Descent Algorithm) . . . . . . . .

24

2.3.4.2.

Análisis de convergencia del algoritmo LMS . . . . . . . . . . . . . . . . . . . . .

25

3. Cancelación Activa de Ruido empleando técnicas de Filtrado Adaptivo de Señales

29

3.1. Sistemas de Control alimentados hacia adelante (Feedforward Control) . . . . . . . . . . . . . . . . .

30

3.1.1. Control Óptimo de Ruido Aleatorio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

31

3.1.2. Optimización no limitada en el Dominio de la Frecuencia . . . . . . . . . . . . . . . . . . . .

32

3.1.3. Optimización en el Dominio de la Frecuencia limitada a ser Causal . . . . . . . . . . . . . .

34

3.1.4. Optimización en el Dominio del Tiempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

35

3.1.5. Algoritmo LMS con Referencia Filtrada (FXLMS) . . . . . . . . . . . . . . . . . . . . . . .

36

3.1.5.1.

Condiciones de estabilidad del algoritmo FXLMS . . . . . . . . . . . . . . . . . .

36

3.1.6. Algoritmo LMS con escape (Leaky LMS) . . . . . . . . . . . . . . . . . . . . . . . . . . . .

38

3.2. Identificación de la Planta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

39

3.2.1. Técnica de Eriksson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

40

3.2.2. Técnicas mejoradas para la Identificación de S(z) . . . . . . . . . . . . . . . . . . . . . . . .

43

3.2.2.1.

Métodos de Bao y Kuo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

43

3.2.2.2.

Método de Zhang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

44

4. Arquitectura del DSP TMS320C6713

46

4.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

46

4.2. Arquitectura TMS320C6x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

47

4.2.1. Unidades Funcionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

48

4.2.2. Paquetes de Petición y Ejecución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

48

4.2.3. Pipelining (entubado) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

49

4.2.4. Registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

50

4.2.5. Temporizadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

50

4.2.6. Modos de direccionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

50

4.2.6.1.

Direccionamiento Indirecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

50

4.2.6.2.

Direccionamiento Circular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

51

4.3. Conjunto de Instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

52

4.3.1. Formato de Código Ensamblador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

52


ÍNDICE GENERAL

3

4.4. Interrupciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

55

4.4.1. Registros de Control de Interrupción. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

55

4.5. Puertos Seriales Multicanal Bufereados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

56

4.6. Acceso Directo a Memoria (DMA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

57

4.7. Consideraciones de la Memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

57

4.7.1. Alineado de los datos (Data Alignment) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

58

4.7.2. Directivas Pragma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

58

4.8. Formatos numéricos de punto fijo y de punto flotante . . . . . . . . . . . . . . . . . . . . . . . . . .

59

4.8.1. Tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

59

4.8.2. Formato de Punto Fijo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

59

4.8.3. Formato de Punto Flotante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

62

5. Implementación de los Sistemas de Cancelación Activa de Ruido en el DSP TMS32OC6713

63

5.1. Implementación del Filtro Adaptivo como Identificador de Sistemas . . . . . . . . . . . . . . . . . .

63

5.2. Identificación de trayectoria acústica con técnicas de Filtrado Adaptivo . . . . . . . . . . . . . . . . .

68

5.3. Simulación algoritmo de Eriksson en el DSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

71

5.4. Implementación de los algoritmos de Kuo, Bao y Zhang . . . . . . . . . . . . . . . . . . . . . . . .

75

5.4.1. Algoritmos de Bao y Kuo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

75

5.4.2. Algoritmo de Zhang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

79


Resumen

En el presente trabajo se muestran simulaciones implementadas en el DSP TMS320C6713 de la familia C6000 de Texas Instruments para el análisis del funcionamiento en tiempo real de los algoritmos de Kuo, Bao y Zhang tanto para el propio control activo de ruido como para la identificación en línea de la trayectoria secundaria. En el primer capítulo del trabajo se brinda una breve descripción de los sistemas de control de ruido y de las ventajas que otorga en algunos casos el empleo en particular de las técnicas de control activo. El segundo capítulo comienza con una introducción a las técnicas empleadas para el procesamiento de señales seguida de una explicación de los métodos de optimización de los filtros para la reducción de la función de costo propuesta para el problema de la cancelación eléctrica de ruido, por último, describe el algoritmo LMS, las razones por las cuales es necesario su empleo en muchas aplicaciones en tiempo real y aporta un análisis detallado de los límites de estabilidad del algoritmo. El tercer capítulo define lo que se entiende por trayectoria secundaria, explica los inconvenientes que su presencia provoca en el control activo de ruido y como el algoritmo FxLMS propone una solución. Además se agrega una explicación de las ventajas y desventajas de los sistemas de identificación en línea describiendo el funcionamiento de los métodos de Kuo, Bao y Zhang. En el capítulo cuatro describo la arquitectura y técnicas de desarrollo del DSP TMS320C6713 así como de la tarjeta DSK (Development Starters Kit) empleada. Finalmente, en el capítulo cinco reporto los resultados de las simulaciones implementadas y la manera en que fueron realizadas.

Abstract The present work shows a set of simulations developed in the DSP TMS320C6713 a member of the Texas Instruments C6000 family, this simulations help to understand how the algorithms of Kuo, Bao and Zhang work in real-time for active noise control and also to determine their effectiveness on the online modeling of the secondary path response. The first chapter of this work briefly describes how noise control systems work and the advantages that the use of active noise control has in some applications. Second chapter begins with an introduction to digital signal processing techniques followed by a demonstration of how optimal filters work in the reduction of a cost function selected for the electrical noise control problem, and finishes with an overlook description of the LMS algorithm, the reasons why it is employed in so many real-time applications and its stability limits. Third chapter works on the understanding of the secondary path concept, the drawbacks that its presence imply in the active noise control problem and how the FxLMS algorithm plays a main role on the solution of this problems, it also contains an explanation of the advantages and disadvantages of the online identification systems employed in particular Kuo, Bao and Zhang’s methods. Chapter four describes the computer architecture and development techniques of the TMS320C6713 in particular of the DSK employed in this work. Finally, chapter five reports the results of the simulations and the way they were analized.

4


1 Introducción a los Sistemas de Control Activo de Ruido

1.1.

Panorama

Cualquier tipo de sonido que cause interferencia a la audición normal puede ser considerado ruido. El ruido puede ser molesto e irritante, pero en ocasiones también puede no ser tan notable y aún así conservar algunos de sus efectos negativos. El ruido puede inhibir nuestra habilidad de concentrarnos o de pensar e incluso puede llegar a causar importantes problemas de salud. En la actualidad nos encontramos muy expuestos a los ambientes ruidosos, debido al aumento en la cantidad de equipos industriales tales como motores, ventiladores, extractores y transformadores. Las técnicas pasivas de cancelación de ruido son las más desarrolladas en la actualidad, debido a que plantean una solución sencilla para muchos de los problemas más frecuentes. Su uso se fundamenta en técnicas tan simples como el aislamiento de las vibraciones, la utilización de recintos cerrados, barreras acústicas y materiales absorbentes del ruido. A pesar de la sencillez y la efectividad de los sistemas de control pasivo de ruido, éstos sistemas suelen ser en ocasiones muy costosos y poco adecuados en algunos casos. Los métodos tradicionales de control pasivo de ruido son únicamente posibles para las altas frecuencias. Esto se debe a que la baja frecuencia tiene longitudes de onda muy grandes en comparación a los típicos absorvedores acústicos. Como un complemento al control pasivo de ruido, se puede emplear el control activo (Active Noise Control, ANC) para reducir el ruido de baja frecuencia. La idea detrás del ANC es usar ondas de interferencia destructiva para cancelar los ruidos molestos. La teoría del ANC ha sido conocida por mucho tiempo pero se volvió posible con el desarrollo de los veloces procesadores digitales de señales (DSP’s) que permiten realizar aplicaciones reales.

5


1.2. PROPÓSITO

1.2.

6

Propósito

El propósito de ésta tesis es desarrollar un sistema de cancelación activa de ruido alcanzando la reducción de un ruido a nivel experimental, empleando un sistema de ANC tipo Feedforward en un DSP TMS320C6713.

1.3.

Método

Para poder alcanzar el objetivo el proyecto fue dividido en las siguientes partes: Estudios en la literatura: Se realizó una revisión de diferentes artículos publicados en una variedad de revistas del área, con el propósito de encontrar técnicas que permitieran alcanzar el objetivo de la forma más sencilla y robusta. De la misma forma se planteó revisar los resultados obtenidos con diferentes métodos a analizar. Investigación sobre el funcionamiento del DSP: Esta parte del proyecto es de gran relevancia ya que para poder completar el objetivo fue necesario dominar las herramientas de trabajo sobre las cuales se iba a realizar la programación. Para ello, se realizó una amplia investigación sobre la arquitectura del DSP, las técnicas de programación y optimización del código así como sobre el uso de los periféricos de la tarjeta de desarrollo empleada (DSK). Implementación: Una vez que se tienen seleccionadas las técnicas de filtrado adaptivo a emplear y que se conoce la metodología para programarlas en el DSP se procedió a la parte de la implementación. En la cual se buscó contar con los conocimientos y materiales en el área de la acústica que permitieran alcanzar el objetivo planteado.

1.4.

Sistemas pasivos de cancelación de Ruido

Las técnicas pasivas de cancelación de ruido son las más familiares para los seres humanos, un ejemplo común y natural de éste tipo tipo de técnicas ocurre cuando nos tapamos los oídos con las manos para evitar escuchar algo. La técnica consiste principalmente en tapar los oídos con algún material aislante que no transporte el sonido o bien, que lo amortigüe. El fundamento del uso de los materiales absorbentes es que cuando son alcanzados por las vibraciones sonoras provenientes del aire, sus moléculas no se mueven en la misma proporción que las del aire. Éstos materiales absorbentes actúan como un filtro paso bajas, lo que significa que las frecuencias altas son bloqueadas muy eficazmente, pero las frecuencias bajas no son afectadas de la manera deseada. Las técnicas pasivas necesitan barreras acústicas que eviten el paso de la energía sonora al sitio que deseamos aislar del ruido. Cuando una onda de presión acústica se encuentra con una de éstas barreras podemos observar distintos fenómenos que ocurren en el cambio de medio, éstos fenómenos principalmente son la reflexión y la transmisión de las ondas sonoras. Para modelar éstos fenómenos tenemos que considerar la impedancia acústica característica de los medios, la velocidad de propagación de las ondas en éstos y el ángulo con respecto a la normal con el que incide la onda sonora.


1.5. EL CONCEPTO DE LA CANCELACIÓN ACTIVA DE RUIDO (ANC)

1.5.

7

El concepto de la Cancelación Activa de Ruido (ANC)

La cancelación activa de ruido (ANC) esta fundamentada en la cancelación del ruido primario (ruido molesto que se desea eliminar) mediante la generación de un anti-ruido de igual amplitud y fase opuesta. Cuando se combinan el ruido primario con el anti-ruido se tiene como resultado la cancelación de ambos. Para la generación del anti-ruido se tienen dos configuraciones básicas en los sistemas de control del ANC. Los sistemas denominados feedforward y los sistemas de feedback. En los sistemas de control del ANC de tipo feedforward se emplean dos sensores, el primer sensor es empleado para obtener una señal de referencia y el segundo sensor se emplea para la actualización de los coeficientes del filtro adaptivo, ya que se encarga de medir el ruido residual de la superposición el ruido primario con el anti-ruido. Por otra parte los sistemas de control del ANC de tipo feedback emplean únicamente un sensor, llamado sensor de error. Éste sensor es empleado para crear una señal de referencia y para actualizar al filtro adaptivo. Los sistemas ANC involucran necesariamente sistemas electroacústicos o electromecánicos para cancelar el ruido primario tomando como base el principio de la superposición. Los sistemas ANC actúan de manera eficiente en el rango de frecuencias bajas, donde los métodos pasivos son poco efectivos y tienden a ser estorbosos y costosos. Los métodos ANC se han vuelto muy populares ya que ofrecen beneficios de tamaño, peso, volumen y costos. La primera propuesta del empleo de éstos métodos fue realizada en 1936 por Lueg. Debido a que las características acústicas de las fuentes de ruido y del ambiente en general son variantes con el tiempo, las características del sonido como son su contenido frecuencial, la amplitud, fase y velocidad no son estacionarias. Para poder lidiar con éstas características del ruido primario, el sistema de cancelación activa de ruido debe ser adaptable, por lo que en los sistemas actuales se emplean filtros digitales adaptivos que ajustan sus coeficientes para minimizar la señal de error y que pueden ser realizados tanto con filtros de respuesta finita al impulso (filtros FIR) como por filtros de respuesta infinita al impulso (IIR), además de otras estructuras como los son los filtros de enrejado (lattice) y técnicas de transformación del dominio. De todas las posibilidades mencionadas la más empleada es la del filtro transversal de tipo FIR que emplea un algoritmo de mínimos cuadrados (LMS) para actualizar sus coeficientes.

1.6.

Técnicas de Control para los sistemas ANC

De acuerdo al tipo de ruido a procesar podemos emplear dos técnicas principalmente:

Sistemas de control a priori En ésta técnica conocida como feedforward, el sistema de control recibe al menos una señal de referencia, la cual deberá de ser procesada para generar la señal de control. Se le puede emplear tanto para sistemas de cancelación con espectro de banda angosta como de banda ancha. Lo importante es que la señal de referencia contenga información sobre la señal a cancelar (que se encuentren correlacionadas), de tal forma que se pueda generar la señal de control (señal de anti-ruido) adecuada. En la figura 1.1 se observa la estructura del sistema de control feedforward en la que se puede observar como se obtiene la señal de referencia x(n) mediante el uso de un sensor para el ruido primario. La señal de referencia x(n) será procesada en el sistema adaptivo para generar la señal de control y(n) que será enviada al actuador para generar el anti-ruido.Finalmente otro sensor se encarga de obtener el ruido residual (señal de error, e(n)), que será empleado para


1.7. PRINCIPIOS DE ACÚSTICA

8

Figura 1.1: Sistema de Control Feedforward ajustar los coeficientes del sistema adaptivo con el objetivo de reducir la señal de error. Funcionando de la manera descrita, el sistema adaptivo modela la función de transferencia de la trayectoria primaria, P(z) (trayectoria que recorre el ruido desde el punto de referencia, hasta el sitio de cancelación), por lo que a éste tipo de configuraciones también se les llama de tipo identificador. Un problema muy frecuente con éstos sistemas es la realimentación que existe entre la fuente de ruido secundaria (actuador) y el sensor de ruido primario, que empobrece el desempeño y puede provocar que el sistema se vuelva inestable. Para resolver este problema, en algunos casos es posible aislar al sensor de ruido primario del actuador, sin embargo esto no siempre es posible, por lo que en estos casos se sugiere emplear otro tipo de sensor que no se vea afectado por la señal de anti-ruido cuando se obtiene la señal de referencia. Lo anterior es muy factible en sistemas en los que el ruido primario es periódico, ya que mediante el uso de sensores ópticos o tacó-metros en los rotores se puede sintetizar la señal de referencia libre de la contaminación del anti-ruido.

Sistemas de control alimentados a posteriori: A estos sistemas de control también se les conoce como feedback, dichos sistemas no tienen una señal de referencia como entrada, ya que la generan empleando un estimador lineal. Una vez que se ha estimado la señal de referencia se trabaja de la misma forma que en los sistemas alimentados a priori, procesando dicha señal para obtener la señal de control. Empleando el sensor de error se obtiene el ruido residual de la señal de ruido primario con la señal de control saliente del actuador, a dicha señal de ruido residual se le conoce como señal de error, e(n). Para estos sistemas de control la señal de error e(n), no sólo es empleada en la actualización de los coeficientes del filtro adaptivo, también es empleada para estimar la señal de referencia x(n). Estos sistemas en realidad lo que hacen es predecir la próxima muestra de la señal de referencia x(n), empleando la porción de ésta señal presente en la señal de error e(n) por lo que a estos sistemas se también se les conoce como productores. Para que una señal pueda ser predecible conociendo muestras pasadas, necesariamente tiene que ser periódica, por lo que estos sistemas funcionan para señales de este tipo.

1.7.

Principios de acústica

1.7.1.

Ecuación de onda

Lo que distingue a los problemas del control acústico de sonidos y vibraciones de otros problemas convencionales de la teoría de control es que las perturbaciones se propagan como ondas de un sistema físico a otro. Las ondas sonoras


1.7. PRINCIPIOS DE ACÚSTICA

9

Figura 1.2: Sistema de Control Feedback que se propagan únicamente en la dirección x, obedecen la ecuación de onda unidimensional. En donde p(x,t)denota la presión acústica instantánea en la posición x en el tiempo t, y c0 es la velocidad del sonido (de aproximadamente 34m/s) para el aire a temperatura y presión normales. La presión acústica es considerada pequeña en comparación con la presión atmosférica para asegurar la ecuación de linealidad, y esta condición es satisfecha para los niveles de ruido normalmente encontrados en la p´ractica, que tienen una presión del orden de 1[Pa] en relación con los niveles típicos de presión atmosférica de 105 [Pa]. La ecuación de onda unidimensional es satisfecha por una onda acústica de presión de forma arbitraria, pero cuya dependencia en el espacio tome la siguiente forma p(x,t) = p(t ± x/c0 )

(1.1)

en donde (t + x/c0 )representa una onda viajando en la dirección negativa de x y (t − x/c0 )representa a la onda viajando en la dirección positiva de x. Una onda tal, se propaga sin cambios en la amplitud o forma de onda en un medio infinito homogéneo en el que se asume no hay otras fuentes acústicas y no hay disipación. Todas las componentes frecuenciales de p(x,t) entonces se propagan con la misma velocidad y no sujeto de dispersión. Un ejemplo de una onda avanzando en sentido positivo que obedece la ecuación de onda es una señal de presión tonal, que puede ser representada en términos de la cantidad compleja A, como h i h i p(x,t) = Re Ae jω(t−x/c0 ) = Re Ae j(ωt−kx)

(1.2)

en donde la función Re[]denota la parte real de la expresión en el interior, ωes la frecuencia angular y k = ω/c0 es el número de onda acústico. Es importante notar que la ecuación de onda también es satisfecha por la parte imaginaria de Ae j(ωt−kx) e incluso por la expresión compleja entera. Expresándola de la siguiente forma: p(x,t) = Ae j(ωt−kx) = p(x)e jωt al substituirla en la ecuación diferencial de onda obtenemos:   2 d p(x) ω 2 + p(x) e jωt = 0 dx2 c0 2

(1.3)

(1.4)

A la ecuación 1.4 se le conoce como la ecuación unidimensional de Helmholtz, que así como es satisfecha por la presión


1.7. PRINCIPIOS DE ACÚSTICA

10

acústica de una onda viajando en sentido positivo, también es satisfecha para una presión compleja que corresponda a una onda acústica que viaja en sentido negativo con amplitud B. p(x) = Be+ jkx

(1.5)

Si el análisis toma en cuenta la propagación en el espacio tridimensional, una onda tridimensional puede ser expresada como: ψ(r,t) = Ae j(k·r−ωt)

(1.6)

k · r = kx x + ky y + kz z

(1.7)

con velocidad angular ω, tiempo t y

donde (kx , ky , kz )son las componentes de la dirección de propagación y (x, y, z) son las componentes del punto en el espacio en donde el desplazamiento ψ es evaluado. La ecuación de onda armónica satisface la siguiente ecuación diferencial de onda: ∇2 ψ −

1 δ 2ψ =0 c20 δt 2

(1.8)

en donde el operador Laplaciano esta definido como ∇2 =

δ2 δ2 δ2 + + δ x2 δ y2 δ z2

(1.9)

y c0 es la velocidad de propagación de la onda en el aire.

1.7.2.

Principio de Superposición

El principio de superposición es el fundamento principal de los sistemas ANC, dicho principio establece que una combinación lineal de las soluciones es también una solución al sistema lineal. Aplicando esta idea en la ecuación de onda observada anteriormente tenemos que a partir de ψ1 y ψ2 que son soluciones a la ecuación diferencial de onda, entonces ψ = aψ1 + bψ2

(1.10)

que es producto de una combinación lineal de estas soluciones también es solución a la ecuación diferencial de onda (dado que a y b sean constantes). Tomemos un ejemplo trivial, si p1 (x) = Ae− jkx (onda viajando en sentido positivo) y p2 (x) = −Ae− jkx (otra onda viajando en sentido positivo pero con 180° fuera de fase), entonces la respuesta neta del sistema para estas dos perturbaciones sería presión acústica cero en todos los momentos y en todos los puntos del espacio. Una de las primeras sugerencias para el control activo se propuso para la cancelación de una onda acústica unidimensional y fue contenida en una patente de Paul Lueg en 1936. Sin embargo las ecuaciones que modelan las variaciones de presión no siempre son lineales. Cuando el sonido es generado por un flujo, por ejemplo, las ecuaciones no lineales que definen la dinámica de fluidos deben ser empleadas para describir la generación del sonido. En cuyo caso el control activo mediante la sola superposición no sería posible, aunque hay sistemas ANC que son empleados para actuar desde las causas de generación del sonido y han logrado éxito.


1.7. PRINCIPIOS DE ACÚSTICA

1.7.3.

11

Control en la transmisión de ondas

En esta sección consideraremos los fenómenos que ocurrirían para ondas unidimensionales que se propagan en un ducto de longitud infinita, con grosor uniforme y paredes rígidas. Para una excitación suficientemente baja únicamente ondas planas de sonido pueden propagarse en tal ducto. Siendo tal el caso, las ondas tienen una presión uniforme a lo largo de cualquier sección del ducto y obedecen la ecuación de onda unidimensional.

1.7.3.1.

Actuador secundario único

Consideremos una onda tonal de sonido que se encuentra viajando a lo largo de la dirección positiva de x a lo largo del ducto, dicha onda es controlada por una fuente acústica secundaria tal como podría ser una bocina montada en la pared del ducto. La presión compleja de la onda primaria incidente sería: p p+ (x) = Ae− jkx , paratoda x

(1.11)

La bocina produciría ondas acústicas que viajaran tanto en la dirección positiva de x, como en la negativa. Las presiones complejas de estas ondas serían: pS+ (x) = Be− jkx , ps− (x) = Be+ jkx

(1.12)

asumiendo que la fuente secundaria ha sido posicionada en x = 0, y que B es una amplitud compleja, que es linealmente dependiente de la señal eléctrica de entrada a la fuente secundaria. Si la señal eléctrica es ajustada en amplitud y fase, de tal manera que B = −A, entonces la presión para la parte positiva del eje x sería: p p+ (x) + ps+ (x) = 0

(1.13)

Con lo anterior se sugiere que una manera práctica de adaptar la señal de control es monitorear la presión tonal en cualquier punto a partir de la fuente secundaria y ajustar la amplitud y fase de ésta, hasta que la presión sea cero. Ahora observemos lo que ocurre a la izquierda de la fuente secundaria: p p+ (x) + ps− (x) = Ae− jkx + Be+ jkx , x < 0

(1.14)

Tomando en cuenta que la fuente secundaria fue ajustada para cancelar la presión del otro lado, entonces B = −A y la presión en este lado queda como: p p+ (x) + ps− (x) = −2 jAsin(kx), x < 0

(1.15)

dado que e jkl − e− jkl = 2 jsin(kl). Analizando la ecuación anterior, encontramos que se ha generado una onda estacionaria mediante la interferencia de estas ondas. Notemos que esta onda estacionaria tiene nodos de presión en x = 0, x = −λ /2, x = −λ ,etc. En donde λ es la longitud de onda acústica, pero tenemos puntos en donde la amplitud de la presión es el doble de la onda incidente x = −λ /4,x = −3λ /4,etc. Teniendo ya este análisis encontramos que la fuente secundaria crea una frontera de liberación de la presión y refleja de manera efectiva la onda incidente de regreso por el ducto con igual amplitud y fase opuesta, con lo que se crea la onda estacionaria observada.


1.7. PRINCIPIOS DE ACÚSTICA

1.7.3.2.

12

Dos actuadores Secundarios

También es posible emplear sistemas ANC para absorber en su totalidad la onda primaria incidente, en lugar de reflejarla de vuelta. Tal estrategia requiere de dos fuentes secundarias. Para ello contamos con dos bocinas posicionadas en x = 0 y x = l, las cuales pueden generar de manera individual presiones complejas en dirección positiva y negativa al flujo. ps1+ (x) = Be− jkx , para x > 0, ps1− = Be+ jkx , para x < 0

(1.16)

ps2+ (x) = Ce− jk(x−l) , para x > l, ps2− = Ce+ jk(x−l) , para x < l

(1.17)

y

Las fuentes secundarias pueden ser manejadas para que sólo afecten a la onda del flujo que avanza en sentido positivo a lo largo del ducto a partir de donde se encuentran éstas, de tal manera que ps1− (x) + ps2− (x) = 0, x < 0

(1.18)

para esto se requiere que la señal de control de entrada a la primera fuente u1 se ajustada en relación a u2 , de tal forma que B = −Ce− jkl

(1.19)

de tal manera que la bocina posicionada en x = 0 produce una versión invertida y retardada de la producida en la bocina localizada en x = l, y las dos bocinas actúan como una fuente secundaria conformada por este arreglo. Por otra parte la presión total a partir de x > l esta dada por p p+ (x) + ps1+ (x) + ps2+ (x) = (A +C(e jkl − e− jkl ))

(1.20)

El arreglo de bocinas puede ser ajustado para cancelar la onda primaria incidente dado que la señal que controla la segunda fuente secundaria sea ajustada para asegurar que C=

−A 2 jsin(kl)

(1.21)

Debe notarse que para algunas frecuencias, C deberá ser mucho mayor que A y que las fuentes secundarias tendrán un gran esfuerzo cuando sin(kl) ≈ 0, lo cual ocurre cuando l  λ ,l ≈ λ /2,etc. Debido a esto es importante considerar el rango de frecuencias en las que las fuentes secundarias pueden operar. Analizando la distribución de presiones empleando este esquema, encontramos que la amplitud de la presión en la parte anterior a la primera fuente queda ahora sin verse afectada por la cancelación de la onda incidente en la parte posterior al arreglo. Con lo que notamos que la función del arreglo es absorber el poder acústico de la onda incidente.

Conclusiones Las técnicas de control de ruido reducen la percepción de las emisiones sonoras, generan una sensación de comfort y son necesarias para mejorar las condiciones ambientales dando cumplimiento a la reglamentación referente a los límites aceptables de contaminación acústica. Los métodos de control de ruido son clasificados en pasivos y activos, para el control en bajas frecuencias, son los métodos activos los que ofrecen una solución más adecuada y económica.


1.7. PRINCIPIOS DE ACÚSTICA

13

De acuerdo a las carácterísticas espectrales del ruido a cancelar, es necesario determinar si es necesario utlizar un sistema prealimentado (en el caso de ruidos con contenido espectral de banda ancha) o si con un sistema alimentado a posteriori es suficiente (para ruidos con escaso contenido frecuencial, por ejemplo señales tonales). En todo sistema de control de ruido es necesario además de proponer el sistema de filtrado adaptivo a utilizar, también tomar en cuenta los efectos espaciales de la propagación de las ondas acústicas. De esta manera, poder determinar los puntos óptimos de la localización de los sensores de referencia y error, así como de las fuentes empleadas para propagar en el espacio la señal de control.


2 Introducción a los algoritmos de Filtrado Adaptivo de Señales

2.1.

Filtros Digitales en Sistemas ANC

En este capítulo se explican con la brevedad necesaria algunas de las propiedades importantes de los Filtros Digitales, en especial de los Adaptivos. Los Filtros Digitales operan con datos muestreados y cuantizados, por lo que se deben tomar las consideraciones necesarias de las implicaciones que tiene trabajar de esta forma. La primera diferencia en comparación con los sistemas acústicos comentados en el capítulo anterior se encuentra con la variable en el tiempo, ya que en los sistemas físicos reales la variable t es continua mientras que los sistemas digitales emplean tiempos de muestreo iguales a T , de tal manera que la frecuencia de muestreo es 1/T . Las señales en tiempo continuo son muestreadas cada t = nT , en donde la variable n sólo puede tomar valores enteros. Siendo estrictos la señal x(t) al ser muestreada debería ser denotada como x(nT ), pero por razones de simplicidad en la notación la literatura del área siempre se refiere a ella como x(n). Otro asunto de importancia es considerar que en los sistemas ANC se plantea controlar un sistema físico en tiempo continuo con otro sistema con datos muestreados. En este capítulo se incluye un desarrollo de algunas de las técnicas de filtrado adaptivo y su aplicación en los sistemas ANC partiendo primero de una breve introducción a los Filtros Digitales de Respuesta Finita al Impulso (FIR), de Respuesta Infinita al Impulso (IIR) y a la transformada Z.

14


2.1. FILTROS DIGITALES EN SISTEMAS ANC

2.1.1.

15

La transformada Z

La transformada z es utilizada para el análisis de señales en tiempo discreto de manera similar al uso de la transformada de Laplace para señales continuas en el tiempo. De manera análoga a como se emplea la transformada de Laplace para resolver ecuaciones diferenciales que representen un Filtro Analógico, la transformada z puede ser empleada para resolver una ecuación en diferencias que represente un Filtro Digital. Consideremos una señal analógica x(t) idealmente muestreada ∞

xs (t) =

∑ x(t)δ (t − kT )

(2.1)

k=0

donde δ (t − kT ) es la función impulso retardada por kT y T = 1/Fs es el periodo de muestreo. La función xs (t) es cero en cualquier instante excepto en t = kT . Aplicando la transformada de Laplace a xs (t) tenemos ˆ∞ Xs (s) =

xs (t)e−st dt

(2.2)

{x(t)δ (t) + x(t)δ (t − T ) + · · ·} e−st dt

(2.3)

0

ˆ∞ = 0

dado que para una función impulso

ˆ∞ f (t)δ (t − kT ) = f (kT )

(2.4)

0

entonces Xs (s) queda como Xs (s) = x(0) + x(T )e−s2T + x(2T )e−s3T + · · · =

∑ x(nT )e−nsT

(2.5)

n=0

Definamos ahora z = esT , entonces ∞

X(z) =

∑ x(n)z−n

(2.6)

n=0

que es la ecuación que define la transformada z unilateral, notese la simplificación en la notación de x(nT ) hacia x(n). La transformada z convierte una señal en tiempo discreto, que es una secuencia de valores reales, en una representación compleja en el dominio de la frecuencia. La transformada z bilateral de una secuencia x(n) se define como ∞

X(z) =

x(n)z−n

(2.7)

n=−∞

donde z es una variable compleja. La transformada z de una secuencia retardada toma una forma particularmente simple. Si la transformada z de x(n) se muestra en la parte superior, entonces la transformada z de esta secuencia retardada por una muestra es ∞

n=−∞

donde m = n − 1.

x(n − 1)z−n =

m=−∞

x(m)z−(m+1) = z−1 X(z)

(2.8)


2.1. FILTROS DIGITALES EN SISTEMAS ANC

16

La transformada z de una secuencia puede ser representada por la relación de dos polinomios en el dominio de z. X(z) =

N(z) D(z)

Los polos de X(z) son las raíces del denominador (los valores de z que aseguran que D(z) = 0 y de tal forma X(z) sea infinito). Los ceros de X(z) son las raíces del numerador (los valores de z que aseguran que N(z) = 0 y de tal forma X(z) sea cero). La región de convergencia de la transformada z es el rango de valores en el cual la serie converge. Para una serie de lado derecho x(n) = 0 para n < n1 , X(z) converge para todas las z exteriores al círculo cuyo radio sea igual al del polo de X(z) más lejano del origen. Si la serie es del lado izquierdo x(n) = 0 para n > n2 , X(z) converge para todas los valores de z interiores al círculo cuyo radio sea igual al del polo de X(z) más cercano al origen. La transformada z inversa permite calcular la secuencia x(n) a partir del polinomio X(z). En este proceso debe de tenerse el cuidado necesario necesario para asegurar la obtención de una secuencia con significado físico, dado que se obtienen diferentes secuencias para cada región de convergencia asumida. Una secuencia se dice que es estable si es absolutamente sumable, es decir ∞

|x(n)| < ∞

(2.9)

n=−∞

En general no es posible determinar tanto la estabilidad como la causalidad (x(n) = 0 para n < 0) de una secuencia desde su transformada z, por lo que la transformada z no puede ser asociada a una secuencia única. Se puede asegurar que una secuencia es estable si decae hacia cero en los sentidos negativo y positivo del tiempo, si puede ser reconstruida de forma única desde su transformada z con sus componentes causales asociadas a los polos que se encuentran dentro del círculo unitario y sus componentes no causales con los polos fuera del círculo unitario. El valor inicial de una secuencia causal se puede obtener considerando cada uno de los términos de la transformada z cuando z → ∞, lo cual se encuentra dentro de la región de convergencia para tal secuencia, en donde podemos observar que limz→∞ X(z) = x(0)

(2.10)

a lo cual se le conoce como el teorema del valor inicial. Para que una secuencia tenga un valor inicial finito, y por lo tanto sea estable debe de tener al menos el mismo número de polos como de ceros. La transformada de Fourier de la secuencia x(n) puede ser considerada un caso especial de la transformada z cuando z = e jωT , donde ωT es la frecuencia angular normalizada. La transformada de Fourier de x(n) esta dada por X(e jωT ) =

x(n)e− jωnT

(2.11)

n=−∞

y la transformada inversa de Fourier para señales discretas es: 1 x(n) = 2π

ˆπ X(e jωT )e jωnT dωT −π

(2.12)


2.1. FILTROS DIGITALES EN SISTEMAS ANC

2.1.2.

17

Mapeado del plano en el dominio de s hacia el dominio de z

La transformada de Laplace puede ser utilizada para determinar la estabilidad de un sistema. Si los polos de un sistema se encuentran en el lado izquierdo del eje jω en el plano de s, contaremos con una respuesta decreciente en el tiempo, por lo que tenemos un sistema estable. Si los polos se encuentran en el lado derecho del eje jω, la respuesta será creciente en el tiempo haciendo que el sistema sea inestable. Los polos localizados sobre el eje jω son polos puramente imaginarios (no tienen componente real) y otorgarán una respuesta sinusoidal. La frecuencia de la sinusoidal generada es representada por el valor en el eje jω. De manera similar en el dominio de z podemos determinar la estabilidad de un sistema basándonos en la localización de sus polos en el plano z asociado a dicha transformada. La relación entre el plano de s y el de z se encuentra con las siguientes ecuaciones z = esT s = σ + jω por lo que z = eσ T e jωT de la ecuación anterior, la magnitud de z es |z| = eσ T con fase θ = ωT = 2π f /Fs . Haciendo el mapeo de las regiones del plano en el dominio de s hacia el plano en el dominio de z, observamos que la región a la izquierda del eje jω (cuando σ < 0) mapea una magnitud de |z| < 1, dado que eσ T < 1. Mientras σ varia desde −∞ hasta 0, |z| cambia desde 0 hasta 1. Por lo tanto los polos que se encuentran fuera del círculo unitario en el plano z crearán un sistema inestable. Por otra parte los polos localizados en el eje jω en el plano de s representan a un sistema marginalmente estable, haciendo el mapeo obtenemos una magnitud de |z| = 1, por lo que los polos localizados sobre la circunferencia de radio uno en el plano de z generarán una sinusoidal.

2.1.3.

Ecuaciones en diferencias

De manera similar a los Filtros Analógicos que son representados por ecuaciones diferenciales, los Filtros Digitales son representados por ecuaciones en diferencias. Para resolver una ecuación en diferencias debemos encontrar la transformada z de expresiones tales como x(n − k), que corresponde a la derivada de orden k de la señal analógica x(t), es decir d k x(t)/dt k . El orden de la ecuación en diferencias esta determinado por el valor más grande de k. Si tenemos que la transformada z de la señal x(n), es X(z) definida por ∞

X(z) =

∑ x(n)z−n = x(0) + x(1)z−1 + x(2)z−2 + · · ·

(2.13)

n=0

entonces la transformada z de la señal x(n − 1), que corresponde a la derivada de primer orden dx/dt es ∞

ZT [x(n − 1)] =

∑ x(n − 1)z−n

n=0

= x(−1) + x(0)z−1 + x(1)z−2 + x(2)z−3 + · · ·   = x(−1) + z−1 x(0) + x(1)z−1 + x(2)z−2 + · · · = x(−1) + z−1 X(z)

(2.14)


2.2. ESTRUCTURA DE LOS FILTROS DIGITALES

18

en donde x(−1) representa la condición inicial asociada con la ecuación en diferencia de primer orden. Podemos expresar la propiedad anterior con mayor generalidad de la siguiente forma ZT [x(n − k)] = z−k X(z) asumiendo que todas las condiciones iniciales son cero, x(−m) = 0 para m = 1, 2, · · · , k.

2.2.

Estructura de los Filtros Digitales

Si un sistema digital es causal, cada muestra de la secuencia de salida y(n), se verá únicamente afectada por el valor actual y valores pasados de la secuencia de entrada, x(n), x(n − 1),etc. Este comportamiento puede ser representado como y(n) = H [x(n), x(n − 1), · · ·] donde H es una función que en general, puede no ser lineal. Si el sistema digital es lineal, éste debe obedecer el principio de superposición, y por tanto la función H debe tomar la forma de una sumatoria lineal, por tanto en el caso general de un sistema lineal y causal, donde la señal de salida sea afectada por todas las señales de entrada previas, se puede expresar la salida como: ∞

y(n) = ∑ hi x(n − i)

(2.15)

i=0

que describe la convolución discreta en el tiempo de la señal x(n) con la secuencia hi . Los parámetros hi forman las muestras de la respuesta al impulso del sistema (la salida del sistema si la entrada a él fuera la función delta de Kronecker, x(n) = δ (n)), que es igual a 1si n = 0 y cero en cualquier otro instante, entonces ∞

y(n) = ∑ hi δ (n − i) = hn

(2.16)

i=0

para n = 0 hasta ∞. Se entiende por un sistema estable, cuando para una entrada acotada se tiene una salida acotada. La condición necesaria y suficiente para alcanzar dicha estabilidad es que la respuesta al impulso sea absolutamente sumable.

2.2.1.

Filtros FIR

Los filtros digitales reales tienen un tiempo finito para calcular cada muestra de salida, por lo que la ecuación que define a los filtros digitales debe ser truncada para obtener una de la forma I−1

y(n) =

∑ wi x(n − i)

(2.17)

i=0

en donde wi son los coeficientes, o pesos del filtro digital. De la expresión anterior encontramos que se tienenI de estos coeficientes y que la señal de salida y(n) depende de la entrada x(n). Otro factor a considerar es que el filtro digital no actúa de forma instantánea en el cálculo de la señal de salida, en lo referente a este aspecto es común considerar un retardo de una muestra en el filtro digital para permitir el procesamiento. Por lo que la ecuación en realidad queda


2.2. ESTRUCTURA DE LOS FILTROS DIGITALES

como

19

I

y(n) = ∑ wi x(n − i)

(2.18)

i=1

La respuesta del filtro digital descrito por la ecuación 2.17 a una función impulso, δ (n) será una secuencia de longitud finita y(n) = wn para n = 0 hasta I − 1, por lo que se les llama Filtros de Respuesta Finita al Impulso (Finite Impulse Response, FIR). A dichos filtros también se les conoce como moving average (MA), filtros transversales, o no recursivos (aunque se han podido implementar de forma recursiva). También podemos observar de la ecuación 2.17 que la salida de un Filtro FIR es la suma ponderada de una cierta cantidad de valores de entrada previos. La función de transferencia que relaciona la transformada z de la secuencia de salida con la transformada z de la secuencia de entrada puede ser escrita como W (z) = w0 + w1 z−1 + w2 z−2 + · · · + wI−1 z−I+1

(2.19)

de tal forma que la transformada z de la secuencia de salida puede ser escrita como Y (z) = W (z)X(z)

(2.20)

Los I − 1 ceros de la función de transferencia se obtienen como las raíces de este polinomio en el dominio de z, y los polos se obtienen como las raíces de zI−1 = 0. Por lo que un filtro FIR causal tiene I − 1 polos en z = 0. Los filtros FIR tienen la propiedad de que siempre son estables cuando sus coeficientes se encuentran acotados y que pequeños cambios en el valor de sus coeficientes generan pequeños cambios en su respuesta.

2.2.2.

Filtros IIR

En ocasiones los filtros FIR a pesar de su sencillez no son lo más apropiado debido a que requieren una gran cantidad de coeficientes para alcanzar sistemas resonantes con oscilaciones pequeñas, debido a que requieren una gran cantidad de coeficientes. Para obtener una representación de estos sistemas de una manera más eficiente se puede transformar la ecuación diferencial en tiempo continuo que define al sistema en una ecuación en diferencias, la cual tiene la forma general lineal de J

y(n) =

I−1

∑ a j y(n − j) + ∑ bi x(n − i)

j=1

(2.21)

i=0

existiendo J coeficientes de realimentación a j e I coeficientes de alimentación hacia adelante bi . La respuesta al impulso de estos sistemas tomaría un tiempo infinito en decaer y por lo tanto a estos sistemas se les llama de respuesta infinita al impulso, o de la forma IIR. También en ocasiones se les llama filtros de polos y ceros, recursivos o simplemente autoregressive, moving average (ARMA). Su transformada z puede ser descrita como A(z)Y (z) = B(z)X(z) en donde A(z) = 1 − a1 z−1 − · · · − aJ z−J


2.3. FILTROS ÓPTIMOS EN EL DOMINIO DEL TIEMPO

20

B(z) = b0 + b1 z−1 + · · · + bI z−I+1 reagrupando estos valores tenemos H(z) =

Y (z) B(z) = X(z) A(z)

(2.22)

de nueva cuenta los ceros del sistema son las raíces del numerador (las soluciones de B(z) = 0), y los polos del sistema son las raíces del denominador (las soluciones de A(z) = 0). Para que un sistema tenga valor inicial finito y por lo tanto pueda ser estable, debe de tener al menos la misma cantidad de polos que de ceros. Pero a diferencia de los filtros FIR, los filtros IIR pueden tener polos localizados en puntos no triviales en el plano de z. Esto abre las posibilidades para que el filtro no sea estable, lo cual ocurre cuando cualquiera de los polos del sistema causal se encuentran fuera del círculo unitario en el plano complejo de z. Por otra parte, si un sistema H(z), no tiene retardo total y todos sus ceros así como sus polos se encuentran en el interior del círculo unitario se puede decir que es un sistema de fase mínima además de estable. Un sistema de fase mínima tiene la interesante propiedad de que su inverso, 1/H(z) también es estable y causal. La selección de que tipo de filtro usar depende del tipo de respuesta en frecuencia que se desee obtener. Si lo que se requiere es una respeta en frecuencia con una pequeña cantidad de modos con oscilaciones pequeñas y la misma cantidad de resonancias claramente definidas, la manera más eficiente de representar al sistema probablemente sea un filtro IIR. Por otra parte si lo que se requiere es un filtro con una gran cantidad de modos altamente oscilantes y que no tenga tendencia a mostrar resonancias claras en su respuesta en frecuencia probablemente con un filtro FIR se pueda modelar al sistema de manera más eficiente.

2.3.

Filtros Óptimos en el dominio del Tiempo

Los filtros óptimos son aquellos que brindan el mejor desempeño para las circunstancias dadas, entendiendo al mejor desempeño como la minimización de una función de costo o de un valor medio cuadrado, teniendo como interpretación física de lo anterior a la minimización de la potencia de la señal de error. Cuando se diseña a un filtro para minimizar el valor máximo de error para cualquier frecuencia se dice que se realiza una optimización minimax. En el caso de los sistemas ANC se emplean filtros óptimos para (o algoritmos que permiten estimarlos de alguna forma) alcanzar el desempeño buscado. En la siguiente discusión sobre los filtros óptimos se muestra el desarrollo de las técnicas de filtrado adaptivo de señales que posteriormente servirán de base para los algoritmos empleados en los sistemas ANC.

2.3.1.

Modelo de la Cancelación Eléctrica de Ruido

En el problema de la cancelación eléctrica de ruido se consideran los filtros FIR óptimos para minimizar el error cuadrático medio, en donde e(n) se encuentra como la diferencia entre la señal deseada d(n) y y(n), que es el resultado del filtrado de la señal de referencia x(n). De tal manera que podemos plantear al problema con las siguientes ecuaciones I−1

e(n) = d(n) − ∑ wi x(n − i)

(2.23)

i=0

también podemos mostrar las ecuaciones anteriores en forma vectorial como e(n) = d(n) − wT x(n) =d(n) − x(n)wT (n)

(2.24)


2.3. FILTROS ÓPTIMOS EN EL DOMINIO DEL TIEMPO

21

en donde w = [w0 w1 · · · wI−1 ]T x(n) = [x(n) x(n − 1) · · · x(n − I + 1)]T Ya teniendo planteado nuestro modelo, podemos definir nuestra función de costo a minimizar   J = E e2 (n)

(2.25)

para el siguiente análisis se asume que todas las señales son estacionarias y ergódicas, de tal forma que el valor esperado es invariante en el tiempo y puede ser calculado mediante un promedio en el tiempo. Empleando el modelo previamente definido para el caso de la cancelación eléctrica de ruido, escribimos la función de costo como J = wT Aw − 2wT b + c

(2.26)

A

  = E x(n)x(n)T

(2.27)

b

= E [x(n)d(n)]   = E d 2 (n)

(2.28)

en donde

c

(2.29)

a la matriz A se le conoce como matriz Hessiana, y sus elementos son iguales a los valores de la función de autocorrelación de la señal de referencia 

Rxx (0)

Rxx (1)

    A=    

Rxx (1) .. . .. .

Rxx (0)

··· ..

···

Rxx (I − 1)

        

. ..

.

Rxx (I − 1)

(2.30)

Rxx (0)

donde Rxx (m)es la función de autocorrelación simétrica de x(n), definida como Rxx (m) = E [x(n)x(n + m)] = Rxx (−m)

(2.31)

Aunque podríamos expresar a la matriz Hessiana A de una forma más específica como la matriz de autocorrelación R, no lo hacemos para mantener la generalidad, ya que el significado de la matriz Hessiana puede cambiar si modificamos nuestra función de costo a minimizar. Un ejemplo de otra función de costo para el mismo problema se tiene a continuación, en donde se incluye un término que tiene un valor proporcional al valor de la suma cuadrada de los coeficientes del filtro   J = E e2 (n) + β wT w

(2.32)

en donde β juega el papel de un parámetro de peso del nuevo término incluido. Repitiendo el proceso de forma similar a la primera función de costo propuesta encontramos ahora el nuevo significado de la matriz Hessiana A = R+βI

(2.33)


2.3. FILTROS ÓPTIMOS EN EL DOMINIO DEL TIEMPO

22

Con la nueva función de costo propuesta se tiene como resultado un filtro óptimo que incluye una prevención para valores excesivamente grandes de los coeficientes del filtro, ya que estos pueden incrementar el valor de la función error cuadrático medio sobretodo cuando hay cambios en las estadísticas de la señal de referencia por lo que genera un filtro más robusto. Es interesante notar que se pueden obtener resultados similares, cuando se agrega a la señal de referencia x(n) otra señal de ruido blanco v(n). Para este caso la matriz de autocorrelación para la señal de referencia modificada tendría la misma forma que en la ecuación 2.33, para este caso β estaría representado como el valor medio cuadrado de v(n). También se puede emplear un ruido de color, pero teniendo este efecto únicamente en el rango de frecuencias empleado. El vector b tiene elementos que son iguales a las funciones de correlación cruzada entre la señal de referencia y la señal deseada, de tal forma que b = [Rxd (0) Rxd (1) · · · Rxd (I − 1)]T para Rxd (m) = E [x(n)d(n + m)] = E [x(n − m)d(n)]

(2.34)

Finalmente para completar el desarrollo, c es un valor escalar equivalente al valor medio cuadrado de la señal deseada. Es claro que la señal de error cuadrático medio es una función cuadrática de cada uno de los coeficientes del filtro FIR. Esta función siempre tendrá un valor mínimo y no un valor máximo (ya que J puede crecer sin fin simplemente incrementando la magnitud de alguno de los coeficientes. Sin embargo éste valor mínimo será único si la matriz Hessiana Aes definida positiva1 . Tal como se planteó el desarrollo del filtro óptimo tomando a la ecuación 2.25 como la función de costo, la matriz A puede ser definida positiva o positiva semi definida (en cuyo caso la matriz sería singular y no tendría inversa), todo depende de las propiedades espectrales de la señal de referencia y del número de coeficientes del filtro FIR. Si tenemos al menos el mismo número de componentes espectrales como de coeficientes del filtro, la señal de referencia se dice que ese excitante persistente mente o rica espectralmente, lo que asegura que la matriz de autocorrelación se una definida positiva y que por lo tanto la función de costo tenga un mínimo único. Por otra parte si se emplea el modelo con blanqueado en la señal de referencia de la ecuación 2.32 empleando un valor finito de β tenemos garantizado que la matriz A sea definida positiva, ya que se garantiza que la señal de referencia modificada sea persistente mente excitante.

2.3.2.

El Filtro de Wiener

El valor de los coeficientes del filtro FIR que reduce al error cuadrático medio a un mínimo se puede encontrar diferenciando la función de costo con respecto a cada coeficiente e igualando cada una de las derivadas resultantes con cero. 1 En el álgebra lineal, una matriz definida positiva es una matriz hermitiana que es análoga a los números reales positivos. Se dice que una matriz M es definida positiva si cumple con las siguientes formulaciones: 1. Para todos los vectores no nulos donde zεCn tenemos que z∗ Mz > 0

2. Todos sus eigenvalores λi son positivos 3. La función hx, yi = x∗ My define un producto interno en Cn 4. Todas las matrices cuadradas tomadas a partir de la superior izquierda tienen determinante positivo, incluyendo a la matriz M en sí misma. Las matrices definidas positivas tienen las siguientes propiedades: Toda matriz definida positiva es inversible y su inversa es definida positiva. Si M es definida positiva, y r > 0 es un número real, entonces rM también es definida positiva. Si M y N son matrices definidas positivas, entonces la suma M + N, el producto MNM y NMN son definidas positivas. Toda matriz definida positiva M, tiene al menos una matriz raíz cuadrada N tal que N2 = M.


2.3. FILTROS ÓPTIMOS EN EL DOMINIO DEL TIEMPO

23

Empleando notación vectorial tenemos   ∂J ∂J T ∂J ∂J ··· = ∂w ∂ w0 ∂ w1 ∂ wI−1

(2.35)

empleando la definición de la función de costo de la ecuación 2.25 a la ecuación anterior tenemos ∂J = 2 [Aw − b] ∂w

(2.36)

si asumimos que la matriz A no es singular (debido a que la señal x(n) es persistente mente excitante) y por lo tanto tiene matriz inversa, entonces el vector de coeficientes óptimo se obtiene como wopt = A−1 b

(2.37)

al filtro que emplea estos coeficientes óptimos se le conoce en el área del procesamiento digital de señales como Filtro de Wiener, debido a que se debe a los trabajos realizados por N.Wiener en los años cuarenta del siglo XX. Fue hasta 1947 el año en que Levinson publicó un método muy eficiente para resolver la ecuación de Wiener en el que toma provecho de la naturaleza Toeplitz2 de la matriz A. Escribiendo a las matrices A y b en términos d la autocorrelación de x(n) y de la correlación cruzada de x(n) con d(n) respectivamente podemos expresar la ecuación de Wiener 2.37 como

I−1

∑ wi,opt Rxx (k − i) − Rxd (k) = 0 para 0 ≤ k ≤ I − 1

(2.38)

i=0

a este conjunto de ecuaciones se le conoce como las ecuaciones normales. El vector de correlaciones cruzadas entre las I muestras pasadas de la señal de referencia y la señal de error es definido como   E [x(n)e(n)] = E x(n) d(n) − xT (n)w = b − Aw

(2.39)

de la ecuación anterior podemos encontrar que los elementos en el vector de correlaciones cruzadas entre la señal de referencia y la señal de error serán cero cuando los coeficientes del filtro FIR sean ajustados para minimizar el error cuadrático medio. Interpretando lo anterior encontramos que la señal de ruido residual no debe tener componentes que se encuentren correlacionadas con los I − 1 valores previos de la señal de referencia. A esto se le conoce como el principio de ortogonalidad. Con esta idea podemos obtener el valor mínimo del error medio cuadrado, empleando los coeficientes óptimos del filtro Jmin = c − bT A−1 b

2.3.3.

(2.40)

Sistemas de Predicción Lineal

Un caso particular interesante se tiene cuando se emplea el modelo de cancelación eléctrica de ruido con una señal de referencia x(n) representada por una versión retardada de la señal deseada d(n). De esta forma el propósito del filtro de Wiener es minimizar el valor medio cuadrado de la señal de error, haciendo que la salida del filtro sea lo más parecida posible a la señal deseada actual, empleando para esto valores pasados de ésta. Se dice que operando de esta forma el 2 En el álgebra lineal una matriz Toeplitz, es una matriz cuadrada en el que todas sus diagonales de izquierda a derecha tienen los mismos valores en los elementos que las forman, es decir ∀ai, j εT → ai, j = ai+1, j+1


2.3. FILTROS ÓPTIMOS EN EL DOMINIO DEL TIEMPO

24

filtro es un predictor lineal de la señal deseada. Para este caso, los elementos de la matriz A y del vector b dependen únicamente de los valores de la función de autocorrelación de la señal d(n). Mientras más correlacionada sea la señal d(n) a lo largo de la longitud del filtro, menor será el valor del error cuadrático medio residual. Si la señal d(n) es de ruido blanco, el filtro de Wiener no puede realizar predicción alguna de los valores futuros y no se alcanza ninguna atenuación en la señal de error. Mientras que una señal tonal es perfectamente predecible y se pueden alcanzar grandes atenuaciones de la señal de error. De hecho este tipo de sistemas son empleados para mejorar las componentes tonales de las señales, por lo que se les llama aclaradores de linea.

2.3.4.

El algoritmo LMS

En las secciones anteriores hemos visto que el filtro FIR óptimo que minimiza el error cuadrático medio para el modelo de cancelación eléctrica de ruido puede ser calculado de forma directa conociendo las propiedades de la autocorrelación de la señal de referencia y de la correlación cruzada entre la señal de referencia y la señal deseada. Para poder implementar lo anterior se requiere contar con un historial de estas señales, lo que requeriría una gran cantidad de información para que la realización sea precisa. Además en el desarrollo anterior se consideró que las señales eran estacionarias, ya que de lo contrario sus propiedades de autocorrelación cambiarían con el tiempo. Aunado a esto, empleando las fórmulas de Wiener se encuentra la necesidad de invertir la matriz de autocorrelación, que para un filtro de I coeficientes sería una matriz de I × I, operación que puede ser sumamente compleja de realizar en un procesador (aunque consideremos algoritmos de optimización como el de Levinson para ello). Considerando lo anterior es necesario encontrar otra forma para determinar lo coeficientes del filtro óptimo. Otra forma para determinar los coeficientes del filtro es hacerlos adaptivos, en lugar de emplear un conjunto de datos para encontrar las funciones de correlación y después emplearlas para calcular el conjunto de coeficientes, lo que se realiza es emplear los datos en forma secuencial para ajustar los coeficientes. Empleando este esquema, los coeficientes evolucionan en una dirección que minimiza el error medio cuadrado, con lo que los coeficientes convergen hacia el filtro óptimo si las señales son estacionarias o pueden reajustar los coeficientes del filtro si las propiedades de correlación de las señales cambian (con limitación en cuanto a la velocidad de cambio de las estadísticas de las señales en relación con la velocidad de convergencia del algoritmo).

2.3.4.1.

Algoritmo de descenso más escarpado (Steepest Descent Algorithm)

El algoritmo más empleado para la adaptación de los coeficientes del filtro FIR tiene como fundamento el hecho de que la superficie de error tiene una forma cuadrática. Con lo anterior se sugiere que al ajustar el valor de un coeficiente en una pequeña cantidad, que sea proporcional al valor negativo del gradiente local de la función de costo con respecto al coeficiente del filtro, entonces el coeficiente se encuentra obligado a moverse en dirección del mínimo global de la superficie de error. Representando lo anterior para todos los coeficientes del filtro tenemos w(n + 1) = w(n) − µ

∂J ∂w

(2.41)

en donde µ es conocido como el coeficiente de adaptación o factor de convergencia. Podemos determinar al vector de derivadas de la función de costo empleando las definiciones previamente mencionadas quedando finalmente como   ∂J = 2E x(n)xT (n)w − x(n)d(n) ∂w

(2.42)


2.3. FILTROS ÓPTIMOS EN EL DOMINIO DEL TIEMPO

25

si recordamos la definición de la señal de error e(n) = d(n) − xT (n)w

(2.43)

podemos escribir el vector de derivadas de la función de costo como ∂J = −2 [x(n)e(n)] ∂w

(2.44)

debemos notar que para poder emplear este algoritmo de descenso en el gradiente, es necesario obtener el valor esperado del producto de la señal de error con el vector de retardos de la señal de referencia y esto implica promediar en el tiempo para segmentos grandes de datos, por lo que la actualización de los coeficientes del filtro empleando este método se hace de manera poco frecuente. Como alternativa al método del descenso más escarpado Widrow y Hoff propusieron en 1960 una variante, en lugar de actualizar los coeficientes del filtro de manera infrecuente con un estimado del gradiente (empleando promedios en el tiempo) se propone hacerlo en cada tiempo de muestreo empleando un estimado instantáneo del gradiente (al que suele llamarse gradiente estocástico). Al valor instantáneo del gradiente se le obtiene como ∂ e2 (n) = −2x(n)e(n) ∂w

(2.45)

con esto la actualización de los coeficientes quedaría como w(n + 1) = w(n) + αx(n)e(n)

(2.46)

en donde α equivale a 2µ y es el coeficiente de adaptación. A este algoritmo se le conoce como el algoritmo LMS.

2.3.4.2.

Análisis de convergencia del algoritmo LMS

Realizar el análisis de convergencia del algoritmo LMS es una tarea compleja, debido a la naturaleza estocástica del estimado del gradiente cuando se le aplica con señales aleatorias, con ello el histórico de los coeficientes del filtro sera muy dependiente de las variaciones en los datos empleados. Para el desarrollo incluido en esta sección se realiza el análisis del valor esperado del vector de coeficientes del filtro, lo cual no provee una descripción completa del comportamiento del algoritmo, ya que la varianza en los históricos de cada coeficiente, su valores medios cuadráticos pueden tener valores grandes aunque los valores medios tengan convergencia. Sin embargo el análisis del valor medio de los coeficientes nos muestra una cantidad importante de propiedades del algoritmo. El valor medio de los coeficientes del filtro se obtiene como E [w(n + 1)] = E [w(n)] + αE [x(n)e(n)]

(2.47)

mostrando esta ecuación en su forma expandida    E [w(n + 1)] = E [w(n)] + α E [x(n)d(n)] − E x(n)xT (n)w(n)

(2.48)

debemos asumir que los coeficientes del filtro cambian poco a lo largo de las I retardos en x(n), por lo que la variación de w(n) es independiente de x(n). Esta consideración en mucho casos no se cumple, sobretodo para filtros con adaptación rápida o para algunos conjuntos de datos, sin embargo nos brinda un modelo muy simple de la convergencia del filtro, el cual sirve para tener una buena predicción del comportamiento del mismo. Empleando esta


2.3. FILTROS ÓPTIMOS EN EL DOMINIO DEL TIEMPO

26

consideración tenemos    E [w(n + 1)] = E [w(n)] + α E [x(n)d(n)] − E x(n)xT (n) E [w(n)]

(2.49)

en donde encontramos las matrices de correlación cruzada y de autocorrelación b y Amencionada anteriormente. Si definimos a la diferencia entre el valor esperado de los coeficientes del filtro con los óptimos de Wiener encontramos ε(n) = E [w(n)] − wopt

(2.50)

de la ecuación de Wiener wopt = A−1 b, por lo que b = Awopt y sustituyendo en la ecuación 2.49 tenemos ε(n + 1) = [I − αA] ε(n)

(2.51)

Si escribimos a la matriz Aen términos de la matriz de sus eigenvectores Q y de la matriz diagonal de sus eigenvalores Λ tenemos A = QΛQT

(2.52)

debido a que la matriz A es simétrica, sus eigenvectores son orto normales QQT = I

(2.53)

Por otra partes los eigenvalores de A son reales y positivos, y definen a la matriz Λ como    Λ=  

λ1 λ2 .. 0

.

 0    

(2.54)

λI

empleando todas estas propiedades podemos reescribir la ecuación 2.51 como QT ε(n + 1) = [I − αΛ] QT ε(n)

(2.55)

los elementos del vector QT ε(n) equivalen a un conjunto transformado de coeficientes promediados y normalizados, lo que correspondería a los ejes principales de la superficie de error. Si definimos al vector QT ε(n) como v(n) tenemos entonces v(n + 1) = [I − αΛ] v(n)

(2.56)

y como Λ es una matriz diagonal, representa un conjunto de I ecuaciones independientes, las cuales pueden ser expresadas como vi (n + 1) = (1 − αλi )vi (n)

(2.57)

La convergencia en promedio de cada uno de estos coeficientes normalizados y transformados del algoritmo LMS es independiente, cada uno se dice que corresponde a los modos del algoritmo. La velocidad de convergencia de cada uno de estos modos es dependiente del eigenvalor asociado de la matriz de autocorrelación λi , los modos que tienen valores más grandes tienen un descenso con mayor pendiente en la superficie de error, por lo que experimentan una convergencia más rápida que los de menor valor. Para cualquier valor inicial, vi (n) caerá hacia cero dadas las siguientes


2.3. FILTROS ÓPTIMOS EN EL DOMINIO DEL TIEMPO

27

condiciones |1 − αλi | < 1

(2.58)

por lo que 0 < α < 2/λi , observemos que el algoritmo tiene garantizada la convergencia hacia los coeficientes óptimos de Wiener siempre que ninguno de los eigenvalores sea cero. Cuando el filtro adaptivo es excitado de forma persistente, la matriz Aes definida positiva y por lo tanto todos sus eigenvalores son positivos y reales. Tomando en cuenta que la condición de estabilidad se debe cumplir para todos los eigenvalores, y que esta condición es más estricta para λmax , entonces podemos decir que la condición de convergencia del algoritmo al valor medio de los coeficientes esta condicionada a 0<α <

2 λmax

(2.59)

Trabajos presentados por Widrow y Walach, entre otros argumentan, que la convergencia en el valor medio cuadrado de los coeficientes del filtro requiere una condición mucho más restrictiva, expresada como I−1

0 < α < 2/ ∑ λi

(2.60)

i=0

La suma de los eigenvalores de una matriz se define como la traza de ésta, lo cual esta dado como la suma de los elementos de su diagonal principal. Como todos los elementos contenidos en la matriz de autocorrelación A son equivalentes al valor medio cuadrado de la señal de referencia, podemos expresar esta misma condición como 0 < α < 2/Ix2

(2.61)

En la práctica esta forma de expresar la condición de convergencia del algoritmo es mucho más fácil de calcular e implementar, además ha dado origen a una variante muy importante del algoritmo LMS que se denomina algoritmo ¯ NLMS, en donde el coeficiente de adaptación del algoritmo es normalizado, a continuación se define αque representa al coeficiente normalizado de adaptación α=

α¯ Ix2

(2.62)

con lo que los límites de α¯ quedan fijos de la manera siguiente 0 < α¯ < 2

(2.63)

Por otra parte el término Ix2 debe ser estimado con los datos observados, realizando un promedio con los últimos I puntos.

Conclusiones Debido a las grandes ventajas que los filtros digitales ofrecen sobre las técnicas de filtrado analógico (versatilidad, ahorro de recursos, invarianza con la temperatura y el tiempo, exactitud,etc.), los sistemas de control activo de ruido recurren con frecuencia a ellos, empleando en conjunto un algoritmo de adaptación que permite optimizar el funcionamiento del sistema en la reducción de una función de costo propuesta.


2.3. FILTROS ÓPTIMOS EN EL DOMINIO DEL TIEMPO

28

En el modelo de la cancelación eléctrica de ruido, la solución óptima fue planteada por Wiener en la minimización de la señal de error e(n), sin embargo, esta solución fue descrita para señales estacionarias y su implementación implica el conocimiento previo de algunos parámetros estadísticos entre la señales de referencia x(n), de error e(n) y la señal de ruido eléctrico que se desea controlar d(n). En virtud de estos inconvenientes es necesario plantear el problema como un método iterativo de optimización, en donde cada cierto intervalo de tiempo se ajusten los coeficientes del filtro siguiendo la dirección negativa del gradiente. El algoritmo LMS realiza el ajuste de los coeficientes del filtro empleando el valor del gradiente instantáneo (gradiente estocástico) a diferencia del método del descenso más escarpado (Steepest Descent Method) que emplea un valor esperado del gradiente, por lo cual el algoritmo LMS es más sencillo de implementar y consume menos recursos de cómputo. Para garantizar la convergencia y estabilidad de algoritmo LMS es necesario restringir los valores que puede tomar la constante de adaptación del algoritmo en un rango acotado en la parte superior por las propiedades de la densidad espectral de potencias de la señal de referencia x(n). Para determinar el valor máximo que puede tomar la constante de adaptación se emplea el análisis de los valores propios de la matriz de autocorrelación de x(n), o bien, de manera más sencilla, se considera el valor del coeficiente de adaptación como una función de la potencia de x(n).


3 Cancelación Activa de Ruido empleando técnicas de Filtrado Adaptivo de Señales

En el capítulo anterior, se habló del modelo de cancelación eléctrica de ruido, a partir del cual se obtuvo el filtro óptimo que quedó expresado en la ecuación de Wiener, además se analizaron los algoritmos de búsqueda del gradiente empleados para poder hacer la búsqueda de los coeficientes óptimos de manera p´ractica. Durante este capítulo observaremos de que manera se puede emplear este mismo análisis para el modelo de cancelación acústica de ruido. Una de las consideraciones principales que debemos tener en el modelo de cancelación acústica del ruido es el papel que juegan los sistemas que se encargan de convertir las señales acústicas en tiempo continuo a señales eléctricas discretas en el tiempo sujetas y sometidas al procesamiento digital. Posteriormente a la etapa de tratamiento digital también debemos considerar los cambios que implica para la señal de control la etapa de reconstrucción en una señal acústica, la forma en que ésta se propaga y se superpone con la señal deseada para alcanzar la cancelación de ruido acústico. En la figura 3.1 se observa el diagrama de bloques de un sistema continuo en el tiempo controlado por una señal digital para la cancelación de ruido acústico. El modelo anterior puede ser expresado como un sistema digital controlado por una señal digital, para ello podemos incluir todos los subsistemas en tiempo continuo en un sistema único al que vamos a llamar respuesta de la planta G(s), dicho sistema es transformado al dominio de z para ser incluido en el nuevo modelo. La función de transferencia G(z), corresponde a la respuesta de la planta observada por el controlador digital, e incluye la respuesta del sistema en tiempo continuo, los convertidores, los filtros de antialiasing y de reconstrucción. Además se pueden incluir en este sistema los retardos debidos al procesamiento.

29


3.1. SISTEMAS DE CONTROL ALIMENTADOS HACIA ADELANTE (FEEDFORWARD CONTROL)

30

Figura 3.1: Diagrama de bloques de un sistema continuo controlado por una señal digital

3.1.

Sistemas de Control alimentados hacia adelante (Feedforward Control)

En esta sección se explican los sistemas prealimentados o alimentados hacia adelante, por motivos de sencillez en la exposición nos limitaremos a observar los modelos que emplean únicamente una señal de referencia x(n), una fuente secundaria que es excitada con la señal de control u(n) y un sensor de error e(n). En estos sistemas podemos definir definir a la señal de control en el dominio de z, U(z) en términos de la señal de referencia X(z) y la función de transferencia del filtro digital W (z)com U(z) = W (z)X(z)

(3.1)

Asumiendo que el controlador digital es de respuesta finita al impulso (FIR), la señal de control en su versión discreta en el tiempo queda expresada como I−1

u(n) =

∑ wi x(n − i)

(3.2)

i=0

La transformada z de la señal de error, E(z) es la superposición lineal de la perturbación, D(z) y la señal de control U(z) modificada por la respuesta de la planta quedando como E(z) = D(z) + G(z)U(z)

(3.3)

Como se puede observar la principal diferencia entre los sistemas feedforward y el modelo de cancelación eléctrica de ruido es la presencia de la planta entre la salida del filtro y el punto de observación de la señal de error. La planta no representaría mucho problema si se conociera su respuesta con mucha precisión y que fuera un sistema de fase mínima1 , ya que se podría incluir el inverso de ésta para cancelar los efectos en el modelo de control y poder seguir trabajando de la misma forma que en el modelo de cancelación eléctrica de ruido. Sin embargo, en la práctica la respuesta de la planta en raras ocasiones se puede considear de fase mínima, no se conoce con precisión y es variante en el tiempo. Suponiendo el caso mas simple, en donde la respuesta de la planta fuera un retardo puro, dicha respuesta entre la salida 1 En la teoría de control y en el procesamiento de señales, se dice que un sistema lineal invariante en el tiempo es de fase mínima cuando su inversa es causal y estable. Un sistema con función de transferencia H(z)satisface la causalidad y la estabilidad si todos sus polos se encuentran dentro del círculo unitario, pudiendo estar sus ceros dentro o fuera de éste. Sin embargo para ser también de fase mínima sus ceros deben encontrarse dentro del círculo, de tal forma que al invertir el sistema su resultado también sea estable y causal.


3.1. SISTEMAS DE CONTROL ALIMENTADOS HACIA ADELANTE (FEEDFORWARD CONTROL)

31

Figura 3.2: Modelo de bloques de un sistema prealimentado de canal singular del filtro y el punto de observación del error bastaría para desestabilizar los algoritmos de adaptación de los coeficientes del filtro analizados en el capítulo anterior. Por lo tanto debemos redefinir los algoritmos previamente estudiados para contemplar el efecto de la planta en la cancelación de ruido acústico, la mayoría de los algoritmos empleados para ANC necesitan un modelo de la planta para poder garantizar la estabilidad del proceso de adaptación.

3.1.1.

Control Óptimo de Ruido Aleatorio

Las perturbaciones estocásticas tienen como característica un ruido con forma de onda aleatoria, el control de este tipo de perturbaciones es mucho más complicado que el de señales deterministas, esto se debe a que las señales de error y de referencia no se encuentran perfectamente correlacionadas como ocurriría en el caso de señales deterministas y debido a la complejidad que involucra controlar una amplia gama de frecuencias. En la figura 3.2, se muestra el diagrama de bloques de un controlador prealimentado de canal singular, en el cual el ruido primario original v, es transmitido al sensor de error por la trayectoria Pe para obtener la señal d y a su vez pasa por la trayectoria del sensor de referencia Ps para obtener la señal z. En la misma figura se observa la realimentación que se tiene de la salida del actuador secundario hacia el sensor de referencia pasando por la trayectoria de realimentación Gs y la forma en que la señal de control pasa por la trayectoria secundaria (o trayectoria de error) Ge para afectar el sensor de error. Al diagrama de bloques de la figura 3.2 podemos expresarlo para un sistema digital en la manera de la figura 3.3, en donde la respuesta de la planta es representado por Ge (z) que es la versión en tiempo discreto de la trayectoria secundaria (considerando además el efecto de los filtros analógicos y convertidores necesitados para su muestreo). Por otra parte el controlador ha sido implementado empleando un sistema de cancelación de la realimentación de la señal de control a la señal de referencia, para ello se tiene un modelo interno de la trayectoria de realimentación Gs (z) , representado por Gˆ s (z). Si esta cancelación es efectiva, entonces podemos expresar a la señal de referencia x(n) que entra al filtro de control W (z) en el dominio de z como X(z) = Z(z) + N1 (z)

(3.4)

en donde n1 (n) es la señal de ruido capturada junto con la señal x(n) en el sensor de referencia. A la señal medida en el sensor de error cuando no ha sido activado el control se le denota como d(n) y esta señal contiene componentes asociadas con el ruido primario y otras asociadas al ruido de medición. Por lo general se asume


3.1. SISTEMAS DE CONTROL ALIMENTADOS HACIA ADELANTE (FEEDFORWARD CONTROL)

32

Figura 3.3: Modelo de bloques del sistema digital prealimentado

Figura 3.4: Versión simplificada del diagrama a bloques del sistema de control prealimentado asumiendo una perfecta cancelación de la trayectoria de Realimentación Gs (z) que las componentes que se deben al ruido primario se encuentran linealmente relacionadas con el sensor de referencia D(z) = P(z)Z(z) + N2 (z)

(3.5)

en donde a P(z) se le conoce como la planta primaria combinada la cual se define como P(z) =

3.1.2.

Pe (z) Ps (z)

(3.6)

Optimización no limitada en el Dominio de la Frecuencia

ˆ Si asumimos que el modelo interno de la trayectoria de realimentación es perfecto, entonces Gs (z) = G(z) por lo que el diagrama de la figura 3.3 es completamente alimentado hacia adelante. Ahora podemos representar a la respuesta de la planta Ge (z) como G(z), debido que no existe otra representación de la respuesta de la planta. Si consideramos que la planta y el controlador son lineales e invariantes en el tiempo, entonces sus diagramas pueden ser intercambiados como se muestra en la figura 3.4.


3.1. SISTEMAS DE CONTROL ALIMENTADOS HACIA ADELANTE (FEEDFORWARD CONTROL)

33

Observando el diagrama de bloques después del intercambio de bloques arriba mencionado, se puede encontrar que se tiene la misma forma que en el problema de la cancelación eléctrica de ruido del capítulo anterior. Para este diagrama la señal de error queda definida como E(z) = D(z) +W (z)R(z) donde R(z) es el resultado del filtrado de la señal X(z) con la respuesta de la planta G(z). La atenuación máxima de la señal de error depende de dos factores El grado de coherencia entre la señal de referencia y la perturbación. La habilidad del controlador para implementar la respuesta en frecuencia requerida para obtener un control perfecto. Empleando el análisis en el dominio de la frecuencia podemos determinar el controlador óptimo, el cual no se encuentra limitado a ser causal o de duración finita, y que por lo tanto únicamente realiza el análisis del desempeño en cuanto al grado de coherencia entre la señal de referencia y la señal de perturbación. En el dominio de la frecuencia podemos expresar a la señal de error como E(e jωT ) = D(e jωT ) +W (e jωT )R(e jωT )

(3.7)

El objetivo del análisis descrito hasta este punto es ajustar la respuesta del controlador W (e jωT ) para cada frecuencia de tal forma que sea minimizada la densidad espectral de potencia de la señal de error. Empleando este análisis no ses tienen limitaciones en cuanto a la complejidad de la respuesta en frecuencia del controlador y lo que es mas importante si podría ser causal. Sin embargo el análisis en el dominio de la frecuencia nos brinda algunas reglas simples relacionadas con los límites fundamentales de control. La densidad espectral de potencia de la señal de error queda definida como   See (e jωT ) = E E ∗ (e jωT )E(e jωT ) que puede ser expresada como en donde ∗ See (e jωT ) = W ∗ (e jωT )Srr (e jωT )W (e jωT ) +W ∗ (e jωT )Srd (e jωT ) + Srd (e jωT )W (e jωT ) + Sdd (e jωT )

(3.8)

  Sdd (e jωT ) = E D∗ (e jωT )D(e jωT )     Srd (e jωT ) = E R∗ (e jωT )D(e jωT ) = G∗ (e jωT )E X ∗ (e jωT )D(e jωT )

2   

 Srr (ω) = E R∗ (e jωT )R(e jωT ) = G(e jωT ) E X ∗ (e jωT )X(e jωT ) La ecuación 3.8 es minimizad en cada frecuencia por el controlador óptimo cuya respuesta esta dada por Wopt (e jωT ) = −

Srd (e jωT ) −Sxd (e jωT ) = Srr (e jωT ) G(e jωT )Sxx (e jωT )

(3.9)

empleando el controlador óptimo, el nivel de densidad espectral resultante en la señal de error es See,min (e

jωT

) = Sdd (e

jωT

Srd (e jωT ) 2 )− Srr (e jωT )

(3.10)


3.1. SISTEMAS DE CONTROL ALIMENTADOS HACIA ADELANTE (FEEDFORWARD CONTROL)

34

si dividimos con el nivel de la densidad espectral de potencia antes de aplicar el control, el cual es Sdd (e jωT ) obtenemos el error normalizado como

Sxd (e jωT ) 2 See,min (e jωT ) 2 = 1− = 1 − γxd (e jωT ) Sdd (e jωT ) Sxx (e jωT )Sdd (e jωT )

(3.11)

2 (e jωT ) representa la función de coherencia entre las señales del sensor de referencia en la ecuación 3.11 el término γxd

y del sensor de error en la ausencia del control activo. La ecuación 3.11 es importante porque establece los límites fundamentales de desempeño que se pueden alcanzar para un ruido de medición dado en las señales de referencia y de error en un sistema práctico. Además esta ecuación expresa la atenuación que se puede alcanzar para un grado de coherencia dado, sin embargo debemos considerar que esta expresión cuenta con algunas limitaciones: en primera instancia establece que la señal medida en el sensor de error es estacionaria y que ofrece una representación exacta de la señal de perturbación física a controlar, además se considera que el controlador es realizable e invariante en el tiempo. Si consideramos que la señal de perturbación no es estacionaria y que el controlador es adaptivo entonces no podemos asumir la invariancia en el tiempo y el desempeño del sistema puede ser mejor que lo que establece la ecuación 3.11. Por otro lado, el controlador puede tener limitaciones en su realización y no ofrecer la respuesta en frecuencia requerida, comportamiento que ocurre cuando la respuesta en frecuencia es muy complicada o cuando no se cumple con la causalidad en el sistema. En estos casos el desempeño sería peor que lo predicho por la ecuación 3.11.

3.1.3.

Optimización en el Dominio de la Frecuencia limitada a ser Causal

A partir de la optimización en el dominio de la frecuencia de la sección anterior podemos obtener otro que este condicionado a ser causal, para ello comenzamos por asumir que la señal de referencia es obtenida a partir de una secuencia de ruido blanco V (z) que es procesada por un filtro de fase mínima F(z) X(z) = F(z)V (z) en donde Sxx (z) = F(z)F(z−1 ) con lo anterior la señal de referencia filtrada queda expresada como R(z) = G(z)F(z)V (z) Ahora debemos definir un filtro de blanqueado que trabaje con la secuencia r(n) para producir una secuencia de ruido blanco. El filtro de blanqueado podría ser el inverso de los filtros que le dan forma a la señal R(z), que para nuestro caso serían G(z)F(z) . Por definición F(z) es de fase mínima y por lo tanto tiene inversa estable, sin embargo G(z)por lo general no es de fase mínima y por lo tanto no tendría una inversa estable. Aún con esta limitante, podemos obtener una señal de ruido blanco (que no mantiene correlación entre una muestra y otra, característica requerida para obtener el filtro óptimo causal) a partir de la secuencia r(n) empleando la inversa de la componente de fase mínima de G(z)en conjunto con la inversa de F(z). La señal de ruido blanco obtenida es 0

V (z) =

1 1 R(z) F(z) Gmin (z)


3.1. SISTEMAS DE CONTROL ALIMENTADOS HACIA ADELANTE (FEEDFORWARD CONTROL)

35

en donde Gmin (z) es la componente de fase mĂ­nima de la funciĂłn de transferencia de la planta G(z). El filtro Ăłptimo que minimiza el error cuadrĂĄtico medio es Wv0 opt (z) = â&#x2C6;&#x2019; {Sv0 d (z)}+ en donde Sv0 d (z) es la densidad espectral de frecuencia cruzada entre v0 (n) y d(n) , ademĂĄs el sĂ­mbolo { }+ implica que se ha tomado la transformada z de la parte causal de la versiĂłn en el dominio del tiempo de la cantidad encerrada entre los corchetes. La seĂąal de ruido blanco V 0 (z) tambiĂŠn puede ser expresada como V 0 (z) =

Gall (z)X(z) F(z)

tomando esta definiciĂłn de V 0 (z) encontramos la densidad espectral de potencia cruzada Sv0 d (z) =

Gall (zâ&#x2C6;&#x2019;1 )Sxd (z) Sxd (z) = â&#x2C6;&#x2019;1 â&#x2C6;&#x2019;1 F(z ) F(z )Gall (z)

La expresiĂłn completa del controlador Ăłptimo causal finalmente queda expresada asĂ­ â&#x2C6;&#x2019;1 Wopt (z) = F(z)Gmin (z)

3.1.4.



Sxd (z) â&#x2C6;&#x2019;1 F(z )Gall (z)

 (3.12) +

OptimizaciĂłn en el Dominio del Tiempo

Si reformulamos el problema de la optimizaciĂłn del filtro de control y la realizamos en el dominio del tiempo podemos obtener un filtro que sea realizable y causal. Si asumimos que el controlador es causal y que tiene una respuesta finita al impulso la seĂąal de error queda definida asĂ­ Iâ&#x2C6;&#x2019;1

e(n) = d(n) + â&#x2C6;&#x2018; wi r(n â&#x2C6;&#x2019; i) = d(n) + wT r(n) i=0

en donde el vector r(n) esta compuesto por valores pasado de la seĂąal de referencia filtrada. El valor esperado del error cuadrĂĄtico queda expresado en una manera muy similar a la de la cancelaciĂłn de ruido como Ree (0) = wT Rrr w + 2wT rrd + Rdd (0) en donde Ree (0) = E [e(n)e(n)] Rdd (0) = E [d(n)d(n)] rrd = E [r(n)d(n)]   Rrr = E r(n)rT (n) de tal forma que rrd es la correlaciĂłn cruzada entre la seĂąal de referencia filtrada y la seĂąal de perturbaciĂłn y Rrr es la matriz de auto correlaciĂłn de la seĂąal de referencia filtrada. El conjunto de coeficientes Ăłptimo que minimiza a error cuadrĂĄtico medio es wopt = â&#x2C6;&#x2019;Râ&#x2C6;&#x2019;1 rr rrd


3.1. SISTEMAS DE CONTROL ALIMENTADOS HACIA ADELANTE (FEEDFORWARD CONTROL)

36

y substituyendo esta cantidad en la ecuación del valor esperado del error cuadrático obtenemos el valor esperado mínimo Ree,min (0) = Rdd (0) − rTrd R−1 rr rrd por lo que el filtro óptimo y error residual mínimo pueden ser calculados si conocemos la función de auto correlación y la correlación cruzada de las señales de perturbación y de referencia, en la práctica estas funciones son calculadas con estimados discretos en el dominio de la frecuencia de la densidad espectral de potencia y de la densidad espectral cruzada.

3.1.5.

Algoritmo LMS con Referencia Filtrada (FXLMS)

De la misma forma que ocurría en la cancelación eléctrica de ruido tenemos las mismas limitantes en los sistemas ANC ya que la implementación del filtro óptimo de Wiener requiere obtener los coeficientes óptimos del filtro de control resolviendo ecuaciones de alta complejidad de numérica (como la inversión de una matriz potencialmente grande), por lo que en los sistemas de ANC es necesario emplear una derivación del algoritmo LMS. Como se analizó en el capítulo anterior la filosofía del algoritmo LMS cociste en adaptar los coeficientes del filtro en la dirección opuesta al gradiente instantáneo del error cuadrático medio con respecto a los coeficientes ∂ e2 (n) ∂ e(n) = 2e(n) = 2e(n)r(n) ∂w ∂w empleando este gradiente la adaptación de los coeficientes queda expresada como w(n + 1) = w(n) − αr(n)e(n) a esta forma de adaptar los coeficientes se le conoce como el algoritmo LMS de referencia filtrada o FXLMS. En la práctica, la señal de referencia filtrada es obtenida a partir de una versión estimada de la verdadera respuesta de ˆ la planta, la cual es implementada por G(z) que es un filtro en tiempo real que es empleado para obtener la señal rˆ (n). La versión implementada en la práctica del algoritmo FXLMS queda expresada entonces como w(n + 1) = w(n) − α rˆ (n)e(n)

El algoritmo LMS puede ser interpretado como un prefiltrado de la señal de referencia con la finalidad de que la señal de error y la señal de referencia vuelvan a estar alineadas en el tiempo y puedan brindar un valor de correlación cruzada válido. La necesidad de emplear otro filtro para generar la señal de referencia filtrada incrementa la carga computacional del algoritmo FXLMS, por lo que las implementaciones prácticas requieren representaciones eficientes de la respuesta de la planta y aunque el algoritmo FXLMS fue pensado para cancelación de ruido estocástico también puede ser empleado de forma muy eficiente para la cancelación de ruidos tonales o deterministas. 3.1.5.1.

Condiciones de estabilidad del algoritmo FXLMS

En el análisis de estabilidad del algoritmo FXLMS debemos determinar la aproximación que debe tener la estimación de la respuesta de la planta con la realidad para comportarse de forma estable y confiable. Comenzamos el análisis


3.1. SISTEMAS DE CONTROL ALIMENTADOS HACIA ADELANTE (FEEDFORWARD CONTROL)

37

expresando la ecuación de adaptación de los coeficientes como   w(n + 1) = w(n) − α rˆ (n)d(n) + rˆ (n)rT (n)w(n) si el algoritmo es estable el valor esperado del término que realiza la actualización deberá ser igual a cero (de tal forma que los coeficientes ya no cambien). El valor final del conjunto de coeficientes queda denotado como   −1 E [ˆr(n)d(n)] w∞ = − E rˆ (n)rT (n) por lo que la estabilidad del algoritmo no garantiza su convergencia con la solución óptima, a menos que el modelo de la planta fuera perfecto en cuyo caso rˆ (n) = r(n). Si restamos el conjunto de coeficientes finales w∞ en los dos lados de la ecuación de adaptación de los coeficientes y tomando el valor esperado, obtenemos el comportamiento promedio del algoritmo que se define como    E [w(n + 1) − w∞ ] = I − αE rˆ (n)rT (n) E [w(n) − w∞ ]   la matriz de correlación E rˆ (n)rT (n) puede ser descompuesta en sus eigenvalores y eigenvectores como   E rˆ (n)rT (n) = QΛQ−1 la expresión del algoritmo FXLMS para los coeficientes promediados, normalizados y rotados queda expresada como v(n + 1) = [I − αΛ] v(n) en donde v(n) = Q−1 E [w(n) − w∞ ] a diferencia que en el análisis del capítulo anterior, los eigenvectores que forman la diagonal principal de Λ no son necesariamente reales, por lo que la magnitud de 1 − αλ debe ser menor a la unidad para que el algoritmo sea estable, quedando expresada la estabilidad del algoritmo como 0<α <

2Re [λi ] |λi |2

paratoda i

analizando esta expresión encontramos que la estabilidad del algoritmo depende en el signo de las partes reales de los   eigenvalores de la matriz E rˆ (n)rT (n) . Si el modelo de la planta es perfecto la matriz es definida positiva y todos sus eigenvalores son reales y positivos. Por otra parte si el modelo de la planta tiene una respuesta en frecuencia diferente que la planta física, entonces los eigenvalores de la matriz de auto correlación de la señal de referencia filtrada no tienen la garantía de ser totalmente reales o de tener valores positivos en su parte real, de hecho si un eigenvalor es complejo, el modo de convergencia asociado a este eigenvalor tendrá una componente oscilatoria y en el caso de que la parte real del eigenvalor sea positiva la oscilación tenderá a disminuir y el algoritmo será estable. En la práctica no es muy factible hacer el análisis de estabilidad en cuanto a los signos de las partes reales de los eigenvalores, por lo que se emplea una condición suficiente pero no necesaria para la estabilidad del algoritmo, la cual establece que si la relación ˆ jωT )/G(e jωT )es estrictamente positiva real2 , esta condición implica que la diferencia de fase entre las respuestas G(e 2 El conjunto de números reales estrictamente positivo sólo contiene esos números reales x tal que x > 0. Este conjunto no contiene al cero. (A diferencia del conjunto de números reales no negativos.)


3.1. SISTEMAS DE CONTROL ALIMENTADOS HACIA ADELANTE (FEEDFORWARD CONTROL)

38

de la estimación de la planta y la planta física debe ser de ±90° para todas las frecuencias.

3.1.6.

Algoritmo LMS con escape (Leaky LMS)

Como se describió en las secciones anteriores, el algoritmo LMS con referencia filtrada (FXLMS) trata de minimizar el valor medio cuadrado de la señal de error, otro objetivo útil sería poder minimizar el valor cuadrado de los coeficientes del filtro, ya que de lograrlo se cuenta con muchas ventajas en la implementación. Para poder perseguir este objetivo la función de costo a minimizar puede ser redefinida de la siguiente forma   J2 = E e2 (n) + β wT w en donde β es un coeficiente positivo que sirve como parámetro de ponderación. Tomando la derivada de esta función de costo con respecto a los coeficientes del filtro obtenemos el gradiente instantáneo ∂ J2 = 2E [r(n)e(n)] + 2β w ∂w empleando el gradiente instantáneo en la ecuación que define la adaptación de los coeficientes tenemos w(n + 1) = (1 − αβ )w(n) − αr(n)e(n) observando esta ecuación encontramos que si la señal de error fuese cero, los coeficientes disminuirían su valor debido al termino de escape (leakage) (1 − αβ ). Si usamos un análisis de convergencia similar a los observados en los casos previos, encontramos que el algoritmo será convergente cuando las partes reales de los eigenvalores de la matriz   E rˆ (n)rT + β I sean positivos. Por lo tanto el efecto del termino de escape es sumar el coeficiente β a cada uno de los   eigenvalores de la matriz de correlación E rˆ (n)rT , con lo cual se logra que el algoritmo sea más robusto, ya que se asegura que los eigenvalores que tengan una pequeña parte real negativa ahora tengan una componente positiva. Esta suma de manera inevitable distorsiona y reduce la atenuación que se puede conseguir en el error medio cuadrático, por lo que hay que considerar que el factor de escape establece una relación costo beneficio entre desempeño y estabilidad. El efecto del termino de escape es sumar el coeficiente β a cada uno de los eigenvalores de la matriz de correlación   E rˆ (n)rT , con lo cual se logra que el algoritmo sea más robusto, ya que se asegura que los eigenvalores que tengan una pequeña parte real negativa ahora tengan una componente positiva.

El coeficiente β modifica la condición de estabilidad del algoritmo cuando se tiene una estimación de la planta diferente a la real, la nueva condición de estabilidad queda expresada como cos (φ (ωT )) >

−β |G(e jωT )|2

en donde φ (ωT ) es la diferencia de fase entre la estimación de la planta y la planta real. En esta ecuación encontramos

 2 que si G e jωT es muy pequeño para alguna frecuencia, en particular menor a β , entonces el lado derecho de la iniquidad anterior es menor a −1 y por lo tanto se satisface la estabilidad sin importar el error en la estimación de la fase.


3.2. IDENTIFICACIÓN DE LA PLANTA

39

ˆ Figura 3.5: Sistema de Identificación de la Trayectoria Secundaria S(z)

3.2.

Identificación de la Planta

ˆ Para poder emplear el algoritmo FxLMS es necesario contar con un estimado de la trayectoria secundaria S(z), esta estimación puede ser obtenida antes de la puesta en operación del sistema de cancelación activa de ruido. Sin embargo en muchos casos la trayectoria secundaria S(z) puede ser variante con el tiempo y por lo tanto en esos casos es necesario poder estimarla en línea para poder garantizar la estabilidad y convergencia del filtro adaptivo. En la figura 3.5 se muestra un sistema de cancelación activa de ruido que emplea el algoritmo FxLMS en conjunto con un sistema de identificación en línea. En este sistema el filtro adaptivo W (z) genera un ruido secundario y(n) que ˆ pasa a través de la trayectoria secundaria S(z), la cual es modelada por el filtro adaptivo S(z). Con este sistema, los ˆ son ajustados en línea para modelar de forma continua la trayectoria secundaria coeficientes del filtro adaptivo S(z) S(z) durante la operación del filtro de control de ruido W (z). ˆ es conecPara hacer la estimación de la trayectoria secundaria, se emplea un esquema en el cual el filtro adaptivo S(z) tado en paralelo con la trayectoria secundaria S(z), de esta manera la señal secundaria y(n) generada por el filtro de control W (z) sirve también como la señal de excitación del modelado de la trayectoria secundaria. El filtro de modelado ˆ es adaptado mediante el algoritmo LMS para minimizar a la señal f (n), la cual representa la diferencia entre la S(z) ˆ señal de ruido residual e(n) invertida en signo y la señal de salida de S(z). Posteriormente la señal de referencia x(n) ˆ es filtrada con una copia del filtro adaptivo S(z) para actualizar los coeficientes del filtro adaptivo W (z) empleando el algoritmo FxLMS. La señal d(n) es una interferencia para el proceso de identificación de la trayectoria secundaria ya que esta señal se encuentra altamente correlacionada con la señal de excitación y(n) (desde el punto de vista de la identificación de S(z)). Con este esquema la señal f (n) queda definida como ˆ −E(z) − S(z)Y (z) ˆ − [P(z)X(z) − S(z)Y (z)] − S(z)Y (z)   ˆ = S(z)W (z) − P(z) − S(z)W (z) X(z)

F(z) = =

ˆ debe ser de orden suficiente, x(n) debe ser persistente mente la señal f (n) deberá converger hacia cero, para ello S(z) ˆ queda definida como excitante y que P(z) y S(z) sean invariantes en el tiempo. La solución en estado estable de S(z) P(z) Sˆo (z) = S(z) − W (z) En esta ecuación podemos encontrar que la estimación de la trayectoria secundaria se encuentra afectada por un factor ˆ puede identificar de forma correcta a S(z) únicamente si P(z) = 0, o bien desconocido P(z) . El filtro adaptivo S(z) W (z)


3.2. IDENTIFICACIÓN DE LA PLANTA

40

que la señal d(n) sea equivalente a cero. Otro inconveniente se presenta cuando la señal y(n) no es excitante de forma persistente, lo cual brinda una solución dependiente de la señal. Además podemos encontrar que la estimación de S(z) también se encuentra afectada por el filtro adaptivo W (z), cuya solución óptima queda representada como W o (z) =

P(z) S(z)

que es un modelo inverso de la función de transferencia S(z), por lo que la interacción entre los filtros adaptivos W (z) ˆ es muy complicada. y S(z) Tomando lo anterior en cuenta, encontramos que se deben cumplir dos importantes requisitos en el proceso de modelado de la trayectoria secundaria: El estimado de S(z) debe ser producido sin importar la función de transferencia W (z). ˆ no debe interferir en la operación del sistema de cancelación activa de ruido. El filtro adaptivo S(z)

Estas dos propiedades parecen ser mutuamente excluyentes, ya que para poder obtener una estimación precisa e inˆ poder manipular la señal de excitación y(n)de forma dependiente de S(z) es preferible para el filtro modelador S(z) ˆ no sea invasivo, debe observar únicamente las señales anteriormente presentes en directa. Sin embargo para que S(z) el sistema.

3.2.1.

Técnica de Eriksson

En la figura 3.6 se describe una técnica de modelado que emplea una fuente para generar un ruido con media cero v(n) que no se encuentra correlacionada con el ruido primario. Esta señal generada de manera interna es sumada con la señal de control y(n) que es producida por el filtro adaptivo W (z) para controlar la fuente secundaria. De nueva cuenta ˆ es conectado en paralelo con la trayectoria secundaria, la señal de entrada a S(z) ˆ es el ruido el filtro modelador S(z) aleatorio v(n). El ruido residual queda expresado como e(n) = d(n) − s(n) ? y(n) − s(n) ? v(n) =

d(n) − y0 (n) − v0 (n)

en donde y0 (n) = s(n) ? y(n) es la componente de ruido secundario que se debe al ruido original, mientras que v0 (n) = s(n) ? v(n) es la componente del ruido secundario que tiene como origen el ruido aditivo. Un estimado de v0 (n) se obtiene a partir ˆ del filtro modelador S(z)como vˆ0 (n) = s(n) ˆ ? v(n) ˆ en donde s(n) ˆ es la respuesta al impulso del filtro modelador S(z).


3.2. IDENTIFICACIÓN DE LA PLANTA

41

Figura 3.6: Diagrama a bloques de un sistema de Cancelación Activa de Ruido con modelado de la trayectoria secundaria empleando ruido aditivo Resulta muy útil definir la componente de la señal de error que se debe exclusivamente al ruido original como u(n) =

d(n) − s(n) ? y(n)

=

p(n) ? x(n) − s(n) ? w(n) ? x(n)

=

[p(n) − s(n) ? w(n)] ? x(n)

estas ecuaciones demuestran que u(n) depende manera exclusiva de x(n), señal que no esta correlacionada con v(n), por lo que u(n) tampoco esta correlacionada con v(n). Teniendo definida ya a u(n) podemos plantear el problema como una estructura de identificación de sistemas estándar en donde u(n) actúa como una interferencia, que no esta correlacionada con v(n).   ˆ es de suficiente orden, la solución óptima que minimiza a E f 2 (n) queda expresada como Asumiendo que S(z) S 0 (z) Sˆo (z) = v v Svv (z) en donde Svv (z) es el espectro de potencias de v(n)y Sv0 v (z) es el espectro cruzado de potencias entre v0 (n) y v(n), el cual queda definido como la transformada z de la función de correlación cruzada rv0 v (k). Tomando esto en cuenta tenemos que Sv0 v (z) = S(z)Svv (z) y por lo tanto Sˆo (z) = S(z) esta ecuación muestra que la solución no se ve afectada por la presencia de u(n). Sin embargo la presencia de la perturbación que u(n) impone tiene un efecto en la convergencia del algoritmo adaptivo. ˆ queda expresada como Empleando el algoritmo LMS la actualización de los coeficientes del filtro modelador S(z) sˆ(n + 1) = sˆ(n) + µv(n) f (n)   = sˆ(n) + µv(n) v0 (n) − vˆ0 (n) − µv(n)u(n)


3.2. IDENTIFICACIÓN DE LA PLANTA

42

Se ha analizado que el valor esperado de sˆ(n) converge a la solución óptima cumpliendo que u(n) y v(n) no se encuentren correlacionadas, sin embargo esto no significa que los valores instantáneos de sˆ(n) sean iguales a los de s(n). Esto se debe a la presencia de µv(n)u(n) en la ecuación de adaptación, actuando como una perturbación que perjudica a la ˆ convergencia del algoritmo LMS y que degrada el desempeño del filtro adaptivo S(z). Si hacemos por un momento de lado a la señal perturbadora del modelado u(n) (asumiendo que el modelado se realiza fuera de linea), el factor de convergencia que brinda la adaptación más rápida se puede obtener con los límites ya mencionados en el capítulo anterior (en la ecuación 2.61), quedando expresado como µo f f =

2 3Mσv2

ˆ y σv es la desviación estándar del ruido blanco aleatorio en donde M es el número de coeficientes del filtro adaptivo S(z) v(n). Regresando ahora al modelado en línea de S(z), u(n) es un ruido no correlacionado con potencia σu2 . Si asumimos ˆ converge a un estimado aceptable de S(z), entonces la señal f (n) se aproximará hacia −u(n), por lo que la que S(z) componente de f (n) debida al ruido inyectado v(n) es despreciable. El error medio cuadrado de modelado puede ser expresado como M−1

σsˆ2 ≡ limn→∞ E

∑ [sˆm (n) − sm (n)]2 ≈

m=0

µ Mσu2 2

Por facilidad en cuanto al análisis, vamos a normalizar la ganancia de S(z) al ruido blanco, es decir M−1

∑ s2m (n) = 1

m=0

Si nos proponemos alcanzar un error de modelado con σsˆ = 0,1 (es decir -20 dB) entonces el coeficiente de adaptación estaría limitado a µon =

2 100Mσu2

y si buscamos que el nivel del ruido σv cumpla con la siguiente condición σv0 (n)n→∞ →

σe (n) 2

entonces la potencia del ruido residual es incrementada en una relación de σe2 1 4 = = = 1,3 [dB] 2 1 2 3 σe − σv0 1− 4 ˆ converge a S(z) tomando en cuenta la normalización planteada anteriormente en los coeficientes de S(z), cuando S(z) tenemos que σv0 (n) → σv y por lo tanto σu2 (n) = σe2 (n) − σv20 (n) → 3σv2


3.2. IDENTIFICACIÓN DE LA PLANTA

43

Figura 3.7: Filtros adicionales en los métodos mejorados de Bao (izquierda) y de Kuo (derecha) Finalmente podemos expresar el coeficiente de adaptación como µon =

2 300Mσv2

comparando los coeficientes de adaptación fuera de línea y en funcionamiento tenemos µon 1 = µo f f 100 ˆ en la operación en línea. por lo que en las condiciones planteadas tomaría 100 veces más la convergencia de S(z) Este método es invasivo ya que el ruido aleatorio aparecerá en la zona de control, estableciendo un límite superior en la atenuación del ruido que puede ser alcanzada con el sistema de cancelación de ruido.

3.2.2.

Técnicas mejoradas para la Identificación de S(z)

Como se analizó el la sección anterior, el principal problema de la técnica de modelado de la trayectoria secundaria es que el ruido blanco aleatorio inyectado v(n), aparece en la señal de error residual e(n). Por lo que e(n) tiene dos componentes, una parte es requerida para el proceso de control y la otra para el proceso de modelado. Dadas estas circunstancias, la parte requerida por un proceso es una perturbación para el otro y debido a esta intrusión entre los diferentes procesos es que el desempeño general del sistema de cancelación activa de ruido de ve degradado. Para solucionar el problema anterior es que se han planteado otros métodos que introducen un filtro adaptivo adicional. Este tercer filtro adaptivo quita la interferencia que el proceso de control tiene en el proceso de modelado, buscando que de esta manera tenga una convergencia más rápida.

3.2.2.1.

Métodos de Bao y Kuo

ˆ en la presencia de u(n) mediante la introducción de El método de Bao es un intento de mejorar la convergencia de S(z) un filtro adaptivo adicional en el proceso de modelado. En la figura 3.7 (del lado izquierdo) se muestra el filtro adaptivo B(z) agregado en el método de Bao. Este filtro es excitado por x(n) con el propósito de cancelar la interferencia que u(n) introduce en el proceso de estimación de S(z).


3.2. IDENTIFICACIÓN DE LA PLANTA

44

Figura 3.8: Diagrama a bloques método de Zhang Adicionalmente contamos con el método de Kuo (mostrado en el lado derecho de la figura 3.7) para los sistemas de cancelación activa de ruido de banda angosta. Con esta técnica el filtro adaptivo C(z) es empleado como predictor y es excitado por una versión retardada de e(n) con el propósito de predecir y cancelar la interferencia que u(n) causa al proceso de modelado. Es importante mencionar que en estos dos métodos la señal de error empleada en el proceso de control es el ruido residual del sistema, es decir ew (n) = e(n), por lo que no se realiza ningún esfuerzo para mejorar el desempeño del proceso de control.

3.2.2.2.

Método de Zhang

El problema de la interferencia mutua entre el proceso de control y el proceso de modelado (debido a que ew (n) = ds (n) = e(n)) es considerado en el método de Zhang 3.8. En este método el filtro de control, el filtro de modelado de S(n) y el filtro adicional empleado para mejorar el funcionamiento del sistema son actualizados de forma cruzada para reducir el acoplamiento mutuo entre el proceso de control y el proceso de modelado. Las señales empleadas en este método son   ew (n) = e(n) − v(n) ˆ = u(n) + v0 (n) − vˆ0 (n) ds (n) = e(n) − z(n) ˆ Suponiendo que S(z) ha convergido entonces v0 (n) ≈ vˆ0 (n) y ew (n) ≈ u(n) = d(n) − y0 (n). Cuando H(z) converge ˆ convergen entonces se cuenta entonces z(n) ≈ u(n) y por lo tanto ds (n) ≈ v0 (n). Dicho lo anterior, cuando H(z) y S(z) con las señales apropiadas en cada uno de los procesos y por lo tanto se espera un desempeño mejorado.

Conclusiones Los sistemas de control acúsitico de ruido, a diferencia de los empleados para cancelación eléctrica, deben considerar en sus algoritmos de adaptación los efectos que sufren las señales debido a las propiedades acústicas del espacio, los procesos de muestreo y captura de los datos para su tratamiento digital y todos los elementos que en su conjunto forman lo que se conoce como la trayectoria secundaria. La trayectoria secundaria modifica el contenido frecuencial de la señal de control, además provoca un defasamiento entre las señales de referencia y error, lo que provoca que el algoritmo de adaptación de los coeficientes del filtro de


3.2. IDENTIFICACIÓN DE LA PLANTA

45

control no funcione adecuadamente y no siga la dirección del gradiente negativo de la superficie de error. Ante este inconveniente es que se propuso el empleo del algoritmo FxLMS (LMS con referencia filtrada), el cual necesita conocer de forma aproximada la respuesta en frecuencia de la trayectoria secundaria, para filtrar a la señal de referencia con este estimado y emplear el resultado en el algoritmo de adaptación. El algoritmo FxLMS es una solución adecuada al problema de defasamiento provocado por la trayectoria secundaria, sin embargo, para emplearlo es necesario contar con un estimado de la respuesta en frecuencia de S(z), problema que en algunos casos puede ser resuelto con una estimación previa al funcionamiento del sistema de control (métodos fuera de línea). En ocasiones, la trayectoria secundaria sufre modificaciones durante el funcionamiento del sistema de control, por lo que la estimación en línea se vuelve un requerimiento. El algoritmo de Eriksson emplea una fuente interna de ruido blanco y un filtro adaptivo adicional para la estimación de la estimación de la trayectoria secundaria, los coeficientes obtenidos a partir de este proceso de estimación, son empleados para el filtrado de la señal de referencia utilizada en el proceso de adaptación de los coeficientes del filtro de control. Aunque el sistema de control activo de ruido de Eriksson es una solución adecuada para los problemas que la trayectoria secundaria provoca, existen algoritmos que realizan de mejor manera esta tarea. Un problema sustancial en el funcionamiento del algoritmo de Eriksson es la interferencia mutua que existe entre el proceso de adaptación del filtro de control y el de estimación. Otro inconveniente de este sistema, se encuentra al observar la permanencia de la señal de ruido blanco en el ruido residual, es decir en la señal de error e(n). Los sistemas alternativos al algoritmo de Eriksson deben mejorarlo resolviendo algunos de estos defectos. Los algoritmos de Bao y Kuo, mejoran el funcionamiento del algoritmo de Eriksson incorporando otro filtro al sistema. La función de este filtro adicional, es disminuir la componente presente en la señal de error e(n) de la señal de referencia x(n), misma que resulta ser una interferencia para el proceso de adaptación del filtro de estimación, aunque estas modificaciones mejoran de manera general el funcionamiento del sistema, no realizan ningún esfuerzo para reducir la interferencia que provoca el proceso de estimación en el de control. El algoritmo de Zhang, con su manejo cruzado de actualización de los coeficientes de los filtros ataca el problema en los dos procesos. Tanto los métodos de Kuo y Bao, así como el método de Zhang ayudan a mejorar el funcionamiento del proceso de estimación de la trayectoria secundaria, con lo que se permite utilizar un ruido blanco de menor amplitud y por lo tanto con menor presencia en el ruido residual. En el capítulo cinco, se observarán los resultados obtenidos en la simulación de estos algoritmos en un DSP de la familia C6000.


4 Arquitectura del DSP TMS320C6713

4.1.

Introducción

Los procesadores digitales de señales tales como la familia TMS320C6x (C6x) son microprocesadores rápidos de propósito especial con una arquitectura especializada y un conjunto de instrucciones para el procesamiento de señales. La notación C6x es empleada para designar a un miembro de la familia Texas Instruments (TI) TMS320C6000. La arquitectura de un procesador C6x es muy apropiada para cálculos de alta intensidad numérica. La arquitectura es de tipo VLIW (Very Long Instruction Word). Los procesadores digitales de señales son empleados para una amplia gama de aplicaciones, desde sistemas de comunicación y control hasta procesamiento de voz e imágenes. Los DSP’s de propósito general son empleados principalmente en aplicaciones de comunicaciones (sistemas de comunicación celular). Los DSP’s con aplicaciones encajadas son los que dominan mercados directos al consumidor como lo son teléfonos celulares, fax/modems, radios, impresoras, auxiliares de audición, reproductores MP3, televisiones de alta definición (HDTV), cámaras digitales, etc. Estos procesadores se han vuelto de común elección debido a que su cada vez menor costo y a que pueden manejar diferentes tareas con solo reprogramarlos. Los procesadores DSP son empleados principalmente en aplicaciones en tiempo real, en donde el procesamiento debe seguir el paso de los eventos externos, en muchas ocasiones los eventos externos son señales de entrada analógicas. El TMS320C6713 se basa en la arquitectura VLIW, en dicha arquitectura, se pueden capturar y procesar muchas instrucciones en forma simultánea, a esto se le conoce como paquete de búsqueda y retorno (Fetch Packet, FP). La arquitectura del C6x permite capturar ocho instrucciones al mismo tiempo en el bus de datos de programa de 256 bits de longitud desde la memoria interna del procesador.

46


4.2. ARQUITECTURA TMS320C6X

47

Figura 4.1: Un paquete de búsqueda y retorno (FP) que contiene tres paquetes de ejecución. La arquitectura original VLIW fue modificada por Texas Instruments para permitir colocar muchos paquetes de ejecución (Excecute Packet, EP) en un paquete de búsqueda y retorno, en donde un paquete de ejecución son un grupo de instrucciones que se ejecutan en paralelo. A esta modificación se le llama VelociTI y tiene considerables ventajas, ya que reduce el tamaño del código y aumenta el desempeño cuando las instrucciones se localizan fuera del microprocesador. Para el C6713 que tiene un reloj de 225[MHz], esto significa que podemos encolar 8 instrucciones de 32 bits cada 4.44[ns] alcanzando un total de 1350 MIPS (millones de instrucciones por segundo). Otras características del C6713 son su memoria interna de 264kB (8kB como memoria de programa de primer nivel L1P y 256kB como memoria de segundo nivel L2 compartida entre programa y datos), ocho unidades funcionales de ejecución (6 unidades aritmético lógicas y dos multiplicadores), un bus de direcciones de 32 bits (que puede direccionar hasta 4GB) y dos conjuntos de registros de propósito general de 32 bits. Los procesadores C67xx pertenecen a la familia C6x y son procesadores de punto flotante. El C6713 puede realizar procesamiento con punto fijo o con punto flotante.

4.2.

Arquitectura TMS320C6x

Entre los periféricos incluidos en el chip encontramos dos puertos McBSP (Multi-Channel Buffered Serial Port), dos temporizadores, un puerto de interfaz para anfitrión (Host Port Interface, HPI) y una interfaz para memoria externa de 32 bits (EMIF). Requiere 3.3[V] para las entradas y salidas y 1.26[V] para la alimentación interna del procesador. Entre los buses internos encontramos un bus de programa de 32 bits, un bus de programa de 256 bits (para acomodar las ocho instrucciones de 32 bits cada una), dos buses de direcciones de 32 bits, dos buses de datos de 64 bits y dos buses de 64 bits para almacenamiento de datos. Si contamos con buses de direcciones de 32 bits, entonces el espacio de memoria total es de 232 = 4GB, en donde se incluyen cuatro espacios de memoria externa CE0,CE1,CE2 y CE3. Contando con bancos independientes de memoria en el C6x se permiten dos accesos simultáneos en un ciclo de instrucción. Para acceder a dos bancos de memoria independientes se requiere de dos buses independientes. Dado que la memoria interna esta organizada en bancos de memoria, se pueden tener dos cargas o dos almacenamientos de instrucciones en paralelo. No existe conflicto alguno si los datos accesados se encuentran en bancos de memoria separados. Empleando buses separados para programa, datos y acceso directo a la memoria (DMA) se permite al C6x realizar peticiones de programa concurrentes, lectura/escritura de datos y operaciones con el DMA. Todo esto es posible teniendo a la memoria de instrucciones y de datos en diferentes espacios de memoria.


4.2. ARQUITECTURA TMS320C6X

48

El C6x es capaz de direccionar a nivel de bytes, la memoria interna esta organizada de manera separada para programa y para datos, contando con dos puertos internos de 32 bits para acceder a la memoria interna. El C6713 incluido en kit de desarrollo para principiantes (DSK) tiene una memoria interna de 264kB, la cual comienza en la dirección 0 × 00000000, una memoria externa SDRAM de 16MB, mapeada a través del banco de datos externo CE0 a la dirección 0 × 80000000. Además en el DSK se incluye una memoria tipo Flash de 512kB, mapeada a través del banco de memoria externa CE1 a la dirección 0 × 90000000. Con el DSK operando a 225MHz se puede alcanzar a realizar dos multiplicaciones y acumulaciones por ciclo, para un total de 450 millones de multiplicaciones y acumulaciones por segundo (MACs). Con seis de las ocho unidades funcionales capaces de realizar operaciones de punto flotante, se pueden alcanzar hasta 1350 millones de operaciones de punto flotante por segundo (MFLOPS). O bien podemos alcanzar hasta 1800 millones de instrucciones por segundo (MIPS).

4.2.1.

Unidades Funcionales

El CPU esta compuesto por ocho unidades funcionales independientes divididas en dos rutas para los datos (A y B). Cada ruta tiene una unidad multiplicadora (.M), para operaciones lógicas y aritméticas (.L), para saltos, manipulación de bits y operaciones aritméticas (.S) y para carga y almacenamiento de operaciones aritméticas (.D). Las unidades .S y .L son empleadas para instrucciones aritméticas, lógicas e instrucciones de salto. Todas las transferencias de datos se realizan empleando las unidades .D. Las operaciones de adición y substracción (ADD y SUB) pueden ser realizadas por cualquiera de las unidades, excepto las de multiplicación .M. Las ocho unidades esta compuestas de cuatro unidades tanto para punto flotante como para punto fijo (dos unidades .S y dos unidades .L), dos unidades aritmético lógicas para operaciones de punto fijo (unidades .D) y dos multiplicadores tanto para punto fijo o punto flotante (unidades .M). Cada unidad puede leer o escribir directamente al archivo de registros asignado a su propio camino de datos. Cada uno de los archivos de registros esta compuesto de dieciséis registros de 32 bits, desde A0 hasta A15 y desde B0 hasta B15. Con dos caminos cruzados (1x y 2x) se permite a las unidades funcionales de un camino de datos acceder a un operando de 32 bits del otro archivo de registros del lado opuesto. Se permiten hasta dos lecturas en los caminos cruzados por ciclo. Además se cuenta con 32 registros de propósito general, pero algunos están reservados para direccionamientos específicos y para instrucciones condicionales.

4.2.2.

Paquetes de Petición y Ejecución

Un paquete de ejecución (EP) esta compuesto por un grupo de instrucciones que pueden ser ejecutadas en paralelo en un ciclo de reloj. El número de paquetes de ejecución (EP’s) que se pueden meter dentro de un paquete de petición (FP) varia desde uno (cuando se tiene un EP con ocho instrucciones en paralelo) hasta ocho (cuando no se tiene ninguna instrucción en paralelo). Al bit menos significativo de cada instrucción de 32 bits se le emplea para determinar si la instrucción siguiente pertenece al mismo paquete de ejecución o si es parte del paquete siguiente.


4.2. ARQUITECTURA TMS320C6X

49

Figura 4.2: Diagrama general de la arquitectura C6x

4.2.3.

Pipelining (entubado)

El pipelining es una propiedad clave de los DSP’s, la cual permite tener instrucciones en paralelo funcionando adecuadamente. Existen tres etapas en el pipelining: petición de programa, decodificación y ejecución. 1. La etapa de petición de programa esta compuesta por cuatro fases: a) PG: Generación de la dirección de programa para pedir el contenido de una dirección. b) PS: Envío de la dirección de programa. c) PW: Fase de espera de los datos solicitados. d) PR: Recepción del paquete de petición para leer el código de operación desde la memoria. 2. Etapa de decodificación a) DP: despachamiento de las instrucciones en un paquete de petición (FP) a la unidad funcional apropiada. b) DC: Decodificación de la instrucción. 3. La etapa de ejecución que puede estar compuesta desde 6 fases hasta 10 (debido a las latencias de algunas instrucciones). Muchas instrucciones sólo necesitan una fase de ejecución. Instrucciones tales como las de multiplicación (MPY), carga (LDH/LDW), y las de salto (B) toman dos, cinco y 6 fases respectivamente. Las instrucciones que requieren fases de ejecución adicionales están asociadas con las operaciones de punto flotante y de doble precisión, pudiendo necesitar hasta 10 fases de ejecución. Como ejemplo tenemos a la instrucción de multiplicación de doble precisión (MPYDP), la cual tiene 9 retardos, por lo cual se necesitan hasta 10 fases.


4.2. ARQUITECTURA TMS320C6X

4.2.4.

50

Registros

Existen dos conjuntos de registros, cada uno de 16 registros, el archivero A (A0-A15) y el archivero B (B0-B15). Los registros A0,A1,B0,B1 y B2 pueden ser empleados como registros condicionales. Los registros A4-A7 y B4-B7 son empleados para el direccionamiento circular. Los registros A0-A9 y B0-B9 (excepto B3) son registros temporales. Los registros A10-A15 y B10-B15 se utilizan para almacenar y recuperar datos después de regresar de una subrutina. Datos de 40 bits pueden ser almacenados empleando un par de registros, los 32 bits menos significativos son almacenados en los registros pares, mientras que los 8 bits restantes son guardados en el siguiente registro (que es impar). A estos registros se les considera de propósito general, además se cuenta con muchos otros registros de propósito especial, los cuales son usados para operaciones de control e interrupción.

4.2.5.

Temporizadores

La arquitectura C6000 dispone de dos temporizadores de 32 bits que pueden ser usados para eventos de conteo o para realizar interrupciones al CPU. Con los temporizadores se puede dirigir a un convertidor analógico digital (ADC) para iniciar la conversión, o indicar a un controlador DMA para comenzar una transferencia de datos. Los temporizadores incluyen un registro en donde se almacena el periodo, un registro de conteo (en donde se almacena el valor que se incrementa con el contador) y finalmente un registro de control que realiza la tarea de monitoreo.

4.2.6.

Modos de direccionamiento

Los modos de direccionamiento especifican la forma en que se accede a la memoria. Se soporta tanto el modo de direccionamiento lineal como circular en el C6713. El modo de direccionamiento más utilizado es el modo indirecto.

4.2.6.1.

Direccionamiento Indirecto

El direccionamiento indirecto puede ser usado con o sin desplazamiento. El registro R representa uno de los 32 registros A0-A15 y B0-B15 que pueden apuntar a una dirección de memoria. El direccionamiento indirecto emplea el símbolo * en conjunto con alguno de los 32 registros de propósito general. Considerando a R como un registro de dirección tenemos: 1. ∗R contiene la dirección de la localidad de memoria en donde se almacena el dato. 2. ∗R + +(d). El registro R contiene la dirección o localidad de la memoria en donde se almacena el dato. Después de que se usa esta dirección, el apuntador R es post incrementado de tal forma que la nueva dirección será desplazada con el valor d, R + d. También se puede post decrementar empleando el símbolo (−−) de la misma forma. 3. ∗ + +R(d). Con esta sintaxis, la dirección es preincrementada con el desplazamiento d, de tal forma que la dirección actual sea R + d, de la misma forma podemos predecrementar empleando el símbolo (−−). 4. ∗ + R(d). Con esta sintaxis si tiene el efecto de preincrementar con el desplazamiento d, pero con la diferencia de que no se hace modificación en el valor del registro R.


4.2. ARQUITECTURA TMS320C6X

51

Figura 4.3: Funcionamiento del direccionamiento con buffer circular 4.2.6.2.

Direccionamiento Circular

El direccionamiento circular es empleado para crear un buffer circular. Este buffer es creado en el hardware y es sumamente útil en muchos algoritmos DSP como en el filtrado digital o en algoritmos de correlación, en donde los datos necesitan ser actualizados. El hecho de implementar el buffer circular desde el hardware lo hace mucho más eficiente que haciéndolo en el software. El C6x tiene hardware dedicado que permite el direccionamiento circular, esta forma de direccionamiento puede ser usada en conjunto con un buffer circular para actualizar las muestras desplazando los datos sin la sobrecarga que implica el desplazamiento muestra por muestra de forma directa. Si un apuntador alcanza el final del buffer circular, en donde se encuentra el último elemento del buffer, y posteriormente es incrementado, entonces el apuntador de forma automática es devuelto para apuntar al inicio del buffer, en donde se encuentra el primer elemento. Se pueden emplear dos buffers circulares independientes a través del uso de BK0 y BK1 controlados por el registro AMR. Los ocho registros conformados por A4-A7 y B4-B7, en conjunto con las unidades .D, pueden ser usados como apuntadores (para direccionamiento circular).


4.3. CONJUNTO DE INSTRUCCIONES

4.3.

Conjunto de Instrucciones

4.3.1.

Formato de Código Ensamblador

52

El formado del código ensamblador puede ser representado de la siguiente forma

Etiqueta || [ ] Instruccion Unidad Operandos; comentarios en donde la etiqueta (si es que esta presente) especifica una dirección o localidad de memoria que contiene una instrucción o datos. La etiqueta debe de localizarse en la primera columna. Las barras paralelas se deben poner si es que la instrucción se ejecuta en paralelo con la instrucción anterior. El campo escrito entre corchetes cuadrados es opcional, y se utiliza para hacer la instrucción condicional, como ejemplo [A2] especifica que la instrucción debe ejecutarse si se cumple la condición que A2 sea cero. Cualquier instrucción se puede volver condicional empleando para ellos los registros A1,A2,B0,B1 y B2. El campo correspondiente a la instrucción puede ser tanto una directiva para el ensamblador como un mnemónico. Una directiva para el ensamblador es un comando que el ensamblador debe de interpretar, mientras que un mnemónico es una instrucción de ejecución para el tiempo de funcionamiento del algoritmo. Las instrucciones o mnemónicos no pueden comenzarse a escribir en la primera columna. El campo de la unidad especifica alguna de las ocho unidades funcionales del procesador (este campo es opcional).

Tipos de Instrucciones 1. Adición/Resta/Multiplicación a) La instrucción

ADD .L1 A3,A7,A7 ; suma A3+A7 guarda en A7 suma los valores contenidos en los registros A3 y A7 y guarda el resultado en el registro A7. Especificar la unidad funcional .L1 es opcional. b) La instrucción

SUB .S1 A1,1,A1 ;resta 1 de A1 resta 1 al contenido del registro A1, el decremento se hace empleando la unidad .S1. c) Las instrucciones en paralelo

MPY .M2 A7,B7,B6 ; multiplicación con los 16LSB de A7,B7 guarda en B6 || MPYH .M1 A7,B7,A6 ; multiplicación con los 16MSB de A7,B7 guarda en A6 realizan la multiplicación de los 16 bits menos significativos de A7 y B7 y guardan el producto en el registro B6, de manera paralela empleando una segunda instrucción se realiza la multiplicación de los 16 bits más significativos de A7 y B7 y se guarda el resultado en A6. De esta manera se pueden realizar dos multiplicaciones y acumulaciones (MAC’s) en un ciclo de instrucción.


4.3. CONJUNTO DE INSTRUCCIONES

53

2. Carga/Almacenamiento a) La instrucciรณn

LDH .D2 *B2++,B7 ; carga B2 en B7 e incrementa B2 || LDH .D1 *A2++,A7 ; carga A2 en A7 e incrementa A2 carga en B7 la mitad de palabra (16 bits) cuya direcciรณn de memoria es apuntada por B2, despuรฉs realiza el incremento del apuntador a la siguiente direcciรณn de memoria. En paralelo se realiza otro direccionamiento indirecto para cargar en A7 el contenido de la memoria cuya direcciรณn sea especificada por A2, posteriormente A2 es incrementado para apuntar a la siguiente direcciรณn de memoria. Si en su lugar se hubiera empleado la instrucciรณn LDW se realizarรญa una carga de una palabra completa (32 bits). Se tienen dos trayectorias empleando .D1 y .D2 para permitir la carga de datos de una memoria a los registros A y B empleando la instrucciรณn LDW . Por otra parte si se empleara la instrucciรณn LDDW se puede realizar la carga de dos registros de 32 bits para el lado A y de dos registros de 32 bits para el lado B. b) La instrucciรณn

STW .D2 A1,*+A4[20] ; almacena A1 en la direcciรณn de A4 ; desplazada 20 registros guarda los 32 bits de la palabra contenida en el registro A1, en la direcciรณn especificada por el registro A4 desplazada 20 palabras, ademรกs el registro A4 es preincrementado pero no es modificado. 3. Salto El siguiente cรณdigo ejemplifica los saltos y las transferencias de datos.

Loop MVKL MVKH . . . SUB [A1] B NOP STW

.S1 x,A4 .S1 x,A4

.S1 A1,1,A1 .S2 Loop 5 .D1 A3,*A7

La primera instrucciรณn mueve los 16 bits menos significativos de la direcciรณn x al registro A4. La segunda instrucciรณn mueve los 16 bits mรกs significativos de la direcciรณn x al registro A4, el cual ahora contiene los 32 bits de la direcciรณn x. El registro A1 es usado como contador del lazo, en cada lazo es decrementado mediante la instrucciรณn SUB, y el valor del registro es probado para decidir si se realiza el salto. La ejecuciรณn del cรณdigo realiza el salto si el valor contenido en el registro A1 es diferente de cero. Si A1=0, entonces la ejecuciรณn continua y el valor contenido en el registro A3 es almacenado en la direcciรณn de memoria a la que el registro A7 apunta. Directivas del ensamblador Una directiva del ensamblador es un mensaje para el ensamblador y no es interpretado como una instrucciรณn. Las directivas son tomadas en cuenta en el proceso de ensamblado y a diferencia de las instrucciones no ocupan espacio


4.3. CONJUNTO DE INSTRUCCIONES

54

en la memoria. Direcciones de diferentes secciones pueden ser especificadas mediante directivas del ensamblador, por ejemplo, la directiva .sect ”my_bu f f er” define una sección de código o de datos a la cual se le nombra my_bu f f er. Las directivas .text y .data indican una sección para texto y datos respectivamente. Existen otras directivas del ensamblador como .re f y .de f , que son usadas para los símbolos no definidos y los definidos en ese orden. Otras directivas frecuentemente usadas son 1. .short directiva empleada para inicializar un entero de 16 bits. 2. .int empleada para inicializar un entero de 32 bits. 3. . f loat para inicializar una constante de 32 bits formato IEEE con precisión singular. 4. .double para inicializar una constante con formato IEEE de 64 bits de doble precisión. Los valores inicializados son especificados empleando las directivas .byte, .short o .int. Mientras que las variables no inicializadas se especifican usando la directiva .usect, la cual crea una sección no inicializada y por lo contrario la directiva .sect crea una sección inicializada.

Ensamblador Lineal Una alternativa a la programación en C, o en código ensamblador es el ensamblador lineal. Un optimizador de ensamblado en usado en conjunto con la fuente codificada como ensamblador lineal (con la extensión .sa) para generar código ensamblador fuente de ensamblador (con la extensión .asm) de una forma muy parecida en la que el compilador para optimizar de C es empleado con un código fuente en lenguaje C. El código resultante del optimizador de ensamblador comúnmente es más eficiente que el resultante del compilador para optimizar. El proceso siguiente con el código ensamblador obtenido con cualquiera de los dos métodos debe ser ensamblado para generar código de objeto. Programar en ensamblador lineal genera una relación costo beneficio entre el esfuerzo requerido para programar y la eficiencia del código. El optimizador de ensamblado asigna la unidad funcional y el registro a emplear (puede ser especificado por el usuario), busca las instrucciones susceptibles de ejecutarse en paralelo, y realiza el pipelining para la optimización. En la programación de ensamblador lineal no se permite especificar instrucciones en paralelo y al igual que en el código ensamblador normal podemos o no especificar la unidad funcional. Es interesante observar que el código ensamblador del C6x en cuanto a su sintaxis no es tan complicado como el de las arquitecturas C2x/C5x o de la familia C3x. Mientras mas sencillas sean las instrucciones el compilador de C tiene mayor posibilidad de generar código eficiente. Sin embargo, aunque resulta más sencillo programar código ensamblador para realizar una tarea deseada, esto no implica que se genere código ensamblador eficiente, ya que puede llegar a ser relativamente complicado optimizar de forma manual un programa para obtener código completamente eficiente (y sobretodo entendible). El código ensamblador linea es un paso intermedio entre la codificación en C y el lenguaje ensamblador, emplea la sintaxis del lenguaje ensamblador, pero con operandos y registros del tipo de los empleados en lenguaje C. Entre las directivas del ensamblador lineal encontramos a .reg que es emplada para declarar variables con nombres descriptivos que se van a almacenar en los registros del procesador. Otras directivas muy empleadas son .cproc y .end proc que son usadas para especificar una sección que hace llamados a código en C, o secciones de código que deben ser optimizadas por el optimizador del ensamblador.


4.4. INTERRUPCIONES

55

Llamado a ensamblador desde C Es posible llamar a instrucciones o directivas del ensamblador desde el código en C, lo cual resulta útil cuando se busca tener acceso a características del hardware no disponibles empleando lenguaje C. Para ello es necesario usar la sentencia asm. De la siguiente manera asm(”codigo ensamblador”) La sentencia en ensamblador debe ser válida, ya que el compilador no hace ninguna revisión en cuanto a la sintaxis y copia el enunciado directamente al archivo de salida, si es que existiera un error el ensamblador debe detectarlo.

Llamado a funciones de ensamblador desde C También es posible invocar una función de ensamblador desde un programa en lenguaje C. Para ello el registro B3 es preservado y empleado para contener la dirección de retorno de la función que realiza el llamado. De manera opcional es posible hacer una declaración de una función de ensamblador dentro del programa en C, lo cual se realiza de la siguiente manera extern int f unc();

4.4.

Interrupciones

Una interrupción puede ser programada de manera interna o externa. Las interrupciones detienen el proceso actual en el CPU de tal forma que pueda realizar una tarea requerida iniciada por la interrupción. El flujo del programa es redireccionado a una rutina de servicio de interrupción, y las fuentes que pueden generar interrupciones pueden ser desde un convertidor analógico digital (ADC), un temporizador, etc. Cuando se presenta una interrupción, las condiciones en las que se encuentra el proceso actual deben ser guardadas para ser restablecidas después de ser completada la tarea solicitada por la interrupción. Existen 16 diferentes fuentes de interrupción, en ellas se incluyen dos temporizadores, cuatro interrupciones externas, cuatro interrupciones llamadas por los puertos McBSP y cuatro llamadas por el DMA. Sin embargo únicamente se tienen disponibles a utilizar doce interrupciones (desde INT4 hasta INT11).

4.4.1.

Registros de Control de Interrupción.

Los registros de control de interrupción son los siguientes: CSR (Control Status Register): Contiene el bit GIE (Global Interrupt Enable) y otros bits de estado y control IER (Interrupt Enable Register): Sirve para habilitar/deshabilitar de manera individual las interrupciones. IFR (Interrupt Flag Register): En el se indica el estado de las interrupciones. ISR (Interrupt Set Register): Sirve para hacer llamados a interrupciones pendientes. ICR (Interrupt Clear Register): Sirve para quitar interrupciones pendientes.


4.5. PUERTOS SERIALES MULTICANAL BUFEREADOS

56

ISTP (Interrupt Service Table Pointer): Sirve para localizar las direcciones de las rutinas de servicio de interrupción ISR. IRP (Interrupt Return Pointer): Apunta a la dirección de retorno de interrupción. NRP (Nonmaskable interrupt Return Pointer): Apuntador de retorno para la interrupción no mascarable. Las interrupciones son jerarquizadas de acuerdo a su prioridad, la interrupción de Reset tiene la más alta prioridad, siguiéndole la interrupción no mascarable (NMI), las cuales tienen pines externos para hacer los llamados. El registro IER (Interrupt Enable Register) es usado para habilitar una interrupción en específico y se puede revisar si una interrupción ha ocurrido desde el registro de banderas de interrupción (IFR). La interrupción NMI no es mascarable junto con la interrupción de Reset. Sin embargo la interrupción NMI sí puede ser deshabilitada, lo cual se logra borrando el bit NMIE (Nonmaskable Interrupt Enable) en el registro CSR, lo cual sólo ocurre cuando se presenta un Reset o una interrupción no mascarable. Si se borra el bit NMIE, todas las interrupciones desde INT4 hasta INT15 son deshabilitadas. La señal de Reset sirve para detener al procesador, mientras que la interrupción NMI es empleada para enviar alertas al CPU sobre posibles problemas en el equipo. Tenemos otras doce interrupciones de menor prioridad (INT4 hasta INT15) siendo INT4 la de mayor prioridad. Para que una interrupción mascarable pueda ser procesada se debe cumplir con las siguientes condiciones El bit GIE debe estar en 1. El bit NMIE debe estar en 1. El bit correspondiente de tipo IE debe estar en 1. Cuando ocurre la interrupción se habilita el bit correspondiente en el registro de banderas de interrupción (IFR). Además para que una interrupción ocurra, el CPU no debe estar ejecutando una ranura de retardo asociada a una instrucción de salto. Cuando una interrupción comienza se emplea la tabla de servicio de interrupción (IST), en cada localidad direccionada en esta tabla se encuentra un paquete de petición (8 instrucciones). En la tabla se direccionan 16 paquetes de ejecución, la dirección contenida en la tabla es un desplazamiento (offset) asociado a cada interrupción. Es decir para la interrupción INT11, se debe tomar la dirección base y desplazarla 160h. Dado que un paquete de petición (Fetch Packet) se tienen 8 instrucciones de 32 bits, es decir 256 bits (o 32 bytes) cada desplazamiento en la tabla es incrementado con respecto a la interrupción anterior en 20h = 32. El paquete de petición para la interrupción Reset debe estar en la dirección 0, sin embargo el paquete de petición asociado a las demás interrupciones puede ser reasignado. Para poder hacerlo se debe escribir la dirección base en el campo ISTB (Interrupt Service Table Base) dentro del registro ISTP. Cuando ocurre un Reset el ISTB es cero.

4.5.

Puertos Seriales Multicanal Bufereados

Se tienen dos puertos McBSP disponibles en la arquitectura C6000, con ellos se tiene acceso a periféricos externos de bajo costo. Los puertos McBSP ofrecen características tales como comunicación full-duplex, reloj y entramado


4.6. ACCESO DIRECTO A MEMORIA (DMA)

57

independientes para la recepción y transmisión. Los pines DX y DR son empleados para la transmisión y recepción de datos en la comunicación. La información de control se maneja en los registros CLKX, CLKR, FSX y FSR. El CPU y el controlador DMA leen los datos en el registro de recepción de datos (DRR) y escriben los datos a transmitir en el registro de transmisión de datos (DXR). El registro de corrimiento (XSR) hace los corrimientos de los datos hacia el pin DX. El registro de corrimiento para la recepción (RSR) copia los datos recibidos en el pin DR al registro del buffer de recepción (RBR). Finalmente los datos en el RBR son copiados al DRR para ser leídos ya sea por el CPU o por el controlador DMA.

4.6.

Acceso Directo a Memoria (DMA)

El DMA permite la transmisión de datos de o hacia una memoria interna o dispositivos externos sin la intervención del CPU. Además, se pueden configurar de manera independiente dieciséis canales DMA mejorados (Enhanced DMA) para la transmisión de datos. El DMA puede acceder la memoria interna del chip y el EMIF, así como el HPI. Datos de diferentes tamaños pueden ser transferidos (bytes, medias palabras o palabras). Para poder emplear el DMA es necesario configurar algunos registros, como lo son los registros de direccionamiento (de la fuente de datos y su destino), los índices, cuenta de elementos y tramas al recargar, datos globales del DMA y los registros de control. Las direcciones para fuente y destino pueden encontrarse tanto en la memoria interna de programa, interna de datos, en la interfaz para memoria externa y en el bus interno para periféricos. Las transferencias realizadas por el DMA pueden ser disparadas por interrupciones de los periféricos internos o bien por pines externos. Para cada recurso, a cada canal del DMA se le puede asignar una prioridad con respecto al CPU, siendo el canal cero el de más alta prioridad.

4.7.

Consideraciones de la Memoria

Los bloques de código pueden ser acomodados en la memoria en secciones que son especificadas en el archivo de comandos para el enlazador (linker command file). Las secciones definidas en este archivo pueden estar inicializadas o no inicializadas, las secciones inicializadas son: .cinit Sección empleada para variables globales y estáticas .const Para constantes globales y estáticas. .switch En esta sección se guardan tablas de saltos para sentencias tipo switch muy grandes. .text Constantes y código ejecutable Por otra parte las secciones no inicializadas son: .bss Para variables globales y estáticas


4.7. CONSIDERACIONES DE LA MEMORIA

58

Figura 4.4: Alineamiento de los datos en la memoria .far Para variables globales y estáticas declaradas como far .stack Guarda espacio para la pila del sistema .system Reserva espacio para la memoria dinámica y el acomodo de espacio llamado por funciones como malloc, calloc y realloc.

4.7.1.

Alineado de los datos (Data Alignment)

El C6x siempre accede a datos alineados, lo que le permite poder direccionar con bytes, medias palabras o palabras de 32 bits. El formato para los datos esta compuesto de cuatro fronteras para los bytes, dos fronteras para las medias palabras y una frontera para las palabras. Por ejemplo para poder realizar una carga de 32 bits con la instrucción LDW , la dirección debe estar alineada con una frontera para palabras, esto es que los dos bits menos significativos de la dirección deben ser cero.

4.7.2.

Directivas Pragma

Las directivas pragma le indican al compilador que debe considerar algunas funciones. Entre las directivas mas comunes encontramos DATA_ALIGN, DATA_SECT ION,etc. La sintaxis de la directiva DATA_ALIGN es #pragma DATA_ALIGN (symbol, constant); que asigna a symbol a una frontera, la cual depende del valor de constant, que es una potencia de dos. Esta directiva es empleada para alinear datos en la memoria. Por otra parte la directiva DATA_SECTION prepara espacio para symbol en una sección, esta directiva es empleada para acomodar una sección en la memoria externa. Por ejemplo: #pragma DATA_SECT ION(bu f f er, ”.extRAM”)


4.8. FORMATOS NUMÉRICOS DE PUNTO FIJO Y DE PUNTO FLOTANTE

59

sirve para acomodar a bu f f eren la sección extRAM. Para ello debemos definir a esta sección en el archivo para el enlazador, particularmente en el módulo SECTIONS:

SDRAM : org = 0x80000000, len = 0x01000000 en donde 0x80000000 es la dirección hacia la memoria externa (en el espacio CE0).

4.8.

Formatos numéricos de punto fijo y de punto flotante

4.8.1.

Tipos de datos

Algunos de los tipos de datos más empleados son 1. short tiene un tamaño de 16 bits representados en complemento a dos, por lo que tienen un rango desde −215 hasta  215 − 1 2. int tiene un tamaño de 32 bits representados en complemento a dos, por lo que tiene un rango de −231 hasta  231 − 1 3. f loat tiene un tamaño de 32 bits, con formato de la IEEE de 32 bits, por lo que tiene un rango desde −2−126 = 1,175494 × 10−38 hasta 2128 = 3,40282346 × 1038 4. doubletiene un tamaño de 64 bits, representados en formato de la IEEE de 64 bits, por lo que tiene un rango de 2−1022 = 2,22507385 × 10−308 hasta 2+1024 = 1,79769313 × 10+308

4.8.2.

Formato de Punto Fijo

Cuando se emplea lógica de punto fijo el programador debe estar ocupado del rango dinámico de los números, ya que se pueden representar una menor cantidad de números en el formato entero que los que se permite en el formato de punto flotante, por ello los procesadores de punto fijo comúnmente requieren un mayor esfuerzo en la programación.

Representación de Números en Formato Q El valor decimal de un número en complemento a dos se obtiene como D(B) = −bN−1 2N−1 + bN−2 2N−2 + · · · + b1 21 + b0 20 el formato en complemento a dos, permite a los procesadores realizar adiciones y sustracciones empleando el mismo hardware. Existe una limitante en el rango dinámico que se puede emplear, por ejemplo para un sistema de 16 bits, no es posible representar números mayores que +215 − 1 = 32767 y menores que −215 = 32768. Para lidiar con esta limitante, los números son normalizados entre −1 y 1. Esta normalización se logra moviendo el punto decimal implícito al formato. Es importante considerar que el punto decimal reside en la imaginación del programador ya que


4.8. FORMATOS NUMÉRICOS DE PUNTO FIJO Y DE PUNTO FLOTANTE

60

Figura 4.5: Representación entera y fraccional con punto fijo

Figura 4.6: Multiplicación y almacenamiento de números en formato Q-15 no es especificado al hardware de forma alguna por lo que es un asunto de interpretación de los datos. Trabajando de esta manera el valor fraccionario se obtiene como F(B) = −bN−1 20 + bN−2 2−1 + · · · + b1 2−(N−2) + b0 2−(N−1) A esta forma de representar los números fraccionarios se le denomina formato Q, cuando se emplea este formato el programador debe seguir la posición del punto binario implícito en el formato. En la descripción anterior sobre la representación normalizada con números de 16 bits se presentaron los números en formato Q-15, ya que se cuenta en este formato con un bit para el signo y 15 bits para los bits fraccionarios. Cuando dos números de este tipo se multiplican, se obtiene un número en formato Q-30, en donde el bit 31 representa el signo y el bit 32 es un bit adicional para el signo. Cuando se requiere almacenar el resultado de esta multiplicación en una memoria de 16 bits es necesario guardar los bits más significativos, para hacerlo es necesario hacer un corrimiento de 15 bits a la derecha y guardar los primeros 16 bits.


4.8. FORMATOS NUMÉRICOS DE PUNTO FIJO Y DE PUNTO FLOTANTE

61

Figura 4.7: Representación números en 4 bits. Cuando se emplean números en punto fijo es necesario considerar la posibilidad de sobre flujo (overflow) en las operaciones realizadas, para ejemplificar de manera sencilla este problema consideremos un sistema de representación de números en cuatro bits, en donde el número más negativo es −8 y el más positivo es 7, dicho sistema es representado en la rueda de la figura 4.7 Dado que únicamente se pueden representar números entre los límites de −8 y 7 es fácilmente observable que cualquier multiplicación o suma que tenga como resultado un número mayor a 7 o menor a -8 provocará un sobre flujo. La representación de números en formato Q resuelve este problema para la multiplicación mediante la normalización del rango dinámico a -1 y 1, ya que la multiplicación de dos números fraccionarios siempre será un número fraccionario (el cual puede ser representado con el mismo formato). Sin embargo el problema de sobre flujo sigue presente para las operaciones de suma y resta, para lidiar con este inconveniente, se emplean técnicas de escalamiento de los datos.

Escalamiento de los Datos Como se ha expuesto anteriormente, cuando dos números en formato Q-15 se multiplican el resultado se localizará dentro del mismo rango, por lo que no existe problema de sobre flujo. Sin embargo, cuando dos números en formato Q-15 se suman, el resultado puede localizarse fuera del rango, provocando un sobre flujo, la manera más sencilla de prevenir el sobre flujo es mediante el escalamiento de los datos. La idea detrás del escalamiento consiste en escalar hacia abajo la señal de entrada, realizar el procesamiento requerido y finalmente regresar a la escala original el resultado. Una manera sencilla de realizar dicho escalamiento es el corrimiento de los bits hacia la derecha, ya que cada corrimiento resulta en dividir en dos la magnitud de la señal. Una forma adicional de prevenir los sobre flujos en el filtrado de señales es escalar los coeficientes del filtro, consideremos la salida del filtro definido por la siguiente ecuación en diferencias N−1

y(n) =

∑ h(k)x(n − k) k=0

en donde los términos h denotan los coeficientes del filtro o la respuesta al impulso de este. Supongamos ahora que los coeficientes del filtro pueden ser representados en formato Q-15, esto es: x(n − k) ≤ 1. Para garantizar la ausencia de


4.8. FORMATOS NUMÉRICOS DE PUNTO FIJO Y DE PUNTO FLOTANTE

62

sobre flujos debemos cumplir con N−1

|y(n)| ≤

∑ |h(k)| ≤ 1 k=0

Por lo que es necesario hacer una revisión de los coeficientes del filtro y hacer los escalamientos necesarios para prevenir el sobre flujo.

4.8.3.

Formato de Punto Flotante

Los procesadores que pueden emplear punto flotante tienen un rango dinámico mucho mas amplio, por lo que el escalamiento no es un problema. Para el formato de precisión singular de punto flotante, el bit número 31 representa el signo, los bits 23 hasta el 30 representan los bits del exponente, y los bits desde el cero hasta el 22 representan los bits fraccionarios. Las instrucciones que realizan operaciones de punto flotante tienen las terminaciones SP o DP que indican el tipo de precisión empleado. Debemos considerar que las instrucciones de punto flotante tienen una mayor cantidad de tiempos de espera que las instrucciones de punto fijo, por lo que es necesario ponderar la relación costo beneficio de emplear el rango dinámico que ofrecen los datos de punto flotante con la degradación de la velocidad.

Conclusiones En este capítulo se mostró una breve introducción a la arquitectura del DSP TMS320C6713 miembro de la familia C6000 de Texas Instruments, así como a las herramientas y técnicas de programación que se emplearon para la implementación de las pruebas y simulaciones de los sistemas de control activo de ruido mostrados en el capítulo anterior. El empleo de los procesadores de señales digitales es necesario debido las características optimizadas de estos para el cálculo de operaciones de multiplicación y acumulación, mismas que tienen un uso muy frecuente en los algoritmos de procesamiento de señales, como ejemplo tenemos a los filtros digitales utilizados en los algoritmos de control activo de ruido. La capacidad de uso del direccionamiento circular por parte de la familia C6000 es una característica muy importante para la disminución de los tiempos e instrucciones de procesamiento, todas las subrutinas de filtrado y adaptación de los coeficientes como se verá en el capítulo siguiente fueron realizadas aprovechando esta característica. Otro aspecto importante a observar en los algoritmos a desarrollar es el manejo numérico de los datos, dependiendo si son empleados como valores en punto flotante o en punto fijo, como se describió en este capítulo, la dificultad de programación en los algoritmos de punto fijo es mayor debido al cuidado que se debe tener con la interpretación de los datos y con la localización del punto decimal. Los procesadores de punto flotante tienen por lo general un costo mayor y el consumo de energía también se incrementa (factor a tomar en cuenta en dispositivos móviles), por lo que es necesario definir que es lo conveniente para cada aplicación.


5 Implementación de los Sistemas de Cancelación Activa de Ruido en el DSP TMS32OC6713

Introducción 5.1.

Implementación del Filtro Adaptivo como Identificador de Sistemas

Como se analizó en los capítulos anteriores los filtros adaptivos pueden ser empleados para modelar sistemas desconocidos, esto se logra comparando la salida del sistema que se busca identificar con la que se obtiene aplicando la misma entrada al filtro Adaptivo. La diferencia entre la salida del sistema a identificar d(n) y la salida del filtro Adaptivo y(n) constituye el término de error e(n), el cual es empleado para adaptar los coeficientes del filtro Adaptivo según las ecuaciones vistas en capítulos anteriores para el algoritmo LMS. Para esta prueba se implementó un filtro IIR de séptimo orden con el propósito de identificar su respuesta con un filtro

Figura 5.1: Identificación de Sistemas con Filtro Adaptivo 63


5.1. IMPLEMENTACIÓN DEL FILTRO ADAPTIVO COMO IDENTIFICADOR DE SISTEMAS

64

Figura 5.2: Respuesta en frecuencia del filtro IIR que se desea identificar Adaptivo de tipo FIR de 32 coeficientes. La banda de paso del filtro se encuentra entre π/3 y 2π/3 (frecuencia de Nyquist normalizada) en la figura 5.2 se muestra la respuesta en frecuencia del filtro a identificar. La señal de entrada x(n), que es común tanto para el filtro desconocido como para el filtro Adaptivo es una señal de ruido blanco aleatorio con con frecuencia máxima de 4[kHz], dicha señal es empleada con la finalidad de excitar a toda la banda de frecuencias en la que operan los filtros, tomando en cuenta que la frecuencia de muestreo empleada es de 8[kHz]. En el algoritmo 1 se muestra el código empleado en la interrupción que se ejecuta cada vez que se cuenta con una nueva muestra en el convertidor analógico a digital. El ruido blanco fue alimentado en la línea de entrada de la tarjeta de desarrollo (DSK) y las muestras obtenidas con este procedimiento fueron escaladas mediante un corrimiento de 8 bits a la derecha. Una vez que se tiene la muestra de entrada, esta es almacenada en el buffer de entrada del filtro IIR (con capacidad de 8 muestras) y en el buffer de entrada del filtro Adaptivo (con capacidad de 32 muestras). La nueva salida del filtro IIR se obtiene realizando el producto punto del vector de coeficientes B con el buffer de entrada, menos el producto punto del vector de coeficientes A con el buffer en donde se almacenaron las 7 salidas previas, por otra parte la salida del filtro Adaptivo se obtiene mediante el producto punto del vector de coeficientes del filtro FIR con el buffer en donde se almacenó la entrada actual y las 31 entradas previas. Cuando se cuenta con las salidas de ambos filtros, éstas son comparadas para obtener la señal de error e(n), la cual se utiliza para actualizar los coeficientes del filtro de acuerdo al algoritmo LMS. En las figuras 5.3 y 5.4 se muestra el resultado del proceso de identificación, como se puede observar la respuesta del filtro después de la adaptación es prácticamente igual a la respuesta del filtro IIR que se buscó identificar, por lo que podemos concluir que el algoritmo LMS ha sido implementado correctamente en el DSP. Es importante considerar para las aplicaciones en tiempo real la cantidad de ciclos de procesamiento que una función emplea, esta información la podemos obtener de una manera sencilla cuando el programa ha sido escrito en lenguaje ensamblador pero cuando se emplea programación en C o en ensamblador lineal no se conoce la cantidad exacta de instrucciones ejecutadas en forma directa. Es por ello que Code Composer Studio cuenta con herramientas que permiten


5.1. IMPLEMENTACIÓN DEL FILTRO ADAPTIVO COMO IDENTIFICADOR DE SISTEMAS

Figura 5.3: Respuesta en frecuencia del filtro IIR a identificar y el filtro Adaptivo después de la adaptación

Figura 5.4: Fase de la respuesta en frecuencia del Filtro

65


5.1. IMPLEMENTACIÓN DEL FILTRO ADAPTIVO COMO IDENTIFICADOR DE SISTEMAS

Algoritmo 1 Función de Interrupción

interrupt void serialPortRcvISR() { int temp, n, ASUM, BSUM; short input, IIR_OUT; short stemp, stemp2; temp = MCBSP_read(DSK6713_AIC23_DATAHANDLE); input = temp >> S; for( n = 7 ; n > 0 ; n-- ) IIRwindow[n] = IIRwindow[n-1]; IIRwindow[0] = input; BSUM = 0; for( n = 0 ; n < 7 ; n++ ){ BSUM += ((BS[n] * IIRwindow[n]) << 1); } ASUM = 0; for( n = 0 ; n < 6 ; n++ ){ ASUM += ((AS[n] * y_prev[n]) << 1); } IIR_OUT = (BSUM - ASUM) >> 16; for( n = 6 ; n > 0 ; n-- ) y_prev[n] = y_prev[n-1]; y_prev[0] = IIR_OUT; /************************/ /*FILTRADO ADAPTIVO*/ /************************/ for( n = 31 ; n > 0 ; n-- ) FIRwindow[n] = FIRwindow[n-1]; FIRwindow[0] = input; // Filtrado con coeficientes actuales temp = 0; for( n = 0 ; n < 32 ; n++ ){ temp += ((h[n]*FIRwindow[n]) << 1); } y = temp >> 16; // Calculo del error e = IIR_OUT - y; // Actualizacion de los coeficientes stemp = (DELTA*e)>>15; for( n = 0 ; n < 32 ; n++ ){ stemp2 = (stemp*FIRwindow[n]) >> 15; h[n] = h[n] + stemp2; } MCBSP_write(DSK6713_AIC23_DATAHANDLE, y << S ); }

66


5.1. IMPLEMENTACIÓN DEL FILTRO ADAPTIVO COMO IDENTIFICADOR DE SISTEMAS

67

Algoritmo 2 CMD

-heap 0x2000 -stack 0x0100 MEMORY { vecs: o MMEM: o IRAM: o CE0: o } SECTIONS { "vectors" .cinit .text .stack .bss .const .data .far .switch .tables .cio .sysmem .mydata }

= = = =

00000000h 00000200h 00000300h 80000000h > > > > > > > > > > > > >

l l l l

= = = =

00000200h 00000100h 0000FD00h 01000000h

vecs IRAM IRAM IRAM IRAM IRAM IRAM IRAM IRAM IRAM IRAM IRAM MMEM

la creación de reportes sobre el desempeño del código. Para el código de programa descrito en el algoritmo 1 la cantidad de ciclos de instrucción invertidos es de 2546, mismo que para aplicaciones en tiempo real debe ser ejecutado en el intervalo requerido por el tiempo de muestreo empleado. Una forma de mejorar el desempeño en la implementación del filtro Adaptivo es escribir el código del filtrado Adaptivo directamente en lenguaje ensamblador, ya que de esta forma es posible emplear el direccionamiento circular y así ahorrar el tiempo requerido para el corrimiento de las muestras en el buffer. Para la implementación del filtro Adaptivo mediante el direccionamiento circular se emplea el mapa de memoria definido en el archivo del enlazador mostrado en el algoritmo 2 , en este archivo se define la sección de memoria .mydata, la cual se localiza en el bloque de memoria MMEM que tiene su dirección origen en 0x00000200 y tiene como longitud 0x00000100, es decir 256 bytes. En esta sección de memoria se pretende almacenar los coeficientes del filtro Adaptivo y el buffer circular de 32 muestras, dado que estos datos emplean el formato short (de 16 bits) cada valor necesitará de 2 bytes, es por ello que para un filtro Adaptivo tipo FIR de orden 32 requerimos 64 bytes para los coeficientes y otros 64 bytes para el buffer circular, además de otra dirección de memoria para almacenar el apuntador al buffer circular. La inicialización de los coeficientes del filtro y de los valores almacenados en el buffer circular se realiza mediante el código en ensamblador mostrado en el algoritmo 3. Como se puede observar en dicho código se inicializa el buffer y los coeficientes del filtro con ceros y en la dirección de memoria subsecuente se guarda la dirección de memoria inicial del buffer 0x00000200. Para implementar el filtro Adaptivo con direccionamiento circular se modifica la función de interrupción para realizar el llamado a la función en ensamblador que se muestra en el algoritmo 6, dentro de esta función se realiza el filtrado y la adaptación de los coeficientes. En cuanto a la lógica matemática empleada no se realiza ningún cambio, por lo que


5.2. IDENTIFICACIÓN DE TRAYECTORIA ACÚSTICA CON TÉCNICAS DE FILTRADO ADAPTIVO

68

Algoritmo 3 Inicialización de la memoria

.sect ".mydata" .short 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 .short 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 .field 0x00000200, 32

Figura 5.5: Diagrama identificador acústico los resultados deben ser equivalentes a los obtenidos con el algoritmo anterior. Analizando el funcionamiento de la implementación del filtro Adaptivo con el direccionamiento circular se encontró una sustancial reducción en el tiempo de procesamiento empleado por la función de interrupción, la cual requirió un total de 960 ciclos de instrucción. Todo esto sin observar diferencias en cuanto a los resultados obtenidos con respecto a la identificación del sistema, por lo queda comprobada la mayor eficiencia que se obtiene cuando se emplea este tipo de direccionamiento.

5.2.

Identificación de trayectoria acústica con técnicas de Filtrado Adaptivo

En la sección anterior se realizó la identificación de un filtro IIR mediante un filtro FIR Adaptivo, para esta sección se muestran los resultados obtenidos al emplear el algoritmo de filtrado Adaptivo para identificar una trayectoria acústica. En la figura 5.5 se muestra el sistema montado en este experimento, en él se puede observar que el filtro a identificar es ahora la trayectoria que recorre la señal de ruido blanco que se genera de manera interna en el DSP. Como se tiene esquematizado en la figura 5.5, se emplea una señal de ruido blanco que debe transitar por el espacio acústico entre la bocina y el micrófono, la señal acústica es capturada de nueva cuenta para poderla comparar con la salida que se tiene en el filtro Adaptivo y modelar las transformaciones que sufre la señal a lo largo de cada uno de estos sistemas. En la figura 5.6 se muestra el espectro de la señal de ruido blanco generada en el DSP después de haber sido convertida en analógica y digitalizada de nuevo con la tarjeta de sonido de una computadora. Como se puede observar la señal se puede ser considerada plana en la banda de interés (entre 0 y 4000[Hz] para este caso). Una vez que el ruido es reproducido en un equipo de sonido, éste es captado por un micrófono que ha sido conectado a la tarjeta de sonido de una computadora para captar las alteraciones que sufre este ruido a lo largo de su trayectoria. En la figura 5.7 se muestra el espectro de frecuencias de la señal que ha sido tomada en el micrófono, y como es observable, la señal ya no


5.2. IDENTIFICACIÓN DE TRAYECTORIA ACÚSTICA CON TÉCNICAS DE FILTRADO ADAPTIVO

Algoritmo 4 Algoritmo de Filtrado Adaptivo en Ensamblador

_adaptFIR: MVK MVKLH MVC MVK MVKLH LDW NOP STH MVK MVKLH MVK ZERO loop: LDH LDH NOP MPY NOP SHL ADD [B2] SUB [B2] B NOP SHR MV SUB MVK MPY NOP SHR MVK MVK MVKLH loop2: LDH LDH NOP MPY NOP SHR ADD STH [B2] SUB [B2] B NOP MVK MVKLH LDH STW MVK MVKLH MVC MV B NOP

.S2 .S2 .S2 .S1 .S1 .D1 4 .D1 .S2 .S2 .S2 .S1

0x0004,B10 0x0005,B10 B10,AMR 0x0280,A0 0x0000,A0 *A0,A5

.D2 .D1 4 .M1x

*B1++,B7 *A5--,A7

A4,*A5 0x0240,B1 0x0000,B1 32,B2 A9

A7,B7,A7;A7 is Q-30

.S1 .S1 .S2 .S2 5 .S1 .S1 .S1 .S1 .M1

A7,1,A7 A7,A9,A9 B2,1,B2 loop

.S1 .S2 .S2 .S2

A10,15,A10 32,B2 0x0240,B1 0x0000,B1

.D1 .D2 4 .M1

*A5--,A8 *B1,A12

.S1 .S1 .D2 .S2 .S2 5 .S1 .S1 .D1 .D1 .S2 .S2 .S2 .S1 .S2 5

A8,15,A8 A8,A12,A8 A8,*B1++ B2,1,B2 loop2

A9,16,A9 B4,A13 A13,A9,A8 0x0080,A10 A8,A10,A10

A10,A8,A8

0x0280,A0 0x0000,A0 *A5++,A13 A5,*A0 0x0000,B10 0x0004,B10 A9,A4 B3

69


5.2. IDENTIFICACIÓN DE TRAYECTORIA ACÚSTICA CON TÉCNICAS DE FILTRADO ADAPTIVO

70

Figura 5.6: Espectro del ruido generado en el DSP

Figura 5.7: Espectro de la señal captada en el micrófono es completamente plana, y esto corresponde a la respuesta en frecuencia de la trayectoria recorrida por la señal cuyos elementos han sido anteriormente descritos. Con la finalidad de comprobar el funcionamiento del sistema de identificación de la trayectoria recorrida por la señal de ruido se utilizó un ecualizador, de tal manera que el sistema Adaptivo debe poder determinar la respuesta frecuencial del ecualizador. En la figura 5.8 se muestra la respuesta en frecuencia final del filtro Adaptivo después de haber identificado la trayectoria de la señal de ruido cuando el ecualizador ha sido empleado como un filtro paso bandas con frecuencia central en 4[kHz] y una frecuencia de muestreo en el convertidor de la tarjeta de desarrollo de 48[kHz], como se puede observar, los resultados son aceptables ya que es perfectamente perceptible el efecto de filtro paso banda del ecualizador. Empleando las herramientas de Code Composer Studio para determinar los ciclos de instrucción empleados por el programa en el DSP encontramos que requiere un total de 1146 ciclos de instrucción para ejecutar la función de interrupción en donde se realiza el filtrado y la generación de la señal de ruido blanco, lo que se traduce en 4,584[µs] por lo que el algoritmo puede ser ejecutado sin contratiempos para un tiempo de muestreo ts = 20,833[µs].


5.3. SIMULACIÓN ALGORITMO DE ERIKSSON EN EL DSP

71

Figura 5.8: Trayectoria identificada empleando un ecualizador como filtro paso bandas con banda central en 4[kHz].

5.3.

Simulación algoritmo de Eriksson en el DSP

En la sección 3.2.1 se explicó el principio de funcionamiento de la técnica propuesta por Eriksson para el modelado en línea de la trayectoria secundaria. Ahora implementaremos una simulación en el DSP con la finalidad de estudiar la demanda computacional del algoritmo. La simulación se realiza cumpliendo con los siguientes procesos: 1. Pasos iniciales: a) Generación de la señal de ruido primario x. b) Generación de la señal de ruido blanco v empleada en el modelado de la trayectoria secundaria S(z). 2. Pasos intermedios: a) Filtrado del ruido primario con el modelo propuesto para la trayectoria primaria P(z) para obtener la señal que se desea cancelar d. b) Obtener la señal de control y filtrando la señal de ruido primario x con el filtro Adaptivo W (z). ˆ c) Filtrado de v con el filtro Adaptivo S(z). 3. Filtrado de y + v con el modelo propuesto para la trayectoria secundaria S(z). 4. Cálculo de las señales de error empleadas para la adaptación de los coeficientes de los filtros adaptivos. 5. Adaptación de los filtros adaptivos. Del listado mostrado, las partes que se encuentran agrupadas en los pasos iniciales e intermedios pueden ser realizados sin importar el orden entre si.


5.3. SIMULACIÓN ALGORITMO DE ERIKSSON EN EL DSP

72

Algoritmo 5 Algoritmo de Filtrado Adaptivo en Ensamblador

float sinegen(short frecuencia) { static float w; //angular frequency static float y0 = 0; //initial output static float y_1 = -0.3827; static float y_2 = -0.7071; static float A = 1.8478; if(frecuencia!=0) { w = two_pi*frecuencia; //w = 2*pi*f A = 2*cos(w*T); //A = 2*coswT * (2^14) y_1 = -sin(w*T); //y_1 = -sinwT *(2^14) y_2 = -sin(2*T*w); //y_2 = -sin2wT * (2^14) return(0); }else{ y0 = (A * y_1) - y_2; //y(n) = A*y(n-1) - y(n-2) y_2 = y_1; //update y(n-2) y_1 = y0; return (y0); } }

Generación de la señal de ruido primario x(n) La señal de referencia x(n) es generada mediante la ecuación en diferencias que define a una señal sinusoidal y(n) = Ay(n − 1) − y(n − 2)

(5.1)

en donde A = 2cos(ωT ) y(−1) = −sin(ωT ) y(−2) = −sin(2ωT ) Este procedimiento tiene fundamento en la transformada Z de la señal sinusoidal y el algoritmo empleado en el DSP se encuentra en el algoritmo 5. Z {sin(ω0 n)u[n]} =

1 − z−1 sin(ω0 ) 1 − 2z−1 cos(ω0 ) + z−2

Generación de la señal de ruido blanco gaussiano v(n) El corazón de la generación digital de ruido es la generación de números aleatorios. Muchos lenguajes de programación tienen una función estándar para esta finalidad, en C/C++ se cuenta con la función rand, la cual genera un número


5.3. SIMULACIÓN ALGORITMO DE ERIKSSON EN EL DSP

73

entero entre cero y el valor de la constante RAND_MAX (este número entero puede ser interpretado como una fracción entre 0 y 1 en formato de punto fijo), los números generados por la función rand tienen la misma probabilidad en todo el rango posible. En un posible análisis estadístico de la función rand (por ejemplo generando 128 muestras) encontraremos una señal √ con media µ = 0,5 y desviación estándar σ 2 = 1/ 12 = 0,29, teniendo una distribución uniforme entre cero y uno. Si lo que se busca es la generación de ruido blanco con una función de distribución de probabilidad Gaussiana mencionaré dos métodos disponibles para la generación de estas señales a partir de un generador de números aleatorios. El primer método tiene su base en el Teorema del Límite Central, el cual en su forma más sencilla nos indica que la suma de muchos procesos aleatorios diferentes tiene una distribución normal (mientras mas procesos aleatorios sean sumados se puede notar con mayor vigor esta tendencia). Además el Teorema del Límite Central, no requiere que los números aleatorios sumados tengan una distribución en particular (incluso que entre ellos tengan la misma distribución). Es por ello que en la naturaleza se pueden encontrar con mucha frecuencia señales con distribución normal. El segundo método que se puede emplear para la generación de ruido gaussiano, se generan dos números aleatorios R1 y R2 . La señal X con distribución gaussiana se puede obtener con la ecuación 5.2. X=

p −2logR1 cos(2πR2 )

(5.2)

Para generar a partir de esta señal de ruido gaussiano una con media y desviación estándar particular, simplemente se necesita multiplicar cada número generado por la desviación estándar y sumar la media.

Filtrado de la señal de referencia con la trayectoria primaria P(z) Para la simulación del algoritmo de Eriksson en el DSP se propone el modelo de la trayectoria acústica P(z) que tiene la respuesta en frecuencia mostrada en la figura 5.9, este modelo es empleado para filtrar la señal de referencia x(n) y obtener así la señal de ruido que se desea cancelar d(n). El filtrado es realizado en el DSP empleando un algoritmo con direccionamiento circular muy similar al primer lazo del código que fue descrito anteriormente para el filtro Adaptivo.

Resultados obtenidos con el algoritmo de Eriksson El desempeño del algoritmo puede ser medido y comparado con las otras variantes de identificación de la trayectoria secundaria empleando el error relativo en su modelado, el cual queda definido en la ecuación 5.3. ( ∆S(dB) = 10log10

2

∑M i=0 [si (n) − sˆi (n)] 2 ∑M i=0 [si (n)]

)

Para la simulación del algoritmo de Eriksson se emplearon los coeficientes de adaptación de la tabla 5.1

(5.3)


5.3. SIMULACIÓN ALGORITMO DE ERIKSSON EN EL DSP

74

Algoritmo 6 Algoritmo de Filtrado FIR en ensamblador

.global _filtroFIR .sect ".text" _filtroFIR: ;Configurar el direccionamiento circular MVK .S2 0x0004,B10 ;Se emplea el registro A5 como circular MVKLH .S2 0x0005,B10 ;2^(5+1)=64 bytes MVC .S2 B10,AMR MV LDW NOP STH

.S1 B4,A0 .D1 *A0,A5 4 ;A5 apunta a la primera direccion ;libre del buffer circular .D1 A4,*A5 ;A4 contiene la muestra actual

;Realiza el filtrado MVK .S2 0x0240,B1 MVKLH .S2 0x0000,B1

loop:

MVK ZERO

LDH LDH NOP MPY NOP SHL ADD [B2] SUB [B2] B NOP SHR LDH STW

.S2 .S1

32,B2 A9

.D2 .D1 4 .M1x

*B1++,B7 *A5--,A7

;Direccion de los coeficientes del filtro ;Configurar contador ;Configurar acumulador

A7,B7,A7;A7 is Q-30

.S1 .S1 .S2 .S2 5 .S1

A7,1,A7 A7,A9,A9 B2,1,B2 loop A9,16,A9

;Eliminar bit de extension de simbolo

.D1 .D1

*A5++,A13 A5,*A0

;Carga falsa ;Guardar ultima direccion

;Decrementar contador

;Reestablecer direccionamiento lineal MVK .S2 0x0000,B10 MVKLH .S2 0x0004,B10 MVC .S2 B10,AMR ;Regresar el resultado del filtrado MV .S1 A9,A4 B .S2 B3 NOP 5 µs

µw

σ 2 ruido gaussiano

3 × 10−4

5 × 10−5

0.08

Cuadro 5.1: Coeficientes de adaptación de los filtros adaptivos µs para el modelo de la trayectoria secundaria y µw para el filtro de control de ruido.


5.4. IMPLEMENTACIÓN DE LOS ALGORITMOS DE KUO, BAO Y ZHANG

75

Figura 5.9: Modelos de las trayectorias primaria P(z) y secundaria S(z) empleadas en la simulación Como se mencionó en la sección 3.2.1, en el algoritmo de Erikkson las señales necesarias para la adaptación de los filtros afectan la adaptación de los filtros entre si, por lo que es necesario determinar el nivel del ruido gaussiano empleado para el modelado de la trayectoria secundaria que permita realizar la identificación de forma apropiada interviniendo lo menos posible en la adaptación de la señal de control, además de disminuir el ruido residual que la señal de modelado genera. La potencia del ruido gaussiano es ajustada con la desviación estándar σ 2 , en la simulación realizada el valor de este parámetro fue σ 2 = 0,08. En la figura 5.10 se muestra la comparación de las respuestas en frecuencia del modelo ˆ ha logrado identificar aproximadamente obtenido con su respuesta real, como se puede observar el filtro Adaptivo S(z) a la trayectoria secundaria S(z).

Cuando el proceso alcanza cierta estabilidad el error relativo en el modelado de la trayectoria secundaria alcanza un valor promedio de −21,4456[dB] con varianza de ±2,5144[dB].

5.4.

Implementación de los algoritmos de Kuo, Bao y Zhang

5.4.1.

Algoritmos de Bao y Kuo

Los algoritmos de Bao y de Kuo empleados en el algoritmo FXLMS para la identificación en línea de la trayectoria secundaria fueron introducidos en la sección 3.2.2.1, el propósito de estos algoritmos como se mencionó en dicha sección es disminuir la interferencia que la señal u(n) causa en la estimación de la trayectoria S(z), sin embargo no realizan mejoras en la adaptación del filtro de control W (z).

Algoritmo de Bao Parte de la estructura propuesta por Bao es mostrada en el lado izquierdo de la figura 3.7. Como es observable, el nuevo filtro Adaptivo B(z) es alimentado por la señal de referencia x(n), su salida es empleada para


5.4. IMPLEMENTACIÓN DE LOS ALGORITMOS DE KUO, BAO Y ZHANG

76

Respuesta en frecuencia 20 Sest(z) S(z)

15

Amplitud [dB]

10

5

0

−5

−10

−15

−20

0

500

1000

1500 2000 2500 Frecuencia [Hz]

3000

3500

4000

Figura 5.10: Identificación Trayectoria Secundaria con Método de Erikkson µw

µs

µb

σ 2 ruido gaussiano

5 × 10−5

5 × 10−3

5 × 10−3

0.8

Cuadro 5.2: Parámetros de la simulación realizada con el algoritmo de Bao cancelar las componentes de ruido relacionadas con esta señal en e(n). La señal que se obtiene a partir de este proceso ds (n) es empleada como señal deseada en el proceso de adaptación del modelo de la trayectoria secundaria. En la figura 5.12 se muestra una comparación entre la respuesta en frecuencia de la trayectoria secundaria S(z) y la respuesta del modelo de identificación utilizado. El error relativo en la identificación de la trayectoria secundaria alcanzó el valor promedio de −39,0621[dB], con una varianza ±0,0738[dB].

Algoritmo de Kuo En el lado derecho de la figura 3.7, tenemos la estructura planteada por Kuo, en la cual el filtro Adaptivo adicional C(z), que se ha agregado al sistema es excitado por una versión con retardo de e(n) con la finalidad de predecir y cancelar la interferencia que u(n) causa en el proceso de modelado de la trayectoria secundaria. La idea misma del filtro predictor, limita el posible uso del algoritmo de Kuo en aplicaciones de banda angosta. En la figura 5.15 se muestra el progreso en el tiempo del error relativo en la estimación de la trayectoria secundaria,

µw

µs

µb

σ 2 ruido gaussiano

5 × 10−5

5 × 10−3

5 × 10−3

0.8

Cuadro 5.3: Parámetros de la simulación realizada con el algoritmo de Kuo


5.4. IMPLEMENTACIÓN DE LOS ALGORITMOS DE KUO, BAO Y ZHANG

77

Figura 5.11: Diagrama estructura de Bao completa

Respuesta en Frecuencia 20 Sest (z) 15

S(z)

Amplitud [dB]

10 5 0 −5 −10 −15 −20

0

500

1000

1500 2000 2500 Frecuencia [Hz]

3000

3500

4000

Figura 5.12: Identificación de la trayectoria secundaria empleando el algoritmo de Bao


5.4. IMPLEMENTACIÓN DE LOS ALGORITMOS DE KUO, BAO Y ZHANG

78

Error relativo en la estimación de la trayectoria secundaria con el método de Bao −5 −10

Error relativo [dB]

−15 −20 −25 −30 −35 −40

0

5

10 tiempo [s]

15

20

Figura 5.13: Error relativo ∆S en la estimación de la trayectoria secundaria con el algoritmo de Bao

Figura 5.14: Diagrama completo del algoritmo de Kuo


5.4. IMPLEMENTACIÓN DE LOS ALGORITMOS DE KUO, BAO Y ZHANG

79

Error relativo algoritmo de Kuo 0

Error relativo [dB]

−5

−10

−15

−20

−25

−30

0

5

10

15

Tiempo[s]

Figura 5.15: Error relativo ∆S en la adaptación de la trayectoria secundaria empleando el algoritmo de Kuo µw

µs

µh

σ 2 ruido gaussiano

5 × 10−5

5 × 10−3

5 × 10−3

0.8

Cuadro 5.4: Parámetros de la simulación realizada con el algoritmo de Zhang el error relativo promedio después de alcanzar la estabilidad en la estimación de los coeficientes de la trayectoria secundaria fue de −26,53[dB], con una varianza ±0,5441[dB].

5.4.2.

Algoritmo de Zhang

En la sección 3.2.2.2 se introdujo al método de Zhang para la identificación de la trayectoria secundaria en línea, ahí se mencionó la manera en que el método de Zhang disminuye la interferencia mutua entre los procesos de adaptación del filtro de control de ruido con el de modelado de la trayectoria secundaria, esto se logra incorporando un filtro Adaptivo adicional que disminuye la presencia de ruido primario en la señal de error que se emplea para la adaptación de los coeficientes del modelo de la trayectoria secundaria. La implementación con este modelo permite reducir la magnitud del ruido gaussiano empleado para el modelado, mejorar el tiempo de adaptación y disminuir el error relativo en la identificación de la trayectoria secundaria. Los parámetros empleados para la simulación del algoritmo de Zhang se muestran en la tabla 5.18. En la figura 5.17 se observa la respuesta en frecuencia de la trayectoria secundaria y del modelo generado en linea empleando el método de Zhang, realizando una comparación con la gráfica 5.10 correspondiente al método de Eriksson se puede observar que los resultados obtenidos con este método son mejores, además el error relativo en el modelado de la trayectoria secundaria tiene un valor medio después de la adaptación de −105,93[dB] con una varianza de ±0,4794[dB].


5.4. IMPLEMENTACIÓN DE LOS ALGORITMOS DE KUO, BAO Y ZHANG

80

Figura 5.16: Diagrama completo del algoritmo de Zhang

Respuesta en frecuencia 15

10

Amplitud [dB]

5

0

Sest(z) S(z)

−5

−10

−15

0

500

1000

1500 2000 2500 Frecuencia [Hz]

3000

3500

4000

Figura 5.17: Identificación de la trayectoria secundaria empleando el algoritmo de Zhang


5.4. IMPLEMENTACIÓN DE LOS ALGORITMOS DE KUO, BAO Y ZHANG

81

Proceso de adaptación de la identificación de la trayectoria secundaria −40

−50

Error relativo [dB]

−60

−70

−80

−90

−100

−110

0

5

10

15

20

25 30 Tiempo [s]

35

40

45

50

Figura 5.18: Error relativo ∆S en la adaptación de la trayectoria secundaria

Figura 5.19: Espectrograma de la cancelación de ruido realizada


5.4. IMPLEMENTACIÓN DE LOS ALGORITMOS DE KUO, BAO Y ZHANG

82

Transferencia de datos en tiempo real de la tarjeta de desarrollo a Matlab mediante el protocolo RTDX La familia de DSP C6000 dispone de un protocolo para transferencia y recepción de datos llamado RTDX, empleando el código del algoritmo 7 de MATLAB mostrado se realizó el intercambio de datos entre la tarjeta de desarrollo del TMS320C6713 DSK, para poder obtener gráficas casi al instante del estado de adaptación de la trayectoria secundaria.

Conclusiones y análisis de los resultados obtenidos La identificación de la trayectoria secundaria es un proceso fundamental en la cancelación activa de ruido acústico. Sin una buena estimación de ella corremos el riesgo de sacar al sistema de control, con lo que no sólo fracasamos en el intento de cancelar ruido, sino que en la mayoría de los casos incrementamos el ruido ya presente. Siempre es preferible la identificación en línea de la trayectoria secundaria, ya que esto nos brinda una mayor flexibilidad en el funcionamiento del sistema de cancelación de ruido. Salvo por algunos métodos de estimación de la trayectoria secundaria en línea que evitan la generación de ruido aditivo, la mayoría de los sistemas tienen como efecto secundario el ruido residual del modelado. La optimización de los métodos de estimación de la trayectoria secundaria es necesaria para buscar métodos que garanticen una convergencia veloz y una cancelación efectiva del ruido. El problema del ruido aditivo empleado para el modelado en línea es que permanece después de la adaptación, por lo que los métodos que obtengan buenos resultados con una amplitud de ruido aditivo meno son los preferidos. El algoritmo de Zhang fue el que obtuvo los mejores resultados para el mismo nivel de ruido utilizado y es el que puede operar de mejor forma con una amplitud menor en el ruido residual, esto se debe a que es el único que ataca la interferencia mutua entre el proceso de modelado de la trayectoria secundaria y el proceso de control del ruido. Los algoritmos de Bao y Kuo no enfrentan este problema, únicamente disminuyen el efecto del ruido primario en el proceso de modelado de S(z), encontrándose limitado el algoritmo de Kuo para la cancelación de ruidos periódicos. A partir de los resultados reportados podemos observar que todos los algoritmos empleados lograron identificar la trayectoria secundaria S(z) y que a partir de esta identificación fueron capaces de cancelar el ruido. Todos estos sistemas pueden ser empleados en una cancelación real de ruido acústico, siempre y cuando se cumpla con las características de operación de estos. Un aspecto importante a considerar es la posibilidad de ejecutar el código en tiempo real, todos los sistemas probados cumplieron con esta característica. La mayor reducción en el tiempo de procesamiento se alcanzó utilizando el direccionamiento circular, lo cual evitó tener que realizar el corrimiento de las muestras en los buffers empleados. Para implementar el direccionamiento circular fue necesario realizar la programación de algunas funciones de interrupción en lenguaje ensamblador. Según la herramienta STS del DSP/BIOS de la tarjeta, el algoritmo de Zhang requiere 5161 ciclos de instrucción durante un tiempo de muestreo, considerando que el reloj de la tarjeta es de 225[MHz], el tiempo de procesamiento del algoritmo de Zhang equivale a 2,2938 × 10−5 [s], lo cual suficiente para trabajar con una frecuencia de muestreo de 8[kHz].


5.4. IMPLEMENTACIÓN DE LOS ALGORITMOS DE KUO, BAO Y ZHANG

Algoritmo 7 Código empleado en MATLAB para intercambiar datos con la tarjeta mediante el protocolo RTDX

clear all; close all; projecto = 'zhangFloat'; xmin = 0; xmax = 1; ymin = -20; ymax = 20; cc=ccsdsp('boardnum',0); projname = 'zhangFloatingPoint'; outFile = 'zhangFloatingPoint\Debug\erikkson16coefs.out'; target_dir = 'zhangFloatingPoint'; cc.cd(target_dir); cc.open(outFile); open(cc.rtdx,'ochan','r'); enable(cc.rtdx); isenabled(cc.rtdx) cc.rtdx run(cc); isenabled(cc.rtdx,'ochan') num_of_msgs = msgcount(cc.rtdx,'ochan') while ~cc.rtdx.isenabled('ochan') enable(cc.rtdx,'ochan'); pause(2); end salida = []; [hs,fs] = freqz(s,1,512,8000); matrizError = []; frame = 1; while isrunning(cc) count = cc.rtdx.msgcount('ochan'); if(count~=0) try outdata = cc.rtdx.readmat('ochan','single',[1 16]); errorS = errorRelativo(s',double(outdata)); salida = [salida;double(outdata)]; matrizError = [matrizError;errorS]; fig1 = figure(1); [h,f] = freqz(outdata,1,512,8000); plot(f,[20*log10(abs(h))';20*log10(abs(hs))']); axis([0 4000 -20 20]); set(gca,'nextplot','replacechildren'); F(frame) = getframe; frame = frame + 1; disp(errorS); catch errmsg = lasterr; end end end

83


Conclusiones generales

Los sistemas de control activo de ruido cada vez cobran mayor importancia debido principalmente a la reducción progresiva de los costos de los elementos de procesamiento requeridos para su implementación, el costo de la programación en estos sistemas también es inferior a medida que se perfeccionan las herramientas de desarrollo y podemos observar además reducciones considerables en los tiempos de elaboración de los productos. Todo esto sumado con el contínuo avance de las técnicas matemáticas aplicadas en el área hace pensar en una cada vez más común presencia de los sistemas activos de control de ruido, estos se encontrarán tanto en sistemas personales, embebidos en los equipos de cómputo así como en recintos amplios en donde se requerirán soluciones multicanal. En lo referente a este trabajo de tesis puedo concluir que la identificación de la trayectoria secundaria y el método empleado para ello juega un papel preponderante en la posibilidad o no de efectuar el control de ruido. Es por ello que la totalidad de las pruebas implementadas en el DSP se enfocaron en este proceso, es mencionar además que los resultados obtenidos de estas pruebas comprobaron las grandes ventajas que el algoritmo de Zhang tiene sobre los competidores con los que se comparó. A pesar del gran éxito del algoritmo de Zhang, todavía en el área todavía se agradecen mejoras y prueba de ello es el fuerte interés encontrado en múltiples publicaciones relacionadas con el problema.

Trabajo a futuro Llegando a la etapa final de la escritura de este trabajo me parece importante mencionar los aspectos deseables a probar en futuros desarrollos relacionados con esta área, pudiendo afirmar que el principal paso pendiente es la puesta en marcha de un sistema real de control de ruido. Debiendo estudiar con profundidad los efectos espaciales en la propagación de las ondas acústicas, mejorar la implementación de los códigos realizados en este trabajo para hacerlos más robustos y veloces. Otro aspecto importante a considerar para futuros trabajos es el emplear técnicas en el dominio de la frecuencia, o de ser el caso analizar la conveniencia de implementar sistemas híbridos.

84


BibliografĂ­a

[1] Sen M. Kuo y Dennis R. Morgan. Active Noise Control Systems: algorithms and DSP Implementations. Wiley Series in Telecommunications and Signal Processing.1996. [2] Rulph Chassaing. Digital signal processing and applications with the C6713 and C6416 DSK. John Wiley & Sons. 2005 [3] Nasser Kehtarnavaz. Real-time digital signal processing based on the TMS320C6000. Elsevier. 2005 [4] S.J. Elliot. Signal Processing for Active Control. Academic Press. 2001 [5] Simon Haykin. Adaptive Filter Theory. Prentice Hall. 1996. [6] Drag Stranneby. Digital Signal Processing, DSP & Applications. Butterworth-Heinemann. 2001 [7] Shehrzad Qureshi. Embedded Image Processing on the TMS320C6000 DSP, Examples in Code Composer Studio and MATLAB. Springer Science+Business Media, Inc. 2005 [8] John G. Proakis y Dimitris G. Manolakis. Digital Signal Processing, Principles, Algorithms and Applications. Prentice-Hall International Inc. 1996. [9] M. Tahernezhadi y L. Liu. Real-Time implementation of an IIR Acoustic Echo Canceller on ADSP21020. 1995 [10] Muhamamad Tahir Akhtar, Masahide Abe y Masayuki Kawamata, A New Method for Active Noise Control Systems with Online Acoustic-Feedback-Path Modeling. IEEE ICEIS. 2006 [11] M. T. Akhtar, M. Abe, and M. Kawamata, Acoustic Feedback Path Modeling in Active Noise Control Systems. SICE Annual Conference. 2005 [12] Oliver Erwin Kaiser, Active Control of Sound Transmission through a Double Wall Structure, Swiss Federal Institute of Technology (ETH). 2001 [13] Toshikazu Kouno, Hiromitsu Ohmori and Akira Sano, Adaptive Active Noise Control for Uncertain Secondary Pathes. Department of System Design Engineering, Keio University [14] Sen M. Kuo,Issa Panahi, Kai M. Chung Tom Horner, Mark Nadeski, Jason Chyan. Design of Active Noise Control Systems With the TMS320 Family, Texas Instruments. 1996 [15] Jerzy Kasprzyk. Model Identification for Active Noise Control in the presence of Primary Noise. 2005 [16] Yuhsuke Ohta and Akira Sano. Multi-channel Active Noise Control for All Uncertain Primary and Secondary Paths. International Workshop on Acoustic Echo and Noise Control (IWAENC2003), Sept. 2003, Kyoto, Japan 85


BIBLIOGRAFÍA

86

[17] P.Embree. C Algorithms for Real-Time DSP. Prentice-Hall PTR. 1995 [18] Leo L. Beranek. Acoustics. Acoustical Society of America. 1996 [19] Sen M. Kuo y Dennis R. Morgan. Review of DSP Algorithms for Active Noise Control. Proceedings of the 2000 IEEE International Conference on Control Applications. 2000 [20] Muhammad T. Akhtar, Masahide Abe, and Masayuki Kawamata. Feedforward Active Noise Control Systems with Improved Online Secondary-Path Modeling. 2003 [21] Ming Zhang, Hui Lan y Wee Ser. Cross-Updated Active Noise Control System with Online Secondary Path Modeling. IEEE Transactions on Speech and Audio Processing. 2001 [22] TMS320C6000 DSP/BIOS Application Programming Interface (API) Reference Guide. Texas Instruments. 2004 [23] TMS320 DSP/BIOS Users Guide. Texas Instruments. 2004 [24] MATLAB Embedded Target for TI C6000™ 3 User’s Guide. Mathworks. 2007 [25] TMS320C6000 Assembly Language Tools User’s Guide. Texas Intruments. 2004 [26] TMS320C6000 CPU and Instruction Set Reference Guide. Texas Instruments 2004 [27] TMS320C6000 DSP Multichannel Buffered Serial Port (McBSP). Texas Instruments 2004 [28] Sen M. Kuo, Bob H Lee. Real-Time Digital Signal Processing. John Wiley & Sons Ltd. 2001


Lista de algoritmos

1.

Funci贸n de Interrupci贸n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

66

2.

CMD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

67

3.

Inicializaci贸n de la memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

68

4.

Algoritmo de Filtrado Adaptivo en Ensamblador . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

69

5.

Algoritmo de Filtrado Adaptivo en Ensamblador . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

72

6.

Algoritmo de Filtrado FIR en ensamblador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

74

7.

C贸digo empleado en MATLAB para intercambiar datos con la tarjeta mediante el protocolo RTDX . .

83

87


Índice de figuras

1.1. Sistema de Control Feedforward . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8

1.2. Sistema de Control Feedback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9

3.1. Diagrama de bloques de un sistema continuo controlado por una señal digital . . . . . . . . . . . . .

30

3.2. Modelo de bloques de un sistema prealimentado de canal singular . . . . . . . . . . . . . . . . . . .

31

3.3. Modelo de bloques del sistema digital prealimentado . . . . . . . . . . . . . . . . . . . . . . . . . .

32

3.4. Versión simplificada del diagrama a bloques del sistema de control prealimentado asumiendo una perfecta cancelación de la trayectoria de Realimentación Gs (z) . . . . . . . . . . . . . . . . . . . . . . .

32

ˆ 3.5. Sistema de Identificación de la Trayectoria Secundaria S(z) . . . . . . . . . . . . . . . . . . . . . . .

39

3.6. Diagrama a bloques de un sistema de Cancelación Activa de Ruido con modelado de la trayectoria secundaria empleando ruido aditivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

41

3.7. Filtros adicionales en los métodos mejorados de Bao (izquierda) y de Kuo (derecha) . . . . . . . . . .

43

3.8. Diagrama a bloques método de Zhang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

44

4.1. Un paquete de búsqueda y retorno (FP) que contiene tres paquetes de ejecución. . . . . . . . . . . . .

47

4.2. Diagrama general de la arquitectura C6x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

49

4.3. Funcionamiento del direccionamiento con buffer circular . . . . . . . . . . . . . . . . . . . . . . . .

51

4.4. Alineamiento de los datos en la memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

58

4.5. Representación entera y fraccional con punto fijo . . . . . . . . . . . . . . . . . . . . . . . . . . . .

60

4.6. Multiplicación y almacenamiento de números en formato Q-15 . . . . . . . . . . . . . . . . . . . . .

60

4.7. Representación números en 4 bits. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

61

5.1. Identificación de Sistemas con Filtro Adaptivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

63

5.2. Respuesta en frecuencia del filtro IIR que se desea identificar . . . . . . . . . . . . . . . . . . . . . .

64

5.3. Respuesta en frecuencia del filtro IIR a identificar y el filtro Adaptivo después de la adaptación . . . .

65

5.4. Fase de la respuesta en frecuencia del Filtro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

65

88


ÍNDICE DE FIGURAS

89

5.5. Diagrama identificador acústico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

68

5.6. Espectro del ruido generado en el DSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

70

5.7. Espectro de la señal captada en el micrófono . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

70

5.8. Trayectoria identificada empleando un ecualizador como filtro paso bandas con banda central en 4[kHz]. 71 5.9. Modelos de las trayectorias primaria P(z) y secundaria S(z) empleadas en la simulación . . . . . . . .

75

5.10. Identificación Trayectoria Secundaria con Método de Erikkson . . . . . . . . . . . . . . . . . . . . .

76

5.11. Diagrama estructura de Bao completa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

77

5.12. Identificación de la trayectoria secundaria empleando el algoritmo de Bao . . . . . . . . . . . . . . .

77

5.13. Error relativo ∆S en la estimación de la trayectoria secundaria con el algoritmo de Bao . . . . . . . .

78

5.14. Diagrama completo del algoritmo de Kuo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

78

5.15. Error relativo ∆S en la adaptación de la trayectoria secundaria empleando el algoritmo de Kuo . . . .

79

5.16. Diagrama completo del algoritmo de Zhang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

80

5.17. Identificación de la trayectoria secundaria empleando el algoritmo de Zhang . . . . . . . . . . . . . .

80

5.18. Error relativo ∆S en la adaptación de la trayectoria secundaria . . . . . . . . . . . . . . . . . . . . .

81

5.19. Espectrograma de la cancelación de ruido realizada . . . . . . . . . . . . . . . . . . . . . . . . . . .

81


ApĂŠndices

90


Sistemas de Control Activo de Ruido