Insorme del para obtencidn - 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21220.pdf · UAM-I...

31
r - . UAM-I Informe del Proveoto TurpEo I Insorme del Proyecto Terminal para la obtencidn del lptulo de: V' LICENCLA TURA EN INGENIERIA BIOMEDICA JÁlumno: De la Cruz Flores Luis Miguel. Matricula: 90223159. Carrera: Ingeniería Biomédica. Área de concentración: instrumentación Medica Electrónica I J DSP (PROCESADOR DIGITAL DE SEÑALES) COMO FILTRO. /Firma del Asesor I 1%. Norbert0 Radrez Mandujano Clave de T: 851712 Fuma del alumna Julio de 1998 Ing. Luis Migwi de la Cw Flona

Transcript of Insorme del para obtencidn - 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21220.pdf · UAM-I...

r-.

UAM-I Informe del Proveoto TurpEo I

Insorme del Proyecto Terminal para la obtencidn del lptulo de:

V' LICENCLA TURA EN INGENIERIA BIOMEDICA

JÁlumno: De la Cruz Flores Luis Miguel.

Matricula: 90223159.

Carrera: Ingeniería Biomédica.

Área de concentración: instrumentación Medica Electrónica

I J DSP (PROCESADOR DIGITAL DE SEÑALES) COMO FILTRO.

/Firma del Asesor

I 1%. Norbert0 Radrez Mandujano

Clave de T: 851712

Fuma del alumna

Julio de 1998

Ing. Luis Migwi de la C w Flona

P- \-

urn-I Informe del Pro-

E l presente trabajo de investigación se realizó en la materia de Proyecto Terminal I y 11, más aún el trabajo se siguió hasta la materia de Instrumentación medica VII. E n los Proyectos se busco información referente al DSP, tambien conocido como E V M (modulo de evaluación), y se hicieron pruebas en la computadora pero sin tener el DSP a la mano, podemos decir que en si fue buscar la teoría relacionada con el hardware y software relacionado al DSP y su funcionamiento al insertarlo al slot de la computadora. E n la materia de Instrumentación se propuso el proyecto de obtener un electrocardiograma fetal usando un método no invasivo, el cual consistió en poner electrodos en el abdomen de una mujer embarazada y obtener una máxima señal, esta señal estaría compuesta de ECG maternos, ECG fetales, señales electromiográficas, ruidos, entre otras. Por consiguiente era necesario filtrar la señal y obtener el ECG fetal lo más claro posible, se repartieron a los equipos del grupo tareas para al final acoplarlas y obtener el resultado deseado a nuestro equipo nos toco usar el DSP como adquisición y un filtrado inicial de la señal, esto sirvió de mucha ayuda ya que la teoría y práctica vista antes en la materia de Proyectos sirvió de apoyo para nuestra tarea.

A continuación se dan los pormenores que se dieron durante el transcurso de la investigación que correspondió a nuestro equipo.

m-1 iaiorme de I Roved O T Q Q D d

Agradecimientos:

A mis Padres:

Por su gran apoyo y ejemplo que he recibido de ellos durante toda mi vida.

A mi Hijo:

Por que es a él a quien más le dedico mi esfuerzo y sacrificio.

A mis hermanos:

Por el apoyo incondicional que siempre he recibido y recibiré de ellos

A mi asesor:

Por los conocimientos que adquirí (tanto culturales como morales) a lo largo de los cursos que tome con el.

lug. Luis Miguel de la Cnn F l a s

UAM-I lnfprme del Rovwto T q m d

I.-Zntroducción. I.1.- FILTROS DIGITALES

La digitalización de la señal de información permite aplicarle operaciones matemáticas directamente, de manera que se idealiza la realización de la teoría en la práctica. Un filtro digital requiere de muchas más componentes que un filtro analógico (convertidores, procesador, memoria, programación), pero permite crear con mayor facilidad filtros de orden muy alto, frecuencias de corte que se puedan ajustar a las condiciones de la señal y que pueden trabajar a frecuencias no prácticas para los analógicos. Un filtro analógico, que permita estudiar fenómenos de frecuencia baja, como un sismo, requiere de inductancias y10 capacitancias de valores muy elevados que demandarían espacio y peso muy grandes; mientras que un solo circuito de filtrado digital puede filtrar tanto frecuencias muy bajas como altas, y para modificar sus características solo se requiere reprogramarlo.

Cuando se requieren condiciones críticas como alta precisión en la frecuencia de corte, una pendiente muy alta o frecuencias de operación muy bajas, se recomienda el empleo de filtros digitales, de lo contrario resulta más económico y sencillo de implementar un filtro analógico. La teoría de diseño de un filtro digital es absolutamente la misma que la de un filtro analógico, es decir, también se emplearán los modelos de Butterworth, Chevishev, filtro elíptico, etcétera, solo que ahora podemos aplicar la ecuación directa en la señal.

E n forma general, un filtro se construirá con simples bloques de multiplicación, suma y memorias que retienen muestras anteriores de la señal.

Dos conceptos importantes en sistemas de procesamiento digital son la frecuencia de dobles íjo) y la frecuencia normalizada (v).

La frecuencia de dobles se define como la mitad de la frecuencia a la que se muestrea la señal.

