Software Drivers

Alongside the hardware, the XiBIF Python package also provides a suite of modules to help you interface with and configure the FPGA.

XiBIF Connection

The XibifConnection class from the xibif-connection package allows you to connect to a XiBIF board and exchange data. The xibif-connection package is automatically installed when you install xibif.

from xibif_connection.api import XibifConnection
board = XibifConnection(BOARD_IP, BOARD_UUID)
board.connect()

The UUID is used to ensure that you connect to the correct hardware. Ask us how we know!

You then have access to many useful functions such as:

  • read (registers)

  • write (registers)

  • read_stream

  • write_stream

  • flush_stream

  • read_axi

  • write_axi

The XibifConnection class serves as a low-level interface to the board. It translates the human-friendly data types into bytes to be transmitted over a socket.

Register Driver

This class is dynamically created from the register configuration file. The register driver takes a reference to a XibifConnection in the constructor and then lets you interface with the registers and even the fields directly.

Using a register class you can do the following:

board = XibifConnection(BOARD_IP, BOARD_UUID)
board.connect()
regs = RegMap(board)                       # the register map uses the XibifConnection as an interface
regs.my_register = 1                       # set a register value
val = regs.my_register                     # read a register value
assert(val == 1)
regs.my_register_bf.my_field_1 = 0         # set a single field value
regs.my_register = 0                       # set the entire register value

Note

Pay attention to the _bf suffix of the register name when you want to access the register.