Consejos de diseño de PCB FPGA personalizados

9

Estoy planeando diseñar un PCB FPGA personalizado. La PCB contendrá sensores. Necesito leer la salida de los sensores y procesarlos en el procesador. He completado muchos proyectos usando FPGA's, pero este será mi primer diseño personalizado en el que también necesito considerar la configuración del hardware. He investigado últimamente, pero aún es difícil para mí comenzar desde un punto. Por lo tanto, le pido que me ayude a mí y a otras personas que quieran diseñar su FPGA personalizado, cuáles son los puntos que deben considerar en cada paso. ¿Existen libros / recursos en línea que nos puedan ayudar en este proceso? También haré un documento una vez que haya terminado mi proyecto para que la gente pueda usarlo.

omid
fuente
Quizás debería mencionar el tamaño físico del FPGA que planea usar, la cantidad de pines, los voltajes de suministro requeridos, ...
Dzarda
Estos no están especificados todavía. Tal vez mi pregunta no estaba clara, pero estoy buscando una guía.
omitido el
OK bastante justo.
Dzarda
Esta pregunta parece estar fuera de tema
Roh
44
La gran pregunta es si está dispuesto a usar un paquete BGA, o si va a restringirse al subconjunto de ofertas (y rendimiento eléctrico reducido) disponible en paquetes TQFP amigables con el trabajo manual. A continuación, ¿espera obtener todos sus suministros y señales enrutados en dos capas (difícil pero posible para objetivos limitados) o está dispuesto a usar 4 o más? ¿Qué tan rápido son las señales de su sensor? ¿A qué velocidad esperabas registrar la lógica interna? ¿Tienes algún análogo sensible al ruido? ¿Has considerado hacer una placa secundaria para usar con una placa FPGA existente?
Chris Stratton

Respuestas:

11

En mi empresa, hemos diseñado previamente algunas placas FPGA personalizadas y recientemente hemos comenzado a utilizar placas FPGA comerciales ("COTS") con placas secundarias FMC personalizadas.

Etapa de prototipo

Si todavía está en la etapa inicial de definición del proyecto, planee comprar al menos una placa COTS FPGA para la creación de prototipos. Puede conectar uno de sus sensores a los encabezados de E / S y hacer una prueba rápida de concepto. Eso le da una idea de cómo podría funcionar el proyecto cuando se escala a muchos sensores, y calcule cuántos puede soportar con un FPGA determinado.

Si el FPGA es demasiado pequeño o demasiado lento o las herramientas son inadecuadas para el trabajo, es fácil intercambiar un FPGA COTS diferente en esta etapa. (Bueno, no es fácil pero al menos manejable ...)

Si el firmware no funciona en esta etapa, es claramente debido a un problema de firmware, no a un error de diseño de PCB personalizado. Con firmware personalizado y PCB personalizado, a veces es difícil saber qué lado tiene la culpa de un problema.

Placa FPGA personalizada frente a placa comercial FPGA lista para usar

El diseño de una placa FPGA personalizada tiene sentido si el proyecto tendrá un ciclo de vida corto, un volumen alto o si requiere un factor de forma más pequeño que el que puede lograr con la placa FPGA COTS y las placas adicionales PMOD o FMC.

Si el ciclo de vida del proyecto excede la vida útil del producto de un chip de memoria DDR (un par de años), entonces diseñar una placa hija FMC personalizada puede ser una mejor alternativa.

El costo es un factor en esta decisión. La mayoría de las placas COTS FPGA son de uso general, diseñadas para una máxima flexibilidad. Si está haciendo un producto de alto volumen y sensible al costo, entonces probablemente valga la pena hacer un diseño personalizado; pero para un volumen bajo, probablemente sea mejor concentrarse en hacer una tarjeta secundaria.

Independientemente del enfoque que elija, hay ciertas interfaces que requieren documentación maestra clara: en la interfaz entre los pines de E / S de nivel FPGA y el resto de la placa, y en la interfaz del conector entre las placas. Estos son lugares donde las ubicaciones de los pines, los nombres de red internos y los nombres de red externos a veces se intercambian y no coinciden. Una tabla es suficiente documentación; asegúrese de mantener esta tabla de interfaz versionada y bajo control de origen. Antes de enviar los archivos PCB a la fabricación, imprima una copia de esta tabla de interfaz, una copia del esquema y una copia del informe de pin / pad FPGA. Arrastre un resaltador sobre los papeles para marcar cada señal que se conecta donde debería.

Para los conectores, he aprendido la manera difícil de proporcionar un "dibujo del sistema" mecánico que muestre juntas y conectores en un solo dibujo dimensionado. Primero me quemé con un sistema de conector VME donde el pin "A1" en un conector no se asignó al pin "A1" en el otro conector. También he visto a los diseñadores olvidar que un par de conectores de ángulo recto da como resultado una conexión de imagen especular (90 grados + 90 grados = 180 grados). Esto era un problema cuando era responsable de la placa base y varios otros gerentes de proyecto eran responsables de varias placas secundarias.

Consejos personalizados para la placa FPGA

