Sie sind auf Seite 1von 5

DSP Software

Hugo Gomez, Andres Ortega, Estudiantes, UPS

I. INTRODUCTION

AS aplicaciones DSP son programadas en los mismos

lenguajes como otras ciencias y tareas de ingeniera, incluye tpicos como: Cuntos nmeros son representados por patrones de bits, error round-off en la aritmtica computacional, la velocidad computacional de diferentes tipos de procesadores. Con DSP se pueden hacer cosas en el alto nivel para evitar los inconvenientes por el bajo nivel de trabajo interno de la computadora. II. NMEROS DE COMPUTADORA Las computadoras guardan y recuerdan nmeros con error, por ejemplo si queremos guardar el nmero 1.00000001 la computadora responde slo con 1, el saber como la computadora guarda los datos nos permite anticiparnos y corregir este problema antes de que el programa devuelva un dato sin sentido. Estos problemas aumentan debido a que un nmero de bits estn asignados para guardar cada nmero. Por ejemplo si se tiene 8 bits para guardar el valor de un variable, se tiene 28= 256 posibles patrones de bits, la variable puede tomar slo 256 diferentes valores, y esto es una limitacin, y no hay nada que se pueda hacer. Lo que podemos controlar es el valor que declaramos a cada patrn de bit para representar. III. PUNTO FIJO (ENTEROS) Es usada para guardar enteros positivos y negativos; programas de alto nivel como el C, asigna 16 bits para guardar cada entero, en el caso ms simple 2 16=65.536 posibles patrones de bit son asignados, a esta configuracin es llamada formato Entero sin signo (unsigned integer), y un ejemplo simplificado se demuestra en fig. 1 (que usa solamente 4 bits por nmero). La conversin entre el bit patrn y el nmero que son representados no es ms que de base 2 (binaria) a base 10 (decimal), la desventaja que tiene el entero sin signo son los nmeros negativos que no pueden ser representados.

Figura 1. Formatos comunes para la representacin del punto fijo (nmero entero). Complemento2.Es cmo los nmeros enteros se representan en computadoras. Para entender el patrn de codificacin, observe que el nmero decimal cero en la fig. 1, corresponde a un cero binario, 0000. Pues contamos hacia arriba, el nmero decimal es simplemente el equivalente binario (0 = 0000, 1 = 0001, 2 = 0010, 3 = 0011, etc.). Ahora, recuerde que estos cuatro bits estn almacenados en un registro que consiste en 4 flip-flops. Si comenzamos en 0000 y comenzamos otra vez a restar, el hardware digital cuenta automticamente en el complemento 2: 0 = 0000, -1 = 1111, -2 = 1110, -3 = 1101, etc. Usando 16 bits, el complemento 2 puede representar nmeros a partir de -32.768 a 32.767. IV. PUNTO FLOTANTE (NMEROS VERDADEROS) Su esquema de codificacin es ms complicado que para el punto fijo. La idea es igual segn lo utilizado en la notacin cientfica, donde una mantisa es multiplicada por diez elevada a un mismo exponente. Por ejemplo, 5.4321 x 10 6 donde 5.4321 la mantisa y 6 es el exponente, esta notacin es excepcional en la representacin de nmeros muy grandes y muy pequeos. El formato para 32 nmeros de bits es llamado simple precisin (single precision), 64 nmeros de bits llamado doble precisin (double precision). Segn lo demostrado en fig. 2, los 32 bits usados en la simple precisin se dividen en tres grupos separados: los bits del 0 al 22 forman la mantisa, bits 23 al 30 para el exponente, y el 31 para el signo. Estos bits forman el nmero de punto flotante, v:

Donde S es el valor del signo del bit, M es el valor de la mantisa, y E es el valor del exponente.

Figura 2. nica precisin del formato de almacenamiento de punto flotante. El nico nmero distinto a cero en la base dos es 1, entonces el dgito principal en la mantisa ser siempre 1, y por lo tanto no necesita ser almacenado. Quitar esta redundancia permite que el nmero tenga un bit adicional de precisin. Los 23 bits almacenados referidos por la notacin: m22, m21,m0 , forman la mantisa segn: Figura 3. Ejemplos del espaciamiento entre los nmeros de punto flotante de nica precisin. El programa a continuacin ilustra cmo el error de redondeo causa problemas en DSP. Dentro del lazo del programa, dos nmeros aleatorios se suman a la variable X de punto flotante, vemos como el error de redondeo tiene efecto en la salida de las operaciones haciendo que el resultado se aleje del verdadero.

