<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def spinn5_fpga_link(x, y, link, root_x=0, root_y=0):
 """Get the identity of the FPGA link which corresponds with the supplied link. .. note:: This function assumes the system is constructed from SpiNN-5 boards whose FPGAs are loaded with the SpI/O 'spinnaker_fpgas' image. Parameters x, y : int The chip whose link is of interest. link : :py:class:`~rig.links.Link` The link of interest. root_x, root_y : int The coordinates of the root chip (i.e. the chip used to boot the machine), e.g. from :py:attr:`rig.machine_control.MachineController.root_chip`. Returns ------- (fpga_num, link_num) or None If not None, the link supplied passes through an FPGA link. The returned tuple indicates the FPGA responsible for the sending-side of the link. `fpga_num` is the number (0, 1 or 2) of the FPGA responsible for the link. `link_num` indicates which of the sixteen SpiNNaker links (0 to 15) into an FPGA is being used. Links 0-7 are typically handled by S-ATA link 0 and 8-15 are handled by S-ATA link 1. Returns None if the supplied link does not pass through an FPGA. """

    x, y = spinn5_chip_coord(x, y, root_x, root_y)
    return SPINN5_FPGA_LINKS.get((x, y, link))