Main Content

HDL コード生成および SystemC コード生成のカウンターのモデル化

ハードウェアをモデル化する、HDL コード生成および SystemC コード生成に適した MATLAB® コードを記述するには、この設計パターンを使用します。

この設計パターンは、HDL コード生成および SystemC コード生成用の MATLAB コード作成に関する次のベスト プラクティスを説明します。

  • 永続変数を特定の値に初期化します。この例では、if ステートメントと関数 isempty により永続変数を初期化しています。永続変数を初期化しない場合、HDL コードおよび SystemC コードは生成できません。

  • 関数内の永続変数を変更する前に、その変数を読み取ります。これにより、その永続変数がレジスタとして推定されます。

この Simulink® モデルは、この例でモデル化されている MATLAB カウンターを示しています。

Simulink でカウンターをモデル化する方法については、HDL 互換 Simulink モデルの作成を参照してください。

カウンター用の MATLAB コード

関数 mlhdlc_counter は、4 ビットの同期式加算カウンターの動作モデルです。入力信号 enable_ctr により、カウント レジスタ count_val の値が 1 増加します。カウンターは、ゼロ以外の入力があるたびに、上限 15 に到達するまで 1 ずつ増加し続けます。上限に達すると、カウンターはゼロに戻ります。現在のカウント値は永続変数により表されます。この永続変数の初期値は 0 です。2 つの if ステートメントにより、カウント値が入力に基づいて判定されます。

関数 mldhlc_counter を定義するには、次のコードを使用します。

%#codegen
function count = mlhdlc_counter(enable_ctr)
%four bit synchronous up counter

%persistent variable for the state 
persistent count_val;
if isempty(count_val)
    count_val = 0;
end

%counting up
if enable_ctr
    count_val=count_val+1;

    %limit to four bits
    if count_val>15
        count_val=0;
    end
end

count=count_val;

end

参考

|

関連するトピック