gateware.qspi: migrate to new `IOStreamer`.
by whitequark 3 weeks 6 days
140d97b2
gateware.jtag.probe: migrate to new `IOStreamer`.
by whitequark 3 weeks 6 days
dce8d9d0
applet.interface.jtag_xvc: migrate to new `IOStrea...
by whitequark 3 weeks 6 days
applet.interface.jtag_xvc: migrate to new `IOStreamer`.
13d07802
gateware.swd: use DDR buffers to double fSWCLK_max...
by whitequark 3 weeks 6 days
gateware.swd: use DDR buffers to double fSWCLK_max.

This commit combines several changes:
* Migrating to new IOStreamer.
* Changing tests to have simulated DUT setup/sample on the correct
edge (setup on rising, sample on falling).
* Changing enframer to double timer resolution and upper frequency
range.
* Changing enframer/deframer to allow for varying the sampling point.
* Moving the sampling point to right before DUT setup point, to
maximize timing budget.
* Updating `probe-rs` applet protocol to accommodate the change in
divisor semantics.

Co-authored-by: Wanda <wanda@phinode.net>
10d3d980
gateware.iostream2: redesign `IOStreamer`.
by whitequark 3 weeks 6 days
gateware.iostream2: redesign `IOStreamer`.

The new design is significantly simpler and easier to understand. It
changes the following:
* There is no `i_en` anymore; the metadata must contain enough
information to determine whether the sample contains useful input.
As a result, there is a 1:1 correspondence between input and output
frames.
* There is no `IOClocker`; the enframer handles clocking. This is
slightly more verbose to implement, but much easier to understand.
* For SDR interfaces, it is expected that the enframer would produce
DDR frames, allowing fIO=fSYS; if such an enframer must be used
with SDR buffers, an IO stream specific downconverter must be used.
* Offset sampling (in half cycle resolution, for DDR) is implemented.

Co-authored-by: Wanda <wanda@phinode.net>
b5209c7c
hardware.platform: add `GlasgowPlatformPort.with_d...
by whitequark 4 weeks 20 hours
hardware.platform: add `GlasgowPlatformPort.with_direction()`. (RFC 79)
faae1349
gateware.ports: make `PortGroup` iterable.
by whitequark 4 weeks 20 hours
689c5eca
gateware.stream: split `StreamFIFO` into `Queue` a...
by whitequark 4 weeks 20 hours
gateware.stream: split `StreamFIFO` into `Queue` and `AsyncQueue`.
1e6134a7
gateware.stream: add `SkidBuffer`.
by whitequark 4 weeks 20 hours
73e02c66
software: deploy firmware.
by whitequark 3 weeks 5 days
5e9adcba
Report a bug