Comience con el "diseño de referencia" del proveedor de FPGA y luego omita las partes que no sean necesarias para su aplicación. No retire ningún condensador de derivación del FPGA, y no intente salirse con el uso de menos capas de PCB. Preste atención a la pila de capas (a menudo se encuentra junto al dibujo de perforación); Los componentes de paso fino generalmente usan cobre de 0.5 oz en lugar del espesor de lámina de cobre estándar de 1 oz.

Es difícil trabajar con el paquete BGA. El rendimiento nunca es tan bueno como con los paquetes TQFP o TQFN, y reelaborar un BGA es casi imposible. Incluso la inspección de problemas de ensamblaje requiere una cámara de rayos X. Asegúrese de utilizar un proveedor de servicios de fabricación por contrato en el que confíe.

Las fuentes de alimentación siempre son difíciles cuando se trabaja con placas FPGA. Los requisitos de potencia reales de la FPGA dependen en gran medida del flujo de bits de configuración. Xilinx proporciona una herramienta de "estimador de potencia", pero la estimación solo es válida si el firmware está completo. Existe un riesgo al hacer un cambio de firmware de último minuto, que los requisitos de energía son mayores de lo esperado. Planee dejar algo de margen de oferta actual. Si la estimación de potencia inicial dice que necesita 560 mA, siga adelante y use un regulador de 1000 mA. La corriente de salida adicional disponible no hace daño, pero tener una corriente de salida insuficiente dará como resultado un comportamiento aberrante del sistema.

Si hay pines FPGA no comprometidos, saque tantos como sea posible a un encabezado. Cuando hay un problema, estos pines no comprometidos se convierten en un valioso recurso de diagnóstico para sondear señales dentro del FPGA.

MarkU
fuente
11

He diseñado más de una docena de placas basadas en FPGA que emplearon una amplia gama de diferentes tipos de FPGA, desde Lattice Mach X02 de baja potencia hasta Virtex 6 de alto rendimiento con 24 canales SERDES. Los pasos normales que sigo son:

Encuentre una placa COT (similar a MarkU) y obtenga una idea aproximada de los recursos internos de FPGA que necesitará, en particular presto atención a:

  • Recuento de LUT (tabla de búsqueda):(¿el diseño se ajusta a los LUT en el panel de referencia?) Si no tiene los recursos o un método exhaustivo para determinar una estimación precisa del uso de LUT (<1K LUT precisión) porque quizás el diseño no está terminado. Usa esta regla general. Si el diseño está casi terminado, tome el tamaño del diseño (recuento de LUT) y encuentre un FPGA con al menos un 30% más de LUT. Si el diseño no está cerca del acabado, suba hasta un 50% o 100% más de LUT. Entonces, si el diseño se ajusta a 9K LUT, asegúrese de usar un FPGA con 12K LUT o más. Tiendo a excederme y probablemente subiría a 25K LUT. Esto te ahorrará dolores de cabeza insoportables más tarde. Quien esté encargando este diseño de placa debe comprender que debe haber más de un giro de este diseño, por lo que es comprensible sobredimensionar la primera versión de la FPGA.
  • BRAM (conteo de RAM en bloque):Determine si su diseño requiere más recursos de memoria de los que su FPGA tiene internamente. Al principio, esto se pasa por alto fácilmente, pero en un diseño tiende a usar RAM en bloque por varias razones (ROM, FIFO, etc.) Me quedé sin memoria de bloque en un diseño e intenté usar RAM distribuida (usando las LUT como RAM ) y se comió todos mis LUT muy rápido. Es importante determinar si necesitará memoria externa. Esto agrega mucho riesgo a los diseños porque si el diseño requiere algún nivel de rendimiento, usted puede '
  • Enumere todos los estándares de señalización y los posibles niveles de voltaje que usará: Esto es importante porque algunos de los estándares de señalización que desea usar (LVDS, LVSPEC, LVCMOS) pueden tener restricciones de voltaje. Consulte las guías del usuario y asegúrese de que todos estos estándares sean compatibles.
  • Requisitos de la fuente de alimentación:Simpatizo con todas las quejas anteriores sobre las fuentes de alimentación de tamaño reducido, obteniendo el voltaje del núcleo especificado es toba, últimamente he estado usando muchos módulos TI Nano para los FPGA grandes pero de gama baja (Spartan LX45 (T) - LX75 (T) y Lattice ECP3). Afortunadamente, puede mitigar algunos de los riesgos al dimensionar las fuentes de alimentación utilizadas para las E / S. En particular, si este banco no está manejando una fuente desconocida (conector de expansión), entonces el proceso es el siguiente: Encuentre todos los componentes a los que se conectará este banco, determine la capacitancia de entrada para todos esos componentes, descubra la velocidad máxima de reloj que conducirá estas señales, entonces puede calcular tanto el requisito de potencia como estimar aproximadamente el requisito de derivación,

Usando la ecuación [P = (1/2) CV ^ 2 * (f)] donde C = capacitancia de entrada, f = frecuencia. de la entrada que debe manejar su FPGA (¡para cada señal!). puede averiguar la estimación del peor de los casos sobre cuánta potencia se requiere para controlar todas las señales de salida.