S i se muestrea una señal a 8Kh2, la frecuencia de dobles es 4Khz. De acuerdo ai Teorema en Nyquisf, no se deben muestrear señales cuya máxima componente en frecuencia sea mayor a la frecuencia de dobles, pues ello no permite procesar adecuadamente la señal. La frecuencia normalizada es la fracción correspondiente de frecuencia de dobles. Por ejemplo, sí se requiere diseñar un filtro digital con frecuencia de corte a 500Hz con un sistema que muestrea a 8Khz; tal que fo=4KH, la frecuencia de corte normalizada (v) es 118.

I--- -..-- .

1.2.- COEFICI€NTES D€L FILTRO

La teoría de los filtros no fue parte de la investigación, ya que los coeficientes del filtro que se diseño fueron extraidos de un programa hecho en cursos anteriores, sin embargo e aquí una breve descripción del filtro usado en el DSP. En el programa se seleccionaban los ECG fetales de una señal compuesta de ECG materno, EMG, ruido ECG fetal, etc. Al final hacia cálculos y arrojaba los coeficientes del filtro.

La ecuación para el filtro es llamada respuesta al impulso (RIF) y se define como: E s muy sencillo obtener una respuesta con fase lineal al diseñar filtros RIF, además de que debido a su naturaleza no recursiva, son siempre estables.

La estructura básica de un filtro RIF, es una secuencia de retardos, en donde cada muestra, en cada retardo, se pondera mediante un coeficiente, es importante recordar que un filtro RIF tiene una fase lineal y es realizable, cuando su respuesta al impulso es simétrica y causal.

Existen 3 técnicas básicas para el diseño de filtros RIF, las cuales son:

- Aplicación de secuencias de ventana. - Muestre0 en frecuencia. - Diseño Óptimo.

Para el diseño del filtro, primero debemos seleccionar una respuesta en frecuencia ideal que cumpla con las características deseadas, es decir seleccionamos la H(e'") que cumpla con dichas características. Por ejemplo si deseamos diseñar un filtro pasa-bajas cuya frecuencia de corte sea oc, en el cual estemos utilizando una frecuencia de muestre0 os, y una ganancia unitaria, el comportamiento en frecuencia ideal de dicho filtro será el siguiente:

@C

Computamimto ideal.

Este filtro deja pasar solo los armónicos por debajo de coo, como podemos observar, en general el comportamiento ideal en frecuencia, esta formado por segmentos constantes, los cuales formarán las regiones pasabanda y rechazabanda.

Finalmente la ecuación que se implemento en el filtro fue la siguiente:

y[n] = y bk x[n - K] k=O

donde los bk son los coeficientes que se introducen en el filtro y x[n-k] son los datos que se van muestreando en tiempo real.

lug. Luis Miguel de la C m Raw

2.- Instalación del DSP en su PC. 2.1.- WARDWAR€ y SOFTWARE.

Lo que Usted Necesitará además de los materiales con los que se C54x DSP y compilador, se necesitará el hardware y software envían el

siguiente: o Lista del hardware Y software

Computadora I B M PC/AT o 100% PC basada en ISA/EISA compatible con un duro-disco de sistema operativo y una unidad de disco flexible de 1.44Mb y 3 . 5 pulgadas. Un mínimo de memoria de 6 4 0 K bytes. Monitor Monocromático o color (recomendado). Slot de expansión de 16-bit con los siguientes voltajes:

1.5 amperios a 5 voltios 0 .1 amperios a -5 voltios 0.5 amperios a 12 voltios 0.1 amperios a -12 voltios

Un ratón Microsoft o compatible, Un adaptador de video EGA o VGA.

sistema operativo MS-DOS o PC-DOS (versión 3 . 0 o superior). Optativo: MS-windows (versión 3 .0 o superior). herramientas del software TMS320C54x ensamblador y compilador:

2.2.- INSTALANDO € L PSP € N S U PC

Esta sección contiene información de instalación de hardware para el DSP.

Antes de que usted instale que el DSP, debe estar seguro que los interruptores de la tabla para el espacio de I/O están correctamente seleccionados. El DSP tiene dos interruptores que identifican el I/O de su sistema. Se pueden cambiar los switchs del interruptor para identificar el espacio direccionable de I/O de su sistema.

Figura 1 : muestras l os interruptores en el DSP.

hg. Luis Miguel de la CrlR Fl-

yAM.1

En la mayoría de los casos, se puede dejar el switch posición predefinida. Sin embargo, se debe asegurar que que los puertos I/O no estan ocupados por algún otro dispositivo, por ejemplo, un mouse, impresora, etc. Y a que estos dispositivos pueden usar el espacio predefinido por el DSP y ocasionar un conflicto. Checar los manuales de su PC.

Si se encuentra un conflicto, usaremos la siguiente tabla como referencia para encontrar los direccionamientos correctos.

Tabla 1 . Direccionamientos con switch

d W M M

Después de que se ha preparado el DSP se procede a la instalación física en el Slot de expansión.

Paso 1 : Apague su PC, y desenchufe el cordón de la electricidad. Paso 2: Quite la tapa de su PC. Paso 3: Seleccione una hendedura de 16-bit que no este 'en uso. Paso 4 : Instale el DSP en la hendedura (vea Figura 2). Paso 5: Atornille el DSP al anaquel. Paso 6 : Coloque la tapa de PC. Paso 7: Enchufe en el cordón a la electricidad, y enciende su PC.

Finura 2 . la Instalación del D S P

ing. Luis Mipel do la Cruz Flores

UAM-I

3.- Referencia técnica del DSP.

3.1 CARACTERISTICAS D E L TMS32OC54X EVM (MODULO DE E V A L W C I O N ) O DSP.

opera a 4 0 MIPS con 128K palabras de memoria. Calidad de voz en la interface analógica de I/O o conector para bocina/micrófono (seleccionable por el usuario) vía conectores de RCA normales Puerto serial Externo Bus Paralelo de expansión U0 Dos canales de comunicación de host/target bidireccionales de 16-bit; un canal contiene 6 4 palabras de buffering. E l DSP cumple con las normas internacionales estándares IEEE 1149.1 Un Slot 16-bit ISA, mapeada a una de cuatro direcciones de I/O.

E l TMS320C541 E V M (Modulo de Evaluación), consta principalmente de los siguientes componentes :

Un procesador digital de señales (TMS320C541) Una interfaz analógica para audio (TLC320ACOl) Memoria de 64k palabras para datos. Memoria de 64k palabras para programa. Interfaz para host tipo ISA.

Finura 3 : muestra la configuración básica de interconexión del EVM.

UAM-I infame

3.2 INTERFACE W O S T PC/AT

A continuación se dan los offset (desplazamientos) de los registros y

controles del DSP. Tabla 2. Desplazamientos Host de Interface de los Registro en el EVM

3.3 PROiR4MACION DE LOS RE~lSrr+oS DE WMUNICACION DEL EVM.

La razón fundamental de la programación de estos registros, es implementar el filtro dentro del DSP.

E l EVM necesita cierto espacio en el mapa de memoria del Host (PC), esto para establecer funciones de comunicación entre el DSP y la PC. El EVM requiere un total de 96 bytes distribuidos en tres paginas de 32 bytes cada una, y espaciadas por l k cada una. E l EVM ofrece varias posibilidades para su mapeo en la memoria del host mediante la configuración de dos swithches en la tarjeta.

Los programas realizados en este proyecto, asumen que el EVM se mapeo en la dirección por default, la cual es obtenida al colocar los dos switches en ‘ON’ .

E l Host se comunica con el EVM mediante el uso de 38 localidades de 16 bits cada una, donde estas pueden ser tanto de entrada como salida (UO). Cada localidad U0 esta definida por la dirección en la cual esta mapeada la pagina O (dirección del puerto base) y además por un offset Desplazamiento) particular de cada localidad.

