PCB FPGA personalizado con circuito de programación externo

2

Mi equipo ha verificado nuestro diseño lógico en una placa de desarrollo y estamos listos para pasar a un prototipo final. Debido a la naturaleza del dispositivo, la placa FPGA debe contener componentes mínimos y configurarse a través de un circuito de programación externo. La tecnología específica a la que nos hemos dirigido es el Altera Cyclone V, pero me imagino que los mismos principios podrían aplicarse también a otras tecnologías. Estoy buscando consejos sobre la mejor manera de lograr esto en términos de tiempo, costo y complejidad.

Me centraré en el método más simple de programación, que es la configuración Active Serial. Después de recorrer el sitio web de Altera durante unos días, esto es lo que he creado como requisitos de diseño:

-El FPGA no puede mantener una configuración de diseño (flujo de bits) mediante el apagado, y por lo tanto requiere algún tipo de memoria no volátil programable, como la memoria flash.

: hay una secuencia de encendido simple donde el FPGA proporciona un par de señales externas para indicar que está listo para recibir un flujo de bits y también proporciona un reloj a través del oscilador interno para sincronizarse con la fuente del flujo de bits.

- La placa que contiene el FPGA debe programarse mientras está conectada a un circuito externo, extraída del circuito y colocada en una pila de PCB que contenga varios otros dispositivos que operen independientemente del FPGA. El FPGA no controla ninguno de estos otros dispositivos, aunque recibe señales de control para sincronizar su actividad con el sistema en general.

Algunas preguntas con las que estoy teniendo dificultades:

  • ¿Existen soluciones OTS para la configuración de FPGA (almacenamiento y transmisión de bits) o es algo que requiere absolutamente una solución de microcontrolador diseñada a medida, como MSP430 / PIC?

  • He buscado en el chip blaster USB para una solución de circuito de programación, pero utiliza JTAG e interactúa con el FPGA directamente. No estoy seguro de si es capaz de interactuar con un dispositivo de almacenamiento. Proporciona mucha más funcionalidad de la que se necesita para este sistema, y es bastante costoso (~ $ 300 solo para el chip). No necesitamos poder acceder a las señales internas con Signal Tap, porque nuestra configuración de prueba puede verificar la operación mediante la co-simulación. ¿Hay dispositivos existentes que pueda usar, posiblemente como un sistema emparejado (chip integrado más chip de programador externo)? O, ¿alguien puede recomendar un enfoque alternativo?

He enviado una solicitud de soporte a Altera, pero dudo que estén interesados en ayudar a una startup como nosotros. Además, estoy seguro de que hay más experiencia disponible aquí. Gracias de antemano por cualquier consejo útil. ¡Ustedes son geniales!

    
pregunta technocratic

4 respuestas

1

Creo que de tu pregunta ya entiendes esto, pero para aclarar, esta es mi terminología habitual:

  • La programación implica alterar algún dispositivo no volátil
  • La configuración es lo que hace el FPGA cuando se inicia: carga su memoria interna volátil desde una memoria externa no volátil.

Entonces, como supones, el sistema necesita un dispositivo no volátil de algún tipo que programes en la línea de producción. Para aclarar su comentario sobre el blaster USB, no es un chip ... es un "pod", por lo que tendría uno para su estación de programación, no uno por placa:

Detodosmodos,vuelvaalasopcionesdealmacenamientonovolátiles:

  • Elenfoque"Se requiere casi ingeniería cero" utiliza los dispositivos flash de configuración de Altera, que son programables JTAG utilizando algo como un blaster USB. Solo hay que conectarlos como dice la hoja de datos, y listo. Sin embargo, cuestan más por MBit que otras opciones, por lo que no se utilizan a menudo en la producción por volumen.

  • Un enfoque más habitual es un chip flash SPI "normal". La sección de configuración de la guía del usuario de Cyclone enumerará algunas que son compatibles con él, y creo que también puede usar el software Quartus para programarlos a través del JTAG del FPGA al que están conectados. Más ingeniería involucrada, comprobando que tiene el dispositivo correcto, etc. Además, si está en producción en volumen, es posible que no desee utilizar Quartus en la línea de producción, en cuyo caso deberá proporcionar un encabezado de programación separado para el chip flash. , y algún hardware + software para manejar eso.

  • Si tiene un microcontrolador en su sistema (incluso en otra placa ...), puede conectarlo a los pines JTAG o de configuración del FPGA y almacenar el flujo de bits FPGA en el flash del micro. Se requiere más ingeniería, ya que debe tener algún software para "arrancar" el FPGA. sin embargo, puede hacer que las actualizaciones en el campo sean más fáciles, ya que a menudo el micro ya está configurado para recibir actualizaciones de software, mientras que actualizar el flash cuando se cuelga directamente del FPGA es a menudo una experiencia de "abrir la caja".

respondido por el Martin Thompson
4

Normalmente, simplemente incluiría un dispositivo de memoria flash SPI de 8 pines en la misma placa que el FPGA. ¿Está diciendo que no puede hacer esto por alguna razón?

Cuando se enciende el FPGA, simplemente comenzará a leer los datos de la primera dirección en la memoria SPI y utilizará estos datos como su flujo de bits de configuración.

Para poner el flujo de bits en el dispositivo flash, normalmente solo debe mantener el FPGA en reinicio y acceder a la interfaz SPI en el dispositivo flash directamente desde algún tipo de encabezado de programación (conector).

    
respondido por el Dave Tweed
2

Hay "Dispositivos de configuración" de Altera para ese propósito.

enlace

Eche un vistazo al Manual de Cyclone V, Capítulo 7 , Fig. 7- 8. En esa configuración, FPGA cargará la configuración desde el dispositivo EPCS en el inicio. Y para guardar el flujo de bits en el dispositivo EPCS, puede usar FPGA. Cargas un diseño especial (Serial Flash Loader, creo) a FPGA sobre JTAG. Esto forma un puente entre JTAG y el dispositivo EPCS. Luego puede cargar la configuración del flujo de bits al dispositivo EPCS a través de JTAG. Le sugiero que lea ese capítulo.

    
respondido por el HeyYO
1

Consulte la sección de configuración en serie activa que comienza en la página 214 del manual del dispositivo Cyclone 5. Esta sección detalla cómo usar el modo de configuración en serie activo. El almacenamiento de configuración en este caso es una especie de ROM Flash de SPI. Altera también produce los dispositivos EPCS y EPCQ para el almacenamiento de flujo de bits, y el manual también detalla cómo utilizar estos dispositivos correctamente con la FPGA. El flujo de bits se programa en el flash a través de JTAG a través del FPGA; se carga una pequeña configuración de 'puente' en el FPGA, y luego el flujo de bits de configuración se programa en el flash a través del puente. Luego, el FPGA cargará la configuración desde la memoria flash en los siguientes power-ups. El software de programación predeterminado de Altera lo hará automáticamente, solo necesita decirle qué chip flash está utilizando.

    
respondido por el alex.forencich

Lea otras preguntas en las etiquetas