Commit Graph

9 Commits

Author SHA1 Message Date
Sean Anderson db41a68f1a mdio_regs: Delay counter signals by one clock
The counters in this module end up on the critical path a lot.  The
counters themselves take 3-4 ns to compute, but routing the increment
signal to the counter eats up a lot of slack. Register the increment signal
for a clock to let it cross the FPGA without affecting the counter timing.

Signed-off-by: Sean Anderson <seanga2@gmail.com>
2023-03-05 20:35:35 -05:00
Sean Anderson 003e5e4b79 mdio_regs: Fix ack/err generation
ack/err can only be combinatorial if data_read is also combinatorial.
I suspect doing that will kill my Fmax, so register ack/err.

Fixes: d9602b6 ("Add MII management functions")
Signed-off-by: Sean Anderson <seanga2@gmail.com>
2023-03-05 20:30:14 -05:00
Sean Anderson 139baaffcf tb: Use correct width for Xs
In several cases, not the number of Xs did not match the number of bits.
Correct this.

Signed-off-by: Sean Anderson <seanga2@gmail.com>
2023-03-05 00:03:18 -05:00
Sean Anderson 83d805bb79 tb: mdio_regs: Export wb_xfer
Convert xfer into a form which can be reused in other testbenches.

Signed-off-by: Sean Anderson <seanga2@gmail.com>
2023-02-20 18:39:58 -05:00
Sean Anderson afbb64023e tb: Move BIT to util
This function may be useful for other testbenches.

Signed-off-by: Sean Anderson <seanga2@gmail.com>
2023-02-18 22:48:36 -05:00
Sean Anderson 02069bceee pcs: Add false_carrier signal
This adds an explicit false carrier signal. Trying to determine this
condition the MDIO signals is tricky because BAD_SSD can last over
several cycles of CE. To make things easier, add a signal which is high
only once per event.

Signed-off-by: Sean Anderson <seanga2@gmail.com>
2022-11-05 12:37:18 -04:00
Sean Anderson db30c5f8ba mdio_regs: Add register to enable test modes
This adds a register allowing us to control the test modes of the
descrambler and link monitor.

Signed-off-by: Sean Anderson <seanga2@gmail.com>
2022-11-02 17:44:37 -04:00
Sean Anderson 7d35e07401 mdio_regs: Add support for counters
This adds support for counters for interesting conditions (disconnects,
PMD phase wraparounds, errors, etc). All the counters are 15 bits
instead of 16, because 16-bit counters have an fmax of 110MHz or so. All
the counters live behind a condition because they ~double the number of
resources used.

Signed-off-by: Sean Anderson <seanga2@gmail.com>
2022-11-02 17:37:34 -04:00
Sean Anderson d9602b6f78 Add MII management functions
This adds a module implementing the the MII management functions (the
MDIO regs). For the moment, we just implement the standard registers.

Signed-off-by: Sean Anderson <seanga2@gmail.com>
2022-08-31 12:36:11 -04:00