hg Luis Miguel de k Cna Flores

Las funciones de comunicación se establecen mediante el uso de los registros de comunicación ( A y B ) y además mediante los registros de control.

Como se menciono anteriormente, tanto el canal A como el B deben de tener un cierto offset respecto a la dirección del puerto base, esto para permitir las funciones de comunicación.

N Canal A (offset 01800): Este es un simple registro bidireccional de comunicación usado para transferencia de comandos y de datos.

Cuando el Host escribe ai canal A, se genera una interrupción INTl en la tarjeta, además el bit AXST del registro de control del Host se pone en 'l', y el bit ARST del registro de control de la tarjeta también.

N Canal B (offset 01804): Este es un registro bidireccional tipo FIFO (Primeras entradas - primeras salidas ) con 64 palabras de profundidad, el cual sirve para transferir datos y comandos.

Cuando el Host escribe a esta localidad, el dato es encolado al buffer del FIFO. E n caso que el buffer este lleno el dato es ignorado.

P Registros de Status y Control: Estos sirven para conocer el estado en el que se encuentran los canales de comunicación A y B , además sirven para indicar si ha sido escrito o leído un dato de un canal de comunicación.

En lo que se refiere a la implementación de las rutinas de comunicación, los registros de control tienen gran importancia, ya que estos se usan en las funciones de validación de la comunicación entre la P.C y el E V M , esto para asegurar la adecuada transferencia de datos y comandos. A continuación se describen los bits más importantes de los registros de control tanto del Host como de la tarjeta.

Registro de control del host m i . i a i z i i ~ o e I 7 (I s 4 s 2 1 O

R B E T ~ R ~ U I E ~ S Y ) ~ rn R V ~ R M X F B D BioBT M U U T

W W W W W R R R R R R R R R R R

