¿Qué características deberían/deben estar presentes dentro de una placa FPGA prototipo para ayudar en la depuración?

Al hacer cualquier prototipo de PCB, siempre es una buena idea tener características dentro que puedan usarse para ayudar en la depuración del diseño.

Algunos ejemplos son:

  1. Use el FPGA más grande disponible que tenga una ruta de migración a la que esperamos usar en el producto final. Esto significa que podemos tener mucha lógica para implementar modos de depuración y un analizador lógico interno como la derivación de señal. Esto significa que nuestras medidas de disipación de energía no serán precisas ya que una FPGA más grande tendrá una mayor disipación de energía estática.

  2. Funciones integradas en la placa que hacen posible conectar ciertas rutas de señal a un osciloscopio. Estas pueden ser señales analógicas o señales digitales. No estoy hablando de las señales que se conectan directamente a la FPGA. Hay diferentes maneras de hacer esto, y no estoy seguro de cuál es la mejor manera de hacerlo.

  3. Tenga 8 o 16 pines expuestos a través del encabezado, que se conectan a la E/S de propósito general adicional en el FPGA. Estos se pueden usar para enviar señales FPGA internas a los pines que luego se pueden conectar a un osciloscopio o analizador lógico. La pregunta que surge aquí es qué tipo de conector usar, ya que las señales de alta velocidad requieren que se tenga en cuenta la integridad de la señal. Ciertamente, debemos elegir un conector al que un osciloscopio o analizador lógico pueda conectarse fácilmente.

  4. Tenga resistencias de 1 ohm en los rieles de suministro de energía que se puedan usar para medir con precisión la disipación de energía en todos los rieles de suministro, especialmente los que están conectados a la FPGA.

  5. Coloque un chip FTDI que pueda usarse para implementar USB-UART.

  6. Tenga un método fácil para que el prototipo se conecte a otra FPGA o placa de microcontrolador en caso de que surja la necesidad. Una forma de hacer esto es tener conectores Arduino Shield en la placa, pero luego debemos estar seguros de que lo que pretendemos conectar es compatible antes de hacer la PCB.

Estoy seguro de que las personas que han hecho muchos prototipos de PCB y luego han ido a producción pueden dar su opinión sobre esta lista y sugerir algunas mejoras. Es cierto que las características también dependen de para qué se ha diseñado realmente la placa, por lo que las mismas técnicas pueden aplicarse a todos los proyectos. Así que ahora mis preguntas son:

  1. ¿Hay alguna mejora con respecto a lo que he recomendado anteriormente?
  2. ¿Hay algunas características adicionales a las que he mencionado que deberían utilizarse?
  3. Tener mucha capacidad para ayudar en la depuración es una gran idea, pero crea un problema cuando llegamos a las pruebas de nivel de producción. El camino para pasar de la placa prototipo al PCB de nivel de producción para pruebas alfa, etc. debe ser simple.

Estaría agradecido si alguien puede poner su granito de arena. Esta pregunta es MUY específica y no amplia o fuera de tema. Creo que ya he cubierto la mayoría de las cosas.

Gracias.

¿Se supone que esto es un devboard? O un modulo? ¿O un prototipo real de una placa de producción?
Prototipo real para un producto final que se venderá
La única razón para tener los pines de encabezado es ayudarnos a obtener ciertas señales en el osciloscopio. A veces, la toma de señal puede no ser lo suficientemente buena.
¿No puede agregar puntos de prueba para enganchar?
Las resistencias de 1 ohm serían desastrosas con varios amperios. También necesita una variedad de mecanismos de configuración, por ejemplo, flash EPROM y JTAG tanto para Flash como para FPGA.
Supongamos ambos casos, el primero es donde se pretende que la placa esté para entregar un producto final al cliente sin modificaciones significativas. El otro es donde este no es el caso.

Respuestas (4)

