I am able to read register 0 of my phy by initiating a read command to address xA0 in the Avalon bus. the result is x1140. However if I try to write to this same address, no MDIO transaction takes place and the waitrequest remains high indefinitely. a reset of the MAC avalon port is required to regain access. Am I missing a step to get the write transaction to complete?
I noticed you are accessing mdio space 1 address 0xA0 instead of address 0x080 is due to you are using the address space for PCS function already ?
Some of the factor that I think maybe affecting your mdio write access is like below
My core instantiation includes the PCS. My understanding is address space 0 is unavailable when using the PCS function.
MDIO <= mdio_out when mdio_oen = '0' else 'Z';
Yup, address space 0 will be occupied when PCS function is in used as explained by the TSE user guide doc.
Your MDIO setup looks correct.
I presume you have supply <= 125Mhz clock correctly to MAC control register clk pin as well. (which is the avalon bus clock)
My other debug suggestion for you is
I have not hear back from you for close to 1 month.
Hopefully you are making progress on the debug.
For now, I am setting this case to closure. Feel free to post new forum thread in future if you still have enquiry in future.