[MAVA] Avalon-ST interface仕様概要

2009/01/08FPGA::QuartusIIimport

[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
ready1sink->sourceHighでsinkがデータを受け取れることを示します.\サイクルN時にアサートした場合,"N+readyLatency"サイクルにsourceからdataを乗せてvalid信号が振ってくるでしょう.\backpressureを使うときは必須.readyの無いモジュールはbackpressure非対応(フロー制御なし)
valid1source->sinksourceがassertした場合,そのサイクルでデータが有効であることを示す.\valid信号が無ければ,毎サイクルごとのデータは有効である.
data1-256source->sinkバルクデータ.値の意味はアプリケーションに依存する
channel0-8source->sinkカレントサイクルの送信先チャネル番号を乗せる
error1-255source->sinkパラメタerrorDescriptorで定義するエラー情報

Packet Transfer Signals

startofpacket1source->sinkパケット転送の開始時に1クロックだけアサートされる
endofpacket1source->sinkパケット転送の最終クロックにアサートされる
empty0-8source->sinkEndOfpacketサイクル時に,無効なシンボル数を通知する.\1beatで1シンボル転送の場合は,使用されない.EOFサイクル以外は解釈しない(無効です)

Avalon-ST Interface Properties(6.3)

Namedefault value 有効範囲 description
dataBitsPerSymbol81-512シンボルあたりのビット数を定義する.Byte単位であれば8bitとなる
readyLatency00-8ready信号のassertion/deassertion間の関係を定義する
maxChannel00-255データインタフェースがサポート可能な最大チャネル数
errorDescriptor0list 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の絵を見たほうがわかりよいでしょう)



注意事項

英語力の弱い人が適当に訳して抜粋,補強しています.
あやしいな,と思ったらご指摘いただけますと幸いです.
なお,オリジナルの英文を参照されることを強く推奨いたします.