aioscilloscope / Requests / Ivan7enych

A long RS232 packet readable zoomed out, decoded once from the whole record, and an S/PDIF decoder

Suggested by Ivan7enych on the EEVblog forum. Thank you!

being built · DHO800/900, MHO900

What's new

The value in every box
Decoded once, from the whole recordStopped at 5 ms/div with 25 Mpts, 115200 b/s RS232 packets back to back: on a DHO924S, all 900 characters of the 80 ms record decoded, in sequence and none in error; on an MHO934, 564. The screen trace at that setting has fewer points than the line has bits, so a decoder reading it finds no characters. Zooming and scrolling that capture never decode it again.
S/PDIF and AES3

How it works

The value in every box

Each decoded box shows the longest form of its text that fits: the whole text, then the value alone without its tag (A:12 becomes 12), then the value cut short with an ellipsis. A box with no room even for its value is drawn filled, so it still reads as a packet; boxes too narrow to tell apart merge into one bar, with any packet that failed a check marked red on it. The same rule applies to every decoder's lanes, RS232, I2C, SPI, CAN, LIN and NovaOS's own decoders alike.

Decoded once, from the whole record

When the scope stops, every decoder on analog channels reads the acquisition's whole record, not the screen trace, and decodes it once, off the screen's thread. Zooming, scrolling and changing the timebase of that capture then only redraw the packets already decoded, and the event table starts at the packet the view starts at. The record is read as finely as each bus needs, at least 8 samples a bit for RS232 and LIN and 16 for CAN, and at least 2 million points a channel when that is finer. While running, a bus whose rate needs more samples than the screen trace has is decoded from the record in the window too. The table's title says when the packets come from the full record.

S/PDIF and AES3

A new NovaOS decoder, S/PDIF, reads a coaxial or optical S/PDIF line on an analog channel or a logic-probe line, and an AES3 balanced pair as the difference of two channels. It finds the B, M and W preambles and decodes each subframe: the 20- or 24-bit sample, the aux bits, V, U, C and the parity check. Frames are grouped into blocks of 192, and each block's channel status is decoded: consumer or professional, sampling frequency, word length, copy and emphasis. The left and right samples show in their own lanes, the event table has a row per frame, and parity errors, biphase errors, missing preambles and short blocks are marked. The bit rate is measured from the line itself, so a capture can start anywhere in a block, and a source slightly off its nominal rate still decodes. Every rate from 32 to 192 kHz decodes on both families with every channel count: 192 kHz needs about 98 MSa/s, and the slowest case, a DHO800/DHO900 with the logic probe on, samples at 156 MSa/s. A pulse-width trigger set to the preamble's width (Trigger on B<n>) holds the display still on the stream. Its sheet, :NOVAos:BUS<n>:SPDif:* over SCPI and :BUS<n>:DATA? work as for NovaOS's other decoders.

Where it stands

  1. DoneBuilt

    The labels and the whole-record decode, tested on the synthetic bench of both families: a stopped RS232 capture decoded once through every zoom and scroll, and labels fitted to the font.

  2. DoneOn the DHO924S

    The generator's 115200 b/s packets into a channel, stopped at 25 Mpts: every character decoded from the whole record, then zoomed and scrolled without being decoded again.

  3. DoneOn the MHO934

    The same bench on our MHO934: 564 characters from the whole record.

  4. DoneS/PDIF built

    The decoder, tested on synthetic streams at every rate: whole blocks, a capture starting mid-block, jitter and noise, both polarities, parity and biphase errors, and consumer and professional channel status.

  5. DoneS/PDIF on the MHO934

    A 48 kHz S/PDIF line played by our MHO934's own generator into a channel: every frame decoded with its left and right samples and parity, and the channel status read as consumer, audio, copy permitted, no emphasis, 48 kHz, 24 bits. The line's rate was measured at 48.00 kHz. The generator holds 64 of a block's 192 frames, so each block is rightly marked short.

  6. Waiting on the hardwareS/PDIF from a real source

    Next, a real coaxial S/PDIF source with full 192-frame blocks.

What Ivan7enych asked for

Zoomed out on a large packet, each box shows its value (00), not a tag squeezed in or an empty box; A stopped capture decoded once; zooming and scrolling only move around the packets already decoded; The decode reads the acquisition record, not the screen's few thousand points; An S/PDIF decoder.

1 - it draws <Data:00> or <D:00> or nothing <>, never just 00 when I zoom out to see a large packet.
2 - In Stop mode the captured data must be decoded once, not every time I zoom in/out or scroll a large packet.
Decoder ideally must work on full data, not decimated screen representation.
Can you implement S/PDIF decoder?

Try it and tell us what to change: reply on NovaOS's thread on the EEVblog forum.