Intel:Cyclone® V SoC FPGA の Ethernet MAC Controller について、MDIO/MDC の使い方を教えてください。
SoC FPGA
カテゴリ:SoC
ツール:-
デバイス:Cyclone® V
MDIO の制御は、下記の 2つのレジスタで行います。
・Register 4 (GMII Address Register)
・Register 5 (GMII Data Register)
トリガに関しては、Register 4 の gb ビット(bit0)で与える仕組みとなります。
リード時は、gb ビットに 1:Busy をセットする事で MDIO の送受信が開始され、完了すると gb ビットが 0:Not Busy にクリアされます。
(その後で Register 5 のデータを参照。)
ライト時は、Register 5 に書き込むデータをセットした後で、Register 4 をセット(gb=1:Busy)します。
リード時と同様に gb ビットに 1:Busy をセットする事で MDIO の送受信が開始され、完了すると gb ビットが 0:Not Busy にクリアされます。
参考にできる情報として、u-boot, linux のドライバ処理が参照できます。
それぞれ下記のファイル/関数にて、Register 4/5 の制御を行っています。
u-boot
ファイル:drivers/net/designware.c
関数:eth_mdio_read, eth_mdio_write
linux
ファイル:drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
関数:stmmac_mdio_read, stmmac_mdio_write