V. PRECISIN Los errores asociados a la representacin de nmero son muy similares a los errores de cuantizacin durante el ADC. Si se desea almacenar una gama continua de valores; se puede representar un nmero finito de niveles cuantizados. Cada vez que un nuevo nmero se genera, debe ser redondeado al valor ms cercano que se puede almacenar en el formato que se est utilizando. Con variables del punto fijo, el espacio entre los nmeros adyacentes es siempre uno. En la notacin del punto flotante, el espacio entre los nmeros adyacentes vara al excedente de la gama representada del nmero. Si escogemos aleatoriamente un nmero de punto flotante, el espacio entre nmeros es aproximadamente diez millones de veces ms pequeo que el nmero s mismo. ste es un concepto dominante de la notacin de punto flotante: los nmeros grandes tienen espacios grandes entre ellos, mientras que los nmeros pequeos tienen espacios pequeos. La figura 3 ilustra esto demostrando nmeros consecutivos de punto flotante, y los espacios que los separan.

Figura 4. Algoritmo La figura 5 un problema del error de redondeo. Cada uno de los dos programas en esta tabla realiza la misma tarea: imprimiendo 1001 nmeros espaciados igualmente entre 0 y 10. El programa izquierdo utiliza la variable X de punto flotante, el programa a la derecha utiliza una variable de nmero entero, para controlar el lazo. La adicin, la substraccin, o la multiplicacin de dos nmeros enteros produce siempre otro nmero entero. Esto significa que la notacin del punto fijo no tiene absolutamente ningn error de redondeo con estas operaciones. Los nmeros enteros son ideales para lazos auto controlados.

PASCAL, APL, COBOL, LISP, etc. La tabla 4 muestra un programa en BASIC para adicionar 1234 y 4321. El programador sabe solamente las variables A, B, y C, y nada sobre el hardware.

Figura 6. Programa BASIC para adicionar 1234 y 4321 El compilador se utiliza para transformar el cdigo fuente de alto nivel directamente en el cdigo de maquina. Esto requiere asignar posiciones de memoria del hardware a cada uno de las variables abstractas que son referidas. Por ejemplo, la primera vez que el compilador encuentra la variable A en la figura 6 (lnea 100), entiende que el programador est utilizando este smbolo para asignar una variable precisa de punto flotante. El compilador designa cuatro bytes de memoria para colocar el valor de esta variable. Cada tiempo subsiguiente en que una A aparezca en el programa, la computadora actualiza el valor de los cuatro octetos segn lo necesitado. El compilador rompe expresiones matemticas complicadas, por ejemplo: Y = log(x*cos(z)), en una aritmtica ms bsica. Los microprocesadores saben solamente sumar, restar, multiplicar y dividir. Cualquier cosa complicada se debe hacer como serie de las operaciones elementales. El nivel ms alto de programacin sofisticada se encuentra en los paquetes de usos para DSP. stos vienen en una variedad de formas, y se proporcionan a menudo para apoyar el hardware especfico. Estos dispositivos tienen a menudo porciones de las caractersticas incorporadas para DSP: entradas anlogas, salidas anlogas, I/O digital, antialias y filtros de reconstruccin, etc Otro aspecto importante es que cuando se opera en un nivel ms alto, el cdigo de maquina debe ser eficiente en memoria, velocidad, y precisin. VII. VELOCIDAD DE EJECUCIN: HARDWARE La velocidad de la ejecucin es limitada por el hardware. Puesto que las computadoras se componen de muchos subsistemas, el tiempo requerido para ejecutar una tarea particular depender de dos factores: la velocidad de los subsistemas individuales, y el tiempo que lleva los datos de la transferencia entre estos bloques. La figura 7 muestra un diagrama simplificado de la velocidad ms importante que limita componentes en un ordenador personal tpico. La unidad central de proceso (CPU) es el corazn del sistema y se incluye electrnica digital necesaria para las operaciones como bits mviles y aritmtica de punto fijo.

Figura 5. Comparacin entre punto flotante y variables enteras por un bucle FOR

VI. VELOCIDAD DE EJECUCIN: LENGUAJE DE


PROGRAMA

La programacin de DSP se puede dividir en tres niveles: Ensamblado, Compilado, y de Uso especfico. Como recordatorio sabemos que un 8088 tiene cuatro registros de fines generales estos son identificados por los nombres: AX, BX, CX, y DX. Hay tambin nueve registros adicionales de propsitos especiales, llamados: SI, DI, SP, BP, CS, DS, SS, ES, y IP. Por ejemplo, el IP, el indicador de instruccin, salta lneas de memoria en donde esta la siguiente instruccin almacenada Cuando el programa comienza, el IP contiene la direccin de una seccin de la memoria que contiene un patrn de unos y de ceros.Aunque parece sin sentido, este patrn de unos y de ceros contiene todos los comandos y datos requeridos para terminar la tarea. Por ejemplo, cuando el microprocesador encuentra la configuracin de bits: 00000011 11000011, es interpretado como un comando de tomar los 16 bits y almacenarlos en el registro BX, adiciona en binario a los 16 bits almacenados en el registro AX, y almacena el resultado en el registro AX. Este nivel de la programacin se llama el cdigo fuente, y es solamente un pedazo sobre el trabajo con los circuitos electrnicos actuales. El ensamblador se utiliza para convertir el cdigo fuente en los patrones de unos y de ceros. La programacin ensamblador implica la manipulacin directa de: registros, posiciones de memoria, bits de estado, etc. El nivel siguiente puede manipular variables abstractas sin ninguna referencia al hardware particular. stos se llaman compiladores o lenguajes de alto nivel. los usados comnmente por ejemplo: C, BASIC, FORTRAN,

