-
Notifications
You must be signed in to change notification settings - Fork 88
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
phy/ecp5rgmii.py: Add support for dynamic link speeds #138
base: master
Are you sure you want to change the base?
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: