Você está na página 1de 62

PROCESAMIENTO DE SEAL DIGITAL

Contenido
Unidad 1 Familiarizacin con el equipo didctico DSP
EJERCICIO 1 Introduccin al tablero de circuitos del DSP
Ejercicio 2 El Ensamblador y el Depurador
Ejercicio 3 Aritmtica del procesador
Unidad 2 Arquitectura de la CPU
Ejercicio 1 La Unidad central de aritmtica y lgica
Ejercicio 2 Espacio de memoria
Ejercicio 3 Direccionamiento
Unidad 3 Ejecucin del programa
Ejercicio 1 El controlador de programa
Ejercicio 2 La Pipeline
Unidad 4 Operaciones bsicas de E/S
Ejercicio 1 Perifricos del DSP
Ejercicio 2 Procesamiento de seales digitales: filtro FIR

UNIDAD 1 FAMILIARIZACIN CON EL EQUIPO DIDCTICO DSP

OBJETIVO DE LA UNIDAD
Al completar esta unidad, ser capaz de explicar la diferencia entre un procesador de seales
digitales (DSP) y uno de uso general. Estar familiarizado con el proceso de diseo para los
programas de DSP.
FUNDAMENTOS DE LA UNIDAD

Un Procesador de Seales Digitales DSP (Digital Signal Processor) es un microprocesador potente e


increblemente rpido que, como nuestro cerebro, puede tratar el anlisis de seales en tiempo real.
El diseo interno de los DSPs, el elemento clave de la arquitectura de las funciones multiplicar y sumar,
lo hace mucho ms rpido que otros microprocesadores al realizar los clculos matemticos.
Los procesadores de seales digitales se caracterizan por:
estructuras especializadas que hacen ejecutar instrucciones rpida y eficazmente,
instrucciones de multiplicacin rpidas,
el nmero reducido de instrucciones que hace simplificar el proceso de programacin del
DSP
Los DSPs han revolucionado las telecomunicaciones. Se los puede encontrar en el interior de
(para nombrar algunos), telfonos celulares, modems, dispositivos de reconocimiento y sntetizadores
de voz, lectores de Disco Verstil Digital (DVD) y dispositivos de alta seguridad.
En realidad, los DSPs se pueden encontrar en otros dispositivos que no son comnmente asociados
por la gente, tales como: controladores de disco duro, sistemas de suspensin de vehculos, en los
circuitos procesadores de seales de equipos mdicos de representacin de imgenes y sistemas de
radar.

Los DSPs comenzaron a aparecer al final de la dcada del '70 y principios de los aos ochenta, con
DSP1 de Bell Lab, 2920 de Intel y PD7720 de NEC.
En 1982, Texas Instruments introduce el TMS32010, el cual sera el popular punto fijo de 16-bits
y el primer miembro de la familia DSP. Este DSP tena una velocidad media de clculo de 8
MIPS.
En 1998, usando lo que se denomina paralelismo, los DSPs alcanzaron velocidades de clculo de hasta
1600 MIPS.

El DSP utilizado con el tablero de circuitos del PROCESADOR DE SEALES DIGITALES de


Lab-Volt es un TMS320C50 de Texas Instruments. El TMS320C50 es un DSP de la tercera
generacin con un diseo interno basado en el TMS32010 de la primera generacin.

En 1982, los primeros DSPs de punto flotante tambin fueron producidos por Hitachi. Este
formato numrico increment enormemente el rango de clculo dinmico de los DSP.
Dos aos ms tarde, NEC introdujo el primer DSP de punto flotante de 32 bits, que alcanzaba una
velocidad de clculo de 6.6 MIPS.
En general, las seales en el mundo real de radar y sonido son mejor procesadas por DSPs de punto
flotante. Las seales compuestas de telecomunicaciones, imgenes y control son generalmente mejor
procesadas por DSPs de punto fijo.
Las aplicaciones de los DSP han aumentado porque:

permiten procesamientos ms complejos de lo que se puede lograr con circuitos analgicos


proveen un funcionamiento repetitivo del procesamiento de seales
el cdigo de procesamiento digital se puede modificar fcilmente, y debido a su diseo, las
actualizaciones o los cambios son ms flexibles
generalmente, su costo de desarrollo es menor que los diseos analgicos con niveles de
desempeo equivalentes

Un DSP no puede funcionar sin la inteligencia de un programa que le da sus instrucciones. El


programa le indica al DSP, cules instrucciones debe ejecutar para llevar a cabo ciertas funciones.
Este programa se guarda como cdigo de mquina en el interior del DSP.
Si un programador fuera a escribir un
programa de DSP utilizando cdigo de
mquina le sera muy difcil.
Por esta razn, se desarroll el lenguaje
ensamblador para programar DSPs.
Este es un lenguaje de programacin cuyas
instrucciones, mnemnicas son simblicas y en
correspondencia una a una con las instrucciones
de mquina.
Se utilizan un ensamblador (assembler) y un
enlazador (linker), para traducir el programa
escrito en lenguaje ensamblador en los cdigos
de mquina del DSP.
El ensamblador traduce el archivo del programa en archivos objeto, que luego son enlazados
conjuntamente para crear el archivo ejecutable.

El lenguaje C es un lenguaje de alto nivel que es muy utilizado para programar DSPs complejos o
algoritmos altamente complejos.
La programacin en C simplifica el diseo de aplicaciones de DSP, debido a que el programador ya no
est limitado por un grupo pequeo de instrucciones de lenguajes de bajo nivel (como el lenguaje
ensamblador).
Se utiliza un compilador C (C Compiler) para traducir los cdigos fuente en C, a los cdigos
correspondientes de ensamblador del DSP.

La ltima parte de la programacin implica la comprobacin de su programa por errores y modificarlo


hasta que realice correctamente la funcin deseada. A este proceso final se le conoce como depuracin.
A un programa que ayuda a la depuracin de un software se le llama depurador (debugger).

Un depurador es una herramienta que el programador utiliza para diagnosticar los problemas
asociados con sus programas de DSP. sto se hace antes de transferir el programa a la memoria del
DSP.
El VDE C5x, Entorno de Desarrollo Visual (Visual Development Environment) C5x, es el
depurador utilizado con el Procesador de seales digitales.

Los desarrolladores de sistema DSP raramente depuran un DSP sin la ayuda de un depurador.
Tambin, pueden utilizar otras herramientas de ayuda como EVM emuladores y simuladores.
El DSP usado con el tablero de circuitos forma parte del mdulo de evaluacin DSK (Kit de
procesamiento de seales digitales) del TMS320C5x.
Al utilizar los EVMs, emuladores y simuladores, los desarrolladores pueden cambiar durante el
proceso de desarrollo, el modelo de DSP que se est probando.
Una vez que sea funcional, la prueba final para un programa se pone en ejecucin con un sistema
DSP.
Los programas incluidos y utilizados con el Procesador de seales digitales estn escritos en lenguaje
ensamblador. Se utiliza un lenguaje ensamblador especfico para los EVMs de
TMS320C5x, ha aadido instrucciones en l, llamadas directivas DSK.
Para ejecutar o examinar la funcin de un programa del Procesador de seales digitales, el archivo
ejecutable (*.dsk) debe descargarse dentro del DSP a travs del VDE C5x, el depurador del Equipo
didctico.
NUEVOS TRMINOS Y PALABRAS
archivos objeto - Archivos que contiene las directrices del cdigo de mquina que representa, por lo
general, la parte de un programa.
bloques condicionales - Un bloque de cdigo que slo es ensamblado si una cierta instruccin
condicional es verdadera.
CODEC - Es la abreviacin de CODificador-DECodificador. Es un circuito electrnico que convierte
las seales analgicas en representaciones digitales y decodifica las seales digitales a forma analgica.
cdigo - Un segmento de texto de programacin encontrado en un lenguaje de programacin. cdigo
de mquina - Cdigo de instruccin reconocido y ejecutado por un microprocesador. El cdigo se
expresa en una representacin numrica binaria.
comentario - El segmento de una instruccin fuente que documenta o mejora la legibilidad de un archivo
fuente. Los comentarios no se recopilan, ensamblan, o conectan; no tienen ningn efecto
en el archivo objeto.
compilador - Un programa que convierte un lenguaje de alto nivel en un lenguaje de mquina de bajo
nivel.
complemento a dos - Una convencin numrica para la representacin de valores en

procesadores de punto fijo. El ltimo bit a la izquierda representa un valor decimal negativo, y en los
restantes bits, cada uno representa un valor decimal positivo diferente.
CPU - (Central Processing Unit) La Unidad central de procesamiento, es esa parte del
procesador implicada en las operaciones aritmticas, de traslacin y de la lgica Booleana, as como
tambin la generacin de direccionamientos de memoria de datos y programa.
Digital - Relativo a los datos representados por nmeros. Una seal digital no es continua, no tiene
un valor numrico asociado con cada punto en el tiempo y tiene amplitudes discretas.
dma - (del ingls, Data Memory Address) Direccionamiento de memoria de datos.
emuladores - Una combinacin de microprogramas de hardware y software, que permiten a un
sistema computarizado ejecutar programas escritos para otro tipo de microprocesador.
enlazador - (linker) Un programa que crea un archivo ejecutable a partir de uno o varios archivos objeto.
ensamblador - Un programa que convierte, por ejecucin, instrucciones simblicas
(mnemnicas) en cdigo de mquina.
etiqueta - Un smbolo que comienza en la columna 1 de una instruccin fuente de ensamblador. Una
etiqueta es la nica instruccin de ensamblador que puede comenzar en la columna 1.
EVM - Los EVMs o mdulos de evaluacin, son tableros de desarrollo de bajo costo que
incluyen un procesador como objetivo, una cantidad limitada de perifricos y de memoria
externa. Los EVMs se utilizan para probar cdigos en tiempo real.
filtro antisolape - El filtro de paso bajo diseado para eliminar, a partir de la seal de entrada, los
componentes de alta frecuencia que degradan la conversin de analgica-a-digital de la seal de salida.
filtro-posterior - Filtro de paso bajo diseado para eliminar, de la seal de salida, los
componentes de alta frecuencia creados por la conversin de digital a analgica.
formatos numricos - Una convencin de un programador donde cada bit en una palabra de
informacin est predeterminado a ser ponderado por un cierto valor.
frecuencias de ciclo de reloj - Sinnimo con la frecuencia de ciclo del procesador, se refiere
normalmente a la frecuencia a la cual el sistema DSP realiza su ms bsica unidad de trabajo.
handshaking Es el dilogo que tiene lugar entre dos dispositivos, la parte transmisora y la
parte receptora, antes de comenzar una transferencia de informacin. El hand-shaking se utiliza
con fines de control cuando se produce el intercambio de seales predeterminadas al establecerse una
conexin. Este nombre refleja al acto por el cual dos partes manifiestan estar de acuerdo, es decir, se
dan un apretn de manos.
interrupcin - La suspensin de un proceso de la computadora causado por un evento externo. Una
vez terminado el manejo del procedimiento del evento externo, se reanuda el proceso de la
computadora.
lenguaje C - Un lenguaje de programacin multi-propsito que produce cdigos independientes del
tipo de microprocesadores para los cuales se ha desarrollado.
lenguaje de alto nivel - Un lenguaje de programacin ms cercano al lenguaje humano. Cada
instruccin o sentencia del programa, corresponde a una o ms instrucciones ejecutables en la
mquina.
lenguajes de bajo nivel - Un lenguaje de programacin parecido al lenguaje mquina y en el que cada
mnemnica tiene una equivalencia de uno a uno con el cdigo de mquina.
MIPS - Una unidad de medida proporcional al nivel de rendimiento de un procesador. Un MIPS
corresponde a la ejecucin de un Milln de Instrucciones Por Segundo (algunas veces abreviado
como MIP). A menudo la instruccin multiplicar/acumular, comn a casi todos los DSPs, se
utiliza para calcular la velocidad por MIPS.
mnemnica - Una representacin simblica hecha de letras del alfabeto y diseada para ayudar
la memoria humana; Generalmente es una abreviacin, o forma abreviada, de la descripcin de la
operacin que efecta en cdigo de mquina. El ensamblador traduce la mnemnica en cdigo
de mquina.
montaje en superficie - Un tipo de tecnologa que permite un proceso de fabricacin
completamente computarizado para circuitos impresos. Consiste en soldar las piezas
directamente sobre la superficie de una tarjeta de circuito impreso (PCB).
operandos - La parte de una instruccin que designa dnde ir a buscar o guardar los datos la
unidad central de procesamiento (CPU), durante la ejecucin de la instruccin.

paralelismo - Paralelismo es un tipo de computacin en el cual, varias operaciones


independientes se ejecutan al mismo tiempo, en lugar de una despus de otra.
perifrico - En un sistema de procesamiento de datos, cualquier equipamiento, diferente de la
unidad central de procesamiento, que pueda proporcionar comunicacin externa o facilidades
adicionales al sistema.
pma - (del ingls, Program Memory Address) Direccionamiento de memoria del programa. ponderados
- El factor por el cual un dgito en un nmero binario, se multiplica para obtener su valor aditivo
aportado en la representacin de un nmero real.
procesador - Un dispositivo que ejecuta operaciones sobre datos segn las reglas especficas dadas
a l por una lista de instrucciones.
punto binario - El carcter, en notacin binaria, que separa la parte entera de una expresin
numrica de su parte fraccionaria.
puntos de interrupcin - Los puntos de interrupcin se utilizan para corregir o depurar
programas. Un punto de interrupcin es un lugar en un programa de computacin, generalmente
en una instruccin, donde se interrumpe la ejecucin del programa.
punto fijo - Un sistema aritmtico en el cual todas las cantidades numricas se expresan por un
nmero de bits. En este sistema, el punto decimal est implcitamente situado en una posicin
predeterminada.
punto flotante - Un sistema aritmtico caracterizado por una notacin donde los nmeros reales
se representan por un valor de punto fijo conocido como la mantisa y por un nmero entero
conocido como el exponente. El nmero real es igual a la mantisa multiplicada por dos a la
potencia del exponente.
rango dinmico - Es la relacin entre el valor ms grande y el ms pequeo que una cantidad o
parmetro puede tomar.
registros - (register) Un dispositivo de almacenamiento que tiene una capacidad especificada como
un bit, un byte o una palabra de computadora y en general, enfocado a un propsito especfico.
regulacin mutua de los intercambios - El dilogo que tiene lugar entre dos dispositivos antes
de comenzar una transferencia de informacin. La regulacin mutua de los intercambios es el
intercambio de seales predeterminadas con el fin de controlar al establecerse una conexin.
seal - Una cantidad fsica dependiente del tiempo (como un nivel de corriente) por la cual, por
ejemplo, se transmite informacin en un sistema o circuito electrnico.
simuladores - Un programa que le permite a un sistema computarizado imitar la operacin lgica
de otro tipo de microprocesador.
subrutina - Una secuencia de instrucciones de computacin que realizan una tarea especfica y que,
por lo general, es utilizada repetidamente por el programa principal (rutina).
tabla de ondas - Una lista de valores que define un perodo de una seal. La tabla de ondas se guarda
en memoria y se utiliza para generar formas de onda.
tiempo real - Un modo de operacin del procesador bajo el cual se recibe, se procesa y se retorna una
muestra de datos antes de que se reciba la siguiente muestra de datos del procesador. Este se
da tan rpidamente como para permitirle al usuario: responder instantneamente, afectar el
funcionamiento del entorno o guiar los procesamientos fsicos que controlan el procesador. La
mayora de los sistemas interactivos operan en un modo de tiempo real.
unidad aritmtica interna - Esa parte de la computadora que realiza operaciones aritmticas. Por
ejemplo, tomando dos nmeros guardados en lugares especficos de la memoria, sumndolos
conjuntamente y guardando el resultado.

EJERCICIO 1 Introduccin al tablero de circuitos del DSP


OBJETIVO DEL EJERCICIO

Al completar esta unidad, usted se familiarizar con la ubicacin y la funcin de cada uno de los
diferentes componentes del sistema didctico PROCESADOR DE SEALES DIGITALES.

DISCUSIN DEL EJERCICIO


El tablero de circuitos tiene dos secciones funcionales: La seccin que contiene los accesorios del
tablero de circuitos, y la seccin que contiene el Procesador de seales digitales y sus perifricos.
Los accesorios del tablero de circuitos son los siguientes:

fuente de alimentacin con entrada de alimentacin auxiliar


fuente cc
pre-amplificador de micrfono
amplificador de audio

El bloque de circuito FUENTE DE ALIMENTACIN, entrega una corriente CC regulada y


filtrada a todo el tablero de circuitos.
El tablero de circuitos puede operar en dos vas diferentes. La entrada de voltaje para la
FUENTE DE ALIMENTACIN puede ser recibida de la unidad base de FACET de Lab-Volt, o por
medio de conexiones externas de 15 V que se encuentran en el bloque de
ALIMENTACIN AUXILIAR.
El bloque FUENTE CC enva un voltaje CC que puede ser variable, dependiendo de la posicin del
potencimetro, entre 3,5 Vcc y +3,5 Vcc.
La FUENTE CC se puede usar como la fuente de una seal de referencia de entrada, para
programas ejecutados en el DSP.
El PREAMPLIFICADOR DE MICRFONO se utiliza para ajustar una seal de micrfono a un nivel
adecuado para la entrada en el DSP.
El potencimetro de GANANCIA hace variar el nivel de salida entre un valor bajo y uno alto. Para
lograr or la seal desde la SALIDA ANALGICA, localizada en el bloque CODEC, se utiliza el
AMPLIFICADOR DE AUDIO. Se puede utilizar el altavoz o los auriculares para escuchar la seal.
La segunda seccin funcional del tablero de circuitos, el DSP y sus perifricos, contiene:

DSP
CODEC
INTERFAZ E/S
INTERRUPCIN
AUXILIAR E/S
PUERTO EN SERIE

El procesador de seales digitales se encuentra en el corazn de un sistema de procesamiento de


seales digitales.
El bloque DSP contiene un circuito integrado (CI) DSP TMS320C50 en un paquete de montaje en
superficie de 132 pines. Puede alcanzar una velocidad de ejecucin de hasta 50 MIPS. Hay muchas
clases de DSP y pueden variar en velocidades del ciclo. La velocidad de clculo se establece con un

