intel_jtag_uart
is a Python module that can be used to interact with the JTAG UART instances inside
Intel FPGA designs.
The official ways to do this are either interactively, through nios2-terminal
utility,
or by scripting some TCL code inside the Quartus System Console. There is no official
straightforward way to interact with a JTAG UART with Python.
This module is a wrapper around the jtag_atlantic
shared library/DLL that is part of any
modern Quartus installation. (jtag_atlantic
is the internal code name for the JTAG UART.)
To use this module, you need access to the jtag_atlantic
shared library as well as the jtag_client
shared library, which provides lower level JTAG-related functions.
-
Install this package with
pip3 install intel_jtag_uart
. -
Point to the
jtag_atlantic
andjtag_client
shared libraries, so that the module can find it.The module uses the following sequence to find these libraries:
- Look in the directory in which
intel_jtag_uart.py
is located - Look in the directory in which the executable that uses this module is located
- Use the OS-provided way to find shared libraries. (E.g. for Linux, it will check
the directories of the
$LD_LIBRARY_PATH
environment variable.) - Look in the
$QUARTUS_ROOTDIR
directory
Most default Quartus installations will have
$QUARTUS_ROOTDIR
environment variable set to the correct directory, so everything should just work™. - Look in the directory in which
-
Use some variation of the script below:
import intel_jtag_uart
try:
ju = intel_jtag_uart.intel_jtag_uart()
except Exception as e:
print(e)
sys.exit(0)
ju.write(b'r')
time.sleep(1)
print("read: ", ju.read())
The script sends r
to the JTAG UART, waits 1 seconds for a reply, and reads the
reply, if there is any. If you have an Arrow/Terasic DECA FPGA board, you can check
things out right away with a precompiled example bitstream.
Use the source, Luke!
This module is a very thin wrapper around a handful of function calls that are mostly self-explanatory.
Bug reports, comments, or questions can be entered through the GitHub issue tracker of this project.