Spif and ExternalFPGARetinaDevice

14 views
Skip to first unread message

Sergio Davies

unread,
Mar 6, 2025, 12:31:40 PMMar 6
to SpiNNaker Users Group
Hi Everyone,
I am in the process of integrating a silicon retina with SpiNNaker through Spif.
I am using the neural model ExternalFPGARetinaDevice to inject events via a PyNN script.
However, I am facing an issue with the retinal resolution. The retina I am using is a CenturyArks model with a 640x480 resolution to capture the entire field of vision.
I have added a new mode (mode = 640) to the external_spinnaker_link_fpga_retina_device.py file (attached) in the two functions, identifying 10 bits for the x coordinate and 9 bits for the y.
Below are the two functions:
  • get_y_from_fpga_retina
  • get_x_from_fpga_retina
Could you please confirm if this is correct or if it might cause issues with routing keys on the machine?
Thank you.
Kind regards,
Sergio Davies

def get_y_from_fpga_retina(key, mode):
    if mode == 640:
        return key & 0x1FF  # 9-bit for 480 pixels
    elif mode == 128:
        return key & 0x7F
    elif mode == 64:
        return key & 0x3F
    elif mode == 32:
        return key & 0x1F
    elif mode == 16:
        return key & 0xF
    return None

def get_x_from_fpga_retina(key, mode):
    if mode == 640:
        return (key >> 9) & 0x3FF  # 10-bit for 640 pixels
    elif mode == 128:
        return (key >> 7) & 0x7F
    elif mode == 64:
        return (key >> 6) & 0x3F
    elif mode == 32:
        return (key >> 5) & 0x1F
    elif mode == 16:
        return (key >> 4) & 0xF
    return None

Andrew Rowley

unread,
Mar 7, 2025, 3:21:04 AMMar 7
to Sergio Davies, SpiNNaker Users Group
Hi,

There are already a couple of SPIF implementation classes. Please see https://github.com/SpiNNakerManchester/sPyNNaker/tree/master/spynnaker/pyNN/external_devices_models.

There are some additional details here:
https://spinnakermanchester.github.io/development/spif

The classes so far are:
- SPIFRetinaDevice: A 2D set of neurons coming from SPIF. This takes advantage of more efficient 2D handling in sPyNNaker, though to take advantage of this, you need to make other 2D populations. This might work better when used with the ConvolutionConnector and Convolution synapse type (see the link on the page above for more details).
- SPIFInputDevice: A linear set of neurons coming from SPIF. This can be used for Retina cameras without 2D forward connections, but also for other sensors that may not have a sense of 2D.
- SPIFOutputDevice: A linear set of neurons running on SPIF. This might be e.g. a robot control.

Note that these classes all send appropriate messages to configure SPIF and the SpiNNaker FPGAs to ensure they are configured correctly with the devices attached. This will then avoid the need to set up the interpretation of x and y since this is handled by SPIF itself.

Andrew :)

________________________________________
From: spinnak...@googlegroups.com <spinnak...@googlegroups.com> on behalf of Sergio Davies <sergio...@gmail.com>
Sent: 06 March 2025 17:31
To: SpiNNaker Users Group
Subject: [SpiNNaker Mailing List] Spif and ExternalFPGARetinaDevice

Hi Everyone,
I am in the process of integrating a silicon retina with SpiNNaker through Spif.
I am using the neural model ExternalFPGARetinaDevice to inject events via a PyNN script.
However, I am facing an issue with the retinal resolution. The retina I am using is a CenturyArks model with a 640x480 resolution to capture the entire field of vision.
I have added a new mode (mode = 640) to the external_spinnaker_link_fpga_retina_device.py file (attached) in the two functions, identifying 10 bits for the x coordinate and 9 bits for the y.
Below are the two functions:

* get_y_from_fpga_retina
* get_x_from_fpga_retina

--
You received this message because you are subscribed to the Google Groups "SpiNNaker Users Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to spinnakeruser...@googlegroups.com<mailto:spinnakeruser...@googlegroups.com>.
To view this discussion, visit https://groups.google.com/d/msgid/spinnakerusers/d47f766c-561b-42f0-acf8-332092ec4cbdn%40googlegroups.com [groups.google.com]<https://urldefense.com/v3/__https://groups.google.com/d/msgid/spinnakerusers/d47f766c-561b-42f0-acf8-332092ec4cbdn*40googlegroups.com?utm_medium=email&utm_source=footer__;JQ!!PDiH4ENfjr2_Jw!G-MpK1nmZmDgHg8fOfpCNm1XZ0hrvW4qqIQ9rdsNtvo4Epf36FQCutK0mY6KprmGE6AU7bVQMrd1M_qZXsmHPw3JhN6XHrc0Vg$>.

Reply all
Reply to author
Forward
0 new messages