Analyzer

Low-level USB analyzer gateware.

class sol_usb.gateware.usb.analyzer.USBAnalyzer(*args, src_loc_at: int = 0, **kwargs)

Core USB analyzer; backed by a small ringbuffer in FPGA block RAM.

If you’re looking to instantiate a full analyzer, you’ll probably want to grab one of the DRAM-based ringbuffer variants (which are currently forthcoming).

If you’re looking to use this with a ULPI PHY, rather than the FPGA-convenient UTMI interface, grab the UTMITranslator from sol.gateware.interface.ulpi.

Variables:
  • stream (StreamInterface(), output stream) – Stream that carries USB analyzer data.

  • idle (Signal(), output) – Asserted iff the analyzer is not currently receiving data.

  • stopped (Signal(), output) – Asserted iff the analyzer is stopped and not capturing packets.

  • overrun (Signal(), output) – Asserted iff the analyzer has received more data than it can store in its internal buffer. Occurs if :attr:stream is not being read quickly enough.

  • capturing (Signal(), output) – Asserted iff the analyzer is currently capturing a packet.

  • discarding (Signal(), output) – Asserted iff the analyzer is discarding the contents of its internal buffer.

Parameters:
  • utmi_interface (UTMIInterface()) – The UTMI interface that carries the data to be analyzed.

  • mem_depth (int, default = 8192) – The depth of the analyzer’s local ringbuffer, in bytes. Must be a power of 2.