No*r Wl(teaXiiabbon)yWshRienoe(krt.

Bit 9 O O 1 1

Bit 8 O Buffer vacío 1 O 1 Buffer lleno

Estado de recepción de B

Buffer menos de la mitad de lleno Buffer mas de la mitad de lleno

-. .,.~. - . .. YAM-I - -, ~ - -~

9 BXST: Estos dos bits permiten conocer el estado del canal B en * .. recepción.

Bit 3 O O 1 1

Bit 2 O Buffer vacío 1 O 1 Buffer lleno

Estado de transmisión de B

Buffer menos de la mitad de lleno Buffer mas de la mitad de lleno

> ARST: B i t que indica el estado del receptor del canal A. S i ARST = 1 , la tarjeta a escrito hacia el canal A. Esta bandera es limpiada cuando el host lee el canal.

9 AXST: B i t de estados del transmisor del canal A. S i A X S T = 1 , el host a escrito al canal A. Esta bandera es limpiada cuando la tarjeta lee el canal A.

Registro de control de la tarjeta

i ~ ~ 4 i a i a r i i o s a ? r s r a n r o

- O O Buffer vacío O 1 Buffer menos de la mitad de lleno 1 O Buffer mas de la mitad de lleno

> AIC-RST: Si el bit esta en cero, la interfaz anaiógica es reseteado (AIC). > BRST: Estado de recepción del canal B .

I Bit 3 I Bit 2 I Estado de recepción de B

h

.-. c

P ARST: B i t que indica el estado del receptor del canal A. Si ARST = 1 , la tarjeta a escrito hacia el canal A. Esta bandera es limpiada cuando el host lee el canal. ..-.

c - n c

n Ing. Luis Miguel de la Cruz Floras

UAM-I

k AXST: Bi t de estados del transmisor del canal A. S i A X S T = 1, el host a escrito al canal A. Esta bandera es limpiada cuando la tarjeta lee el canal A.

3.4 PROC,R.AMACIÓN DEL AIC ( TLC320ACOí )

El AIC es básicamente un procesador de audio, el cual consta principalmente de los siguientes componentes :

Convertidor Analógico - Digital de 14 bits de resolución. Convertidor Digital - Analógico de 14 bits de resolución. Puerto serial para comunicación con el DSP. Filtro de corrección sin(x)/x. Filtro pasa bajas para limitar en banda la seflal. Filtro pasa altas para limitar en banda la seflal.

E l diagrama a bloques del circuito es siguiente

- 1 . I

c=

E l AIC tiene tres diferentes modos de operación:

1 . Modo Stand-alone en este modo el AIC genera sus propias señales de

2 . Modo lineal - codee, en este caso las señales de reloj y sincronización

3 . Modo Maestro - En este modo se tienen dos AIC, uno funcionando como

reloj para sincronización.

son generadas externamente por el host.

maestro y otro como esclavo.

E n el esquema se muestra la forma de interconexión del DSP y el AIC.

10.388 UHI

Registro 1 Registro 2 Registro 4

El modo de funcionamiento del AIC en el E V M es modo Stand-alone.

Registro A, este controla el contador A Registro B, este controla el contador B Controla la ganancia del amplificador

La programación del AIC (TLC320AC01), es mediante la inicialización de los nueve registros de control. En el programa implementado en el proyecto, solo requirió de la programación de cuatro registros :

I Registro 5 ]Registro de configuración analógica

A continuación se hace una breve descripción de estos registros, para mas detalle consulte el manual del TLC320ACOlC.

> Registro 1 : Este registro se encarga de controlar un contador, el cual permite manipular la frecuencia FCLK que controla el filtro interno del AIC.

> Registro 2: Este registro permite la programación de la frecuencia de muestre0 en combinación con el registro 1.

NOTA: Este registro nunca debe ser programado con valores menores a 10 h, debido a que impide que los convertidores tengan un desempeño satisfactorio.

4. Luis Miguel de Is Cnn Finas

UAM-I

9 Registro 4:

k Registro 5:

La programación de este registro permite especificar por

Este registro permite desactivar el filtro pasa altas interno, software las ganancias tanto de la seflal de entrada como de la salida.

con lo cual la seflal de entrada conservara sus frecuencias bajas.

Para programar estos registros, se hace mediante el puerto serial de comunicación. Las transferencias entre el AIC y el DSP se clasifican como comunicaciones primarias y secundarias. En la comunicación primaria los 14 bits mas significativos (del 2 al 15) corresponden al dato muestreado, si los dos bits menos significativos ( del O al 1 ) son unos, esto implica que se solicita comunicación secundaria, por lo cual los 16 bits siguientes son leidos como información de control. Esta información de control permite programar uno de los nueve registros de configuración de AIC. Durante la comunicación secundaria, los bits de control tienen el siguiente formato.

Bits 15 y 14 son usualmente ceros, estos sirven para controlar el corrimiento de fase en algunas aplicaciones.

Bit 13, este decide si el dato va a ser leído (uno) o escrito del registro (cero). Bits 12 SI 8, estos deciden la dirección del registro que va a ser programado. Bits 7 ai o, contienen el dato que va a ser almacenado en un registro para operaciones de escritura.

Formato en comunicación primaria D1S M4 O13 O12 O11 O10 WO WO W 7 WE W Do) 003 DO2 W1 DO0

. . \ I\’

Formato en comunicación secundaria

015 m4 DIS DIP 011 DIO wo w8 ~ 0 7 w8 DOS w4 w3 DO^ WI MU

- ..

iq. Luis Mgwi de Is Cnu Flma

Debido a que el AIC funciona en modo stand-alone en el EVM'541, las frecuencias de corte de los filtros pasa altas, pasa bajas y la frecuencia de muestreo , se determinanmediante las siguientes ecuaciones.

MCLK

2 * (Valor del registro A ) * (Valor del regisíro A ) fs=

MCLK FCLK =

2*(Valor del registro A )

Donde: fs = Frecuencia de muestreo. f(LP) = Frecuencia de corte del filtro pasa bajas ~ ( H P ) = Frecuencia de corte del filtro pasa altas. MCLK= Frecuencia del reloj maestro. FCLK = Relo j del filtro interno del AIC.

En estas formulas, la restricción es que el registro B siempre debe se programado con un valor superior a 10, esto debido a que si es menor el ADC y DAC tendrán errores de conversión.

