Guía de diseño FPGA: un catálogo de dispositivos, herramientas y procesos
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 Microprocesador blando core
4.11 Árbol de reloj y administrador de tiempo
4.11.1 Árbol de reloj
4.11.2 Administrador de reloj
4.12 E/S general
4.12.1 Estándares de E/S configurables
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 de la 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 Basado en Antifuse FPGA
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 p>
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 dispositivo maestro para descarga en serie
5.6.2 FPGA como dispositivo maestro para descarga en paralelo
5.6.3 Descarga en paralelo FPGA como dispositivo esclavo
5.6. 4 Descarga serie FPGA como dispositivo esclavo
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 Consultores de diseño de FPGA utilizando herramientas especializadas
6.7 Herramientas de diseño de código abierto, gratuitas y de bajo coste
Capítulo 7 Estilo de diseño de FPGA y ASIC
7.1 Introducción
7.2 Estilo de codificación
7.3 Canalización y nivel lógico
p>7.3.1 ¿Qué es la canalización?
7.3.2 Tubería en sistemas electrónicos
7.3.3 Nivel lógico
7.4 Práctica de diseño asíncrono
7.4.1 Estructura asíncrona
7.4 .2 Bucle combinado
7.4.3 Cadena de retardo
7.5 Consideraciones del reloj
7.5.1 Dominio del reloj
7.5.2 Equilibrio del reloj
7.5.3 Reloj controlado y reloj habilitado
7.5.4 Circuito de ajuste de reloj y PLL
7.5.5 Fiabilidad de la transmisión de datos entre dominios de reloj
7.6 Consideraciones sobre registro y pestillos
7.6.1 Pestillos
7.6.2 Flip-flops con entradas "set" y "reset"
7.6 .3 Condiciones de inicialización y reinicio global
7.7 Uso compartido de recursos (multiplexación por división de tiempo)
7.7.1 Úselo o abandonelo
7.7.2 Otros contenido
7.8 Codificación de máquina de estados
7.9 Método de prueba Aprender
Capítulo 8 Proceso de diseño basado en esquemas
8.1 Tiempos pasados
8.2 EDA inicial
8.2.1 Herramientas 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 Flujo de diseño de FPGA simple (temprano) basado en esquemas
8.4.1 Mapeo
8.4.2 Empaquetado
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 Esquema plano versus esquema jerárquico
8.5.1 Esquema plano aburrido
8.5 .2 Esquemas jerárquicos (basados en módulos)
8.6 El proceso actual de diseño basado en esquemas
Capítulo 9 Proceso de diseño basado en HDL
9.1 Problemas basados en el flujo esquemático
9.2 La aparición del flujo de diseño basado en HDL
9.2.1 Diferentes niveles de abstracción
9.2.2 Proceso de diseño ASIC de diseño temprano basado en HDL
9.2.3 Proceso inicial de diseño de FPGA basado en HDL
9.2.4 Proceso de FPGA consciente de la estructura
9.2.5 Síntesis lógica y síntesis de la física
9.3 La vida del insumo del diseño gráfico
9.4 El exceso absoluto de HDL
9.4.1 Verilog HDL
9.4.2 VHDL y VITAL p>
9.4.3 Diseño de lenguaje mixto
9.4.4 UDL/I
9.4.5 Superlog y SystemVerilog
9.4 .6 SystemC p>
9.5 Cosas para reflexionar
9.5.1 Preocupación, mucha preocupación
9.5.2 Multiplexores serie y paralelo
p>
9.5 .3 Cuidado con los pestillos
9.5.4 Utilice las constantes con prudencia
9.5.5 Consideraciones sobre el uso de recursos
9.5 .6 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 Basado en el método ASIC SVP
10.2.1 SVP a nivel de puerta (generado por síntesis rápida)
10.2.2 SVP a nivel de puerta (generado 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 con el proceso de diseño HDL tradicional
11.2 C versus C y ejecución paralela versus 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 Niveles de abstracción
11.3 .5 Alternativas al flujo de diseño basado en SystemC
11.3.6 Lo amas o lo odias
11.4 Flujo de diseño mejorado basado en C/C
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 lenguajes mixtos
Capítulo 12 Diseño basado en DSP Proceso
12.1 Introducción a DSP
12.2 Soluciones de implementación de DSP opcionales
12.2.1 Elige cualquier dispositivo, pero no me deja ver cuál es
12.2.2 Evaluación a nivel del sistema y verificación de algoritmos
12.2.3 Software ejecutándose en el núcleo del 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 Lenguajes específicos 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 Conversión de nivel de sistema/algoritmo a RTL (conversión manual)
p>12.3.5 Conversión de nivel de sistema/algoritmo a RTL (generado automáticamente)
12.3.6 Conversión de nivel de sistema/algoritmo a C/C
12.3. 7 Entorno IP a nivel de módulo
12.3.8 No olvide la plataforma de prueba
12.4 Entorno de diseño mixto DSP y VHDL/Verilog
Capítulo 13 Basado en Procesador integrado Proceso de diseño
13.1 Introducción
13.2 Núcleo duro y núcleo blando
13.2.1 Núcleo duro
13.2.2 Microprocesador Blando core
13.3 Dividir el diseño en partes de hardware y software
13.4 La visión mundial del hardware y el software
13.5 Utilice 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 ingenioso
Capítulo 14 Diseño modular y diseño incremental
14.1 Trate el diseño como un módulo grande
14.2 Divida el diseño en módulos más pequeños
14.2.1 Modular diseño
14.2.2 Diseño incremental
14.2.3 Problemas existentes
14.3 Siempre hay otras formas
Capítulo 15 Alta velocidad diseño y otras consideraciones de diseño de PCB
15.1 Antes de comenzar
15.2 Todos somos jóvenes, así que
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 Procesamiento de datos en serie o paralelo
Capítulo 16 Observación de los nodos internos de una FPGA
16.1 Falta de visibilidad
16.2 Uso de tecnología de multiplexación
16.3 Circuitos de depuración dedicados
16.4 Analizador lógico virtual
16.5 Circuito virtual
16.5.1 Descripción del problema
16.5.2 Solución de circuito virtual
Capítulo 17 IP
>
17.1 Fuente de IP
17.2 IP optimizada manualmente
17.2.1 IP de nivel RTL no cifrada
17.2.2 IP de nivel RTL cifrada
17.2.3 IP a nivel de Netlist sin ubicación ni enrutamiento
17.2.4 IP a nivel de Netlist después de la ubicación y enrutamiento
17.3 Generador de núcleos de 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 Solo 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 Simulación, síntesis, verificación y otras herramientas de diseño
19.1 Introducción
19.2 Simulación (basada en ciclos, basada en eventos, etc.)
19.2.1 ¿Qué es un simulador de lógica basada en eventos
19.2.2 Breve descripción del proceso de desarrollo del simulador de lógica basada en eventos
19.2.3 Valores lógicos y diferentes sistemas de valores lógicos
19.2.4 Simulación de lenguaje mixto
19.2.5 Otros formatos de retardo
19.2.6 Simulador basado en ciclos
19.2.7 Elige la mejor lógica simulador en el 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 Reajuste de tiempos, replicación y síntesis secundaria
19.3.4 Elección de la mejor herramienta 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 Verificación de IP
19.5.2 Entorno de verificación y creación de banco de pruebas
19.5.3 Análisis de resultados de simulación
19.6 Verificación formal
19.6.1 Diferentes tipos de verificación formal
19.6.2 ¿Qué es la verificación formal?
19.6.3 Términos y definiciones
19.6.4 Otras técnicas opcionales de afirmación/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 Híbrido diseño
19.7.1 Conversión de lenguaje HDL a lenguaje C
19.7.2 Cobertura de código
19.7. Análisis de rendimiento
Capítulo 20 Elección de los dispositivos adecuados
20.1 Opciones enriquecidas
20.2 Sería fantástico si hubiera una herramienta de selección
20.3 Proceso
20.4 Recursos y empaquetado básicos
20.5 Interfaz de E/S general
20.6 Multiplicador integrado, RAM, etc.
20.7 Núcleo de procesador integrado
20.8 Capacidad de E/S Gigabit
20.9 IP disponible
20.10 Grado de velocidad
20.11 Notas sencillas
Capítulo 21 Transceptor Gigabit
21.1 Introducción
21.2 Pares diferenciales
21.3 Varios estándares
21.4 Codificación de 8 bits/10 bits, etc.
2
1.5 Profundizando en el módulo transceptor
21.6 Combinando 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, jitter y diagrama de ojo
21.8.1 Recuperación de reloj
21.8.2 Diagrama de jitter y ojo
Capítulo 22 Computación reconfigurable
22.1 Lógica reconfigurable dinámicamente
22.2 Interconexiones reconfigurables dinámicamente
22.3 Computación reconfigurable
Capítulo 23 Matriz de nodos programables in situ
23.1 Introducción p>
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, nodos de entrada y salida y otros nodos
23.4.3 División de espacio y tiempo
23.4.4 Creación y ejecución de programas en ACM
23.4.5 Hay más
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 procesamiento de punto flotante módulo de función
24.2.2 Generar módulo de función FFT
24.2.3 Interfaz basada en web
24.3 Lenguaje de diseño del sistema Confluence
24.3 .1 Un ejemplo sencillo
24.3.2 Hay más funciones
24.3.3 Versión de evaluación gratuita
24.4 ¿Tienes esta herramienta?
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 Plataforma de desarrollo: Linux
25.3 Verificación entorno
25.3.1 Icarus Verilog
25.3.2 Dinotrace y GTKWave
25.3.3 Herramienta de cobertura de código cubierto
25.3.4 Verilator
25.3.5 Python
25.4 Verificación formal
25.4.1 Comprobación de modelo de código abierto
25.4.2 Inferencia automática basada en código abierto
25.4.3 ¿Cuál es el verdadero problema?
25.5 Acceso a componentes de 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 dispositivos a nivel de transistor
26.2.2 E/S ultrarrápidas O
26.2.3 Configuración ultrarrápida
26.2.4 Más
Hard IP
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
26.3 Herramientas de diseño
26.4 Espera lo inesperado
Apéndice
Apéndice A Introducción a la integridad de la señal
Apéndice B Retraso submicrónico profundo efecto
Apéndice C Registro de desplazamiento lineal