[MAVA] Avalon-ST interface仕様概要
[Altera][MAVA] Avalon-ST interface仕様概要
waveformは参照資料を見てください.WEBだけに頼るのは危険です:)
参照資料
"Avalon Interface Specifications" "Document Version: 1.1", "Document Date: October 2008", file:(mnl_avalon_spec.pdf) "6. Avalon Streaming Interfaces"
語彙
Avalon Streaming System
Avalon Streaming Systemは,1つ以上のAvalon-STコネクションを含むシステムです.Avalon-STコネクションは,sourceインタフェースから,sinkインタフェースへとデータを転送するものです.
Avalon Streaming Components
Avalon-STインタフェースを使う基本的なシステムは,コンポーネントと呼ばれる複数の機能モジュールを含みます.システムデザイナは,システムを実装するために,コンポーネントを設定・互いに接続します.
Source and Sink Interfaces and Connections
2つのコンポーネントを接続するとき,データはsource interfaceからsink interfaceに流れます.sinkインタフェースに接続されたsourceインタフェースの組み合わせは,接続(connection)として参照されます.
Backpressure
Backpressureは,sinkがsourceにデータ送信を停止するために通知できるようなメカニズムです.sinkは,基本的には,sinkのFIFOフルのときやsinkの出力ポートが停滞したときにデータの流れを止めるためにbackpressureを使います.
※backpressureはオプションです.
Transfers and Ready Cycles
転送(transfer)は,sourceインタフェースからsinkインタフェースへ伝播されるデータと制御のオペレーションです.データインタフェースでは,"ready cycle"は,sinkが転送可能な間のサイクルです.
Symbol
シンボルは,データの分割できない最小単位です.ほとんどのパケットインタフェースでは,シンボルはByte(バイトサイズ)です.1つ以上のシンボルが,1サイクル中に転送されるデータの1単位を構成します.
Channel
チャネル(channel)は,情報が2つのポート間を行き交うような,物理的または論理的なパスやリンクです.
Packet
パケット(packet)は,互いに転送されるデータと制御信号の集合です.パケットは,ルータを助けるためにヘッダを含むかもしれません.そして,他のネットワークデバイスは,正しい受けてにパケットを向けます(流します).パケットフォーマットは,アプリケーションにより定義されます.この仕様で定義されません.Avalon-STパケットは,可変長に定義できたり,コネクション間でインタリーブさせることもできます.Avalon-STインタフェースでは,パケットの使用はオプションです.
Signals~インタフェース信号("6.2.Avalon-ST Interface Signals")
Signal Type | width | DIR | description |
---|---|---|---|
ready | 1 | sink->source | Highでsinkがデータを受け取れることを示します.\サイクルN時にアサートした場合,"N+readyLatency"サイクルにsourceからdataを乗せてvalid信号が振ってくるでしょう.\backpressureを使うときは必須.readyの無いモジュールはbackpressure非対応(フロー制御なし) |
valid | 1 | source->sink | sourceがassertした場合,そのサイクルでデータが有効であることを示す.\valid信号が無ければ,毎サイクルごとのデータは有効である. |
data | 1-256 | source->sink | バルクデータ.値の意味はアプリケーションに依存する |
channel | 0-8 | source->sink | カレントサイクルの送信先チャネル番号を乗せる |
error | 1-255 | source->sink | パラメタerrorDescriptorで定義するエラー情報 |
Packet Transfer Signals
startofpacket | 1 | source->sink | パケット転送の開始時に1クロックだけアサートされる |
endofpacket | 1 | source->sink | パケット転送の最終クロックにアサートされる |
empty | 0-8 | source->sink | EndOfpacketサイクル時に,無効なシンボル数を通知する.\1beatで1シンボル転送の場合は,使用されない.EOFサイクル以外は解釈しない(無効です) |
Avalon-ST Interface Properties(6.3)
Name | default value | 有効範囲 | description |
---|---|---|---|
dataBitsPerSymbol | 8 | 1-512 | シンボルあたりのビット数を定義する.Byte単位であれば8bitとなる |
readyLatency | 0 | 0-8 | ready信号のassertion/deassertion間の関係を定義する |
maxChannel | 0 | 0-255 | データインタフェースがサポート可能な最大チャネル数 |
errorDescriptor | 0 | list of string.. | error信号の各ビットに付随するエラーを示す語のリストです.\語数はエラー信号のビット数と同じでなければなりません.並び順に上位ビットに適用されます.\例えば,"crc,overflow"と記述した場合,bit[1]がCRC errorを,bit[0]がoverflow errorを示します. |
6.4.Typical Data Transfers
6.5.Data Transfer without Backpressure
6.6.Data Transfer with Backpressure
ハンドシェーク方法(with "Backpressure")データ受信側が,ready(sink->source)をドライブする.アサートされていればデータを受け取れる状態にある.吐き出し側がデータを有し,受け側がreadyをアサートしていれば,チャネル番号,データ,エラー信号を乗せて,valid(source->sink)をアサートする.
アサートされていないときは,固定サイクルのレイテンシ待ちを入れるみたい??
同じ土管で,チャネル番号を設けることができるが,使用方法はアプリケーション依存である.
- 例1:ポートナンバーとして使う
- 例2:ページナンバーとして使う
- 例3:timeslotインジケータとして使う
チャネル信号を使う場合は,各有効なサイクルにおけるデータ転送の全てが同じチャネルに属する.source(吐き出し側)は,成功した有効なサイクルで,異なるチャネルに変えるかもしれません.
"Backpressure"未使用のときは,souce側は"ready"信号をチェックしない.
6.7.Packet Data Transfers
前述のAvalon-STに加えて,下記の信号を要します."startofpacket","endofpacket","empty"信号が追加されます.いずれも source->sink です.
- startofpacket
パケット転送の開始タイミングを示します. - endofpacket
パケット転送の終了タイミングを示します. - empty\endofpacketがアサートされたサイクルで参照する.複数シンボルを転送し,残りカスの数をのせる.(Specの絵を見たほうがわかりよいでしょう)
注意事項
英語力の弱い人が適当に訳して抜粋,補強しています.
あやしいな,と思ったらご指摘いただけますと幸いです.
なお,オリジナルの英文を参照されることを強く推奨いたします.