3.5 FLKJO DE DATOS ENTRE E L A IC , DSP y PC.

E l programa maneja el flujo de datos de la siguiente forma. Primero el AIC (TLC320ACOlC) mediante su convertidor analógico-digital, obtiene una muestra de la seflal analógica. Esta muestra es pasada mediante el puerto serial al DSP (TMS320C541), el cual se encarga de procesarla. Una vez que el DSP ha procesado l a muestra la envía de regreso por el puerto serial al AIC el cual mediante el convertidor digital - analógico y los filtros de corrección generan la seflal analógica de salida. Pero el DSP además de enviar la muestra al AIC, también la envía a la P.C mediante el canal B.

U U Flujo de datos entre la PC , DSP y AIC.

Ing Luis Miguel de la C m Flm

UAM-I

3.6 CODiCqO D€ D E S A R R O L L O P A R A E L EVM.

El EVM es apoyado por un juego de software. un compilador de C ,

ensamblador y un ligador. Figure 4 TMS320C54x (EVM) Flujo de Desarrollo de software

:-: 8 : - :

: * : :erinLkr: : - :

1

I

A . A continuación se describen las herramientas mostradas en Figura 4

El programa escrito en lenguaje C, es compilado para generar código fuente de ensamble. Después un ensamblador io convierte a código Objeto y por último el ligador io transporta a lenguaje del EVM.

ing. Luis Mpl de la CNZ Florea

4.- Propramas finales Dara el filtro

4.1 P R O G W M A E N S A M S L A D O R PA- E L DSP.

En e l siguiente programa de ensamblador se ponen las rutinas para programar al DSP, los coeficientes del filtro están insertados dentro del filtro y el filtrado se controlaba con l a mascara de filtrado.

Por alguna razón que no pude localizar el DSP no mandaba l a señal de interrupción para cuando el dato estuviera listo para verlo en la pantalla, entonces io que se hizo en es interrumpir la computadora con su reloj interno en lenguaje C, se checo el tiempo en que un dato estaba ya listo para mostrarlo y se interrumpía la maquina para i r por el dato y mostrarlo.

A continuación se muestra el código ensamblador.

...........................................................................

; MFCF - Rutinas TMS32OC54 para monitor de frecuencia caridaca fetal ; Proyecto terminal I y I1 / Instrumentación Medica VI1 ..........................................................................

.title "Rutinas DSP para monitor de frecuencia cardiaca fetal"

.nunregs

.......................................................................

; Constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . EVM TCR .set EVMCANALA .set XRDY MSK .set RINTi MSK .set INTl ESK .set SP1 MSK .set FILTRA-MSK .set RST - STO .set

RST - ST1 .set

0014h ; puerto de control del EVM OOlOh ; puerto del canal A del EVM OOOOlOOOOOOOOOOOb ; mascara para encuesta de puerto serie OOOOOOOOOlOOOOOOb ; mascara para habilitar RINTl OOOOOOOOOOOOOOlOb ; mascara para habilitar INTl OOOOOOOOllOOOOOOb ; mascara para reset de SP1 OOOlh ; mascara para filtrar o no OOOllllOOOOOOOOOb ; valor inicial de STO:

; ARP=OOO (siempre cero en modo estandar) ; TC=1, C=l, OVA=1, OVB=l, valores de reset ; DP=00000 (apunta a pagina cero)

OOlOlOlllOlOOOOOb ; valor inicial de ST1: ; BRAF=O (repeticion de bloque inactiva) ; CPL=O (se usa DP en dir. directo) ; XF=1 (bandera externa) ; HM=O (buses en 3-edo si HOLD) ; INTM=l (interupciones deshabilitadas) ; OVM=l (sobreflujo estandar) ; SXM=l (extension de signo) ; C16=0 (doble precision en ALU) ; FRCT=l (correcion de doble bit de signo) ; CMPT=O (modo estandar, no se usa ARP) ; ASM=O (no hay corrimiento en ALU)

UAM-I

RST-PMST

RST-SWWSR

RST - BSCR

CFG - SP1

AIC RST AIC-SET AICCS AIC AIC REG1 AICREG2 AICREG4 AICREG5 AICT

.set

.set

.set

.set

.set

.set

.set

.set

.set

.set

.set

lllllllllllOOOOOb ; valor inicial de PMST: ; IPTR=111111111 (vectores en FF80h) ; MP/MC=l (modo microprocesador) ; OVLY=1 (RAM en chip compartida) ; AVIS=O (direcciones internas invisibles) ; DROM=O (ROM en chip solo para codigo) ; CLKOFF=O (CLK visible)

; XPA=O (no hay memoria extendida) ; I/O=OlO (dos estados de espera en E/S) ; Data=000 (sin espera en datos) ; Data=000 (sin espera en datos) ; Program=000 (no hay memoria extendida) ; Proqram=000 (no hay memoria extendida)

; BNKCMP=0000 (bancos externos de 64K) ; PS-DS=O (sin espera en accesos prog/datos) ; BH=O (no hay retencion de bus) ; EXIO=O (no se apaga el bus externo)

OOOOOOOOOOOOlOOOb ; configuracion del puerto serial 1: ; FREE=O, SOFT=O (HALT emulado) ; TXMIO (sincronia de trama externa) ; MCM=O (CLK externo) ; FSM=1 (modo de rafaga) ; FO=O (16 bits por transmision) ; DLB=O (no hay loopback)

