Tecnologías para el procesamiento digital de señales (notas de clase) MI. Mario Alfredo Ibarra Carrillo 23-junio-2014 2 Índice general 1. Elementos básicos de un sistema DSP 1.1. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2. Elementos del procesamiento digital de señales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.1. Objetivo del curso . . . . . . . . . . . . . . . . . 1.3. Conversión de una señal analógica a digital . . . . . . . 1.3.1. Señal analógica . . . . . . . . . . . . . . . . . . . 1.3.2. Señal muestreada . . . . . . . . . . . . . . . . . . 1.3.3. Señal retenida . . . . . . . . . . . . . . . . . . . 1.3.4. Señal cuantizada . . . . . . . . . . . . . . . . . . 1.3.5. Señal digital . . . . . . . . . . . . . . . . . . . . . 1.4. Sistemas de desarrollo para el procesamiento de señales 1.4.1. Field Programmable Gate Array . . . . . . . . . 1.4.2. Terasic DE2i-150 FPGA Development Kit . . . . 1.4.3. Software radio . . . . . . . . . . . . . . . . . . . 1.5. Antecedentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 8 9 9 10 10 10 12 13 13 14 14 17 2. Conversión digital a analógica 2.1. Conversión digital a analógico . . . . . . . . . . . . 2.2. Convertirdor digital a analógico por red R . . . . . 2.2.1. Ecuación característica . . . . . . . . . . . . 2.2.2. Resolución . . . . . . . . . . . . . . . . . . 2.2.3. Ganancia . . . . . . . . . . . . . . . . . . . 2.2.4. Ejemplo: DAC de 4 bits . . . . . . . . . . . 2.3. Convertirdor digital a analógico por red R2R . . . 2.3.1. Ecuación característica . . . . . . . . . . . . 2.3.2. Resolución . . . . . . . . . . . . . . . . . . 2.3.3. Ganancia . . . . . . . . . . . . . . . . . . . 2.3.4. Ejemplo: DAC R2R de 4 bits . . . . . . . . 2.4. Filtro reconstructor . . . . . . . . . . . . . . . . . . 2.4.1. La señal del DAC . . . . . . . . . . . . . . . 2.4.2. El filtro reconstructor . . . . . . . . . . . . 2.4.3. Reconstrucción . . . . . . . . . . . . . . . . 2.4.4. Filtro real y la Interferencia intersimbólica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 19 20 20 21 21 21 21 21 22 22 23 23 24 24 25 25 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 4 ÍNDICE GENERAL 2.4.5. Filtro Coseno Elevado . . . . . . . . . . . . 2.5. Convertidor digital a analógico por ancho de pulso 2.5.1. Modulador digital de ancho de pulso . . . . 2.5.2. Modulador analógico de ancho de pulso . . 2.5.3. El espectro de la señal PWM . . . . . . . . 2.5.4. Interferencia intersimbólica . . . . . . . . . 2.5.5. Filtro reconstructor . . . . . . . . . . . . . 2.6. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 29 30 31 31 33 33 37 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 39 39 40 40 40 41 41 42 43 43 44 44 45 45 47 4. Formatos numéricos 4.1. Sistemas de numeración . . . . . . . . . . . . . . . . . . . 4.1.1. Constitución de un número en base 10 . . . . . . . 4.1.2. Codificar un número de cualquier base a base 10 . 4.1.3. Codificación decimal a base 5 . . . . . . . . . . . . 4.1.4. Codificación decimal a binario . . . . . . . . . . . 4.2. Complementos . . . . . . . . . . . . . . . . . . . . . . . . 4.2.1. Complemento a 2 . . . . . . . . . . . . . . . . . . . 4.2.2. Complemento a uno . . . . . . . . . . . . . . . . . 4.2.3. Relación entre complementos . . . . . . . . . . . . 4.3. Resta mediante complementos . . . . . . . . . . . . . . . . 4.4. Tipos de números . . . . . . . . . . . . . . . . . . . . . . . 4.5. Enteros no negativos . . . . . . . . . . . . . . . . . . . . . 4.5.1. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . 4.5.2. Propiedades . . . . . . . . . . . . . . . . . . . . . . 4.5.3. Codificación Decimal, binario 4 bits y hexadecimal 4.5.4. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . 4.5.5. Suma de enteros no negativos . . . . . . . . . . . . 4.5.6. Resta de enteros no negativos . . . . . . . . . . . . 4.5.7. Producto de enteros no negativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 49 49 49 50 50 51 51 51 52 52 53 53 54 54 55 55 56 56 57 3. Conversión analógica a digital 3.1. Proceso de conversión analógico a digital 3.1.1. Fuente de información . . . . . . 3.1.2. Transductor de entrada . . . . . 3.1.3. Filtro antialiasing . . . . . . . . 3.1.4. Muestreador-retenedor . . . . . . 3.1.5. Circuito ADC . . . . . . . . . . . 3.2. Muestreador . . . . . . . . . . . . . . . . 3.3. ADC de aproximaciones sucecivas . . . . 3.3.1. La resolución . . . . . . . . . . . 3.3.2. Desventajas . . . . . . . . . . . . 3.4. ADC tipo flash . . . . . . . . . . . . . . 3.4.1. La resolución . . . . . . . . . . . 3.4.2. Desventajas . . . . . . . . . . . . 3.5. El ADC tipo delta . . . . . . . . . . . . 3.6. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ÍNDICE GENERAL 5 4.6. Números enteros . . . . . . . . . . . . . . . . . . . . . . . 4.6.1. Ejemplo de codificación a binario . . . . . . . . . . 4.6.2. Propiedades . . . . . . . . . . . . . . . . . . . . . . 4.6.3. Codificación Decimal, binario 4 bits y hexadecimal 4.6.4. Suma de un número con su complemento . . . . . 4.6.5. Suma de enteros . . . . . . . . . . . . . . . . . . . 4.6.6. Resta de enteros . . . . . . . . . . . . . . . . . . . 4.6.7. Producto de enteros . . . . . . . . . . . . . . . . . 4.6.8. Ejemplo de multiplicación de enteros . . . . . . . . 4.7. Punto fijo . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.7.1. Propiedades . . . . . . . . . . . . . . . . . . . . . . 4.7.2. Para codificar a punto fijo un número real negativo . . . . . . . . . . . . . . . . . 4.7.3. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . 4.8. Punto flotante . . . . . . . . . . . . . . . . . . . . . . . . . 4.8.1. Precisión simple de 32 bits . . . . . . . . . . . . . 4.8.2. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . 4.9. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . 5. Introducción al procesador 5.1. Arquitecturas de computadoras . . . . . . . . . . . 5.1.1. von Neumann . . . . . . . . . . . . . . . . . 5.1.2. Arquitectura Hardvard . . . . . . . . . . . . 5.1.3. Grave defecto de los procesadores Harvard . 5.2. CISC y RISC . . . . . . . . . . . . . . . . . . . . . 5.2.1. CISC . . . . . . . . . . . . . . . . . . . . . 5.2.2. RISC . . . . . . . . . . . . . . . . . . . . . 5.2.3. Comparando CISC y RISC . . . . . . . . . 5.3. Segmentación de las instrucciones . . . . . . . . . . 5.3.1. Segmentación von Neumann . . . . . . . . . 5.3.2. Segmentación Harvard . . . . . . . . . . . . 5.4. Instrucciones de 16 y 32 bits . . . . . . . . . . . . . 5.5. El formato VLIW . . . . . . . . . . . . . . . . . . . 5.5.1. Formato de instrucciones . . . . . . . . . . 5.5.2. Arquitectura Harvard-VLIW . . . . . . . . 5.5.3. Unidades operativas . . . . . . . . . . . . . 5.5.4. Limitaciones . . . . . . . . . . . . . . . . . 5.6. Procesador superescalar . . . . . . . . . . . . . . . 5.7. Medidas del rendimiento de un procesador . . . . . 5.7.1. Operaciones en coma flotante por segundo . 5.7.2. Millones de instrucciones por segundo . . . 5.7.3. Multiplicaciones-acumulaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 58 58 59 60 60 61 62 62 62 64 . . . . . . . . . . . . . . . . . . . . . . . . 64 65 68 68 69 70 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 73 73 74 77 77 77 77 78 79 79 80 80 80 81 83 83 85 85 87 87 88 88 6 ÍNDICE GENERAL 6. Familias de DSP 6.1. El objetivo de una arquitectura . . . . . . . . . . . . . . . . . . 6.2. DSP de primera generación (TMS320C10-14) . . . . . . . . . . 6.2.1. Arquitectura Harvard . . . . . . . . . . . . . . . . . . . 6.2.2. La ruta del programa . . . . . . . . . . . . . . . . . . . 6.2.3. La ruta de datos . . . . . . . . . . . . . . . . . . . . . . 6.2.3.1. El circuito arimético y lógico . . . . . . . . . . 6.2.4. Circuito de datos y modos de direccionamiento de datos 6.3. DSP que opera en punto flotante (TMS320C30) . . . . . . . . . 6.3.1. La arquitectura . . . . . . . . . . . . . . . . . . . . . . . 6.3.2. Modos de direccionamiento . . . . . . . . . . . . . . . . 6.4. DSP C6000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.4.1. Arquitectura del núcleo . . . . . . . . . . . . . . . . . . 6.4.2. Instrucciones de palabra larga o VLIW . . . . . . . . . . 6.4.3. Arquitectura completa del C6000 . . . . . . . . . . . . . 6.4.4. Comunicación con la familia C6000 . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 92 94 96 96 97 97 99 100 101 101 102 102 103 104 105 7. El TMS320C6713 113 8. Puertos seriales 115 A. Redes de resistencias 117 A.1. Circuitos serie y paralelo . . . . . . . . . . . . . . . . . . . . . . . 117 A.2. Thevenin-Norton . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 Capítulo 1 Elementos básicos de un sistema DSP 1.1. Objetivos El alumno conocerá y comprenderá los elementos básicos de que se compone un sistema para el procesamiento de señal analógica mediante un sistema con DSP. 1.2. Elementos del procesamiento digital de señales La figura 1.1 ilustra, de manera general, un sistema digital de procesamiento de señales. Este sistema no tiene en realidad mayor propósito que el de convertir cualquier señal analógica en una señal digital, pasarla al microprocesador para que la altere y convierta de vuelta en otra señal analógica: 1. Para empezar, se parte de una fuente de señal, como puede ser un evento social, un fenómeno natural, un fenómeno artificial, etc. 2. La señal que proviene de la fuente debe ser convertida a una forma de onda eléctrica mediante un transductor. 3. Luego, la señal eléctrica se limita en banda con un filtro para limitar la pontecia del ruido que agregó transductor y para que su cumpla el teorema de Nyquist. La señal que sale del filtro se conoce entonces como «señal banda base». 4. Así entonces, la señal banda base será pasada a un dispositivo que la convertirá de analógica a digital. Este dispositivo puede verse en la figura 1.1 como el ADC y entrega, lo que a nuestro interés, son números enteros. Estos números enteros se alimentan directamente al microprocesador. 7 8 CAPÍTULO 1. ELEMENTOS BÁSICOS DE UN SISTEMA DSP Figura 1.1: Sistema para el procesamiento de señales digitales. Las señales digitales son provistas por un sistema ADC. 5. El microprocesador, para realizar la actividad de procesamiento, debe convertir los números enteros en números reales. Para este propósito, hay dos posibles representaciones de números reales, éstas se conocen se como «punto fijo» y «punto flotante». 6. Entonces ocurre el procesamiento de la señal, lo que arroja como resulta más números reales. Elmicroprocesador, antes de externar algún resultado, convierte los datos a números enteros, los cuales son legibles para el convertidor digital a analógico. 7. La señal que entrega el DAC es de tipo eléctrico pero también, es una señal muestreada y retenida. Así que la salida del DAC se alimenta a un filtro paso bajas, el cual, devuelve una señal banda base. 8. La señal banda base que entrega el filtro es alimentada a un transductor de salida de manera que la señal resultante sea legible para algún destinatario. 1.2.1. Objetivo del curso En lo que respecta al capítulo presente y demás capítulos, se describirán las propiedades y comportamientos de cada elemento tecnológico involucrado en el procesamiento digital de señales. Algunos elementos que no se ven en la figura 1.1 tal como el FPGA y diversos sistemas de desarrollo también serán tratados. 1.3. CONVERSIÓN DE UNA SEÑAL ANALÓGICA A DIGITAL 9 Figura 1.2: Ejemplo de señal analógica: se trata de un segmento de una cosenoide de amplitud pico de cuatro. 1.3. Conversión de una señal analógica a digital La señal proveniente de la fuente puede implicar cualquier forma de energía, ya sea óptica, acústica, mecánica, electromagnética, etc. Así entonces se debe convertir la señal de la fuente de información en una señal de tipo eléctrico mediante un transductor. La señal que sale del transductor es lo que llamaremos señal analógica. 1 . 1.3.1. Señal analógica La señal analógica tiene tres características que la definen y que son motivo de discusión: Es aquella que es análoga a algún fenómeno natural, evento social, etc. Está definida para todo instante durante su tiempo de existencia. El conjunto de amplitudes que puede tomar es no numerable y acotado. En general se considera a la señal analógica como una función del tiempo, de tal suerte que se han propuesto diversas formulaciones matemáticas que permiten su descripción. Una de estas formulaciones se da empleando la derivada. Para ilustrar el proceso de conversión a digital se usará un segmento de una señal cosenoidal de amplitud pico de 4V . La figura 1.2 ilustra esta señal. 1 La señal analógica también se conoce como señal «análoga a su fuente de señal» 10 CAPÍTULO 1. ELEMENTOS BÁSICOS DE UN SISTEMA DSP Figura 1.3: Señal muestreada. Los pulsos han sido sombreados para facilitar la visualización de la señal. 1.3.2. Señal muestreada De acuerdo a la figura, el paso siguiente es el muestreo de la señal analógica. Este procedimiento se puede realizar multiplicando la señal analógica con un tren de pulsos. El resultado de este producto es lo que se llama una señal muestrada, la cual se conoce también como señal discreta, es decir: • Solamente se define en intervalos durante su periodo de existencia. • El conjunto de amplitudes que puede tomar es no numerable y acotado. La figura 1.3 ilustra como resulta la señal cosenoidal de prueba. Los pulsos han sido sombreados para facilitar la visualización de la señal. 1.3.3. Señal retenida La señal muestreada ahora debe ser tratada por el circuito retenedor. Este circuito consiste de un switch que permite a un amplificador de muy baja impedancia de salida cargar rápidadmente un capacitor. Una vez cargado el capacitor, el switch se abre y el capacitor se descarga lentamente a través de un segundo amplificador de muy alta impedancia de entrada. Dada la alta impedancia del segundo amplificador, el capacitor puede mantener su voltaje. La figura 1.4 ilustra la señal retenida. 1.3.4. Señal cuantizada El siguiente paso en el proceso de conversión analógico a digital consiste en la «cuantización»», es decir, las muestras que conforman la señal discreta se van 1.3. CONVERSIÓN DE UNA SEÑAL ANALÓGICA A DIGITAL Figura 1.4: Circuito retenedor y señal retenida. Figura 1.5: Señal cuantizada. 11 12 CAPÍTULO 1. ELEMENTOS BÁSICOS DE UN SISTEMA DSP Figura 1.6: Codificación a binario de cada nivel de cuantización a aproximar con un conjunto finito y acotado de niveles de amplitud. La figura 1.5 ilustra la cuantización de la señal discreta. La señal cuantizada ya puede considerarse una señal digital en la cual cada nivel de amplitud es un dígito en algún sistema de numeracón. En el caso de los ocho niveles de cuantización usados en la figura 1.5, se está usando el sistema octal. 1.3.5. Señal digital Cada muestra de la señal cuantizada es una amplitud que se va a codificar a binario, así entonces, una señal digital se puede definir como una representación numérica de una señal discreta mediante un conjunto finito de señales que representan dígitos binarios. La figura 1.6 ilustra la asignación binaria que se hace de cada nivel de cuantización. El proceso de codificación a binario de la señal entrega un tipo de dato numérico conocido como entero binario. Algunos otros circuitos convertidores entregan enteros no negativos. 1.4. SISTEMAS DE DESARROLLO PARA EL PROCESAMIENTO DE SEÑALES13 Figura 1.7: Esquema general de un FPGA. Cada cuadrito en gris oscuro e4s un «bloque lógico» que permite la implementación una función lógica. 1.4. Sistemas de desarrollo para el procesamiento de señales 1.4.1. Field Programmable Gate Array Una FPGA2 es un dispositivo semiconductor que contiene bloques de lógica booleana cuya interconexión y funcionalidad puede ser configurada «in situ» mediante un lenguaje de descripción especializado. La lógica programable puede reproducir desde funciones tan sencillas como las llevadas a cabo por una puerta lógica o un sistema combinacional hasta complejos sistemas en un chip. Desde principios de 2007, hay dos grandes productores de FPGA de propósito general, además de un conjunto de otros competidores quienes se diferencian por ofrecer dispositivos con características únicas. Xilinx es uno de los dos grandes líderes en la fabricación de FPGA. Altera es el otro gran líder. Lattice Semiconductor lanzó al mercado dispositivos FPGA con tecnología de 90nm. Además, Lattice es un proveedor líder en tecnología no volátil, FPGA basadas en tecnología Flash, con productos de 90nm y 130nm. Actel tiene FPGAs basados en tecnología Flash reprogrammable. También ofrece FPGAs que incluyen mezcladores de señales basados en Flash. QuickLogic tiene productos basados en antifusibles (programables una sola vez). Atmel es uno de los fabricantes cuyos productos son reconfigurables 2 del inglés «Field Programmable Gate Array». 14 CAPÍTULO 1. ELEMENTOS BÁSICOS DE UN SISTEMA DSP Figura 1.8: DE2i-150 FPGA Development Kit por Terasic. (el Xilinx XC62xx fue uno de estos, pero no están siendo fabricados actualmente). Ellos se enfocaron en proveer microcontroladores AVR con FPGAs, todo en el mismo encapsulado. Achronix Semiconductor a través de tecnología de Intel de 22 nm, su catálogo incluye dispositivos FPGA de hasta 1.5 GHz 1.4.2. Terasic DE2i-150 FPGA Development Kit La figura 1.8 muestra un DE2i-150 FPGA Development Kit desarrollado por Terasic. Este sistema es una computadora basada en el procesador Atom. Mediante el software Quartus se puede realizar el diseño de un sistema digital. Tal diseño se puede descargar directamente a un FPGA. 1.4.3. Software radio En la dirección electrónica http://www.ea1uro.com/sdr.html se puede encontrar la siguiente información. 1.4. SISTEMAS DE DESARROLLO PARA EL PROCESAMIENTO DE SEÑALES15 Figura 1.9: Equipo de Softare Radio. Este equipo se forma por tres elementos: una computadora de escritorio, un transceptor de amplio rango y software de programación-control. 16 CAPÍTULO 1. ELEMENTOS BÁSICOS DE UN SISTEMA DSP Tradicionalmente los equipos receptores y transceptores de radiocomunicaciones son equipos constituidos por multitud de componentes electrónicos, los cuales forman circuitos sintonizadores, etapas de frecuencia intermedia, detectores, amplificadores de baja frecuencia, es decir, están constituidos por «hardware». Posteriormente, en los años 1980ťs y 1990ťs se introdujeron microprocesadores en estos equipos para el control de funciones internas usando meramente botones en lugar de perillas y para añadir nuevas prestaciones como lo son las pantallas informativas. También se introdujo la posibilidad de controlar los equipos de radio desde un ordenador, añadiendo al equipo de radio puertos de comunicación. En estos casos, y usando el software adecuado, es posible controlar desde el ordenador numerosas funciones del equipo de radio, igual o mejor que desde los controles del propio equipo. También en la década de los 1990ťs comenzó la introducción en los modernos equipos de radio de los chips DSP o «Procesadores Digitales de Señal», los cuales permiten mediante técnicas digitales realizar filtros de paso de banda y de supresión de ruidos, entre otras posibilidades. Los DSP son muy eficaces y mejor que los realizados tradicionalmente con circuitos analógicos. Como resultado de la introducción de microprocesadores surge el SDR o «Software Defined Radio»3 . Éste es un sistema de radiocomunicaciones donde los componentes típicamente implementados en hardware4 son implementados en software, utilizando una computadora personal u otros dispositivos de computación embebida. Aunque el concepto de SDR no es nuevo, la reciente evolución de la circuitería digital ha hecho posible desde el punto de vista práctico muchos de los procesos que tiempo atrás eran solamente posibles desde el punto de vista teórico. Un SDR básico puede estar conformado por una computadora interna, equipada con una tarjeta de sonido u otro conversor analógico a digital, precedido de algún adaptador de radiofrecuencia (RF). Una gran parte del procesamiento de las señales se realiza en procesadores de propósito general, en lugar de utilizar hardware de propósito específico. Esta configuración permite cambiar los protocolos y formas de onda simplemente cambiando el software. El SDR de la figura 1.9 está formado por una computadora embebida y tarjetas dependientes que realizan funciones de modulación para llevar a las señales sintetizadas a la respectiva banda de frecuencias. Los SDR son de gran utilidad tanto en los servicios de telefonía celular como en el ámbito militar, pues en ambos se manejan varios protocolos en tiempo real, que cambian a necesidad casi constantemente. A largo plazo, se prevé que los radios definidos por software se conviertan en la tecnología dominante en radiocomunicaciones, pues es la vía que permite llegar a la radio cognitiva. 3 En castellano puede traducirse como o «Radio Definida por Software» filtros, amplificadores, moduladores/demoduladores, detectores, etc. 4 Mezcladores, 1.5. ANTECEDENTES 1.5. 17 Antecedentes Para el estudio de las tecnologías aplicadas en el procesamiento digital de señales se requiere del conocimiento de varias asignaturas como son: Diseño digital Sistemas de Comunicaciones Analógicas Sistemas de Comunicaciones Digitales Filtros digitales Seguramente el lector podrá identificar los nombres aún cuando hayan sido solamente capítulos o temarios completos en sus plan de estudios. 18 CAPÍTULO 1. ELEMENTOS BÁSICOS DE UN SISTEMA DSP Capítulo 2 Conversión digital a analógica 2.1. Conversión digital a analógico Un conversor de señal digital a analógica o DAC1 es un dispositivo para convertir datos binarios en señales de corriente o de tensión analógica. El DAC se utiliza profundamente en los reproductores de discos compactos, en los reproductores de sonido y de cintas de vídeo digitales y en los equipos de procesamiento de señales digitales de sonido y vídeo. La mayoría de los DAC utilizan alguna forma de red resistiva. Los datos digitales se aplican a los resitores en grupos de bits. Las resistencias varían en proporciones definidas y el flujo de corriente de cada uno está directamente relacionado con el valor binario del bit recibido. Un circuito que también es empleado para la conversión digital a analógica es el modulador de ancho de pulso ó PWM2 . Para demostrar las ecuaciones de las secciones siguientes, el lector deberá conocer: El cálculo de resistencias en serie (Apéndice A). El cálculo de resistencias en paralelo (Apéndice A). El teorema de Thevenin (Apéndice A). El teorema de Norton (Apéndice A). Fuentes equivalente de voltaje y de corriente (Apéndice A). 19 20 CAPÍTULO 2. CONVERSIÓN DIGITAL A ANALÓGICA Figura 2.1: DAC resistivo. 2.2. Convertirdor digital a analógico por red R Este tipo de circuito se ilustra en la figura 2.1. El circuito suele completarse con un amplificador operacional3 . La característica principal de este DAC es la relación entre las resistencias que lo forman: en forma sucesiva, cada resistencia es la mitad de la anterior. Tal arreglo es de difícil implementación debido a la impresición del proceso de fabricación. Así entonce no se utiliza en circuitos comerciales. 2.2.1. Ecuación característica La ecuación que define el voltaje de salida del DAC en la figura 2.1 es: VDAC = 1 B0 + 2B1 + 4B2 + . . . + 2N −1 BN −1 Vent 2N − 1 (2.1) En donde: B0 , B1, . . . BN −1 son los terminales en los cuales se colocan las señales binarias. Estas señales están normalizadas a «1» y «0». Vent es el voltaje que se alimenta a cada terminal. B0 es el bit menos significativo. BN −1 es el bit más significativo. N es el número de bits. 1 del inglés «digital to analog converter». inglés «Pulse Width Modulation». 3 El amplificador operacional es un circuito con una impedancia de entrada medida en decenas y cientos de mega ohms, su impedancia de salida es algunos cientos de ohms e incluso de alagunas decenas de ohms, en tanto que su ganancia es de algunas decenas de miles. 2 del 2.3. CONVERTIRDOR DIGITAL A ANALÓGICO POR RED R2R 2.2.2. 21 Resolución La resolución del DAC R está dada por el voltaje más pequeño que puede sintetizarse. Este voltaje se calcula alimentando el voltaje de entrada Vent al terminal B0 y dejando los demás terminales en cero voltios: Res = 1 Vent 2N − 1 (2.2) Esta resolución suele expresar en forma normalizada B0 = 1 [V ] en la forma siguiente: Res = 2.2.3. 2N 1 −1 (2.3) Ganancia La ganancia se calcula alimentando el mismo voltaje de entrada Vent en los terminales B0 , B1, . . . BN −1 . Así entonces resulta que la ganancia es: VDAC =1 Vent 2.2.4. (2.4) Ejemplo: DAC de 4 bits Suponga un DAC de 4 bits al que se alimenta la palabra binaria «0101». El voltaje de operación es de Vent = 5V . Calcule entonces el voltaje a la salida del DAC Aplicando la fórmula 2.1 se tiene que: VDAC = 2.3. 1 [1 + 0 + 4 + 0] × 5 [V ] = 1,667 [V ] 15 (2.5) Convertirdor digital a analógico por red R2R Este tipo de circuito se ilustra en la figura 2.2. El circuito suele completarse con un amplificador operacional. La característica principal de este DAC es que se compone de resistencias que solamente pueden tomar dos valores posibles, R y2R. Tal arreglo es fácilmente implementable por lo que suele utilizarse en circuitos comerciales. 2.3.1. Ecuación característica La ecuación que define el voltaje de salida del DAC en la figura 2.1 es: VDAC = En donde: 1 B0 + 2B1 + 4B2 + . . . + 2N −1 BN −1 Vent N 2 (2.6) 22 CAPÍTULO 2. CONVERSIÓN DIGITAL A ANALÓGICA Figura 2.2: DAC R2R B0 , B1, . . . BN −1 son los terminales en los cuales se colocan las señales binarias. Vent es el voltaje que se alimenta a cada terminal. B0 es el bit menos significativo. BN −1 es el bit más significativo. N es el número de bits. 2.3.2. Resolución La resolución del DAC R está dada por el voltaje más pequeño que puede sintetizarse. Este voltaje se calcula alimentando el voltaje de entrada Vent al terminal B0 y dejando los demás terminales en cero voltios: 1 Vent (2.7) 2N Esta resolución suele expresar en forma normalizada en la forma siguiente Res = Res = 2.3.3. 1 2N (2.8) Ganancia La ganancia se calcula alimentando el mismo voltaje de entrada Vent en los terminales B0 , B1, . . . BN −1 . Así entonces resulta que la ganancia es: VDAC 1 =1− N Vent 2 (2.9) 2.4. FILTRO RECONSTRUCTOR 23 Figura 2.3: Proceso de reconstrucción de la señal original a partir de la señal entregada por el DAC. 2.3.4. Ejemplo: DAC R2R de 4 bits Suponga un DAC R2R de 4 bits al que se alimenta la palabra binaria «0101». El voltaje de operación es de Vent = 5V . Calcule entonces el voltaje a la salida del DAC Aplicando la fórmula 2.6 se tiene que: VDAC = 2.4. 1 [1 + 0 + 4 + 0] × 5 [V ] = 1,5625 [V ] 16 (2.10) Filtro reconstructor La señal que resulta de un circuito DAC contruído a base de redes de resistencias tiene forma escalonada tal como ilustra el gráfico superior izqquierdo en la figura 2.3. Para sintetizar una curva suave se aplica un filtro, el cual genera la señal deseada. Un filtro reconstructor debe ser uno de los siguientes. Un filtro ideal. Un filtro coseno elevado. Un filtro real, ya sea clásico o moderno. 24 CAPÍTULO 2. CONVERSIÓN DIGITAL A ANALÓGICA Para comprender completamente el comportamiento del mencionado filtro se realiza un estudio tanto en el domino del tiempo como en el dominio de la frecuencia. 2.4.1. La señal del DAC El estudio se inicia definiendo matemáticamente la señal que entrega el DAC como el producto de la señal original con un tren de pulsos, es decir: ϕs (t) = ϕ (t) ∞ X Gτ (t − nτs ) (2.11) n=−∞ donde: ϕ (t) es la señal original y que se pretende recobrar. Gτ (t) es un pulso. Un tre de pulsos se sintetiza generando pulsos desplazados y sumándolos. τs es el periodo de muestreo. Dado que en cada instante de muestreo solamente interesa la amplitud de la señal original en tal instante, es posible escribir la ecuación 2.11 en la forma siguiente. ϕs (t) = ∞ X ϕ (nτs ) Gτ (t − nτs ) (2.12) n=−∞ Un bosquejo del espectro correspondiente a la ecuación 2.12 puede verse en el gráfico superior izquierdo de la figura 2.3. 2.4.2. El filtro reconstructor Dado el espectro de la señal entregada por el DAC, gráfico superior derecho de la figura 2.3, es muy notorio que el tipo de filtro requerido para recobrar la señal original es un «paso bajas ideal» cuya frecuencia de corte es, precisamente, la frecuencia máxima contenida en la señal. En gráfico central derecho de la figura 2.3 ilustra la respuesta en frecuencia del mencionado filtro ideal. Así entonces, la ecuación que describe el respectivo espectro de este filtro es: h ($) = G2$C ($) (2.13) Ahora se calcula la respectiva respuesta al impulso del filtro ideal. Esto se hace mediante la Transformada Inversa de Fourier: 2$C 2$C h (t) = sinc t (2.14) 2π 2 Simplificando la ecuación 2.14 se tiene: 2.4. FILTRO RECONSTRUCTOR 25 $C sinc ($C t) (2.15) π El gráfico central izquierdo de la figura 2.3 ilustra la respuesta a impulso de tipo sinc de un filtro paso-bajas ideal. h (t) = 2.4.3. Reconstrucción La reconstrucción se realiza aplicando el filtro ideal a la señal entregada por el DAC. Espectralmente, es suficiente un producto de funciones. Ahora bien, lo que en frecuencia es un producto, en el dominio del tiempo es una convolución, es decir: ϕ (t) = h (t) ∗ ϕs (t) (2.16) Sustituyendo las ecuaciones 2.15 y 2.12 en la ecuación 2.16 se logra: ϕ (t) = ∞ X $C sinc ($C t) ∗ ϕ (nτs ) Gτ (t − nτs ) π n=−∞ (2.17) El respectivo proceso de solución es: ϕ (t) = $C π = P∞ n=−∞ ϕ (nτs ) sinc ($C t) ∗ Gτ (t − nτs ) P∞ $C n=−∞ π A ϕ (nτs ) sinc [$C (t − nτs )] En conclusión se tiene una función denominada «función interpolante». ∞ X $C ϕ (t) = A ϕ (nτs ) sinc [$C (t − nτs )] π n=−∞ (2.18) La función 2.18 se denomina «interpolante» dado que la señal original se define como una suma de funciones «sinc» ponderadas y desplazadas tal como puede apreciarse en el gráfico inferior izquierdo de la figura 2.3. 2.4.4. Filtro real y la Interferencia intersimbólica Un filtro ideal tiene una respuesta al impulso en forma de la función «sinc». Un filtro real tiene una respuesta al impulso también del tipo «sinc», no obstante con variaciones en su amplitud y duración. La figura 2.4 ilustra la respuesta en frecuencia de un filtro del tipo Butterworth así como sus correspondientes respuestas al impulso. La consecuencia de componer una función interpolante con la respuesta al impulso de un filtro real ocasiona ondulaciones de alta frecuencia en la señal reconstruída. En el gráfico inferior izquierdo de la figura 2.5, en un recuadro verde, puede observarse dos respuestas al impulso que deben sumarse en un isntante en particular. Como se observa la suma no aproxima a la función original. 26 CAPÍTULO 2. CONVERSIÓN DIGITAL A ANALÓGICA Figura 2.4: Respuestas en frecuencia y sus correspondientes respuestas a impulso. 2.4. FILTRO RECONSTRUCTOR 27 Figura 2.5: Reconstrucción de la señal original mediante un filtro real del tipo Butterworth. 28 CAPÍTULO 2. CONVERSIÓN DIGITAL A ANALÓGICA Figura 2.6: Filtro coseno elevado. 2.4.5. Filtro Coseno Elevado Un filtro de coseno alzado es un tipo de filtro electrónico, utilizado frecuentemente en sistemas de telecomunicaciones debido a que es capaz de reducir al mínimo la interferencia entre símbolos (ISI). Se llama así porque la parte no nula del espectro frecuencial es un coseno que, en su forma más simple (α = 1), se encuentra «alzado» para situarse por encima del eje f (horizontal). El filtro de coseno alzado es una implementación de un filtro paso bajo de 1 Nyquist. Con lo cual, el espectro tendrá simetría impar en 2T , donde T es el período del sistema de comunicaciones. Su descripciónn visual puede verse en la figura 2.6 en tanto que su descripción en el dominio de la frecuencia es una función definida a trozos, dada por: G2(1−α)wC = 1 cos2 h π 4α$C i (|$| − $C ) 0 0 ≤ |$| ≤ (1 − α) $C (1 − α) $C < |$| < (1 + α) $C (1 + α) $C < |$| (2.19) La respectiva respuesta al impulso es una función muy parecida a la sinc. 2.5. CONVERTIDOR DIGITAL A ANALÓGICO POR ANCHO DE PULSO29 Figura 2.7: Una señal cuadrada de amplitud acotda mostrando el ciclo de trabajo. Fuente http://es.wikipedia.org/wiki/Modulaci %C3 %B3n_por_ancho_de_pulsos. En cualquier caso, la función coseno elevado es un filtro que permite la reconstrucción de la señal original sin distorsiones. Valores convenientes para α pueden encontrarse en el intervalo abierto α = (0, 1). 2.5. Convertidor digital a analógico por ancho de pulso La modulación por ancho de pulsos, también conocida como PWM, es una técnica en la que se modifica el ciclo de trabajo de una señal periódica típicamente de forma cuadrada, ya sea para transmitir información a través de un canal de comunicaciones o para controlar la cantidad de energía que se envía a una carga. El ciclo de trabajo de una señal periódica es el ancho relativo de su parte positiva en relación con el período. Expresado matemáticamente: D= τ τs (2.20) Donde: D es el ciclo de trabajo. τ es el diempo en el cual la función es positiva (ancho de pulso). τs es el periodo de la función. La figura 2.7 ilustra gráficamente la relación entre los términos de la ecuación 2.20. Los principios sobre los cuales opera la conversión digital a analógico se muestran en la figura . Estos principios pueden resumirse en dos ideas: El ciclo de trabajo es proporcional a la amplitud de una muestra de la señal de entrada. 30 CAPÍTULO 2. CONVERSIÓN DIGITAL A ANALÓGICA Figura 2.8: DAC basado en un generador PWM. En este sistema, el criterio de Nyquist ya no es condición mínima para la recuperación de la señal. Al alimentar la señal PWM a un filtro, éste entrega un voltaje proporcional al ciclo de trabajo. Debe considerarse que en el caso de un sistema basado en PWM para la conversión digital a analógico, el criterio de Nyquist sobre el muestreo ya no es condición suficiente para la recuperación de la señal. Las aplicaciones de la modulación por ancho de pulso son: Conversión digital a analógica. Transmisión de información de un sensor a un microprocesador Transmisión de información de control a un actuador4 . Existen dos tipos de circuitos que permiten realizar la modulación por ancho de pulso, los moduladores digitales y los moduladores analógicos. 2.5.1. Modulador digital de ancho de pulso El modulador digital de ancho de pulso, cuyo diagrama puede verse en la figura 2.9, funciona tal como se describe a continuación. El contador corre libremente realizando su operación de cero a algún valor dado por el número de bits que lo forman. El Registro «Duty cycle» contiene un valor particular. El comparador entregará un «uno» lógico mientras el valor del contador sea inferior al valor almacenado en el registro «Duty cycle». El comparador entregará un «cero» lógico una vez que el valor del contador alcance al valor almacenado en el registro «Duty cycle». 4 Los servo motores analógicos reciben información por una señal PWM. 2.5. CONVERTIDOR DIGITAL A ANALÓGICO POR ANCHO DE PULSO31 Figura 2.9: Circuito digital para la modulación por ancho de pulso. Cuando el contador desborda su conteo, envía una señal al registro «Duty cycle» para cargar un nuevo valor de «Duty cycle». El valor del registro «Duty cycle» se puede precargar en cualquier instante empleado el registro «Data sample». Sin este segundo registro, el circuito tendría un comportamiento extraño. El valor que se carga en el registro «Data sample» es una muestra de voltaje de un mensaje de entrada 2.5.2. Modulador analógico de ancho de pulso La figura 2.10 muestra un circuito modulador de ancho de pulso mediante un comparador. La señal de entrada se compara en amplitud con una señal de referencia diente de sierra. Mientras la señal de entrada sea mayor en amplitud a la señal diente de sierra, el comparador entregará un voltaje positivo. Una vez que la señal diente de sierra supera en amplitud a la señal de entrada, la salida del comparador caerá a cero voltios. La figura ilustra este proceso de comparación. 2.5.3. El espectro de la señal PWM Previamente, recuerde que el espectro de una señal diente de sierra tiene una componente fundamental, armónicos pares e impares y en este caso tiene 32 CAPÍTULO 2. CONVERSIÓN DIGITAL A ANALÓGICA Figura 2.10: Modulador analógico de ancho de pulso. La señal de entrada debe tener una componente de directa. Figura 2.11: Señal diente de sierra con simetría impar. una componente de directa tal como indica la ecuación siguiente. La figura 2.11 ilustra la respectiva señal. v (t) = V 1 1 + 2 π 1 1 sen ($s t) − sen (2$s t) + sen (3$s t) − . . . 2 3 (2.21) Ahora bien , para el cálculo del espectro, considere incialmente, que se tiene el circuito PWM de la figura 2.10. En este circuito se tienen los siguientes datos de entrada. El mensaje tiene una componente espectra máxima de fC hertz. La frecuencia del diente de sierra fS hertz. Así, el espectro puede definirse como la suma de los espectros de varias señales tal como indica el siguiente teorema: Teorema 2.1 El especctro de la señal PWM puede expresarse como la combinación lineal de varios espectros: El espectro del mensaje. Por cada componente senoidal del mensaje fmsj;i se tiene el espectro de un diente de sierra cuya frecuencia fundamental es de f0 = fmsj;i y además está desplazado a una frecuencia de fS . 2.5. CONVERTIDOR DIGITAL A ANALÓGICO POR ANCHO DE PULSO33 El lector podrá observar que el teorema 2.1 no hace mención de componentes espectrales debidas a no linealidades, si es que las hay presentes en la modulación PWM. Para ejemplificar lo mencionado en el teorema 2.1, la figura 2.12 ilustra un modulador de ancho de pulso cuyo mensaje es un tono puro de 1kHz y cuya portadora es un diente de sierra a 20kHz. La figura 2.13 ilustra otro modulador de ancho de pulso cuyo mensaje es un tono puro de 2kHz y cuya respectiva portadora es un diente de sierra también a 20kHz. 2.5.4. Interferencia intersimbólica Ocurre interferencia intersimbólica cuando el espectro del diente de sierra, en la señal PWM, interfiere al espectro del mensaje. Así, el diseñador de un DAC basado en PWM deberá considerar una frecuencia diente de sierra suficientemente alejada del espectro del mensaje. Una recomendación podría ser fS ≥ 10fC . 2.5.5. Filtro reconstructor Una forma simple de lograr demodular el mensaje de una señal PWM es mediante un filtro paso bajas cuya frecuencia de corte debe ser igual a la frecuencia máxima contenida en el mensaje. Este filtro puede ser: De forma teórica, un filtro ideal. Un filtro coseno elevado. Un circuito RC. Un filtro moderno como el Butterworth o el TChebyshev. En cuanto al filtro moderno, el espectro de la figura 2.12 y el espectro de la figura 2.13 permiten visualizar que la frecuencia de corte para el filtro ideal debe coincidir con la frecuencia máxima del mensaje. En lo que respecta a un circuito RC, la frecuencia de corte del filtro puede calcularse por la fórmula siguiente fc = 1 2πRC (2.22) donde: fc es la frecuencia máxima del mensaje. En cuanto a un filtro moderno, existe software en la internet que facilita el diseño de estos filtros.5 Para ejemplificar, el circuito de la figura 2.14 tiene una fuente de señal basada en dos tonos a 1kHz y a 3kHz. La portadora es un diente de sierra con frecuencia 5 Un ejemplo de estos programas de computadora es «filterlab». 34 CAPÍTULO 2. CONVERSIÓN DIGITAL A ANALÓGICA Figura 2.12: Circuito modulador PWM y espectro para un mensaje de tono puro de 1kHz y señal portadora de 20kHz. El circuito fue capturado y simulado en Multisim, versión estudiante. 2.5. CONVERTIDOR DIGITAL A ANALÓGICO POR ANCHO DE PULSO35 Figura 2.13: Circuito modulador PWM y espectro para un mensaje de tono puro de 2kHz y señal portadora de 20kHz. El circuito fue capturado y simulado en Multisim, versión estudiante. 36 CAPÍTULO 2. CONVERSIÓN DIGITAL A ANALÓGICA Figura 2.14: Circuito para modular y demodular señales PWM. El modulador PWM se alimenta con dos tonos a 1kHz y 3kHz. La portadora es una señal trinagular de 20kHz. El filtro es del tipo Butterworth con un orden de 3 y frecuencia de corte en 3kHz. El gráfico central muestra el espectro a la salida del modulador. El gŕafico inferior es un comparativo entre la señal de entrada (rojo) y la señal de salida (azul). El circuito fue capturado y simulado en Multisim, versión estudiante. 2.6. EJERCICIOS 37 de 20kHz. El espectro de la señal que entrega el modulador puede verse en la figura. El filtro, diseñado en MATLAB, es del tipo Butterworth con un orden de 3 y frecuencia de corte en 3kHz. El gráfico central muestra el espectro a la salida del modulador. El gŕafico inferior es un comparativo entre la señal de entrada (rojo) y la señal de salida (azul). En cuanto a la la reconstrucción de la señal, mostrada en el gŕafico inferior y trazo azul de la figura 2.14, puede notarse cierta distorsión. Esta distorsión se debe a que el espectro del diente de sierra ocasiona interferencia intersimbólica con el espectro del mensaje. 2.6. Ejercicios 1. Diseñe un DAC R a 8 bits usando una resistencia base de 128kΩ. a) Reporte el diagrama del circuito indicando los valores de las resistencias. b) Si se alimentan los terminales como sigue B0 = B2 = B4 = 5V , dejando los demás terminales a cero voltios, calcule el voltaje de salida. 2. Dado un DAC R de 16 bits, calcule la resolución normalizada. 3. Diseñe un DAC R2R a 8 bits usando una resistencia base de 10kΩ. a) Reporte el diagrama del circuito indicando los valores de las resistencias. b) Si se alimentan los terminales como sigue B0 = B2 = B4 = 5V , dejando los demás terminales a cero voltios, calcule el voltaje de salida. 4. Dado un DAC R2R de 16 bits, calcule la resolución normalizada. 5. Considerando un mensaje con dos componentes espectrales y cuya ecuación se indica a continuación, calcule el espectro de la señal PWM si la frecuencia del diente de sierra es de 20KHz. vm (t) = sen (2π1000t) + 0,5sen (2π1600t) 38 CAPÍTULO 2. CONVERSIÓN DIGITAL A ANALÓGICA Capítulo 3 Conversión analógica a digital El proceso de conversión de análogo a digital, descrito normalmente, es una formulación que permite su descripción matemática y en el dominio de la frecuencia. Tal formulación implica los pasos siguientes: Muestreo. Retención. Cuantización. Codificación a binario. El proceso que se describirá a continuación corresponde a la arquitectura de un circuito funcional. La arquitectura de tal sistema incluye las siguientes etapas. Transductor de entrada. Filtrado antialiasing. Muestreo-retención. Codificación a binario (cuantización y retención). La figura 3.1 ilustra el sistema que será tratado. 3.1. 3.1.1. Proceso de conversión analógico a digital Fuente de información La fuente de información puede ser cualquier fenómeno natural, fenómeno artificial o evento social. Tal fuente debe emitir alguna forma de energía, la cual para su procesamiento debe ser convertida a una forma de onda eléctrica. 39 40 CAPÍTULO 3. CONVERSIÓN ANALÓGICA A DIGITAL Figura 3.1: Arquitectura de un sistema de conversión analógico a digital. 3.1.2. Transductor de entrada El transductor es un dispositivo que transforma una forma de energía en otra. Algunos transductores son: Conversión de luz a energía eléctrica: fotoresistencia, foto transistor, CCD. Conversión de temperatura energía eléctrica: termistor, termopar. Conversión de presión a energía eléctrica: galga. Conversión de sonido a energía eléctrica: micrófono. 3.1.3. Filtro antialiasing El filtro antialiasing tiene dos funciones importantes: Reducir la potencia del ruido que el transductor de entrada agrega. Limitar el ancho de banda de la señal que entrega el transductor a una frecuencia máxima en particular. La razón de limitar el ancho de banda de la señal que entrega el transductor implica el cumplimiento del criterio de Nyquist para el muestreo de señales. Así entonces, la señal que entrega el filtro es conocida como «señal banda base». El filtro antialing es un paso-bajas frecuencias y cualquier teoría puede ser empleada para su diseño. 3.1.4. Muestreador-retenedor El circuito Muestreador-retenedor, como su nombre lo indica, captura el voltaje de la señal, en los instantes de muestreo, cargando y descargando un capacitor. La razón de tomar muestras y mantenerlas es para dar tiempo al circuito ADC para realizar su operación. El circuito básico que realiza el muestreorentención está ilustrado en la figura 3.1 y su operación es bastante simple: 3.2. MUESTREADOR 41 Figura 3.2: Circuito muestreador sencillo y basado en TBJ. El circuito se simuló en Multisim, versión estudiante. Cuando el interruptor se cierra, el capacitor se carga a través de la resistencia del amplificador de entrada. Como esta resistencia es pequeña, el capacitor se carga rápidamente. Una vez que el capacitor de ha cargado, el interruptor se abre. Entonces, el capacitor se descarga muy lentamente a través de la resistencia del amplificador de salida. Como esta resistencia es muy grande, el voltaje del capacitor se mantiene. 3.1.5. Circuito ADC El circuito «convertidor análogo a digital» ó ADC tiene la función de codificar a binario un voltaje colocado en su terminal de entrada. Así entonces, el ADC, a pesar de su nombre, solamente incluye las dos etapas finales, cuantización y codificación, del proceso de conversión de señal analógica a digital. En el mercado es posible encontrar circuitos que realizan el proceso de muestreo, pero el proceso de retención implica un circuito que debe ser implementado con un capacitor y amplificadores. Existen varias versiones de los circuitos ADC, dos de estas versiones se denominan «ADC de aproximanciones sucesivas» y «ADC tipo flash». Ambas versiones serán revisadas a continuación. 3.2. Muestreador El circuito de la figura 3.2 ilustra un muestreador-retenedor fácil de armar para un estudiante de laboratorio. Este circuito, basado en un transisor, es un 42 CAPÍTULO 3. CONVERSIÓN ANALÓGICA A DIGITAL mero amplificador negador qwue opera en corte y saturación. Su operación se resume a continuación: La fuente del mensaje es también la fuente de polarización del TBJ. Esta fuente de señal debe ser positiva aunque puede llegar a tomar valores de cero voltios. Esta señal de polarización debe estar en el intervalo de cero a cinco voltios. Una señal de reloj, conectada a la base del transistor marca los instantes de muestreo. Esta señal está en el intervalo de cero a cinco voltios. Cuando el voltaje del reloj está en alto (5 voltios) el transistor se habilita entrando en saturación y es en este momento, que puede observarse un voltaje bajo en el colector: 0.2 voltios. Cuando el voltaje del reloj está bajo (0 voltios), el transistor entra en corte, es decir, se apaga. Un transistor apagado no permite la circulación de corriente por lo que cual el voltaje en el colector es de cinco voltios. El valor de la resistencia en la base se calcula a partir del voltaje que se le suministra y de la potencia que debe disipar. Así, un buen valor par ala resistencia de base es: V2 (3.1) P Suponiendo que el voltaje de polarización sea 5V y la potencia máxima disipada sea de 1/2W , el valor de la resistencia deberťia mayor a 50Ω. RB = 3.3. ADC de aproximaciones sucecivas El circuito ADC de aproximaciones sucesivas1 funciona generando un voltaje que se puede equiparar con el voltaje de la muestra de entrada. El funcionamiento general es como se indica a continuación y queda ilustrado en la figura 3.3. 1. En un instante se tiene una muestra de la señal de entrada, es decir, se tiene un voltaje. En este mismo instante ocurre el pulso de «inicio» de conversión: esquina inferior izquierda de la figura 3.3. 2. Cuando el pulso de «inicio» se levanta: a) Establece a ceros el contador. Así que la salida del DAC es cero. b) b) El pulso de «inicio» se niega por lo que impide el paso de la señal de reloj por medio de una compuerta AND. 3. Una vez que el pulso de «inicio» cae, ocurre que el comparador entregará un uno lógico, en tanto que la línea de «start» tendrá también uno lógico. En consecuencia, la señal de reloj podrá pasar al contador y moverlo. 1 También se suele denominar «ADC de rampa digital». 3.3. ADC DE APROXIMACIONES SUCECIVAS 43 Figura 3.3: Diagrama del circuito «Convertidor análogo a digital» ó ADC. Fuente http://hyperphysics.phy-astr.gsu.edu/hbasees/electronic/adc.html. 4. Mientras los pulsos de reloj muevan al contador, el voltaje a la salida del DAC crece. 5. Una vez que la salida de voltaje del DAC equipara o supera al voltaje de entrada Vs , el comparador entrega un cero lógico y bloquea los pulsos de reloj. 6. Nótese que el instante en el cual se termina la conversión queda indicado por la señal EOC. Si el lector observa bien, el circuito descrito en la figura 3.3 solamente funcionará cuando el voltaje de entrada Vs se mantiene constante. 3.3.1. La resolución La resolución de este convertidor es igual a la resolución del DAC, el cual usa el arreglo de resistencias R2R, es decir: RADC = 3.3.2. 1 2N (3.2) Desventajas Este convertidor presenta la siguiente desventaja: el tiempo de conversión es variable: puede ir desde cero hasta 2N ciclos en donde N es el número de bits del contador. 44 CAPÍTULO 3. CONVERSIÓN ANALÓGICA A DIGITAL Figura 3.4: Circuito convertidor análogo a digital de 2 bits. 3.4. ADC tipo flash La figura 3.4 ilustra un circuito ADC del tipo flash. La denominación «flash» es debida a que el circuito no requiere ciclos para realizar la conversión. Este tipo de convertidores es sumamente rápido y es empleado en cámaras de video profesionales, equipo de instrumentación de alta frecuencia y demás. El ADC tipo flash está compuesto por tres circuitos: La referencia de cuantificación formada por un arreglo de resistencias en serie. El circuito cuantificador formado por un arreglo de comparadores de voltaje. El codificador de prioridad. Para poder entender la tabla lógica de la figura3.4, considérese lo siguiente: cuando el voltaje de entrada es menor a un voltaje de referencia, el comparador entregará un voltaje positivo. En el otro caso, cuando el voltaje de entrada es mayor que el voltaje de referencia, el comparador entregará cero voltios. 3.4.1. La resolución Para el ADC flash, la resolución se define como el voltaje mínimo que puede ser codificado. Este voltaje mínimo se puede calcular de forma aproximada como: Res = VCC 2N donde: Res es la resolución o el voltaje mínimo que puede ser convertido. (3.3) 3.5. EL ADC TIPO DELTA 45 Figura 3.5: Convertidor ADC del tipo delta: cada muestra de la señal analógica se aproxima incrementado o decrementado el contador de una unidad. VCC es el voltaje de referencia que alimenta al arreglo de resistencias (no necesariamente el de polarización). N es el número de bits (también es el número de resistencias). Para un circuito comercial, es mejor consultar su hoja de datos para calcular de manera particular su resolución. 3.4.2. Desventajas La desventaja de este circuito está en la cantidad de transistores que deben construirse en el integrado. En consecuencia se requiere de mayor escala de integración y por tanto de mayor costo. 3.5. El ADC tipo delta El ADC tipo delta es una variante del convertidor de aproximaciones sucesivas. La variante en cuanto a su operación, implica que solamente requiere de un ciclo de reloj para realizar la conversión. La idea en la cual se basa este convertidor consiste en que la muestra que sigue tiene una muy pequeña diferencia de voltaje respecto de la muestra que actualmente se convierte. De esta forma, el contador interno del DAC solamente debe incrementar o decrementar su conteo en «uno» en cada ciclo. 46 CAPÍTULO 3. CONVERSIÓN ANALÓGICA A DIGITAL Figura 3.6: Diagramas de tiempo de la señal de entrada (rojo) y de la señal a la salida del DAC (azul): la gráfica tiene un offset de -2V. La figura 3.5 muestra este convertidor. Nótese que el contador tiene dos entradas de reloj: una entrada (up) para incrementar su conteo y otra entrada (down) para decrementarlo. Así, si el comparador superior detecta la condición VS < Vdac , se permitie el paso de la señal de reloj al terminal «up». En un segundo caso, si el comparador inferior detecta la condición VS > Vdac , se permite el paso de la señal de reloj al terminal «down». El terminal «inicio» reinicia al contador a ceros. La figura 3.6 muestra la curva de salida (azul) del DAC siguiendo a una señal de entrada no muestreada. La principal ventaja de este circuito consiste en que requiere de mediana escala de integración, por tanto su costo es moderado. En cuanto a su velocidad, estos circuitos pueden alcanzar velocidades de hasta 10MHz en sus versiones más simples. La desventaja de este dispositivo está un capacidad limitada para rastrear la señal de entrada dado que el cambio de voltaje en el DAC corresponde a su resolución. Una desventaja adicional de este tipo de ADC está en su periodo de estabilización luego del arranque. Tal periodo puede requerir una cantidad muy grande de ciclos. Para ejemplificar un caso concreto considérense los pasos siguientes: 1. En un instante se tiene una muestra de la señal de entrada, es decir, se tiene un voltaje. En este mismo instante ocurre el pulso de «inicio» de conversión. 2. Cuando el pulso de «inicio» se levanta: a) Establece a ceros el contador. Así que la salida del DAC es cero. b) El pulso de «inicio» se niega por lo que impide el paso de la señal de reloj por medio de una compuerta AND. 3. Una vez que el pulso de «inicio» cae, ocurre que: a) La línea de «inicio», al negarse, permitirá el paso de la señal de reloj por la compuerta AND hacia el multiplexor. b) El comparador inferior entregará un «uno» lógico, permitiendo el paso de la señal de reloj al contador. 3.6. EJERCICIOS 47 c) El comparador superior entregará un «cero» lógico con lo cual el multiplexor alimentará un «uno» lógico al terminal «down» permitiendo el conteo hacia arriba. 4. Mientras los pulsos de reloj muevan al contador, el voltaje a la salida del DAC crece. 5. Una vez que la salida de voltaje del DAC equipara o supera al voltaje de entrada V_{s} , el comparador entrega un cero lógico y bloquea los pulsos de reloj. 3.6. Ejercicios 1. Para un ADC tipo flash de 12 bits, calcule la resolución del convertidor. 2. Diseñe el circuito codificador para un ADC tipo «flash» de dos bits. 3. Mejore el diseño del ADC de aproximaciones sucesivas de 8 bits para que la conversión la realice en 8 ciclos en vez de 256 ciclos. 4. Mejore el diseño de ADC tipo delta para que el rastreo de la señal implique cambios mayores a la resolución del DAC. 48 CAPÍTULO 3. CONVERSIÓN ANALÓGICA A DIGITAL Capítulo 4 Formatos numéricos 4.1. Sistemas de numeración Decimal: 0...9 Binario: 0,1 Hexadecimal: 0,..,9,A,B,C,D,E,F Octal: 0..7 4.1.1. Constitución de un número en base 10 Ejemplos: 381,24 = 3 × 102 + 8 × 10 + 1 × 100 + 2 × 10−1 + 4 × 10−2 4372,3 = 4 × 103 + 3 × 102 + 7 × 10 + 2 × 100 + 3 × 10−1 4.1.2. Codificar un número de cualquier base a base 10 423,415 = 4 × 52 + 2 × 5 + 3 × 50 + 4 × 5−1 + 1 × 5−2 = 4 × 25 + 2 × 5 + 3 + 4 × 0,2 + 1 × 0,04 = 113,8410 11010012 = 1 × 26 + 1 × 25 + 1 × 23 + 1 × 20 = 64 + 32 + 8 + 1 = 1055 49 50 CAPÍTULO 4. FORMATOS NUMÉRICOS Figura 4.1: Conversión del número decimal 113.84 a suequivalente en base 5 Figura 4.2: Conversión del número decimal 105.41 a su equivalente binario. 4.1.3. Codificación decimal a base 5 Problema: Realícese la conversión del número decimal 113,41 a base 5. El proceso de conversión ocurre en dos pasos, el primer paso consiste en la conversión a base 5 de la parte entera. Esta conversión puede verse en la figura 4.1. Un segundo paso en la conversión es la codificación a base 5 de la parte fraccionaria. Este proceso se ilustra en la figura 4.1. 4.1.4. Codificación decimal a binario Problema: Realícese la conversión del número decimal 105,41 a base 2. El proceso de conversión ocurre en dos pasos, el primer paso consiste en la conversión a binario de la parte entera. Esta conversión puede verse en la figura 4.2. Un segundo paso en la conversión es la codificación a binario de la parte fracionaria. Este proceso se ilustra en la figura 4.2. 4.2. COMPLEMENTOS 4.2. 51 Complementos Hasta cierto punto, el complemento de un número de N dígitos puede definirse como aquel otro número tal que sumados ambos el resultado es cero. Un complemento reducido de un número se define como la cantidad que hace falta sumarle para lograr el número más grande representable con su misma cantidad de dígitos. En el presente capítulo será tratado el complemento a dos y su versión reducida, el complemento a uno. Los complementos suelen usarse para realizar la operación de sustracción empleando meramente sumas. En el caso de las computadoras, esta propiedad es ampliamente usada, dado que la operación de suma es fácilmente implementable mediante compuertas lógicas. Así entonces, la implementación de la sustracción se simplifica puesto que se usa el mismo circuito sumador. 4.2.1. Complemento a 2 Teorema 4.1 El complemento a dos de un número X que, expresado en el sistema binario está compuesto por N dígitos, se define como: C2 {X} = 2N − X (4.1) Donde: X es el número binario a complementar. N es el número de dígitos binarios que forman a X. 2N es un «uno» seguido de N ceros. Para ejemplificar, calcúlese el complemento a dos de 1011012 . Este número tiene N = 6 dígitos binarios y la operación de complemento puede ser expresada de la forma siguiente: C2 {101101} = 106 − 101101 (4.2) El resultado de tal operación es entonces: C2 {101101} = 10011 4.2.2. (4.3) Complemento a uno Teorema 4.2 Complemento a uno de un número X que, expresado en el sistema binario está compuesto por N dígitos, se define como: C1X = 2N − 1 − X Donde: (4.4) 52 CAPÍTULO 4. FORMATOS NUMÉRICOS X es el número binario a complementar. N es el número de dígitos binarios que forman a X. 2N − 1es una sucesión de N unos.1 Para ejemplificar, calcúlese el complemento a uno de 1011012 . Este número tiene N = 6 dígitos binarios y la operación de complemento puede ser expresada de la forma siguiente: C1 {101101} = 106 − 1 − 101101 (4.5) El resultado de tal operación es entonces: C2 {101101} = 010010 (4.6) Podrá notarse que el resultado de un complemento a uno resulta en una inversión de bits. 4.2.3. Relación entre complementos Teorema 4.3 Relación entre complementos uno y dos. Las fórmulas 4.1 y 4.4 pueden relacionarse de tal forma que se logra el siguiente teorema. C2 {X} = C1 {X} + 1 4.3. (4.7) Resta mediante complementos En una operación de sustracción pueden identificarse los siguientes componentes: El minuendo es la parte de la expresión de la sustracción que indica la cantidad inicial. El sustraendo es la cantidad que se retira de la cantidad original. La diferencia representa el resultado de la expresión de sustracción. Teorema 4.4 En una sustracción, conocido el minuendo (M ) y el sustraendo (S), la diferencia D por complementos se define como: M − S = M + C1 {S} + 1 1 Esta relación funciona para N ≥ 1. (4.8) 4.4. TIPOS DE NÚMEROS 53 Para ejemplificar, realice la sustrucción de 71 menos 35, es decir: − 100 0111 010 0011 (4.9) Así entonces, la sustracción por complementos se realiza de la forma siguiente: D = 100 0111 + C1 {010 0011} + 1 (4.10) Realizando la operación 100 0111 + 101 1100 + 000 0001 1 010 0100 (4.11) Puede notarse de la operación que hay un acarreo el cual va aser ignorado. Así que la diferencia es D = 010 0100 lo cual es equivalete a D = 36. 4.4. Tipos de números Los tipos de datos que pueden manejarse en una computadora son: Enteros no negativos. Enteros. reales en punto fijo. Reales en punto flotante. BCD2 . 4.5. Enteros no negativos El conjunto de los enteros no negativos es un conjunto numerable e infinito en el cual se puede denotar la secuencia siguiente: Z+ = {0, 1, 2, 3, . . .} (4.12) En cuanto a las computadoras, dependiedo del tamaño del registro usado para almacenar a los enteros no negativos, éstas pueden representar un subconjunto numerable y finito. 2 BCD es la abreviatura del término anglosajón «Binary Coded Digit» y que puede leerse como «Decimal Codificado en Binario». 54 CAPÍTULO 4. FORMATOS NUMÉRICOS Figura 4.3: Registro de n celdas para almacenar un subconjunto de los enteros no negativos. Teorema 4.5 Representación de números enteros de N bits. Un número entero de N bits se puede representar como: bN −1 2N −1 + . . . + b2 22 + b1 2 + b0 (4.13) donde: N es el número de bits empleados para representar el número entero no negativo. bi es el bit en la i-ésima posición. 2i es el peso de la i-ésima posición. La figura 4.3 muestra el formato y significado de un registro para números enteros no negativos de N bits. 4.5.1. Ejemplo Para ejemplificar, convierta los nueros binarios de 4 bits, 10102 y 11012 , a decimal: 1010 3 = 1 (2) + 1 (2) = 8+2 = 10 y 0101 4.5.2. 2 = 1 (2) + 1 = 4+1 = 5 Propiedades Teorema 4.6 El rango de los enteros no negativos almacenables en un registro deN celdas: N 0, 2 − 1 donde: (4.14) 4.5. ENTEROS NO NEGATIVOS 55 Decimal Binario Hexadecimal 0 0000 0 1 0001 1 2 0010 2 3 0011 3 4 0100 4 5 0101 5 6 0110 6 7 0111 7 8 1000 8 9 1001 9 10 1010 A 11 1011 B 12 1100 C 13 1101 D 14 1110 E 15 1111 F Cuadro 4.1: Representación de números naturales de 4 bits mas el cero. N es el número de celdas que conforman al registro que será usado para almacenar datos numéricos. Teorema 4.7 La precisión numérica de los enteros no negativos corresponde con el valor del dígito menos significativo. Matemáticamente se puede escribir: precisión = 20 = 1 (4.15) También es posible definir la precisión numérica de la forma siguiente. Teorema 4.8 La precisión numérica de los enteros no negativos corresponde a la diferencia entre dos dígitos consecutivos. 4.5.3. Codificación Decimal, binario 4 bits y hexadecimal El cuadro 4.1 muestra un ejemplo en el cual se definen enteros no negativos de 4 bits junto con su equivalente binario y su equivalente hexadecimal. La base hexadecimal se emplea para simplificar la escritura de ternas de dígitos binarios. 4.5.4. Ejemplo Exprese el número decimal 162410 en binario a 16 bits y a su vez exprese el número binario a hexadecimal. 56 CAPÍTULO 4. FORMATOS NUMÉRICOS La conversión a binario es: 162410 = 110010110002 Para la conversión a hexadecimal, los dígitos binarios se agrupan en ternas desde la derecha. 162410 = 110 0101_10002 De cada terna se calcula su equilante hexadecimal. 0110 0101 1000 ⇒ 6 ⇒ 5 ⇒ 8 Así, el equivalente hexadecimal es: 162410 = 65816 4.5.5. Suma de enteros no negativos Para ejemplificar la suma de enteros no negativos y los posibles casos, se usarán enteros de 4 bits, tal como los mostrados en el cuadro 4.1. Caso a: La suma está en el rango de representación para 4 bits 2 + 3 5 ⇒ 0010 + 0011 0101 Caso b: Sobreflujo, la suma sale del rango de representación para 4 bits: 8 + 9 1 ⇒ 1000 + 1001 1 0001 Nótese que aunque el resultado puede interpretarse como 17 solamente hay espacio para almacenar 4 bits, entonces el resultado es 1. Si observa la tabla del cuadro 4.1., notará que la suma le dio la vuelta a la mencionada tabla. 4.5.6. Resta de enteros no negativos Para ejemplificar la resta de enteros y los posibles casos se usarán enteros de 4 bits, tal como los mostrados en el cuadro 4.1. La operación de resta se realizará usando complementos, tal como indica el teorema 4.4. Caso a: 4.6. NÚMEROS ENTEROS 57 Figura 4.4: Registro de N celdas para almacenar un subconjunto de los enteros. − 9 3 6 0011 ⇒ + C1 {0011} + 0001 ⇒ 0011 + 1100 0001 1 0110 Nótese que el resultado requiere de 5 bits, no obstamte solamente hay espacio para almacenar 4 bits, por lo cual el acarreo se ignora. Así el resultado es 6. 4.5.7. Producto de enteros no negativos El producto de enteros no negativos es especial puesto que el producto de la operación requiere el doble de espacio de almacenamiento. Teorema 4.9 El producto de enteros no negativos de N bits es un número de 2N bits. Considere, por ejemplo, el producto de dos enteros de 4 bits 15 × 15 = 225: 1111 1111 1111 1111 + 1111 1111 11100001 × Obsérvese que el resultado es un número de 8 bits. 4.6. Números enteros Los números enteros son un conjunto numerable e infinito en el cual se puede denotar la secuencia siguiente: Z = {. . . , −3, −2, −1, 0, 1, 2, 3, . . .} (4.16) 58 CAPÍTULO 4. FORMATOS NUMÉRICOS En cuanto a las computadoras, dependiendo del tamaño del registro usado para almacenar números enteros, éstas pueden representar un subconjunto, numerable y finito. Teorema 4.10 Representación de números enteros de N bits. Un número entero de N bits se puede representar como: −bN −1 2N −1 + bN −2 2N −2 + . . . + b2 22 + b1 2 + b0 (4.17) donde: N es el número de bits empleados para representar el número entero. bi es el bit en la i-ésima posición. 2i es el peso de la i-ésima posición. bN −1 es el bit de signo. Este bit tiene el mayor peso, el cual es negativo. La figura 4.3 muestra el formato y significado de un registro para números enteros de N bits. Nótese que se requieren de las N celdas se requiere de una, la más a la izquierda, para almacenar el signo. 4.6.1. Ejemplo de codificación a binario Para ejemplificar, convierta los nueros binarios de 4 bits, 10102 y 11012 , a decimal: 1010 3 = 1 (−2) + 1 (2) = −8 + 2 = −6 y 1101 4.6.2. 3 2 = 1 (−2) + 1 (2) + 1 = −8 + 4 + 1 = −3 Propiedades Teorema 4.11 El rango de los enteros almacenables en un registro N celdas es: N −1 N −1 −2 ,2 −1 (4.18) donde: N es el número de celdas que conforman al registro que será usado para almacenar datos numéricos. 4.6. NÚMEROS ENTEROS 59 Cuadro 4.2: Codificación de enteros binarios de 4 bits a decimal y hexadecimal. Teorema 4.12 La precisión numérica de los enteros corresponde con el valor del dígito menos significativo. Matemáticamente se puede escribir: precisión = 20 = 1 (4.19) Teorema 4.13 La precisión numérica de los enteros corresponde a la diferencia entre dos dígitos consecutivos. 4.6.3. Codificación Decimal, binario 4 bits y hexadecimal El cuadro 4.2 muestra un ejemplo en el cual se definen enteros de 4 bits junto con su equivalente decimal y su equivalente binario. Podrá notarse que un entero negativo puede obetnerse de un su correpondiente valor positivo mediante el compemento a dos. Teorema 4.14 Entero negativo: Para calcular el negativo de un entero positivo es suficiente con calcular su complemento a dos. −X = C2 {X} (4.20) Por supuesto es posible sustituir el complemento a dos de la ecuación 4.20 por su equivalente complemento a uno según lo indica la fórmula siguiente: −X = C1 {X} + 1 (4.21) 60 CAPÍTULO 4. FORMATOS NUMÉRICOS La figura 4.2 ilustra la forma en la cual se pueden calcular los enteros negativos de 4 bits empleando complementos a uno. En la misma figura 4.2 también se muestra que la base hexadecimal se emplea para simplificar la escritura de ternas de dígitos binarios. Nótese que la codificación hexadecimal para enteros es idéntica a la codificación hexadecimal para enteros no negativos. 4.6.4. Suma de un número con su complemento Teorema 4.15 La suma de un número binario X con su complemento a dos, es cero. A modo de demostración del teorema 4.15 considérse la ecuación 4.20. Despejando se logra: 0 = X + C2 {X} (4.22) Veamos ahora como se comportan los números cuando se aplica el teorema 4.15. Consdiérese el entero binario de cuatro bits X = 0101. Ahora bien, aplicando el complemento C2 {0101} = C1 {0101} + 1 = 1010 + 1 1011 Finalmente, realizando la suma de 0101 y su complemento 1011 + 0 1 0 1 1 0 1 1 1 0 0 0 Podrá notarse que efectiva la suma es cero, pero también puede notarse que hay un acarreo debido al sobreflujo en la oepración de suma. 4.6.5. Suma de enteros Para ejemplificar la suma de enteros y los posibles casos, se usarán enteros de 4 bits, tal como los mostrados en el cuadro 4.2. Caso a: La suma está en el rango de representación para 4 bits 2 + 3 5 ⇒ 0010 + 0011 0101 Caso b: Sobreflujo, la suma sale del rango de representación para 4 bits: 4.6. NÚMEROS ENTEROS + 61 3 5 −8 ⇒ + 0011 0101 1000 Si observa la tabla del cuadro 4.2 notará que la suma le dio la vuelta a la mencionada tabla. Caso c: La suma está en el rango de representación para 4 bits: 3 + (−2) 1 ⇒ 0011 + 1110 1 0001 La suma también funciona con números negativos. En este caso, el acarreo que genera será ignorado. 4.6.6. Resta de enteros Para ejemplificar la resta de enteros y los psibles casos se usaarán enteros de 4 bits, tal como los mostrados en el cuadro 4.2. La operación de resta se realizará usando complementos, tal como indica el teorema 4.4. Caso a: − 3 6 −3 ⇒ + + 0011 C1 {0110} 0001 ⇒ + 0011 1001 0001 1101 Nótese que el resultado coincide con el equivalente decimal −3 de la tabla en el cuadro 4.2. Caso b: − 3 4 −1 ⇒ + + 0011 C1 {0100} 0001 ⇒ + 0011 1011 0001 1111 Caso c: 2 0010 − (−3) ⇒ + C1 {1101} 5 + 0001 ⇒ + 0010 0010 0001 1111 62 CAPÍTULO 4. FORMATOS NUMÉRICOS 4.6.7. Producto de enteros Para multiplicar dos números enteros deben seguirse los pasos indicados a continuación: 1. Se toma el valor absoluto de los multiplicandos: a) Si un multiplicando es negativo, se calcula su complemento a dos. 2. Los multiplicandos, ya siendo ambos positivos, se operan 3. Si el resultado debiera se negativo, según el signo de los multiplicandos originales, entonces se calcula el complementos a dos. 4.6.8. Ejemplo de multiplicación de enteros Realice la siguiente operación (−7) × (7) Paso 1 : Se calcula el complemento a dos del multiplicando negativo C2 {−7} = C2 {1001} = 0110 + 1 = 0111 Paso 2 : Se realiza el producto 0 0 0 0 1 0 1 1 1 1 1 0 0 × 1 1 1 1 1 1 1 1 1 1 1 0 1 Paso 3 : Según la ley de los signos, el resultado debe ser negativo, así entonces se calcula su complemento a dos. C2 {0011 0001} = 1100 1111 Si se calcula el equivamente decimal del número entero resultante del procedimiento, se obtendrá un −49. 4.7. Punto fijo El punto fijo es una nomenclatura para la representación de números reales, en particular, aquellos que llevan con punto decimal. Algunas propiedades que satisface el conjunto de números reales representables en punto fijo son: El conjunto de números reales que pueden ser reprentados por un registro de N celdas es numerable y finito. 4.7. PUNTO FIJO 63 Figura 4.5: Registro de N celdas para almacenar un subconjunto de los números reales. Cada número real se representa con la misma cantidad de dígitos. Cada número real se representa con la misma contidad de dígitos decimales. Teorema 4.16 Representación de números reales en punto fijo de N bits. Un número real de N bits se puede representar como: −bE−1 2E−1 + bE−2 2E−2 + . . . + b1 21 + b0 20 + b−1 2−1 + . . . + b−Q 2−Q (4.23) Siempre que E+Q=N (4.24) donde: N es el número de bits empleados para representar el número real. Q es el número de bits dedicados para representar la parte fraccionaria. E es el número de bits dedicados para representar la parte entera. Recuerde que el bit mas significativo es el bit del signo. bi es el bit en la i-ésima posición. 2i es el peso de la i-ésima posición. La figura 4.5 muestra el formato y significado de un registro para números reales representados con punto fijo. Nótese que el formato para almacenar datos de punto fijo contiene tres partes: 1 bit para el signo S = 1. E bits para la parte entera. Q bits para la parte fraccionaria. Un dato en punto fijo se define por el número de bits empleados para almacenar la parte fraccionaria. Este número se representa con la letra Q. El punto decimal no ocupa espacio en el registro, más bien, su ubicación queda definida por la Q. 64 CAPÍTULO 4. FORMATOS NUMÉRICOS Q 0 1 2 3 4 5 6 7 2−Q 2=1 2−1 = 0,5 2−2 = 0,25 2−3 = 0,125 2−4 = 0,0625 2−5 = 0,03125 2−6 = 0,015625 2−7 = 0,0078125 Q 8 9 10 11 12 13 14 15 2−Q 2 = 0,00390625 2−9 = 0,0001953125 2−10 = 0,0009765625 2−11 = 0,00048828125 2−12 = 0,000244140625 2−13 = 0,0001220703125 2−14 = 0,000061035625 2−15 = 0,00003051757813 −8 Cuadro 4.3: Precisiones numéricas para representaciones en punto fijo de 16 bits. 4.7.1. Propiedades Teorema 4.17 La precisión numérica de los reales en punto fijo corresponde con el valor del dígito menos significativo. Matemáticamente se puede escribir: precisión = 2−Q (4.25) El cuadro 4.3 muestra las precisiones que pueden lograrse para todos los posible valores de Q en un registro de N celdas. Teorema 4.18 El rango de los reales en punto fijo almacenables en un registro de N celdas es: E−1 E−1 −2 ,2 − 2−Q (4.26) donde: E es el número de celdas reservadas para almacenar los digitos enteros. Q es el número de celdas reservadas para almacenar los digitos fraccionarios. 4.7.2. Para codificar a punto fijo un número real negativo Par realizar la codificación a binario y en punto fijo un número real con punto decimal y negativo se hace uso de la fórmula 4.20 de la manera que se indica a continuación: 4.7. PUNTO FIJO 65 Teorema 4.19 Codificación a punto fijo de un número real con punto decimal y negativo. Cada miembro del número (parte entera y parte fraccionaria) se tratan com un único número entero: e.q −e.q = X (4.27) = C2 {X} donde: e es la parte entera del número real. q es la parte fraccionaria del número real. 4.7.3. Ejemplos Ejemplo Para ejemplificar, convierta el siguiente número 4,35 a decimal empleando un registro de N = 8 celdas y una Q = 4. La parte entera es fácil de convertir: 410 = 01002 La parte fraccionaria se convierte de la forma siguiente: 0,3510 ' 0,01012 Así el número final es: 4,3510 ' 0100,01012 Solamente para verificar, la precisión de la conversión numérica del formato Q = 4 en un registro de N = 8 celdas se tiene: 0100,01012 = 4,312510 Así que se puede notar que la codificación a binario tiene un error de aproximación de centésimas. Ejemplo Para ejemplificar, codifique a binario el siguiente número decimal 4,35 empleando un registro de N = 12 celdas y una Q = 8. La parte entera es fácil de convertir: 410 = 01002 66 CAPÍTULO 4. FORMATOS NUMÉRICOS 1 0 1 1 0 1 1 1 1 1 1 0 0 7183 4366 8732 7464 4928 9856 9712 9424 8848 7696 5392 0784 1568 3136 x2 Cuadro 4.4: Codificación a binario del fraccionario 0.7183 La parte fraccionaria se convierte de la forma siguiente: 0,3510 ' 0,010110012 Obśervese que al aumentar la cantidad de celdas necesarias para representar la parte fraccionaria, el error de aproximación se redujo. Finalmente, el equivalente binario es: 4,3510 ' 0100,010110012 Solamente para verificar, la precisión de la conversión numérica del formato Q = 4 en un registro de N = 8 celdas se tiene: 0100,010110012 = 4,347710 En este caso se observa que el error de aproximación de la conversión es menor en el ejemplo anterior. Ejemplo Para ejemplificar, codifique a binario el siguiente número decimal −2,7183 empleando un registro de N = 16 celdas y una Q = 13. medskip El primer paso es calcular la versión positiva del número y para esto se codifica la parte entera y luego la parte fraccionaria. Así entonces, la codificacion a binario de la parte positiva empleando 3 bits es: 2 = 0102 Luego se procede a codificar en binario la parte fraccionaria. Tal conversión puede verse en el cuadro 4.4 y por tanto el resultado es: 4.7. PUNTO FIJO 67 0,7183 = ,1011 0111 1110 02 Así el número positivo en binario es: 2,7183 = 010,1011 0111 1110 02 Finalmente, la codificación del número negativo se obtiene complementando el resultado anterior considerando que se trata de un entero de 16 bits, es decir, no se considera el punto decimal. −27183 = C2 {010 1011 0111 1110 02 } = C1 {010 1011 0111 1110 02 } + 1 = 101 0100 1000_0001_1 + 1 = 101 0100 1000 0010 0 Así entonces, recuperando el punto decimal se tiene el número negativo −2,7183 = 101,0100 1000 0010 02 Ejemplo Para ejemplificar, convierta el siguiente número binario de 12 bits 00110100101102 , con Q = 4 a su equivalente decimal. Primero hay que separar la parte entera de la parte fraccionaria de la manera siguiente. P arte entera = P arte f raccionaria = 0011010012 01102 La parte entera se puede condificar a decimal como sigue: 0011010012 1 26 + 1 25 + 1 23 + 1 64 + 32 + 8 + 1 105 = = = La parte fraccionara se puede codificar a decimal como: 01102 = = 1 2−2 + 1 2−3 0,3750 Así el equivalente decimal puede escribirse como: 00110100101102 = 105,37510 68 CAPÍTULO 4. FORMATOS NUMÉRICOS Figura 4.6: Formato de un número en punto flotante de precisión simple (32 bits). 4.8. Punto flotante Según [1], el «IEEE 754» para aritmética en punto flotante es el estándar más extendido para las computaciones en el mencionado formato. Tal estándar es seguido por muchas de las mejores CPU y FPU3 . El estándar define formatos para la representación de números en punto flotante incluyendo el cero, valores desnormalizados, el infinito y NaN4 . El estándar también define un conjunto de tres operaciones aritméticas básicas, es decir, la suma, la resta y el valor absoluto. Se incluye también un primer nivel de extensión hacia la multiplicación y la división. También especifican cuatro modos de redondeo y cinco excepciones incluyendo cuándo ocurren dichas excepciones y qué sucede en esos momentos. IEEE 754 especifica cuatro formatos para la representación de valores en coma flotante: precisión simple (32 bits), precisión doble (64 bits), precisión simple extendida ( 43 bits, no usada normalmente)5 y precisión doble extendida ( 79 bits, usualmente implementada con 80 bits). Sólo los valores de 32 bits son requeridos por el estándar, los otros son opcionales. Muchos lenguajes especifican qué formatos y aritmética del IEEE implementan, a pesar de que a veces son opcionales. Por ejemplo, el lenguaje de programación C, ahora permite, pero no requiere, la aritmética del IEEE (el tipo de C «float» es típicamente usado para la precisión simple del IEEE y el tipo double usa la precisión doble del IEEE). 4.8.1. Precisión simple de 32 bits Un número en punto flotante de precisión simple se almacena en una palabra de 32 bits y tiene el formato mostrado en la figura 4.6. En la mecionada figura pueden verse las siguientes partes. S es el bit de signo (para el signo: 0=Positivo ; 1= Negativo). E es la potencia o exponente. M es la mantisa. 3 FPU es abreviación de «Floating Point Unit» y que en castellano se traduce como «Unidad de Punto Flotante». 4 NaN es abreviación de «Non a Number» que en castellano se traduce como «No un número» y puede ser, por ejemplo, la raiz cuadrada de un número negativo. 5 Los DSP de TI usan 40 bits. 4.8. PUNTO FLOTANTE 69 Clase Exp Mantisa Ceros Números desnormalizados Números normalizados Infinitos NaN (Not a Number) 0 0 1-254 255 255 0 distinto de 0 cualquiera 0 distinto de 0 Cuadro 4.5: Interpretaciones de los números que pueden generarse mediante la nomenclatura IEEE 754. El exponente es un número entero en el rango de −126 a 127. El valor del exponente está desplazado en 127 para obtener un valor en el rango de 1 a 254. (0 y 255 tienen valores especiales descritos más adelante). Cuando se interpreta el valor en punto flotante, el exponente es desplazado de nuevo para obtener el exponente real. Las clases de números que pueden distinguirse mediante la notación de punto flotante del «IEEE 754» son los siguientes. El como se interpretan puede verse en la tabla del cuadro 4.5. ceros números normalizados números desnormalizados infinitos NaN (no es un «No Número», como por ejemplo, la raíz cuadrada de un número negativo). 4.8.2. Ejemplo Codifique el número decimal −118,625 usando el estándar IEEE 754. Paso 1: el signo de la mantisa El signo de mantisa es fácil de calcular, dado que el número decimal es negativo. Así el signo será: S=1 Paso 2: Conversión a binario del valor absoluto del número El proceso de conversión a binario es bastante simple considerando que se trata de un dato numérico sin signo. Así entonces se tiene que: 118,625 = 1110110,101 70 CAPÍTULO 4. FORMATOS NUMÉRICOS Paso 3: Conversión a notación exponencial Ahora, se mueve el punto decimal a la izquierda, dejando sólo un 1 a su izquierda. 1110110,101 = 1,110110101 × 10110 Nótese que el exponente es E = 6. Paso 4: La mantisa La mantisa estára conformada por los dígitos a la derecha del punto decimal6 , rellenada con ceros hacia la derecha hasta que se obtengan los 23 bits: M = 110110101 00000000000000 Paso 5: El exponente El exponente es 6, pero se necesita desplazarlo y convertirlo a binario. Así 6 + 127 = 133. En binario, esto se escribe como E = 10000101 Paso 6: El número Así, finalmente se tienen las partes del número en punto flotante: S = 1 E = 1000 0101 M = 1101 1010 1000 0000_0000 000 Así el número es: −118,625 = 1 10000101 11011010100000000000000 4.9. Ejercicios 1. Realice la representación de un registro para almacenar números naturales de 16 bits. 2. Calcule el rango de valores para los enteros no negativos de 16 bits. 3. Calcule el rango de valores para los enteros de 16 bits. 4. Codifique a binario el número −30. 6 El lector debe observar que se está desconociendo el dígito más significativo de la mantisa, un «uno» 4.9. EJERCICIOS 71 5. Calcule la longitud de registro para almancenar el entero no negativo 327. 6. Calcule la longitud de registro para almancenar el entero 327. 7. Calcule la precisión para valores en punto fijo con Q=23. 8. Calcule la precisión para valores en punto fijo con Q=31. 9. Calcuel el equivalente binario en punto fijo del número 2,7182818 en N = 16 y Q = 13. 10. El siguiente filtro es un generador senoidal. Realice su evaluación numérica con datos en punto fijo de N = 16 bits y formato en Q = 8. Considere que la precisión es 2−8 = 0,00390625 y no olvide usar hasta 8 decimales posibles en su calculadora. H (z) = 0,3827z −1 1 − 1,8478z −1 + z −2 (4.28) 72 CAPÍTULO 4. FORMATOS NUMÉRICOS Capítulo 5 Introducción al procesador En la historia de los microprocesadores y las computadoras existen dos paradigmas que se han convertido en referencia para discriminar una computadora de otra: von Newman y Harvard. Aunque en la actualidad, los microprocesadores tienden a diseñarse bajo una arquitectura híbrida, es decir, una combinación entre von Neumann y Harvard. Otra clasificación también puede darse en la aplicación a la cual están orientados los procesadores, es decir: Aquellos procesadores orientados a sistemas de escritorio y laptops. Aquellos procesadores usados en «tablets» y «smartphones». Aquellos orientados a decodificación y mejora de imagen en receptores de TV digital. Nuevos paradigmans se han agregado a la lista de arquitecturas de computadoras, eśtos son VLIW y superescalar. Tales paradigmas son una forma de agregar paralelismo a las operaciones de los microprocesadores actuales. 5.1. Arquitecturas de computadoras Como ya se ha mencionado, las arquitecturas von Neumann y Harvard implican diferencias que involucran la forma en la cual se ejecutan las instrucciones y muy particularmente, en donde se almacenan memoria y datos. 5.1.1. von Neumann Un procesador von Neumann1 están constituído, más o menos, por los siguientes componentes: 1 John von Neumann (registrado al nacer como «Neumann János Lajos») fue un matemático húngaro-estadounidense que realizó contribuciones fundamentales en física cuántica, análisis funcional, teoría de conjuntos, teoría de juegos, ciencias de la computación, economía, análisis numérico, cibernética, hidrodinámica, estadística y muchos otros campos. Es considerado como uno de los más importantes matemáticos de la historia moderna. 73 74 CAPÍTULO 5. INTRODUCCIÓN AL PROCESADOR Figura 5.1: Arquitectura general de un procesador von Neumann. 1. Unidad de control. 2. Registros del programador: registro de instrucción, registro de datos, registros de direcciones en memoria, registros puntero y otros registros. 3. Unidad lógico-Aritmética (ALU). 4. Memoria de programa y datos. 5. Registros de E/S. 6. Tres buses: datos, direcciones y de control. La figura 5.1 muestra un esquema de tal arquitectura y como se interrelacionan los componentes. De manera general se pueden realizar estos comentarios: La unidad de control dedica todo su tiempo para procesar una instrucción a la vez. Las instrucciones de un programa y los datos residen en el mismo circuito de memoria. Se requiere de un grupo de registros para acceder a la memoria: registro de datos para lectura-escritura a memoria, registros de direcciones en memoria. 5.1.2. Arquitectura Hardvard Un procesador Harvard se forma de los siguientes circuitos: Memoria de instrucciones. Esta puede ser una ROM dado que no se require para almacenar datos. Banco de registros 5.1. ARQUITECTURAS DE COMPUTADORAS Figura 5.2: Arquitectura general de un procesador Harvard. 75 76 CAPÍTULO 5. INTRODUCCIÓN AL PROCESADOR Unidad lógico aritmética Memoria de datos. Esta debe ser una RAM para permitir la escritura de información Un circuito decodificador para generar señales de control Registros de segmentación Por lo general, los procesadores Harvard están constituídos por N etapas que operan independientemente una de la otra. En el caso de la arquitectura mostrada en la figura 5.22 se tienen cinco etapas y que se enlistan a continuación: 1. Etapa de «Instruction fetch». a) Un registro contiene la dirección en memoria de la próxima instrucción a ejecutar. b) Una vez que el registro actualiza su valor se busca en memoria la instrucción 2. Etapa «Instrucion decode/Register fetch». a) Un registro captura la instrucción y la dirección en memoria de la mencionada instrucción. b) La instrucción contiene constantes e índices de registros. c) De los registros se recuperan constantes. 3. Etapa «Execute/Addres calculation». a) Un registro captura las contantes y la dirección en memoria de la instrucción que se evalúa actualmente. b) La Unidad lógico-Aritmética (ALU) opera las constantes según indica la instrucción. El resultado puede ser una constante o una dirección en memoria. c) Es posible la presencia de un circuito sumador para calcular la dirección de la próxima insrucción. 4. Etapa «Memory acces» a) Un registro captura el resultado de la ALU y captura la dirección de la próxima instrucción a ejecutarse. 2 Esta arquitectura fue propuesta por John L. Hennesy, fundador de «MIPS Computer Systems Inc» para comercializar los procesadores RISC sobre los que había estado investigando. Actualmente es el décimo presidente de la Universidad Stanford. Consiguió su licenciatura en Ingeniería Eléctrica en la Universidad Villanova, y su master y Doctor Philosophiae en ciencias de la computación en la Universidad Estatal de Nueva York en Stony Brook. Fuente http://es.wikipedia.org/wiki/John_L._Hennessy. 5.2. CISC Y RISC 77 b) Si el resultado de la ALU es una constante, ésta no se guarda en la RAM. c) Si el resultado de la ALU es una dirección en RAM (read data 1) entonces se guarda el contenido de (read data 2) en la RAM. 5. Una etapa «Write back » Un selector para almacenamiento de resultados en los registros de datos. 5.1.3. Grave defecto de los procesadores Harvard Los procesadores Harvard tienen un severo defecto, mismo que puede arreglarse añadiendo más circuitería al procesador. El defecto se presenta cuando ocurre una instrucción de salto. Al ocurrir un salto, las instrucciones que le siguen ya no son de utilidad, aún cuando el procesador sigue trabajando en éstas. 5.2. CISC y RISC 5.2.1. CISC CISC es la abreviación de «Complex Instruction Set Computer» o «Computadora con un conjunto de instrucciones complejas». Las instrucciones CISC pueden requerir de la realización de varias tares, por ejemplo, considera los pasos a seguir para realizar una suma: 1. Busca el primer operando en memoria y lo deposita en un registro. 2. Busca el segundo operando en memoria y lo deposita en un registro. 3. Realiza la operación y deposita el resultado en un registro. 4. Copia el resultado, depositado en un registro, a memoria. 5.2.2. RISC RISC es la abreciación de «Reduced Instruction Set Computer» o «Computadora con un conjunto de instrucciones reducidas». Una instrucción RISC realiza una y solamente una tarea. Esta tarea puede una cualquiera de las siguientes: Transferencia memoria a registro. Transferencia registro a memoria. Operaciones con los datos contenidos en dos registros, el resultado se almacena en otro registro. 78 CAPÍTULO 5. INTRODUCCIÓN AL PROCESADOR 5.2.3. Comparando CISC y RISC Cuando se habla de un procesador CISC, típicamente se hace referencia a un procesador en el cual se han implementado este tipo de instrucciones. De igual forma, cuando se habla de un procesador RISC, se hace mención de un procesador en el cual se han implementado instrucciones reducidas. Es también muy común, considerar que en un procesador von Newman se implementen instrucciones CISC, en tanto que también se considera que en un procesador Harvard se implementen instrucciones RISC. Estas consideraciones no están equivocadas aunque en realidad, solamente obstáculos técnicos no insalvables impiden que se inviertan los papeles. En cuanto a la cantidad de instrucciones involucradas: • El procesador CISC requiere de una sola instrucción para procesar datos localizados en memoria. • El procesador RISC requiere de varias instrucciones para procesar datos localizados en memoria. En cuanto a la cantidad de memoria para almacenar código • El procesador CISC está diseñado para sistemas que tienen escasa memoria. Dado que una instrucción realiza realiza todas las tareas necesarias para operar datos en memoria. • El procesador RISC, funciona bien en sistemas con abundante memoria dado que se requiere de varias instrucciones para operar datos en memoria. En cuanto a la complejidad de la circuitería. • El procesador CISC implementado con una arquitectura von Newman requiere de un circuito grande y complejo en su unidad de control para instrucciones que realizan muchas tareas. • El procesador RISC implementado con una arquitectura Harvard require de un circuito simple llamado decodificador para generar señales de control. En cuanto a la cantidad de instrucciones que ejecuta • El procesador RISC realiza una mayor cantidad de instrucciones que un CISC. • Esta característica no es indicativa de cuan rápido puede ejecutar un programa un procesador. 5.3. SEGMENTACIÓN DE LAS INSTRUCCIONES 79 Figura 5.3: Estilos de segmentación de las instrucciones de un programa. En el esquema superior se tiene la segmentación secuencial. En el esquema inferior se tiene la segmentación encauzada, la cual implica cierto paralelismo en la ejecución de las instrucciones. Un procesador bajo segmentación encauzada puede ejectuar hasta cinco veces más instrucciones. Nótese que no se ha incuído la etapa de verificación de interrupción. 5.3. Segmentación de las instrucciones Todo procesador y en cualquier arquitectura, tiene N segmentos o etapas identificableas para la lograr la ejecución de instrucciones. Cuatro etapas que son constantes en todo procesador son: Fetch (búsqueda), Decode (decodificación), Execute (ejecución), Interrupt (interrupción). 5.3.1. Segmentación von Neumann En el caso de un procesador Neumann pueden identificarse las etapas siguientes 1. Fetch (F): Recupera la instrucción desde una memoria. 2. Decode (D): Busca el algoritmo para ejecutar la instrucción. 3. Execute (E): Ejecuta la instrucción. 4. Write result (W): Almacena el resultado. 5. Interrupt (I): Verifica si algún periférico requiere atención o si alguna situación de error debe ser atendida. Un procesador von Neumann ejecuta una a una las instrucciones que obtiene de la memoria, es decir, todo el procesador se dedica a ejecutar una única instrucción por turno. La figura 5.3 ilustra la ejecución de dos instrucciones bajo segmentación von Neumann. Tal ejecución toma ocho ciclos. Una consecuencia de que todo el procesador se dedique a una única instrucción implica que algunos circuitos permnerarán ociosos y consumiendo energía, esto es, bajo rendimiento. 80 CAPÍTULO 5. INTRODUCCIÓN AL PROCESADOR 5.3.2. Segmentación Harvard En el caso de un procesador Harvard, como el mostrado en la figura 5.2 pueden identificarse las etapas siguientes: 1. Instruction fetch (F): Recupera la instrucción desde una memoria. 2. Instrucion decode/Register fetch (D): Genera señales de control / Acceso al banco de registros para recuperar datos numéricos. 3. Execute/Addres calculation (E): Ejecución. 4. Memory acces (M): Copia el contenido de un registro del banco a un registro de la memoria. 5. Write back (W): Escribe un valor numérico en un registro. La segmentación Harvard se conoce mejor como «pipelining»3 y es un método mediante el cual se logra aumentar el rendimiento de los microprocesadores al hacer que todas sus partes estén operativos en todo instante. Un procesador Harvard también recupera una a una las instrucciones desde la memoria, sin embargo, las distintas etapas de procesador operan en paralelo tal como se observa en la figura 5.3. Obsérvese que luego de cinco ciclos, se tiene la apariencia de que cada instrucción se ejecuta en un único ciclo. Enla misma figura también puede observarse que en el octavo ciclo, el procesador von Neumann ha realizado dos instrucciones en tanto que el procesador Harvard ha realizo cinco instrucciones. 5.4. Instrucciones de 16 y 32 bits Para este año, los procesadores de 16 bits tienden a ser secuenciales, en tanto que los procesadores de 32 bits tienen a ser encauzados. Por ejemplo, los procesadores ARM pueden trabajar en un modo de bajo consumo de energía usando un conjunto de instrucciones de 16 bits denominado «Thumb»4 . Aunque pueden también trabajar en modo de alto consumo de energía usando instrucciones de 32 bits. 5.5. El formato VLIW A principios de los años 70, del siglo XX, se pensó en como aumentar el paralelismo de los procesadores Harvard. Así entonces se llegó a un formato de 3 en inglés «pipelining», literalmente tubería o cañería. Los rumores dicen que el nombre viene de que para impulsar el gas en un oleoducto a la máxima velocidad es necesario dividir el oleoducto en tramos y colocar una bomba que dé un nuevo impulso al gas. 4 La palabra anglosajona «thum» se traduce al castellano como «pulgar». El porqué de este nombre, es conocido solamente por unos cuantos. 5.5. EL FORMATO VLIW 81 instrucción denominado VLIW5 . VLIW significa «Instrucción de palabra muy larga» lo que implica un formato en el cual se especifican varias operaciones agrupadas para formar una sola instrucción. Así el procesador ejecutará en paralelo todas las operaciones. A continuación se indican algunas características generales de VLIW: Data de principios de los años 70. Muy apoyada por la tecnología de compiladores que optimizan código. Una instrucción especifica varias operaciones agrupadas en un formado largo de instrucción con longitudes desde 128 a 1024 bits. La planificación de las operaciones es externa al procesador. • La planificación de como ejecutar las operaciones puede ser realizada por el propio programador, pero también • La planificación de como ejecutar las operaciones puede ser realizada por el compilar. Cuando la planificación de la ejecución de operaciones la realiza el compilador, el rendimiento del procesador queda determinado por la calidad del mencionado compilador. 5.5.1. Formato de instrucciones Un procesador RISC con el formato VLIW tiene el siguiente formato de instrucción: micro operación 1 micro operación 2 ... micro operación N Por lo general, cada «micro operación» tiene una longitud de 32 bits aunque ésto no es una regla. Así entonces, para ejemplificar, suponga un procesador que soporta operaciones de 32 bits y que su instrucción requiere de 8 operaciones. La longitud total de la instrucción será de 8 × 32 bits, es decir 256 bits. La figura 5.4 muestra como un programador, en la columna izquierda, ha alineado las instrucciones de un programa para un procesador Harvard. A continuación, el mismo programador ha planificado la ejecución de sus instrucciones, ahora llamadas «micro operaciones», siguiendo el formato VLIW y de acuerdo a la dependencia entre éstas. En consecuencia se pueden notar las siguientes situaciones: Las operaciones están desordenadas. Se ejecutan más operaciones en el formato VLIW Se requiere de muhca más memoria para el formato VLIW. 82 CAPÍTULO 5. INTRODUCCIÓN AL PROCESADOR Figura 5.4: Comparativo entre instrucciones de un procesador RISC y un procesador RISC con el formato VLIW. Nótese que mientras un procesador Harvard ordinario puede realizar 10 instrucciones en un cierto tiempo, el procesdor VLIW puede realizar 15 instrucciones. Figura 5.5: Formato de una operación VLIW. 5.5. EL FORMATO VLIW 83 A su vez, cada operación indicada en la instrucción tiene el formato interno siguiente y que es mostrado en la figura 5.5. Bit de ejecución condicional Registro de condición Código de operación Unidad operativa: estos bits indican cual unidad operativa ejecutará el «código de operación». 20 bits para «Nibble 0 » a «Nibble 4 ». Se hace necesario mencionar que cada «operación» tiene un bit a modo de bandera para indicar si debe evaluarse una condición para ejecutar la «operación». La mencionada condición se construye a partir de un registro del banco de registros generales y la condición toma la forma siguiente: Si regsitro=0 entonces no ejecuta la «micro operación». Si regsitro<>0 entonces no ejecuta la «micro operación». 5.5.2. Arquitectura Harvard-VLIW La figura 5.6 muestra el diagrama a bloques de una arqitectura que soporta el formato de instrucciones VLIW. Como puede observarse, la ejecución de N «micro operaciones» en paralelo require de N unidades operativas que las realicen. Las etapas en la ejecución de instrucciones son las indicadas a continuación: 1. Fetch: En un primer paso se realiza la etapa Fetch para recuperar de la memoria la instrucción de palabra larga. Como ya se recordará cada palabra contiene varias operaciones a realizar en paralelo. 2. Dispatch: La palabra recuperada se pasa a un circuito que recupera las operaciones y las dirige hacia la respetiva unidad operativa. 3. Decode: Cada unidad operativa, deacuerdo a la operación asignada, genera sus propias señales de control. 4. Execute: Cada unidad operativa realiza su labor sobre los operandos que recupera del banco de registros. 5.5.3. Unidades operativas Para que un procesador, que sigue el formato VLIW, pueda ejectuar en paralelo las N operaciones de una instrucción, se requieren de: N «unidades operativas» independientes y 5 VLIW larga» es abreviación para «Very Long Instruction Word» o «Instrucción de longitud muy 84 CAPÍTULO 5. INTRODUCCIÓN AL PROCESADOR Figura 5.6: Arquitectura Harvard para soportar el formato VLIW. Figura 5.7: Ruta de datos de un procesador RISC que sigue el formato VLIW. 5.6. PROCESADOR SUPERESCALAR 85 Un banco de registros con N escrituras y 2N lecturas a la vez. La figura 5.7 muestra una ruta de datos en la cual cada «unidad Operativa» requiere de dos operandos tomados de un banco de registros. El resultado es escrito en el mismo banco de regsitros. La construción interna de una unidad operativa, vea figura 5.8, implica un «decodificador » que genera las señales de control para el «circuito funcional », el «banco de registros generales» y para el «banco de registros de control ». El «circuito funcional » es una colección de circuitos operando al mismo tiempo. De los resultados que arrojan los mencionados circuitos solamente es últi uno de éstos. Así entonces, las salidas de tales deben multiplexarse según lo indica el código de operación. 5.5.4. Limitaciones Hay mucho desperdicio de memoria por instrucciones NOP. Baja ocupación de unidades funcionales. Conflictos en el acceso al banco de registros desde varias unidades funcionales. Conflictos en la predicción de accesos a memoria de datos. El tiempo de acceso al banco de registros aumenta con la cantidad de puertos para las unidades funcionales. El rendimiento alcanzado por los compiladores actuales es inferior al rendimiento potencial máximo que alcanza la arquitectura. Para optimizar mejor el código es útil que el programador ayude al compilador 5.6. Procesador superescalar Un procesador escalar es aquel que cuenta con una única unidad funcional, así que solamente puede ejecutar una instrucción a la vez. Un procesador superescalar: Tiene una unidad de control que verifica la dependencia de las instrucciones en memoria. Puede descargar de la memoria varias instrucciones independientes consecutivas. Organiza la ejecución en paralelo de varias instrucciones. El concepto de superescalabilidad implica un formato VLIW de longitud variable, es decir, se pueden enfilar desde una operación hasta N operaciones a realizar en paralelo. La figura 5.9 ilustra un comparativo entre un procesador con formato de instrucción VLIW y un procesador superescalar. 86 CAPÍTULO 5. INTRODUCCIÓN AL PROCESADOR Figura 5.8: Arquitectura general de una «unidad operativa». 5.7. MEDIDAS DEL RENDIMIENTO DE UN PROCESADOR 87 Figura 5.9: Comparativo entre un procesador VLIW y un procesador superescalar. El procesador superescalar es parecido a un auto con transmisión automática. Nombre FLOPS megaflops/megaofps 106 gigaflops/gigaofps 109 teraflops/teraofps 1012 petaflops/petaofps 1015 exaflops/exaofps 1018 zettaflops/zettaofps 1021 yottaflops/yottaofps 1024 Cuadro 5.1: Unidades para medir el rendimiento de equipo. 5.7. Medidas del rendimiento de un procesador Existen diversas unidades que permiten medir el rendimiento de un procesador. Estas medidas no suelen ser de mucha utilidad para comparar un procesador con otro, incluso si son del mismo fabricante. 5.7.1. Operaciones en coma flotante por segundo En informática, las operaciones de coma flotante por segundo son una medida del rendimiento de una computadora, especialmente en cálculos científicos que requieren un gran uso de operaciones de este formato numérico. Es más conocido su acrónimo, FLOPS, por el inglés «floating point operations per second». Las computadoras exhiben un amplio rango de rendimientos en coma flotante, por lo que a menudo se usan unidades mayores que el FLOPS. Los prefijos estándar del Sistema Internacional pueden ser usados para este propósito, dando como resultado la tabla del cuadro 5.1. La tabla del cuadro 5.2 ilustra los rendimientos de varias supercomputadoras en múltiplos de FLOPS. Estos rendimientos corresponden a los años entre 2009 88 CAPÍTULO 5. INTRODUCCIÓN AL PROCESADOR Nombre Capacidad Origen Tianhe-2 33.86 petaFlops China IBM Roadrunner 1026 petaFlops USA Cray Jaguar 1.75 petaFLOPS USA Play Station 3 1.2GFLOPS Japón-USA Cuadro 5.2: Tabla comparativa de supercomputadoras entre el 2005 y el 2012 y 2012. El poder de procesamiento de estos equipos, es distribuido entre diversos clientes que requieren de realizar simulaciones como son: Simulaciones de fenómenos naturales altamente precisas (huracanes, terremotos, maremotos, impacto de asteroides). Desdoblamiento de cadenas de ADN. Plegamiento de proteínas. Simulación de explosiones nucleares. Simulaciones de fluidos interactuantes con superifices: • El viento en modelos de aviones, autos, etc. • El agua en represas. 5.7.2. Millones de instrucciones por segundo MIPS es la abreviación de las palabras "Millions of Instructions Per Second"6 . Esta unidad es una forma de medir la potencia de los procesadores y sin embargo, esta medida sólo es útil para comparar procesadores con el mismo juego de instrucciones y usando programas de prueba7 que fueron traducidos por el mismo compilador y con el mismo nivel de optimización. En las comparativas, usualmente se representan los valores de pico, por lo que la medida no es del todo realista. La forma en que funciona la memoria y la forma en que usa el procesador son factores clave para medir el rendimiento de un procesador. La tabla del cuadro indica las capacidades de varios procesadores conocios. 5.7.3. Multiplicaciones-acumulaciones Uno de los objetivos primordiales de un DSP es la evaluación de un filtro, lo que implica operaciones de multiplicación y acumulación. Así entonces surge la unidad MAC o «Multiplicación-Acumulación». La MAC puede parecer adecuada para comparar el rendimiento de dos DSP y no obstante no considera que los operandos deben ser traídos desde memoria y que deben realizarse desplazamientos. En consecuencia, el rendimiento en MAC de un DSP puede reducirse en un factor de hasta cuatro o más. 6 La frase puede traducirse a «Millones de Instrucciones Por Segundo» programas de prueba se suelen conocer como «benchmarks» 7 Estos 5.7. MEDIDAS DEL RENDIMIENTO DE UN PROCESADOR Procesador IPS Intel 8080 Intel 8086 89 Reloj Año 640 KIPS 2 MHz 1974 800 KIPS 4.77MHz 1974 Motorola 68000 1 MIPS 8MHz 1979 Intel 486DX 54 MIPS 66 MHz 1992 Intel Pentium 100 MIPS 60 MHz 1993 PowerPC 600s (G2) 35 MIPS 33 MHz 1994 ARM 7500FE 35.9 MIPS 40MHz 1996 PowerPC G3 525 MIPS 233 MHz 1997 ARM10 400 MIPS 300 MHz 1998 Zilog eZ80 80 MIPS 50 MHz 1999 Sony "Allegrex"(de la PSP) 32 MIPS 333MHZ 2002 Pentium 4 Extreme Edition 9726 MIPS 3.2 GHz 2003 ARM Cortex A8 2000 MIPS 1 GHz 2005 XBox360 IBM "Xenon" Single Core 6400 MIPS 3.2GHz 2005 AMD Athlon 64 8400 MIPS 2.8 GHz 2005 AMD Athlon FX-57 12000 MIPS 2.8 GHz 2005 AMD Athlon 64 Dual Core 18500 MIPS 2.2 GHz 2005 AMD Athlon 64 3800+ X2 (Dual Core) 18900 MIPS 2.2 GHz 2005 Overclocked AMD Athlon 64 3800+ X2 (Dual Core) 25150 MIPS 2.8 GHz 2005 Cell (cada PPE) 6400 MIPS 3.2 GHz 2006 Procesador Cell de la PlayStation 3 21800 MIPS 3.2 GHz 2006 AMD Athlon FX-60 (Dual Core) 22150 MIPS 2.6 GHz 2006 Overclocked AMD Athlon FX-60 (Dual Core) 24300 MIPS 2.8 GHz 2006 Overclocked AMD Athlon FX-60 (Dual Core) 27100 MIPS 3.0 GHz 2006 Cuadro 5.3: Capacidades de varios procesadores comerciales. El caso del procesador Cell es difícil de cuantificar debido a que se trata de un procesador vectorial por lo que sus MIPS no son adecuados para calificarlo. Fuente: http://es.wikipedia.org/wiki/Millones_de_Instrucciones_Por_Segundo_ %28MIPS %29 90 CAPÍTULO 5. INTRODUCCIÓN AL PROCESADOR Capítulo 6 Familias de DSP Un «procesador digital de señales» o DSP es un sistema basado en un microprocesador que posee un conjunto de instrucciones, un hardware y un software optimizados para aplicaciones que requieran operaciones numéricas a muy alta velocidad. Debido a esto es especialmente útil para el procesado y representación de señales analógicas en tiempo real: en un sistema que trabaje de esta forma se reciben muestras, normalmente provenientes de un conversor analógico/digital. Un DSP está diseñado teniendo en cuenta las tareas más habituales del procesado digital: sumas, multiplicaciones y retrasos. Los DSP abandonan la arquitectura clásica de Von Neumann, en la que datos y programas están en la misma zona de memoria, y apuestan por la denominada «Arquitectura Harvard». En una arquitectura Hardvard existen bloques de memoria físicamente separados para datos y programas. Incluso es posible que la memoria de datos tenga distinta anchura de palabra que la memoria de programa. Los elementos básicos que componen un DSP son: Conversores en las entradas y salidas, Memoria de datos, memoria de programa y DMA, MACs: multiplicadores y acumuladores, ALU: Unidad aritmético-lógica, Registros, PLL: Bucles enganchados en fase, PWM: Módulos de control de ancho de pulso. Son muchos los fabricantes de DSP, no obstante son pocos los que han sobrevido a la preferencia del consumidor. La tabla del cuadro 6.1 muestra una 91 92 CAPÍTULO 6. FAMILIAS DE DSP Analog Devices Phillips Texas Intruments Yamaha Motorola (FreeScale) Sony Hewlet Packard Airelog Device Cirrus ATT Creative SGS-Thomson Forte Media Cuadro 6.1: Fabricantes de procesadores digitales de señales lista con algunos fabricantes de microrocesadores. Como puede verse, en la lista de la figura 6.1 no aparece ARM, ésto por que esta empresa fabrica microcontroladores. Uno de los fabricantes más sobresalientes por su utilidad en equipo de medición y armamtento es TI. La figura 6.1 muestra la evolución de sus procesadores. 6.1. El objetivo de una arquitectura En su forma más simple, un sistema basado en DSP recibe datos desde un ADC. Los datos son procesados por un «procesador Digital de Señales», también conocido como DSP. Los resultados son entonces transformados de vuelta a su forma análoga mediante un DAC. El corazón de algoritmos DSP no ha cambiado desde los primeros días del DSP; esto es, aún evalúan la ecuación en diferencias fundamental, vea la figura 6.2. A menudo, esta ecuación se conoce como una «Suma de productos» o simplemente SOP1 . A su vez, cada producto que debe acumularse se denomina «multiplicación-acumulación» o simplemente MAC2 . TI se ha centrado, durante años, en desarrollar y proveer soluciones a los algoritmos basados en MAC. La gran variedad de DSP desarrollados es un testimonio de este enfoque. Así entonces, el objetivo de todo DSP es la codificación del código C mostrado en la figura 6.2 de manera que se realice lo más rápido posible. Diferentes medidas surgen para medir la eficiencia de un DSP en su función de procesar una señal de entrada con un filtro. Estas medidas son: MAC: Multiplicaciones-acumulaciones. Tipo de dato numérico. Precisión del dato numérico. 6.1. EL OBJETIVO DE UNA ARQUITECTURA 93 Figura 6.1: Generaciones de los DSP de TI. Figura tomada de [3]. L afigura ha sido modificada para este texto agregado al TMS32067X y al TMS32064X. 94 CAPÍTULO 6. FAMILIAS DE DSP Figura 6.2: Resumen de un sistema basado en DSP. Figura tomada de [6]. 6.2. DSP de primera generación (TMS320C10-14) De acuerdo a [2], un DSP de la familia TMS320C10-14 tiene las características siguientes: Ciclo de instrucción: • 160-ns (TMS320C10-25). • 200-ns (TMS320C10). • 280-ns (TMS320C10-14). 144 palabras de 16 bits en la RAM interna (montada sobre CI). 1.5K palabras de 12 bits en la ROM interna. Soporta expansión de memoria RAM de hasta 4K palabras. Multiplicador de 16 × 16 bits con producto de 32 bits. • Registro T de 16 bits. • Registro P de 32 bits. Desplazador de barril de 0 a 16 bits. ALU de 32 bits Registro de acumulación de 32 bits para el ALU 1 «SOP» es la abreviación de «Sum of Products» es la abreviación de «Multiply-Accumulate» 2 «MAC» 6.2. DSP DE PRIMERA GENERACIÓN (TMS320C10-14) Figura 6.3: Arquitectura del TM320C10 según [2]. 95 96 CAPÍTULO 6. FAMILIAS DE DSP Figura 6.4: Ruta de programa del TM320C10 Oscilador interno Voltaje de polarización a 5V. La figura 6.3 muestra la arquitectura del DSP TMS320C10-14. En este diagrama pueden verse claramente dos grupos de circuitos: La ruta del programa. La ruta de datos. La «ruta del programa» está conformada por la ROM, el PC y la unidad de control. Así la «ruta de datos» está conformada por los circuitos arimético-lógico, la RAM y los registros auxiliares. 6.2.1. Arquitectura Harvard El diagrama de la figura 6.3 muestra dos circuitos de memoria: Una ROM de 1.5 Kwords, en la cual cada palabra es una instrucción de 12 bits. Una RAM de 144 palabras en la cual cada palabra es un dato de 8 bits. Una «unidad de control»3 gestiona el procesamiento de cada instrucción. 6.2.2. La ruta del programa La «ruta del programa» está conformada por los elementos mostrados a continuación, mismo que pueden verse en la figura 6.4. 3 El lector puede notar que TI menciona la «unidad de control». Esto contradice lo mencionado en el capítulo anterior en donde se especifica que los procesadores Harvard no tienen unidad de control sino «decodificador». 6.2. DSP DE PRIMERA GENERACIÓN (TMS320C10-14) 97 El PC o contador de programa La ROM que contiene las instrucciones La pila La unidad de control El registro PC4 o «contador de programa» es un circuito contador de 12 bits que soporta carga paralela desde el bus de programa o desde una pila. Con 12 bits se pueden direccionar 4096 registros en la memoria de programa. El contador de programa avanza por sí mismo, dado que es un contador. En caso de un salto, la instrucción que provoca el salto requiere de dos palabras consecutivas en la memoria de programa, vea [2]. La primer palabra de 12 bits es la instrucción y la segunda palabra, también de 12 bits, es la dirección de salto. En el caso de invocarse una subrutina, la dirección de la instrucción siguiente se guarda en la pila y entonces ocurre un salto a subrutina. Cuando ocurre el retorno de subrutina, la dirección de retorno se toma de la pila. La memoria de programa almacena 1500 palabras de código. Cada palabra es de 12 bits. Este integrado soporta memoria externa con un direccionamiento de 16 bits. La pila5 contiene una profundidad de 4 registros, lo que permite a un programa invocar hasta cuatro subrutinas, una dentro de otra. 6.2.3. La ruta de datos La ruta de datos se compone de dos circuitos El circuito aritmético El circuito de memoria de datos tipo RAM 6.2.3.1. El circuito arimético y lógico Los circuitos arimtéticos, mostrados en la figura 6.5, las operiaciones aritméticas y las operaciones lógicas: La ALU realiza sumas, restas, complementos en punto fijo y las operaciones lógicas AND, OR, NOT, XOR. El multiplicador realiza las operaciones de multiplicación y de inversión en punto fijo. La multiplicación puede ser: • El registro T con un vlor inmediato: P ← T × < cte − 7 − bits >. • El registro con el registro P: P ← T × P . Circuitos para desplazamiento paralelo arimético y lógico de bits. 4 PC es la abreviación de «Programa Counter» pila es una estructura de datos en el cual, el último elemento en ingresar es el primero en salir. 5 La 98 CAPÍTULO 6. FAMILIAS DE DSP Figura 6.5: Circuitos para las operaciones lógico-aritméticas. La unidad que realiza la multiplicación ha sido desmitificada. 6.2. DSP DE PRIMERA GENERACIÓN (TMS320C10-14) 99 Figura 6.6: Circuitos de direccionamiento a memoria RAM interna. 6.2.4. Circuito de datos y modos de direccionamiento de datos Este DSP soporta los modos de direccionamiento Inmediato, Directo e Indirecto. La figura 6.6 muestra el circuito para direccionamiento de datos en la RAM interna. Modo de direccionamiento Inmediato Bajo el «modo de direccionamiento constante», el operando es una constante de 8 bits que se encuentra incluída en la instrucción recuperada de la ROM. Modo de direccionamiento directo Bajo el «modo de direccionamiento directo», una dirección de memoria de 7 bits está incluída en la instrucción recuperada de la ROM. En este modo de direccionamiento solamente se pueden direccionar 128 palabras de las 144 palabras que forman la RAM interna. Un registro de un bit llamadado DP ó «Data Page» permite incrementar la capacidad de direccionamiento hasta 256 palabras o bien, tener dos páginas de 128 palabras. Modo de direccionamiento indirecto Bajo el modo de direccionamiento indirecto, se usan los registros auxiliares AR0 y AR1. Sin la expansión de memoria, solamente se requieren de los 8 bits menos significativos. En una instrucción del procesador, se usa el registro ARP para indicar cual registro auxiliar será usado. 100 6.3. CAPÍTULO 6. FAMILIAS DE DSP DSP que opera en punto flotante (TMS320C30) Deacuerdo a [4], un DSP de la familia TMS320C30-50 tiene las características siguientes: Ciclo de instrucción 40ηs: Capacidad operativa: • 275 millones de operaciones aritmético-lógicas en punto fijo, por segundo (MOPS). • 50 millones de operaciones en punto flotante, por segundo (MFLOPS). • 25 millones de instrucciones por segundo (MIPS). Dos bloques RAM de 1K palabras. Cada palabra es de 32 bits. Cada bloque de RAM es de acceso dual Un bloque ROM de 4k palabras de 32 bits. Un bloque de memoria cache de 64 palabras. Cada palabra de 32 bits. Soporta expansión de memoria RAM con direccionamiento de 14 bits y de 13 bits y longitud de palabra de 32 bits. Multiplicador • Operaciones en punto fijo de 32 bits • Operaciones en punto flotante de 16/32 bits • Operaciones en punto flotante de 32/40 bits Desplazador de barril de 0 a 32 bits. ALU de 32 bits. El ALU y el multiplicador pueden operar en paralelo. Ocho registros auxiliares. Doce registros de usuario. Dos juegos de buses • Bus datos y bus de direcciones para memoria interna • Bus datos y bus de direcciones para memoria externa Controlador de acceso directo a memoria. Voltaje de polarización a 5V. Una unidad de control se encarga de generar las señales para el procesamiento de una instrucción. Ahora bien, note que el DSP puede ejecutar mas operaciones en punto flotante que instrucciones puede procesar la unidad de control. 6.3. DSP QUE OPERA EN PUNTO FLOTANTE (TMS320C30) 101 Figura 6.7: Arquitectura simplificada del TMS320C30. Diagrama tomado de [5] 6.3.1. La arquitectura La figura 6.7 es una representación simplificada del CPU TMS320C30. En este diagrama pueden verse los siguientes registros: r0 a r7: Registros de precisión extendida. Estos regsitros son principalmente empleaados para la manipulación de datos. Estos registros pueden ser empleados para operaciones en punto flotante de 32 bits y operaciones en punto flotante de precisión extendida a 40 bits. ar0 a ar7: Registros auxiliares. Estos registros son comúnmente usados para retener las direcciones de datos en memoria, es decir, estos registros se usan como punteros. Los registros, al estar conectados a dos ALU, denominadas ARAU (Auxiliary Register Arithmetic Units), soportan arimética de punteros como incremento, decremento o suma de un desplazamiento. ir0 e ir1: Registros índice. sp,pc,st: Puntero de pila, contador de programa y registro de estado. Otros registros: Hay un juego completo de registros para controlar el comportamiento del procesador. Estos registros no serán vistos aquí. 6.3.2. Modos de direccionamiento El TMS320C30 tiene cuatro modos de direccionamiento: Inmediato El operando es una constante que viene incluida en la instrucción. Registro El operando es un registro. 102 CAPÍTULO 6. FAMILIAS DE DSP Directo El operando es una constante que representa la dirección de una variable en memoria. Indirecto El operando es un regsitro auxiliar, el cual contiene la dirección de una variable en memoria. En este caso al registro se le antepone un «*». 6.4. DSP C6000 La familia de DSP C6000 se pone a la vanguardia6 con nuevos nucleos semisuperescalares. Esta familiar consiste de dos ramas, la rama C64x, que puede realizar de una hasta seis operaciones por ciclo de reloj y la rama C67x que puede realizar de una hasta ocho operaciones por ciclo de reloj. Estos procesadores son la más notable definición de un procesasor Harvard encauzado. Algunas revisiones de la familia C6000 cuentan con co-procesadores, los cuales realizan funciones especiales, es decir, decodificadores vitervi y codificadores ATM. Para ponerse a la moda, versiones avanzadas de esta familia implementan el concepto de multinúcleo. Así se tienen versiones de cuatro núcleos y versiones de ocho núcleos. Éstas últimas tienen un límite teórico de 22.4 GFlops. 6.4.1. Arquitectura del núcleo El núcleo base de la familia C6000 se puede ver en la figura 6.8. En esta figura pueden verse las etapas de procesamiento de la instrucción: Fetch o búsqueda. Dispatch o Lanzamiento. Decode o Decodificación. Execute o Ejecución. Considérese que se trata de un procesador de instrucciones de palabra larga, asíu que el circuito «Fetch», en la rama del C64x recupera hasta 6 operaciones por acceso a la memoria de instrucciones L1P, en tanto que, en la rama C67x, se recuperan hasta 8 operaciones por acceso. Cada «operación» tiene un bit que indica si debe ejecutarse en paralelo con la «operación» anterior. Si este bit es nulo en todas las «operaciones», el circuito «Dispath» entregará una a una las «operaciones» al circuito «Decode». En cambio, si este bit está habilitado, el «Dispatch» entregará de dos hasta ocho «operaciones» al circuito «Decode». El circuito «Decode», debe recibir las operaciones en un orden particular, el cual es calculado por el circuito anterior. El circuito «Decode» entonces calcula las señales de control que serán alimentadas a cada unidad operativa y a los bancos de registros A y B: «A Register File» y «B Register File». 6 Esta vanguardia ocurre entre los años 2008 y 2012. 6.4. DSP C6000 103 Figura 6.8: Núcleo común de la familia C6000. Las unidades M1 y M2 son para operaciones en punto flotante y no están presentes en todos los miembros de la familia. La Ejecución de la instrucción está a cargo de una de ocho unidades operativas que, junto con los bancos de registros, forman dos rutas de datos: «Data Path A» y «Data Path B». Las unidades operativas son: Logic (L1 y L2) son para operaciones lógicas principalmente. Shift (S1 y S2) manipulación de bits principalmente. Multiply (M1 y M2) multiplicaciones en punto flotante principalmente. Data (D1 y D2) Transferencias entre memoria y registros del procesador. Las unidades operativas tienen capacidad para operar en paralelo. Cada banco de regsitros puede contener de 16 regsitros, cada uno de 32 bits. Si fuese necesario, los registros pueden accesarse en parejas como si fueran registros de 64 bits. En la figura 6.8 también pueden apreciarse dos bloques de memoria de 4Kbytes: «L1D» para datos y «L1P» para código. El bloque «L1D» tiene capacidad para dos accesos de lectura-escritura a la vez. Estos accesos son realizados por las unidades D1 y D2. 6.4.2. Instrucciones de palabra larga o VLIW Los procesadores C67x hacen uso de una arquitectura VLIW como una forma de lograr paralelismo en sus operaciones. Esto es posible dado que el núcleo 104 CAPÍTULO 6. FAMILIAS DE DSP Figura 6.9: Codificación de un programa C a ensamblador C6000. Las instrucciones en ensamblador serán interpretadas por el compilador para ejecución en paralelo debido a la doble barra vertical ||. Figura tomada de [6]. exige de la memoria L1P ocho operaciones en un mismo ciclo. Cabe mencionar que la familia C6000, a pesar la capacidad de realizar varias opraciones en un único ciclo, no implica superescalabilidad ya que este paralelismo no lo realiza el hardware, sino más bien, la buena planificación del programador. La figura 6.9 muestra como se pueden codificar las líneas del programa C de la figura 6.2 en instrucciones ensmablador para su ejecución en paralelo. El lector debe considerar que el ejemplo de la figura, aunque funcional, requiere de un análisis exhaustivo para entender como lo hace dada la obvia dependencia de las instrucciones. 6.4.3. Arquitectura completa del C6000 La figura 6.10 ilustra la arquitectura completa del C6415. Este DSP es bastante representativo de la familia C6000 ya que todos son semejantes, talvez, con algunos circuitos más y con algunos circuitos menos. En el digrama de la figura pueden notarse los sigueintes componentes: Dos niveles de memoria • Memoria de nivel 1. Dos bloques de memoria para datos (L1D) y para código (L1P). • Memoria de nivel 2. Un bloque único de memoria para datos y código. La memoria L2 suele usar tres cuartos de capacidad para código y el resto es para datos. 6.4. DSP C6000 105 Figura 6.10: Arquitectura del DSP C6415. Todos los procesadores C6000 comparten esta arquitectura, con algunos dispositivos más y algunos dispositivos menos. Figura tomada de [6]. Buses internos de alta tasa de transferencia. • Bus ancho de 256 bits y 32GB/s para transferencia de código del bloque L1P al núcleo del procesador. • Bus ancho de 256 bits y 32GB/s para transferencia de información entre la memoria L2 y la memoria L1P • Bus ancho de 64 bits y 16GB/s para transferencia de datos entre el bloque L1D y el núcleo del procesador. • Bus ancho de 64 bits y 16GB/s para transferencia de datos entre el bloque L2 y la memoria L1D • Bus de 8 bits y 2.9 GB/s para transferencia entre el circuito DMA y la memoria L2. Circuitos de comunicación, EMIF, McBSP y demás. Estos circuitos permiten la expansión de memoria y comunicación otros circuitos como DAC, ADC, etc. 6.4.4. Comunicación con la familia C6000 Cada procesador de la familia C6000 contiene una variedad de periféricos que facilitan la comunicación con circuitos como una expansión de memoria, un co-procesador y otros dispositivos como un DAC y un ADC. Estos periféricos hacen interfaz entre el CPU o núcleo y algún dispositivo externo. El diagrama de la figura 6.11 da una idea de que se puede conectar a un miembro de la 106 CAPÍTULO 6. FAMILIAS DE DSP Figura 6.11: Circuitos que pueden conectarse a un miembro de la familia C6000. No todos los miembros de la familia tiene los periféricos mostrados en la figura. Figura tomada de [6]. familia C6000. A continuación se describen brevemente algunas de las conexiones mostradas. Viterbi Coprocessor (VCP) Viterbi es un decodificador empleado para detectar y corregir bits erróneos. Usado para aplicaciones de comunicación inalámbrica 3G. Soporta más de 500 canales de voz a 8kbps. Disponible en el C6416. Turbo Decoder Coprocessor (TCP) Usado para aplicaciones de comunicación inalámbrica 3G. Soporta 35 canales de datos a 384kbps. 6.4. DSP C6000 107 Turbo codificador 3GPP7 /IS20008 . Disponible en el C6416. Timer / Counters Dos (o tres) circuitos temporizador/contador de 32 bits. • Se pueden usar como contador de eventos externos. • Se pueden usar como contador de pulsos de reloj internos. Pueden generar: • Interrupciones al CPU. • Eventos DMA/EDMA. • Generar pulsos fuera del DSP. • Cada circuito temporizador/contador tiene terminales de entrada/salida. General Purpose Input/Output (GPIO) Para observar o para controlar señales en un único terminal. Terminales dedicados GPIO solamente en C6713 y dispositivos C64x. Todos los dispositivos C6000 tiene terminales compartidos entre GPIO y otros periféricos. Hardware Interrupts (HWI) Permiten sincronización con el mundo exterior. • Cuatro terminales configurables para interrupción. • Un terminal para interrupción no mascarable. 7 El «Proyecto Asociación de Tercera Generación» o más conocido por el acrónimo inglés «3GPP 3rd Generation Partnership Project» es una colaboración de grupos de asociaciones de telecomunicaciones, conocidos como «Miembros Organizativos». El objetivo inicial del 3GPP era asentar las especificaciones de un sistema global de comunicaciones de tercera generación para móviles basándose en las especificaciones del sistema evolucionado "Global System for Mobile Communications" o GSM dentro del marco del proyecto internacional de telecomunicaciones móviles 2000 de la Unión Internacional de Telecomunicaciones ITU. Fuente http://es.wikipedia.org/wiki/3GPP. 8 IS2000 es como se conoce también al estándar de interfaz inalámbrica CDMA2000. Este estándar opera en un par de canales de 1.25-MHz y duplica la capacidad de voz sobre las redes IS-95. Aunque capaz de soportar altas velocidades de datos, la mayoría de desarrollos están limitados a una velocidad pico de 144 kbits/s. Mientras 1xRTT es calificado oficialmente como una tecnología 3G, 1xRTT es considerado por algunos como una tecnología 2.5G (o a veces 2.75G). Esto ha permitido que sea implementado en el espectro 2G en algunos países limitando los sistemas 3G a ciertas bandas. 108 CAPÍTULO 6. FAMILIAS DE DSP • Un terminal de reset. El CPU C6000 soporta doce fuentes de interrrupción. Algunas propiedades que pueden configurarse son: • Fuente de interrupción. • Dirección de la rutina del servicio de interrupción. • Circuito despachador de interrupciones hardware. • Anidamiento de interrupciones. El sistema software llamadao DSP/BIOS tiene código para administrar los servicios de interrupción. Parallel Peripheral Interface C6000 proporciona tres interfaces paralelas diferentes, por supuesto cuales interfaces están incluídas en el encapsulado depende del dispositivo sobre el cual se programa: • HPI (Host Post Interface) : Permite a otro procesador accesar a la memoria del núcleo C6000 usando un bus dedicado de 16/32 bits. En este caso el núcleo del C6000 es esclavo. • XBUS (Expansion Bus) : Es similar al HPI pero proporciona un bus de 32 bits, modos maestro o esclavo, modos de transferencia síncronos y tasas de transferencia que igualan el reloj del procesador. • PCI (Peripheral Component Interconnect): Interfaz estándar maestro/esclavo de 32 bits. Direct Memory Access (DMA / EDMA) Un «Acceso Directo a Memoria» es una técnica que permite a un periférico transferir datos entre el interfaz de comuninicación y la memoria L2 sin intervención del núcleo del procesador. Un canal DMA implica una transferencia en proceso. Algunos procesadores soportan varios canales operando al mismo tiempo, en forma intercalada. Cada miembro de la familia C6000 tiene canales DMA y EDMA. Las transferencias pueden ser del tipo: • Interfaz-memoria. • memoria-memoria. Las transferencias pueden ser síncronas, es decir, disparadas por un evento interno o externo. Operación independiente del núcleo del procesador. 6.4. DSP C6000 109 4/16/64 canales DMA. Las diferencias entre sistemas DMA y EDMA son: • DMA: Ofrece cuatro canales totalmente configurables (un canal adicional para el HPI), sincronización de eventos, modo dividido para su uso con el periférico McBSP y dirección/cuenta de recarga. • EDMA: DMA mejorado (EDMA) ofrece 16 canales totalmente configurables (64 canales en los dispositivos C64x), sincronización de eventos, la vinculación de canales y autoinicialización de canal. Boot Loader Luego de un «reset», el CPU comienza a ejecutar algún código, este código puede ser un programa llamado «bootloader», el cual: • Automáticamente copia el código y datos en la memoria. • Permite a un sistema anfitrión leer/escribir código en la memoria interna al procesador y en la memoria externa al procesador. Esto ocurre vía los puertos HPI, XBUS o PCI. • Permite al CPU comenzar la ejecución desde la dirección cero. External Memory Interface (EMIF) El periférico EMIF es la interfaz entre el CPU y un bloque de memoria. EMIF tiene un conjunto de terminales que permite la conexión con varios tipos de memorias. Acceso sin sola a memroias síncronas y asíncronas. Trabaja con PC100 SDRAM9 . En este caso, EMIF provee un bus de 8 bits para datos. EMIF provee un bus de 16/32/64 bits de ancho para direcciones. Ethernet Interfaz Ethernet 10/100. Pila optimizada TCP/IP (se usa bajo licencia). 9 PC100 es un estándard para circuitos removibles de memoria. Estos circuitos operan a 100MHz sobre un bus de 64 bits y con una alimentación de 3.3V. Una memoria PC100 se conforma de un conjunto de circuitos que no necesariamente funcionan a 100MHz. Fuente http://en.wikipedia.org/wiki/PC100. 110 CAPÍTULO 6. FAMILIAS DE DSP Multi-Channel Buffered Serial Port (McBSP) Este perierico provee una interfaz para comunicación «serial» y «asíncrona». Dispositivos tales como ADC y DAC ya trabajan con este tipo de interfaz. Son dos (o tres) puertos los que se incluyen en el encapsulado. La comunicación puede ser «Full-duplex». El puerto tiene dos circuitos independientes para transmisión y recepción. Tasa de transferencia hasta de 100Mbps. Soporta los siguientes modos de transferencia • SPI (Serial Peripheral Interface) • AC97 (Audio Codec 97) • Operación de canal múltiple. Esta característica lo hace útil para aplicaciones telefónicas con portadoras T1, E1, MVIP, etc. • RS-232 Multichanel Audio Serial Port (McASP) Este puerto es sucesor del McBSP y además agrega: Está preparado para aplicaciones de audio multicanal: monaural, esterofónico, estereo 2.1 y surround en sus versiones 5.1, 6.1 y 7.1. • El puerto soporta hasta 8 canales para entrada y 8 canales para salida (16 canales en total). • Frecuencia de muestreo por canal de 192kHz. Formato de transmisión • Multi-pin IIS para interfaz de audio • Multi-pin DIT para interfaces digitales. Este puerto está disponible en C6713 y DM642. Universal Test and Operations PHY Interface for ATM (UTOPIA) Para conexión con sistemas bajo el protocolo ATM10 . Dos Interfaces esclava UTOPIA. Conexiones con redes de area amplia a 50MHz. Interfaz de 8 bits. Disponible en dispositivos C64x. 10 ATM es abreviación para «Asyncrhonous Transfer Mode». 6.4. DSP C6000 111 PLL Interconstruído en el integrado hay un PLL, el cual puede multiplicar en una o más veces la frecuencia del reloj provisto en forma externa. El uso del PLL simplifica la tecnología del reloj y reduce la interferencia electromagnética. Power Down La familia C6000 soporta varios modos de reduccion en el consumo de energía. Uno de estos modos pone en pausa al procesador en lo que un evento externo ocurre. 112 CAPÍTULO 6. FAMILIAS DE DSP Capítulo 7 El TMS320C6713 113 114 CAPÍTULO 7. EL TMS320C6713 Capítulo 8 Puertos seriales 115 116 CAPÍTULO 8. PUERTOS SERIALES Apéndice A Redes de resistencias Definición A.1 Se le denomina resistencia eléctrica a la igualdad de oposición que tienen los electrones al desplazarse a través de un conductor. La unidad de resistencia en el Sistema Internacional es el ohmio, que se representa con la letra griega omega (Ω), en honor al físico alemán George Ohm, quien descubrió el principio que ahora lleva su nombre. Definición A.2 Ley de ohm. la resistencia de un material puede definirse como la razón entre la diferencia de potencial eléctrico V y la corriente en que atraviesa dicha resistencia I, así: R= A.1. V I (A.1) Circuitos serie y paralelo Teorema A.1 Resistencia equivalente. Se denomina resistencia equivalente de un arreglo de resistencias, respecto de dos puntos A y B, a aquella que conectada a la misma diferencia de potencial, demanda la misma intensidad de corriente. Esto significa que ante las mismas condiciones, el arreglo de resistencias y su resistencia equivalente disipan la misma potencia. Este concepto queda ilustrado en la figura A.1. Definición A.3 Resistencias en serie. Dos o más resistencia sse ecuentran conectadas en serie cuando al aplicar al conjunto una misma diferencia de potencial, todas ellas son recorridas por la misma corriente. 117 118 APÉNDICE A. REDES DE RESISTENCIAS Figura A.1: Asociaciones generales de resistencias: a) Serie y b) Paralelo. c) Resistencia equivalente. Teorema A.2 Equivalente de resistencias en serie. Para encontrar la resistencia equivalente de un grupo de resistencias en serie únicamente se suman sus valores. Así entoces, dado el diagrama de circuito a la izquierda de la figura, su resistencia equivalente se calcula como: Rtot = R1 + R2 + . . . + RN (A.2) Definición A.4 Resistencias en paralelo. Dos o más resistencias se encuentran en paralelo cuando tienen dos terminales comunes de modo que al aplicar al conjunto una diferencia de potencial, VAB , todas las resistencias tienen la misma caída de tensión, VAB . Teorema A.3 Equivalente de resistencias en paralelo. Para encontrar la resistencia equivalente de un grupo de resistencias en paralelo se calcula el inverso de la suma de inversos de los valores de resistencias. A.2. Thevenin-Norton El «teorema de Thévenin» fue enunciado por primera vez por el científico alemán Hermann von Helmholtz en el año 1853, pero fue redescubierto en 1883 por el ingeniero de telégrafos francés Léon Charles Thévenin (1857–1926), de quien toma su nombre. El «teorema de Thévenin» es el dual del «teorema de Norton». A.2. THEVENIN-NORTON 119 Figura A.2: Circuito equivalente de Thevenin de una red eléctrica. Figura A.3: Circuito equivalente de Norton de una red eléctrica. Teorema A.4 Equivalente Thévenin de un circuito. establece que si una parte de un circuito eléctrico lineal está comprendida entre dos terminales A y B, esta parte en cuestión puede sustituirse por un circuito equivalente que esté constituido únicamente por un generador de tensión en serie con una impedancia, de forma que al conectar un elemento entre los dos terminales A y B, la tensión que cae en él y la intensidad que lo atraviesa son las mismas tanto en el circuito real como en el equivalente. El «teorema de Norton» para circuitos eléctricos es dual del teorema de Thévenin. Se conoce así en honor al ingeniero Edward Lawry Norton, de los Laboratorios Bell, que lo publicó en un informe interno en el año 1926. El alemán Hans Ferdinand Mayer llegó a la misma conclusión de forma simultánea e independiente. Teorema A.5 Equivalente Norton de un circuito. Cualquier circuito lineal se puede sustituir por una fuente equivalente de intensidad en paralelo con una impedancia equivalente. 120 APÉNDICE A. REDES DE RESISTENCIAS Bibliografía [1] IEEE punto flotante. [2] SPRS009C. Texas Instruments Incorporated, Houston, Texas 77001, 1991. [3] SPRU031D. Texas Instruments Incorporated, 1994. [4] SPRS032A. Texas Instruments Incorporated, Houston, Texas 77251–1443, 1997. [5] John Reekie. Realtime DSP: The TMS320C30 Course. Realtime DSP: The TMS320C30 Course, 1994. [6] C6000 Integration Workshop. C6000 Introduction. C6000 Integration Workshop. 121