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!
fuente
Respuestas:
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.
fuente
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.
fuente
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.
fuente
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.
fuente