このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
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