También deberá considerar la pérdida de potencia asociada con las resistencias de terminación internas (según los estándares de E / S que utilice)

También he estado usando la herramienta TI Webbench más y más últimamente con mucho éxito:

TI Webbench (no trabajo para TI)

Esquemas:

  • Configure su esquema con un idiota en mente Usted y todos los diseñadores de HDL volverán a este esquema mucho, así que haga que sea fácil para todos encontrar lo que necesitan rápidamente sin requerir que usted o ellos en el futuro investiguen todo el esquema para descubrirlo. si el pin 20 es la entrada del reloj. Esto incluye muchas notas sobre el esquema (si es posible), describe el propósito de un circuito, el resultado esperado e incluso las preocupaciones. Debido a que los FPGA se pueden dividir en bancos, considere dividir el componente FPGA en varias partes e incluso puede dedicar una página esquemática completa para un banco individual.

  • PONGA GRANDES NOTAS MOLESTAS EN TU ESQUEMÁTICA ACERCA DE COLOCAR LOS RELOJES EN LOS PINES CORRECTOS: me golpeé la cabeza contra muchas paredes cuando estaba construyendo mi primera imagen para el diseño y recibí la temida 'señal de reloj enrutada en un pin sin reloj habilitado' . Vive con miedo a los diversos tipos de pines de reloj en el FPGA. Asegúrese de comprender que algunos pines de reloj están destinados a usarse en un cuadrante de un FPGA o de lo contrario se enfrentará a todos diciendo: "Oye, ¿sabías que hay ciertos pines de reloj que están destinados a usarse en un cuadrante de un FPGA". Solo hace falta 15 personas que le digan esto para asegurarse de que nunca lo vuelva a hacer.

  • PASA MUCHO TIEMPO EN EL DISEÑO DE CONFIGURACIÓN DE FPGA: Asegúrate de sacar los pines JTAG incluso si no planeas usarlos. Es la diferencia entre un error viable y un defecto fatal.

  • En caso de duda, muestre botones de señales adicionales y LED e interruptores DIP: me he quejado mucho sobre el trabajo adicional asociado con el enrutamiento de señales adicionales para separar los encabezados LED, interruptores DIP y botones, pero SIEMPRE ha ayudado.

Diseño :

  • Comuníquese con la casa Fab temprano: especialmente si necesita enrutamiento controlado por impedancia, solicite una acumulación de capas para el recuento de capas deseado. Es mucho más fácil enrutar señales de alta velocidad cuando tiene los anchos de traza definidos primero, como se deduce de que podría haber usado trazas de 6 mil en lugar de trazas de 8 mil para lograr su impedancia de 50 ohmios.

  • Comience con tapas de derivación: diseñe el sistema de energía temprano. Lo primero que hago es comenzar colocando todas las tapas pequeñas debajo del FPGA o cerca de los pines. Los más grandes fuera del FPGA y enrutan un circuito de fuente de alimentación completo y lo colocan aproximadamente donde espero que esté. De esta manera no lucharás contra el enrutamiento de ruteo y harás compromisos.

  • Señales de alta velocidad en segundo lugar: estas serán las que no desea saltar demasiadas capas.


Siempre estoy aprendiendo más cosas y me encantaría cualquier otro consejo que otros diseñadores hayan encontrado, así que agrégalos.

Dave
fuente
6

Creo que un buen punto de partida para una PCB personalizada equipada con un FPGA serán las placas de diseño de referencia del proveedor de FPGA. Puede inspeccionar estos diseños, por ejemplo, para la fuente de alimentación, pero tenga en cuenta que las placas de diseño de referencia a veces son demasiado pequeñas. Tuvimos muchos problemas con las placas Xilinx ML605 que perdieron la configuración debido a una fuente de alimentación de tamaño insuficiente.

Responde al comentario de omid:

Uno de mis colegas implementó un algoritmo de cálculo sistólico en un Virtex-6 LXT240. La entrada de datos fue suministrada por Gigabit Ethernet. Debido al enfoque sistólico, el FPGA no hizo casi nada si no había datos en la entrada quince o, principalmente, todos los flip flops del FPGA se alternaban a 200 MHz si llegaba una nueva trama de Ethernet. Este desequilibrio en el cálculo provocó que los circuitos de suministro de energía de TI apagaran la placa ML605, que solo se pudo recuperar de este estado al cambiar el interruptor de alimentación principal.

Le dimos este diseño al departamento de ingeniería eléctrica de nuestra universidad y descubrieron que no hay forma de ajustar los coeficientes del regulador en función de los condensadores instalados.

Sí, se podría decir: mal diseño o usar mayor cantidad o ...

La solución de mis colegas fue una utilización reducida de FPGA del 80%.

Sin embargo, una placa de prototipos y un diseño de referencia deberían ser capaces de manejar cargas de trabajo extremas, especialmente si esta placa posee un FPGA que no tiene un uso de energía tan regular como una CPU.

Paebbels
fuente
¿Puede explicar qué quiere decir con "tamaño insuficiente" que debería tener en cuenta?
omitido el