¿Qué componentes son necesarios para un FPGA?

5

He trabajado en una placa de desarrollo FPGA, (La DE0), pero nunca diseñé una aplicación usando solo el chip. En la placa que tengo, hay muchos componentes, y no estoy seguro de cuáles son necesarios para diseñar un circuito independiente.

Sé que el EPC4S es importante, ya que contiene el .pof, y me gustaría un controlador USB, pero hay alrededor de otros 20 chips. ¿Alguien puede explicar qué es lo mínimo que requeriría un FPGA si ignorara los diferentes conectores y periféricos?

    
pregunta Zephyr

1 respuesta

6

No necesitas mucho. Aquí hay una lista de lo que podría necesitar:

  1. FPGA en sí mismo
  2. fuente de configuración FPGA
    • SPI flash + algún método de programación (directo o indirecto a través de JTAG) (más barato)
    • Flash de configuración FPGA programable JTAG (más caro, pero bastante conveniente)
    • Carga en paralelo o en serie desde un controlador externo
    • Para algunos FPGA, la configuración pequeña flash + carga el núcleo sobre PCIe después de la enumeración
    • Integrado con FPGA (esto no es común, pero algunos FPGA lo admiten, por ejemplo, spartan 3AN)
  3. reguladores de voltaje
    • suministro de núcleo
      • voltaje generalmente muy bajo, 0.9 a 1.2 voltios
      • podría necesitar bastantes amperios para un FPGA grande (quizás alrededor de 100 a 500 mA para un FPGA pequeño, puede ser de hasta 20 o 30A para un FPGA muy grande, tamaño FPGA (potencia estática), tamaño de diseño, velocidad de reloj , y factor de actividad dependiente)
      • Se recomienda el convertidor DC-DC ya que el LDO será muy ineficiente
    • Es posible que necesite suministros / suministros auxiliares para otra lógica interna, generalmente de 2.5 a 3.3v
    • El suministro de E / S, puede necesitar múltiples voltajes según el diseño
    • Es posible que necesite voltajes de terminación (Vtt) o voltajes de referencia (Vref) para ciertos estándares de interfaz de alta velocidad
    • Los transceptores de alta velocidad generalmente necesitan reguladores lineales dedicados
      • enfoque de dos etapas del convertidor DC-DC seguido de LDO con suministro de polarización independiente (por ejemplo, para un riel de 1.2V, use un conmutador de 1.3 a 1.5V seguido de un LDO con una entrada de suministro de polarización separada de 2.5v o 3.3v ferrocarril)
  4. Bypass caps
    • Gobs y gobs, aproximadamente uno por cada par de pines de alimentación
    • Es posible que necesite una combinación de mayúsculas y minúsculas para la cobertura de frecuencias altas y bajas, especialmente para transceptores de alta velocidad
  5. fuente (s) de reloj
    • Necesita al menos 1 oscilador para la lógica del usuario enrutada a un pin de reloj global
      • Utilice osciladores, no cristales, ya que los FPGA generalmente no pueden conducir cristales
      • Elija una frecuencia relativamente razonable, ya que puede usar DCM / PLL internos para volver a escalarla (consulte la documentación de sincronización FPGA)
      • Considere el uso de las habilitaciones de reloj en lugar de generar relojes lentos, esto reducirá el número de DCM / PLL necesarios, así como la eliminación / simplificación de los problemas de cruce del dominio del reloj.
      • Las frecuencias que necesitan ser muy precisas podrían requerir osciladores dedicados
    • Los transceptores de alta velocidad generalmente requieren osciladores dedicados y administración de reloj externo (búferes de reloj, muxes de reloj, atenuadores de fluctuación de fase, PLL, etc. que posiblemente requieran una inicialización de encendido a través de I2C)

Hace poco armé una pequeña placa con un FPGA espartano 3, Winbond SPI flash, chip de interfaz USB FTDI FT2232 y un oscilador de silicio compartido de 12 MHz. OpenOCD puede controlar la interfaz FPGA JTAG a través del puerto A del FT2232 para programar el FPGA y luego programar el flash SPI a través de la instrucción USER1 JTAG después de cargar la configuración FPGA. El segundo puerto del FT2232 se puede utilizar como puerto serie o como FIFO USB. La interfaz FIFO USB requiere 14 pines, pero puede funcionar a 8 Mbyte / seg y aparece como un puerto serie estándar en la computadora, lo que hace que la interfaz del software sea trivial.

    
respondido por el alex.forencich

Lea otras preguntas en las etiquetas