Main Content

永続変数と永続配列変数

永続変数

永続変数を使用するとレジスタのモデル化ができます。MATLAB® アルゴリズムの複数回の呼び出しの間で状態を保持するには、永続変数を使用します。

永続変数を使用する前に、ステートメントでその永続変数のサイズと型を指定して初期化しなければなりません。永続変数の初期化には、次の例のように、定数値と変数のいずれかを使用できます。

% Initialize with a constant
persistent p;
if isempty(p)
    p = fi(0,0,8,0); 
end
% Initialize with a variable
initval = fi(0,0,8,0);

persistent p;
if isempty(p)
    p = initval; 
end

次の例のように、定数値として評価される論理式を使用して、永続変数が初期化済みであるかどうかをテストできます。定数値として評価される論理式を使用すると、テスト用に生成された HDL コードおよび SystemC コードがリセット処理の一環として 1 回だけ実行されるようになります。

次の例のように、1 つの論理式で複数の変数を初期化することもできます。

% Initialize with  variables
initval1 = fi(0,0,8,0);
initval2 = fi(0,0,7,0);

persistent p;
if isempty(p)
    x = initval1; 
    y = initval2; 
end

メモ

永続変数が上記のように初期化されていない場合、生成されたコードにはセンチネル変数が追加されることがあります。これらのセンチネル変数により、ハードウェアの効率性が低下する場合があります。

永続配列変数

永続配列変数を使用すると RAM をモデル化することができます。

既定では、HDL Coder™ ソフトウェアは永続配列変数を RAM にマッピングして設計面積を最適化します。永続配列変数が RAM にマッピングされていない場合、レジスタにマッピングされます。このため、RAM マッピングにより、ターゲット ハードウェアで設計が占める面積を減らすことができます。

永続配列変数の RAM へのマッピングについては、HDL コード生成の場合は永続配列と dsp.Delay の RAM へのマッピング、SystemC コード生成の場合はMap Persistent Arrays to RAMを参照してください。

参考

|

関連するトピック