docs: def read_fpga_reg(self, fpga_num, addr, cabinet, frame, board):
          """Read the value of an FPGA (SPI) register.
  
          See the SpI/O project's spinnaker_fpga design's `README`_ for a listing
          of FPGA registers. The SpI/O project can be found on GitHub at:
          https://github.com/SpiNNakerManchester/spio/
  
          .. _README: https://github.com/SpiNNakerManchester/spio/\
                      blob/master/designs/spinnaker_fpgas/README.md#spi-interface
  
          Parameters
          ----------
          fpga_num : int
              FPGA number (0, 1 or 2) to communicate with.
          addr : int
              Register address to read to (will be rounded down to the nearest
              32-bit word boundary).
  
          Returns
          -------
          int
              The 32-bit value at that address.
          """
          arg1 = addr & (~0x3)
          arg2 = 4  # Read a 32-bit value
          arg3 = fpga_num
          response = self._send_scp(cabinet, frame, board, SCPCommands.link_read,
                                    arg1=arg1, arg2=arg2, arg3=arg3,
                                    expected_args=0)
          return struct.unpack("<I", response.data)[0]