OOlOOOOOOOOOOOOOb ; valor inicial de SWWSR:

OOOOOOOOOOOOOOOOb ; valor inicial de BSCR:

OOOOh ; reestablecimiento del AIC 8000h 0003h ; indicador de comunicacion secundaria

OlFFh 0214h 0405h 0505h

; registro A del AIC = FFh ; registro B del AIC = 14h ; registro de ganancia del AIC, O d B ; registro de control analogico del

; filtro pasa-altas deshabilitado ; entrada bipolar

Ing. Luis Miguel de la Cna Florni

...........................................................................

; Variables inic ia l izadas ..........................................................................

a i c t c r b f i l t r a datopc xn-O xn-1 xn-2 xn-3 xn-4 xn-5 xn-6 xn-7 xn-8 xn-9 xn-1 O xn 11 xn-12 xnIl3 xn 14 xn-i 5 xnIl6 xn-17 xn 18 xn-19 xn12 O xn-2 1 xn 22 xn123 xn-2 4 xn-2 5 xn-2 6 xn 27 x n 2 8 xn-2 9 xn-30 xn 31 xn-32 xn-3 3 xn134 xn-35 xn-3 6 xn-37 xn 38 xnr39 xn-4 O xn 41 xn-4 2 xn143 xn-44 xn 45 xn14 6 xn-47 xn-48 xn-4 9

.data .word .word .word .word .word .word .word .word .word .word .word .word .word

.word

.word

.word

.word

.word

.word

.word

.word

.word

.word

.word

.word

.word

.word

.word

.word

.word

.word

.word

.word

.word

.word

.word

.word

.word

.word

.word

.word

.word

.word

.word

.word

.word

.word

.word

.word

.word

.word

.word

.word

OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh OOOOh

; palabra de control del EVM para AIC ; bandera de f i l t r ado ; dato para pasar a l a PC ; datos en l o s delays de l f i l t r o

xn 50 xn-5 1 xn-52 xn-53 xn-54 xn-55 xoGf

.word OOOOh

.word OOOOh

.word OOOOh

.word OOOOh

.word OOOOh

.word OOOOh

.word OOOOh : sobref lujo del f i l t r o

; Coeficientes del f i l t r o ...........................................................................

h55 h54 h53 h52 h51 h50 h49 h4 8 h47 h4 6 h45 h44 h4 3 h42 h4 1 h40 h39 h38 h37 h36 h35 h34 h33 h32 h31 h30 h2 9 h2 8 h27 h2 6 h2 5 h2 4 h23 h22 h2 1 h2 O hl9 hl8 h17 h16 h15 h14

, sec t .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word ,word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word .word

'I f i l t r o " -12 -50 -106 -187 -299 -443 -614 -802 -990 -1160 -1292 -1367 -1370 -1282 -1080 -735 -203 567 1637 3065 4894 7135 9745 12622 15602 18465 20956 22812 23799 23755 22617 20436 17376 13695 9713 5772 2192 -779 -2984 -4373 -4993 -4964

e t ' 1

h13 .word h12 .word hll .word hl O .word h9 .word h8 .word h7 .word h6 .word h5 .word h4 .word h3 .word h2 .word hl .word hO .word

-4460 -3668 -2767 -1898 -1156 -589 -203 23 127 150 129 89 43 -5

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; Pila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . pila .usect "pila", 0080h

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; Vectores de interrupcion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

reset: .sect "vectores"

BD principal ; reset, sale al programa principal STM # (pila+0080h), SP ; inicializa la pila en el slot

RET ; NMI (no se usa) .space 3*16

sintl7: ; software 17 (no se usa) .space 4*16

sint 18 : ; software 18 (no se usa) .space 4*16

sintl9: ; software 19 (no se usa) .space 4*16

sint20 : ; software 20 (no se usa) .space 4*16

sint21: i software 21 (no se usa) .space 4*16

sint22: ; software 22 (no se usa) .space 4*16

m i :

sint23 : ; software 23 (no se usa) .space 4*16

sint24:

sint25:

sint26:

sint27 :

.space 4*16

.space 4*16

.space 4'16

.space 4*16

; software 24 (no se usa)

i software 25 (no se usa)

; software 26 (no se usa)

i software 27 (no se usa)

Ins. Luis Mjguei de la CNZ Flora

F

f-

- AM-I I n f m e del Rwaoto Terminal .-

r- *%"

sint28:

p sint29:

p sint30:

r - -

eint0: c C einti:

c C eint~:

t-

P i,

timer: L..

L# rinto:

L. xint0:

P rinti: \-

P

P \r-

xintí:

r> eint3: L

P-

reservado: /T i

h ."-

.space 4*16

.space 4*16

.space 4*16

RETE .space 3'16

XOFW #FILTRA - MSK, * (bfiltra)

RETE

RETE .space 3*16

RETE .space 3*16

RETE .space 3*16

RETE .space 3*16

B procesa .space 3*16

RETE .space 3'16

RETE .space 3'16

.space 6*4*16

; software 28 (no se usa)

; software 29 (no se usa)

; software 30 (no se usa)

; externa O (no se usa)

; habilita o dehabilita el filtrado

; externa 2 (no se usa)

; timer