reloj de DSP. Sin embargo, la velocidad es limitada por las restricciones del diseo del sistema interior
del CI (circuito integrado). Algunos DSP utilizan un oscilador interno para ajustar el reloj y otros usan
un oscilador externo.
El DSP utilizado en el tablero de circuitos est configurado para utilizar un oscilador externo. El
Oscilador ubicado en el tablero de circuitos le proporciona una seal de referencia de 40 MHz.
El DSP divide esta seal para hacerla una interna de 20 MHz (la frecuencia de reloj maestro) que utiliza
para sincronizar sus ciclos de instruccin.
Algunos programas de DSP son escritos en la ROM (Read-Only Memory) interna durante el proceso de
fabricacin, sin embargo, la mayora utiliza ROM externa para grabar sus programas. Ambos tipos de
DSP tienen acceso a su ROM al arrancar, y guardan el programa en la RAM
(Random Access Memory) para su ejecucin. Un DSP utiliza seales digitales. Para poder interactuar
con el mundo exterior, debe tener un traductor para convertir las seales analgicas a digitales y
viceversa.
Un CODEC es el traductor que se utiliza para este fin.
En general, un CODEC est constituido por los siguientes componentes:

una GANANCIA de entrada programable


un FILTRO ANTISOLAPE
un convertidor de Analgico-a-Digital
un convertidor de Digital-a-Analgico
un FILTRO POSTERIOR

La INTERFAZ E/S es un medio para la visualizacin y entrada de informacin del programa. El


