Universidad de Guadalajara Centro Universitario de Ciencias Exactas e Ingenierı́as División de Electrónica y Computación Departamento de Electrónica GENERACIÓN DE MÓDULOS ARITMÉTICOS EN PUNTO FLOTANTE PARA PROCESAMIENTO DIGITAL DE ALTAS PRESTACIONES Para obtener el grado de Maestro en Ciencias en Ingenierı́a Electrónica y Computación Presenta: Gerardo Leyva Hernández Directora de tesis: Dra. Susana Ortega Cisneros Co-director de tesis: Dr. Juan José Raygoza Panduro 12 de febrero de 2010 Índice general Índice de acrónimos vii 1. Introducción 1.1. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2. Organización de la tesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 3 4 2. Conceptos básicos y revisión del estado del arte 2.1. Conceptos de representación numérica en punto flotante . . . . . . . . . . . . 2.1.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2. Normalización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3. Operaciones aritméticas básicas . . . . . . . . . . . . . . . . . . . . . . 2.1.4. Redondeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.5. Formato de representación . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.6. Estándar IEEE 754-1985 . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2. FPGAs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1. Historia de las FPGAs . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.2. Arquitectura de las FPGAs . . . . . . . . . . . . . . . . . . . . . . . . 2.2.3. Evolución de las FPGAs . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.4. Flujo de diseño con FPGAs . . . . . . . . . . . . . . . . . . . . . . . . 2.2.5. Aplicaciones de las FPGAs . . . . . . . . . . . . . . . . . . . . . . . . 2.3. Implementación de punto flotante en FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1. Implementación de unidades de punto flotante de acuerdo al estándar IEEE 754 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.2. Implementaciones en punto flotante en formato similar al estándar IEEE 754 con longitud de palabra reducida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.3. Implementaciones de punto flotante con longitud de palabra parametrizable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 5 6 7 7 9 11 12 12 14 18 18 19 19 20 22 23 25 3. Arquitectura y algoritmos de unidades de punto fijo y de punto flotante en FPGA 26 3.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.2. Algoritmo de sumadores de punto flotante . . . . . . . . . . . . . . . . . . . . 27 i 3.3. Algoritmo de multiplicadores de punto flotante . . . . . 3.4. Algoritmos de módulos lógicos y aritméticos de punto fijo . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.1. Sumadores enteros . . . . . . . . . . . . . . . . . 3.4.2. Multiplicadores binarios . . . . . . . . . . . . . . 3.4.3. Circuitos de desplazamiento . . . . . . . . . . . . 3.4.4. Detector de uno por la izquierda . . . . . . . . . 3.5. Arquitecturas de unidades de punto flotante . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5.1. Arquitectura estándar de la suma . . . . . . . . . 3.5.2. Arquitectura de la suma con LOP . . . . . . . . 3.5.3. Arquitectura del multiplicador en punto flotante 3.6. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . 4. Generación automática de módulos de punto fijo y 4.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . 4.2. Arquitectura de la herramienta . . . . . . . . . . . . 4.3. Estructura . . . . . . . . . . . . . . . . . . . . . . . . 4.3.1. Especificación hardware del algoritmo . . . . 4.3.2. Estimación de prestaciones . . . . . . . . . . 4.3.3. Generación automática del hardware . . . . . 4.4. Conclusiones . . . . . . . . . . . . . . . . . . . . . . de . . . . . . . . . . . . . . . . . . . . . . . . . . 27 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 28 29 30 30 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 32 32 32 33 punto flotante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 34 35 36 36 37 39 39 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 41 42 42 42 43 44 44 44 44 47 49 49 52 53 55 5. Implementación de módulos de punto fijo y punto flotante 5.1. Segmentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2. Componentes lógicos y aritméticos de punto fijo . . . . . . . . . 5.2.1. Suma . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.2. Suma/Resta . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.3. Decremento . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.4. Incremento . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.5. Desplazamiento logarı́tmico a la deracha . . . . . . . . . 5.2.6. Multiplexores . . . . . . . . . . . . . . . . . . . . . . . . 5.2.7. Mult . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.8. Sı́ntesis de componentes lógicos y aritméticos en FPGAs 5.3. Unidades de punto flotante . . . . . . . . . . . . . . . . . . . . 5.3.1. Sumador de punto flotante . . . . . . . . . . . . . . . . 5.3.2. Multiplicador de punto flotante . . . . . . . . . . . . . . 5.3.3. Sintesis de unidades de punto flotante en FPGAs Virtex 5.4. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Virtex . . . . . . . . . . . . . . . . . . . . 6. Algoritmos DSP con aritmética de punto fijo y punto flotante 6.1. Conceptos básicos de la transformada de Fourier . . . . . . . . . . 6.1.1. Arquitectura hardware de la FFT . . . . . . . . . . . . . . 6.2. Sı́ntesis de la transformada de Fourier con aritmética de punto fijo . . . . . . . . . . . . . . . . . . . . . . . . 6.3. Filtros digitales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.4. Conceptos básicos del filtro FIR . . . . . . . . . . . . . . . . . . . . 6.5. Diseño de filtros FIR . . . . . . . . . . . . . . . . . . . . . . . . . . ii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 . . . . . . 56 . . . . . . 58 . . . . . . . . . . . . . . . . . . . . . . . . 59 61 62 62 6.6. Filtros FIR con aritmética de punto fijo . . . . . . . . . . . . . . . . . . . . . 63 6.7. Filtros FIR con aritmética de punto flotante . . . . . . . . . . . . . . . . . . . 63 6.8. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 7. Consideraciones finales 69 A. Plataforma de prototipado basada en FPGA A.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . A.2. Descripción de la placa . . . . . . . . . . . . . . . . . . . . A.2.1. El microcontrolador . . . . . . . . . . . . . . . . . A.2.2. Formato del archivo de configuración . . . . . . . . A.2.3. Memoria de configuración serie para modo maestro A.2.4. Monitorización . . . . . . . . . . . . . . . . . . . . A.3. Programación de la FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 72 73 73 74 74 74 74 B. Manual de utilización de la herramienta AGAVE 76 B.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 B.2. Parámetros de los CORES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 C. Publicaciones 79 iii Índice de figuras 2.1. Modos de redondeo del estándar IEEE 754. Se asume que tanto x como y son positivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2. Estructura de un PLA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3. Estructura interna de una PAL . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4. Estructura interna de un CPLD . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5. Estructura interna de una FPGA . . . . . . . . . . . . . . . . . . . . . . . . . 2.6. Sección de la estructura interna de un CLB que muestra una LUT y un FF . 9 13 14 15 16 17 3.1. Arquitecturas de sumadores de punto flotante . . . . . . . . . . . . . . . . . . 31 3.2. Arquitectura de multiplicador de punto flotante . . . . . . . . . . . . . . . . . 33 4.1. Arquitectura de la herramienta AGAVE . . . . . . . . . . . . . . . . . . . . . 36 5.1. Comparación de ocupación de área para los multipplicadores basados en SLICES y en DSP48 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2. Comparación de ciclo de reloj para multiplicadores basados en SLICES y en DSP48 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3. Resultados de implementación de submódulos en perı́odo de reloj . . . . . . . 5.4. Resultados de implementación de submódulos en área . . . . . . . . . . . . . 5.5. Resultados de submódulos con diferentes niveles de segmentación . . . . . . . 5.6. Resultados de implememtación de sumador de punto flotante . . . . . . . . . 5.7. Resultados de implememtación de multiplicador de punto flotante . . . . . . . 6.1. 6.2. 6.3. 6.4. 6.5. 6.6. 6.7. 6.8. 6.9. Transformada de Fourier 8 puntos, radix 2 . . . . . . . . Procesador de una FFT radix-2, 16 puntos . . . . . . . Procesador de cada etapa de la FFT . . . . . . . . . . . Conmutador y memorias de doble puerto en la FFT . . Área de implementaciones FFT radix-2 . . . . . . . . . Perı́odo de reloj de implementaciones FFT radix-2 . . . Perı́odo de reloj de FFT implementadas en Virtex-5 . . Filtro FIR . . . . . . . . . . . . . . . . . . . . . . . . . . Comparativa para el CORE FIR de 4 etapas,con y sin componentes y aritmética de punto flotante . . . . . . . 6.10. Comparativa para el CORE FIR de 8 etapas,con y sin componentes y aritmética de punto flotante . . . . . . . 6.11. Comparativa para el CORE FIR de 16 etapas,con y sin componentes y aritmética de punto flotante . . . . . . . iv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . segmentación . . . . . . . . segmentación . . . . . . . . segmentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . entre . . . . entre . . . . entre . . . . 46 47 48 49 50 54 54 57 57 58 59 60 60 61 62 66 67 68 6.12. Comparativa para el CORE FIR de 8 y 16 etapas,con y sin segmentación entre componentes y aritmética de punto flotante . . . . . . . . . . . . . . . . 68 A.1. Placa de prototipado de FPGAs Virtex . . . . . . . . . . . . . . . . . . . . . 73 A.2. Encadenamiento en Serie de las placas de prototipado . . . . . . . . . . . . . 75 v Índice de tablas 2.1. 2.2. 2.3. 2.4. 2.5. Desplazamientos en la suma de punto flotante . . . . . . . . . . . . . . . . . . 8 Reglas de redondeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Parámetros de los formatos especificados por el estándar IEEE 754-1985 . . . 11 Ancho de palabra de los formatos especificados por el estándar IEEE 754-1985 11 Codificación de varios datos en punto flotante en precisión simple . . . . . . . 12 5.1. 5.2. 5.3. 5.4. 5.5. 5.6. 5.7. 5.8. 5.9. Resultados de sı́ntesis para el CORE suma . . . . . . . . . . . . . . . . . . . . Resultados de sı́ntesis para el CORE suma-Resta . . . . . . . . . . . . . . . . Resultados de sı́ntesis para el CORE decremento . . . . . . . . . . . . . . . . Resultados de sı́ntesis para el CORE incremento . . . . . . . . . . . . . . . . Resultados de sı́ntesis para el CORE desplazamiento a la derecha . . . . . . . Resultados de sı́ntesis para el CORE multiplexor . . . . . . . . . . . . . . . . Resultados de sı́ntesis para el CORE mult . . . . . . . . . . . . . . . . . . . . Resultados de sı́ntesis para el CORE multArray . . . . . . . . . . . . . . . . . Resultados de sı́ntesis para el CORE sumador de punto flotante, entrada y salida registrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.10. Resultados de sı́ntesis para el CORE sumador de punto flotante, entrada y salida registrada y además, salidas de CORES internos registradas . . . . . . 5.11. Resultados de sı́ntesis para el CORE multipplicador de punto flotante, entrada y salida registrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.12. Resultados de sı́ntesis para el CORE multipplicador de punto flotante, entrada y salida registrada y además, salidas de CORES internos registradas . . . . . 43 43 43 44 44 45 45 46 6.1. Resultados de sı́ntesis para el CORE FFT radix-2, aritmética de punto fijo. . 6.2. Resultados de sı́ntesis para el CORE FIR de cuatro etapas, aritmética de punto fijo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3. Resultados de sı́ntesis para el CORE FIR de 4, 8 y 16 etapas,sin segmentación entre componentes y aritmética de punto flotante. . . . . . . . . . . . . . . . 6.4. Resultados de sı́ntesis para el CORE FIR de 4, 8 y 16 etapas,con segmentación entre componentes y aritmética de punto flotante. . . . . . . . . . . . . . . . 60 vi 50 51 52 53 64 64 65 Índice de acrónimos ASIC Application Specific Integrated Circuit. 1 CAD Diseño asistido por computadora. 1 CPLD Complex Programmable Logic Devices. 13 CSA Carry-Save Adder. 30 DSP Procesamiento Digital de Señal. 1, 10, 16, 36 EEPROM Electrically-Erasable Programmable Read-Only Memory. 73, 74 FFT Fast Fourier Transform (Transformada rápida de Fourier). 19 FIR Respuesta finita al impulso. 61 FPD Field-Programmable Devices. 12 FPGA Field-Programmable Gate Array. 1–3, 5, 12, 19–26, 39, 53, 72–75 HPC High Performance Computing. 19 IIR Respuesta infinita al impulso. 61 JTAG Joint Test Action Group. 72 LED Light-Emitting Diode. 73, 74 LOP Leading-One Predictor. 27, 31, 32 LTI lineales invariantes en el tiempo. 61 LUT Look-Up Table. 14, 36 PAL Programmable Array Logic. 13 PDSP Procesador Digital de Señal Programable. 19 PLA Programmable Logic Array. 12, 13 vii PROM Programmable Read-Only Memory. 12 RAM Random Access Memory. 36 ROM Read-Only Memory. 36 SOC System On Chip. 12, 19 VHDL Very High-speed Integrated Circuit Harware Description Language. 1, 3, 39 viii