Main Content

coder.hdl.pipeline

MATLAB 式の出力にパイプライン レジスタを挿入

説明

out = coder.hdl.pipeline(expr) は、生成された HDL コード内の expr の出力に 1 つのパイプライン レジスタを挿入します。このプラグマは MATLAB® のシミュレーション動作には影響しません。

このプラグマは、パイプライン レジスタの挿入位置を正確に指定する場合に使用します。たとえば、MATLAB 代入ステートメントでは、次のようにして coder.hdl.pipeline プラグマを指定できます。

  • 代入ステートメントの右側全体。

  • 部分式。

  • 複数のプラグマを入れ子にする。

  • サブ関数の呼び出し。サブ関数が単一の値を返す場合に限ります。このプラグマは複数の値を返すサブ関数には指定できません。

分散型パイプラン方式を有効にした場合、HDL Coder™ でパイプライン レジスタを移動してクリティカル パスを中断できます。

式の変数のいずれかが次である場合は、HDL Coder では MATLAB 式の出力にパイプライン レジスタを挿入することはできません。

  • ループ内にある。

  • 状態レジスタや RAM など、状態要素にマッピングする永続変数。

  • 関数の出力。たとえば、次のコードでは、y が含まれる式にパイプライン レジスタを追加することはできません。

    function [y] = myfun(x)
    y = x + 5;
    end

  • データ フィードバック ループの内部に存在する。たとえば、次のコードでは、変数 t または pvar が含まれる式をパイプライン化することはできません。

    persistent pvar;
    t = u + pvar;
    pvar = t + v;

coder.hdl.pipeline を使用して、単一の変数またはその他の NOP 式にパイプライン レジスタを挿入することはできません。パイプライン レジスタを関数の入力変数に挿入する方法の詳細については、端子レジスタを参照してください。

out = coder.hdl.pipeline(expr,num) は、生成された HDL コード内の expr の出力に num 個のパイプライン レジスタを挿入します。このプラグマは MATLAB のシミュレーション動作には影響しません。

このプラグマは、パイプライン レジスタの挿入位置を正確に指定する場合に使用します。たとえば、MATLAB 代入ステートメントでは、次のようにして coder.hdl.pipeline プラグマを指定できます。

  • 代入ステートメントの右側全体。

  • 部分式。

  • 複数のプラグマを入れ子にする。

  • サブ関数の呼び出し。サブ関数が単一の値を返す場合に限ります。このプラグマは複数の値を返すサブ関数には指定できません。

分散型パイプラン方式を有効にした場合、HDL Coder でパイプライン レジスタを移動してクリティカル パスを中断できます。

式の変数のいずれかが次である場合は、HDL Coder では MATLAB 式の出力にパイプライン レジスタを挿入することはできません。

  • ループ内にある。

  • 状態レジスタや RAM など、状態要素にマッピングする永続変数。

  • 関数の出力。たとえば、次のコードでは、y が含まれる式にパイプライン レジスタを追加することはできません。

    function [y] = myfun(x)
    y = x + 5;
    end

  • データ フィードバック ループの内部に存在する。たとえば、次のコードでは、変数 t または pvar が含まれる式をパイプライン化することはできません。

    persistent pvar;
    t = u + pvar;
    pvar = t + v;

coder.hdl.pipeline を使用して、単一の変数またはその他の NOP 式にパイプライン レジスタを挿入することはできません。パイプライン レジスタを関数の入力変数に挿入する方法の詳細については、端子レジスタを参照してください。

すべて折りたたむ

MATLAB 式 a + b * c の出力に単一のパイプライン レジスタを挿入します。

y = coder.hdl.pipeline(a + b * c);

MATLAB 式 a + b * c の出力に 3 つのパイプライン レジスタを挿入します。

    y = coder.hdl.pipeline(a + b * c, 3);

MATLAB 式 a + b * cb * c の計算後に 5 つのパイプライン レジスタを挿入します。

    y = a + coder.hdl.pipeline(b * c, 5);

MATLAB 式の中間段階と出力に、入れ子にした coder.hdl.pipeline プラグマを使用してパイプライン レジスタを挿入します。

MATLAB 式 a + b * cb * c の計算後に 5 つのパイプライン レジスタを挿入し、式全体の出力に 2 つのパイプライン レジスタを挿入します。

    y = coder.hdl.pipeline(a + coder.hdl.pipeline(b * c, 5),2);

入力引数

すべて折りたたむ

パイプライン化する MATLAB 式。生成された HDL コード内のこの式の出力にパイプライン レジスタが挿入されます。

例: a + b

生成された HDL コード内の expr の出力に挿入するパイプライン レジスタの数。正の整数として指定します。

例: 3

バージョン履歴

R2015a で導入