; recepcion puerto serie O (no se usa)

; transmision puerto serie O (no se usa)

; recepcion puerto serie 1, porcesa dato

; transmision puerto serie 1 (no se usa)

; externa 3 (no se usa)

; espacio reservado en el 541

- - y .................................................................... - . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

; Codigo

.text h v

h

Y

c b - .# -. w

h ._ Úis. Luis Mi@ de la CNZ Flcrm

c ...

r f- x-

C C c I P i-

c

UAM-I Mme d JProvsctoTcrminsl

..........................................................................

; Programa principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . principal:

; deshabilita interrupciones SSBX INTM ; deshabilitacion global ANDM #-RINTl MSK,IMR ; deshabilitacion de RINTl ANDM #-INT1 - %K,IMR ; deshabilitacion de INTl

CALL dsp-cfg

CALL splrstcfg

CALL aic-rstcfg

ORM #INTlMSK, IMR ; habilita INTl RSBX INTM ; habilitacion global

B $

; configura DSP

; reestablece y configura el puerto serial 1

; reestablece y configura el AIC

; habilita interrupciones

; lazo infinito para procesar interrupciones

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; configuracion del DSP

dsp-c f g :

; registros de control del procesador

..........................................................................

STM #RST ST0,STO STM #RST-ST~,ST~

; registro de estado del procesador

; registro de control de cambio de banco

; registro de estados de espera para E/S

S TM #RST-PMST, PMST

S TM #RST BSCR,BSCR

STM #RST-SWWCR, SWWSR RET

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; Restablecimiento y configuracion del puerto serial 1

spl-rstcfg:

; reset y configuracion del puerto serial 1

; limpia RINTl pendiente, si acaso hay

; habilitacion de RIÑTI

i saca del reset al puerto serial 1

..............................................................................

STM XCFG SP1, SPCl

STM XRINTl MSK, IEX

0P.M XRINTlMSK, IMR

S TM RET

# (CFG - SP1 I SP1 - MSK) , SPCl

I-- L.

c r-

c c c c P L

P

r i-

L

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; Reestablecimiento y configuracion del AIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

aic-rstcfg:

; reestablece AIC ST #AICRST, * (aictcr) ; activa reset por hardware PORTW RPT #15 ; espera quince ciclos NOP ST #AIC-SET, * (aictcr) ; desactiva reset PORTW * (aictcr) ,EVM TCR

STM #0000h,DXRl

(aictcr) ,EVM - TCR

; inicia comunicacion serial con ei AIC

CALL pollxrdy

LD #AIC-REGl,A CALL cs-aic

LD #AIC-REG2,A CALL cs-aic

LD XAICREG4, A CALL cs-aic

LD IIAIC-REGS, A CALL cs-aic RET

; programa registro A (registro 1 AIC)

; programa registro B (registro 2 AIC)

; programa registro de ganancia (registro 4 AIC)

; programa registro de control analogico (registro 5 AIC)

...........................................................................

; Comunicacion secundaria con el AIC (A guarda el dato a enviar) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

cs aic: - STM #AIC-Cs, D X R ~ CALL pollxrdy STL A, DXRl CALL pollxrdy RET

; inicia comunicacion secundaria

; envia acumulador A al AIC

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; Control de transferencia serial por encuesta ..........................................................................

pollxrdy : BITF SPC1,XRDY MSK ; verifica XRDY en puerto serie 1 BC pollxrdy,ÑTC ; espera a que este activo RET

c

c f- ....

c C c c c C

8- 'i-

f=- i_

UAM.1 Infame &I Provecto Tomi*

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

; Proceso de datos recibidos por el puerto serie 1

procesa:

; recupera el dato del puerto serie 1

; verifica si debe filtrarse o no

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

LDM DRRl ,A ; pone el dato en el acumulador A

BITF * (bfiltra) , FILTRA-MSK BC nof iltra, NTC

STM # (xn-55) ,ARO ; apunta con ARO al ultimo delay STL A, O, * íxn-O) ; guarda la muestra actual (x[nl) LD #O,A ; inicializa el acumulador RPT # (xn-55-xn-O) ; repite para cada delay MACD *ARO-,h55,A ; calcula tap m y desplaza x[n-ml NOP ; a x[n-m-11 SFTA A,-16 ; pasa AH a AL

; filtra el dato

; envia el dato de regreso al AIC

nof iltra :

AND #OFFFCh, A ; enmascara l os 2 LSB de AL para

STL A, DXRl ; despliega un dato fuera de la pc

STL A, * (datopc) PORTW *(datopc),EVi-CANAL?+ ; saca un dato al puerto A hacia

; comunicacion primaria con el AIC

; envia el dato a la PC por el canal A del EVM

; la pc ; regresa de interrupcion

RETE

.end ; fin del codigo

m - I informe del Provecto Tínnied

