phy/ecp5rgmii.py: Add support for dynamic link speeds#138
phy/ecp5rgmii.py: Add support for dynamic link speeds#138rowanG077 wants to merge 1 commit intoenjoy-digital:masterfrom
Conversation
f7775e3 to
b8c7408
Compare
b11b0c5 to
45072a6
Compare
|
Thanks @rowanG077, that's also a feature I was interested (for ECP5 and the other RGMII PHYs). I'll try to do a review soon. |
|
I had some troubles with switching. In turns out that the clock switch MUST be glitchless so I added that. Dynamic 1G/100M mode works, 10M doesn't.... I really have no clue why. 10M sends the same bytes as 100M. Simulation shows nothing weird. I tested both the loop clock scenario and the FPGA generated tx clock. In both scenarios 1G/100M work and 10M does not. Maybe I'm missing something? |
|
Great! 1G/100M will probably be the more useful. I'll look at the code to see if I see an obvious reason for the 10M to not work. |
45072a6 to
8a99ca0
Compare
|
I think it's due to the IPG inserter running at clock cycle speed whereas now with a dynamic link speed this means the IPG is too small for 100M/10M. I probably just was unlucky 100M works fine. I fixed this. I will try in hardware tomorrow. |
8a99ca0 to
4588190
Compare
|
This was not the problem... 10M still completely silent. I'm sure that at the very least the RX path is broken. I don't even receive the requests on the FPGA. So there are quite a few scenarios, but I could not test them all myself due not having a FPGA board with RGMII in-band status support. loopclocking yes or no, in-band status yes or no and external linkstate yes or no. Below is the matrix which indicates what config I tested. |
4588190 to
298fc84
Compare
298fc84 to
82d5f64
Compare
This is still a draft. It doesn't work yet but if you have time to look at it the general structure should be finalized.
There are 3 main changes to make this work: