Módulo Breakout UM232H-B como puerto paralelo

Quiero construir algo como Módulo de ruptura UM232H-B . Esta configuración utiliza un FT232H para convertir usb a serie/paralelo. No sé si funciona con cable de programación de puerto paralelo FPGA o no.

¿Es posible usar esta configuración en lugar de puertos paralelos para programar un FPGA XILINX? y ¿Esta configuración funciona con el ISE de XILINX?

Respuestas (1)

El proyecto gratuito xc3sprog ( http://xc3sprog.sourceforge.net ) admite la carga del firmware Xilinx FPGA a través de FT232H / FT2232H / FT4232H. Esto no cuenta con el apoyo oficial de Xilinx, pero parece estar bastante bien respaldado por la comunidad. (Lista de dispositivos compatibles: http://sourceforge.net/p/xc3sprog/code/HEAD/tree/trunk/devlist.txt )

Xilinx ISE (Impact) no admite este hardware directamente, pero puede escribir un pequeño archivo por lotes o un script de shell para pasar el archivo de flujo de bits del firmware a xc3sprog. Esto ayuda a ahorrar mucho escribir y escribir mal.

Si le molesta la falta de soporte oficial de Xilinx, o si opta por comprar una solución, digilentinc.com (un socio oficial de Xilinx) ofrece algunos módulos USB-JTAG de bajo costo (basados ​​en FT2232H, creo) y programación gratuita. software. Lamentablemente, han mantenido su circuito de módulo USB-JTAG patentado, pero xc3sprog + FT232H es una excelente alternativa de código abierto.

(El FT232H / FT2232H / FT4232H también es compatible con el bit banging general; consulte la Guía del programador D2XX en http://www.ftdichip.com/Support/Documents/ProgramGuides.htm )

Comprobación de las conexiones JTAG

Los chips de interfaz USB FTDIchip.com FT232H, FT2232H o FT4232H se pueden conectar a los pines Xilinx JTAG de la siguiente manera:

AD0 = TCK
AD1 = TDI
AD2 = TDO
AD3 = TMS

Para FT2232H puede usar BD0, BD1, BD2, BD3 como conexión alternativa.

Comando de ejemplo para verificar si las conexiones JTAG están funcionando:

xc3sprog.exe -L -c bbv2_2

Espere una respuesta (por ejemplo, con Spartan-3AN 700 FPGA, otros chips tienen diferentes valores de IDCODE):

JTAG loc.: 0    IDCODE: 0x22628093  Desc:       XC3S700AN   Rev: C  IR 

La primera vez que intente hacer que esto funcione, deberá determinar qué tipo de cable ha conectado. Mis ejemplos usan el tipo de cable, -c bbv2_2es decir, el segundo puerto del FT2232H, ya que eso es lo que he usado en mi placa FPGA personalizada. AD0-AD7 va a mi FPGA para comunicaciones y BD0-BD3 va a JTAG. Para el FT232H de puerto único, creo que desea usar -c ft232hen lugar de -c bbv2_2. Consulte cablelist.txt para ver la lista de opciones.

Configuración de prueba de FPGA

Una vez que haya verificado que xc3sprog puede ver su chip de interfaz USB y también puede ver el FPGA en la cadena de escaneo JTAG, puede cargar un archivo de flujo de bits de firmware (por ejemplo, top.bit).

Comando de ejemplo para cargar un flujo de bits (variable de archivo por lotes ms-dos %filename_dot_bit% ):

xc3sprog.exe -L -c bbv2_2 -v %filename_dot_bit%

Esto es excelente para el trabajo de desarrollo, donde solo desea cargar un nuevo flujo de bits de configuración directamente en el FPGA sobre JTAG. Pero cuando desea almacenar el flujo de bits en una memoria no volátil (para que el programa se ejecute cuando se aplica energía por primera vez), debe usar un proceso de dos etapas que primero carga un flujo de bits de exploración de límites.

Compatibilidad con la memoria de configuración de SPI en serie activa

Suponiendo que su placa esté configurada para el arranque SPI en serie activo desde una memoria flash SPI (como M25P), xc3sprog también admite este tipo de carga. La primera etapa carga la FPGA con un flujo de bits de soporte de exploración de límites conocido como bscan_spi , que otorga acceso JTAG al puerto SPI al que está conectada la memoria de configuración, luego la segunda etapa carga la memoria de configuración.

Cuando configure esto por primera vez, cree un nuevo proyecto dirigido a su FPGA. Dado que los flujos de bits de configuración no son portátiles a FPGA de diferentes tamaños, el nombre de archivo del proyecto real debe reflejar el modelo, el tamaño y el paquete de FPGA de destino específico (como xc3s700an.bito xc6slx16_cs324.bit). El código fuente de ejemplo se proporciona en el subdirectorio bscan_spi cuando descarga el código fuente de sourceforge. Este subdirectorio también contiene flujos de bits bscan_spi preconstruidos para varios FPGA de uso común. Necesita una de las fuentes de verilog, como bscan_s3_spi_isf.v (spartan-3) y un archivo de restricciones de usuario de UCF para especificar las ubicaciones de pines de FPGA donde está conectada la memoria de configuración de SPI en serie activa.

Para mi placa, personalicé el código bscan_spi para poner un espectáculo de luces de persecución con los LED, para indicar visualmente que la placa estaba ocupada programando su flash integrado.

Escritura de la memoria de configuración SPI

Los comandos para esta carga en dos etapas son así:

@REM Temporarily load boundary scan support firmware
xc3sprog.exe -L -c bbv2_2 -v %bscan_spi_bit%
@REM Now program the flash
xc3sprog.exe -L -c bbv2_2 -v -I %filename_dot_bit% -R

Si está implementando esta configuración para los clientes para que puedan actualizar el FPGA 'en el campo', simplemente proporcione al cliente:

1. xc3sprog.exe
2. the bscan_spi bitstream specific to your FPGA
3. your FPGA bitstream
4. batch file or shell script for launching xc3sprog
5. device driver for FTDIchip.com (if customer has very old system where FTDI driver not already built-in)
6. readme.txt file that instructs them to plug in the USB cable and run the batch file

En los archivos por lotes reales, también realizo algunas comprobaciones adicionales para generar un mensaje de error accionable si falta alguno de los archivos necesarios. Omitido para simplificar la respuesta.

¿Qué es bscan_spi.bit? y ¿Cómo puedo generarlo? ¿Es posible programar XCF04S con bscan_spi?
El flujo de bits de exploración de límites bscan_spi se compila para ejecutarse en la FPGA de destino, por lo que el nombre de archivo real será algo específico de la FPGA, como xc3s700an.bit o xc6slx16_cs324.bit; el código fuente común se encuentra en el subdirectorio bscan_spi del código fuente.
@SMA.D editado para aclarar cómo compilar el flujo de bits de soporte de bscan_spi. Espero que esto ayude.