FPGA - Programación de bricolaje

9

He estado programando microcontroladores durante algunos años, y acabo de descubrir los FPGA después de tomar una clase de diseño digital. Después de investigar un poco sobre diferentes FPGA, placas de desarrollo, etc., todavía dudo en comprar alguna porque no sabría cómo hacer mi propia versión del "producto" final. Puse PIC, SAM, AVR, etc. en PCB personalizados sin ningún problema, por lo que no me preocupa eso: mi principal preocupación es programar un FPGA sin una placa de fabricante.

Mi pregunta específica: ¿funcionaría una FPGA si tomara el archivo de mapa de bits generado por Quartus, Vivado, iCEcube, etc., lo escribiera en un chip de memoria flash SPI que comience en la dirección 0 (por ejemplo, a través de un FT2232H) y conecte la memoria flash a los pines SPI de un FPGA (con la configuración MODE configurada correctamente)?

Pido disculpas por la hipotética parcial; Estoy bastante seguro de que eso es todo lo que hace el Programador de diamantes de Lattice, pero me preguntaba si ese enfoque funcionaría para FPGA de diferentes fabricantes, o si, por ejemplo, Quartus agregó "escaparates" o encabezados adicionales a la memoria mientras lo escribía.

Avíseme si hay algo que pueda hacer para mejorar / aclarar la pregunta, o si me falta un punto importante en el proceso de programación de FPGA. ¡Gracias!

Blake Lucas
fuente
¿Por "mapa de bits" quieres decir flujo de bits?
Eugene Sh.
Esta pregunta se ha formulado en una encarnación diferente antes
Voltaje pico
1
En su primer diseño de placa FPGA, sugeriría proporcionar 2 métodos de programación del dispositivo (más el encabezado JTAG del proveedor). Coloque ubicaciones de puentes para permitirle cambiar los pines MODE según sea necesario. Es muy fácil estropearlos y es bueno tener planes de respaldo. También asegúrese de proporcionar puntos de prueba para INIT y DONE (o lo que sea que Lattice use para indicar el estado de programación).
The Photon
2
El control de proceso requerido para montar BGA, especialmente los que cuentan con un alto número de pines, es más estricto que algo como un QFP. El hecho de que haya más bolas significa que hay una mayor probabilidad de puentear o malas conexiones y, dado que están ocultas, no podrá detectar problemas (a menos que tenga una radiografía) antes de ejecutar la cosa para ver si tiene cualquier problema. Y si vuelve a montar el componente, debe volver a invocarlo, lo que requiere más equipo. Los FPGA también son chips caros que no desea dañar. Grandes BGA son donde se hacen necesarios cosas como precalentadores de PCB.
DKNguyen
1
Solía ​​trabajar en un lugar donde los técnicos no hacían más que volver a trabajar todo el día y tenían estaciones de aire caliente (control de temperatura más estricto y más confiable que la pistola de calor) y no podían entregar BGA de soldadura de manera confiable. No creo que tuvieran un precalentador, así que si vas a probarlo, obtén un precalentador y usa un chip barato (tal vez incluso un paquete BGA simulado en cadena para que puedas verificar tus conexiones eléctricamente hasta que lo hayas clavado antes de hacer el Cosa real).
DKNguyen

Respuestas:

12

Sí, funcionaría bien.

En realidad, las herramientas de desarrollo para la mayoría de los FPGA le permiten programar el flash externo directamente a través de la conexión JTAG del FPGA, eliminando la necesidad de una interfaz de programación separada para el flash.