4.2 CODiC,O EN LENc(WJE C P A R A CONTROLAR E L D S P .

E l presente codigo controla al DSP usando también el codigo en ensamblador y la Interrupción del timer de la computadora para que vaya por el dato.

#include <stdio.h> #include <dos. h> #include <conio.h> #include <process.h> #include <graphics.h> #include <stdlib.h> #include <math.h>

#define INTR OX70 / * interrupcitn del reloj en tiempo real * / #define BASE OX0240 / * DIRECCION DE W E 0 DE LA TARJETA * / #define OFFSET OXO800 / * DIRECCION DEL CANAL A * / #define CONTROL OX0808 / * REGISTRO DE CONTROL */ #define TAMCOLA 1000 / * SE DEFINE EL TAMAXO DEL BUFER GENERAL * / #define TAMBUFER 10000 / * SE DEFINE EL T m X O DEL BUFER PARA TAREA 1 Y 3 * /

#ifdef -cplusplus #define -CPPARGS ... #else #define - CPPARGS #endif

unsigned Bandera, dat;

void interrupt ( *oldhandler) (CPPARGS);

float dato = O, normal = l,bufer[TAMBUFERI,seal[TAMCOLAl; / * SE DEFINE EL BUFER

unsigned int cont=0,cuenta=0,bl=0,b3=O,il=O,i3=O,bll=O,inicio, fin; / * INDICES GLOBAL* /

GENERAL Y EL*/

void controll(void) {

unsigned short k; k=inport (BASE+CONTROL) ; k=klOxlOOO; outport(BASE+CONTROL,k);

I

lug. Luis ?"ligml de la CNZ Flmw

void interrupt handler(-CPPARGS) / * cuando interrumpe va por el dato*/

( dat = inport(BASE+OFFSET) >> 2; if (dathOx2000)

else dat = datlOxC000;

dat = dathOX3FFF;

dato = (float) ((int)dat) ;

if ( (bl==l) 6 6 (il<lOOOO)) / * PARA TAREA 1 SE LEE EL DATO LISTO*/

t bufer [ill = (float) ( (int) dat/normal) ; il+t; if (bll==l) t

il=O; bll=O;

1 1

if ((b3==1) & & (i3<10000)) / * PARA TAREA 3 SE LEE EL DATO LISTO*/

t bufer[i31=(float) ((int)dat/normal); i3++;

1

if ((bl==O & & b3==0)) / * LECTURA PAPA EL BUFER GENERAL * /

t seal[iniciol=(float) ( (int)dat/normal); inicio++; if (inicio>900) inicio=O;

1

oldhandler ( ) ; 1

/ * procedimiento que ejecuta la interrupcion 70 * /

r \.-

void int-70 ( 1 {

int mask; / * save the old interrupt vector * /

oldhandler = getvect(1NTR); / * install the new interrupt handler * /

setvect (INTR, handler) ; / * habilita la interrupcih del reloj * /

outportb(OXA1, (OXAl&OXFE) 1 ; /* se hace una mascara al CMOS registro rtc * /

outportb (0x70, OXOB) ; mask=inportb(OX71) ;

outportb(OX70,OXOB); outportb(OX71, (masklOX40));

/ * se habilitan las interrupciones periodicas "/

1

void carga-dsp ( )

/ * se carga el codigo y se restablece el DSP*/ if(system("c:\\dsp\\evm\\evmload c:\\dsp\\ejemplos\\mfcf\\mfcf.out"))

if (system("c:\\dsp\\evm\\evmrst") ) perror ("error ejecutando evmload: ' I ) ;

perror("error ejecutando evmrst: " ) ; 1

void des-int (1 {

/ * deshabilita la interrupcion del reloj * / int maskl;

maskl=inportb(OX71); outportb (0x70, OXOB) ; outportb(OX70,maskl) ; outportb (OXAI, (Owl& ( ! OXFE) ) ) ;

/ * reset the old interrupt handler * / setvect (INTR, oldhandler) ;

I

int main (void) {

int x=O,gdriver = DETECT, gmode; Bandera=inport(BASE+CONTROL); Bandera=Bandera&Ox0002; while(Bandera!=Ox0002) Bandera=inport(BASE+CONTROL)&OX0002; controll 0 ; carga-dsp í ) ; int-70 ( ) ; initgraph(&gdriver, &gmode, "c:\\bc") ;

/ / outport(EASE+OFFSET,OX0000); /*habilita el filtrado*/ while ( ! kbhit ( 1 ) ( controll 0 ; if (inicio==640)

I clearviewport ( ) ;

fortint h=O;h<=640;ht+) t putpixel (x, (seal [hl/30) tlO0,YELLOW) ; cuenta=O; x++; 1

I x=o;

1 closegraph ( ) ; des-int ( ) ; return O;

U M - I 1 Rwffito T.wi&

Bibliomzfia

P An Introduction to digital signal processing John H. Karl Academic Press Inc.

Orland Priemer World Scientific

Richard A. Roberts, Clifford T. Mullis Prentice Hall

P Digital signal processing Alan V. Oppenheim, Ronald W. Schafer Editorial Prentice Hall

Alan V. Oppenheim, Ronald W. Schafer Editorial Prentice Hall

P Proakis, Digital Signal Processing: Principles, Algorithms and Applications 2nd Edition, 1992, Editorial Maxwell MacMillsn.

P Bellanger, Digital Processing o f Signals: Theory and Practice, 2nd Edition, 1989, Editorial John Wilcy and Sons.

% Oppenheim and R . Schafer. Digital Signal Processing , 1989, Editorial Prentice Hall.

% Manuales de Instalación, técnicos y de programación sobre el DSP Texas Instruments.

P Introductory signal processing

P Digital signal processing

9 Discrete-time signal processing

Ing. Luis Miguel de la CnK Fl-