ぱたへね

はてなダイアリーはrustの色分けができないのでこっちに来た

Ethermac のI/O ポート

OpenCoresで公開されれいるEthermacを動かそうとしています。
http://opencores.org/project,ethmac
RTLシミュレーションを実行してみたのですが、trunkにあるテストベンチは上手く動きません。調査がてらEthermacのI/Oポートを調べてみました。

Host Interface Ports

Wishbone I/Fになっています。Wishboneで使用する信号はhttp://d.hatena.ne.jp/natsutan/20130226/1361871986にまとめてあります。
EthermacはSLAVEだけでなく、MASTERとなって直接メモリにアクセスするので、MASTER動作用の信号も持っています。

共通部分
Port Width Direction Description
CLK_I 1 I クロック入力
RST_I 1 I リセット入力
SLAVE
Port Width Direction Description
ADDR_I 32 I アドレス入力
DATA_I 32 I データ入力
DATA_O 32 O データ出力
SEL_I 4 I セレクト入力。有効なアクセス中に1111b以外の値が来たときは、ERR_Oをアサートする。
WE_I 1 I ライト入力。Hでライト動作
STB_I 1 I ストローブ入力
CYC_I 1 I サイクル入力
ACK_O 1 O アクノリッジ出力
ERR_O 1 O エラー出力
INTA_O 1 O 割り込み出力A
MASTER
Port Width Direction Description
M_ADDR_O 32 O アドレス出力
M_DATA_I 32 I データ入力
M_DATA_O 32 O データ出力
M_SEL_O 4 I セレクト出力
M_WE_O 1 O ライト出力。Hでライト動作
M_STB_O 1 O ストローブ出力
M_CYC_O 1 O サイクル出力
M_ACK_I 1 I アクノリッジ入力

PHY Interface ports

PHYに接続する信号です。こちらも、MII(Media Independent Interface)という規格物です。
特に記述がなければ全て正論理です。

Port Width Direction Description
MTxClk 1 I 送信用クロック。100Mbps時25MHz、10Mbps時2.5Mhz。MTxD[3:0], MtxEn, MTxErrの動作クロック。
MTxD[3:0] 4 O 送信データニブル。MTxClkの立ち上がりに同期する。MTxEnがアサートされている時に有効。
MTxEn 1 O 送信イネーブル。アサートされた時、PHYへのデータ転送が有効。
MTxErr 1 O 転送コーディングエラー。送信データにエラーが含まれるときにアサートされる。
MRxClk 1 I 受信用クロック。100Mbps時25MHz、10Mbps時2.5Mhz。MRxD[3:0]、MRxDV、MRxErr の動作クロック。
MRxDV 1 I 受信データバリッド。PHYからのデータ転送が有効な時、アサートされる。
MRxD[3:0] 4 I 受信データニブル。MRxClkの立ち上がりに同期する。7バイトのプリアンプルとSFD(start frame delimiter)も転送される。
MRxErr 1 I 受信エラー。現在のデータを受信中にエラーが発生したことを示す。
MColl 1 I コリジョン検出。コリジョンが発生した時に、非同期でアサートされる。コリジョンが検出されない時、ディアサートされる。
MCrS 1 I キャリアセンス。メディア(伝送路)がアイドルでないときにアサートされる。アイドルの時はディアサートされ。(送信が開始できる。)
MDC 1 O マネージメントデータクロック。MDIOシリアルデータチャネル用のクロック。
MDIO 1 I/O マネージメントデータ入出力。双方向のシリアルデータチャネル。