This module integrates the PCS with the descrambler, implements the PMA (which is just the link monitor), and implements loopback and coltest functions. This is more of the PCS/PMA, but the descrambler is technically part of the PMD, so it's the "core" instead. We deviate from the standard in one important way: the link doesn't come up until the descambler is locked. I think this makes sense, since if the descrambler isn't locked, then the incoming data will be gibberish. I suspect this isn't part of the standard because the descrambler doesn't have a locked output in X3.263, so IEEE would have had to specify it. Loopback is actually implemented in the PMD, but it modifies the behavior in several places. It disables collisions (unless coltest is enabled). Additionally, we need to force the link up (to avoid the lengthy stabilization timer), but ensure it is down for at least once cycle (to ensure the descrambler desynchronizes). On the test side, we just go through the "happy path," as many of the edge conditions are tested for in the submodule tests. Several of those tests are modified so that their helper functions can be reused in this test. In particular, the rx path is now async so that we can feed it rx_data. Signed-off-by: Sean Anderson <seanga2@gmail.com> |
||
---|---|---|
rtl | ||
tb | ||
.gitignore | ||
4b5b.gtkw | ||
Makefile |