TinyXVC allows you to connect Xilinx FPGAs to a Vivado or ISE without using expensive Xilinx Platform Cable.
Instead it provides a "virtual cable" on top of an affordable FTDI chip that connects FPGA' JTAG TAP pins to your computer USB. This is the only additional hardware that one needs to start! Just use any of a myriad of breakout boards or cables that feature MPSSE-capable FTDI chip (already tested with FT232H, FT2232H):
- connect breakout board/cable to your PC USB
- connect JTAG pins (TCK, TMS, TDI, TDO) of FTDI chip to JTAG TAP of your FPGA (ensure first that it tolerates 3.3V IO levels from FTDI, otherwise you may need a shifter)
It is even easier if your FPGA development board already has integrated FTDI.
On Ubuntu 20.04.1 LTS, Intel® Core™ i7-8550U CPU @ 1.80GHz × 8 host, using 100ns TCK period:
- to program configuration memory for Spartan 6 XC6SLX9 (via iMPACT) - instant (less than 2 sec)
- to program configuration memory for Artix 7 XC77A50T (via Vivado) - ~4.5 sec
- to program QSPI flash indirectly for Artix 7 XC77A50T (via Vivado) - ~125 sec
(Indeed numbers depend mostly on TCK period, dev machine CPU speed is way less important.)
Once FPGA is connected to a PC via appropriate cable or dongle, start txvc
with a proper
options. Assuming we use FT232H cable to talk to FPGA, it can be as a simple as:
$ txvc -p ft232h
txvc: I: Found alias ft232h (FT232H-based USB to JTAG cable),
txvc: I: Using profile ftdi-generic:device=ft232h,vid=0403,pid=6014,channel=A,read_latency_millis=1,d4=ignored,d5=ignored,d6=ignored,d7=ignored,
ftdiGeneric: I: Using d2xx driver v.1.4.24
ftdiGeneric: I: Using device "Single RS232-HS" (serial number: "")
server: I: Listening for incoming connections at 127.0.0.1:2542...
When it is listening for client to connect - open Vivado' Hardware Manager and via "Open target"
connect to a virtual cable at address that is shown in txvc
log. If using ISE - launch iMPACT
and via "Cable setup..." choose "Cable Plug-in" with the next configuration:
xilinx_xvc host=127.0.0.1:2542 disableversioncheck=true
That's it, now try to upload your designs to an FPGA!
To get more info about available options:
$ txvc -h
Currently txvc
supports only MPSSE-capable FTDI chips as an intermediate between FPGA and dev
machine, though other "backends" can be added easily.
Supported and tested chips are:
- FT232H
- FT2232H
Other models should also work but were not tested.
Prebuilt packages can be found here. Note that attached devices should be re-pluged once package is installed.
Build process was tested on Ubuntu 20.04 but should work on other distros as well.
Install tools and dependencies:
$ sudo apt install build-essential cmake
Once sources are checked out, build with next:
$ cd TinyXVC
$ mkdir build && cd $_
$ cmake ../ && make all
$ txvc/txvc -h
You may need an appropriate udev rules to be able to open USB devices. This may be needed
if running locally built txvc
or using device with non-standard IDs. In this case follow
instructions from udev/
.
Boards - Profile
- Numato Lab Mimas A7 FPGA Development Board - mimas_a7
- Numato Lab Mimas Mini FPGA Development Board - mimas_a7_mini
- Numato Lab Narvi Sparten 7 FPGA Module - narvi
Generic cables - Profile
- FT232H cable - ft232h