[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の絵を見たほうがわかりよいでしょう)



注意事項

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

[Altera][Q2HB] Quartus II Integrated Synthesis

2009/01/06FPGA::QuartusIIimport

[Altera][Q2HB] Quartus II Integrated Synthesis

参照資料

"Quartus II Handbook Version 8.1", "Volume 1: Design and Synthesis", "Section III. Synthesis"

Synthesis Options

Optionの設定方法

Synthesis Attributes
  • Synthesis Attributes in Verilog-1995 (Example 8–21.)
    // synthesis <attribute> [ = <value> ]
    または
    /* synthesis <attribute> [ = <value> ] */
    

※ALTERA IP CORE や SOPC Builderの自動生成は,Verilogの場合コレになる.

  • Synthesis Attributes in Verilog-2001 and SystemVerilog
    (* <attribute> [ = <value> ] *)
    
Synthesis Directives
// synthesis <directive> [ <value> ]
または
/* synthesis <directive> [ <value> ] */

また,注意書きとして,以下のように記述されているので注意されたい.

Verilog HDL is case-sensitive; therefore, all synthesis directives are also case-sensitive.


オプション

Ignore translate_off and synthesis_off Directives

//synthesis translate_off この区間の記述はシミュレーションのみに影響を与える.//synthesis translate_on

Read Comments as HDL

//synthesis read_comments_as_HDL on // この区間のコメントにある記述は,synthesis時のみに有効となる.// Quartus IIのみか?(ModelSimは無視しているし.目的はシミュレーション記述とビヘイビア?とを混在させるため.)//synthesis read_comments_as_HDL off



注意事項

英語力の弱い人が適当に訳しています.自分では意味がわかるようにとれたものと,そうでないものとがあります.概要理解の参考にしていただければ幸いですが,オリジナルの英文を参照されることを強く推奨いたします.