説明
MicroBlaze Vは、レジスタ rs1 からの値を、rs2 の最下位 4 ビットで定義されたリンク インターフェイスに書き込みます。C_FSL_LINKS
により設定されたリンク数が rs2 の最下位 4 ビット以下の場合、リンク 0 が使用されます。
PUTD 命令には 16 個のバリエーションがあります。
ブロッキング バージョン (n が 0 のとき) は、インターフェイスに空きができるまでストールします。ノンブロッキング バージョンはストールせず、mstream の C ビットを、空きがある場合は 0 に、空きがない場合は 1 にセットします。
すべてのデータ PUTD 命令 (c ビットが 0 のとき) は、インターフェイスへの制御ビットを 0 にセットします。すべての制御 PUTD 命令 (c が 1 のとき) は、制御ビットを 1 にセットします。
テスト バージョン (t ビットが 1 のとき) は、リンクへの書き込み信号がアサートされていない場合を除き、標準ケースとして処理されます (つまりソース レジスタは不要)。テスト バージョンでは、rs1 が x0 であることが必要です。
アトミック バージョン (a ビットが 1 のとき) は、マシン外部割り込みや外部ブレークによって割り込まれることはありません。各アトミック命令は、その後に続く命令の割り込みを防ぎます。つまり、アトミック命令のシーケンスは、プログラム フローを割り込むことなく、グループにまとめることができます。
擬似コード
x ← rs2[3:0]
if x >= C_FSL_LINKS then
x ← 0
Mx_AXIS_TDATA ← (rs1)
if n = 1 then
mstream.C ← Mx_AXIS_TVALID ˄ Mx_AXIS_TREADY
Mx_AXIS_TLAST ← c
変更されるレジスタ
mstreamレイテンシ
-
C_OPTIMIZATION
= 0、2、3 で 1 サイクル -
C_OPTIMIZATION
= 1 で 2 サイクル
この命令のブロッキング バージョンは、命令を完了できるまでパイプラインをストールします。C_USE_EXTENDED_FSL_INSTR
が 1 に設定されていて、命令がアトミックでない場合に、割り込みが実行されます。
備考
- これらの命令は、パラメーター
C_FSL_LINKS
が 0 より大きい場合のみ使用可能です。 - 拡張命令 (テストおよびアトミック バージョン) は、パラメーター
C_USE_EXTENDED_FSL_INSTR
が 1 に設定されている場合にのみ使用可能です。