Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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
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.
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:
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.
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.
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.
DSP
CODEC
INTERFAZ E/S
INTERRUPCIN
AUXILIAR E/S
PUERTO EN SERIE
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:
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.
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.
representa grficamente los valores de memoria del DSP, mientras el programa DSP se est
ejecutando,
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 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:
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.
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 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.
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.
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).
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.
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:
Cuando se requiere otro operando de multiplicacin, ste se busca en una de las otras dos
ubicaciones:
OPERANDO 1
OPERANDO 2
OPERACIN
RESULTADO
0111 0111
(+119)
0011 0111
(+55)
MULTIPLICADOR
0110 0110
(+102)
1011 0111
(-73)
MULTIPLICADOR
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
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
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.
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.
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
Cdigo mquina
Opcdigo de instruccin
1110110010101001
0001110101101110
Direccionamiento de operando
codificado
Opcdigo
5A h
10111000 01011010
Operando
Cdigo mquina
Operando
1011111110010000
1011100101001000
B948 h
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.
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.
Existen estas similitudes debido al esfuerzo para proporcionar un alto rendimiento con las
aplicaciones claves en el procesamiento de seales.
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.
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.
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:
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
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.
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
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).
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
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:
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.
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.
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).
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:
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.
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.