r -.
UAM-I Informe del Proveoto TurpEo I
Insorme
del
Proyecto Terminalpara
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
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.
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.
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
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.
@ 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.
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 elsiguiente:
o
Lista del hardware
Ysoftware
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.
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 comoreferencia 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
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.
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 estamapeada la pagina O (dirección del puerto base) y además por un offset
Desplazamiento) particular de cada localidad.
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 tipoFIFO
(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 quese 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
-.
.,.~.
-
. ..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 , latarjeta 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íoO 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 3I
Bit 2I
Estado de recepción de Bh
.-. 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
UAM-I
k
AXST: Bit de estados del transmisor del canal A. Si AXST = 1, el host aescrito 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 de14
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 . IE 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ón3. 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ógicaA 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 cualpermite 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.
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 paraoperaciones 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
-
..
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 losfiltros 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.
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.
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 controlabacon la mascara de filtrado.
Por alguna razón que
no
pude localizar elDSP
no mandaba la señal de interrupciónpara 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 .setRINTi MSK .set INTl ESK .set
SP1 MSK .set
FILTRA-MSK
.set RST - STO .setRST - 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)
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
. . .
; 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
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
e
t ' 1h13 .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)
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
-
.#
-.
wh
._
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
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
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, NTCSTM # (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
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
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
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 ;
I
clearviewport ( ) ;
fortint h=O;h<=640;ht+)
t
putpixel (x, (seal [hl/30) tlO0,YELLOW) ; cuenta=O;
x++;
1
I x=o;
1
UM-I 1 Rwffito T.wi&
Bibliomzfia
P
An Introduction to digital signal processingJohn H. Karl
Academic Press Inc.
Orland Priemer World Scientific
Richard A. Roberts, Clifford
T.
MullisPrentice Hall
P
Digital signal processingAlan
V.
Oppenheim, Ronald W. SchaferEditorial Prentice Hall
Alan
V.
Oppenheim, Ronald W. SchaferEditorial 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, 2ndEdition, 1989, Editorial John Wilcy and Sons.
% Oppenheim and R. Schafer. Digital Signal Processing
,
1989, EditorialPrentice Hall.
% Manuales de Instalación, técnicos y de programación sobre el DSP
Texas Instruments.
P
Introductory signal processingP
Digital signal processing9 Discrete-time signal processing