Su prototipo también debe tener estas características (sin ningún orden):

  • Módulo integrado de USB a JTAG
    como SMT3 de Digilent
  • USB-UART de 2 o 4 puertos (también me gusta FTDI como usted mencionó)
    nota: un FPGA o FPGA+SoC moderno necesita un UART por sistema operativo y parte de FPGA
    • 1 =>Linux
    • 2 => RTOS
    • 3 =>FPGA
  • pequeño concentrador USB 2.0 y un conector USB-C utilizado como USB 2 como puerto de servicio
    (mecánicamente más estable que el micro-USB)
  • las placas más complejas pueden necesitar un controlador de gestión de placas como MSP430 o similar. este IC puede tener USB (ver hub USB) y 2x I²C para controlar PMBus para controlar temperatura, voltajes, velocidades de ventilador,... también puede servir para configurar la placa antes de alimentar la FPGA
  • controle la potencia con controladores PMBus como de Linear. Mida el voltaje, la corriente, la potencia, la temperatura y controle las etapas o el ahorro de energía.
  • EEPROM o mejor F-RAM para guardar versiones (en el mejor de los casos, hashes de Git, fechas de producción, números de serie, configuraciones de placa, modos, último estado de energía, ...)
  • 1 LED amarillo (baja actividad) + un LED RGB que puede controlar cualquier color y código parpadeante :)
  • 2 (micro) pulsadores
  • Cabezal de 3 pines para bus I²C (PMBus)
  • Encabezado de 3 pines para UART principal
  • puntos de prueba para todos los rieles eléctricos (en el mejor de los casos en la parte superior)
  • pasador de tierra o lugar para una abrazadera de tierra - utilizado por osziloscopio
  • Conector del ventilador, mientras que su placa no está en el chasis final durante la prueba
  • sensores de temperatura distribuidos sobre el tablero para obtener la distribución del calor
  • como si quisiera aumentar/reducir el tamaño de su FPGA en el mismo espacio, puede hacer lo mismo con los convertidores CC/CC.
  • diseñe sus encabezados de pines adicionales como encabezados Pmod 2x6 (datos de 8 bits + 3v3 + GND) para que pueda usar placas de extensión con pantalla OLED, puttons adicionales, WiFi, Bluetooth, Flash, EEPROM, ...
Tuve una idea, los interruptores DIP también deberían estar allí para dar una entrada discreta al FPGA.

Si el chip de memoria está conectado con FPGA, como SDRAM o DDR u otros, me gustaría asignar algo de espacio de memoria de muestreo adicional para la depuración. Esto es especialmente útil cuando desea muestrear una gran cantidad de datos, como un marco o un paquete, que es más grande que la capacidad de muestra de Signaltap. También se pueden diseñar algunas funciones más avanzadas en función de esta memoria de muestra, como muestrear solo los paquetes cuyo encabezado coincida con un valor específico.

hmm, sí, un dispositivo de memoria también es importante, una SDRAM debería ser suficiente

De hecho, recomendaría no usar el FPGA más grande disponible simplemente debido al costo extraordinario del dispositivo y al desafío de implementación de los FPGA más grandes.

No olvide agregar algunos LED para los indicadores de salida de depuración.

También es posible que desee agregar puentes en varios lugares (como desconectar la energía de ciertas secciones) para depurar en caso de que algo salga mal.

Veo poco sentido en un encabezado GPIO expuesto para una placa que ya tiene un propósito establecido.

Oh, no quise usar el FPGA más grande :) Lo que quiero decir es que, por ejemplo, diseñamos para usar un FPGA de la serie 10M40 en el producto final. En el prototipo deberíamos usar el FPGA más grande que tenga el mismo pinout que el que queremos usar en la versión final de nuestro diseño.
@Quantum0xE7 Oh, la mayor capacidad para el mismo espacio. Eso es un poco más razonable.

Siempre LED.

Un encabezado UART de 3 pines para TTL-232R-RPI.

Normalmente agrego un puerto Ethernet para depuración y programación. FPGA Cores proporciona una manera fácil para que el cliente actualice el firmware con la herramienta de programación remota . Si lo desea, también hay un alcance incrustado que puede usar. Realmente aprecio estos núcleos.

Puede encontrar los núcleos aquí: https://www.fpga-cores.com/cores/