Las matemticas ms complicadas son manejadas transfiriendo los datos a un circuito especial del hardware llamado ALU. Los sistemas informticos ms baratos no tienen un coprocesador de matemticas. Estos sistemas ms bajos del funcionamiento substituyen el hardware por software. Cada una de las funciones matemticas est quebrada en las operaciones binarias elementales que se pueden manejar directamente dentro de la CPU. Mientras que esto proporciona el mismo resultado, el tiempo de ejecucin es mucho ms lento, por ejemplo, con un factor de 10 a 20.

Figura 8. Tiempos de ejecucin para varias generaciones de computadoras. Los microprocesadores de DSP se utilizan en dos maneras: como mdulos auxiliares bajo control de una computadora ms convencional, o como procesador encajado en un uso dedicado. Trabajan con nmeros de punto fijo o tambin con punto flotante. La arquitectura interna usada para obtener la velocidad creciente incluye: (1) porciones de la memoria cache, (2) buses separados para el programa y los datos, permitiendo que los dos sean alcanzados simultneamente, (3) hardware rpido para los clculos de la matemticas, y (4) un diseo de la pipeline. Pipeline rompe el hardware requerido para cierta tarea en varias etapas sucesivas. Por ejemplo, la adicin de dos nmeros se puede hacer en tres etapas de la pipeline. La primera etapa de la pipeline trae los nmeros que se agregarn de memoria. La nica tarea de la segunda etapa es agregar los dos nmeros juntos. La tercera etapa almacena el resultado en memoria. Si cada etapa puede terminar su tarea en un solo ciclo de reloj, el procedimiento entero tomar tres ciclos de reloj para ejecutarse. La caracterstica dominante de la estructura de la pipeline es que otra tarea puede ser comenzada antes de que se termine la tarea anterior. Las pipeline son grandes para la velocidad, pero pueden ser difciles de programar. El algoritmo debe permitir que un nuevo clculo comience. VIII. VELOCIDAD DE EJECUCIN: TIPS DE
PROGRAMACIN

Figura 7. Arquitectura de un sistema de computadora tpico La CPU y la memoria central se contienen en chips separados en la mayora de los sistemas. Por razones obvias, se desea que la memoria central fuera muy grande y muy rpida pero sera muy costoso. La transferencia de datos entre la memoria central y la CPU es un embotellamiento muy comn para la velocidad. La CPU pide a la memoria central la informacin binaria en una direccin de memoria particular, y entonces debe esperar para recibir la informacin. La solucin a este problema es utilizar una memoria cache. sta es una cantidad pequea de memoria muy rpida usada como almacenador intermediario entre la CPU y la memoria central. Cuando la CPU solicita la memoria central para proporcionar los datos binarios en una direccin particular, la electrnica digital de alta velocidad copia una seccin de la memoria central alrededor de esta direccin en la memoria cache. La prxima vez que la CPU solicite la informacin de la memoria, es muy probable que sea contenida ya en la memoria cache, haciendo la recuperacin muy rpida. La memoria cache puede estar en el mismo chip que la CPU, o puede ser un dispositivo electrnico externo. La taza en la cual los datos se pueden transferir entre los subsistemas depende del nmero de las lneas de datos paralelas proporcionadas, y de la taza mxima que las seales numricas se pueden pasar a lo largo de cada lnea.

El hardware y los lenguajes de programacin son importantes para maximizar velocidad de ejecucin. Si cambia el algoritmo de cierto programa cambia drsticamente el tiempo de ejecucin. Aqu estn tres sugerencias. Uso de nmeros enteros en vez de variables de punto flotante siempre que sea posible. Los microprocesadores convencionales, tales como los utilizados en ordenadores personales, los nmeros enteros de proceso son 10 a 20 veces ms rpidos que con punto flotante. En sistemas sin un coprocesador, la diferencia puede ser 200 a 1. Una

excepcin a esto es la divisin del nmero entero, que es lograda convirtiendo los valores en punto flotante. Esto hace que la operacin sea ms demorada comparando con otros clculos con nmero entero. Evite usar funciones tales como: sin(x), log(x), yx Estas funciones se calcula como serie de adiciones, de substracciones y de multiplicaciones.

La mayora de los idiomas proporcionan solamente algunas funciones transcendentales, y esperan que usted derive los otros por medio de las relaciones en la figura 9. Estos clculos derivados son ms lentos.

Figura 9. Conversin de funciones no trascendentales a funciones trascendentales Diferencie que es rpido y lento en su sistema en particular. Lo puede averiguar con la experiencia y la prueba. Preste atencin particular a los comandos de los grficos y I/O. Hay generalmente varias maneras de manejar estos requisitos, y las velocidades pueden ser muy diferentes.

Das könnte Ihnen auch gefallen