golay_decoder_ul_us HDL Worker

Implementation of a Golay decoder that decodes Golay [24,12,8] codewords.

Detail

The Golay codewords generated by this worker use the characteristic polynomial shown in the following equation, which can also defined as 0xAE3.

(18)\[x^{11}+x^9+x^7+x^6+x^5+x+1\]

The input port data is a potential Golay codeword.

This worker detects if there was a parity bit error and/or codeword error. For codeword errors it only checks if there was an error not the amount of bits that have an error.

If there is an error it can only correct up to 3 bit errors. If the bit errors in a codeword is greater than 3, then the wrong data may be decoded.

This implementation uses a ROM of precomputed Golay error patterns for 3 or fewer bit errors. The syndrome is calculated and then used as an address to the error pattern ROM.

It only can process 24 bit data at a time, so it only looks at the 24 LSB bits of the input data port.

The codewords that are decoded are 12 bits wide, placed in the 12 LSB bits of the output data port.

Latency:

  • The output has a latency of one input_in.clk clock cycle

References:

Worker Properties

  • clr_parity_bit_sticky_error

    • Type: bool

    • Access:

      • Parameter: False

      • Writable: True

      • Initial: False

      • Volatile: False

      • Read back: False

    • Default value: false

  • parity_bit_sticky_error

    • Type: bool

    • Access:

      • Parameter: False

      • Writable: False

      • Initial: False

      • Volatile: True

      • Read back: False

    • Default value: None

  • clr_codeword_sticky_error

    • Type: bool

    • Access:

      • Parameter: False

      • Writable: True

      • Initial: False

      • Volatile: False

      • Read back: False

    • Default value: false

  • codeword_sticky_error

    • Type: bool

    • Access:

      • Parameter: False

      • Writable: False

      • Initial: False

      • Volatile: True

      • Read back: False

    • Default value: None

  • checkbits_mask

    • Type: ushort

    • Access:

      • Parameter: False

      • Writable: False

      • Initial: True

      • Volatile: False

      • Read back: False

    • Default value: 0

  • ocpi_buffer_size_output

    • Type: ushort

    • Access:

      • Parameter: False

      • Writable: False

      • Initial: True

      • Volatile: False

      • Read back: False

    • Default value: 0

  • ocpi_blocked_output

    • Type: ulong

    • Access:

      • Parameter: False

      • Writable: False

      • Initial: False

      • Volatile: True

      • Read back: False

    • Default value: None

  • ocpi_max_latency_output

    • Type: ushort

    • Access:

      • Parameter: True

      • Writable: False

      • Initial: False

      • Volatile: False

      • Read back: False

    • Default value: None

  • ocpi_latency_output

    • Type: ushort

    • Access:

      • Parameter: False

      • Writable: False

      • Initial: False

      • Volatile: True

      • Read back: False

    • Default value: None

  • ocpi_messages_output

    • Type: ulong

    • Access:

      • Parameter: False

      • Writable: False

      • Initial: False

      • Volatile: True

      • Read back: False

    • Default value: None

  • ocpi_bytes_output

    • Type: ulong

    • Access:

      • Parameter: False

      • Writable: False

      • Initial: False

      • Volatile: True

      • Read back: False

    • Default value: None

Worker Ports

    Inputs:

  • input

    • Protocol: ulong_timed_sample

    • Optional: False

  • Outputs:

  • output

    • Protocol: ushort_timed_sample

    • Optional: False

Worker Ports

Inputs:

  • input:

    • Type: StreamInterface

    • Protocol: ulong_timed_sample-prot

    • ClockDirection: in

    • Data width: 32

Outputs:

  • output:

    • Type: StreamInterface

    • Protocol: ushort_timed_sample-prot

    • Worker EOF: true

    • InsertEOM: true

    • Clock: input

    • Data width: 16

Utilisation

Utilization reporting is not currently implemented.