interruptor DIP en posicin 8 registra un nmero de 8-bits en el DSP. Dependiendo del programa
utilizado, la informacin se procesar en diferentes maneras. Los visualizadores de 7 segmentos se
utilizan para mostrar la informacin del programa al usuario del DSP.
Como la mayora de los microprocesadores, los DSP tienen capacidades de control de
interrupcin. Es posible utilizar dos botones como dispositivos de entrada del usuario para un programa.
Cuando se presiona uno de los botones, se marca una interrupcin dentro del DSP y se ejecuta el cdigo
del programa asociado a l. La seccin AUXILIAR E/S fue agregada para monitorear las seales, y para
hacer de prototipo de ejercicios adicionales del DSP hechos con el tablero de circuitos.
Los cabezales del bloque AUXILIAR E/S se pueden utilizar para interconectar el DSP con un circuito
externo. El circuito externo puede alimentarse con el cabezal de 10-pines localizado en
el bloque AUXILIAR E/S. La seccin AUXILIAR E/S tiene tres cabezales. Los puntos de conexin 5
Vcc y 15 Vcc son accesibles en el cabezal derecho de 10-pines; stos se pueden utilizar para
alimentar un circuito externo. Los alimentadores del tablero de circuitos tienen una
tierra comn. El cabezal izquierdo contiene los 8 contactos LSB (etiquetado D0 a D7) del bus de datos
del DSP externo, e incluye 4 direccionamientos pre-decodificados (etiquetado PA0## a PA3##) que
pueden utilizarse para el desarrollo de prototipos, tambin incluidos.
El cabezal central tiene los siguientes conectores entrada/salida (E/S):

seleccin de datos, de programa, de espacio E/S (DS##, PS##, IS##)


salida del temporizador (TOUT)
seleccin Lectura y activacin Escritura para los dispositivos externos (RD##, WE##)
seleccin Lectura/Escritura para los accesos externos (R/W#)
seal de reconocimiento de Interrupcin (IACK#)

entrada de interrupcin externa (INT4#)


seleccin Direccional y Chip para controlar la transferencia de datos externa (DIR, CS#)

El DSP del tablero de circuitos est programado para actuar como esclavo de una computadora
principal (host). Para utilizar el Equipo didctico DSP, se debe conectar el PUERTO SERIE o
SERIAL del tablero de circuitos, a uno de los puertos seriales de su computadora.
NOTA: Si la computadora principal (host) no tiene una segunda conexin de puerto serial disponible,
entonces en el momento apropiado durante el procedimiento del ejercicio, puede desconectar la
conexin serial de la Unidad base y utilizarla para conectar el PUERTO SERIE del tablero de
circuitos a la computadora.
El Entorno de Desarrollo Visual (VDE) C5x gestiona la entrada en comunicacin o regulacin
mutua de los intercambios (hand-shaking), entre el tablero de circuitos y su computadora. ste
controla todas las entradas y salidas desde la memoria del DSP a travs de la conexin serial.
Una vez establecida comunicacin entre su computadora y el tablero del DSP, el VDE C5x puede
ser utilizado para descargar un programa al DSP.

Ejercicio 2 El Ensamblador y el Depurador


OBJETIVO DEL EJERCICIO
Al completar este ejercicio, comprender la sintaxis bsica del archivo fuente del DSP. Ser
capaz de operar el depurador (debugger) que acompaa el PROCESADOR DE SEALES
DIGITALES.

DISCUSIN DEL EJERCICIO


El archivo fuente para un programa de DSP se puede escribir en cualquier editor de texto. En
general, pueden utilizarse todos los editores ASCII.
A las lneas de instruccin ubicadas en el archivo fuente y utilizadas en el lenguaje de programacin
ensamblador (assembler) se les llama instrucciones de cdigo fuente. Un programa de DSP es una lista
de dichas instrucciones fuente ensambladas. Las instrucciones de cdigo fuente en el lenguaje
ensamblador tienen una sintaxis muy precisa.
Existen cuatro campos que estructuran una instruccin:

la etiqueta (opcional)
la instruccin mnemnica
los operandos de la instruccin mnemnica (el nmero de operandos depende de la
instruccin utilizada)
el comentario (opcional)

Cada campo de instrucciones de cdigo fuente debe separarse por uno o ms espacios en blanco. Las
instrucciones fuente en s, deben comenzar con una etiqueta o un espacio en blanco. El principio de una
lnea de comentario debe ser indicado por un punto y coma o un asterisco. Un archivo fuente puede
tambin contener directivas de ensamblador. Las directivas suministran los datos al programa y
controlan el proceso de ensamblaje.
Las directivas de ensamblador permiten realizar lo siguiente:

inicializar las instrucciones del programa y los valores de los datos en la memoria
definir los nombres simblicos para ciertos registros del DSP (utilizando la directiva
.mmregs).
reservar espacio en la memoria para las variables que no se han inicializado.
ensamblar bloques condicionales.

El archivo ejecutable dsk5a.exe es el programa ensamblador utilizado con el PROCESADOR DE


SEALES DIGITALES. Cuando se ensambla un archivo fuente (*.asm), se crean un archivo dsk
(*.dsk) y un archivo de lista (*.lst).
El archivo dsk, conocido tambin como archivo de programa, contiene una lista de cdigo de mquina
correspondiente a las instrucciones fuente- ensambladas. Para ejecutar un programa, se debe cargar el
archivo del programa en el DSP. El DSP se carga con el archivo dsk. El archivo de lista enumera todas
las instrucciones de cdigo fuente, nmeros de lnea y los errores que puedan ocurrir durante el proceso
de ensamblaje. Cuando se visualiza el programa dentro del depurador, los archivos de lista y dsk se
utilizan para mostrar las instrucciones del archivo fuente.
El VDE C5x es el depurador utilizado con el Procesador de seales digitales. Tiene las siguientes
funciones:

Carga los programas dsk en la memoria y visualiza el cdigo del programa,

ejecuta y detiene el programa y ejecuta comandos de un solo paso (ejecucin de


instrucciones simples),

despliega en una ventana, los registros de la CPU y los registros de perifrico

visualiza en una ventana, las reas de memoria del DSP,

representa grficamente los valores de memoria del DSP, mientras el programa DSP se est
ejecutando,

edita registros de UCP, instrucciones de programa y memoria del DSP,

El VDE C5x utiliza el archivo de lista para desensamblar (lo contrario de ensamblar) el cdigo
de mquina contenido dentro del archivo dsk. El cdigo desensamblado es entonces visualizado.
Cuando se carga un archivo dsk en la memoria del DSP, la ventana de Desensamblaje se abre
automticamente.
La ventana de Desensamble muestra cuatro columnas de informacin:
1.
2.
3.
4.

la direccin de memoria donde se encuentra la instruccin


la instruccin en cdigo de mquina
la instruccin mnemnica
la instruccin operando

La instruccin fuente resaltada con una lnea amarilla, representa la siguiente instruccin que
ejecutar el DSP. Una instruccin fuente resaltada con una lnea prpura, corresponde a la
instruccin donde se ha colocado un punto de interrupcin.
La barra de herramientas ubicada en la parte superior de la pantalla del depurador, tiene
comandos que ayudan a controlar la ejecucin del programa.
Run (ejecutar) y Halt (parar), se utilizan para comenzar y detener la ejecucin de un programa.
StepInto: haciendo clic en este botn de la Barra de herramientas, usted puede recorrer paso a paso el
cdigo. ste ejecutar una instruccin del programa por cada clic del botn.
StepOver: Si no desea revisar paso a paso una subrutina puede ejecutar el comando StepOver una vez
que alcance una funcin CALL. La funcin completa ser entonces ejecutada, y en este
punto se reanudar el recorrido paso a paso.
StepOut: El comando StepOut ejecutar todas las instrucciones necesarias para ejecutar una
subrutina. La ejecucin se detendr en cuanto encuentre una instruccin RET (subrutina de
retorno) de ensamblador).
El valor de todos los registros de la CPU se muestran en la ventana Registros de C5X. Llegar a
familiarizarse con muchos de los registros de la CPU, segn avance a travs del curso. Por el momento,
es suficiente saber que estos registros contienen informacin del sistema DSP. Los registros mostrados
en esta ventana contienen valores, bits de control y de estado de DSP, y punteros de instrucciones. La
memoria se visualiza dentro del depurador, al abrir la ventana de visualizacin de Memoria. Los
direccionamientos de memoria a observar son seleccionados por
el usuario. Se pueden abrir tantas ventanas de memoria como se considere necesario dentro del
depurador.
Cuando un archivo dsk se carga dentro del VDE C5x, lo siguiente es verdadero para las ventanas
de visualizacin de Memoria y Desensamble:

Todas las etiquetas de instruccin fuente, utilizadas para declarar una variable dentro del cdigo
fuente, aparecen en azul.

Todos los comentarios de las instrucciones de cdigo fuente etiquetadas, aparecen en verde.

La ventana de visualizacin Memoria puede ser utilizada como una ventana Watch Window (de
observacin). Las variables guardadas en la memoria se pueden observadas y/o editadas si es
necesario.
Dentro de todas las ventanas de visualizacin, lo siguiente es verdadero:

Los registros y direccionamientos y de memoria aparecen en rojo, cuando los valores


guardados en ellos se modifican durante la ejecucin de la instruccin anterior.

Los registros y direccionamientos y de memoria (a excepcin de los registros RAM, XF e


INTM), se pueden editar haciendo un doble clic en el registro o direccionamiento de memoria
deseado.
El comando Graph (Grfico) en el men View (Vista) puede utilizarse para visualizaciones grficas de
los valores de los datos. Las seales pueden visualizarse en el dominio tiempo (Time domain) o
frecuencia, en cualquier punto del programa. Los puntos de interrupcin detienen un programa para
que el usuario que utiliza el depurador, pueda verificar el estado del programa cargado despus de una
cierta instruccin. Cuando una instruccin (en la ventana de Desensamble) se activa con un doble clic,
se fija un punto de interrupcin en la instruccin.
Es posible iniciar la ventana Puntos de interrupcin asociados, ejecutando el comando Puntos de
interrupcin asociados en el men Options (Opciones). Una ventana puede actualizarse continuamente,
utilizando la caracterstica Puntos de interrupcin asociados. Es posible asociar una ventana de
visualizacin seleccionada (de Grficos, de Memoria, de Registros de CPU, ...) con cualquier punto de
interrupcin. Al ejecutar un punto de interrupcin, cualquier ventana de visualizacin asociada con l se
actualizar. sta efectivamente conecta una punta de prueba o sonda, en un punto especfico en el
programa.

Ejercicio 3 Aritmtica del procesador


OBJETIVO DEL EJERCICIO
Al completar este ejercicio, estar familiarizado con las representaciones y formatos numricos
utilizados en los DSP.
DISCUSINN DEL EJERCICIO
Los Procesadores de seales digitales (DSP) se clasifican por la manera en la cual funciona su
aritmtica. Un DSP puede ser: DSP de punto fijo o DSP de punto flotante. El tipo de DSP
seleccionado para una determinada aplicacin, depende de que su aritmtica sea la apropiada para la
tarea. El TMS320C50 es un DSP de punto fijo.
Los DSPs de punto fijo, por lo general son de menor costo que sus contrapartes de punto flotante,
debido a que contienen menos silicio y tienen menos pines externos. Generalmente los dispositivos de
punto fijo tienen frecuencias de ciclo de reloj ms rpidas. En 1998, estos ciclos de reloj eran tan
pequeos como 10 ns, correspondiendo a una frecuencia de ciclo del procesador de 100 MHz.
Generalmente los dispositivos de punto flotante son ms flexibles, puesto que su sistema aritmtico
tiene acceso a un rango dinmico ms extenso, y en muchos casos estos sistemas son ms precisos. Un
procesador tpico de punto fijo de 16-bits, guarda coeficientes y valores de datos con precisin de 16bits. Sin embargo, dentro de la unidad aritmtica interna del DSP, los valores intermedios se mantienen
a 32 bits de precisin. Hacindolo de esta manera, el error por redondeo acumulativo hecho durante los
clculos se reduce al mnimo.
Al utilizar su computadora o su calculadora, usted puede calcular valores tales como: (-1*23) o
(3.453). Un DSP puede tambin proporcionar respuestas a los mismos tipos de preguntas. Un
programador debe utilizar ciertos formatos numricos, de manera que cada valor que se quiera utilizar
en el DSP tenga una representacin binaria asociada con l. Este valor binario necesitar
ocasionalmente representar, ya sea un nmero positivo o negativo, fraccionario o entero. Puesto que un
DSP es un procesador que se especializa en hacer clculos rpidos, es esencial comprender cmo puede
expresarse la gama diversa de valores numricos.
Ambos nmeros enteros, negativo o positivo, son representados por el formato entero
complemento a dos (formato a 2). Ambos nmeros fraccionarios, negativo y positivo, se
representan por el formato fraccionario complemento a dos (formato Q). Estos formatos difieren
solamente por los valores ponderados asociados, asignados a cada bit de informacin. En la
notacin del nmero entero complemento a dos (formato a 2), se asocia un signo negativo con
el bit ms significativo.
El formato a 2, proporciona una rango numrico cubriendo:-2N-1 a + (2N-1 - 1) donde N representa el
nmero de bits en el nmero binario.
El formato fraccionario complemento a dos (o formato Q) asocia diferentes valores ponderados con
cada bit adecuadamente. La existencia del punto binario que separa los valores ponderados
fraccionarios de los valores ponderados enteros est implcita. En el formato Q15 el bit ms
significativo es el bit signo y se da a un valor ponderado de -20. Esto implica que el punto binario se
ubique entre el MSB y el 14vo bit. Cambiando la posicin del punto binario, el valor ponderado dado a
cada bit tambin cambia. En consecuencia, el rango dinmico y la precisin del formato fraccionario
complemento a dos, puede variar con el tipo de formato que es utilizado.
Ntese que al continuar moviendo el punto binario ms y ms hacia la derecha, se descubre una

relacin prctica. Las representaciones decimales del formato a dos y del formato Q15 son
proporcionales por un factor de escala de 215.
Los formatos a 2 y Q pueden ser utilizados por las unidades de aritmtica interna de punto fijo de
cualquier DSP. Estos formatos son convenciones numricas usadas por los programadores. La aritmtica
binaria hecha dentro de un DSP de punto fijo no es afectada por el formato del nmero binario utilizado.
Los DSPs de punto flotante generalmente utilizan un formato de 32 bits, donde los 24 bits ms a la
izquierda representan la mantisa y los 8 bits restantes representan el exponente. De esta manera, un
rango continuo de valores es cubierto por un nmero de punto flotante de 32 bits, donde la mantisa debe
variar desde -1 a 0 y +1 a +2. Esto significa que el valor del bit ponderado en 20 ser siempre igual a 1.
Por lo tanto, no es necesario guardarlo en la memoria, y durante los clculos se convierte en un bit
implcito.
Generalmente los procesadores de punto flotante son ms precisos y tienen un rango dinmico mayor.
Mientras que en teora la eleccin entre la aritmtica de punto fijo y punto flotante es independiente
de la opcin de precisin, en la prctica, los procesadores de punto flotante ofrecen generalmente una
precisin superior. sto se origina debido a que se dedican ms bits para definir la mantisa (24 bits +
1 bit implcito), en comparacin con los DSPs de punto fijo que usualmente tienen 16 bits, aunque
existen DSPs de punto fijo de 20 y 24 bits.

UNIDAD 2 ARQUITECTURA DE LA CPU

OBJETIVO DE LA UNIDAD
Al finalizar esta unidad, comprender la diferencia bsica entre la arquitectura de un procesador de
seales digitales y la de un procesador de uso general. Se familiarizar con la disposicin de los
elementos internos de una CPU de DSP.
FUNDAMENTOS DE LA UNIDAD

En los aos 1950, los diseadores de circuitos de procesamiento de seales analgicas comienzan a ver
a la computadora como una herramienta de simulacin de diseos. Hasta ese momento, fueron capaces
de simular los circuitos, pero no en tiempo real. Fue a mediados de los aos de setenta (70s) que las
computadoras llegan a ser lo bastante potentes, como para efectuar el procesamiento de seales en
tiempo real de los circuitos analgicos que haban estado simulando. Los DSPs de hoy son, en efecto,
el resultado de muchos aos de investigacin, e incluso actualmente sigue siendo un campo muy
activo. Su arquitectura especializada les permite implementar algoritmos de procesamiento de seales
ms efectivamente que los procesadores de uso general.
A la arquitectura bsica ms frecuentemente utilizada en los procesadores de uso general se le conoce
como arquitectura de Von Neumann. La arquitectura de Von Neumann tiene un espacio de memoria
nico utilizado por datos e instrucciones (instrucciones pertenecientes al programa).

Los Procesadores de seales digitales han utilizado a travs del tiempo, una estructura interna un poco
diferente conocida como arquitectura Harvard. La arquitectura Harvard, contrariamente a la Von

Neumann, tiene espacios de memoria separados para datos e instrucciones de programa. La arquitectura
Harvard sabe diferenciar los tipos de informacin que guarda en la memoria. La informacin es tanto
una palabra de datos (un operando para una instruccin), o una palabra de programa (la instruccin).
Las palabras de datos se mantienen en el espacio memoria de datos, y de ah se leen y escriben a
diferentes ubicaciones dentro del procesador, por medio del bus de datos (el DB). Las palabras de
programacin se mantienen en el espacio de memoria de programa, y de ah se leen y escriben a
diferentes localizaciones dentro del procesador, por medio del bus del programa (el PB).

La arquitectura Von Neumann solamente utiliza un bus. Este bus tiene acceso tanto a datos,
como a instrucciones de programa.
Un DSP tpico contiene:

Memoria
una Unidad Central de Procesamiento (CPU)
Perifricos
una estructura de Bus

La memoria consiste en todo el espacio de almacenamiento direccionable dentro de una unidad de


procesamiento:

memoria de solo lectura del programa (ROM)


RAM de acceso simple (SARAM) de datos/programa
RAM de doble acceso (DARAM) de datos/programa

La Unidad central de procesamiento (CPU), es la parte de un procesador donde residen los circuitos
que controlan la interpretacin y ejecucin de instrucciones.

Los perifricos son los elementos utilizados por la CPU para sincronizar la ejecucin de las
instrucciones, el temporizador por ejemplo, o para comunicarse con los dispositivos externos del
procesador, como por ejemplo los puertos seriales.

Las estructuras de bus de los procesadores, se diferencian por el modo en que los buses del
procesador estn conectados con los otros elementos del procesador (CPU, memoria y
perifricos). Es esencialmente la estructura de bus la que hace la diferencia entre una arquitectura
Harvard y una arquitectura Von Neumann.

La CPU del TMS320C50(C50) contiene:

Elementos de control del programa


Registros mapeados en memoria
una Unidad aritmtica para los registros auxiliares (ARAU)
una Unidad central aritmtica lgica (UCAL)
una Unidad lgica en paralelo (PLU)

Los elementos de la CPU se encuentran en prcticamente todos los modelos de DSPs, aunque pueden
encontrarse bajo distintos nombres. Ej.: CALU (Unidad central de aritmtica y lgica) de la familia
DSP32xx, diseada por Lucent Technologies, es llamada DAU (Unidad aritmtica de datos).

El Controlador del programa es la unidad que controla la ejecucin de instrucciones del procesador. El
registro PC (registro contador de programa) y los registros de estado y control se encuentran en el
centro de operacin de la unidad controladora del programa.
Los registros mapeados en memoria son registros de chip integrado mapeado a (asociado con) un
direccionamiento de memoria de datos.

En el C50, hay 28 registros bsicos de la CPU, 17 registros perifricos, 16 registros de puerto


Entrada/Salida y 35 registros reservados. En total, 96 registros son mapeados a la memoria de datos.
Como los registros mapeados en memoria se direccionan en el espacio de memoria de datos, stos
pueden ser escritos a dicho espacio y ledos desde all, en la misma forma que cualquier otra
ubicacin de memoria de datos.
La Unidad aritmtica para los registros auxiliares (ARAU), se utiliza para deducir (calcular y
comparar) y hacer el seguimiento de la posicin de la informacin guardada dentro de la memoria del
DSP. El C50 tiene ocho Registros auxiliares (AR) utilizados por la ARAU para guardar
direccionamientos de memoria importantes.
La Unidad central de aritmtica y lgica (CALU) es la responsable de ejecutar todas las
operaciones lgicas y aritmticas dentro de un DSP. Por ejemplo en el DSP TMS320C50, la
CALU ejecuta esas operaciones con un multiplicador de 16-bit x 16-bit, un acumulador, registros
operando, desplazadores binarios y una Unidad de aritmtica y lgica (ALU) de complemento a 2 de
32 bits.

La Unidad lgica en paralelo (PLU) es una unidad lgica de 16 bits que ejecuta operaciones gicas
sin interrumpir la CALU (unidad principal de aritmtica y lgica de la CPU).

NUEVOS TRMINOS Y PALABRAS


acceso - Acceder a la memoria es la accin de leer el valor mantenido al interior de una cierta
localizacin de memoria o de guardar un valor en una cierta localizacin de memoria.
ADD *+, 0, AR0 - La instruccin ADD del 'C50 se utiliza para sumar el operando al
acumulador. En este caso, la instruccin ADD se est repitiendo, y est direccionando
indirectamente los 16 muestreos recibidos ms recientemente. sto en efecto suma los
muestreos (una operacin requerida para el proceso de realizacin de promedios).
agotamiento - Se refiere a la condicin que ocurre cuando una computadora trata de representar un
nmero que es muy pequeo. Los programas pueden responder al agotamiento de diferentes formas.
Algunos reportan un error, mientras otros tratan de representar la mejor aproximacin. Por ej. si una
computadora soporta una precisin de ocho dgitos decimales, y un clculo en un proceso produce un
nmero de nueve (0.000000003), se produce la condicin de agotamiento. ancho de banda de
memoria - El ancho de banda de memoria de un procesador es proporcional al nmero de ciclos de
memoria por ciclo de instruccin. Ocurre un ancho de banda de memoria superior en los procesadores
con varios buses de datos y direcciones.
ARAU -, Unidad aritmtica para los registros auxiliares, es la unidad responsable del direccionamiento,
dentro de un DSP.
arquitectura - Arquitectura es un trmino aplicado a la estructura global y las interrelaciones lgicas de
los componentes de un procesador (o de una computadora, una red) y su software. Se puede dividir la
arquitectura del procesador en cinco componentes fundamentales: entrada/salida, almacenamiento,
comunicacin, control y procesamiento.
Arquitectura Harvard - La organizacin interna de un microprocesador caracterizado por espacios
de memoria separados para los datos e instrucciones del programa. Se accede a cada uno de los
espacios de memoria de datos y programa por uno de los dos buses paralelos. La arquitectura
Harvard permite acceder a cada espacio de memoria simultneamente.
Arquitectura Harvard modificada - La arquitectura Harvard modificada es una variacin de la
estructura bsica de la arquitectura Harvard propiamente dicha. Las variaciones se utilizan para
incrementar los accesos simultneos de memoria del DSP. A la arquitectura Harvard modificada se
le conoce tambin como arquitectura Harvard extendida o como Super Arquitectura Hardvard
(SHARC).
asignacin - Asignar memoria es asociar una direccin especfica del bus de datos o de
programa a un espacio de almacenamiento en memoria.
bits de configuracin de memoria - Son bits de estado y control que seleccionan la configuracin
de memoria utilizada por los DSPs. Dentro del DSP TMS320C50 los bits MP/MC#, RAM,
OVLY se encuentran dentro del Registro de estado del modo procesador
(PMST) y el bit CNF, otro bit de configuracin de memoria, se encuentra en el Registro de estado
1 (ST1).
bloque de memoria - Una parte o seccin de memoria. Un bloque de almacenamiento es
considerado como un elemento individual para conservar un nmero especfico o fijo de
palabras.
bfer circular - Es una seccin de la memoria utilizada como bfer (memoria intermediaria) y que se
ejecuta en bucle de vuelta al inicio. Los bfers circulares se implementan generalmente en software
de procesadores convencionales y por medio de direccionamiento mdulo, circular, de los DSPs.
bfer de datos - Un bfer (memoria intermedia) de datos es una seccin de memoria utilizado para
guardar datos. Los datos llegan de una fuente de chip externo (como un CODEC por ejemplo) o de
una computacin anterior. Los datos se conservan en bfer hasta que el procesador est listo para
procesarlos.
bus - Un bus es una camino para la transmisin de seales que se envan entre los dispositivos del
procesador.
cache de instrucciones - Una memoria cache de instrucciones guarda una instruccin y generalmente
utilizada para repetir dicha instruccin en un programa. A la cache de instrucciones tambin se la conoce
como cache de programa.

dma - (del ingls, Data Memory Address) Abreviacin del direccionamiento de memoria de datos.
desbordamiento - Cuando en una operacin aritmtica, un resultado cuyo valor absoluto es muy grande
para representarlo dentro del rango de tolerancia del sistema de numeracin en uso, se produce la
condicin de desbordamiento (overflow).
direccionamiento circular - Es un modo de direccionamiento en el cual el contenido de un
registro se utiliza para circular a travs de un rango de direccionamientos, creando un bfer de
memoria circular. Al direccionamiento circular se le conoce tambin como direccionamiento mdulo.
direccionamiento directo - Un tipo de direccionamiento que codifica la direccin del operando dentro
de la palabra de instruccin o dentro de una palabra que sigue a la palabra de instruccin.
A este modo de direccionamiento se le conoce tambin como direccionamiento directo en
registro o direccionamiento directo en memoria compaginada.
direccionamiento directo en memoria compaginada - Un tipo de direccionamiento que codifica la
direccin del operando dentro de la palabra de instruccin o dentro de una palabra que sigue a la
palabra de instruccin. Este modo de direccionamiento es un tipo de direccionamiento directo.
direccionamiento implcito - Direccionamiento implcito significa que los direccionamientos del
operando son implcitos por la instruccin. Un ejemplo de instruccin de un 'C50 que utiliza
direccionamiento implcito es ADDB (suma de los registros ACC y ACCB).
direccionamiento indirecto - En este tipo de direccionamiento, el operando que se direcciona reside en
memoria, y el direccionamiento de memoria que contiene el operando se guarda dentro de un registro.
ste, es el registro que se especifica durante el direccionamiento indirecto. direccionamiento
inmediato (corto y largo) - El direccionamiento inmediato codifica el operando en la palabra de
instruccin o en una palabra separada que sigue a la palabra de instruccin.
espacio de memoria - Espacio de memoria es una propiedad del DSP. El espacio de memoria
representa el rango de direccionamientos asignados, por la estructura del bus del DSP, a los
dispositivos internos y externos de memoria. La memoria de chip integrado (ROM y RAM) de un
procesador especfico est designada para permanecer en el espacio de memoria del procesador, al
igual que los registros mapeados en memoria y perifricos de procesador.
extensin de signo - Es el proceso de llenar los bits de orden superior de un nmero con el bit de signo.
Por ejemplo, cuando se carga un nmero de 16 bits a un campo de 32 bits, el bit de signo del nmero de
16 bits, se extiende a las posiciones 17 a 32.
FIFO - Una fila de espera Primero en entrar, Primero en salir (First-In, First-Out) en la que la ms
reciente llegada se coloca al extremo de la lista de espera y el elemento que espera ms tiempo es el
primero que recibe servicio. A una FIFO se le emplea como memoria intermediaria para conectar los
dispositivos que funcionan asincrnicamente a diferentes velocidades. Cada dispositivo se conecta en
un extremo de la FIFO.
indirecto - En este tipo de direccionamiento el operando que se direcciona permanece en la memoria y
la direccin de la localizacin de memoria que contiene el operando se guarda dentro de un registro. Es
este registro el especificado durante el direccionamiento indirecto.
kernel - Son los programas que forman la parte esencial de un sistema de funcionamiento de una
computadora. Ncleo es el sinnimo ms prximo de kernel, y se tiene tendencia a su utilizacin
donde los efectos se llevan a cabo por una mezcla de programacin normal y micro codificacin (por
ejemplo se hace con el lenguaje ensamblador).
MAC - Una abreviacin (mnemnica) de Multiplicacin y ACumulador, una operacin ejecutada
frecuentemente en los DSPs.
memoria - Un dispositivo en el cual se puede introducir y guardar informacin y desde la cual se puede
extraer cuando se desee.
memoria intermediaria circular - Una seccin de la memoria utilizada como memoria intermediaria y
que se ejecuta en bucle de vuelta al inicio. La memoria intermediaria circular se ejecuta tpicamente en
el software de los procesadores convencionales y por medio del direccionamiento mdulo, circular, de
los DSPs.
memoria intermediaria de datos - Una memoria intermediaria de datos es una seccin de memoria
utilizada para guardar datos. Los datos llegan de una fuente de chip externo (como un CODEC por
ejemplo) o de una computacin anterior. Los datos se conservan en la memoria intermediaria hasta que
el procesador est listo para procesarlos.

memoria de programa/datos - Memoria de programa/datos es una memoria en la que se puede


acceder por cualquiera de los dos buses paralelos al interior de un procesador con arquitectura
Harvard.
modo de direccionamiento - Modo de direccionamiento es uno de los grupos de mtodos empleados
para especificar a los operandos de una instruccin cdigo de mquina. Un modo de direccionamiento
describe al procesador el mtodo que utilizar para guardar y recuperar datos de la memoria.
modo saturacin de desbordamiento(OVM) - OVM (Overflow Saturation Mode) Al activarlo,
cualquier valor de desbordamiento producto de la ALU se presenta como el mximo valor posible.
Para el TMS320C50, el valor se presenta como 7FFF FFFFh. Al activarla, cualquier valor de
agotamiento producto de la ALU se presentar como 8000 0000h, el mnimo valor posible.
MSB - (del ingls, Most Significant Bit) Bit ms significativo.
no voltil - Caracterstica de dispositivo de memoria, que no est sujeto a la prdida de
informacin guardada si la fuente de alimentacin es desconectada.
procesadores de uso general - Un procesador diseado para operar una amplia variedad de
problemas computacionales y lgicos. Ejem., la lnea de procesadores Intel Pentium.
RAM - RAM (del ingls: Random Access Memory) o Memoria de acceso aleatorio.
Generalmente se utiliza para guardar informacin del programa en forma temporal. La RAM es una
memoria voltil debido a que al desconectarse la alimentacin se pierde la informacin guardada.
registros - Un conjunto de bits utilizados para conservar datos temporalmente o para controlar,
especificando el estado de un dispositivo.
registros de estado y control - La operacin de la CPU del DSP TMS320C50 se determina por la
informacin encontrada dentro de cuatro Registros de estado y control de 16 bits. Dichos registros son:
el Registro de control de bfer circular (CBCR), Registro de estado del modo procesador (PMST),
Registro de estado 0 (ST0), Registro de estado 1 (ST1).
ROM - ROM (del ingls: Read Only Memory) o Memoria de solo lectura. Este tipo de memoria se
utiliza para guardar el cdigo de programa durante el proceso de fabricacin. La ROM es una memoria
no voltil debido a que conserva sus datos an despus de apagar el procesador.
rutina de servicio de interrupcin - Una rutina de servicio de interrupcin (ISR) es una subrutina que
se ejecuta cada vez que ocurre un evento especfico. En este caso, ex2_3.asm del programa ejecuta la
ISR cuando el DSP recibe un muestreo del CODEC. En el modo EJECUTAR, el ISR se ejecuta
automticamente.
SACL *+, 0, AR0 - La instruccin SACL del 'C50 guarda los bits ACCL (ACCumulator Low)
en memoria. En este punto en el programa, el acumulador contiene el ms reciente muestreo recibido
por el DSP, enviado por el CODEC. Los operandos del direccionamiento indirecto le indican a la CPU
que guarde el muestreo en uno de los dma etiquetados XN0 al XN15. El dma est sealado por el
registro auxiliar 0 (AR0).
SACL 10 h - La instruccin SACL del 'C50, como se indic anteriormente, guarda los bits de ACCL
(ACCumulator Low) en memoria. En este caso particular, al ejecutar SACL, el acumulador conserva
el promedio de los 16 muestreos ms recientes recibidos por el DSP y guardados en memoria. SACL
guarda este promedio en el dma etiquetado OUTPUT (salida).
unidad aritmtica para los registros auxiliares - Una Unidad aritmtica para registros auxiliares (o
ARAU) es el nombre dado, por los creadores Texas Instruments del DSP TMS320C50, a la AGU
(Address Generation Unit) del DSP. Es muy comn que muchos creadores de DSP den diferentes
nombres a las unidades (como la AGU) al interior de sus DSPs.
unidad de aritmtica y lgica (ALU) - Es la parte de un procesador que ejecuta operaciones
aritmticas (suma, resta) y lgicas (AND, OR, ...).
voltil - Caracterstica de un dispositivo de memoria, que est sujeta a la prdida de informacin
guardada si la fuente de alimentacin es desconectada.

Ejercicio 1 La Unidad central de aritmtica y lgica


OBJETIVO DEL EJERCICIO
En la realizacin de este ejercicio, se familiarizar con el papel que juega la CALU dentro de un
DSP.
DISCUSIN DEL EJERCICIO
NOTA: En este ejercicio se hace la presentacin, en resumen, de algunas instrucciones de
ensamblador de la CALU del C50. Se deja en consideracin del estudiante, cubrir el resto del
material relacionado. El material se puede encontrar en el siguiente archivo:
C:\LV91027\DOC\TMS320C5x_UsersGuide.pdf. La Unidad central de aritmtica y lgica
(CALU) es donde se lleva a cabo el procesamiento de seales ms importante. La CALU,
tambin conocida como el trayecto de los datos, es el principio de trayectoria de procesamiento
aritmtico y lgico de un DSP. Se encuentra a lo largo del bus de datos (operando) y es una parte
integral de la ejecucin de casi todas las instrucciones.
Una CALU de punto fijo contiene:

multiplicador(es)
acumulador(es)
registros de operando
desplazadores
al menos una Unidad aritmtica lgica (ALU)

Los algoritmos de procesamiento de seales son destinados casi por completo a las operaciones de
aritmtica y lgica. La CALU est diseada para ejecutar estos tipos de operaciones con extrema
rapidez. Un DSP es diferente de un procesador de uso general por:
1. su arquitectura de memoria (el DSP generalmente tiene una arquitectura Harvard)
2. el rpido tiempo de ejecucin de la CALU (o trayecto de datos)
Tanto el Multiplicador as como la ALU se usan simultneamente durante una instruccin MAC.
La CALU est asignada a utilizar su ancho de banda computacional completo. En la mayora de los
DSPs, cuando el ancho de banda computacional completo de la CALU se utiliza repetidamente, se
produce un efecto o resultado en cada ciclo de reloj. Los registros de operando juegan un papel
importante dentro de la CALU. Los registros se utilizan para guardar operandos temporalmente, antes
de que sean asignados a efectuar operaciones aritmticas en la ALU o en el Multiplicador. La CALU
del TMS320C50 ('C50) tiene 3 registros de operando. El Registro temporario 0 (TREG0) mapeado en
memoria, es un registro de operando utilizado por el Multiplicador. Contiene uno de los operandos de
multiplicacin para el Multiplicador. El
Registro de Producto (PREG), es un registro de operando de 32 bits que guarda el resultado del
Multiplicador. El valor contenido en el PREG puede ser enviado a la ALU para efectuar una operacin
aritmtica, o puede ser pasado al Bus de datos (BD) para otra etapa del procesamiento.
El ACCB (bfer acumulador) proporciona un espacio de almacenamiento temporal para el valor
contenido en el registro acumulador (ACC). El registro ACC est diseado para guardar el ltimo
resultado aritmtico producido por la ALU. La ALU est diseada para implementar una extensa gama
de operaciones aritmticas y lgicas.

EJEMPLO
1
2
3
4
5

OPERANDO 1
1011 0100
1011 0100
0010 1001
0010 1001
0111 0101

OPERANDO 2
0001 1101
0001 1010
1011 1101
1011 1101
-

OPERACIN
SUMA
RESTA
Y
O
NEGAR

SALIDA
1101 0001
1001 1010
0010 1001
1011 1101
10001011

Algunas operaciones generalmente ejecutadas por la ALU son: suma, resta, negacin y lgica and, or,
xor, y not. La mayora de las instrucciones de ALU se ejecutan dentro de un ciclo de reloj simple. La
mayor parte de las instrucciones de ALU que toman ms de un ciclo de reloj, dependen de otras
unidades para el pre- o post-procesamiento de datos. Ej., sume un valor de datos al ACC y luego
ejecute un desplazamiento binario. El TMS320C50 necesita 2 ciclos de reloj para ejecutar la operacin.
El desplazamiento binario, es un ejemplo del tipo de procesamiento que se lleva a cabo despus de la
suma. Las ALUs de los DSPs de punto fijo ejecutan la aritmtica complemento a 2.
La ALU ejecuta operaciones con doble precisin de la longitud de palabra (word) nativa del
procesador. Por ejemplo la ALU del 'C50, un DSP de punto fijo de 16 bits, entra, sale y se ejecuta
con una longitud de palabra (word) de 32 bits.
La mayor parte de los DSPs tienen un modo ALU de operacin llamado modo extensin de signo.
Cuando se activan todas las salidas de la ALU, stas son extendidas de signo. Extensin de signo
previene que un nmero negativo sea tomado equivocadamente por uno positivo. Cuando el nmero
de bits utilizados para representar una palabra (ej., 16 bits), es menor que el nmero de bits necesarios
para representar la misma palabra dentro de la CALU (32 bits), entonces extensin de signo despliega
el bit de signo en los MSB sumados.
La ltima operacin aritmtica o lgica ejecutada por la ALU se guarda en el Acumulador
(ACC). El resultado contenido en el ACC puede ser guardado en el ACCB (registro bfer
acumulador) del ACC, transferido a la ALU, o a otra etapa de procesamiento usando el Bus de datos
(DB). En el caso del DSP 'C50, es necesario introducir dos operandos en la ALU para ejecutar
cualquiera de sus operaciones ya sea aritmtica o lgica. Uno de los operandos es proporcionado por
el registro del Acumulador (ACC). Una de las otras tres localizaciones proporciona el otro operando
de datos para una operacin ALU:

Trayecto de datos (ejem., para ir a buscar un operando de la memoria)


Registro del Producto (PREG) del Multiplicador
Registro bfer acumulador (ACCB)
La multiplicacin es una operacin esencial, utilizada en prcticamente todas las aplicaciones de
procesamiento de seales digitales. En muchas de las aplicaciones donde se utiliza la multiplicacin,
la mitad o ms de las instrucciones ejecutadas por el procesador son operaciones de multiplicacin.
El Multiplicador de un ciclo es central en casi todos los procesadores de seales digitales
programables.
El Multiplicador se refiere al circuito dentro del DSP que ejecuta la multiplicacin de nmeros
binarios. Dependiendo del tamao del operando (8 bits o 16 bits para el C50), casi todas las
instrucciones del Multiplicador se pueden ejecutar dentro de un ciclo de reloj.
La multiplicacin en los DSPs de punto fijo se ejecuta con aritmtica de complemento a 2. Un
Multiplicador requiere dos operandos como mnimo, para ejecutar una multiplicacin. Estos
operandos son tratados como nmeros complemento a 2. En el TMS320C50, el registro TREG0 es
utilizado siempre como una de las fuentes de operandos por el Multiplicador. En ciertos casos, por
ejemplo cuando se ejecutan las instrucciones de raz cuadrada (SQRA y SQRS), TREGO es el
nico operando utilizado por el Multiplicador.

Cuando se requiere otro operando de multiplicacin, ste se busca en una de las otras dos
ubicaciones:

Memoria de datos usando el Bus de datos (DB)


Memoria del programa usando el Bus de programa (PB)

Como se afirm anteriormente, el resultado del Multiplicador se guarda en un Registro de


producto (PREG). El Registro de producto es el doble ms ancho que la longitud de palabra de
los operandos de multiplicacin (longitud de palabra de datos nativa del DSP).

OPERANDO 1

OPERANDO 2

OPERACIN

RESULTADO

0111 0111
(+119)

0011 0111
(+55)

MULTIPLICADOR

0110 0110
(+102)

1011 0111
(-73)

MULTIPLICADOR

0001 1001 1001


0001
(+6545)
0010 0010 1110
1010
(+8938)
FALSO

PREG
(DESPUS DE
EXT. DE SIGN.)
0001 1001 1001
0001
(+6546)
1110 0010 1110
1010
(-7446)

A todos los resultados del Multiplicador se le aplica la extensin de signo, antes de ser guardados en el
Registro de producto (PREG). sto, combinado con el hecho de que el PREG tiene el doble de
longitud de palabra del operando, significa que por s mismo, el Multiplicador no introduce ningn
error en los cmputos.

Para mantener constante el nivel de precisin aritmtica, es necesario aumentar el nmero de bits
que se utilizan para representar la multiplicacin, acumulacin y otros resultados de operacin
aritmtica. Es por esta razn que en los DSPs, el Registro de producto del Multiplicador y el
Acumulador (ACC) de la ALU, tienen el doble de ancho que la longitud de palabra de datos
nativa.
OPERANDO
1
DESBORDAMIENTO
7FFF FFFF h
SUBDESBORDAMIENTO 8000 0000h

OPERANDO
2
7FFF FFFF h
8000 0000h

Mximo valor positivo


Mximo valor negativo

OPERACIN ACUMULADOR
SUMA
SUMA

7FFF FFFF h
8000 0000 h

FFFF FFFF h
0000 0000 h
FALSO

231-1
-231

CORECCIN
OVM
7FFF FFFFh
8000 0000h

Un valor desbordado
Un valor subdesbordado

FFFF FFFF h
0000 0000 h

-1
0

La mayora de las aplicaciones de procesamiento de seales, necesitan la suma de una serie de


valores de datos. Estas operaciones cuando son ejecutadas dentro de un DSP de punto fijo,
pueden conducir fcilmente a un desbordamiento (overflow) o un agotamiento (underflow).
En muchos procesadores, existe un modo de operacin utilizado para disminuir los errores que
se producen al ocurrir un desbordamiento o un agotamiento. A este modo en el DSP
TMS320C50 se lo nombra Modo saturacin de desbordamiento OVM (Overflow Saturation
Mode).
Descartando la ocurrencia de un desbordamiento o sub desbordamiento, el nivel de
precisin dentro de la ALU y el Multiplicador se mantiene igual que cuando la aritmtica
ingres en la CALU. Sin embargo, en algn punto es generalmente necesario reducir la
precisin de los resultados; el bus de datos es todava la mitad del ancho en bits de los
resultados de la CALU. En consecuencia, el programador debe seleccionar los bits del
Registro de producto o del Acumulador, los que pasarn a la prxima etapa del
procesamiento (a travs del bus de datos).
La seleccin de los bits que pasarn es hecha con desplazadores localizados en la salida
del PREG y del ACC. Un desplazador puede desplazar un nmero binario a la derecha o a
la izquierda por varios bits. Sin embargo, al desplazar un nmero n bits a la izquierda,
efectivamente lo multiplica por una potencia de dos (2n). Los Pre- y Post-escaladores se
utilizan para escalar los valores antes de que se introduzcan o salgan del Multiplicador y
de la ALU. El escalamiento es una operacin importante en los DSPs de punto fijo, porque
el desbordamiento (overflow) se puede evitar pre-escalando las entradas de la CALU.
FAMILIA DE DSP
AT&T DSP16xx
Dispositivos analgicos ADSP-21xx
T1 TMS320C2x y C5x

MTODO EMPLEADO PARA


EVITAR DESBORDAMIENTO
4 bits de proteccin
8 bits de proteccin
Sin bits de proteccin. Los
resultados intermedios se pueden
escalonar.

En condiciones ideales, el tamao de registro del acumulador debera ser mayor que el del
Registro de producto del multiplicador por varios bits. Los bits adicionales, llamados bits de
proteccin, permiten al programador acumular un cierto nmero de valores sin el riesgo de
desbordamiento del acumulador, y sin necesidad de escalar resultados intermedios (evitando el
desbordamiento).
Un campo de un bit, presente en el 'C50, y conocido como el bit de arrastre o bit C (carry bit),
est asociado con el registro del ACC. El bit C indica si una operacin de la ALU gener un
arrastre o un prstamo. El DSP puede ser programado para probar condicionalmente este bit. El
bit C, similar a un bit de proteccin, es til para la aritmtica de precisin extendida.

Ejercicio 2 Espacio de memoria


OBJETIVO DEL EJERCICIO
Al completar este ejercicio, usted se familiarizar con las caractersticas bsicas de la
arquitectura Harvard modificada, como la utilizada por los DSPs.
DISCUSIN DEL EJERCICIO
La Memoria es una parte importante de cualquier microcomputadora o microprocesador. En las
computadoras como la que usted est utilizando, la memoria se emplea para guardar informacin
del programa, como por ejemplo el cdigo del programa FACET que se est ejecutando en este
momento, y tambin se utiliza para guardar la informacin de datos como la pgina actual del
manual CBL.
El DSP contiene memoria de chip integrado (On-chip) y adems es capaz de tener acceso a la
memoria de chip externo (off-chip) por medio de sus buses de datos y de direccionamiento
externo. La memoria integrada es generalmente de dos tipos:
La ROM (Read Only Memory) o Memoria de slo lectura, se usa para guardar el cdigo del
programa durante el proceso de fabricacin. ROM es una memoria no voltil pues retiene
sus datos despus de que se ha apagado el procesador.
La RAM (Random Access Memory) o Memoria de acceso aleatorio, se utiliza para guardar
temporalmente informacin del programa. RAM es una memoria voltil debido a que al
apagar el procesador se pierde la informacin guardada.
Ambas categoras de memoria (ROM y RAM) se encuentran en los chips integrados (dentro del
DSP). Es posible configurar de distintas maneras, la asignacin en el espacio de memoria de
dichos tipos de memoria.
El DSP TMS320C50 utiliza dos tipos de RAM de chip integrado:
SARAM (Single Access RAM) o RAM de acceso simple - Un bloque de memoria SARAM
se puede escribir o leer, una vez dentro de un ciclo de instruccin.
DARAM (Dual Access RAM) RAM de doble acceso - Un bloque de DARAM se puede leer y
escribir en el mismo ciclo de instruccin.
La Arquitectura Harvard tiene dos buses en paralelo. Uno de los buses (el PB) est dedicado al
direccionamiento y al transporte de informacin de programacin, y el otro (el DB) al
direccionamiento y transporte de datos. Dos buses paralelos permiten que el programa y la memoria
de datos sean accedidos simultneamente.
Cada uno de los buses en paralelo de un DSP de punto fijo de 16 bits, pueden asignar 216
direccionamientos a la memoria de chip integrado y perifricos.
Actualmente, la mayora de los DPSs utilizan una arquitectura Harvard modificada para
aumentar su ancho de banda de memoriaLas modificaciones especficas presentes en el
TMS320C5x que se han agregadas a la estructura de Harvard tradicional son:

una memoria de programa/datos, una memoria que se puede ser direccionada ya sea por
DB o por PB;
una memoria cache de instrucciones que complementa la memoria de programa/datos.

ARQUITECTURA HARVARD, MODIFICACIN 1


En el caso del DSP TMS320C50, ciertos bloques de SARAM se pueden configurar como memoria
de programa/datos. sto significa que cada elemento de la memoria dentro del bloque de SARAM
ha sido asignado a un direccionamiento de bus de datos y a un direccionamiento de bus de
programa.
La memoria del programa es direccionada por el bus del programa. Los operandos slo pueden
guardarse o leerse en la memoria del programa usando el bus de programa.
La memoria de datos es direccionada por el bus de datos. Los operandos slo pueden guardarse o
leerse en la memoria de datos por medio del bus de datos.
La memoria de programa/datos est direccionada por el bus de datos y el bus de programa. Los
operandos pueden ser guardados o ledos en la memoria de programa/datos, ya sea por medio del
bus de programa o por el bus de datos.
El C50 tiene cuatro bits de configuracin de memoria que seleccionan cmo los
direccionamientos de bus de programa y datos son asignados entre las diferentes memorias de
chip integrado, puertos E/S, registros mapeados en memoria interna y perifricos mapeados en
memoria externa.
Los bits de configuracin de memoria son:

CNF: Activa la DARAM B0 de chip integrado de ser direccionada por el PB o el DB.


RAM: Activa/desactiva la SARAM de ser direccionada por el PB.
OVLY: Activa/desactiva la SARAM de ser direccionada por el DB.
MP/MC#: Activa/desactiva la ROM de chip integrado de ser direccionada por el PB.

Al comienzo de un programa de DSP, los bits de configuracin de memoria deben ser


inicializados (asignados o borrados), y luego ya no deberan cambiarse. Al alterar el valor de uno
de los bits, los elementos de memoria pueden ser mapeados a otros direccionamientos (a veces en
un bus diferente), o no llegan a ser mapeados en absoluto.
ARQUITECTURA HARVARD, MODIFICACIN 2
En el caso del 'C50, el registro llamado Contador de programa (PC) acta como una cache de
instrucciones. Puede guardar una palabra de instruccin (16 bits en ancho). Una vez que la
instruccin es cargada en el PC, pude ser repetida el nmero de veces especificado por el registro
Contador RePeaT (RPTC).
Durante un bucle de repeticin, no se debe utilizar el bus del programa para leer la siguiente
instruccin del programa. El DSP simplemente toma la prxima instruccin de la cache de
instrucciones.
Durante la ejecucin de una instruccin de la cache, se libera un acceso del Bus de programa
(PB). El PB ya no es necesario para tomar la siguiente instruccin de programa.
El acceso de memoria liberada, puede utilizarse para leer otros operandos de la memoria de
programa/datos. Las instrucciones especializadas como MAC (Multiplicacin y ACumulacin)
cuando son repetidas, utilizan el acceso del Bus de programa liberado, para tomar un total de dos
operandos durante un ciclo de reloj simple.

Al programar un DSP, las nicas inicializaciones de espacio de memoria que programadores


deberan tener en cuenta son:
Las inicializaciones del CNF, MP/MC#, RAM y el bit OVLY, quienes seleccionan la
correcta configuracin de memoria.
El uso de las directivas DSK que describen las ubicaciones de memoria donde se guardan el
programa y los datos: .entry, .ps, .text, .word, .byte, .data o .ds, .set.

Ejercicio 3 Direccionamiento
OBJETIVO DEL EJERCICIO
Al completar este ejercicio, usted comprender la funcin de la unidad de generacin de
direcciones dentro de un DSP y los modos de direccionamiento especializados que sta ofrece.
DISCUSIN DEL EJERCICIO
Un procesador utiliza un direccionamiento para identificar espacios de almacenamiento de
memoria especficos (por ejemplo, un elemento de memoria DARAM o un registro perifrico).
En efecto, un direccionamiento se convierte en el nombre de una cierta ubicacin. El
direccionamiento se utiliza en cualquier momento que el procesador requiera escribir o leer un
operando en/de dicha ubicacin. El direccionamiento es el medio por el cual se especifica al
procesador, las ubicaciones del operando cuando se ejecuta una lectura o escritura. Existen
muchos modos de direccionamiento. Dependiendo del modo de direccionamiento utilizado con
una instruccin, un operando puede ser tomado directamente de un direccionamiento de memoria
interno, o de un registro.
Los tipos de direccionamiento ms comunes encontrados en los DSPs son:

direccionamiento implcito
direccionamiento directo
direccionamiento inmediato (corto y largo)
direccionamiento indirecto
direccionamiento circular

Los diferentes tipos de DSPs ofrecen una gran variedad de modos de direccionamiento. El tipo de
direccionamiento utilizado con una instruccin, afecta el rendimiento y la flexibilidad del
programa. Ciertos tipos de direccionamiento fueron destinados solamente para ser utilizados en
determinadas situaciones, y otros son limitados para ser usados por pequeos subconjuntos de
instrucciones de procesador.
Un direccionamiento implcito es cuando los direccionamientos del operando son implcitos por la
instruccin. Un ejemplo de instruccin del 'C50 que utiliza el modo direccionamiento implcito es:
ADDB. Esta instruccin suma los registros ACC y ACCB. ACC y ACCB son entonces, los
operandos implcitos para la instruccin.
El direccionamiento directo codifica los direccionamientos de los operandos dentro de la palabra de
instruccin o dentro de una palabra que sigue a la palabra de instruccin.
Un ejemplo de Direccionamiento directo con Una palabra de programa
Opcdigo de
instruccin

ancho de 7 bits

Cdigo

100111011 1101001
Direccionamiento del
operando codificado
parcialmente

Al direccionamiento directo usado dentro del TMS320C50 se le conoce como direccionamiento


directo en memoria paginada. Al ejecutar la palabra de instruccin, el direccionamiento codificado
de 7 bits es concatenado con los 9 bits superiores del direccionamiento contenido en un registro de
estado y control. El direccionamiento directo codifica los direccionamientos de los operandos
dentro de la palabra de instruccin o dentro de una palabra que sigue a la palabra de instruccin.
Un ejemplo de Direccionamiento directo con dos palabras de programa

Cdigo mquina

Opcdigo de instruccin
1110110010101001
0001110101101110
Direccionamiento de operando
codificado

El direccionamiento directo en memoria y directo en registro, son otras formas de


direccionamiento directo. Ambos utilizan una segunda palabra que sigue a la palabra de
instruccin, y codifican el direccionamiento del operando. Los procesadores que utilizan
direccionamiento directo en memoria compaginada tienen memoria de datos dividida en
pginas de memoria. Cada pgina de memoria corresponde a una seccin de la memoria.
Un registro especial, conocido en el 'C50 como DP (Puntero de pgina de memoria, Data Page
pointer) guarda el nmero de pgina de memoria actual. En el caso del 'C50, el DP apunta a una de
las 512 pginas de datos posible. Cada pgina contiene 128 palabras.
El direccionamiento directo dentro del TMS320C50, requiere que los 7 bits inferiores del
direccionamiento de memoria de datos sean codificados dentro de la palabra de instruccin.
Al ejecutar la palabra, los 9 bits del puntero de pgina de memoria de datos (DP) son
concatenados con los 7 bits codificados, dentro de la palabra de instruccin. La operacin forma el
direccionamiento completo de memoria de datos de 16 bits del operando.
Ejemplo de direccionamiento inmediato corto en el DSP TMS320C50
ADD #05Ah
Cdigo mquina

Opcdigo
5A h
10111000 01011010
Operando

Conocido como direccionamiento inmediato corto, el tipo de direccionamiento mostrado,


codifica el operando en la palabra de instruccin.

Ejemplo de direccionamiento inmediato largo en el DSP TMS320C50


ADD #0B948h
Opcdigo ADD

Cdigo mquina
Operando

1011111110010000
1011100101001000
B948 h

Conocido como direccionamiento inmediato largo, el tipo de direccionamiento mostrado,


codifica el operando en una segunda palabra que sigue a la palabra de instruccin. Los DSPs
utilizan direccionamiento indirecto y direccionamiento circular para administrar grupos de
direccionamiento de operandos. stos son necesarios al efectuar clculos repetitivos en series de
datos. Frecuentemente, las series se guardan secuencialmente en memoria. Los DSPs contienen
una Unidad de generacin de direcciones, AGU (Address Generation Unit). AGU est dedicada
al clculo de direcciones para los diferentes tipos de modos de direccionamiento.
La AGU tiene su propia unidad aritmtica separada, La aritmtica de la AGU es independiente de
la CALU. Todos los clculos de direcciones se llevan a cabo en paralelo con la ejecucin de la
instruccin. La incorporacin de una Unidad de generacin de direcciones (AGU) dentro de un
DSP, permite que el procesamiento aritmtico opere a la mxima velocidad mientras se
determinan los operandos de instrucciones mltiples.
La AGU del 'C50 tiene ocho registros auxiliares mapeados en memoria, identificados como AR0
hasta AR7. Los registros pueden ser utilizados para guardar direcciones, o datos en forma
temporal. Los direccionamientos indirecto y circular requieren el uso de algunos de los Registros
auxiliares (AR0 a AR7). Dentro del registro ST0 del TMS320C50, hay un campo de 3 bits
identificado como ARP (Auxiliary Register Pointer), Puntero de registros auxiliares. ARP es un
campo de 3 bits de ancho que conserva un valor entre 0 y 7. El campo determina el registro auxiliar
actual (AR0 a AR7) que est siendo utilizado para direccionamiento indirecto de registro. Una vez
configurados los registros apropiados, la AGU proporciona la direccin de operando necesaria
exigida por el procesador para ejecutar una instruccin. Como se indic anteriormente, las
operaciones de la unidad de generacin de direcciones se ejecutan en paralelo con las instrucciones
aritmticas de la CALU.
Cualquier ubicacin en la memoria de datos puede ser leda o escrita, utilizando una direccin
contenida en un Registro auxiliar (AR0 a AR7). Para seleccionar el AR especfico utilizado para
direccionar la memoria de datos, el Puntero de registros auxiliares (ARP) debe ser cargado con el
valor de AR (0 a 7) a utilizar. El ARP apunta hacia el registro auxiliar actual utilizado para
direccionamiento de memoria, una instruccin del ensamblador que soporta direccionamiento
directo, por ejemplo, la instruccin suma (ADD) del DSP TMS320C50: ADD * es ejecutada, el
procesador toma el direccionamiento de memoria de datos del registro auxiliar apropiado (el cual
es apuntado por ARP). En este ejemplo, ARP es igual a 2 y tambin el registro auxiliar actual es
AR2. Cuando se ejecuta una instruccin del ensamblador que soporta y utiliza un
direccionamiento indirecto, la direccin para el operando se tomar de AR2.
Muchas aplicaciones del DSP administran bfer de datos. El direccionamiento circular, tambin
conocido como direccionamiento mdulo, se utiliza para administrar bfer circular. En las
aplicaciones de tiempo real, como por ejemplo las ejecutadas por los DSPs, el programador debe
determinar el tamao del bfer de datos y luego debe reservar una porcin de memoria para dicho
bfer. Los bfers de datos implementados en los DSPs, generalmente utilizan el protocolo FIFO
(first-in, first-out), primero en entrar, primero en salir. Esto significa que los primeros valores
escritos en el bfer, sern tambin los primeros en ser ledos. Para que el programador pueda
administrar el flujo de entrada y salida de datos al bfer, debe mantener dos punteros de direcciones
(en el caso del 'C50, se utilizan dos registros auxiliares como punteros). Uno de los punteros, el
puntero de lectura, indica el valor actual al que se le dar lectura desde el bfer. El segundo
puntero, el puntero de escritura, indica la ubicacin actual donde se debe escribir un nuevo valor en
el bfer.

Despus de cada operacin de lectura o escritura en una bfer con direccionamiento lineal FIFO, el
puntero correspondiente se desplaza hacia abajo (incrementa a la prxima ubicacin en el bfer).
Una vez que los punteros han avanzado hasta el final del bfer, se deben actualizar y apuntar
nuevamente al comienzo del bfer. En una bfer con direccionamiento circular FIFO, despus de
que el puntero de lectura o escritura alcanza el fin del bfer, avanza automticamente hacia el
inicio del bfer. La verificacin automatizada de fin-del-bfer y la operacin avance-al- inicio-delbfer (generalmente automatizada por la AGU), hacen que el bfer aparezca como circular para el
programador.
Muchos procesadores DSP proporcionan un modo de direccionamiento circular. Sin embargo, la
facilidad de utilizacin y los mecanismos empleados para controlarlo varan de DSP a DSP. El
mtodo empleado para implementar el direccionamiento circular en el TMS320C50, es utilizar
registros de direccionamiento inicial y final. Los registros, llamados CBSR1 y CBER1
respectivamente, conservan los direccionamientos inicial y final para el bfer circular. La AGU
del 'C50 se encarga de determinar si uno de los punteros de lectura o escritura se encuentra al
final o al inicio del bfer. De esta manera, la AGU automatiza la verificacin fin-del-bfer y
operacin avance al inicio-del-bfer. El direccionamiento circular es un direccionamiento
indirecto, pero con el agregado de una administracin de bfer circular.
Instrucciones del TMS320C50
...
MAR *, AR3
LAR AR3, #0984h
...
ADD *+, 0, AR0
...
Los bfers de datos son con frecuencia utilizados y siempre implementados con
direccionamiento indirecto (circular y lineal). Los procesadores necesitan dos elementos
adicionales, para ser especificados dentro del campo de direcciones indirectas de una
instruccin al utilizar el direccionamiento indirecto:

El contenido del AR actual se puede incrementar, disminuir o puede permanecer sin cambio.
Se debe determinar el cambio que ser implementado.
o Ejem., Incremente por 1: AR3 = 0984h, AR3 + 1 = 0985h.
Si el Puntero de registros auxiliares ARP se tuviera que actualizar a otro AR, o debiera
permanecer igual, se debe especificar en el campo de direccionamiento indirecto de la
instruccin.
o Ejem., Actualizacin ARP de AR3 a AR0.

La mayora de los modos de direccionamiento cubiertos en esta seccin implican la asociacin de


una segunda palabra a la palabra de instruccin. Estos modos de direccionamiento necesitan as,
dos palabras de programa para ser guardadas en memoria, aumentando el tamao del programa y
reduciendo el tiempo de ejecucin.
Para remediar los efectos de los as llamados modos de direccionamiento largo (2 palabras de
programa de longitud), muchos procesadores ofrecen versiones cortas de algunos de sus modos de
direccionamiento, o simplemente aplican modos de direccionamiento cortos. Los modos de
direccionamiento cortos utilizan solamente una palabra de programa para especificar la
instruccin y la direccin. Sin embargo, hacindolo de esta manera, se acorta el rango de
direcciones que se puede especificar.

UNIDAD 3 EJECUCIN DEL PROGRAMA

OBJETIVO DE LA UNIDAD
Al terminar esta unidad, usted estar familiarizado con los fundamentos de la ejecucin del
programa del DSP.
FUNDAMENTOS DE LA UNIDAD

Control del programa se refiere a los comandos (mecanismos) empleados en un procesador para
determinar la prxima instruccin que ser ejecutada. El conjunto de instrucciones disponibles en
un DSP se ejecutan por medio de la unidad Controlador de programa (Program Controller).
El conjunto de instrucciones controla eventos tales cmo los datos son despachados
secuencialmente a travs de la CALU, y el modo en que los valores son ledos/escritos desde/en la
memoria.

Una instruccin dirigida a travs del Controlador de programa se enva por medio de una
estructura de hardware computacional. Las diferentes etapas de ejecucin de una instruccin, se
producen paralelamente con varias etapas de ejecucin de otras instrucciones. A este modo de
ejecucin de instrucciones se le conoce como Pipelining. Un pipeline es un mtodo de ejecucin
de instrucciones como el que se realiza en una lnea de montaje.

Una condicin necesaria para desarrollar un cdigo de aplicacin eficiente, es conocer


detalladamente la arquitectura del DSP que se programa. Esto es cierto cuando se llegan a conocer
los "trucos" que se pueden utilizar para aprovechar el potencial de una arquitectura.
Un DSP que tiene un conjunto de instrucciones ortogonal es ms fcil de programar y
optimizar, que un DSP cuyos comandos trabajan solamente en registros especficos de la ALU.
La arquitectura de DSP limita el tipo de operaciones e instrucciones que debe realizar el
procesador.
Un conjunto de instrucciones de DSP tiene una gran influencia sobre la capacidad de los
procesadores en realizar diferentes tareas.
No todas las instrucciones encontradas en un DSP tienen anlogos en otros DSPs que utilizan
diferentes arquitecturas. La instruccin utilizada en determinada arquitectura debe ser natural y
eficiente. Las arquitecturas de los procesadores tambin tienen una gran influencia sobre la
capacidad de un DSP para ciertas tareas. Como resultado, diversos tipos de arquitecturas de DSP se
utilizan para diferentes tipos de tareas.
Existen muchas similitudes bsicas entre las arquitecturas de los DSPs disponibles. Muchas de
ellas, se han cubierto o se cubrirn en este curso.

CALU configurada para el procesamiento de seales digitales


conjunto de instrucciones especializadas
buses y bancos de memoria mltiples
modos de direccionamiento especializados
control de ejecucin especializado
perifricos especializados para el procesamiento de seales

Existen estas similitudes debido al esfuerzo para proporcionar un alto rendimiento con las
aplicaciones claves en el procesamiento de seales.

Tradicionalmente, se ha proporcionado un alto rendimiento con hardware especializado


(diseado para acelerar las multiplicaciones), y una arquitectura de memoria de doble bus
(Harvard). Todo perfeccionamiento se ha hecho desde entonces con mejoramientos progresivos.
Algunos ejemplos de mejoramiento progresivo que se han realizado en la arquitectura bsica
Harvard, son el agregado de una cache de instrucciones y un bloque de memoria accesible por el
bus de datos y programa (memoria de datos/programa). Dichos mejoramientos se hicieron en el
DSP TMS320C50.

La necesidad, en los ltimos aos, de producir DSPs ms rpidos y mejores ha permitido la


aparicin de nuevas arquitecturas.
Es posible mejorar el rendimiento del procesador utilizando velocidades de reloj rpidas, no
obstante, el proceso tiene lmites.
Se estn produciendo nuevos tipos de arquitecturas de DSP para aumentar el rendimiento ms
all de dichos lmites. Estos diseos se enfocan sobre todo en un aumento de la cantidad de
trabajo efectivo en cada ciclo de reloj.
La velocidad de ejecucin de instrucciones se perfecciona haciendo modificaciones en la manera
en que funciona la unidad Controlador de programa y la pipeline.
Las arquitecturas VLIW y Superescalar son algunas de las arquitecturas no tradicionales de
DSPs, que han comenzado a disearse para DSPs programables. Proporcionan un aumento de
rendimiento promedio de 80% a 100% sobre las arquitecturas tradicionales del DSPs.

Los procesadores DSP han utilizado instrucciones complejas y compuestas que permiten que los
programadores codifiquen mltiples operaciones en una sola instruccin.
Una instruccin MAC (Multiplicacin y ACumulacin) es un ejemplo de instruccin compleja
compuesta.
Los procesadores que utilizan instrucciones complejas compuestas se limitan a la expedicin y
ejecucin de una instruccin por ciclo de instruccin.
Expidiendo una instruccin simple y utilizando un mtodo de instruccin compleja, los
procesadores DSP han logrado un muy fuerte rendimiento de procesamiento de seales sin
necesitar gran capacidad de memoria de programa.

Los ms nuevos diseos, por ejemplo, las arquitecturas VLIW y Superescalar emplean el
paralelismo, para aumentar el nmero de instrucciones ejecutadas por ciclo de instruccin.
Cuando estos tipos de arquitecturas son implementadas dentro de los DSPs, estn hechos para
ejecutar instrucciones mltiples del tipo RISC durante cada ciclo de reloj.
Contrariamente a una instruccin compleja, una instruccin RISC efecta una operacin bsica,
como por ejemplo, desplazar o mover datos.
Un juego de instrucciones RISC es pequeo, ciertas instrucciones (aquellas que proporcionan
operaciones similares) son eliminadas. El proceso de eliminacin se basa en un meticuloso
anlisis cuantitativo que conduce, a la larga, a un mayor rendimiento.

Las arquitecturas VLIW y Superescalar son similares. El compilador dirige y establece el


paralelismo de la instruccin VLIW. La planificacin de la instruccin se da en tiempo de
compilacin.
Las arquitecturas superescalares planifican el paralelismo de operacin en tiempo de ejecucin,
hacindolo invisible a los usuarios. De esta manera, el diseo Superescalar agrega una cantidad de
sobrecarga (overhead) de hardware a la CPU. sto no funciona en VLIW, donde la carga est
ubicada en el compilador.
NUEVOS TRMINOS Y PALABRAS
anidacin - (nesting) Es la prctica en programacin, de hacer que un bucle o una subrutina
formen parte de otro bucle u otra subrutina. Si una subrutina, interrupcin o bucle repetido son
respectivamente parte de otra subrutina, interrupcin o bucle repetido, se dice que estn
anidados.
B - La mnemnica del ensamblador correspondiente a la instruccin B (de bifurcacin) del DSP
TMS320C50.
BCND - La mnemnica del ensamblador para la instruccin condicional de bifurcacin del DSP
TMS320C50.
bifurcacin - (branch) Es una instruccin que produce un cambio en el flujo de ejecucin del
procesador, para continuar la dicha ejecucin en una nueva direccin.
bucles de software - (software loop) Es un mtodo de ejecucin repetitiva en una instruccin o
grupo de instrucciones, utilizando un cdigo de programa.
CALL - La mnemnica del ensamblador correspondiente a la instruccin CALL (llamar) de
subrutina para el DSP TMS320C50.
codificacin de tiempo estacionario - (time-stationary coding) La codificacin de tiempo
estacionario aporta a los programadores un control ms explcito sobre la pipeline, reduciendo
significativamente la complejidad del controlador de los DSPs, y dando como resultado un alto
nivel de rendimiento del procesador. Un programador que utiliza la codificacin de tiempo
estacionario, especifica dentro de cada instruccin las operaciones que ocurren simultneamente
durante un ciclo de instruccin.
codificacin de datos estacionarios - (data-stationary coding) La codificacin de datos
estacionarios es una manera ms natural de visualizar un algoritmo. En la codificacin de datos
estacionarios, una instruccin simple especifica todas las operaciones ejecutadas en un conjunto de
operandos desde la memoria. En otras palabras, la instruccin especifica lo que le sucede a los
datos, en lugar de especificar, como en el caso de la codificacin de tiempo estacionario, lo que
sucede en un determinado tiempo en el hardware.
conflicto de pipeline - Los conflictos de pipeline ocurren durante un determinado ciclo de reloj.
stos impiden que la siguiente instruccin en el programa, sea ejecutada correctamente durante el
siguiente ciclo de reloj. Si el conflicto de pipeline no es corregido automticamente por el
procesador, o es previsto y corregido por el programador, podran obtenerse resultados errneos
de programa y un rendimiento reducido del procesador.
conjunto de instrucciones - El "lenguaje" de hardware por medio del cual el software le dice al
procesador lo que debe hacer.
conjunto de instrucciones ortogonal - Es bsicamente, un conjunto de instrucciones donde todos
los comandos trabajan en todos los registros. Los componentes separados (como por ejemplo las
operaciones matemticas, especificaciones de operando, modos de direccionamiento y movimientos
paralelos) de una instruccin, se codifican independientemente en campos separados de la palabra
de instruccin. Para que un conjunto de instrucciones sea ortogonal seleccionando un componente
no debe restringir los otros componentes.
control de programa - El control de programa se refiere a los comandos (mecanismos) utilizados
por un procesador para determinar la prxima instruccin que se ejecutar.

decodificar - (decode) Es la segunda etapa de pipeline que se encuentra en muchos DSPs,


incluyendo el TMS320C50. Se decodifica la palabra de instruccin (ej., se determina lo que se
supone que la instruccin debe hacer) y se ejecuta la generacin de direccin, as como tambin
ARAU procede a actualizar los registros auxiliares.
eco - (ECHO) Un eco es un sonido reflejado, suficientemente fuerte y que se recibe con cierto
retardo, percibindose como un sonido distinto del origen. Los ecos se pueden producir
generando repeticiones retardadas (a veces, varias repeticiones rpidas) del sonido original o de
la seal.
ejecutar - (execute) Es la cuarta etapa de pipeline que se encuentra en muchos DSPs, incluyendo el
TMS320C50. Se ejecuta la porcin ALU o MAC de la instruccin y, si es necesario, se escriben
en memoria los resultados de una operacin previa.
extraer - (fetch) Es la primera etapa de pipeline que se encuentra en muchos DSPs, incluyendo el
TMS320C50. Se extrae una palabra de instruccin desde la memoria y se actualiza el
Contador de programa. La etapa de ejecucin extraer de la pipeline, puede ser usada algunas
veces para leer operandos desde la memoria del programa. Por ejemplo, cuando se ejecuta una
instruccin de 2 palabras utilizando un direccionamiento inmediato largo.
flanger - Es un efecto utilizado para enriquecer el sonido. Difcil de describir, cuando este efecto
se aplica a una seal vocal, sta puede parecerse a una voz producida bajo el agua, como se puede
apreciar en ciertas pelculas como la supuesta voz de un marciano. El efecto de flanger combina un
retardo de tiempo y una seal directa donde el tiempo de retardo (en el rango de los
0,50 a 0,35 ms) es alterado constantemente (variando entre 1,0 y 10 Hz). Para variar an ms la
seal, pueden cambiarse los ponderados acordados a cada seal.
guardar contexto - Es guardar y (o) recuperar el estado del sistema (registros de estado,
acumulador, registro de producto, registros temporales, pila de hardware, registros auxiliares,
etc.) cuando el dispositivo ingresa y (o) sale de una subrutina como
IDLE - La mnemnica del ensamblador correspondiente a la instruccin: inactiva del DSP
TMS320C50, que pone al procesador en el modo en reposo, el cual termina al sealarse una
interrupcin.
IMR - IMR es un registro mapeado en memoria del 'C50 que enmascara las interrupciones
externas e internas.
INTR - INTR es una instruccin especializada de bifurcacin para el DSP TMS320C50, que
hace que el procesador comience la ejecucin en el vector de interrupcin apropiado.
interbloqueo - (interlocking) La pipeline de interbloqueo suspende la progresin de instrucciones
que ocurren inmediatamente despus de un conflicto, hasta que se ejecute la instruccin que causa
el conflicto. Aunque evidentemente beneficia al programador, el interbloqueo tiene su costo.
interbloqueos - (pipeline interlocks) Los interbloqueos de pipeline son mecanismos utilizados
para asegurar que, cuando se escriben datos en un registro, cualquier referencia a este registro
cause una detencin, hasta que los datos estn disponibles.
interrupcin - (interrupt) Es una seal enviada por hardware o software hacia un procesador
solicitando atencin. Una interrupcin le dice al procesador que suspenda su operacin actual, que
guarde el estado actual de la tarea que est procesando, y que bifurque hacia un bloque especial de
cdigos llamado ISR (interrupt service routine), rutina de servicio de interrupcin . Las
interrupciones se comunican con el Controlador de programa y prioriza las tareas que se llevarn
a cabo. El software prepara los elementos como el vector de interrupcin y la rutina de servicio de
interrupcin, para que se ejecuten despus de producirse la interrupcin.
INT1# - INT1# es una interrupcin externa de usuario del 'C50, sealada ya sea por un
dispositivo externo que requiere atencin (como por ejemplo una seal proveniente de un
dispositivo de comunicaciones), o por el temporizador que se pone a cero. La interrupcin
inicia una rutina de servicio de interrupcin (ISR) definida por el usuario.
INT3# - INT3# es una interrupcin externa de usuario del 'C50, sealada ya sea por un
dispositivo externo que requiera atencin (como por ejemplo una seal proveniente de un
dispositivo de comunicaciones), o por el temporizador que se pone a cero. La interrupcin
inicia una rutina de servicio de interrupcin (ISR) definida por el usuario.
ISR - (interrupt service routine) Rutina de Servicio de Interrupcin, es la subrutina que se ejecuta

cada vez que ocurre un evento especfico y que se seala por una interrupcin.
leer - (read) Es la tercera etapa de pipeline que se encuentra en muchos DSPs, incluyendo el
TMS320C50. Durante esta etapa, un operando de datos es ledo/escrito desde/en la memoria.
NORM - La instruccin de ensamblador NORM es utilizada por el DSP TMS320C50. La
instruccin normaliza el acumulador, es decir, un nmero de punto fijo se convierte en un
nmero de punto flotante.
paralelismo - Es la operacin concurrente de varias partes de un sistema computarizado. sto
puede implicar un procesamiento simultneo de mltiples instrucciones de programa, o la
operacin simultnea de procesadores mltiples.
perifricos - En un sistema de procesamiento de datos, cualquier equipo, distinto de la CPU, y
que puede proveer de comunicacin externa o recursos adicionales al sistema.
pila de hardware - (hardware stack) Una pila o apilamiento de hardware es un bloque especial
de memoria de chip integrado, generalmente de slo algunas palabras de longitud, utilizada
durante interrupciones y subrutinas para guardar y restablecer el contador de programa.
pila de software - (software stack) Una pila de software, es un apilamiento convencional ubicado
en la memoria principal del procesador, el cual es creado, controlado y utilizado por el
programador. Generalmente est configurada para almacenar valores, que se podran cambiar
durante el procesamiento de interrupcin o las llamadas de subrutinas.
pipeline - Es una organizacin de hardware computacional en el cual las diferentes etapas de
ejecucin de una instruccin se suceden en paralelo para diferentes instrucciones. Una pipeline es
un mtodo de ejecucin de instrucciones como el que se realiza en una lnea de montaje.
pipeline hazard - (Pipeline hazard) Trmino utilizado en ciertos casos para describir lo que eneste
manual se llama conflicto de datos de pipeline. Los trminos conflicto de datos de pipeline y
pipeline hazard son sinnimos.
procesamiento condicional - (conditional processing) Es un mtodo para procesar un bloque de
cdigo fuente o un bloque alterno de cdigo fuente de acuerdo a la evaluacin de una expresin
especificada.
registros de sombra - Son registros destinados a conservar los contenidos de los registros clave de
la CPU, durante el procesamiento de interrupcin (al ejecutar una interrupcin). Los registros de
sombra son pilas de un nivel de profundidad pertenecientes a cada uno de los registros de sombra.
reiniciar - (reset) Una manera de llevar la unidad central de procesamiento (CPU) a un
determinado estado, ajustando los registros y los bits de control a valores predeterminados y
sealando que la ejecucin comience en una direccin especfica.
repeticin - (repeat) Es una instruccin que ejecuta repetidamente una secuencia de instrucciones
un nmero finito de veces.
RET - La mnemnica de ensamblador correspondiente a la instruccin: retorno de subrutina del
DSP TMS320C50.
RETE - La mnemnica de ensamblador correspondiente a la instruccin: retorno de la subrutina y
activacin de interrupcin del DSP TMS320C50.
RINT - RINT es una interrupcin de hardware del 'C50, que se seala despus de haber recibido
una palabra (word) a travs del puerto serial del DSP.
RISC - Es la abreviacin de Computadora con conjunto de instrucciones reducido (Reduced
Instruction Set Computer). Una arquitectura RISC utiliza instrucciones simples que se ejecutan
muy rpidamente.
RPT - La mnemnica de ensamblador correspondiente a la instruccin: iteracin de hardware de
una sola instruccin del DSP TMS320C50.
RPTB - La mnemnica de ensamblador para la instruccin de iteracin de hardware de
instrucciones mltiples del DSP TMS320C50.
rutina de servicio de interrupcin - Una rutina de servicio de interrupcin (ISR) es una
subrutina que se ejecuta cada vez que ocurre un evento especfico y que se seala por una
interrupcin.
rutinas de servicio de interrupcin - Una rutina de servicio de interrupcin (ISR) es una
subrutina que se ejecuta cada vez que ocurre un evento especfico y que se seala por una
interrupcin.

sobrecarga - El tiempo que el procesador toma en operaciones que no pertenecen a las tareas del
usuario. En el caso de los procesadores de seales digitales, estas operaciones usualmente consisten
en la asignacin de recursos para la ejecucin de la siguiente instruccin. A la sobrecarga se le
conoce tambin como sobrecarga de ejecucin.
subrutina - (subroutine) Una secuencia de instrucciones de computadora que ejecutan una tarea
especfica, y que generalmente es utilizada de manera repetida por el programa principal (rutina).
La subrutina es llamada desde el programa principal por medio de una funcin estndar Call
(llamar), y retorna de la subrutina por medio de una funcin estndar Return (retornar).
subrutinas - Una rutina de servicio de interrupcin (ISR) es una subrutina que se ejecuta cada vez
que ocurre un evento especfico y que se seala por una interrupcin.
superescalar - De la misma manera que los procesadores VLIW, los procesadores con
arquitectura Superescalar ejecutan instrucciones mltiples en paralelo. A diferencia de los
procesadores VLIW, en los cuales el programador (o la herramienta de generacin de cdigo,
ensamblador) especifica explcitamente cules instrucciones sern ejecutadas en paralelo, el
hardware en los procesadores Superescalar combinan dinmicamente instrucciones de tal
manera que las dependencias de datos se cumplan.
tabla de reservacin - (reservation table) Es una tabla de cifras que muestra de qu manera se
utilizan los recursos del procesador en el tiempo. Una tabla de reservacin facilita la visualizacin
de operacin de pipeline.
vector de interrupcin - (interrupt vectors) Los vectores de interrupcin tpicos tienen entre una a
dos palabras de longitud, y estn localizados en la memoria baja. Un vector de interrupcin no
contiene el ISR, sino ms bien, contiene una bifurcacin hacia la direccin de la rutina de servicio
de interrupcin (ISR).
VLIW - VLIW (Very Long Instruction Word) significa palabra de instruccin muy larga. Una
mquina VLIW es un procesador en paralelo en el cual se ejecutan simultneamente varias
instrucciones, agrupadas dentro de una sola palabra, por varias unidades funcionales dentro de la
unidad Controlador de programa.
voz - (VOICE) Un efecto creado por el programa de DSP ex3_1.asm ensamblado. El efecto
consiste en muestrear la seal de entrada del micrfono, y enviarla al AMPLIFICADOR DE
AUDIO por medio del CODEC y el DSP.
XINT - El XINT es una interrupcin de hardware del 'C50, que se seala despus de que se ha
transmitido una palabra (word) a travs del puerto serial del DSP.

Ejercicio 1 El controlador de programa


OBJETIVO DEL EJERCICIO
Al completar este ejercicio, usted estar familiarizado con las caractersticas del hardware y del
software que se han desarrollado en los procesadores de seales digitales para manejar el control
del programa.
DISCUSIN DEL EJERCICIO
Todos los procesadores de seales digitales, y tambin los procesadores de uso general,
tienen una unidad especializada dedicada a la ejecucin de instrucciones actuales y en
determinar la prxima instruccin a ejecutarse. Dentro del DSP TMS320C50 ('C50), esta
unidad es llamada Controlador de programa.
Los controladores de programa de DSP han desarrollado caractersticas eficientes de hardware
para ejecutar instrucciones rpidamente. El hardware del Controlador de programa est
designado para tener baja-sobrecarga (sobrecarga nula). El Controlador del programa decodifica
las instrucciones, administra el pipeline guarda el estado de la unidad central de procesamiento
(CPU), y decodifica las operaciones condicionales.

Los siguientes mecanismos de software son administrados por el Controlador de programa de


DSP:

bifurcacin (branch)
subrutina (subroutine)
reiniciar (reset)
interrupcin (interrupt)
repeticin (repeat)
procesamiento condicional (conditional processing)

Los mecanismos de software enumerados anteriormente, aunque no son los nicos en todos los
procesadores de seales digitales, son utilizados para control de programa. Utilizando estos
mecanismos de software, un programador de DSP est, en efecto, empleando caractersticas
especializadas de hardware que pertenecen al Controlador de programa.
El hardware especializado en cuestin puede categorizarse como sigue:

registro del Contador de programa


soporte de apilamiento
contadores de repeticin
hardware relacionado al contador del programa
registros de estado

El registro Contador del programa (generalmente abreviado como registro PC), conserva la
direccin de memoria de programa de la prxima instruccin que el Controlador del programa
tomar y ejecutar. El contenido del contador del programa se actualiza en cada ciclo de
instruccin. Dependiendo de la instruccin ejecutada anteriormente, el hardware adyacente (el
hardware relacionado al contador del programa) generalmente incrementa el contador del
programa en uno. En ciertos casos, el Controlador del programa se carga ntegramente en una
direccin de memoria de programa diferente.
Estos casos ocurren cuando la instruccin que se ejecut anteriormente, fue una instruccin de
control de programa como por ejemplo Call (llamar), Return (retornar) desde Subroutine
(subrutina), o una ISR (rutina de servicio de interrupcin). Los procesadores de seales
digitales utilizan apilamientos (o pilas) para guardar y retornar informacin de direccin y estado
mientras se ejecutan subrutinas y rutinas de servicio de interrupcin (ISR).
Una pila o apilamiento puede consistir en cualquier dispositivo de memoria. Generalmente la
mayora de los DSPs proporcionan al menos uno de tres tipos de soporte de apilamiento:

pila de hardware
pila de software

Cada vez que se ejecuta una interrupcin se inicializa una interrupcin de guardar contexto.
El contenido de los registros clave del DSP se guarda en sus respectivos registros de copia de
seguridad (registros de sombra). Los valores en los registros copiados se encuentran
disponibles para el cdigo rutina de servicio de interrupcin (ISR), pero despus de guardar
contexto sern protegidos mientras estn contenidos en los registros de sombra. Los registros de
sombra son copiados de vuelta a los registros de la CPU, cuando se d el Retornar (Return) de
la instruccin de la subrutina. Guardar contexto y recuperar se hace automticamente y se
reduce la sobrecarga ISR del DSP; el programador evita incluir las operaciones guardar y

recuperar como instrucciones en el cdigo ISR.


La pila de hardware se utiliza durante las interrupciones y subrutinas para guardar y restablecer el
contenido del registro Controlador de programa. Generalmente el programador no tiene control
sobre la pila de hardware. La pila hardware no se emplea, excepto en forma invisible, durante las
llamadas de subrutina, las rutinas de servicio de interrupcin y las instrucciones de repeticin. Al
llamar una subrutina, ocurre una interrupcin o se ejecuta una repeticin, y el contenido actual del
registro Controlador de programa (la direccin de retorno) se guarda automticamente en la pila
(empujado hacia la pila).
Al ocurrir una operacin de retorno, se recupera la direccin de retorno de la pila (emergidas de la
pila), y es cargada en el Contador de programa. La ventaja clave de una pila de software sobre
una pila hardware, es que su profundidad la puede configurar el programador. Esto puede darse
simplemente reservando una seccin de tamao apropiado en la memoria. Las pilas de Hardware,
en cambio, son generalmente poco profundas y el programador debe tener cuidado con el
desbordamiento (overflow) de la pila, evitando la anidacin de demasiadas interrupciones y/o
subrutinas.
Los algoritmos del DSP frecuentemente implican la ejecucin repetitiva de un pequeo nmero de
instrucciones. Tales operaciones se requieren en los filtros FIR, IIR, FFT y en algoritmos de
multiplicacin de matrices (stos son distintos tipos de operaciones de procesamiento de seales).
Para eliminar la sobrecarga de repetitivos bucles (iteraciones) en los DSPs, los Controladores de
programa fueron diseados con circuitos capaces de ejecutar repetidamente un nmero reducido de
instrucciones. A la operacin que realizan se le llama a menudo iteracin de hardware (hardware
looping). Los siguientes registros en el 'C50 son usados por los bucles o iteraciones de hardware.
El Contador de programa acta como la cache de instrucciones que guarda la instruccin que se
repetir durante la iteracin de hardware de una sola instruccin. El registro Contador de
repeticin (RPT) mantiene el conteo del nmero de veces que la instruccin, conservada en la
cache de instrucciones, debe repetirse durante la iteracin de hardware de una sola instruccin.
Los registros de iteracin de hardware de instrucciones mltiples utilizados en el 'C50 (BRCR,
PASR y PAER), se emplean para el control y estado de la iteracin o bucle de hardware.
En los bucles de Hardware, contrariamente a los bucles de software, no hay prdida de tiempo en
el incrementando o disminucin de un ndice. Ejemplo: La diferencia en la sobrecarga requerida
por un bucle de software y uno de hardware.
B = 16
RPT #16
BUCLE: MAC H0, X0 MAC H0, X0
B=B-1
Bifurcacin de BUCLE
Los ejemplos anteriores aplican un filtro FIR. El de la izquierda usa un bucle de software y el de la
derecha utiliza un bucle de hardware (hecho usando la instruccin RPT). La iteracin en bucle de
hardware ejecuta la instruccin RPT solamente una vez, y luego repite automticamente 16 veces
la instruccin multiplicacin y acumulacin. La sobrecarga de iteracin de Hardware se reduce en
comparacin con la sobrecarga de iteracin de software.
La iteracin en bucle de hardware, en este ejemplo, ejecuta una sola instruccin varias veces. Es
una iteracin en bucle de hardware de una sola instruccin. Durante la iteracin en bucle de
hardware de una sola instruccin, despus de ejecutar la instruccin "repetir" (RPT): La
instruccin micro-cdigo que se repetir se carga en la cache de instrucciones (registro PC), y se
carga un contador (RPTC) con el valor del nmero de veces que se repetir la instruccin.
Durante la iteracin en bucle, el Contador de programa, actuando como la cache de instrucciones,

proporciona al Controlador de programa la instruccin que se ejecutar. Muchas instrucciones que


toman dos o ms ciclos para llevar a cabo una ejecucin, tomarn un ciclo solamente, cuando se
ejecuten desde dentro de un bucle de hardware que utilice una cache de instrucciones. Todos los
DSPs utilizan caches de instrucciones (que son de una palabra de profundidad) para implementar
bucles de hardware de una sola instruccin, sin embargo, no todos los DSPs utilizan caches de
instruccin multi-palabra para implementar bucles de hardware de multi-instruccin.
Los bucles de hardware de multi-instruccin que no utilizan una cache de instrucciones, deben
volver a leer las instrucciones que se repiten cada vez que el procesador (Controlador de
programa) acta a travs del bucle. Si no se utiliza una cache de instrucciones y se vuelve a leer
instrucciones repetidas, el bus de programa no se liberar. sto significa que las instrucciones que
se ejecutan ms rpidamente en bucles de hardware de una sola instruccin, no lo harn en bucles
de hardware de multi- instruccin sin caches de instruccin.
Los bucles de hardware tienen ciertas limitaciones que no necesariamente son asociadas con los
bucles de software. El nmero de instrucciones repetidas en bucles de multi-instruccin podra
limitarse por un valor mximo. Tambin podra limitarse la cantidad mnima y mxima de veces
que un bucle puede repetirse, ya sea para los bucles de una sola instruccin o de multiinstruccin.
La desventaja del software tradicional se enfoca en la ejecucin de instrucciones repetidas, sin
embargo,

las instrucciones de Bifurcacin generalmente requieren varios ciclos de instrucciones para


llevar a cabo una ejecucin. Por lo general, el procesador debe utilizar un registro para
mantener el ndice del bucle, que es el conteo del nmero de veces que las instrucciones se
repetirn, y que an deben ejecutarse.
el camino de los datos del procesador debe utilizarse para aumentar o disminuir el ndice, y
para comprobar si se ha cumplido la condicin de bucle.
Para evitar estos problemas, en los procesadores DSPs se han desarrollado concepciones
especiales de control de hardware, que repiten una sola o un grupo de instruccin/es, un
determinado nmero de veces.

Como se indic, el principal papel del Controlador de programa es determinar la prxima


instruccin que se ejecutar. Las interrupciones se utilizan para indicarle al procesador sobre
eventos externos (un botn es presionado) e internos (se recibe una palabra a travs del puerto
serial).
Todos los DSPs utilizan interrupciones, y la mayora de ellos las emplean como el medio principal
para comunicarse con perifricos. Una interrupcin es un evento externo que hace que el
procesador detenga la ejecucin de su programa actual, y que bifurque a un bloque especial de
cdigo llamado rutina de servicio de interrupcin (ISR).
El cdigo ISR, una vez invocado o llamado, se ocupa de la fuente de datos que indic la
interrupcin. Ej., si se recibe una palabra a travs del puerto serial, una interrupcin es sealada
(indicada), y entonces el ISR ejecutar el cdigo necesario para procesar la palabra. Una vez que
se seal la interrupcin en el Controlador de programa, se ejecuta una instruccin de bifurcacin
y se carga el Contador de programa con el pma de un bloque especial de cdigo (a menudo
llamado vector de interrupcin).
Las interrupciones se pueden desactivar. En efecto, sto ocurre durante la inicializacin del DSP,
ISR y las iteraciones (bucles) de hardware de una sola instruccin. El Controlador de programa es
el que desactiva las interrupciones, por la duracin de ejecucin del bucle de hardware de una sola
instruccin. Una consecuencia directa de esta imposibilidad de tener acceso a una interrupcin, es

que un programador debe considerar cuidadosamente el mximo tiempo de bloqueo de


interrupcin que se pueda aceptar.
La mayora de los procesadores, incluyendo los DSPs, muestrean el estado de las lneas de
interrupcin en cada ciclo de instruccin. El procesador utiliza los registros de estado para
sealar interrupciones (una vez muestreadas), y otras informaciones al Controlador de
programa.
Desde las secciones anteriores Discusin y Procedimiento de este manual, usted se ha
familiarizado con algunos de los registros de estado y control del DSP TMS320C50. Si bien, no
todos los DSPs pueden ser indicados para tener el mismo nmero de registros de estado y control,
es correcto afirmar que todos los DSPs contienen estos tipos de registros. Muchos de los registros
utilizados por el Controlador de programa 'C50 y la CPU, tienen sus contrapartes equivalentes en
otros DSPs.

Ejercicio 2 La Pipeline
OBJETIVO DEL EJERCICIO
Al terminar este ejercicio, usted conocer las ventajas de contar con una pipeline profunda como
se utiliza en los DSPs. Se familiarizar con la disposicin de una tabla de reservacin de pipeline
y ser capaz de utilizarla para solucionar conflictos.

DISCUSIN DEL EJERCICIO


En la vida cotidiana, cuando una extensa tarea debe hacerse rpidamente, sta se divide en
pequeas tareas y luego se distribuye entre los trabajadores. Este proceso cuyos comienzos
tuvieron lugar a principios del siglo XX, se le conoce como lnea de montaje.
Dividiendo la tarea en pequeas operaciones y trabajando en cada operacin separadamente an al
mismo tiempo, la tarea global a efectuar se termina muy rpido. Los Procesadores de seales
digitales (casi todos los que estn en mercado) utilizan el mismo proceso para ejecutar
instrucciones de programa. Este proceso, cuando se lleva a cabo dentro de un procesador, se le da
el nombre de pipelining.
Dividiendo la secuencia de las operaciones en pequeas partes y ejecutando las partes en una
pipeline, se aumenta el rendimiento del procesador. El nmero de instrucciones ejecutadas por
unidad de tiempo, se incrementa sin cambiar el tiempo total requerido para ejecutar una
instruccin. Pipelining, si bien fue diseado con la intencin de mejorar el rendimiento, puede
complicar la programacin. Por ejemplo,

En algunos procesadores, pipelining provoca que ciertas secuencias de instruccin se


ejecuten ms lentamente.
En otros procesadores, se deben evitar algunas secuencias de instrucciones para que el
programa funcione correctamente.

Pipelining representa una compensacin entre la eficiencia y la facilidad de uso. Para ilustrar
cmo pipelining aumenta el rendimiento, considere el DSP TMS320C50 ('C50) de Texas
Instruments, que utiliza cuatro unidades de ejecucin separadas para procesar una palabra de
instruccin simple. Las unidades llevan a cabo las siguientes acciones:

Extraer
Decodificar
Leer
Ejecutar

Debido a que las cuatro acciones se implementan por palabra de instruccin, se dice que esta
pipeline es una pipeline de 4 niveles.
La mayora de los DSPs tienen pipeline, y su profundidad puede variar entre los diferentes tipos
de DSPs. Los PSD comparados con los procesadores de uso general llevan pipelines de
profundidad regular. Un procesador con un pipeline ideal de N niveles (sin ocurrencia de
problemas durante la ejecucin de la instruccin), tendr aproximadamente el nmero de
instrucciones que puede ejecutar por ciclo de instruccin, incrementado por un factor N,
comparado con el mismo procesador que no utiliza pipeline. Sin embargo, el rendimiento del
procesador comienza a caer cuando el pipeline llega a ser demasiado grande; el tiempo requerido
para controlar las etapas de ejecucin de pipeline se hace demasiado largo.
En nuestro ejemplo, una instruccin se ejecuta a cada 50 ns al utilizar el mtodo del pipeline. Es
decir, se ejecuta cuatro veces ms rpido que con una implementacin no pipeline (secuencial).
Cuando las cuatro etapas funcionan en paralelo como se muestra en la figura (sin ocurrir
problemas entre las etapas), se dice que la secuencia de ejecucin es de superposicin perfecta.
Existe un 100% en la utilizacin de la etapa Ejecutar del procesador.
Desafortunadamente en las aplicaciones, las pipelines del DSP (y procesadores de uso general)
pueden no aportar el mismo nivel de rendimiento como lo hace una pipeline superpuesta
perfectamente. No se da ninguna prioridad entre las cuatro etapas de una pipeline. Por lo tanto,
cuando ms de una etapa de pipeline requiere procesamiento en el mismo recurso (como un bus de
datos, un direccionamiento de memoria o un registro de la CPU) ocurre un conflicto de pipeline.
Una caracterstica importante de pipeline es que al aumentar la profundidad de una pipeline,
tambin aumenta la probabilidad de ocurrencia de conflictos de recursos, as como el grado de
complejidad de programacin necesario para evitar conflictos de pipeline. Un conflicto de
pipeline es una situacin que se encuentra debido al funcionamiento natural de la pipeline, la
ocurrencia de una tal situacin disminuye el rendimiento de procesador. Los conflictos pipeline
pueden evitarse por medio de una programacin cautelosa.
Un conflicto pipeline se puede categorizar en una de tres diferentes clases:

Conflictos de estructura
Conflictos de datos
Conflictos de control

Ocurre un conflicto estructural durante un ciclo de instruccin dado, porque dos o ms fases de
una pipeline requieren los mismos recursos de hardware, como el uso del bus de datos, acceso de
registro o acceso de bloque de memoria.
Un conflicto de datos (tambin llamado pipeline hazard) ocurre cuando existe una dependencia
entre las instrucciones y, debido a la pipeline, un operando de datos no es proporcionado en
tiempo a una instruccin. Este tipo de situacin podra surgir debido a que ciertas modificaciones
de registro del procesador ocurriran solamente durante ciertas fases del pipeline. El ' C50 slo
puede hacer modificaciones en los registros de la ARAU durante la fase Leer de la pipeline. Una
instruccin que usa y que modifica un registro de la ARAU y que depende de la instruccin
anterior por los contenidos del registro, causar un conflicto de datos de pipeline.
Ocurre un conflicto de control cuando se ejecuta una instruccin condicional de control de
software. La ejecucin de las direcciones de memoria del programa que siguen secuencialmente a

la instruccin condicional, debe suspenderse hasta que la instruccin condicional se haya


ejecutado. Si bien a las situaciones previamente descritas se les da el nombre de conflicto, la
ejecucin apropiada del programa no necesariamente se detiene. En efecto, para evitar conflictos
en recursos y en los procesos de pipeline, los DSPs programables pueden utilizar tres tcnicas
diferentes:
interbloqueo
codificacin de tiempo estacionario
codificacin de datos estacionarios
Existe una muy leve diferencia entre las diferentes tcnicas enumeradas anteriormente.
Interbloqueo es un tipo de funcionamiento de la pipeline. La pipeline reacciona en cierta manera al
confrontar ciertas situaciones, como los conflictos de la pipeline. Por otro lado, la codificacin
estacionaria de tiempo y la estacionaria de datos son modelos de programacin, es decir, formatos
y cdigo utilizados por un programador.

Los TI de la familia TMS320C5x de DSPs utiliza el interbloqueo, mientras que la mayora de los
miembros de la familia DSP16/16A de AT&T emplea la codificacin de tiempo estacionario.
Los miembros de la familia DSP32/32C de AT&T utiliza codificacin de datos estacionarios.
Como con la mayora de las definiciones de conceptos tcnicos, los lmites entre las tcnicas
usadas entre los varios DSPs por evitar los conflictos de la pipeline no son rgidos; la mayora
de los DSPs utilizan un condimento de las tres tcnicas.
Los Interbloqueos no son siempre fciles de ubicar. La operacin de interbloqueo y pipeline
puede ser visualizada por medio de una tabla de reservacin. Las columnas se dividen entre
varios ciclos de instruccin ejecutados por el DSP. Las operaciones contenidas en una columna
ocurren al mismo tiempo; la progresin a travs del tiempo es de izquierda a derecha. Las
cuatro filas corresponden a cada uno de las cuatro etapas de la pipeline. La mesa de
reservacin para una pipeline de 5 niveles tendra cinco filas.
Una solucin a los conflictos de pipeline es el interbloqueo. Una pipeline interbloqueada retarda la
progresin de una instruccin a travs de una etapa de la pipeline. sto ocurre cuando la
instruccin est en conflicto de recursos con la etapa de la pipeline de otra instruccin (conflicto
estructural).

UNIDAD 4 OPERACIONES BSICAS DE E/S

OBJETIVO DE LA UNIDAD
Al completar esta unidad, usted conocer los mtodos que utiliza un DSP para la comunicacin
externa al chip.
FUNDAMENTOS DE LA UNIDAD

La mayora de las aplicaciones del procesamiento de seales requieren de un DSP para


comunicarse con el mundo exterior (analgico). En estos casos, los datos deben normalmente
entrar al DSP y (o) salir de ste.

Filtrado generacin de forma de onda y compansin, son algunos ejemplos de las aplicaciones
de procesamiento de seales, donde se requiere comunicacin entre el DSP y el mundo exterior.

Antes de hacer el diseo final de cualquiera de los DSPs existentes hoy en da, se
evalancuidadosamente las caractersticas siguientes: el rendimiento aritmtico, el ancho de banda
de memoria, los modos de direccionamiento, el control de ejecucin y la ortogonalidad del
conjunto de instrucciones.
Para establecer la comunicacin con el mundo exterior y asegurar el procesamiento de seales en
tiempo real, los DSPs actuales han tenido que desarrollar perifricos especializados. En las
aplicaciones del procesamiento de seales se requiere de perifricos especializados. Los siguientes
perifricos vienen integrados en la mayora de los DSPs:

puertos serie sincrnicos


puertos paralelos
temporizadores
convertidores de analgico a digital y digital a analgico de chip integrado
puertos de comunicacin (host ports)
puertos E/S de bit
controlador DMA de chip integrado
generadores de reloj

Los perifricos listados anteriormente, cuando vienen integrados en un DSP, estn diseados
para funcionar incluso cuando la CPU se encuentre en modo desactivado (idle).

La comunicacin que existe entre el procesador de seales digitales y los circuitos, dispositivos o
perifricos externos, se hace a travs de los pins (contactos) de entrada y de salida. Los pins
estn ubicados en la superficie exterior del circuito integrado del DSP. Cada pin corresponde a la
salida o entrada de una seal clave del procesador.
La mayora de los pins del DSP se utilizan para las interfaces de memoria externa (interfaces de

puerto serial o paralelo), algunos estn destinados a salida o entrada de seales de reloj, y otros
como las lneas de interrupcin externa o el pin de reiniciacin (reset pin), permiten que los
dispositivos externos validen los estados del procesador.

En la mayora de los DSPs, la transmisin y recepcin de palabras de datos se hace a travs de los
puertos serial y paralelo. Las interfaces serial y paralelo se encuentran en el grupo de pins de
entrada y salida del DSP.
Una interfaz serial transmite y recibe datos a razn de un bit a la vez. Las interfaces en paralelo
envan o reciben palabras de datos enteras (de 8, 16 o 32 bits de largo), una a la vez. Para hacer
sto, un puerto paralelo posee una lnea de datos para cada bit enviado. Los puertos paralelos
transmiten ms bits por segundo, sin embargo necesitan un mayor nmero de pins de interfaz
externa que los puertos seriales.
Un puerto paralelo se utiliza para transmitir y recibir palabras de datos desde un hardware externo,
como por ejemplo un bloque de memoria de chip externo, un conmutador DIP (DIP switch) o una
unidad de visualizacin. Generalmente una interfaz de puerto paralelo est constituda de dos
tipos de lneas de datos:
seales de bit de datos
una seal strobe (impulso de sincronizacin) o handshaking
Comnmente una interfaz de puerto serial est constituida de tres lneas de datos separadas:
una seal de reloj
una seal de sincronizacin de frame
una seal de datos
La interfaz de puerto serial puede emplearse para varias aplicaciones, por ejemplo:
transmisin y recepcin de muestreos de datos desde un CODEC un convertidor de
analgico a digital (A/D) o uno de digital a analgico (D/A)
comunicacin con otros procesadores (otros DSPs por ejemplo)
comunicacin con otros sistemas seriales externos
Una vez establecida la comunicacin con un perifrico externo, como por ejemplo un codec, un
bloque de memoria de chip externo u otro procesador, la aplicacin de procesamiento de seales
DSP puede implementarse sin problemas.

Algunos DSPs soportan configuraciones de multiprocesadores (un tipo de paralelismo). El


paralelismo no se refiere solamente a la ejecucin concurrente de instrucciones mltiples, puede
referirse tambin al procesamiento en paralelo.
Procesamiento en paralelo es cuando se utilizan dos o ms chips procesadores de seales digitales
para una determinada aplicacin (multi-procesamiento), y que stos estn conectados a travs de
una lnea serial compartida, permitiendo la comunicacin inter-procesador. Se asigna un chip
como maestro y los otros como esclavos. Muchas aplicaciones tienen grandes limitaciones de
tiempo real que necesitan la combinacin de mltiples DSPs.

Los DSPs que soportan configuraciones multi-procesador requieren una optimizacin especial
del puerto serial de Multiplexin por divisin de tiempo (TDM).
El TDM es usado para administrar la comunicacin entre los procesadores a travs de la lnea
serial compartida. En una red TDM, el tiempo se divide en intervalos. Cada intervalo de tiempo
est asociado con un procesador diferente. Durante un intervalo dado, el procesador asociado
puede transmitir datos, y los otros pueden recibir o no transmitir. El destino final de la palabra de
datos transmitida puede incluirse en la misma palabra de datos, o puede ser enviado a travs de
una lnea de datos secundaria, en paralelo con la palabra de datos. Puede utilizarse cualquiera de
estos mtodos. Los perifricos de DSP y sus interfaces son importantes y responden a las
demandas de las tareas del procesador de seales digitales.

NUEVOS TRMINOS Y PALABRAS


circuito de fase sincronizada - circuito de fase sincronizada o PLL (phase-locked loop), es un
circuito que acta como un detector de fase, comparando la frecuencia de un oscilador conocido
con una seal entrante y despus realimenta la salida del detector para mantener el oscilador en
fase con la frecuencia entrante.
circuito RC - (RC circuit) Un circuito constituido de una resistencia y un capacitor, el cual acta
como un filtro de 1er. orden.
CODEC - Es la abreviacin de codificador-decodificador. Es un circuito electrnico que
convierte las seales analgicas en representaciones digitales y decodifica seales digitales a
forma analgica.
compansin - (companding: compressing-expanding) Compansin es una palabra compuesta
que significa compresin-expansin. Esta operacin se lleva a cabo frecuentemente para
comprimir los valores de seales de alta amplitud y mejorar (expandir) los valores de seales de
baja amplitud. La compansin produce el efecto de minimizar el rango dinmico de una seal,
permitiendo un muestreo preciso con pocos bits.
controlador DMA - (DMA Controller) Es una unidad especializada que desplaza los datos
directamente entre el almacenamiento principal y equipos perifricos, retirando el control de bus
de la CPU, no requiriendo, de esa manera, procesar los datos con la unidad de procesamiento.
convertidores de analgico a digital y digital a analgico - (analog to digital and digital to
analog converters) Unidades funcionales que convierten respectivamente los datos de una
representacin analgica a una representacin digital y de impulsos digitales a seales
analgicas.
direccin de desplazamiento - (Shift direction) Direccin de desplazamiento es el orden en el
cual los bits son transmitidos por las interfaces seriales. Los dispositivos pueden enviar el LSB o
el MSB como primer bit. Ciertas interfaces de DSP permiten escoger la direccin de
desplazamiento.
dominio de tiempo - (time domain) El dominio de tiempo es el marco de referencia para las
seales que varan en funcin del tiempo.
dominio de frecuencia - (frequency domain) El dominio de frecuencia es el marco de referencia
donde las seales se representan como funciones de frecuencia. El dominio de frecuencia es la
manera de mirar el mundo donde la variable independiente (con la que vara el voltaje, corriente,
capacitancia) no es el tiempo sino la frecuencia.
espectro - (spectrum) En este caso, el espectro se refiere a la distribucin de valores de una
cantidad de seales especficas (amplitud de voltaje, amplitud de potencia) con respecto a la
frecuencia de seal.
filtrado - (filtering) Es la supresin o atenuacin de frecuencias de seales no deseadas. El
filtrado lo pueden llevar a cabo los DSPs o circuitos analgicos. Un filtro puede ser llamado
filtro de paso bajo (low-pass), de paso alto (high-pass) o de paso de banda [band-pass (notch)],
dependiendo de las frecuencias que ste tenga que atenuar.
fTOUT - Es la frecuencia de la seal TOUT.
generadores de reloj - (clock generator) Un instrumento o dispositivo diseado para generar
impulsos que controlan la temporizacin de los circuitos de conmutacin en un microprocesador.
La frecuencia de reloj es una determinacin (pero no la nica) del flujo de datos o velocidad de
manipulacin del procesador.
handshaking Es el dilogo que tiene lugar entre dos dispositivos, la parte transmisora y la
parte receptora, antes de comenzar una transferencia de informacin. El hand-shaking se utiliza
con fines de control cuando se produce el intercambio de seales predeterminadas al establecerse
una conexin. Este nombre refleja al acto por el cual dos partes manifiestan estar de acuerdo, es
decir, se dan un apretn de manos.
interfaces - (interface) Una interfaz es el trayecto a travs del cual fluye la informacin entre un
perifrico y la CPU. Est vinculada con el dispositivo (perifrico) a travs del cual el procesador
se comunica con el mundo externo.
interfaz - (interface) Una interfaz es el trayecto a travs del cual fluye la informacin entre un

perifrico y la CPU. Est vinculada con el dispositivo (perifrico) a travs del cual el procesador
se comunica con el mundo externo.
interrupciones externas de usuario - (external user interrupt) Una interrupcin de usuario
externo es sealizada ya sea por un dispositivo externo requiriendo atencin (como una seal
desde un dispositivo de comunicacin) o por el temporizador que se vuelve a cero. La
interrupcin inicia una rutina de servicio de interrupcin definida por el usuario (ISR).
multiplexin por divisin de tiempo - (Time-Division Multiplexing) Abreviado TDM, es el
proceso de transmisin de dos o ms seales en un trayecto comn, utilizando intervalos de
tiempo sucesivos para seales diferentes.
ortogonalidad - (orthogonality) Se define como un conjunto de instrucciones donde todos los
comandos funcionan en todos los registros. Los componentes separados (como las operaciones
aritmticas, especificaciones de operandos, modos de direccionamiento y movimientos paralelos)
de una instruccin, se codifican independientemente en campos separados de la palabra de
instruccin. Para que un conjunto de instrucciones sea ortogonal al seleccionar un componente,
no debe limitar a los otros componentes.
perifricos - (peripherals) Son los dispositivos (distintos de la CPU) o equipos que proveen
comunicacin externa o recursos adicionales a un sistema de procesamiento de datos.
polaridad de lnea de reloj - (Line polarity) Es una caracterstica del reloj de bit de una interfaz
de puerto serial. La polaridad de lnea de reloj describe cual es el borde de la seal de reloj que
controla cuando los datos cambian (cuando el bit de datos N se convierte en bit de datos N+1).
PRD - Es el valor decimal del registro PRD.
preescalador - (prescaler) El preescalador se utiliza para cambiar la frecuencia de la fuente de
reloj y de esta manera hace que el contador cuente perodos de tiempo ms largos (cambiando la
frecuencia del temporizador).
puertos de comunicacin - (host ports) Puertos paralelos especializados en un DSP que sirven
para interconectarse fcilmente a un procesador central (host). Adems de la transferencia de
datos, ciertas interfaces host permiten que el procesador central (usualmente un procesador de
uso general utilizado para funciones de control en un sistema encapsulado) fuerce al DSP a
ejecutar rutinas de servicio de interrupcin, las cuales pueden ser tiles para el control.
puertos E/S de bit - (bit I/O ports) Son los puertos E/S en los cuales cada bit puede configurarse
individualmente como entrada o salida, y en el que cada bit puede ser ledo o escrito
independientemente. Un procesador debe sondear el puerto E/S de bit para determinar si los
valores de entrada han cambiado.
puertos seriales sincrnicos - (synchronous serial port) Es un tipo de interfaz serial donde se
transmite una seal de reloj de bit adems de la seal de datos serial. El receptor utiliza la seal
de reloj de bit para decidir cuando se va a muestrear la seal de datos recibidos.
regin de transicin - Es el rea entre la banda de paso y la banda de paro. Es una amplia gama
de cambio de ganancia con frecuencia dentro de la cual usualmente se mejora el rendimiento del
filtro (dependiendo de la aplicacin especfica).
reiniciar - (reset) Es una manera de llevar un dispositivo a un estado conocido, ajustando los
registros y los bits de control a valores predeterminados y sealizando para que la ejecucin
comience en una direccin especificada o, en el caso del CODEC, esperando que se reciban los
valores de inicializacin.
reloj maestro - (master clock ) El reloj maestro es la fuente primaria de las seales de
temporizacin utilizadas para controlar las operaciones que se llevan a cabo dentro de un
procesador.
seales de bit de datos - Las lneas de seal de bit de datos utilizadas por la interfaz de puerto
paralelo para transmitir y recibir bits en paralelo. La lnea de seal indica el estado de un bit (ya
sea alto o bajo).
seal de datos - (data signal) Es la seal utilizada por una interfaz serial para transmitir el estado
de un bit (ya sea alto o bajo).
seal de reloj - (clock signal) Es la seal utilizada por la interfaz para determinar cuando los bits
de datos son vlidos.
sincronizacin de frame - (frame synchronization) Es la seal utilizada por una interfaz serial

sincrnica, la cual le indica al receptor la posicin del primer bit de una palabra de datos en la
lnea de datos en serial.
sinusoides relacionadas armnicamente - Un armnico es una seal con una frecuencia que es
un mltiple simple de la seal sinusoidal fundamental (el primer armnico). Los otros armnicos
son mltiplos de la fundamental. Las sinusoides relacionadas armnicamente (harmonically
related sinusoid) son seales sinusoidales cuyas frecuencias son mltiplos entre ellas.
strobe - Es la seal o impulso de sincronizacin, que indica al dispositivo externo que enva los
datos del DSP a travs del puerto paralelo, que la palabra de datos ha sido recibida. A esta seal
se le conoce tambin como seal de handshake o handshaking.
TDDR - Es el valor decimal de una serie de bits dentro del registro TCR .
Temporizadores - (timer) Un perifrico que cambia el contenido de un registro en intervalos
regulares de manera que se pueda medir el tiempo.
tiempo real - (real-time) Es un modo de operacin del procesador en el cual una muestra de
datos se recibe, se procesa y retorna antes de que el procesador reciba el prximo muestreo de
datos. sto se hace tan rpido como para permitirle al usuario que: responda inmediatamente,
afecte el funcionamiento del entorno o que gue los procesos fsicos controlados por el
procesador. La mayora de los sistemas interactivos funcionan en un modo de tiempo real.
TDM - TDM, abreviacin de Multiplexin por divisin de tiempo (Time-Division Multiplexing),
es el proceso de transmisin de dos o ms seales en un trayecto comn, utilizando intervalos de
tiempo sucesivos para seales diferentes.
TMC - Es el perodo del reloj maestro del DSP (este valor es (1/20) MHz = 50 ns para el DSP
C50).

Ejercicio 1 Perifricos del DSP


OBJETIVO DEL EJERCICIO
Al terminar este ejercicio, estar familiarizado con los perifricos especializados utilizados por
los DSPs.
DISCUSIN DEL EJERCICIO
Los perifricos encontrados en el DSP TMS320C50 ('C50), son buenos ejemplos del tipo de
perifricos utilizados en los distintos DSPs programables. El 'C50 utilizado en el tablero de
Procesador de seales digitales de FACET, posee varios perifricos de chip integrado que se
comunican con los distintos dispositivos del tablero de circuitos.
El puerto serial del 'C50 se utiliza para comunicarse con el CODEC. El puerto paralelo 'C50 se
utiliza para comunicarse con el chip de memoria ROM, los 4 visualizadores de INTERFAZ E/S
y el conmutador DIP (DIP switch). El reloj maestro del 'C50 es generado externamente por el
oscilador e introducido en el DSP. Dos de las lneas de interrupcin externa de usuario externo
del 'C50, estn conectadas a un botn pulsador en la superficie del tablero de circuitos FACET.
Un puerto serial de DSP generalmente se divide en dos secciones: una seccin de recepcin
(receive) y una de transmisin (transmit). Las secciones de transmisin y de recepcin pueden
ser independientes. Habr una:

lnea de datos de recepcin


lnea de sincronizacin de frames (cuadros) de recepcin
lnea de reloj de bit de recepcin
lnea de datos de transmisin
lnea de sincronizacin de frames de transmisin
lnea de reloj de bit de transmisin

Otros DSPs, tienen pins de datos de recepcin y transmisin independientes, sin embargo, la
sincronizacin de frames y las lneas de reloj de bit se comparten entre las dos secciones. El
puerto serial del C50 opera a travs de tres registros de usuario mapeados en memoria
(conocidos como DRR, DXR y SPC).
DRR (Data Receive Register) o Registro de recepcin de datos, es donde se guardan las palabras
recibidas a travs del pin de datos del puerto serial. El DRR es mapeado en memoria en la
direccin de memoria de datos (dma) 20h. DXR (Data transmit Register) o Registro de
transmisin de datos, es donde se guardan las palabras que sern transmitidas a travs del pin de
datos de transmisin en serie. Una vez que la palabra est almacenada en el DXR, los circuitos de
transmisin del puerto serial se encargarn de transmitirla. El DXR es mapeado en memoria en la
dma 21h.
SPC (Serial Port Control) o Control de puerto serial, es un registro de control de estado y de
modo para el puerto serial del DSP. A travs del Registro de Control del puerto serial mapeado en
memoria (SPC), el DSP C50 le permite al programador especificar las caractersticas de
transmisin y recepcin del puerto serial.
La polaridad de lnea de reloj de bit, la direccin de desplazamiento y la longitud de palabra de
datos y las seales de sincronizacin de frame, ya sean de longitud de bit o de longitud de palabra,
son caractersticas del puerto serial que hacen que ciertos chips de DSP puedan ser configurados
por el programador.
Un puerto paralelo de DSP se implementa generalmente en una de dos maneras. El bus de datos
del procesador principal puede utilizarse como puerto paralelo, o el puerto paralelo puede
separarse de la interfaz de bus externo del procesador. Los procesadores que separan el puerto
paralelo de la interfaz del bus externo, simplifican la interconexin hacia los dispositivos externos.
Los DSPs que utilizan el bus de datos como puerto paralelo, reservan normalmente una seccin
especial de su espacio de direccin para el acceso a dispositivos de chip externo. En algunos
DSPs, se accede a las direcciones de memoria reservadas con instrucciones especializadas. El
C50 posee dos de estas instrucciones de puerto paralelo, ENTRADA (IN) y SALIDA (OUT). Las
instrucciones ENTRADA y SALIDA del C50 se utilizan para leer y escribir una palabra de datos,
desde y hacia un puerto de E/S externo.
Los accesos del puerto E/S se distinguen de los accesos de programa y datos por un denominado
pin de strobe o handshaking. El pin es reconocido cuando se realiza la lectura o escritura externa.
Las seales de reloj se utilizan para poner en secuencia las operaciones del DSP. Una seal de
reloj consiste de una onda cuadrada a cierta frecuencia conocida. A la seal de reloj de ms alta
frecuencia dentro de un procesador se le conoce como reloj maestro.
Tpicamente, la seal de reloj maestro es generada externamente. Sin embargo, ciertos DSPs
poseen ahora un circuito de fase sincronizada o PLL. Dichos DSPs necesitan solamente una
seal de entrada de muy baja frecuencia para generar (con el PLL) la seal de reloj maestro. Es
posible generar la seal de reloj maestro de muchas maneras diferentes. En general, la opcin para
generar la seal de reloj puede ser configurada por el programador.
Un gran nmero de DPSs programables poseen temporizadores. Un temporizador (timer) es un
perifrico que cambia el contenido de un registro a intervalos regulares, de manera que se pueda
medir el tiempo. Ciertos DSPs estn provistos de un pin de salida de temporizador. De este pin
sale una onda cuadrada (a la frecuencia del temporizador) que provee a un programador de un
oscilador controlado por software.

El temporizador C50, segn es usado en el tablero de circuitos FACET, produce una onda
cuadrada a una frecuencia de 10 MHz. La seal entra en el CODEC como su reloj maestro.
Recuerde que en el Ejercicio 2 de la Unidad 2, se utiliz el temporizador del DSP C50. El registro
de tiempo (TIM) fue ledo al principio y al final de un algoritmo. De esta manera se midi la
duracin del algoritmo.
Una posible aplicacin del temporizador es la medicin de la duracin de un evento, sin
embrago, en los DSPs, los temporizadores se utilizan generalmente como una fuente de
interrupciones peridicas. En realidad, un temporizador est constituido de:
una fuente de reloj
un pre-escalador
un contador
Generalmente la fuente de reloj incluye la seal de reloj maestro del DSP. Existe una gran
cantidad de grupos de pins en los DSPs programables. Vinculados con algunos de estos pines, se
encuentran perifricos adicionales de los cuales no hemos hablado todava.
interrupciones externas de usuario externo
puertos E/S de bit
El DSP TMS320C50 que se encuentra en el tablero de circuitos de FACET, utiliza
interrupciones externas de usuario. De hecho, la mayora de los DSPs proveen este tipo de
perifricos. Una interrupcin externa funciona exactamente de la misma manera que una
interrupcin interna, sin embargo, en la mayora de los casos, las interrupciones de usuario
externas tienen menos prioridad de respuesta que las otras interrupciones.
El DSP TMS320C50 que se encuentra en el tablero de circuitos de FACET, utiliza puertos E/S
de bit (dos de ellos, BIO# y XF), tambin conocido en ciertos DSPs como contactos de E/S de
uso general, para establecer la comunicacin entre el VDE C5x y el DSP.
Los puertos E/S de bit son controlados por software. En esta aplicacin particular (la
comunicacin entre el VDE C5x y el DSP), el control por software del BIO# y los puertos E/S de
XF I/O se hace por medio de un programa de comunicacin (kernel) instalado en la ROM de
chip externo.
El DSP ejecuta en primer lugar el software, cuando se intenta lograr la comunicacin entre el
programa depurador VDE C5x y el DSP. CODEC es la abreviacin de CODificadorDECodificador. Es un circuito electrnico que convierte seales analgicas en representaciones
digitales y decodifica las seales digitales en forma analgica.
A pesar de que es posible efectuar el procesamiento de seales completamente con seales
digitales, con frecuencia se necesita una conversin de analgica a digital y viceversa.
Normalmente un CODEC se constituye de los siguientes componentes:

una ganancia de entrada programable


un filtro antisolape
un convertidor de analgico a digital
un convertidor de digital a analgico
un filtro posterior

Como se dijo anteriormente, la comunicacin del C50 con el CODEC se establece a travs de las

interfaces seriales de recepcin y de transmisin del DSP. La doble comunicacin en serie puede
implementarse slo despus de haberse inicializado los perifricos en serie del DSP y el
CODEC.

Ejercicio 2 Procesamiento de seales digitales: filtro FIR


OBJETIVO DEL EJERCICIO
Al completar este ejercicio, estar familiarizado con una aplicacin comn de los DSPs,
conocida como filtrado.
DISCUSIN DEL EJERCICIO
Los sistemas de procesamiento tanto analgico como digital reciben y transmiten seales. El
efecto del procesamiento en una seal puede visualizarse (analizarse) de dos maneras diferentes,
ya sea utilizando el dominio de tiempo o el dominio de frecuencia. En el dominio de frecuencia,
una seal de una frecuencia es representada por un pico.
Seales ms complejas, y a su vez, ms comunes como la onda cuadrada por ejemplo, pueden
representarse como una superposicin de varias sinusoides relacionadas armnicamente. Una
seal visualizada en el dominio de frecuencia posee cierto espectro. En nuestro ejemplo, el
espectro de la onda cuadrada muestra un gran voltaje (amplitud) asociado con una frecuencia
central, y luego voltajes decrecientes asociados con frecuencias laterales.
Los componentes elctricos pueden describirse de manera similar. Resistencias, capacitores e
inductores pueden expresarse tanto en el dominio de tiempo como en el de frecuencia. Ciertos
circuitos elctricos tienen la capacidad de atenuar o amplificar los componentes de frecuencias
de las seales.
El hecho de que los circuitos elctricos produzcan una ganancia o una prdida proporcional a la
frecuencia de seal, es aprovechado al crear los filtros. Un filtro es un dispositivo que transmite
seales en frecuencias dentro de una o ms bandas de frecuencia, y atena seales en todas las
otras frecuencias.
Un circuito RC mostrado anteriormente, acta como un filtro. Las seales CC se transmiten sin
atenuacin a travs del circuito, mientras que los componentes de alta frecuencia son atenuados
considerablemente. En efecto, un filtro se usa para moldear el espectro de una seal.
El filtrado consiste en la supresin o atenuacin de frecuencias de seales no deseadas. La
operacin puede implementarse por circuitos analgicos (utilizando diferentes tipos de
componentes elctricos) o usando un DSP.
De acuerdo a las frecuencias que deba atenuar, un filtro es usualmente definido como:

de paso bajo (low-pass)


de paso alto (high-pass)
de paso de banda o ranura (band-pass)

Los grficos mostrados arriba, son llamados Grficas Bode (Bode plots); tambin se les conoce
como respuestas de frecuencia de filtro. A partir de un grfico de respuesta de frecuencia (grfico
Bode), se observan fcilmente varias caractersticas y propiedades del filtro. El paso de banda de
un filtro, se define como el rango de frecuencias sobre el cual pasan las seales prcticamente sin
atenuacin a travs del filtro.

A la frecuencia de corte se le conoce como el punto donde la respuesta del paso de banda cae 3
dB. La regin de transicin (transition region) es el rea entre la banda de paso (pass band) y la
banda de parada (stop band). Un ndice amplio de ganancia de cambio de frecuencia dentro de esta
regin, mejora generalmente el rendimiento del filtro (dependiendo de la aplicacin especfica).
La banda de parada (stop band) se define como el rango de frecuencias donde las seales pasan a
travs del circuito y son atenuadas. El nivel de atenuacin depende de las especificaciones de
diseo del filtro. Los filtros poseen muchas otras caractersticas. Hacer una descripcin de todas
ellas exigira una discusin ms profunda. Por el momento, es importante recordar que un filtro
provoca una variacin de la ganancia de seal con la frecuencia.
Como se dijo, un filtro aprovecha la representacin de dominio de frecuencia de los
componentes de los circuitos electrnicos (como el capacitor y el inductor). Sin embargo, el
filtrado tambin puede llevarse a cabo por procesadores de seales digitales. Una vez que los
efectos son producidos solamente por circuitos analgicos, pueden ser representados
matemticamente y ejecutados eficientemente por procesadores. Hasta hace poco tiempo, una
de las aplicaciones ms comunes de los DSPs era utilizarlos como filtros (el filtro digital).
Cuando se emplean como filtros, es preferible utilizar los DSPs en lugar de circuitos analgicos.
sto se debe a que al digitalizar cualquier diseo, se asegura que se pueden producir los mismos
resultados una y otra vez. Los filtros digitales son implementados con la suma del coeficiente del
filtro (Ai) y las multiplicaciones del muestreo de datos (Sj).
Los coeficientes se guardan en memoria y representan la informacin de respuesta de frecuencia
del filtro. Normalmente, mientras ms coeficientes se utilicen para representar un filtro, menor ser
la regin de transicin del filtro. Los muestreos de datos representan la seal de entrada. La
operacin mostrada arriba, puede ejecutarse con la ayuda de la instruccin Multiplicar y
ACumular (MAC), que se encuentra en casi todos los DSPs. Tradicionalmente, los DPSs se han
mejorado especialmente para llevar a cabo operaciones de filtrado en tiempo real.
La instruccin MAC se considera la piedra angular de operacin del filtro.
RPT
MACD
APAC

##79
##C0,*-

El DSP TMS320C50 necesita solamente tres instrucciones de cdigo de origen para implementar
adecuadamente la parte matemtica de un algoritmo de filtro.
La instruccin de origen RPT le dice al DSP que ejecute en bucle la siguiente instruccin 80 veces
(79+1). La instruccin MACD multiplica el coeficiente de filtro C correspondiente por un punto
de datos direccionado indirectamente que se ha guardado en memoria. La instruccin de origen
del APAC termina el clculo del muestreo de seales filtradas sumando el registro del acumulador
y del producto.

Você também pode gostar