MATLAB 式のパイプライン
coder.hdl.pipeline
プラグマを使用して、MATLAB® 式用に生成された HDL コード内のパイプライン レジスタの配置と数を指定できます。
パイプライン レジスタを挿入して分散型パイプラン方式を有効にした場合、HDL Coder™ は自動的にパイプライン レジスタを移動してクリティカル パスを分割します。
MATLAB 式にパイプラインを使用する方法
MATLAB コード内の式の出力にパイプライン レジスタを挿入するには、coder.hdl.pipeline
プラグマに式を配置します。レジスタの数を指定します。
パイプライン レジスタは、次のようにして生成された HDL コードに挿入できます。
代入ステートメントの右側全体の出力。
次のコードは、3 つのパイプライン レジスタを MATLAB 式
a + b * c
の出力に挿入します。y = coder.hdl.pipeline(a + b * c, 3);
より長い MATLAB 式内の中間段階。
次のコードは、より長い式
a + b * c
内でb * c
の計算後に 5 つのパイプライン レジスタを挿入します。y = a + coder.hdl.pipeline(b * c, 5);
複数のプラグマのインスタンスを入れ子にする。
次のコードは、
b * c
の計算後に 5 つのパイプライン レジスタを挿入し、式a + b * c
全体の出力に 2 つのパイプライン レジスタを挿入します。y = coder.hdl.pipeline(a + coder.hdl.pipeline(b * c, 5),2);
あるいは、複数のパイプライン レジスタではなく 1 つのパイプライン レジスタを挿入する場合は、プラグマ内の 2 番目の引数を省略できます。
y = coder.hdl.pipeline(a + b * c);
y = a + coder.hdl.pipeline(b * c);
y = coder.hdl.pipeline(a + coder.hdl.pipeline(b * c));
MATLAB 式におけるパイプライン使用の制限
メモ
MATLAB Function ブロック内の MATLAB コードを使用し、MATLAB Datapath
アーキテクチャを選択するか、AggresiveDataflowConversion
最適化を有効にした場合、これらの制限は適用されません。
式の変数のいずれかが次である場合は、HDL Coder では MATLAB 式の出力にパイプライン レジスタを挿入することはできません。
状態レジスタや RAM など、状態要素にマッピングする永続変数。
データ フィードバック ループの内部に存在する。たとえば、次のコードでは、変数
t
またはpvar
が含まれる式をパイプライン化することはできません。persistent pvar; t = u + pvar; pvar = t + v;