gpo HDL Worker

Detail

The GPO device worker can control the GPIO pins via the property mask_data, and its (optional) input port.

The (optional) input port uses a protocol that has one opcode and contains data and a mask. See gpio_protocol.xml in ocpi.core/specs/gpio_protocol.xml for further details on the protocol.

The port and the mask_data property set the values of pins using a data and mask. In order for a GPIO pin to take on the value of a data bit, the corresponding mask bit has to be set to 1. Pins that don’t have a mask bit set to 1 are left untouched. The MSW of mask_data and the port data, must be the mask and the LSW must be the data.

The mask_enable property provides a way for enabling or disabling the use of the property “mask_data”; or the input port “data” and “mask”; if it desired to enable or disable any one of the ways of controlling the GPIO pins. By default both are enabled.

There also is a pin_state property that stores the current GPIO pin state.

Control Timing and Signals

The GPO device worker uses the clock from the Control Plane and standard Control Plane signals.

Worker Properties

  • NUM_OUTPUTS

    • Type: uchar

    • Access:

      • Parameter: True

      • Writable: False

      • Initial: False

      • Volatile: False

      • Read back: False

    • Default value: None

  • mask_enable

    • Type: uchar

    • Access:

      • Parameter: False

      • Writable: True

      • Initial: False

      • Volatile: False

      • Read back: False

    • Default value: 3

  • mask_data

    • Type: ulong

    • Access:

      • Parameter: False

      • Writable: True

      • Initial: False

      • Volatile: False

      • Read back: False

    • Default value: 0

  • pin_state

    • Type: ushort

    • Access:

      • Parameter: False

      • Writable: False

      • Initial: False

      • Volatile: True

      • Read back: False

    • Default value: None

Worker Ports

    Inputs:

  • in

    • Protocol: gpio

    • Optional: True

Worker Signals

  • gpo_pin

    • Direction: out

    • Width: NUM_OUTPUTS

    • Differential: false

    • Pin: false

Utilization

Utilization reporting is not currently implemented.