バスプロトコル
- 設計例等、共通に参照するバスプロトコルを定義しておきたいと思います。我々で決めた命名なので、都合のいいように読み替えて頂ければいいと思います。
- AXI仕様と同様に、Request、Readデータ、Writeデータが独立したチャネルを持つバス仕様です。それぞれのパイプラインが干渉なく直結できるようになっています。
- 我々が使用しているものからオプションを取り除き、単純化[1]しています。
- バスプロトコルでは、基本的に要求した順序を守ることが必要です(Out-of-orderは特別なルールを付ければ可能)。そしてコヒーレンス[2]を保たねばなりません。これらは定義の範疇を越えるので別途説明したいと思います。
- 表のIOはマスターとして操作する場合の信号方向で、IがInput、OがOutputです。Polは極性で、+が正論理、-が負論理です。なお、モジュールにおいて信号名には接頭辞等が付くことがあります(req → iReq)。
- Request(アドレス)インターフェイスは、アドレスを指示してメモリアロケーションの要求を行います。アロケーションの単位はモジュール間で予め決めておきます(バースト長はオプション)。
信号名 | IO | Pol | 説明 |
req | O | + | 要求信号でgntがアサートしない限り評価されない |
gnt | I | + | 許可信号でreqとaddrをスレーブ側で了承したことを意味する スレーブ側が受け付け可能であれば事前にアサートするべき |
rxw | O | + | Read/Writeを示し、reqに同期してアサート |
addr | O | + | アドレスを示し、reqに同期してアサート レンジは任意に定義 |
- Read Dataインターフェイスは、データ読み込みのハンドシェークを規定します。RequestインターフェイスのReadアロケーションごとに決まったバースト分の読み込みを行います。オプションですが、設計例の説明で必要なため、中断信号を合わせて定義します。
信号名 | IO | Pol | 説明 |
rdStrb | O | + | 読み込み実行信号でrdAckがアサートしない限り評価されない マスター側が受け付け可能であれば事前にアサートしてもよい |
rdAck | I | + | 読み込み可能信号でrdDataが準備できたことを意味する 1回のRequestでアロケーション単位分のアサートを行う |
rdFlush | O | + | 読み込みを中断する場合にアサート |
rdData | I | + | 読み込みデータでrdAckに同期してアサート レンジは任意に定義 |
- Write Dataインターフェイスは、データ書き込みのハンドシェークを規定します。RequestインターフェイスのWriteアロケーションごとに決まったバースト分の読み込みを行います。オプションですが、設計例の説明で必要なため、中断信号を合わせて定義します。
信号名 | IO | Pol | 説明 |
wrStrb | O | + | 書き込み実行信号でwrAckがアサートしない限り評価されない wrData, wrMaskが準備できたことを意味する 1回のRequestでアロケーション単位分のアサートを行う |
wrAck | I | + | 書き込み可能信号 スレーブ側が受け付け可能であれば事前にアサートされる |
wrFlush | O | + | 書き込みを中断する場合にアサート |
wrData | O | + | 書き込みデータでwrStrbに同期してアサート レンジは任意に定義 |
wrMask | O | + | 書き込みマスクでwrStrbに同期してアサート Byte単位かBit単位かは任意に定義(断らない限りByte) |
- 波形サンプル(wrMaskは省略)を示します。AからFまでのR/Wが混在したアクセスを行います。バースト長は4固定ですが、rdFlushとwrFlush信号により一部中断しています。
- コヒーレンス維持の例として、Read[D]のアクセスに続くWrite[F]のアクセスにおいてアドレスが同じと仮定し、内部パイプラインにおいてRead[D]が終わるまでWrite[F]が実行されない様子が分かると思います。
回路デザイン > ホーム > 使用プロトコル 次のページ(プロフィール) このページのTOP ▲