{"id":20536698,"url":"https://github.com/islandcontroller/arduinoxvc","last_synced_at":"2025-10-16T04:59:10.151Z","repository":{"id":153360538,"uuid":"230035434","full_name":"islandcontroller/ArduinoXVC","owner":"islandcontroller","description":"Xilinx Virtual Cable (XVC) Server implementation for use with an Arduino UNO/Leonardo","archived":false,"fork":false,"pushed_at":"2020-12-10T10:26:46.000Z","size":142,"stargazers_count":8,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-14T07:39:47.555Z","etag":null,"topics":["arduino","jtag","xilinx-fpga","xilinx-ise","xilinx-virtual-cable"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/islandcontroller.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-12-25T03:28:58.000Z","updated_at":"2024-05-20T15:16:31.000Z","dependencies_parsed_at":null,"dependency_job_id":"6ea64f78-1b69-45a7-b594-16df3707525e","html_url":"https://github.com/islandcontroller/ArduinoXVC","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/islandcontroller/ArduinoXVC","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/islandcontroller%2FArduinoXVC","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/islandcontroller%2FArduinoXVC/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/islandcontroller%2FArduinoXVC/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/islandcontroller%2FArduinoXVC/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/islandcontroller","download_url":"https://codeload.github.com/islandcontroller/ArduinoXVC/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/islandcontroller%2FArduinoXVC/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279157723,"owners_count":26116111,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-16T02:00:06.019Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","jtag","xilinx-fpga","xilinx-ise","xilinx-virtual-cable"],"created_at":"2024-11-16T00:37:31.558Z","updated_at":"2025-10-16T04:59:10.145Z","avatar_url":"https://github.com/islandcontroller.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ArduinoXVC\r\n[![Build Status](https://travis-ci.com/islandcontroller/ArduinoXVC.svg?branch=master)](https://travis-ci.com/islandcontroller/ArduinoXVC)\r\n\r\nThis project implements a bare-bones Xilinx Virtual Cable server on an Arduino Uno / Leonardo, based on the specification posted in [Xilinx/XilinxVirtualCable](https://github.com/Xilinx/XilinxVirtualCable).\r\n\r\n\u003cimg align=\"center\" src=\"scr.png\" /\u003e\r\n\r\n## Hardware\r\nMake sure that the device's JTAG output-high voltage does not exceed the Arduino's maximum input voltage!\r\n\r\nConnect your Arduino Uno to the JTAG port of the target device:\r\n\r\n| Arduino Pin     | JTAG Pin |\r\n|-----------------|----------|\r\n| `2` (OD output) | `TCK`    |\r\n| `3` (OD output) | `TMS`    |\r\n| `4` (OD output) | `TDI`    |\r\n| `5` (input)     | `TDO`    |\r\n| `GND`           | `GND`    |\r\n\r\nThe Arduino's pins are configured as *open drain* outputs to automatically adjust to the target's JTAG I/O voltage. External pull-up resistors aren't required, as Xilinx PLDs provide them internally.\r\n\r\n## Software\r\nSo far, this project has been tested successfully using **ISE 14.7** and **iMPACT**. \r\n\r\nAn additional program is required to translate the serial port to a TCP socket, e.g. [pyserial: tcp_serial_redirect](https://github.com/pyserial/pyserial/blob/master/examples/tcp_serial_redirect.py).\r\n\r\n1. Start the tcp-to-serial bridge application to serve the Arduino's Serial VCP to `localhost:2542`. Use baudrate `115200` and `8N1` mode.\r\n\r\n```\r\npython tcp_serial_redirect -P 2542 COMx 115200\r\n```\r\n\r\n2. Open iMPACT and start the *Boundary Scan* flow\r\n3. Open the *Cable Setup* dialog (either via right-click or the *Output* menu)\r\n4. Mark the checkbox under *Cable Plug-In*\r\n5. Enter the following into the combobox below:\r\n\r\n```\r\nxilinx_xvc host=127.0.0.1:2542 disableversioncheck=false\r\n```\r\nSet `disableversioncheck` to `false` for iMPACT to parse the `getinfo` version string and maximum packet size.\r\n\r\n6. The PLD should now show up and be identified correctly when you run *Initialize Chain*.\r\n\r\n### Programming / Readout speed\r\nJTAG transfers are limited to a clock frequency of ~100 kHz, leading to excessive programming times for large FPGA bitfiles. \r\n\r\n| Device   | File size | Programming time |\r\n|----------|-----------|------------------|\r\n| XC2C64A  | 27 kiB    | 10 Seconds       |\r\n| XC6SLX9  | 333 kiB   | 5 Minutes        |","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fislandcontroller%2Farduinoxvc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fislandcontroller%2Farduinoxvc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fislandcontroller%2Farduinoxvc/lists"}