Dave Tweed
fuente
1
Y algunos, como Lattice Mach X02, tienen el flash incorporado, por lo que solo necesita unas pocas resistencias y un encabezado de 5x2 para conectarse al módulo de programación Lattice.
Spehro Pefhany
Sabía que puede programar el flash directamente a través de JTAG desde herramientas como Vivado / Quartus, lo que esperaba era poder hacerlo sin necesidad de comprar un cable específico del proveedor: solo use un FT2232H y escriba el bitstream (no bitmap?) yo mismo. Sin embargo, no creo que Quartus admita ese chip y que Vivado no lo admita abiertamente (aunque lo usen en las placas Nexys y Basys).
Blake Lucas
1
Sí, puede programar el flash con el archivo de bits utilizando otros medios. Uno de sus programadores para sus MCU probablemente pueda hacerlo. Sé que mi Segger J-link ciertamente puede.
DKNguyen
@Toor: De hecho, ese no es un cable específico del proveedor, pero aún tiene soporte codificado en las herramientas del proveedor, y el Segger es bastante más caro que un FT2232H.
Ben Voigt
2
Casi todos los proveedores principales proporcionan documentación de ingeniería para permitir que los flujos de bits de carga determinados a sus partes (tanto FPGA como flashes de configuración personalizados) con herramientas personalizadas, porque a veces es deseable en sistemas integrados o plataformas de prueba. Puede ser más simple usar el equipo compatible con el proveedor (especialmente al principio), pero he implementado alternativas para proyectos específicos varias veces a lo largo de los años. La parte más difícil de un proyecto de placa FPGA original puede ser todo el soporte que necesita una FPGA en la placa: muchos pares de potencia para enrutar y evitar, a menudo para varios voltajes distintos.
Chris Stratton
3

Cuando dice "el archivo [sic] de mapa de bits [sic] generado por", la respuesta es Sí, siempre y cuando elija el correcto: cometió un pequeño error al usar el artículo definido, ya que no se genera un solo archivo .

Por ejemplo, Quartus puede producir archivos SOF, POF y JIC. El último es el que utiliza para la programación indirecta a través de FPGA JTAG. No sería útil escribir eso en el flash SPI. El SOF es para cargar sobre JTAG para ejecutar su diseño en el FPGA de forma transitoria. POF es lo que necesita cargar en el chip flash.

Vea FPGA: Bitstream vs. SRAM Object File para obtener mucha información útil sobre lo que significan los diferentes archivos de cada uno de los diferentes proveedores.

Ben Voigt
fuente
1

¿Funcionaría una FPGA si yo ... conectara la memoria flash a los pines SPI de una FPGA (con la configuración MODE configurada correctamente)?

Si entiendo su pregunta correctamente, desea escribir la configuración de FPGA (por ejemplo, su modelo HDL compilado) en un SPI EEPROM o SPI Flash y desea que el FPGA se programe utilizando los datos en el SPI IC.

(Si entiendo la respuesta de Dave Tweed correctamente, él entendió su pregunta de una manera diferente).

Al menos muchos dispositivos de memoria Flash SPI NO funcionarían porque los IC de memoria Flash SPI requieren que se envíe una determinada forma de onda (por ejemplo, la dirección a leer) para que los datos se lean desde el IC.

Esta forma de onda no es la misma para todos los dispositivos de memoria Flash. Incluso cuando solo miramos las tarjetas de memoria SD (que también se pueden usar como memoria Flash SPI) encontramos dos variantes que requieren que se envíe una forma de onda diferente a la tarjeta antes de que la tarjeta lea los datos.

Al configurar los pines de modo del FPGA correctamente, el FPGA enviará alguna forma de onda que indica a algún dispositivo de memoria en serie que envíe los datos. Sin embargo, debido a que diferentes IC requieren diferentes formas de onda, no todos los IC Flash entenderán la forma de onda, sino solo ciertos tipos.

Sé que Altera produce circuitos especiales Flash o EEPROM IC que son compatibles con sus FPGA.

Martin Rosenau
fuente
Obviamente, una tarjeta SD no funcionará, ya que ningún FPGA (que yo sepa) admite SD / MMC como protocolo de configuración. La mayoría de los FPGA se adhieren a AT24 / AT26 / AT45.
Dmitry Grigoryev
1

Si desea escribir un flujo de bits FPGA en el flash sin las herramientas de programación FPGA oficiales, lo más probable es que desee convertir ese archivo de flujo de bits a un formato binario abierto que pueda leer fácilmente, como binario sin formato, Intel HEX o Motorola SREC ( ejemplo ). Esto eliminará cualquier encabezado propietario que pueda contener un flujo de bits FPGA.

De esta manera, podrá programar el flash utilizando las herramientas del fabricante del flash (o sus propias herramientas), o incluso solicitar los chips flash preprogramados con su flujo de bits FPGA.

Dmitry Grigoryev
fuente