ぱたへね

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

Wishbone の信号

Wishboneで使われる信号をまとめました。一次資料はここからダウンロードできます。
http://opencores.org/opencores,wishbone
現在の最新版は、 Revision B4 です。翻訳じゃないので、実際に使うときは規格書読んでください。

SYSCON Module が使う信号

SYSCON Module はシステム全体を制御するモジュールです。クロックとリセットを出力します。

信号名 説明
CLK_O SYSCONモジュールが出力するシステムクロック。MASTERとSLAVEの[CLK_I]に接続される。
RST_O SYSCONモジュールが出力するリセット信号。正論理で全ての WISHBONE インターフェイスをリセットする。MASTERとSLAVEの[RST_I]に接続される。

MASTER と SLAVE で共通の信号

信号名についている()は、バス信号の意味です。

信号 説明
CLK_I WISHBONE のシステムクロック。全ての WISHBONE 出力は[CLK_I]の立ち上がりでレジスタ出力される。全ての WISHBONE 入力は[CLK_I]が立ち上がる前には安定している。(入力信号は、[CLK_I]の立ち上がりでサンプリングできる)
DAT_I() データ入力バス。データの幅はport sizeによって決定され、64bit幅([DAT_I(63..0)])が最大。[DAT_O()][SEL_O()]も参照の事
DAT_O() データ出力バス。データの幅はport sizeによって決定され、64bit幅([DAT_O(63..0)])が最大。[DAT_I()][SEL_O()]も参照の事
RST_I リセット入力。 WISHBONE インターフェイスを再起動し、内部のステートマシーンを初期化する。
TGD_I() データタグタイプ。MASTER / SLAVE インターフェイスで使用する。データ入力[DAT_I()]に対応した情報を含んでおり、[STB_I]信号がアサートされている時有効。タグビットは、タイミングが仕様によって定義済みなので、簡単に新しい信号を定義出来る。
TGD_O() データタグタイプ。TGD_I() の出力側

MASTER 用の信号

信号 説明
ACK_I アクノリッジ入力。アサートされた時、バスサイクルの正常終了を示す。[ERR_I][RTY_I]も参照の事。
ADR_O() アドレス出力。上位側の境界はコアのアドレス幅で決まり、下位側の境界はデータのport sizeで決まる。FIFOのようなインターフェイスの場合アドレスは出力されない。
CYC_O サイクルアウトプット。アサートされたとき、有効なバスサイクルが実行中であることを示す。例えば、複数のデータ転送を行うブロック転送時、最初のデータ転送の時に[CYC_O]をアサートし、最後のデータ先頭までアサートし続ける。
STALL_I パイプラインストール入力。[STALL_I]がアサートされている時、SLAVE側が転送を受け入れられないことを示す。この信号はパイプラインモードで使用する。
ERR_I エラー入力。異常なサイクルの終了を示す。エラーの原因とMASTERが生成するレスポンスは、IPコアの供給者が定義する。[ACK_I][RTY_I]も参照の事
LOCK_O ロック出力。アサートされた時、今のバスサイクルは割り込みできない(uninterruptible)事を示す。ロックはバスの完全な所有権を要求するためにアサートする。一度転送が始まると、今のMASTERが[LOCK_O][CYC_O]をネゲートするまで、MASTERとSLAVEを接続しているINTERCONモジュールは他のMASTERにバスを使用させない。
RTY_I リトライ入力。インターフェイスが、データを送受信する準備ができず、そのサイクルをリトライする必要があることを示す。いつ、どのようにリトライするかは、IPコアの供給者が定義する。[ERR_I][RTY_I]信号も参照の事。
SEL_O() セレクト出力。リードサイクル時に[DAT_I()]上の有効なデータの場所を示し、ライトサイクル時には有効な[DAT_O()]の場所を示す。配列の境界はgranularity of a portで決まる。Granularity of a portが8bitの時、バイトイネーブルになる。 詳細は仕様書の3章に記述。[DAT_I()] [DAT_O()] [STB_O]も参照の事。
STB_O ストローブ出力。有効なデータ転送サイクルを表す。この信号は、[SEL_O()]のようなインターフェイス上の他の信号を有効にするために使用される。SLAVEは、[STB_O] のアサートに対して[ACK_I][ERR_I][RTY_I]のどれかをアサートしないといけない。
TGA_O() アドレスタグタイプ。アドレス線[ADR_O()]に対応した情報を含んでおり、[STB_O]がアサートされている時に有効になる。例えば、アドレスのサイズやメモリ管理の情報(protected vs. unprotected)をアドレスに追加することができる。
TGC_O() サイクルタグタイプ。バスサイクルに対応した情報を含み、[CYC_O]がアサートされているときに有効になる。例えば、データ転送、割り込みアクノリッジ、キャッシュコントロールサイクルは、サイクルタグで識別できる。また、WISHBONEのシングル、ブロック、RMWサイクル間の区別をするのにも使われる。
WE_O ライトイネーブル出力。現在のバスサイクルが、READサイクルかWRITEサイクルかを示す。ネゲートされた時はREADサイクル、アサートされた時はWRITEサイクルを表す。

SLAVE 用の信号

信号 説明
ACK_O アクノリッジ出力。アサートされたとき、バスサイクルが正常終了したことを示す。[ERR_O][RTY_O]も参照の事。
ADR_I() アドレス入力。上位側の境界はコアのアドレス幅で決まり、下位側の境界はデータのport sizeで決まる。FIFOのようなインターフェイスの場合アドレスは出力されない。
CYC_I サイクル入力。アサートされているとき、有効なバスサイクルが実行中であることを示す。[CYC_O]の入力側。
STALL_O パイプラインストール出力。SLAVEがデータ転送を受け入れられないことを示す。パイプラインモードで使用する。
ERR_O エラー出力。異常なサイクルの終了を示す。エラーのソースと、MASTERによるレスポンスは、IPコアの供給者が決める。[ACK_O][RTY_O]も参照の事。
LOCK_I ロック入力。アサートされたとき、今のバスサイクルは割り込みできない(uninterruptible)事を示す。[LOCK_I]信号のロックを受信するSLAVEは、[LOCK_I][CYC_I]がネゲートされるまで、一つのMASTERからのみアクセスされる。
RTY_O リトライ出力。インターフェイスが、データを送受信する準備ができず、そのサイクルをリトライする必要があることを示す。いつ、どのようにリトライするかは、IPコアの供給者が定義する。[ERR_I][RTY_I]信号も参照の事。
SEL_I() セレクト入力。[SEL_O()]の入力側
STB_I ストローブ入力。アサートされているとき、そのSLAVEが選択されている事を示す。SLAVEは、この[STB_I]がアサートされている時のみ他のWISHBONEの信号に反応するべきである。ただし、[RST_I]には常に反応した方がよい。SLAVEは[STB_I]がアサートされているときは、[ACK_O][ERR_O][RTY_O]のどれかをアサートする。
TGA_I() アドレスデータタグ。[TGA_O]の入力側
TGC_I() サイクルタグタイプ。[TGC_O()]の入力側
WE_I ライトイネーブル入力。ネゲートされているときREADサイクルを示し、アサートされているときはWRITEサイクルを示す。

Wihhboneに接続するためのミニマムな信号(Rule3.40)

2013/02/27追加

MASTERに必ず必要な信号線

  • [ACK_I]
  • [CLK_I]
  • [CYC_O]
  • [RST_I]
  • [STB_O]

SLAVEに必ず必要な信号線

  • [ACK_O]
  • [CLK_I]
  • [CYC_I]
  • [STB_I]
  • [RST_I]