intel_jtag_uart
intel_jtag_uart copied to clipboard
A Python module to interact with an Intel JTAG UART
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.
Usage
-
Install this package with
pip3 install intel_jtag_uart. -
Point to the
jtag_atlanticandjtag_clientshared 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.pyis 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_PATHenvironment variable.) - Look in the
$QUARTUS_ROOTDIRdirectory
Most default Quartus installations will have
$QUARTUS_ROOTDIRenvironment 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.
Full List of Functions/Methods
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/Questions
Bug reports, comments, or questions can be entered through the GitHub issue tracker of this project.