A mis hermanos: Por el apoyo incondicional que siempre he recibido

Texto completo

(1)

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

(2)

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. En los Proyectos se busco información referente al DSP, tambien conocido como EVM (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. En 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.

(3)

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.

(4)

UAM-I lnfprme del Rovwto T q m d

I.-Zntroducción.

I.1.- F I L T R O S 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.

En 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.

Si se muestrea una señal a 8Kh2, la frecuencia de dobles es 4Khz. De acuerdo ai Teorema e n 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

(5)

I

-- .

-

-

.

.

-1.2.- COEFICI€NTES D € L F I L T R O

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.

(6)

@ 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.

(7)

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 IBM 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 640K 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 o s interruptores en el DSP.

(8)

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

(9)

UAM-I

3.- Referencia técnica del

DSP.

3.1 C A R A C T E R I S T I C A S D E L T M S 3 2 O C 5 4 X E V M ( M O D U L O D E E V A L W C I O N ) O DSP.

opera a 40 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 EVM (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.

(10)

UAM-I infame

3 . 2 I N T E R F A C E W O S T P C / A T

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 E V M

3.3 P R O i R 4 M A C I O N 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.

(11)

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.

En 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 EVM, 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 ~ Srn Y ) ~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

(12)

-.

.,.~.

-

. ..

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: Bit 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.

9 AXST: Bit de estados del transmisor del canal A. Si AXST = 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 no r

-

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: Bit 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

(13)

UAM-I

k

AXST: Bit de estados del transmisor del canal A. Si AXST = 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 D E L 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

(14)

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.

En 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 EVM 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.

(15)

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 M 4 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

-

..

(16)

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 = Reloj 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 D E DATOS E N T R E E L A I C , D S P

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.

(17)

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.

(18)

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 D S P .

En el 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 la mascara de filtrado.

Por alguna razón que

no

pude localizar el

DSP

no mandaba la 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 ir 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)

; H M = 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 A L U )

; FRCT=l (correcion de doble bit de signo)

; CMPT=O (modo estandar, no se usa ARP)

(19)

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:

O O O O O O O O O O O O O O O O b ; 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

(20)

. . .

; Variables i n i c i a l i z a d a s

...

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 O O O O h O O O O h O O O O h OOOOh OOOOh O O O O h O O O O h OOOOh O O O O h O O O O h O O O O h O O O O h

OOOOh

O O O O h OOOOh O O O O h

OOOOh

O O O O h

OOOOh

O O O O h O O O O h O O O O h O O O O h

OOOOh OOOOh

OOOOh O O O O h O O O O h O O O O h OOOOh

OOOOh

O O O O h O O O O h

OOOOh

O O O O h O O O O h

OOOOh

O O O O h OOOOh OOOOh O O O O h O O O O h OOOOh

OOOOh OOOOh

OOOOh

OOOOh

O O O O h O O O O h O O O O h

OOOOh OOOOh

; palabra de control d e l EVM para AIC

; bandera de f i l t r a d o ; dato para pasar a l a PC

(21)

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 : s o b r e f l u j o d e l f i l t r o

; Coeficientes d e l 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

, s e c 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

(22)

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 2 0 (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 2 6 (no se usa)

i software 27 (no se usa)

(23)

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 * 1 6

RETE

.space 3*16

RETE

.space 3 * 1 6

RETE

.space 3 * 1 6

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

._

(24)

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, S P C l

STM XRINTl MSK, IEX

0P.M XRINTlMSK, IMR

S TM RET

(25)

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

(26)

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 A R O 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 o s 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

(27)

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

(28)

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

(29)

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, ( O w l & ( ! 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 ;

(30)

I

clearviewport ( ) ;

fortint h=O;h<=640;ht+)

t

putpixel (x, (seal [hl/30) tlO0,YELLOW) ; cuenta=O;

x++;

1

I x=o;

1

(31)

UM-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

Figure

Tabla  1 .  Direccionamientos con switch

Tabla 1 .

Direccionamientos con switch p.8
Tabla  2.  Desplazamientos  Host de Interface de  los  Registro en  el  E V M

Tabla 2.

Desplazamientos Host de Interface de los Registro en el E V M p.10
Figure  4  TMS320C54x  (EVM)  Flujo  de  Desarrollo de  software

Figure 4

TMS320C54x (EVM) Flujo de Desarrollo de software p.17

Referencias

Actualización...

Related subjects :