La Red de Conocimientos Pedagógicos - Currículum vitae - Guía de diseño FPGA: un catálogo de dispositivos, herramientas y procesos

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>

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

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

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 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

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