ESP8266 implementation of XVC (Xilinx Virtual Cable) protocol based on xvcd (https://github.com/tmbinc/xvcd).
By connecting the ESP8266 to the JTAG pins (TDI, TDO, TMS, TCK) of the target FPGA, you can access the JTAG port of the FPGA from a Xilinx tool (Vivado, etc.) via WiFi.
Author: Gennaro Tortone (https://github.com/gtortone)
Author 2: Dhiru Kholia - Remove optimizations (in hope of gaining wider
compatibility), Mirror functions from xvcpi (to make debugging easier).
Note: This project was tested with Vivado 2021.1, WeMos D1 Mini as the JTAG programmer (XVC daemon), and EBAZ4205 'Development' FPGA Board in August 2021.
Change the WiFi credentials in the credentials.h file.
Note: The default pin mappings for the common, low-cost WeMos D1 Mini ESP8266
development board are:
| ESP8266 | JTAG |
|---|---|
| D6 | TDI |
| D4 | TDO |
| D7 | TCK |
| D5 | TMS |
Feel free to experiment with different ESP8266 development boards - most should just work with any problems.
Next, build the program using Arduino IDE and write it to the ESP8266 board.
Finally, select the Add Xilinx Virtual Cable (XVC) option in the Hardware Manager in Vivado and mention the IP address of the ESP8266 board.
make install_arduino_cli
make install_platform
make deps
make upload
If you see the End of startup status: LOW error message in Vivado, check the
FPGA power supply's voltage and current ratings.
If cost and ease-of-availability are the driving constraints (at the cost of
speed), then this project is 'usable' and can probably suffice. If higher
programming speed is a requirement, I recommend using xc3sprog or
openFPGALoader with an FT2232H board.
This project might be the cheapest Vivado-Compatible JTAG programmer.
https://github.com/gtortone/esp-xvcd is much faster but there have been reports
of FPGA programming failures with it.
https://github.com/pftbest/xvc-esp8266 - this has GPIO optimizations + a nice program structure - thanks!
Also see the following Related Projects section.
- https://github.com/kholia/xvc-pico
- https://github.com/kholia/xvcpi
- https://github.com/kholia/xvc-esp32
- https://github.com/kholia/Colorlight-5A-75B
- https://github.com/fusesoc/blinky#ebaz4205-development-board
Probably -> CC0 1.0 Universal (CC0 1.0) - Public Domain Dedication

