Guía de diseño FPGA: un catálogo de dispositivos, herramientas y flujos
Introducción al Capítulo 1
1.1 Qué es FPGA
1.2 Por qué son interesantes los FPGA
1.3 ¿Cuáles son los usos de los FPGA?
1.4 Contenido de este libro
1.5 Qué no incluye este libro
1.6 Lectores destinatarios
Capítulo 2 Conceptos básicos
2.1 Núcleo de FPGA
2.2 Función programable simple
2.3 Tecnología de conexión de fusibles
2.4 Tecnología antifusibles
2.5 Programación del módulo de máscara dispositivo
2.6 PROM
2.7 Tecnología basada en EPROM
2.8 Tecnología basada en EEPROM
2.9 Tecnología basada en memoria Flash
p>
2.10 Tecnología basada en SRAM
2.11 Resumen
Capítulo 3 El origen de FPGA
3.1 Tecnologías relacionadas
3.2 Transistores
3.3 Circuitos integrados
3.4 SRAM/DRAM y microprocesadores
3.5 SPLD y CPLD
3.5.1 PROM
3.5.2 PLA
3.5.3 PAL y GAL
3.5.4 Otras opciones programables
3.5.5 CPLD p> p>
3.5.6 ABEL, CUPL, PALASM, JEDEC, etc.
3.6 Circuitos integrados de aplicación específica (gate arrays, etc.)
3.6.1 Personalización completa
3.6.2 Micromatrix y Micromosaic
3.6.3 Matriz de puertas
3.6.4 Dispositivo de unidad estándar
3.6.5 ASIC estructurado
3.7 FPGA
3.7.1 Plataforma FPGA
3.7.2 Híbrido FPGA-ASIC
3.7.3 Cómo los fabricantes de FPGA chips de diseño
Capítulo 4 Comparación de estructuras FPGA
4.1 Un pequeño recordatorio
4.2 Algunos antecedentes
4.3 Antifuse, SRAM y otros
4.3.1 Dispositivos basados en SRAM
4.3.2 Problemas y soluciones de seguridad para dispositivos basados en SRAM
4.3.3 Dispositivos basados en Antifuse
4.3.4 Dispositivos basados en EPROM
4.3.5 Dispositivos basados en E2PROM/FLASH
4.3.6 Dispositivos híbridos FLASH-SRAM
4.3 7 Resumen
4.4 Estructuras de grano fino, medio y grueso
4.5 Bloques lógicos basados en MUX y LUT
4.5.1 MUX-. estructuras basadas
p>
4.5.2 Estructura basada en LUT
4.5.3 Basado en MUX o LUT
4.5.4 3, 4, LUT de 5 o 6 entradas
4.5.5 LUT y RAM distribuida y SR
4.6 CLB, LAB y cortes
4.6.1 Unidad lógica Xlilinx
4.6.2 Componentes lógicos de Altera
4.6.3 Cortar y cortar en cubitos
4.6.4 CLB y LAB
4.6.5 RAM distribuida y turno registrarse
4.7 Cadena de transporte rápido
4.8 RAM integrada
4.9 Multiplicador, sumador, MAC, etc. integrados.
4.10 Núcleo de procesador integrado (duro y blando)
4.10.1 Núcleo de microprocesador duro
4.10.2 Núcleo de microprocesador blando
4.11 Árbol de reloj y gestión del tiempo
Controlador
4.11.1 Árbol de reloj
4.11.2 Administrador de reloj
4.12 E/S generales
4.12.1 E/S configurables Estándares O
4.12.2 Impedancia de E/S configurable
4.12.3 Voltaje de núcleo y E/S
4.13 Transmisión Gigabit
4.14 IP dura, IP blanda e IP sólida
4.15 Puertas del sistema y puertas reales
4.16 Año FPGA
Capítulo 5 Programación FPGA (Configuración)
5.1 Introducción
5.2 Archivo de configuración
5.3 Unidad de configuración
5.4 FPGA basada en Antifuse
5.5 FPGA basada en SRAM
5.5.1 El proceso rápido engaña a los ojos
5.5.2 Programación de RAM integrada (en bloques) y RAM distribuida
5.5.3 Múltiples cadenas de programación
5.5.4 Reinicialización rápida de dispositivos
5.6 Uso del puerto de configuración
5.6.1 FPGA como descarga serie del dispositivo maestro
5.6. 2 FPGA como dispositivo maestro para descarga paralela
5.6.3 FPGA como dispositivo esclavo para descarga paralela
5.6.4 FPGA como dispositivo esclavo para descarga en serie
5.7 Usando el puerto JTAG
5.8 Usando el procesador integrado
Capítulo 6 Quién está en el juego
6.1 Introducción
6.2 Proveedores de FPGA y FPAA
6.3 Proveedores de FPNA
6.4 Proveedores de EDA de línea completa
6.5 Proveedores profesionales de FPGA y EDA independientes
6.6 FPGA consultores de diseño que utilizan herramientas especializadas
6.7 Herramientas de diseño de código abierto, gratuitas y de bajo coste
Capítulo 7 Estilos de diseño FPGA y ASIC
7.1 Introducción
7.2 Estilo de codificación
7.3 Pipeline y jerarquía lógica
7.3.1 ¿Qué es un pipeline?
7.3.2 Sistema electrónico El pipeline en
7.4.3 Cadena de retardo
7.5 Consideraciones sobre el reloj
7.5.1 Dominio del reloj
7.5.2 Equilibrio del reloj
7.5 .3 Reloj cerrado y reloj habilitado
7.5.4 PLL y circuito de ajuste de reloj
7.5.5 Fiabilidad de la transmisión de datos entre dominios de reloj
7.6 Registro y bloqueo consideraciones
7.6.1 Pestillos
7.6.2 Flip-flops con entradas "set" y "reset"
7.6.3 Condiciones de inicialización y reset global
7.7 Compartir recursos (multiplexación por división de tiempo)
7.7.1 Úsalo o déjalo
7.7.2 Otros contenidos
7.8 Codificación de máquina de estados
7.9 Metodología de prueba
Capítulo 8 Proceso de diseño basado en esquemas
8.1 Los últimos días
8.2 Los primeros días de EDA
8.2.1 Herramientas de front-end, como simulación lógica
8.2.2 Herramientas de back-end, como diseño de diseño
8.2.3 CAE + CAD = EDA
8.3 Proceso de diseño ASIC simple basado en esquemas
8.4 Proceso de diseño FPGA simple (temprano) basado en esquemas
8.4.1 Mapeo p>
8.4.2 Embalaje
8.4.3 Colocación y enrutamiento
8.4.4 Análisis de tiempos y simulación posterior a la colocación y enrutamiento
8.5 Plano esquema esquemático y en capas
Esquemas
8.5.1 Esquemas planos aburridos
8.5.2 Esquemas jerárquicos (basados en módulos)
8.6 Diseño actual basado en esquemas Proceso
Capítulo 9 Proceso de diseño basado en HDL
9.1 Problemas basados en procesos esquemáticos
9.2 El surgimiento del proceso de diseño basado en HDL
9.2.1 Diferentes niveles de abstracción
9.2.2 Proceso inicial de diseño de ASIC basado en HDL
9.2.3 Proceso inicial de diseño de FPGA basado en HDL
9.2 .4 FPGA consciente de la estructura flujo
9.2.5 Síntesis lógica y síntesis basada en la física
9.3 Vida útil del insumo del diseño gráfico
9.4 Exceso absoluto de HDL
9.4.1 Verilog HDL
9.4.2 VHDL y VITAL
9.4.3 Diseño de lenguaje mixto
9.4.4 UDL/I
9.4.5 Superlog y SystemVerilog
9.4.6 SystemC
9.5 Cosas que vale la pena reflexionar
9.5.1 Preocupación, mucha preocupación
9.5.2 Multiplexores serie y paralelo
9.5.3 Tenga cuidado con los pestillos
9.5.4 Utilice las constantes con prudencia
9.5.5 Consideraciones sobre la utilización de recursos
9.5.6 También hay algunos contenidos que no se pueden ignorar
Capítulo 10 Creación de prototipos virtuales de silicio en el diseño de FPGA
10.1 ¿Qué es la creación de prototipos virtuales de silicio?
10.2 Método SVP basado en ASIC
10.2.1 SVP a nivel de puerta (generado por síntesis rápida)
10.2 .2 SVP a nivel de puerta (producido por síntesis basada en ganancia)
10.2.3 SVP de clúster
10.2.4 SVP basado en RTL
10.3 SVP basado en FPGA
10.3.1 Operación interactiva
10.3.2 Lugar y ruta incremental
10.3.3 FPGASVP basado en RTL
Capítulo 11 Proceso de diseño basado en C/C++ y otros lenguajes
11.1 Problemas en el proceso de diseño HDL tradicional
11.2 C vs. C++ vs. ejecución paralela vs. ejecución secuencial
11.3 Proceso de diseño basado en SystemC
11.3.1 Qué es SystemC y de dónde viene
11.3.2 SystemC 1.0
11.3.3 SystemC 2.0
11.3.4 Nivel de abstracción
11.3.5 Alternativas basadas en el flujo de diseño de SystemC
11.3.6 Lo amas o lo odias
p>11.4 Proceso de diseño basado en C/C++ mejorado p>
11.4.1 Qué es C/C++ mejorado
11.4.2 Proceso de diseño C/C++ mejorado opcional
11.5 Proceso de diseño basado en C/C++ puro
11.6 Diferentes niveles de abstracción de síntesis
11.7 Entorno de verificación y diseño de lenguaje mixto
Capítulo 12 Proceso de diseño basado en DSP
12.1 Introducción a DSP
12.2 Soluciones de implementación de DSP opcionales
12.2.1 Elige cualquier dispositivo, pero no me dejes ver qué dispositivo
12.2.2 Evaluación y algoritmo a nivel de sistema verificación
12.2.3 Software ejecutándose en el núcleo DSP
12.2 .4 Hardware DSP dedicado
12.2.5 Recursos FPGA integrados relacionados con DSP
12.3 Flujo de diseño centrado en FPGA para DSP
12.3.
1. Lenguaje específico de dominio
12.3.2 Entorno de simulación y diseño a nivel de sistema
12.3.3 Representación de punto flotante y punto fijo
12.3. 4 Orientación del nivel del sistema/algoritmo Conversión de RTL (conversión manual)
12.3.5 Conversión del nivel del sistema/algoritmo a RTL (generado automáticamente)
12.3.6 Conversión del sistema/algoritmo nivel a C/C++
12.3.7 Entorno IP a nivel de módulo
12.3.8 No olvides la plataforma de prueba
12.4 DSP y VHDL/Verilog entorno de diseño mixto
Capítulo 13 Proceso de diseño basado en procesadores integrados
13.1 Introducción
13.2 Núcleo duro y núcleo blando
13.2.1 Núcleo duro
13.2.2 Núcleo blando del microprocesador
13.3 Dividir el diseño en partes de hardware y software
13.4 La visión del mundo del hardware y el software
13.5 Uso de FPGA como su propio entorno de desarrollo
13.6 Visibilidad de diseño mejorada
13.7 Algunos otros métodos de verificación híbridos
13.7.1 RTL (VHDL o Verilog )
13.7.2 C/C++, SystemC, etc.
13.7.3 Chip físico en simulador de hardware
13.7.4 Simulador de conjunto de instrucciones
13.8 Un entorno de diseño bastante inteligente
Capítulo 14 Diseño modular y diseño incremental
14.1 Procesar el diseño como un módulo grande
14.2 Dividir el diseño en módulos más pequeños
14.2.1 Diseño modular
14.2.2 Diseño incremental
14.2.3 Problemas existentes
14.3 Siempre hay de otras maneras
Capítulo 15 Diseño de alta velocidad y otras consideraciones de diseño de PCB
15.1 Antes de comenzar
15.2 Todos somos jóvenes, por lo tanto
15.3 La era del cambio
15.4 Otras consideraciones
15.4.1 Diseño de alta velocidad
15.4.2 Análisis de integridad de la señal
15.4.3 SPICE e IBIS
15.4.4 Alimentación de arranque
15.4.5 Uso de la impedancia del terminal interno
15.4.6 Serie o procesar datos en paralelo
Capítulo 16 Observación de los nodos internos de la FPGA
16.1 Falta de visibilidad
16.2 Uso de tecnología de multiplexación
16.3 Circuito de depuración dedicado p>
16.4 Analizador lógico virtual
16.5 Circuito virtual
16.5.1 Descripción del problema
16.5.2 Solución de línea virtual
Capítulo 17 IP
17.1 Fuente de IP
17.2 IP optimizada manualmente
17.2.1 IP de nivel RTL sin cifrar
17.2. 2 IP cifrada a nivel RTL
17.2.3 IP a nivel de Netlist sin ubicación ni enrutamiento
17.2.4 Después de la colocación y enrutamiento IP a nivel de Netlist
17.3 Generador de núcleos IP
17.4 Información completa
Capítulo 18 Migración entre diseño ASIC y diseño FPGA
18.1 Métodos de diseño alternativos
18.1.1 Sólo diseño FPGA
18.1.2 Conversión entre FPGA
18.1.3 Conversión de FPGA a ASIC
18.1.4 Conversión de ASIC a FPGA
Capítulo 19 Herramientas de diseño para simulación, síntesis y verificación
19.1 Introducción
19.2 Simulación (basada en ciclos, basada en eventos, etc.)
19.2.1 ¿Qué es la lógica basada en eventos?
Simulador de editor
19.2.2 Breve descripción del proceso de desarrollo del simulador lógico controlado por eventos
19.2.3 Valor lógico y sistema de valores lógicos diferentes
19.2. 4 Mezcla de simulación de lenguaje
19.2.5 Otros formatos de retardo
19.2.6 Simuladores basados en ciclos
19.2.7 Elija el mejor simulador de lógica del mundo
19.3 Síntesis (Síntesis Lógica/HDL y Síntesis Física)
19.3.1 Tecnología de Síntesis Lógica/HDL
19.3.2 Tecnología de Síntesis Física
19.3.3 Reprogramación de tiempos, copia y síntesis secundaria
19.3.4 Elección de las mejores herramientas de síntesis del mundo
19.4 Análisis de tiempos (estático y dinámico)
19.4.1 Análisis de tiempos estático
19.4.2 Análisis de tiempos estático estadístico
19.4.3 Análisis de tiempos dinámicos
19.5 Verificación general
19.5.1 Verificar IP
19.5.2 Verificar el entorno y crear un banco de pruebas
19.5.3 Analizar los resultados de la simulación
19.6 Verificación formal
19.6.1 Diferentes tipos de verificación formal
19.6.2 ¿Qué es exactamente la verificación formal?
19.6.3 Términos y definiciones
19.6.4 Otra afirmación opcional/ técnicas de especificación de propiedades
19.6.5 Verificación formal estática y verificación formal dinámica
19.6.6 Resumen de varios lenguajes
19.7 Diseño mixto
19.7.1 Conversión de lenguaje HDL a lenguaje C
19.7.2 Cobertura de código
19.7.3 Análisis de rendimiento
Capítulo 20 Elección del dispositivo adecuado p>
20.1 Opciones ricas
20.2 Sería genial si hubiera herramientas de selección
20.3 Proceso
20.4 Recursos básicos y empaque
20.5 Interfaz de E/S general
20.6 Multiplicador integrado, RAM, etc.
20.7 Núcleo de procesador integrado
20.8 Capacidades de E/S Gigabit p>
20.9 IP disponibles
20.10 Clasificaciones de velocidad
20.11 Notas fáciles
No. Capítulo 21 Transceptor Gigabit
21.1 Introducción
21.2 Par diferencial
21.3 Varios estándares
21.4 Codificación de 8 bits/10 bits, etc.
21.5 Profundizando en el transceptor módulo
21.6 Combinación de múltiples transceptores
21.7 Recursos configurables
21.7.1 Detección de coma
21.7.2 Oscilación de salida diferencial
21.7.3 Resistencia terminal en chip
21.7.4 Preénfasis
21.7.5 Ecualización
21.8 Recuperación de reloj, fluctuación y diagrama de ojo
21.8.1 Recuperación de reloj
21.8.2 Diagrama de ojo y fluctuación
Capítulo 22 Computación reconfigurable
22.1 Reconfigurable dinámicamente Lógica
22.2 Interconexiones dinámicamente reconfigurables
22.3 Computación reconfigurable
Capítulo 23 Matriz de nodos programables en campo
23.1 Introducción
23.2 Evaluación de algoritmos
23.3 Tecnología picoArray de picoChip
23.3.1 Una aplicación picoArray ideal: estación base inalámbrica
23.3.2 Entorno de diseño picoArray
23.4 Tecnología ACM de QuickSilver
23.4.1 Diseño de nodos híbridos
23.4.2 Nodos del controlador del sistema, entrada y salida
Nodos de salida y otros nodos
23.4.3 Segmentación espacial y temporal
23.4.4 Creación y ejecución de programas en ACM
23.4.5 Y más contenido p>
23.5 Esto es silicio, pero no como lo conocemos
Capítulo 24 Herramientas de diseño independientes
24.1 Introducción
24.2 ParaCore Architect
24.2.1 Generar módulo de función de procesamiento de punto flotante
24.2.2 Generar módulo de función FFT
24.2.3 Interfaz basada en red
24.3 Confluencia lenguaje de diseño del sistema
24.3.1 Un ejemplo sencillo
24.3.2 Hay más funciones
24.3. Versión de evaluación gratuita
Capítulo 25 Creando un proceso de diseño basado en código abierto
25.1 Cómo iniciar un estudio de diseño FPGA desde cero
25.2 Desarrollo plataforma: Linux
25.3 Entorno de verificación
25.3.1 Icarus Verilog
25.3.2 Dinotrace y GTKWave
25.3.3 Código cubierto Herramienta de cobertura
25.3.4 Verilator
25.3.5 Python
25.4 Verificación formal
25.4.1 Comprobación de modelo de código abierto p>
25.4.2 Inferencia automática basada en código abierto
25.4.3 ¿Cuál es el verdadero problema?
25.5 Visitar componentes IP públicos ***
25.5.1 OpenCores
25.5.2 OVL
25.6 Herramientas de síntesis e implementación
25.7 Placa de desarrollo FPGA
25.8 Materiales integrales
Capítulo 26 Desarrollo futuro de FPGA
26.1 Una preocupación
26.2 Estructura y tecnología de próxima generación
26.2.1 Mil millones de transistores a escala dispositivos
26.2.2 E/S ultrarrápidas
26.2.3 Configuración ultrarrápida
26.2.4 Más IP dura
26.2.5 Dispositivos analógicos y de señal mixta
26.2.6 ASMBL y otras estructuras
26.2.7 Diferentes granularidades estructurales
26.2.8 Núcleos FPGA integrados en estructuras ASIC
26.2.9 Núcleos FPNA integrados en estructuras ASIC y FPGA o viceversa
26.2.10 Dispositivos basados en MRAM
p>26.3 Herramientas de diseño
26.4 Espere lo inesperado
Apéndice
Apéndice A Introducción a la integridad de la señal
Apéndice B Efecto de retardo submicrónico profundo
Apéndice C Registro de desplazamiento lineal