Conexión de programación Xilinx Spartan 3A: ¿dónde están los pines MISO y MOSI?

Estoy tratando de encontrar conexiones SPI para descargar mi programa a Xilinx XC3S50A-4VQG100C pero no puedo entender qué pines son pines SPI.

Alerta de novato: acabo de empezar a aprender FPGA y estoy tratando de construir mi propia placa de desarrollo desde cero (siempre aprendo mejor de esa manera). En el mundo de los microcontroladores, todo lo que tenía que hacer era simplemente conectar MOSI, MISO, SCK, SS a los pines del conector y ejecutar el programador, ¡pero aquí las cosas son diferentes! Estoy usando el programador Waveshareingrese la descripción de la imagen aquí

FPGA es una caja negra programable... construir su propia placa de desarrollo no le enseñará qué hay dentro de la caja negra, que es la parte FPGA del dispositivo.
FWIW, creo que Xilinx ha declarado obsoleta la serie Spartan3, por lo que es posible que tenga problemas para encontrar herramientas que pueda usar.
@ElliotAlderson Xilinx ISE todavía funciona, aunque ya no se actualiza desde hace algunos años. Pocas opciones si quiere hacer su propia placa FPGA y no quiere lidiar con BGA. Esa es la mayor parte de la razón por la que no he probado mi propia placa FPGA.

Respuestas (2)

Si espera poder usar su programador para cargar un flujo de bits de configuración directamente en la FPGA que solo almacena eso en SRAM especializada, se sorprenderá cuando se olvide de todo cada vez que lo apague.

A diferencia de los microcontroladores, la gran mayoría de los FPGA no tienen memoria no volátil integrada. El SPI está diseñado para escribir en una memoria flash SPI externa. La FPGA esperará un determinado protocolo para la memoria flash SPI y un esquema de cableado particular.

Cada vez que se enciende, si los puentes correctos están en su lugar, la FPGA ejecutará automáticamente alguna secuencia para leer su flujo de bits de configuración desde el flash SPI para configurarse. Por lo tanto, debe leer el manual detenidamente para conocer la memoria flash aceptable que se puede usar, así como el esquema de cableado, ya que esto hará o romperá su placa de manera similar a si el cableado de programación JTAG es incorrecto en un microcontrolador.

Si se perdió esta diferencia básica, es probable que se haya perdido algunos otros problemas importantes que son diferentes a los microcontroladores. Lea el manual detenidamente, o al menos hojee cada sección varias veces para detectar diferencias evidentes. Hay otras diferencias (como reloj y fuentes de alimentación). Hay una razón por la que implementar un FPGA en una PCB es más difícil (a veces mucho más difícil) que una MCU. No asuma que las cosas en un FPGA ya están atendidas como en un MCU. Uno es como conducir manual y el otro es como conducir automático.

Le sugiero que primero obtenga un módulo de desarrollo que es como una pequeña placa de desarrollo sin casi nada (generalmente solo el FPGA, las fuentes de alimentación, el reloj, la ROM de configuración, a veces alguna ROM no volátil, a veces RAM, tal vez un ADC, y, a veces, un programador USB) que puede conectar a su propia placa (o incluso a una placa de prueba). De esa manera, tiene una referencia de si su código funciona o no para su propio devboard. De lo contrario, está depurando desde dos extremos simultáneamente. Sin mencionar que puede ver el esquema del módulo de desarrollo, que es mucho más pequeño y fácil de entender. Podría valer la pena examinar el esquema incluso si no es el mismo FPGA. Recomiendo Micronova, Trenz (los módulos que realmente fabrica Trenz, ya que también venden otros) y Alchitry.

Muchas gracias por la completa descripción. @DKNguyen Estaba leyendo sobre eso y supuse que Spartan-3 tiene ISF (memoria Flash en el sistema) que podría usarse para tales fines, o tal vez me equivoque
@Aug Algunos Spartan 3 vienen con memoria de configuración no volátil integrada, pero la mayoría no. Entonces, a menos que haya hecho todo lo posible para obtener uno, no cuente con eso. El flash incorporado definitivamente no es el tipo de cosa que una línea completa de FPGA tendrá en todos los ámbitos; Solo variantes especiales. No creo que estén disponibles en cantidades bajas. Creo que tienes que pedir miles a la vez para que la fábrica aumente la producción específicamente para ti.
Grandes detalles, ¿crees que puedes indicarme la dirección de un esquema?
Micronova, Trenz y Alchitry. Parece que Micronova ha dejado obsoleto su módulo Mercury al eliminar el enlace de su sitio web. Entonces solo conduce al Mercury II ahora. Es posible que esté más interesado en el Mercury I, que usa un Spartan en lugar de un Artix, pero aún puede buscarlo en Google para ir directamente a la página web. micro-nova.com/products/me1b
"A diferencia de los microcontroladores, la gran mayoría de los FPGA no tienen memoria no volátil integrada". Bueno, cualquier cosa, excepto las placas de desarrollo más baratas, generalmente tienen memoria no volátil en un chip separado conectado al FPGA. Así que eso es fácil de arreglar. A menudo hay un interruptor para cambiar entre el modo volátil y no volátil en esos tableros y si OP realmente quiere crear su propio tablero de desarrollo, esa es la ruta que sugeriría.
@Mast Estamos hablando del FPGA aquí, no de la placa en la que está. Cuando intenta implementar un FPGA en su propia placa, no importa que otras placas siempre incluyan memoria no volátil externa, ya que su propia placa FPGA no puede hacer uso de ese hecho.
Pueden hacer uso de eso, si lo agregan a su tablero.
@Mast Eso realmente está torciendo las cosas, a menos que lo que pretendías hacer fuera terminar con tu intención en lugar de liderarla.
Definitivamente podría haber expresado eso mejor, sí.

Para el dispositivo XC3S50A-4VQG100C, utiliza la interfaz JTAG, no SPI. Tiene pines dedicados.

JTAG es una interfaz algo similar a SPI pero estandarizada para FPGA, interfaces de depuración en muchos microprocesadores y para fines de prueba.

Hay dispositivos XC3S50AN que tienen una memoria no volátil en el mismo paquete, por lo que no necesita incluir una memoria flash separada en la placa. Xilinx denota estos dispositivos con el sufijo 'N' en el número de pieza.

Las señales JTAG están en estos pines para ese dispositivo y paquete:

XC3S50A-4VQG100C señales JTAG

Hoja de datos de XC3S50A-4VQG100C